@proveanything/smartlinks-utils-ui 1.13.11 → 1.13.14
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/ErrorBoundary-J9iKgF_H.d.ts +40 -0
- package/dist/{chunk-7RWLFKHC.js → chunk-I3T36FSI.js} +28 -12
- package/dist/chunk-I3T36FSI.js.map +1 -0
- package/dist/{chunk-A4YZYKWT.js → chunk-JNCRSL2H.js} +6 -6
- package/dist/chunk-JNCRSL2H.js.map +1 -0
- package/dist/{chunk-KA4MKRHL.js → chunk-W5ZEH3RT.js} +15 -4
- package/dist/chunk-W5ZEH3RT.js.map +1 -0
- package/dist/{chunk-3RRHM4LP.js → chunk-XASZS7EA.js} +131 -4
- package/dist/chunk-XASZS7EA.js.map +1 -0
- package/dist/components/AssetPicker/index.js +1 -1
- package/dist/components/ConditionsEditor/index.js +1 -1
- package/dist/components/RecordsAdmin/index.d.ts +13 -0
- package/dist/components/RecordsAdmin/index.js +22 -13
- package/dist/components/RecordsAdmin/index.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/records-GPSKUNST.js +3 -0
- package/dist/{records-4NN757SG.js.map → records-GPSKUNST.js.map} +1 -1
- package/package.json +1 -1
- package/dist/chunk-3RRHM4LP.js.map +0 -1
- package/dist/chunk-7RWLFKHC.js.map +0 -1
- package/dist/chunk-A4YZYKWT.js.map +0 -1
- package/dist/chunk-KA4MKRHL.js.map +0 -1
- package/dist/records-4NN757SG.js +0 -3
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/ConditionsEditor/conditionMeta.ts","../src/components/ConditionsEditor/ConditionTypePicker.tsx","../src/components/ConditionsEditor/countries.ts","../src/components/ConditionsEditor/CountryPicker.tsx","../src/components/ConditionsEditor/ConditionConfig.tsx","../src/components/ConditionsEditor/ConditionCard.tsx","../src/components/ConditionsEditor/ConditionsEditor.tsx"],"names":["inputStyle","jsxs","jsx","useState","ChevronRight","GitBranch"],"mappings":";;;;;;AAqBO,IAAM,eAAA,GAAuC;AAAA,EAClD,EAAE,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,SAAA,EAAW,WAAA,EAAa,yBAAA,EAA2B,IAAA,EAAM,MAAA,EAAQ,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,4DAAA,EAA6D;AAAA,EACrL,EAAE,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,SAAA,EAAW,WAAA,EAAa,+BAAA,EAAiC,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,wCAAA,EAAyC;AAAA,EACxK,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,OAAA,EAAS,WAAA,EAAa,2BAAA,EAA6B,IAAA,EAAM,MAAA,EAAQ,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,mEAAA,EAAoE;AAAA,EAC1L,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAQ,WAAA,EAAa,8BAAA,EAAgC,IAAA,EAAM,MAAA,EAAQ,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,mFAAA,EAAoF;AAAA,EAC3M,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAQ,WAAA,EAAa,uBAAA,EAAyB,IAAA,EAAM,UAAA,EAAY,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,yCAAA,EAA0C;AAAA,EAC9J,EAAE,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,QAAA,EAAU,WAAA,EAAa,uBAAA,EAAyB,IAAA,EAAM,SAAA,EAAW,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,kDAAA,EAAmD;AAAA,EAC1K,EAAE,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,OAAA,EAAS,WAAA,EAAa,yBAAA,EAA2B,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,mCAAA,EAAoC;AAAA,EACrJ,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,OAAA,EAAS,WAAA,EAAa,4BAAA,EAA8B,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,2EAAA,EAA4E;AAAA,EACrM,EAAE,KAAA,EAAO,UAAA,EAAY,KAAA,EAAO,UAAA,EAAY,WAAA,EAAa,qBAAA,EAAuB,IAAA,EAAM,SAAA,EAAW,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,oDAAA,EAAqD;AAAA,EAC9K,EAAE,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,YAAA,EAAc,WAAA,EAAa,sBAAA,EAAwB,IAAA,EAAM,SAAA,EAAW,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,gCAAA,EAAiC;AAAA,EAC5J,EAAE,KAAA,EAAO,YAAA,EAAc,KAAA,EAAO,aAAA,EAAe,WAAA,EAAa,sBAAA,EAAwB,IAAA,EAAM,aAAA,EAAe,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,mEAAA,EAAoE;AAAA,EACvM,EAAE,KAAA,EAAO,WAAA,EAAa,KAAA,EAAO,WAAA,EAAa,WAAA,EAAa,6BAAA,EAA+B,IAAA,EAAM,YAAA,EAAc,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,oEAAA;AACxI,CAAA;AAEA,IAAM,OAAA,GAA4D;AAAA,EAChE,IAAA,EAAM,IAAA;AAAA,EACN,KAAA,EAAO,KAAA;AAAA,EACP,IAAA,EAAM,IAAA;AAAA,EACN,IAAA,EAAM,IAAA;AAAA,EACN,QAAA,EAAU,QAAA;AAAA,EACV,OAAA,EAAS,OAAA;AAAA,EACT,GAAA,EAAK,GAAA;AAAA,EACL,SAAA,EAAW,MAAA;AAAA,EACX,OAAA,EAAS,OAAA;AAAA,EACT,aAAA,EAAe,UAAA;AAAA,EACf,YAAA,EAAc,SAAA;AAAA,EACd,MAAA,EAAQ;AACV,CAAA;AAEO,SAAS,iBAAiB,IAAA,EAAuE;AACtG,EAAA,IAAI,CAAC,MAAM,OAAO,MAAA;AAClB,EAAA,OAAO,eAAA,CAAgB,IAAA,CAAK,CAAA,CAAA,KAAK,CAAA,CAAE,UAAU,IAAI,CAAA;AACnD;AAEO,SAAS,iBAAiB,IAAA,EAA0E;AACzG,EAAA,MAAM,IAAA,GAAO,iBAAiB,IAAI,CAAA;AAClC,EAAA,OAAQ,IAAA,IAAQ,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAA,IAAM,IAAA;AACzC;AAEO,SAAS,mBAAA,CAAoB,MAAiB,OAAA,EAI1C;AACT,EAAA,IAAI,CAAC,IAAA,CAAK,IAAA,EAAM,OAAO,4BAAA;AACvB,EAAA,MAAM,IAAA,GAAO,gBAAA,CAAiB,IAAA,CAAK,IAAI,CAAA;AACvC,EAAA,IAAI,OAAA,GAAU,IAAA,EAAM,KAAA,IAAS,IAAA,CAAK,IAAA;AAElC,EAAA,QAAQ,KAAK,IAAA;AAAM,IACjB,KAAK,SAAA;AACH,MAAA,IAAI,IAAA,CAAK,UAAU,MAAA,EAAQ;AACzB,QAAA,MAAM,IAAA,GAAO,IAAA,CAAK,QAAA,GAAW,IAAA,GAAO,QAAA;AACpC,QAAA,OAAA,IAAW,IAAI,IAAI,CAAA,CAAA,EAAI,KAAK,QAAA,CAAS,GAAA,CAAI,OAAK,OAAO,CAAA,KAAM,WAAW,CAAA,GAAK,CAAA,CAAE,SAAS,CAAA,CAAE,KAAA,IAAS,EAAG,CAAA,CAAE,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA;AAAA,MAClH;AACA,MAAA;AAAA,IACF,KAAK,SAAA;AACH,MAAA,IAAI,IAAA,CAAK,UAAA,IAAc,IAAA,CAAK,OAAA,EAAS,MAAA,EAAQ;AAC3C,QAAA,MAAM,IAAA,GAAO,IAAA,CAAK,QAAA,GAAW,OAAA,GAAU,WAAA;AACvC,QAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,CAAA,CAAA,KAAK;AAClC,UAAA,MAAM,MAAM,cAAA,CAAe,IAAA,CAAK,CAAA,CAAA,KAAK,CAAA,CAAE,UAAU,CAAC,CAAA;AAClD,UAAA,OAAO,KAAK,KAAA,IAAS,CAAA;AAAA,QACvB,CAAC,CAAA;AACD,QAAA,OAAA,IAAW,IAAI,IAAI,CAAA,CAAA,EAAI,KAAA,CAAM,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA;AAAA,MACzC,CAAA,MAAA,IAAW,IAAA,CAAK,SAAA,EAAW,MAAA,EAAQ;AACjC,QAAA,MAAM,IAAA,GAAO,IAAA,CAAK,QAAA,GAAW,IAAA,GAAO,QAAA;AACpC,QAAA,OAAA,IAAW,IAAI,IAAI,CAAA,CAAA,EAAI,KAAK,SAAA,CAAU,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA;AAAA,MAClD;AACA,MAAA;AAAA,IACF,KAAK,OAAA;AACH,MAAA,IAAI,KAAK,KAAA,EAAO;AACd,QAAA,MAAM,GAAA,GAA8B,EAAE,KAAA,EAAO,GAAA,EAAK,KAAK,QAAA,EAAK,OAAA,EAAS,GAAA,EAAK,IAAA,EAAM,GAAA,EAAI;AACpF,QAAA,OAAA,IAAW,CAAA,EAAA,EAAK,IAAA,CAAK,KAAK,CAAA,CAAA,EAAI,GAAA,CAAI,IAAA,CAAK,cAAA,IAAkB,EAAE,CAAA,IAAK,EAAE,CAAA,CAAA,EAAI,IAAA,CAAK,SAAS,GAAG,CAAA,CAAA;AAAA,MACzF;AACA,MAAA;AAAA,IACF,KAAK,KAAA;AACH,MAAA,IAAI,IAAA,CAAK,MAAM,MAAA,EAAQ;AACrB,QAAA,MAAM,IAAA,GAAO,IAAA,CAAK,QAAA,GAAW,KAAA,GAAQ,eAAA;AACrC,QAAA,OAAA,IAAW,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,EAAI,IAAA,CAAK,KAAK,MAAM,CAAA,SAAA,CAAA;AAAA,MACzC;AACA,MAAA;AAAA,IACF,KAAK,OAAA,EAAS;AACZ,MAAA,MAAM,KAAA,GAAQ,SAAS,MAAA,EAAQ,IAAA,CAAK,OAAK,CAAA,CAAE,GAAA,KAAQ,KAAK,QAAQ,CAAA;AAChE,MAAA,MAAM,SAAA,GAAY,KAAA,EAAO,IAAA,IAAQ,IAAA,CAAK,QAAA;AACtC,MAAA,MAAM,WAAA,GAAc,IAAA,CAAK,MAAA,IAAU,IAAA,CAAK,SAAA;AACxC,MAAA,IAAI,IAAA,CAAK,QAAA,IAAY,WAAA,EAAa,MAAA,EAAQ;AACxC,QAAA,MAAM,IAAA,GAAO,IAAA,CAAK,QAAA,KAAa,KAAA,GAAQ,QAAA,GAAW,IAAA;AAClD,QAAA,MAAM,KAAA,GAAQ,WAAA,CAAY,GAAA,CAAI,CAAA,EAAA,KAAM,KAAA,EAAO,MAAA,CAAO,IAAA,CAAK,CAAA,CAAA,KAAK,CAAA,CAAE,GAAA,KAAQ,EAAE,CAAA,EAAG,QAAQ,EAAE,CAAA;AACrF,QAAA,OAAA,GAAU,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,IAAI,IAAI,KAAA,CAAM,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA;AAAA,MACpD,CAAA,MAAA,IAAW,KAAK,QAAA,EAAU;AACxB,QAAA,OAAA,GAAU,GAAG,SAAS,CAAA,sBAAA,CAAA;AAAA,MACxB;AACA,MAAA;AAAA,IACF;AAAA,IACA,KAAK,QAAA;AACH,MAAA,IAAI,IAAA,CAAK,UAAU,MAAA,EAAQ;AACzB,QAAA,MAAM,IAAA,GAAO,IAAA,CAAK,QAAA,GAAW,IAAA,GAAO,QAAA;AACpC,QAAA,OAAA,IAAW,IAAI,IAAI,CAAA,CAAA,EAAI,KAAK,QAAA,CAAS,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA;AAAA,MACjD;AACA,MAAA;AAAA,IACF,KAAK,MAAA,EAAQ;AACX,MAAA,MAAM,SAAA,GAAoC;AAAA,QACxC,KAAA,EAAO,cAAA;AAAA,QAAgB,OAAA,EAAS,eAAA;AAAA,QAAiB,KAAA,EAAO,eAAA;AAAA,QACxD,KAAA,EAAO,KAAK,QAAA,EAAU,MAAA,GAAS,MAAM,IAAA,CAAK,QAAA,CAAS,MAAM,CAAA,SAAA,CAAA,GAAc,WAAA;AAAA,QACvE,KAAA,EAAO;AAAA,OACT;AACA,MAAA,OAAA,IAAW,IAAI,SAAA,CAAU,IAAA,CAAK,QAAA,IAAY,EAAE,KAAK,EAAE,CAAA,CAAA;AACnD,MAAA;AAAA,IACF;AAAA,IACA,KAAK,SAAA;AACH,MAAA,IAAI,IAAA,CAAK,YAAY,MAAA,EAAQ;AAC3B,QAAA,MAAM,IAAA,GAAO,IAAA,CAAK,QAAA,GAAW,IAAA,GAAO,QAAA;AACpC,QAAA,OAAA,IAAW,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,EAAI,IAAA,CAAK,WAAW,MAAM,CAAA,QAAA,CAAA;AAAA,MAC/C;AACA,MAAA;AAAA,IACF,KAAK,WAAA;AACH,MAAA,IAAI,KAAK,WAAA,EAAa;AACpB,QAAA,MAAM,OAAA,GAAU,SAAS,eAAA,EAAiB,IAAA,CAAK,OAAK,CAAA,CAAE,KAAA,KAAU,KAAK,WAAW,CAAA;AAChF,QAAA,OAAA,IAAW,CAAA,EAAA,EAAK,SAAS,KAAA,IAAS,IAAA,CAAK,WAAW,CAAA,CAAA,EAAI,IAAA,CAAK,MAAA,GAAS,QAAA,GAAW,OAAO,CAAA,CAAA;AAAA,MACxF;AACA,MAAA;AAAA,IACF,KAAK,MAAA,EAAQ;AACX,MAAA,MAAM,YAAoC,EAAE,MAAA,EAAQ,UAAU,KAAA,EAAO,OAAA,EAAS,SAAS,SAAA,EAAU;AACjG,MAAA,OAAA,IAAW,OAAO,SAAA,CAAU,IAAA,CAAK,QAAA,IAAY,EAAE,KAAK,EAAE,CAAA,CAAA;AACtD,MAAA,IAAI,IAAA,CAAK,UAAA,EAAY,OAAA,IAAW,CAAA,CAAA,EAAI,KAAK,UAAU,CAAA,CAAA;AACnD,MAAA,IAAI,IAAA,CAAK,SAAA,EAAW,OAAA,IAAW,CAAA,CAAA,EAAI,KAAK,SAAS,CAAA,CAAA;AACjD,MAAA,IAAI,IAAA,CAAK,SAAA,EAAW,OAAA,IAAW,CAAA,CAAA,EAAI,KAAK,SAAS,CAAA,CAAA;AACjD,MAAA;AAAA,IACF;AAAA,IACA,KAAK,UAAA,EAAY;AACf,MAAA,MAAM,IAAA,GAAO,IAAA,CAAK,QAAA,GAAW,QAAA,GAAW,SAAA;AACxC,MAAA,OAAA,IAAW,IAAI,IAAI,CAAA,OAAA,CAAA;AACnB,MAAA;AAAA,IACF;AAAA,IACA,KAAK,YAAA,EAAc;AACjB,MAAA,MAAM,WAAA,GAAsC;AAAA,QAC1C,QAAA,EAAU,WAAA;AAAA,QAAa,OAAA,EAAS,cAAA;AAAA,QAAgB,WAAA,EAAa,cAAA;AAAA,QAC7D,YAAA,EAAc,kBAAA;AAAA,QAAoB,QAAA,EAAU,WAAA;AAAA,QAAa,SAAA,EAAW;AAAA,OACtE;AACA,MAAA,OAAA,IAAW,IAAI,WAAA,CAAY,IAAA,CAAK,UAAA,IAAc,EAAE,KAAK,EAAE,CAAA,CAAA;AACvD,MAAA;AAAA,IACF;AAAA;AAGF,EAAA,OAAO,OAAA;AACT;AAEO,IAAM,eAAA,GAAkC;AAAA,EAC7C,EAAE,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,SAAA,EAAU;AAAA,EACrC,EAAE,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,QAAA,EAAS;AAAA,EACnC,EAAE,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,SAAA,EAAU;AAAA,EACrC,EAAE,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAM;AAAA,EAC7B,EAAE,KAAA,EAAO,WAAA,EAAa,KAAA,EAAO,KAAA,EAAM;AAAA,EACnC,EAAE,KAAA,EAAO,mBAAA,EAAqB,KAAA,EAAO,KAAA;AACvC,CAAA;AAEO,IAAM,cAAA,GAA8D;AAAA,EACzE,EAAE,KAAA,EAAO,qBAAA,EAAuB,KAAA,EAAO,IAAA,EAAM,aAAa,yBAAA,EAA0B;AAAA,EACpF,EAAE,KAAA,EAAO,8BAAA,EAAgC,KAAA,EAAO,KAAA,EAAO,aAAa,qCAAA,EAAsC;AAAA,EAC1G,EAAE,KAAA,EAAO,gBAAA,EAAkB,KAAA,EAAO,IAAA,EAAM,aAAa,4CAAA,EAA6C;AAAA,EAClG,EAAE,KAAA,EAAO,eAAA,EAAiB,KAAA,EAAO,cAAA,EAAgB,aAAa,qBAAA,EAAsB;AAAA,EACpF,EAAE,KAAA,EAAO,cAAA,EAAgB,KAAA,EAAO,aAAA,EAAe,aAAa,4BAAA;AAC9D,CAAA;AAEO,IAAM,iBAAA,GAAoC;AAAA,EAC/C,EAAE,KAAA,EAAO,cAAA,EAAgB,KAAA,EAAO,OAAA,EAAQ;AAAA,EACxC,EAAE,KAAA,EAAO,eAAA,EAAiB,KAAA,EAAO,SAAA,EAAU;AAAA,EAC3C,EAAE,KAAA,EAAO,eAAA,EAAiB,KAAA,EAAO,OAAA,EAAQ;AAAA,EACzC,EAAE,KAAA,EAAO,iBAAA,EAAmB,KAAA,EAAO,OAAA,EAAQ;AAAA,EAC3C,EAAE,KAAA,EAAO,UAAA,EAAY,KAAA,EAAO,OAAA;AAC9B,CAAA;AAEO,IAAM,mBAAA,GAAsC;AAAA,EACjD,EAAE,KAAA,EAAO,uBAAA,EAAyB,KAAA,EAAO,UAAA,EAAW;AAAA,EACpD,EAAE,KAAA,EAAO,gBAAA,EAAkB,KAAA,EAAO,SAAA,EAAU;AAAA,EAC5C,EAAE,KAAA,EAAO,qBAAA,EAAuB,KAAA,EAAO,aAAA,EAAc;AAAA,EACrD,EAAE,KAAA,EAAO,mBAAA,EAAqB,KAAA,EAAO,cAAA,EAAe;AAAA,EACpD,EAAE,KAAA,EAAO,iBAAA,EAAmB,KAAA,EAAO,WAAA,EAAY;AAAA,EAC/C,EAAE,KAAA,EAAO,uBAAA,EAAyB,KAAA,EAAO,YAAA;AAC3C,CAAA;AAEO,IAAM,eAAA,GAAkC;AAAA,EAC7C,EAAE,KAAA,EAAO,UAAA,EAAY,KAAA,EAAO,OAAA,EAAQ;AAAA,EACpC,EAAE,KAAA,EAAO,WAAA,EAAa,KAAA,EAAO,KAAA,EAAM;AAAA,EACnC,EAAE,KAAA,EAAO,cAAA,EAAgB,KAAA,EAAO,SAAA,EAAU;AAAA,EAC1C,EAAE,KAAA,EAAO,WAAA,EAAa,KAAA,EAAO,MAAA;AAC/B,CAAA;AAEO,IAAM,WAAA,GAA8B;AAAA,EACzC,EAAE,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,SAAA,EAAU;AAAA,EACrC,EAAE,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,SAAA,EAAU;AAAA,EACrC,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,MAAA;AAC1B,CAAA;ACvMO,IAAM,mBAAA,GAA0D,CAAC,EAAE,QAAA,EAAS,KAAM;AACvF,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,KAAA,EACb,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,2DAAA,EAA4D,QAAA,EAAA,0BAAA,EAAwB,CAAA;AAAA,wBAChG,KAAA,EAAA,EAAI,SAAA,EAAU,uCAAA,EACZ,QAAA,EAAA,eAAA,CAAgB,IAAI,CAAA,EAAA,KAAM;AACzB,MAAA,MAAM,IAAA,GAAO,gBAAA,CAAiB,EAAA,CAAG,KAAK,CAAA;AACtC,MAAA,uBACE,IAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UAEC,OAAA,EAAS,MAAM,QAAA,CAAS,EAAA,CAAG,KAAK,CAAA;AAAA,UAChC,SAAA,EAAW,EAAA;AAAA,YACT,iGAAA;AAAA,YACA,gGAAA;AAAA,YACA;AAAA,WACF;AAAA,UAEA,QAAA,EAAA;AAAA,4BAAA,GAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAU,uDAAA;AAAA,gBACV,KAAA,EAAO,EAAE,eAAA,EAAiB,CAAA,EAAG,GAAG,KAAK,CAAA,EAAA,CAAA,EAAM,KAAA,EAAO,EAAA,CAAG,KAAA,EAAM;AAAA,gBAE3D,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA,aAC5B;AAAA,4BACA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,0DAAA,EAA4D,aAAG,KAAA,EAAM;AAAA;AAAA,SAAA;AAAA,QAdhF,EAAA,CAAG;AAAA,OAeV;AAAA,IAEJ,CAAC,CAAA,EACH;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;;;ACnCO,IAAM,SAAA,GAA6B;AAAA,EACxC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,aAAA,EAAc;AAAA,EAClC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,EAC9B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,EAC9B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,EAC9B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,QAAA,EAAS;AAAA,EAC7B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,qBAAA,EAAsB;AAAA,EAC1C,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,WAAA,EAAY;AAAA,EAChC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,EAC9B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,WAAA,EAAY;AAAA,EAChC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,EAC9B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,YAAA,EAAa;AAAA,EACjC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,EAC9B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,EAC9B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,YAAA,EAAa;AAAA,EACjC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,UAAA,EAAW;AAAA,EAC/B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,EAC9B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,EAC9B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,QAAA,EAAS;AAAA,EAC7B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,OAAA,EAAQ;AAAA,EAC5B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,QAAA,EAAS;AAAA,EAC7B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,EAC9B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,wBAAA,EAAyB;AAAA,EAC7C,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,UAAA,EAAW;AAAA,EAC/B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,QAAA,EAAS;AAAA,EAC7B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,QAAA,EAAS;AAAA,EAC7B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,UAAA,EAAW;AAAA,EAC/B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,cAAA,EAAe;AAAA,EACnC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,EAC9B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,YAAA,EAAa;AAAA,EACjC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,UAAA,EAAW;AAAA,EAC/B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,UAAA,EAAW;AAAA,EAC/B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,QAAA,EAAS;AAAA,EAC7B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,0BAAA,EAA2B;AAAA,EAC/C,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,MAAA,EAAO;AAAA,EAC3B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,OAAA,EAAQ;AAAA,EAC5B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,OAAA,EAAQ;AAAA,EAC5B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,UAAA,EAAW;AAAA,EAC/B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,EAC9B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,OAAA,EAAQ;AAAA,EAC5B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,aAAA,EAAc;AAAA,EAClC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,YAAA,EAAa;AAAA,EACjC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,kBAAA,EAAgB;AAAA,EACpC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,EAC9B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,MAAA,EAAO;AAAA,EAC3B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,QAAA,EAAS;AAAA,EAC7B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,EAC9B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,EAC9B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,UAAA,EAAW;AAAA,EAC/B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,UAAA,EAAW;AAAA,EAC/B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,oBAAA,EAAqB;AAAA,EACzC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,EAC9B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,OAAA,EAAQ;AAAA,EAC5B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,aAAA,EAAc;AAAA,EAClC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,mBAAA,EAAoB;AAAA,EACxC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,EAC9B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,EAC9B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,UAAA,EAAW;AAAA,EAC/B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,UAAA,EAAW;AAAA,EAC/B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,MAAA,EAAO;AAAA,EAC3B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,EAC9B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,QAAA,EAAS;AAAA,EAC7B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,OAAA,EAAQ;AAAA,EAC5B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,QAAA,EAAS;AAAA,EAC7B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,EAC9B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,EAC9B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,OAAA,EAAQ;AAAA,EAC5B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,QAAA,EAAS;AAAA,EAC7B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,EAC9B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,WAAA,EAAY;AAAA,EAChC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,QAAA,EAAS;AAAA,EAC7B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,eAAA,EAAgB;AAAA,EACpC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,QAAA,EAAS;AAAA,EAC7B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,OAAA,EAAQ;AAAA,EAC5B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,UAAA,EAAW;AAAA,EAC/B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,EAC9B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,EAC9B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,OAAA,EAAQ;AAAA,EAC5B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,WAAA,EAAY;AAAA,EAChC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,MAAA,EAAO;AAAA,EAC3B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,MAAA,EAAO;AAAA,EAC3B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,EAC9B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,QAAA,EAAS;AAAA,EAC7B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,OAAA,EAAQ;AAAA,EAC5B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,EAC9B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,OAAA,EAAQ;AAAA,EAC5B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,QAAA,EAAS;AAAA,EAC7B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,YAAA,EAAa;AAAA,EACjC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,OAAA,EAAQ;AAAA,EAC5B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,UAAA,EAAW;AAAA,EAC/B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,aAAA,EAAc;AAAA,EAClC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,aAAA,EAAc;AAAA,EAClC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,QAAA,EAAS;AAAA,EAC7B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,YAAA,EAAa;AAAA,EACjC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,MAAA,EAAO;AAAA,EAC3B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,QAAA,EAAS;AAAA,EAC7B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,EAC9B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,EAC9B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,EAC9B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,OAAA,EAAQ;AAAA,EAC5B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,eAAA,EAAgB;AAAA,EACpC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,WAAA,EAAY;AAAA,EAChC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,YAAA,EAAa;AAAA,EACjC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,YAAA,EAAa;AAAA,EACjC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,QAAA,EAAS;AAAA,EAC7B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,UAAA,EAAW;AAAA,EAC/B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,UAAA,EAAW;AAAA,EAC/B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,MAAA,EAAO;AAAA,EAC3B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,OAAA,EAAQ;AAAA,EAC5B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,kBAAA,EAAmB;AAAA,EACvC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,YAAA,EAAa;AAAA,EACjC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,WAAA,EAAY;AAAA,EAChC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,QAAA,EAAS;AAAA,EAC7B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,YAAA,EAAa;AAAA,EACjC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,EAC9B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,QAAA,EAAS;AAAA,EAC7B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,UAAA,EAAW;AAAA,EAC/B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,YAAA,EAAa;AAAA,EACjC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,EAC9B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,YAAA,EAAa;AAAA,EACjC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,EAC9B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,EAC9B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,OAAA,EAAQ;AAAA,EAC5B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,OAAA,EAAQ;AAAA,EAC5B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,aAAA,EAAc;AAAA,EAClC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,aAAA,EAAc;AAAA,EAClC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,WAAA,EAAY;AAAA,EAChC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,OAAA,EAAQ;AAAA,EAC5B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,EAC9B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,iBAAA,EAAkB;AAAA,EACtC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,QAAA,EAAS;AAAA,EAC7B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,MAAA,EAAO;AAAA,EAC3B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,UAAA,EAAW;AAAA,EAC/B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,OAAA,EAAQ;AAAA,EAC5B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,WAAA,EAAY;AAAA,EAChC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,QAAA,EAAS;AAAA,EAC7B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,kBAAA,EAAmB;AAAA,EACvC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,UAAA,EAAW;AAAA,EAC/B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,MAAA,EAAO;AAAA,EAC3B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,aAAA,EAAc;AAAA,EAClC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,QAAA,EAAS;AAAA,EAC7B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,UAAA,EAAW;AAAA,EAC/B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,OAAA,EAAQ;AAAA,EAC5B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,EAC9B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,QAAA,EAAS;AAAA,EAC7B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,QAAA,EAAS;AAAA,EAC7B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,uBAAA,EAAwB;AAAA,EAC5C,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,aAAA,EAAc;AAAA,EAClC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,kCAAA,EAAmC;AAAA,EACvD,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,OAAA,EAAQ;AAAA,EAC5B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,YAAA,EAAa;AAAA,EACjC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,gCAAA,EAAwB;AAAA,EAC5C,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,cAAA,EAAe;AAAA,EACnC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,EAC9B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,QAAA,EAAS;AAAA,EAC7B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,YAAA,EAAa;AAAA,EACjC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,cAAA,EAAe;AAAA,EACnC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,WAAA,EAAY;AAAA,EAChC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,UAAA,EAAW;AAAA,EAC/B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,UAAA,EAAW;AAAA,EAC/B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,iBAAA,EAAkB;AAAA,EACtC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,EAC9B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,cAAA,EAAe;AAAA,EACnC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,aAAA,EAAc;AAAA,EAClC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,OAAA,EAAQ;AAAA,EAC5B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,WAAA,EAAY;AAAA,EAChC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,OAAA,EAAQ;AAAA,EAC5B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,UAAA,EAAW;AAAA,EAC/B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,QAAA,EAAS;AAAA,EAC7B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,aAAA,EAAc;AAAA,EAClC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,OAAA,EAAQ;AAAA,EAC5B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,QAAA,EAAS;AAAA,EAC7B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,YAAA,EAAa;AAAA,EACjC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,UAAA,EAAW;AAAA,EAC/B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,UAAA,EAAW;AAAA,EAC/B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,aAAA,EAAc;AAAA,EAClC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,MAAA,EAAO;AAAA,EAC3B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,OAAA,EAAQ;AAAA,EAC5B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,qBAAA,EAAsB;AAAA,EAC1C,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,EAC9B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,QAAA,EAAS;AAAA,EAC7B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,cAAA,EAAe;AAAA,EACnC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,QAAA,EAAS;AAAA,EAC7B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,QAAA,EAAS;AAAA,EAC7B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,EAC9B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,sBAAA,EAAuB;AAAA,EAC3C,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,gBAAA,EAAiB;AAAA,EACrC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,eAAA,EAAgB;AAAA,EACpC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,EAC9B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,YAAA,EAAa;AAAA,EACjC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,EAC9B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,cAAA,EAAe;AAAA,EACnC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,WAAA,EAAY;AAAA,EAChC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,EAC9B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,OAAA,EAAQ;AAAA,EAC5B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,QAAA,EAAS;AAAA,EAC7B,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,UAAA;AACtB,CAAA;AAEO,SAAS,eAAe,IAAA,EAAsB;AACnD,EAAA,OAAO,SAAA,CAAU,KAAK,CAAA,CAAA,KAAK,CAAA,CAAE,SAAS,IAAA,CAAK,WAAA,EAAa,CAAA,EAAG,IAAA,IAAQ,IAAA;AACrE;ACpMO,IAAM,gBAA8C,CAAC;AAAA,EAC1D,QAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA,GAAc;AAChB,CAAA,KAAM;AACJ,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,SAAS,KAAK,CAAA;AACtC,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAI,SAAS,EAAE,CAAA;AACvC,EAAA,MAAM,YAAA,GAAe,OAAuB,IAAI,CAAA;AAChD,EAAA,MAAM,QAAA,GAAW,OAAyB,IAAI,CAAA;AAE9C,EAAA,MAAM,QAAA,GAAW,QAAQ,MAAM;AAC7B,IAAA,IAAI,CAAC,QAAQ,OAAO,SAAA;AACpB,IAAA,MAAM,CAAA,GAAI,OAAO,WAAA,EAAY;AAC7B,IAAA,OAAO,SAAA,CAAU,MAAA;AAAA,MACf,CAAA,CAAA,KAAK,CAAA,CAAE,IAAA,CAAK,WAAA,EAAY,CAAE,QAAA,CAAS,CAAC,CAAA,IAAK,CAAA,CAAE,IAAA,CAAK,WAAA,EAAY,CAAE,SAAS,CAAC;AAAA,KAC1E;AAAA,EACF,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAGX,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,IAAA,EAAM;AACX,IAAA,MAAM,OAAA,GAAU,CAAC,CAAA,KAAkB;AACjC,MAAA,IAAI,YAAA,CAAa,WAAW,CAAC,YAAA,CAAa,QAAQ,QAAA,CAAS,CAAA,CAAE,MAAc,CAAA,EAAG;AAC5E,QAAA,OAAA,CAAQ,KAAK,CAAA;AACb,QAAA,SAAA,CAAU,EAAE,CAAA;AAAA,MACd;AAAA,IACF,CAAA;AACA,IAAA,QAAA,CAAS,gBAAA,CAAiB,aAAa,OAAO,CAAA;AAC9C,IAAA,OAAO,MAAM,QAAA,CAAS,mBAAA,CAAoB,WAAA,EAAa,OAAO,CAAA;AAAA,EAChE,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAA,MAAM,MAAA,GAAS,CAAC,IAAA,KAAiB;AAC/B,IAAA,IAAI,QAAA,EAAU;AACd,IAAA,QAAA;AAAA,MACE,QAAA,CAAS,QAAA,CAAS,IAAI,CAAA,GAClB,QAAA,CAAS,MAAA,CAAO,CAAA,CAAA,KAAK,CAAA,KAAM,IAAI,CAAA,GAC/B,CAAC,GAAG,UAAU,IAAI;AAAA,KACxB;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,MAAA,GAAS,CAAC,IAAA,KAAiB;AAC/B,IAAA,IAAI,QAAA,EAAU;AACd,IAAA,QAAA,CAAS,QAAA,CAAS,MAAA,CAAO,CAAA,CAAA,KAAK,CAAA,KAAM,IAAI,CAAC,CAAA;AAAA,EAC3C,CAAA;AAEA,EAAA,MAAM,YAAA,GAAe;AAAA,IACnB,SAAA,EAAW,EAAA;AAAA,IACX,KAAA,EAAO,MAAA;AAAA,IACP,OAAA,EAAS,MAAA;AAAA,IACT,QAAA,EAAU,MAAA;AAAA,IACV,UAAA,EAAY,QAAA;AAAA,IACZ,GAAA,EAAK,CAAA;AAAA,IACL,OAAA,EAAS,UAAA;AAAA,IACT,YAAA,EAAc,CAAA;AAAA,IACd,MAAA,EAAQ,CAAA,UAAA,EAAa,IAAA,GAAO,SAAA,GAAY,SAAS,CAAA,CAAA;AAAA,IACjD,eAAA,EAAiB,aAAA;AAAA,IACjB,MAAA,EAAQ,WAAW,aAAA,GAAgB,SAAA;AAAA,IACnC,OAAA,EAAS,WAAW,GAAA,GAAM,CAAA;AAAA,IAC1B,OAAA,EAAS,OAAO,mBAAA,GAAsB,MAAA;AAAA,IACtC,UAAA,EAAY;AAAA,GACd;AAEA,EAAA,MAAM,SAAA,GAAY;AAAA,IAChB,OAAA,EAAS,aAAA;AAAA,IACT,UAAA,EAAY,QAAA;AAAA,IACZ,GAAA,EAAK,CAAA;AAAA,IACL,OAAA,EAAS,SAAA;AAAA,IACT,YAAA,EAAc,IAAA;AAAA,IACd,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,GAAA;AAAA,IACZ,eAAA,EAAiB,SAAA;AAAA,IACjB,KAAA,EAAO,SAAA;AAAA,IACP,MAAA,EAAQ;AAAA,GACV;AAEA,EAAA,MAAM,aAAA,GAAgB;AAAA,IACpB,QAAA,EAAU,UAAA;AAAA,IACV,MAAA,EAAQ,EAAA;AAAA,IACR,SAAA,EAAW,CAAA;AAAA,IACX,KAAA,EAAO,MAAA;AAAA,IACP,SAAA,EAAW,GAAA;AAAA,IACX,SAAA,EAAW,MAAA;AAAA,IACX,YAAA,EAAc,CAAA;AAAA,IACd,MAAA,EAAQ,mBAAA;AAAA,IACR,eAAA,EAAiB,SAAA;AAAA,IACjB,SAAA,EAAW;AAAA,GACb;AAEA,EAAA,MAAMA,WAAAA,GAAa;AAAA,IACjB,IAAA,EAAM,CAAA;AAAA,IACN,QAAA,EAAU,GAAA;AAAA,IACV,QAAA,EAAU,EAAA;AAAA,IACV,eAAA,EAAiB,aAAA;AAAA,IACjB,OAAA,EAAS,MAAA;AAAA,IACT,KAAA,EAAO,SAAA;AAAA,IACP,MAAA,EAAQ;AAAA,GACV;AAEA,EAAA,uBACEC,KAAC,KAAA,EAAA,EAAI,GAAA,EAAK,cAAc,KAAA,EAAO,EAAE,QAAA,EAAU,UAAA,EAAW,EAEpD,QAAA,EAAA;AAAA,oBAAAA,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,YAAA;AAAA,QACP,SAAS,MAAM;AACb,UAAA,IAAI,QAAA,EAAU;AACd,UAAA,OAAA,CAAQ,IAAI,CAAA;AACZ,UAAA,UAAA,CAAW,MAAM,QAAA,CAAS,OAAA,EAAS,KAAA,IAAS,CAAC,CAAA;AAAA,QAC/C,CAAA;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,QAAA,CAAS,IAAI,CAAA,IAAA,qBACZA,IAAAA,CAAC,MAAA,EAAA,EAAgB,OAAO,SAAA,EACrB,QAAA,EAAA;AAAA,YAAA,cAAA,CAAe,IAAI,CAAA;AAAA,YAAE,IAAA;AAAA,YAAG,IAAA;AAAA,YAAK,GAAA;AAAA,YAC7B,CAAC,4BACAC,GAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,QAAA;AAAA,gBACL,OAAA,EAAS,CAAC,CAAA,KAAM;AAAE,kBAAA,CAAA,CAAE,eAAA,EAAgB;AAAG,kBAAA,MAAA,CAAO,IAAI,CAAA;AAAA,gBAAG,CAAA;AAAA,gBACrD,KAAA,EAAO,EAAE,UAAA,EAAY,MAAA,EAAQ,QAAQ,MAAA,EAAQ,MAAA,EAAQ,SAAA,EAAW,OAAA,EAAS,GAAG,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,EAAA,EAAI,YAAY,CAAA,EAAE;AAAA,gBAC3H,QAAA,EAAA;AAAA;AAAA;AAED,WAAA,EAAA,EATO,IAWX,CACD,CAAA;AAAA,UACA,QAAA,CAAS,MAAA,KAAW,CAAA,IAAK,CAAC,wBACzBA,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,QAAA,EAAU,EAAA,EAAI,KAAA,EAAO,SAAA,IAAc,QAAA,EAAA,WAAA,EAAY,CAAA;AAAA,UAE/D,wBACCA,GAAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACC,GAAA,EAAK,QAAA;AAAA,cACL,KAAA,EAAO,MAAA;AAAA,cACP,QAAA,EAAU,CAAA,CAAA,KAAK,SAAA,CAAU,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,cACvC,KAAA,EAAOF,WAAAA;AAAA,cACP,WAAA;AAAA,cACA,OAAA,EAAS,CAAA,CAAA,KAAK,CAAA,CAAE,eAAA;AAAgB;AAAA,WAClC;AAAA,0BAEFE,IAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,UAAA,EAAY,MAAA,EAAQ,YAAY,CAAA,EAAG,QAAA,EAAU,IAAI,KAAA,EAAO,SAAA,EAAW,YAAY,iBAAA,EAAmB,SAAA,EAAW,OAAO,gBAAA,GAAmB,MAAA,IAAU,QAAA,EAAA,QAAA,EAAC;AAAA;AAAA;AAAA,KACnK;AAAA,IAGC,IAAA,oBACCA,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,eACT,QAAA,EAAA,QAAA,CAAS,MAAA,KAAW,CAAA,mBACnBA,GAAAA,CAAC,KAAA,EAAA,EAAI,OAAO,EAAE,OAAA,EAAS,UAAA,EAAY,QAAA,EAAU,EAAA,EAAI,KAAA,EAAO,SAAA,EAAU,EAAG,QAAA,EAAA,oBAAA,EAAkB,CAAA,GAEvF,QAAA,CAAS,GAAA,CAAI,CAAA,OAAA,KAAW;AACtB,MAAA,MAAM,UAAA,GAAa,QAAA,CAAS,QAAA,CAAS,OAAA,CAAQ,IAAI,CAAA;AACjD,MAAA,uBACED,IAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UAEC,IAAA,EAAK,QAAA;AAAA,UACL,OAAA,EAAS,MAAM,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA;AAAA,UAClC,KAAA,EAAO;AAAA,YACL,KAAA,EAAO,MAAA;AAAA,YACP,OAAA,EAAS,MAAA;AAAA,YACT,UAAA,EAAY,QAAA;AAAA,YACZ,GAAA,EAAK,CAAA;AAAA,YACL,OAAA,EAAS,UAAA;AAAA,YACT,QAAA,EAAU,EAAA;AAAA,YACV,SAAA,EAAW,MAAA;AAAA,YACX,MAAA,EAAQ,MAAA;AAAA,YACR,MAAA,EAAQ,SAAA;AAAA,YACR,UAAA,EAAY,uBAAA;AAAA,YACZ,eAAA,EAAiB,aAAa,SAAA,GAAY,aAAA;AAAA,YAC1C,KAAA,EAAO,aAAa,SAAA,GAAY;AAAA,WAClC;AAAA,UACA,cAAc,CAAA,CAAA,KAAK;AAAE,YAAA,IAAI,CAAC,UAAA,EAAa,CAAA,CAAE,aAAA,CAAc,MAAM,eAAA,GAAkB,SAAA;AAAA,UAAY,CAAA;AAAA,UAC3F,cAAc,CAAA,CAAA,KAAK;AAAE,YAAA,CAAA,CAAE,aAAA,CAAc,KAAA,CAAM,eAAA,GAAkB,UAAA,GAAa,SAAA,GAAY,aAAA;AAAA,UAAe,CAAA;AAAA,UAErG,QAAA,EAAA;AAAA,4BAAAC,GAAAA,CAAC,UAAK,KAAA,EAAO;AAAA,cACX,KAAA,EAAO,EAAA;AAAA,cACP,MAAA,EAAQ,EAAA;AAAA,cACR,YAAA,EAAc,CAAA;AAAA,cACd,MAAA,EAAQ,CAAA,UAAA,EAAa,UAAA,GAAa,SAAA,GAAY,SAAS,CAAA,CAAA;AAAA,cACvD,eAAA,EAAiB,aAAa,SAAA,GAAY,aAAA;AAAA,cAC1C,OAAA,EAAS,MAAA;AAAA,cACT,UAAA,EAAY,QAAA;AAAA,cACZ,cAAA,EAAgB,QAAA;AAAA,cAChB,UAAA,EAAY,CAAA;AAAA,cACZ,KAAA,EAAO,SAAA;AAAA,cACP,QAAA,EAAU;AAAA,aACZ,EACG,wBAAc,QAAA,EACjB,CAAA;AAAA,4BACAA,IAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,IAAA,EAAM,CAAA,EAAE,EAAI,QAAA,EAAA,OAAA,CAAQ,IAAA,EAAK,CAAA;AAAA,4BACxCA,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,QAAA,EAAU,EAAA,EAAI,KAAA,EAAO,SAAA,EAAW,UAAA,EAAY,WAAA,EAAY,EAAI,kBAAQ,IAAA,EAAK;AAAA;AAAA,SAAA;AAAA,QApCnF,OAAA,CAAQ;AAAA,OAqCf;AAAA,IAEJ,CAAC,CAAA,EAEL;AAAA,GAAA,EAEJ,CAAA;AAEJ,CAAA;AC3LA,IAAM,cAAA,GAMD,CAAC,EAAE,KAAA,GAAQ,MAAM,QAAA,EAAU,SAAA,GAAY,aAAa,UAAA,GAAa,eAAA,EAAiB,UAAS,qBAC9FA,IAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA,EAAQ,GAAA,EAAK,CAAA,EAAG,eAAA,EAAiB,SAAA,EAAW,cAAc,CAAA,EAAG,OAAA,EAAS,GAAG,KAAA,EAAO,aAAA,IACpG,QAAA,EAAA,CAAC,EAAE,GAAG,IAAA,EAAM,KAAA,EAAO,WAAU,EAAG,EAAE,GAAG,KAAA,EAAO,KAAA,EAAO,YAAY,CAAA,CAAE,GAAA,CAAI,CAAA,GAAA,qBACpEA,GAAAA;AAAA,EAAC,QAAA;AAAA,EAAA;AAAA,IAEC,IAAA,EAAK,QAAA;AAAA,IACL,OAAA,EAAS,MAAM,QAAA,CAAS,GAAA,CAAI,CAAC,CAAA;AAAA,IAC7B,QAAA;AAAA,IACA,KAAA,EAAO;AAAA,MACL,OAAA,EAAS,UAAA;AAAA,MACT,QAAA,EAAU,EAAA;AAAA,MACV,UAAA,EAAY,GAAA;AAAA,MACZ,YAAA,EAAc,CAAA;AAAA,MACd,MAAA,EAAQ,MAAA;AAAA,MACR,MAAA,EAAQ,WAAW,SAAA,GAAY,SAAA;AAAA,MAC/B,UAAA,EAAY,WAAA;AAAA,MACZ,GAAI,KAAA,KAAU,GAAA,CAAI,CAAA,GACd,EAAE,iBAAiB,SAAA,EAAW,KAAA,EAAO,SAAA,EAAW,SAAA,EAAW,6BAA4B,GACvF,EAAE,eAAA,EAAiB,aAAA,EAAe,OAAO,SAAA;AAAU,KAEzD;AAAA,IAEC,QAAA,EAAA,GAAA,CAAI;AAAA,GAAA;AAAA,EAlBA,MAAA,CAAO,IAAI,CAAC;AAmBnB,CACD,CAAA,EACH,CAAA;AAIF,IAAM,YAAA,GAKD,CAAC,EAAE,OAAA,EAAS,QAAA,EAAU,KAAA,EAAO,QAAA,EAAS,qBACzCD,IAAAA,CAAC,OAAA,EAAA,EAAM,KAAA,EAAO,EAAE,OAAA,EAAS,aAAA,EAAe,UAAA,EAAY,QAAA,EAAU,GAAA,EAAK,EAAA,EAAI,QAAA,EAAU,EAAA,EAAI,UAAA,EAAY,GAAA,EAAK,KAAA,EAAO,SAAA,EAAW,MAAA,EAAQ,SAAA,EAAW,UAAA,EAAY,QAAO,EAC5J,QAAA,EAAA;AAAA,kBAAAC,GAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,QAAA;AAAA,MACL,cAAA,EAAc,OAAA;AAAA,MACd,SAAS,MAAM,CAAC,QAAA,IAAY,QAAA,CAAS,CAAC,OAAO,CAAA;AAAA,MAC7C,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,cAAA;AAAA,QACT,KAAA,EAAO,EAAA;AAAA,QACP,MAAA,EAAQ,EAAA;AAAA,QACR,YAAA,EAAc,EAAA;AAAA,QACd,MAAA,EAAQ,MAAA;AAAA,QACR,MAAA,EAAQ,WAAW,SAAA,GAAY,SAAA;AAAA,QAC/B,QAAA,EAAU,UAAA;AAAA,QACV,UAAA,EAAY,CAAA;AAAA,QACZ,UAAA,EAAY,uBAAA;AAAA,QACZ,eAAA,EAAiB,UAAU,SAAA,GAAY;AAAA,OACzC;AAAA,MAEA,QAAA,kBAAAA,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO;AAAA,QACX,QAAA,EAAU,UAAA;AAAA,QACV,GAAA,EAAK,CAAA;AAAA,QACL,IAAA,EAAM,UAAU,EAAA,GAAK,CAAA;AAAA,QACrB,KAAA,EAAO,EAAA;AAAA,QACP,MAAA,EAAQ,EAAA;AAAA,QACR,YAAA,EAAc,KAAA;AAAA,QACd,eAAA,EAAiB,SAAA;AAAA,QACjB,SAAA,EAAW,2BAAA;AAAA,QACX,UAAA,EAAY;AAAA,OACd,EAAG;AAAA;AAAA,GACL;AAAA,kBACAA,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,KAAA,EAAM;AAAA,CAAA,EACf,CAAA;AAIF,IAAM,UAAA,GAKD,CAAC,EAAE,OAAA,EAAS,UAAU,QAAA,EAAU,QAAA,EAAS,qBAC5CA,GAAAA,CAAC,KAAA,EAAA,EAAI,OAAO,EAAE,OAAA,EAAS,QAAQ,QAAA,EAAU,MAAA,EAAQ,KAAK,CAAA,EAAE,EACrD,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,GAAA,KAAO;AAClB,EAAA,MAAM,UAAA,GAAa,QAAA,CAAS,QAAA,CAAS,GAAA,CAAI,KAAK,CAAA;AAC9C,EAAA,uBACEA,GAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MAEC,IAAA,EAAK,QAAA;AAAA,MACL,SAAS,MAAM;AACb,QAAA,IAAI,QAAA,EAAU;AACd,QAAA,QAAA,CAAS,UAAA,GAAa,QAAA,CAAS,MAAA,CAAO,CAAA,CAAA,KAAK,CAAA,KAAM,GAAA,CAAI,KAAK,CAAA,GAAI,CAAC,GAAG,QAAA,EAAU,GAAA,CAAI,KAAK,CAAC,CAAA;AAAA,MACxF,CAAA;AAAA,MACA,QAAA;AAAA,MACA,OAAO,GAAA,CAAI,WAAA;AAAA,MACX,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,UAAA;AAAA,QACT,QAAA,EAAU,EAAA;AAAA,QACV,YAAA,EAAc,IAAA;AAAA,QACd,MAAA,EAAQ,WAAA;AAAA,QACR,MAAA,EAAQ,WAAW,SAAA,GAAY,SAAA;AAAA,QAC/B,UAAA,EAAY,WAAA;AAAA,QACZ,GAAI,UAAA,GACA,EAAE,eAAA,EAAiB,SAAA,EAAW,aAAa,SAAA,EAAW,KAAA,EAAO,SAAA,EAAU,GACvE,EAAE,eAAA,EAAiB,aAAA,EAAe,WAAA,EAAa,SAAA,EAAW,OAAO,SAAA;AAAU,OAEjF;AAAA,MAEC,QAAA,EAAA,GAAA,CAAI;AAAA,KAAA;AAAA,IArBA,GAAA,CAAI;AAAA,GAsBX;AAEJ,CAAC,CAAA,EACH,CAAA;AAGF,IAAM,UAAA,GAAa;AAAA,EACjB,KAAA,EAAO,MAAA;AAAA,EACP,OAAA,EAAS,UAAA;AAAA,EACT,QAAA,EAAU,EAAA;AAAA,EACV,YAAA,EAAc,CAAA;AAAA,EACd,MAAA,EAAQ,mBAAA;AAAA,EACR,eAAA,EAAiB,aAAA;AAAA,EACjB,OAAA,EAAS;AACX,CAAA;AAEA,IAAM,UAAA,GAAa;AAAA,EACjB,QAAA,EAAU,EAAA;AAAA,EACV,KAAA,EAAO,SAAA;AAAA,EACP,YAAA,EAAc,CAAA;AAAA,EACd,OAAA,EAAS;AACX,CAAA;AAGA,IAAM,SAAA,GAKD,CAAC,EAAE,OAAA,EAAS,QAAA,EAAU,QAAA,EAAU,QAAA,EAAS,qBAC5CA,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA,EAAQ,GAAA,EAAK,CAAA,EAAG,eAAA,EAAiB,SAAA,EAAW,YAAA,EAAc,CAAA,EAAG,OAAA,EAAS,CAAA,EAAG,KAAA,EAAO,aAAA,EAAc,EAClH,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,yBACXA,GAAAA;AAAA,EAAC,QAAA;AAAA,EAAA;AAAA,IAEC,IAAA,EAAK,QAAA;AAAA,IACL,OAAA,EAAS,MAAM,QAAA,CAAS,GAAA,CAAI,KAAK,CAAA;AAAA,IACjC,QAAA;AAAA,IACA,KAAA,EAAO;AAAA,MACL,OAAA,EAAS,UAAA;AAAA,MACT,QAAA,EAAU,EAAA;AAAA,MACV,UAAA,EAAY,GAAA;AAAA,MACZ,YAAA,EAAc,CAAA;AAAA,MACd,MAAA,EAAQ,MAAA;AAAA,MACR,MAAA,EAAQ,WAAW,SAAA,GAAY,SAAA;AAAA,MAC/B,UAAA,EAAY,WAAA;AAAA,MACZ,GAAI,QAAA,KAAa,GAAA,CAAI,KAAA,GACjB,EAAE,iBAAiB,SAAA,EAAW,KAAA,EAAO,SAAA,EAAW,SAAA,EAAW,6BAA4B,GACvF,EAAE,eAAA,EAAiB,aAAA,EAAe,OAAO,SAAA;AAAU,KAEzD;AAAA,IAEC,QAAA,EAAA,GAAA,CAAI;AAAA,GAAA;AAAA,EAlBA,GAAA,CAAI;AAmBX,CACD,CAAA,EACH,CAAA;AAGK,IAAM,kBAAkD,CAAC;AAAA,EAC9D,SAAA,EAAW,IAAA;AAAA,EACX,QAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,MAAA,GAAS,CAAC,KAAA,KAA8B,QAAA,CAAS,EAAE,GAAG,IAAA,EAAM,GAAG,KAAA,EAAO,CAAA;AAE5E,EAAA,QAAQ,KAAK,IAAA;AAAM;AAAA,IAEjB,KAAK,SAAA;AACH,MAAA,uBACED,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA,EAAQ,aAAA,EAAe,QAAA,EAAU,GAAA,EAAK,EAAA,EAAG,EAC9D,QAAA,EAAA;AAAA,wBAAAC,GAAAA,CAAC,cAAA,EAAA,EAAe,KAAA,EAAO,IAAA,CAAK,UAAU,QAAA,EAAU,CAAA,CAAA,KAAK,MAAA,CAAO,EAAE,QAAA,EAAU,CAAA,EAAG,CAAA,EAAG,UAAU,QAAA,EAAU,CAAA;AAAA,QACjG,WAAA,CAAY,QAAA,EAAU,MAAA,mBACrBA,GAAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,WAAA,CAAY,QAAA,CAAS,GAAA,CAAI,CAAA,CAAA,MAAM,EAAE,KAAA,EAAO,CAAA,CAAE,KAAA,EAAO,KAAA,EAAO,CAAA,CAAE,KAAA,IAAS,IAAG,CAAE,CAAA;AAAA,YACjF,QAAA,EAAA,CAAW,IAAA,CAAK,QAAA,IAAY,EAAC,EAAG,GAAA,CAAI,CAAA,CAAA,KAAK,OAAO,CAAA,KAAM,QAAA,GAAW,CAAA,GAAK,CAAA,CAAE,SAAS,EAAG,CAAA;AAAA,YACpF,QAAA,EAAU,CAAA,IAAA,KAAQ,MAAA,CAAO,EAAE,QAAA,EAAU,KAAK,GAAA,CAAI,CAAA,CAAA,MAAM,EAAE,KAAA,EAAO,CAAA,EAAG,KAAA,EAAO,YAAY,QAAA,EAAU,IAAA,CAAK,CAAA,CAAA,KAAK,CAAA,CAAE,KAAA,KAAU,CAAC,GAAG,KAAA,IAAS,CAAA,EAAE,CAAE,CAAA,EAAG,CAAA;AAAA,YACvI,QAAA,EAAU;AAAA;AAAA,SACZ,mBAEAA,GAAAA,CAAC,GAAA,EAAA,EAAE,KAAA,EAAO,EAAE,QAAA,EAAU,EAAA,EAAI,KAAA,EAAO,SAAA,EAAW,SAAA,EAAW,QAAA,IAAY,QAAA,EAAA,uBAAA,EAAqB;AAAA,OAAA,EAE5F,CAAA;AAAA;AAAA,IAIJ,KAAK,SAAA;AACH,MAAA,uBACED,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA,EAAQ,aAAA,EAAe,QAAA,EAAU,GAAA,EAAK,EAAA,EAAG,EAC9D,QAAA,EAAA;AAAA,wBAAAC,GAAAA,CAAC,cAAA,EAAA,EAAe,KAAA,EAAO,IAAA,CAAK,UAAU,QAAA,EAAU,CAAA,CAAA,KAAK,MAAA,CAAO,EAAE,QAAA,EAAU,CAAA,EAAG,CAAA,EAAG,UAAU,QAAA,EAAU,CAAA;AAAA,wBAClGA,GAAAA;AAAA,UAAC,YAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,CAAC,CAAC,IAAA,CAAK,UAAA;AAAA,YAChB,UAAU,CAAA,CAAA,KAAK,MAAA,CAAO,EAAE,UAAA,EAAY,GAAG,CAAA;AAAA,YACvC,KAAA,EAAM,aAAA;AAAA,YACN,QAAA,EAAU;AAAA;AAAA,SACZ;AAAA,QACC,IAAA,CAAK,6BACJA,GAAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,cAAA;AAAA,YACT,QAAA,EAAU,IAAA,CAAK,OAAA,IAAW,EAAC;AAAA,YAC3B,UAAU,CAAA,IAAA,KAAQ,MAAA,CAAO,EAAE,OAAA,EAAS,MAAM,CAAA;AAAA,YAC1C,QAAA,EAAU;AAAA;AAAA,4BAGZA,GAAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,QAAA,EAAU,IAAA,CAAK,SAAA,IAAa,EAAC;AAAA,YAC7B,UAAU,CAAA,KAAA,KAAS,MAAA,CAAO,EAAE,SAAA,EAAW,OAAO,CAAA;AAAA,YAC9C,QAAA,EAAU;AAAA;AAAA;AACZ,OAAA,EAEJ,CAAA;AAAA;AAAA,IAIJ,KAAK,OAAA;AACH,MAAA,uBACED,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA,EAAQ,aAAA,EAAe,QAAA,EAAU,GAAA,EAAK,EAAA,EAAG,EAC9D,QAAA,EAAA;AAAA,wBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,QAAQ,mBAAA,EAAqB,SAAA,EAAW,GAAA,EAAK,CAAA,EAAE,EACpE,QAAA,EAAA;AAAA,0BAAAA,KAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,4BAAAC,GAAAA,CAAC,OAAA,EAAA,EAAM,KAAA,EAAO,UAAA,EAAY,QAAA,EAAA,YAAA,EAAU,CAAA;AAAA,4BACpCA,IAAC,OAAA,EAAA,EAAM,KAAA,EAAO,YAAY,KAAA,EAAO,IAAA,CAAK,KAAA,IAAS,EAAA,EAAI,QAAA,EAAU,CAAA,CAAA,KAAK,OAAO,EAAE,KAAA,EAAO,EAAE,MAAA,CAAO,KAAA,EAAO,CAAA,EAAG,WAAA,EAAY,YAAA,EAAa,QAAA,EAAU,QAAA,EAAU;AAAA,WAAA,EACpJ,CAAA;AAAA,0BACAD,KAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,4BAAAC,GAAAA,CAAC,OAAA,EAAA,EAAM,KAAA,EAAO,UAAA,EAAY,QAAA,EAAA,YAAA,EAAU,CAAA;AAAA,4BACpCA,GAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAO,YAAY,KAAA,EAAO,IAAA,CAAK,SAAA,IAAa,MAAA,EAAQ,UAAU,CAAA,CAAA,KAAK,MAAA,CAAO,EAAE,SAAA,EAAW,EAAE,MAAA,CAAO,KAAA,EAAc,CAAA,EAAG,UAAU,QAAA,EAChI,QAAA,EAAA,WAAA,CAAY,GAAA,CAAI,CAAA,EAAA,qBAAMA,GAAAA,CAAC,QAAA,EAAA,EAAsB,KAAA,EAAO,EAAA,CAAG,OAAQ,QAAA,EAAA,EAAA,CAAG,KAAA,EAAA,EAA/B,EAAA,CAAG,KAAkC,CAAS,CAAA,EACpF;AAAA,WAAA,EACF;AAAA,SAAA,EACF,CAAA;AAAA,wBACAD,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA,EAAQ,mBAAA,EAAqB,SAAA,EAAW,GAAA,EAAK,CAAA,EAAE,EACpE,QAAA,EAAA;AAAA,0BAAAA,KAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,4BAAAC,GAAAA,CAAC,OAAA,EAAA,EAAM,KAAA,EAAO,UAAA,EAAY,QAAA,EAAA,UAAA,EAAQ,CAAA;AAAA,4BAClCA,GAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAO,YAAY,KAAA,EAAO,IAAA,CAAK,cAAA,IAAkB,OAAA,EAAS,UAAU,CAAA,CAAA,KAAK,MAAA,CAAO,EAAE,cAAA,EAAgB,EAAE,MAAA,CAAO,KAAA,EAAc,CAAA,EAAG,UAAU,QAAA,EAC3I,QAAA,EAAA,eAAA,CAAgB,GAAA,CAAI,CAAA,EAAA,qBAAMA,GAAAA,CAAC,QAAA,EAAA,EAAsB,KAAA,EAAO,EAAA,CAAG,OAAQ,QAAA,EAAA,EAAA,CAAG,KAAA,EAAA,EAA/B,EAAA,CAAG,KAAkC,CAAS,CAAA,EACxF;AAAA,WAAA,EACF,CAAA;AAAA,0BACAD,KAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,4BAAAC,GAAAA,CAAC,OAAA,EAAA,EAAM,KAAA,EAAO,UAAA,EAAY,QAAA,EAAA,OAAA,EAAK,CAAA;AAAA,4BAC/BA,GAAAA,CAAC,OAAA,EAAA,EAAM,KAAA,EAAO,UAAA,EAAY,OAAO,MAAA,CAAO,IAAA,CAAK,KAAA,IAAS,EAAE,CAAA,EAAG,QAAA,EAAU,OAAK,MAAA,CAAO,EAAE,KAAA,EAAO,CAAA,CAAE,MAAA,CAAO,KAAA,EAAO,CAAA,EAAG,WAAA,EAAY,OAAA,EAAQ,QAAA,EAAU,QAAA,EAAU;AAAA,WAAA,EACvJ;AAAA,SAAA,EACF;AAAA,OAAA,EACF,CAAA;AAAA;AAAA,IAIJ,KAAK,MAAA;AACH,MAAA,uBACED,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA,EAAQ,aAAA,EAAe,QAAA,EAAU,GAAA,EAAK,EAAA,EAAG,EAC9D,QAAA,EAAA;AAAA,wBAAAC,GAAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,iBAAA;AAAA,YACT,UAAU,IAAA,CAAK,QAAA,GAAW,CAAC,IAAA,CAAK,QAAQ,IAAI,EAAC;AAAA,YAC7C,QAAA,EAAU,CAAA,IAAA,KAAQ,MAAA,CAAO,EAAE,QAAA,EAAW,IAAA,CAAK,IAAA,CAAK,MAAA,GAAS,CAAC,CAAA,IAAK,MAAA,EAAmB,CAAA;AAAA,YAClF,QAAA,EAAU;AAAA;AAAA,SACZ;AAAA,QACC,KAAK,QAAA,KAAa,OAAA,IAAW,WAAA,CAAY,UAAA,EAAY,yBACpDA,GAAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,SAAS,WAAA,CAAY,UAAA;AAAA,YACrB,QAAA,EAAU,IAAA,CAAK,QAAA,IAAY,EAAC;AAAA,YAC5B,UAAU,CAAA,IAAA,KAAQ,MAAA,CAAO,EAAE,QAAA,EAAU,MAAM,CAAA;AAAA,YAC3C,QAAA,EAAU;AAAA;AAAA,SACZ,GACE;AAAA,OAAA,EACN,CAAA;AAAA;AAAA,IAIJ,KAAK,MAAA;AACH,MAAA,uBACED,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA,EAAQ,aAAA,EAAe,QAAA,EAAU,GAAA,EAAK,EAAA,EAAG,EAC9D,QAAA,EAAA;AAAA,wBAAAC,GAAAA;AAAA,UAAC,SAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS;AAAA,cACP,EAAE,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,WAAA,EAAY;AAAA,cACtC,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,UAAA,EAAW;AAAA,cACpC,EAAE,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,YAAA;AAAa,aAC1C;AAAA,YACA,UAAU,IAAA,CAAK,QAAA;AAAA,YACf,UAAU,CAAA,CAAA,KAAK,MAAA,CAAO,EAAE,QAAA,EAAU,GAAU,CAAA;AAAA,YAC5C,QAAA,EAAU;AAAA;AAAA,SACZ;AAAA,QAAA,CACE,IAAA,CAAK,aAAa,QAAA,IAAY,IAAA,CAAK,aAAa,SAAA,qBAChDD,KAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAAC,GAAAA,CAAC,WAAM,KAAA,EAAO,UAAA,EAAa,eAAK,QAAA,KAAa,SAAA,GAAY,eAAe,aAAA,EAAc,CAAA;AAAA,0BACtFA,IAAC,OAAA,EAAA,EAAM,IAAA,EAAK,QAAO,KAAA,EAAO,UAAA,EAAY,KAAA,EAAO,IAAA,CAAK,UAAA,IAAc,EAAA,EAAI,UAAU,CAAA,CAAA,KAAK,MAAA,CAAO,EAAE,UAAA,EAAY,CAAA,CAAE,OAAO,KAAA,EAAO,CAAA,EAAG,QAAA,EAAU,QAAA,EAAU;AAAA,SAAA,EACjJ,CAAA;AAAA,QAAA,CAEA,IAAA,CAAK,aAAa,OAAA,IAAW,IAAA,CAAK,aAAa,SAAA,qBAC/CD,KAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAAC,GAAAA,CAAC,WAAM,KAAA,EAAO,UAAA,EAAa,eAAK,QAAA,KAAa,SAAA,GAAY,aAAa,YAAA,EAAa,CAAA;AAAA,0BACnFA,IAAC,OAAA,EAAA,EAAM,IAAA,EAAK,QAAO,KAAA,EAAO,UAAA,EAAY,KAAA,EAAO,IAAA,CAAK,SAAA,IAAa,EAAA,EAAI,UAAU,CAAA,CAAA,KAAK,MAAA,CAAO,EAAE,SAAA,EAAW,CAAA,CAAE,OAAO,KAAA,EAAO,CAAA,EAAG,QAAA,EAAU,QAAA,EAAU;AAAA,SAAA,EAC/I;AAAA,OAAA,EAEJ,CAAA;AAAA;AAAA,IAIJ,KAAK,QAAA;AACH,MAAA,uBACED,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA,EAAQ,aAAA,EAAe,QAAA,EAAU,GAAA,EAAK,EAAA,EAAG,EAC9D,QAAA,EAAA;AAAA,wBAAAC,GAAAA,CAAC,cAAA,EAAA,EAAe,KAAA,EAAO,IAAA,CAAK,UAAU,QAAA,EAAU,CAAA,CAAA,KAAK,MAAA,CAAO,EAAE,QAAA,EAAU,CAAA,EAAG,CAAA,EAAG,UAAU,QAAA,EAAU,CAAA;AAAA,wBAClGA,GAAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,eAAA;AAAA,YACT,QAAA,EAAU,IAAA,CAAK,QAAA,IAAY,EAAC;AAAA,YAC5B,UAAU,CAAA,IAAA,KAAQ,MAAA,CAAO,EAAE,QAAA,EAAU,MAAM,CAAA;AAAA,YAC3C,QAAA,EAAU;AAAA;AAAA;AACZ,OAAA,EACF,CAAA;AAAA;AAAA,IAIJ,KAAK,KAAA;AACH,MAAA,uBACED,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA,EAAQ,aAAA,EAAe,QAAA,EAAU,GAAA,EAAK,EAAA,EAAG,EAC9D,QAAA,EAAA;AAAA,wBAAAC,GAAAA,CAAC,cAAA,EAAA,EAAe,KAAA,EAAO,IAAA,CAAK,UAAU,QAAA,EAAU,CAAA,CAAA,KAAK,MAAA,CAAO,EAAE,QAAA,EAAU,CAAA,EAAG,CAAA,EAAG,UAAU,QAAA,EAAU,CAAA;AAAA,QACjG,WAAA,CAAY,IAAA,EAAM,MAAA,mBACjBA,GAAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,WAAA,CAAY,IAAA,CAAK,GAAA,CAAI,CAAA,CAAA,MAAM,EAAE,KAAA,EAAO,CAAA,EAAG,KAAA,EAAO,CAAA,EAAE,CAAE,CAAA;AAAA,YAC3D,QAAA,EAAU,IAAA,CAAK,IAAA,IAAQ,EAAC;AAAA,YACxB,UAAU,CAAA,IAAA,KAAQ,MAAA,CAAO,EAAE,IAAA,EAAM,MAAM,CAAA;AAAA,YACvC,QAAA,EAAU;AAAA;AAAA,4BAGZA,GAAAA,CAAC,OAAA,EAAA,EAAM,KAAA,EAAO,YAAY,KAAA,EAAA,CAAQ,IAAA,CAAK,IAAA,IAAQ,IAAI,IAAA,CAAK,IAAI,GAAG,QAAA,EAAU,CAAA,CAAA,KAAK,OAAO,EAAE,IAAA,EAAM,CAAA,CAAE,MAAA,CAAO,MAAM,KAAA,CAAM,GAAG,EAAE,GAAA,CAAI,CAAA,CAAA,KAAK,EAAE,IAAA,EAAM,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,EAAG,GAAG,WAAA,EAAY,oBAAA,EAAgB,UAAU,QAAA,EAAU;AAAA,OAAA,EAElN,CAAA;AAAA;AAAA,IAIJ,KAAK,OAAA,EAAS;AACZ,MAAA,MAAM,MAAA,GAAS,WAAA,CAAY,MAAA,IAAU,EAAC;AACtC,MAAA,MAAM,gBAAgB,MAAA,CAAO,IAAA,CAAK,OAAK,CAAA,CAAE,GAAA,KAAQ,KAAK,QAAQ,CAAA;AAC9D,MAAA,uBACED,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA,EAAQ,aAAA,EAAe,QAAA,EAAU,GAAA,EAAK,EAAA,EAAG,EAC9D,QAAA,EAAA;AAAA,wBAAAC,GAAAA;AAAA,UAAC,cAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO,KAAK,QAAA,KAAa,KAAA;AAAA,YACzB,UAAU,CAAA,CAAA,KAAK,MAAA,CAAO,EAAE,QAAA,EAAU,GAAG,CAAA;AAAA,YACrC,QAAA,EAAU;AAAA;AAAA,SACZ;AAAA,wBACAD,KAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAAC,GAAAA,CAAC,OAAA,EAAA,EAAM,KAAA,EAAO,UAAA,EAAY,QAAA,EAAA,OAAA,EAAK,CAAA;AAAA,UAC9B,MAAA,CAAO,yBACND,IAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,UAAA;AAAA,cACP,KAAA,EAAO,KAAK,QAAA,IAAY,EAAA;AAAA,cACxB,QAAA,EAAU,CAAA,CAAA,KAAK,MAAA,CAAO,EAAE,UAAU,CAAA,CAAE,MAAA,CAAO,KAAA,IAAS,MAAA,EAAW,MAAA,EAAQ,EAAC,EAAG,SAAA,EAAW,QAAW,CAAA;AAAA,cACjG,QAAA,EAAU,QAAA;AAAA,cAEV,QAAA,EAAA;AAAA,gCAAAC,GAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,EAAA,EAAG,QAAA,EAAA,sBAAA,EAAe,CAAA;AAAA,gBAC/B,MAAA,CAAO,IAAI,CAAA,CAAA,qBACVD,KAAC,QAAA,EAAA,EAAmB,KAAA,EAAO,EAAE,GAAA,EAC1B,QAAA,EAAA;AAAA,kBAAA,CAAA,CAAE,IAAA;AAAA,kBAAM,CAAA,CAAE,WAAA,KAAgB,OAAA,GAAU,UAAA,GAAa;AAAA,iBAAA,EAAA,EADvC,CAAA,CAAE,GAEf,CACD;AAAA;AAAA;AAAA,WACH,mBAEAC,GAAAA,CAAC,GAAA,EAAA,EAAE,KAAA,EAAO,EAAE,QAAA,EAAU,EAAA,EAAI,KAAA,EAAO,SAAA,EAAW,SAAA,EAAW,QAAA,IAAY,QAAA,EAAA,yCAAA,EAEnE;AAAA,SAAA,EAEJ,CAAA;AAAA,QACC,aAAA,oBACCD,IAAAA,CAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAAA,IAAAA,CAAC,OAAA,EAAA,EAAM,KAAA,EAAO,UAAA,EAAY,QAAA,EAAA;AAAA,YAAA,OAAA;AAAA,YAAM,aAAA,CAAc,WAAA,KAAgB,OAAA,GAAU,GAAA,GAAM;AAAA,WAAA,EAAG,CAAA;AAAA,UAChF,aAAA,CAAc,MAAA,CAAO,MAAA,mBACpBC,GAAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAS,aAAA,CAAc,MAAA,CAAO,GAAA,CAAI,CAAA,CAAA,MAAM;AAAA,gBACtC,OAAO,CAAA,CAAE,IAAA;AAAA,gBACT,OAAO,CAAA,CAAE,GAAA;AAAA,gBACT,WAAA,EAAa,EAAE,WAAA,IAAe;AAAA,eAChC,CAAE,CAAA;AAAA,cACF,QAAA,EAAU,IAAA,CAAK,MAAA,IAAU,IAAA,CAAK,aAAa,EAAC;AAAA,cAC5C,QAAA,EAAU,UAAQ,MAAA,CAAO,EAAE,QAAQ,IAAA,EAAM,SAAA,EAAW,QAAW,CAAA;AAAA,cAC/D,QAAA,EAAU;AAAA;AAAA,WACZ,mBAEAA,GAAAA,CAAC,GAAA,EAAA,EAAE,KAAA,EAAO,EAAE,QAAA,EAAU,EAAA,EAAI,KAAA,EAAO,SAAA,EAAW,SAAA,EAAW,QAAA,IAAY,QAAA,EAAA,kCAAA,EAEnE;AAAA,SAAA,EAEJ;AAAA,OAAA,EAEJ,CAAA;AAAA,IAEJ;AAAA;AAAA,IAGA,KAAK,UAAA;AACH,MAAA,uBACED,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA,EAAQ,aAAA,EAAe,QAAA,EAAU,GAAA,EAAK,EAAA,EAAG,EAC9D,QAAA,EAAA;AAAA,wBAAAC,IAAC,cAAA,EAAA,EAAe,KAAA,EAAO,KAAK,QAAA,EAAU,QAAA,EAAU,OAAK,MAAA,CAAO,EAAE,QAAA,EAAU,CAAA,EAAG,CAAA,EAAG,SAAA,EAAU,gBAAe,UAAA,EAAW,eAAA,EAAgB,UAAU,QAAA,EAAU,CAAA;AAAA,wBACtJA,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA,EAAQ,mBAAA,EAAqB,SAAA,EAAW,GAAA,EAAK,CAAA,EAAE,EACnE,QAAA,EAAA;AAAA,UACC,EAAE,KAAA,EAAO,iBAAA,EAAmB,GAAA,EAAK,MAAA,EAAgB;AAAA,UACjD,EAAE,KAAA,EAAO,kBAAA,EAAoB,GAAA,EAAK,MAAA,EAAgB;AAAA,UAClD,EAAE,KAAA,EAAO,iBAAA,EAAmB,GAAA,EAAK,MAAA,EAAgB;AAAA,UACjD,EAAE,KAAA,EAAO,kBAAA,EAAoB,GAAA,EAAK,MAAA;AAAgB,SACpD,CAAE,GAAA,CAAI,CAAA,CAAA,qBACJD,KAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAAC,GAAAA,CAAC,OAAA,EAAA,EAAM,KAAA,EAAO,UAAA,EAAa,YAAE,KAAA,EAAM,CAAA;AAAA,0BACnCA,GAAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,IAAA,EAAK,KAAA;AAAA,cACL,KAAA,EAAO,UAAA;AAAA,cACP,KAAA,EAAO,IAAA,CAAK,CAAA,CAAE,GAAG,CAAA,IAAK,EAAA;AAAA,cACtB,UAAU,CAAA,CAAA,KAAK,MAAA,CAAO,EAAE,CAAC,EAAE,GAAG,GAAG,CAAA,CAAE,MAAA,CAAO,QAAQ,UAAA,CAAW,CAAA,CAAE,OAAO,KAAK,CAAA,GAAI,QAAW,CAAA;AAAA,cAC1F,QAAA,EAAU;AAAA;AAAA;AACZ,SAAA,EAAA,EATQ,CAAA,CAAE,GAUZ,CACD,CAAA,EACH;AAAA,OAAA,EACF,CAAA;AAAA;AAAA,IAIJ,KAAK,SAAA;AACH,MAAA,uBACED,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA,EAAQ,aAAA,EAAe,QAAA,EAAU,GAAA,EAAK,EAAA,EAAG,EAC9D,QAAA,EAAA;AAAA,wBAAAC,GAAAA,CAAC,cAAA,EAAA,EAAe,KAAA,EAAO,IAAA,CAAK,UAAU,QAAA,EAAU,CAAA,CAAA,KAAK,MAAA,CAAO,EAAE,QAAA,EAAU,CAAA,EAAG,CAAA,EAAG,UAAU,QAAA,EAAU,CAAA;AAAA,QACjG,WAAA,CAAY,QAAA,EAAU,MAAA,mBACrBA,GAAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,SAAS,WAAA,CAAY,QAAA;AAAA,YACrB,QAAA,EAAU,IAAA,CAAK,UAAA,IAAc,EAAC;AAAA,YAC9B,UAAU,CAAA,IAAA,KAAQ,MAAA,CAAO,EAAE,UAAA,EAAY,MAAM,CAAA;AAAA,YAC7C,QAAA,EAAU;AAAA;AAAA,4BAGZA,GAAAA,CAAC,OAAA,EAAA,EAAM,KAAA,EAAO,YAAY,KAAA,EAAA,CAAQ,IAAA,CAAK,UAAA,IAAc,IAAI,IAAA,CAAK,IAAI,GAAG,QAAA,EAAU,CAAA,CAAA,KAAK,OAAO,EAAE,UAAA,EAAY,CAAA,CAAE,MAAA,CAAO,MAAM,KAAA,CAAM,GAAG,EAAE,GAAA,CAAI,CAAA,CAAA,KAAK,EAAE,IAAA,EAAM,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,EAAG,GAAG,WAAA,EAAY,oCAAA,EAAgC,UAAU,QAAA,EAAU;AAAA,OAAA,EAE9O,CAAA;AAAA;AAAA,IAIJ,KAAK,YAAA;AACH,MAAA,uBACEA,GAAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAS,mBAAA;AAAA,UACT,UAAU,IAAA,CAAK,UAAA,GAAa,CAAC,IAAA,CAAK,UAAU,IAAI,EAAC;AAAA,UACjD,QAAA,EAAU,CAAA,IAAA,KAAQ,MAAA,CAAO,EAAE,UAAA,EAAa,IAAA,CAAK,IAAA,CAAK,MAAA,GAAS,CAAC,CAAA,IAAK,MAAA,EAAmB,CAAA;AAAA,UACpF,QAAA,EAAU;AAAA;AAAA,OACZ;AAAA;AAAA,IAIJ,KAAK,WAAA;AACH,MAAA,uBACED,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA,EAAQ,aAAA,EAAe,QAAA,EAAU,GAAA,EAAK,EAAA,EAAG,EAC7D,QAAA,EAAA;AAAA,QAAA,WAAA,CAAY,eAAA,EAAiB,yBAC5BA,IAAAA,CAAC,YAAO,KAAA,EAAO,UAAA,EAAY,KAAA,EAAO,IAAA,CAAK,WAAA,IAAe,EAAA,EAAI,UAAU,CAAA,CAAA,KAAK,MAAA,CAAO,EAAE,WAAA,EAAa,CAAA,CAAE,OAAO,KAAA,EAAO,CAAA,EAAG,QAAA,EAAU,QAAA,EAC1H,QAAA,EAAA;AAAA,0BAAAC,GAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,EAAA,EAAG,QAAA,EAAA,0BAAA,EAAmB,CAAA;AAAA,UACnC,WAAA,CAAY,eAAA,CAAgB,GAAA,CAAI,CAAA,CAAA,qBAAKA,GAAAA,CAAC,QAAA,EAAA,EAAqB,KAAA,EAAO,CAAA,CAAE,KAAA,EAAQ,QAAA,EAAA,CAAA,CAAE,KAAA,EAAA,EAA5B,CAAA,CAAE,KAAgC,CAAS;AAAA,SAAA,EAChG,CAAA,mBAEAA,GAAAA,CAAC,OAAA,EAAA,EAAM,OAAO,UAAA,EAAY,KAAA,EAAO,IAAA,CAAK,WAAA,IAAe,EAAA,EAAI,QAAA,EAAU,OAAK,MAAA,CAAO,EAAE,WAAA,EAAa,CAAA,CAAE,MAAA,CAAO,KAAA,EAAO,CAAA,EAAG,WAAA,EAAY,cAAA,EAAe,QAAA,EAAU,QAAA,EAAU,CAAA;AAAA,wBAElKA,GAAAA;AAAA,UAAC,SAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS;AAAA,cACP,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,QAAA,EAAS;AAAA,cACjC,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,OAAA;AAAQ,aACnC;AAAA,YACA,QAAA,EAAU,KAAK,MAAA,KAAW,IAAA,GAAO,SAAS,IAAA,CAAK,MAAA,KAAW,QAAQ,OAAA,GAAU,MAAA;AAAA,YAC5E,UAAU,CAAA,CAAA,KAAK,MAAA,CAAO,EAAE,MAAA,EAAQ,CAAA,KAAM,QAAQ,CAAA;AAAA,YAC9C,QAAA,EAAU;AAAA;AAAA;AACZ,OAAA,EACF,CAAA;AAAA,IAGJ;AACE,MAAA,uBAAOA,GAAAA,CAAC,GAAA,EAAA,EAAE,KAAA,EAAO,EAAE,QAAA,EAAU,EAAA,EAAI,KAAA,EAAO,SAAA,EAAW,SAAA,EAAW,QAAA,EAAS,EAAG,QAAA,EAAA,wBAAA,EAAsB,CAAA;AAAA;AAEtG,CAAA;AC7dO,IAAM,gBAA8C,CAAC;AAAA,EAC1D,SAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,IAAIC,QAAAA,CAAS,CAAC,UAAU,IAAI,CAAA;AACxD,EAAA,MAAM,IAAA,GAAO,gBAAA,CAAiB,SAAA,CAAU,IAAI,CAAA;AAC5C,EAAA,MAAM,IAAA,GAAO,gBAAA,CAAiB,SAAA,CAAU,IAAI,CAAA;AAC5C,EAAA,MAAM,OAAA,GAAU,mBAAA,CAAoB,SAAA,EAAW,EAAE,eAAA,EAAiB,YAAY,eAAA,EAAiB,MAAA,EAAQ,WAAA,CAAY,MAAA,EAAQ,CAAA;AAE3H,EAAA,MAAM,gBAAA,GAAmB,CAAC,IAAA,KAAwB;AAChD,IAAA,QAAA,CAAS,EAAE,GAAG,SAAA,EAAW,IAAA,EAAM,CAAA;AAC/B,IAAA,WAAA,CAAY,IAAI,CAAA;AAAA,EAClB,CAAA;AAEA,EAAA,uBACEF,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oGAAA,EAEb,QAAA,EAAA;AAAA,oBAAAA,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT,gFAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,OAAO,IAAA,GAAO;AAAA,UACZ,UAAA,EAAY,CAAA,uBAAA,EAA0B,IAAA,CAAK,KAAK,CAAA,wBAAA;AAAA,SAClD,GAAI,MAAA;AAAA,QACJ,OAAA,EAAS,MAAM,WAAA,CAAY,CAAC,QAAQ,CAAA;AAAA,QAGpC,QAAA,EAAA;AAAA,0BAAAC,GAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAU,qEAAA;AAAA,cACV,KAAA,EAAO,IAAA,GAAO,EAAE,eAAA,EAAiB,GAAG,IAAA,CAAK,KAAK,CAAA,EAAA,CAAA,EAAM,KAAA,EAAO,IAAA,CAAK,KAAA,EAAM,GAAI,EAAE,iBAAiB,SAAA,EAAU;AAAA,cAEvG,QAAA,kBAAAA,GAAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA,WAC5B;AAAA,0BAGAD,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACb,QAAA,EAAA;AAAA,4BAAAC,IAAC,GAAA,EAAA,EAAE,SAAA,EAAU,+DAAA,EACV,QAAA,EAAA,IAAA,EAAM,SAAS,uBAAA,EAClB,CAAA;AAAA,4BACAA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,yDAAyD,QAAA,EAAA,OAAA,EAAQ;AAAA,WAAA,EAChF,CAAA;AAAA,0BAGAD,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uCAAA,EACZ,QAAA,EAAA;AAAA,YAAA,SAAA,CAAU,IAAA,IAAQ,CAAC,QAAA,oBAClBC,GAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAS,CAAC,CAAA,KAAM;AAAE,kBAAA,CAAA,CAAE,eAAA,EAAgB;AAAG,kBAAA,QAAA,CAAS,EAAE,IAAA,EAAM,IAAA,EAAM,CAAA;AAAA,gBAAG,CAAA;AAAA,gBACjE,SAAA,EAAU,wEAAA;AAAA,gBACV,KAAA,EAAM,aAAA;AAAA,gBAEN,QAAA,kBAAAA,GAAAA,CAAC,SAAA,EAAA,EAAU,SAAA,EAAU,2BAAA,EAA4B;AAAA;AAAA,aACnD;AAAA,YAED,CAAC,4BACAA,GAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAS,CAAC,CAAA,KAAM;AAAE,kBAAA,CAAA,CAAE,eAAA,EAAgB;AAAG,kBAAA,QAAA,EAAS;AAAA,gBAAG,CAAA;AAAA,gBACnD,SAAA,EAAU,yEAAA;AAAA,gBACV,KAAA,EAAM,QAAA;AAAA,gBAEN,QAAA,kBAAAA,GAAAA,CAAC,MAAA,EAAA,EAAO,SAAA,EAAU,0BAAA,EAA2B;AAAA;AAAA,aAC/C;AAAA,YAED,QAAA,mBAAWA,GAAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,uBAAA,EAAwB,CAAA,mBAAKA,GAAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAU,uBAAA,EAAwB;AAAA,WAAA,EAClH;AAAA;AAAA;AAAA,KACF;AAAA,IAGC,4BACCA,GAAAA,CAAC,SAAI,SAAA,EAAU,yDAAA,EACZ,WAAC,SAAA,CAAU,IAAA,mBACVA,GAAAA,CAAC,mBAAA,EAAA,EAAoB,UAAU,gBAAA,EAAkB,CAAA,mBAEjDD,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,WAAA,EACZ,QAAA,EAAA;AAAA,MAAA,IAAA,EAAM,4BACLC,GAAAA,CAAC,OAAE,SAAA,EAAU,qDAAA,EAAuD,eAAK,QAAA,EAAS,CAAA;AAAA,sBAEpFA,GAAAA;AAAA,QAAC,eAAA;AAAA,QAAA;AAAA,UACC,SAAA;AAAA,UACA,QAAA;AAAA,UACA,WAAA;AAAA,UACA;AAAA;AAAA;AACF,KAAA,EACF,CAAA,EAEJ;AAAA,GAAA,EAEJ,CAAA;AAEJ,CAAA;ACjGA,IAAM,oBAID,CAAC,EAAE,KAAA,EAAO,eAAA,EAAiB,QAAO,KAAM;AAC3C,EAAA,MAAM,QAAQ,KAAA,CAAM,UAAA,CAAW,OAAO,CAAA,CAAA,KAAK,CAAA,CAAE,IAAI,CAAA,CAAE,MAAA;AACnD,EAAA,IAAI,UAAU,CAAA,EAAG;AACf,IAAA,uBACED,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kEAAA,EACb,QAAA,EAAA;AAAA,sBAAAC,GAAAA,CAAC,MAAA,EAAA,EAAO,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,sBAC5BA,GAAAA,CAAC,MAAA,EAAA,EAAK,QAAA,EAAA,mBAAA,EAAiB,CAAA;AAAA,sBACvBA,GAAAA,CAACE,YAAAA,EAAA,EAAa,WAAU,iBAAA,EAAkB;AAAA,KAAA,EAC5C,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEH,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8EAAA,EACb,QAAA,EAAA;AAAA,sBAAAC,GAAAA,CAAC,MAAA,EAAA,EAAO,SAAA,EAAU,aAAA,EAAc,CAAA;AAAA,MAC/B,KAAA;AAAA,MAAM,YAAA;AAAA,MAAW,KAAA,KAAU,IAAI,GAAA,GAAM,EAAA;AAAA,MAAG,QAAA;AAAA,MAAI,KAAA,CAAM,IAAA,KAAS,KAAA,GAAQ,WAAA,GAAc,WAAA;AAAA,sBAClFA,GAAAA,CAACE,YAAAA,EAAA,EAAa,WAAU,iBAAA,EAAkB;AAAA,KAAA,EAC5C,CAAA;AAAA,oBACAH,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBAAA,EACZ,QAAA,EAAA;AAAA,MAAA,KAAA,CAAM,UAAA,CAAW,MAAA,CAAO,CAAA,CAAA,KAAK,CAAA,CAAE,IAAI,CAAA,CAAE,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,MAAM,CAAA,KAAM;AACjE,QAAA,MAAM,IAAA,GAAO,gBAAA,CAAiB,IAAA,CAAK,IAAI,CAAA;AACvC,QAAA,uBACEC,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YAEC,SAAA,EAAU,iFAAA;AAAA,YACV,KAAA,EAAO;AAAA,cACL,eAAA,EAAiB,IAAA,GAAO,CAAA,EAAG,IAAA,CAAK,KAAK,CAAA,EAAA,CAAA,GAAO,SAAA;AAAA,cAC5C,KAAA,EAAO,MAAM,KAAA,IAAS;AAAA,aACxB;AAAA,YAEC,QAAA,EAAA,mBAAA,CAAoB,IAAA,EAAM,EAAE,eAAA,EAAiB,QAAQ;AAAA,WAAA;AAAA,UAPjD;AAAA,SAQP;AAAA,MAEJ,CAAC,CAAA;AAAA,MACA,QAAQ,CAAA,oBACPD,IAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,sHAAA,EAAuH,QAAA,EAAA;AAAA,QAAA,GAAA;AAAA,QACnI,KAAA,GAAQ,CAAA;AAAA,QAAE;AAAA,OAAA,EACd;AAAA,KAAA,EAEJ;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AAKA,IAAM,eAID,CAAC,EAAE,IAAA,EAAM,OAAA,EAAS,UAAS,KAAM;AACpC,EAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAClB,EAAA,uBACEA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qDAAA,EACb,QAAA,EAAA;AAAA,oBAAAC,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,+CAAA,EAAgD,SAAS,OAAA,EAAS,CAAA;AAAA,oBACjFD,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4KAAA,EACb,QAAA,EAAA;AAAA,sBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2FAAA,EACb,QAAA,EAAA;AAAA,wBAAAC,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,wDAAA,EAAyD,QAAA,EAAA,iBAAA,EAEvE,CAAA;AAAA,wBACAA,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,OAAA;AAAA,YACT,SAAA,EAAU,wEAAA;AAAA,YAEV,QAAA,kBAAAA,GAAAA,CAAC,CAAA,EAAA,EAAE,SAAA,EAAU,uBAAA,EAAwB;AAAA;AAAA;AACvC,OAAA,EACF,CAAA;AAAA,sBACAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8BACZ,QAAA,EACH;AAAA,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AAKA,IAAM,0BAA0G,CAAC;AAAA,EAC/G,KAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,eAAA;AAAA,EACA,UAAA;AAAA,EACA,MAAA;AAAA,EACA,YAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,cAAA,GAAiB,SAAA,CAAU,YAAA,EAAc,MAAA,EAAQ,SAAS,CAAA;AAChE,EAAA,MAAM,WAAA,GAAc,EAAE,QAAA,EAAU,IAAA,EAAM,UAAU,eAAA,EAAiB,UAAA,EAAY,QAAQ,cAAA,EAAe;AAEpG,EAAA,MAAM,eAAA,GAAkB,WAAA,CAAY,CAAC,KAAA,EAAe,OAAA,KAAuB;AACzE,IAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAO,YAAY,CAAC,GAAG,KAAA,CAAM,UAAU,CAAA,EAAE;AAC3D,IAAA,IAAA,CAAK,UAAA,CAAW,KAAK,CAAA,GAAI,OAAA;AACzB,IAAA,QAAA,CAAS,IAAI,CAAA;AAAA,EACf,CAAA,EAAG,CAAC,KAAA,EAAO,QAAQ,CAAC,CAAA;AAEpB,EAAA,MAAM,eAAA,GAAkB,WAAA,CAAY,CAAC,KAAA,KAAkB;AACrD,IAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAO,UAAA,EAAY,KAAA,CAAM,UAAA,CAAW,MAAA,CAAO,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,KAAM,KAAK,CAAA,EAAE;AACpF,IAAA,QAAA,CAAS,IAAI,CAAA;AAAA,EACf,CAAA,EAAG,CAAC,KAAA,EAAO,QAAQ,CAAC,CAAA;AAEpB,EAAA,MAAM,YAAA,GAAe,YAAY,MAAM;AACrC,IAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAO,UAAA,EAAY,CAAC,GAAG,KAAA,CAAM,UAAA,EAAY,EAAe,CAAA,EAAE;AAC5E,IAAA,QAAA,CAAS,IAAI,CAAA;AAAA,EACf,CAAA,EAAG,CAAC,KAAA,EAAO,QAAQ,CAAC,CAAA;AAEpB,EAAA,MAAM,WAAA,GAAc,WAAA,CAAY,CAAC,KAAA,KAAwB;AACvD,IAAA,QAAA,CAAS,EAAE,GAAG,KAAA,EAAO,IAAA,EAAM,OAAO,CAAA;AAAA,EACpC,CAAA,EAAG,CAAC,KAAA,EAAO,QAAQ,CAAC,CAAA;AAEpB,EAAA,uBACED,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,EAAA,CAAG,2CAAA,EAA6C,SAAS,CAAA,EAEtE,QAAA,EAAA;AAAA,IAAA,QAAA,oBACCA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sEAAA,EACb,QAAA,EAAA;AAAA,sBAAAC,GAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,oJAAA;AAAA,UACV,KAAA,EAAO,MAAM,KAAA,IAAS,EAAA;AAAA,UACtB,QAAA,EAAU,CAAA,CAAA,KAAK,QAAA,CAAS,EAAE,GAAG,OAAO,KAAA,EAAO,CAAA,CAAE,MAAA,CAAO,KAAA,EAAO,CAAA;AAAA,UAC3D,WAAA,EAAY,iBAAA;AAAA,UACZ,QAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAD,IAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,iFAAA,EACf,QAAA,EAAA;AAAA,wBAAAC,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,MAAM,QAAA,CAAS,EAAE,GAAG,OAAO,QAAA,EAAU,CAAC,KAAA,CAAM,QAAA,EAAU,CAAA;AAAA,YAC/D,QAAA,EAAU,QAAA;AAAA,YACV,SAAA,EAAW,EAAA;AAAA,cACT,iDAAA;AAAA,cACA,KAAA,CAAM,WAAW,aAAA,GAAgB;AAAA,aACnC;AAAA,YAEA,QAAA,kBAAAA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,EAAA;AAAA,cACf,4EAAA;AAAA,cACA,KAAA,CAAM,WAAW,eAAA,GAAkB;AAAA,aACrC,EAAG;AAAA;AAAA,SACL;AAAA,QAAS;AAAA,OAAA,EAEX;AAAA,KAAA,EACF,CAAA;AAAA,oBAIFD,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,YAAA,EAAc,CAAA,EAAG,MAAA,EAAQ,mBAAA,EAAqB,OAAA,EAAS,EAAA,EAAG,EACtE,QAAA,EAAA;AAAA,sBAAAA,KAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA,EAAQ,YAAY,QAAA,EAAU,GAAA,EAAK,CAAA,EAAG,QAAA,EAAU,IAAI,UAAA,EAAY,GAAA,EAAK,OAAO,SAAA,EAAW,YAAA,EAAc,IAAG,EAC7H,QAAA,EAAA;AAAA,wBAAAC,GAAAA,CAACG,SAAAA,EAAA,EAAU,SAAA,EAAU,aAAA,EAAc,CAAA;AAAA,QAAE;AAAA,OAAA,EAEvC,CAAA;AAAA,sBACAH,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA,EAAQ,GAAA,EAAK,CAAA,EAAG,eAAA,EAAiB,SAAA,EAAW,YAAA,EAAc,CAAA,EAAG,SAAS,CAAA,EAAE,EAC3F,QAAA,EAAA,CAAC,EAAE,CAAA,EAAG,KAAA,EAAgB,CAAA,EAAG,iBAAA,IAAqB,EAAE,CAAA,EAAG,IAAA,EAAe,CAAA,EAAG,gBAAA,EAAkB,CAAA,CAAG,GAAA,CAAI,yBAC9FA,GAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UAEC,IAAA,EAAK,QAAA;AAAA,UACL,OAAA,EAAS,MAAM,WAAA,CAAY,GAAA,CAAI,CAAC,CAAA;AAAA,UAChC,QAAA,EAAU,QAAA;AAAA,UACV,KAAA,EAAO;AAAA,YACL,IAAA,EAAM,CAAA;AAAA,YACN,OAAA,EAAS,UAAA;AAAA,YACT,QAAA,EAAU,EAAA;AAAA,YACV,UAAA,EAAY,GAAA;AAAA,YACZ,YAAA,EAAc,CAAA;AAAA,YACd,MAAA,EAAQ,MAAA;AAAA,YACR,MAAA,EAAQ,WAAW,SAAA,GAAY,SAAA;AAAA,YAC/B,UAAA,EAAY,WAAA;AAAA,YACZ,GAAI,KAAA,CAAM,IAAA,KAAS,GAAA,CAAI,CAAA,GACnB,EAAE,eAAA,EAAiB,SAAA,EAAW,KAAA,EAAO,SAAA,EAAW,WAAW,2BAAA,EAA4B,GACvF,EAAE,eAAA,EAAiB,aAAA,EAAe,OAAO,SAAA;AAAU,WAEzD;AAAA,UAEC,QAAA,EAAA,GAAA,CAAI;AAAA,SAAA;AAAA,QAnBA,GAAA,CAAI;AAAA,OAqBZ,CAAA,EACH;AAAA,KAAA,EACF,CAAA;AAAA,oBAGAD,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACb,QAAA,EAAA;AAAA,sBAAAC,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,wDAAA,EAAyD,QAAA,EAAA,YAAA,EAAU,CAAA;AAAA,sBAChFA,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,mHAAA,EACb,QAAA,EAAA,KAAA,CAAM,WAAW,MAAA,EACpB;AAAA,KAAA,EACF,CAAA;AAAA,oBAGAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACZ,QAAA,EAAA,KAAA,CAAM,UAAA,CAAW,GAAA,CAAI,CAAC,IAAA,EAAM,GAAA,qBAC3BA,GAAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QAEC,SAAA,EAAW,IAAA;AAAA,QACX,KAAA,EAAO,GAAA;AAAA,QACP,QAAA,EAAU,CAAC,OAAA,KAAY,eAAA,CAAgB,KAAK,OAAO,CAAA;AAAA,QACnD,QAAA,EAAU,MAAM,eAAA,CAAgB,GAAG,CAAA;AAAA,QACnC,WAAA;AAAA,QACA;AAAA,OAAA;AAAA,MANK;AAAA,KAQR,CAAA,EACH,CAAA;AAAA,IAGC,CAAC,4BACAD,IAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,YAAA;AAAA,QACT,SAAA,EAAW,EAAA;AAAA,UACT,+DAAA;AAAA,UACA,6DAAA;AAAA,UACA,0CAAA;AAAA,UACA,+FAAA;AAAA,UACA;AAAA,SACF;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAC,GAAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,UAAE;AAAA;AAAA;AAAA;AAE9B,GAAA,EAEJ,CAAA;AAEJ,CAAA;AAKO,IAAM,gBAAA,GAAoD,CAAC,KAAA,KAAU;AAC1E,EAAA,MAAM,EAAE,IAAA,GAAO,QAAA,EAAU,OAAA,EAAS,MAAM,cAAA,EAAgB,OAAA,EAAS,KAAA,EAAO,eAAA,EAAiB,QAAQ,YAAA,EAAc,SAAA,EAAW,SAAA,EAAW,GAAG,MAAK,GAAI,KAAA;AAEjJ,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIC,SAAS,KAAK,CAAA;AACtD,EAAA,MAAM,SAAS,cAAA,IAAkB,YAAA;AAGjC,EAAA,MAAM,cAAA,GAAiB,SAAA,CAAU,YAAA,EAAc,MAAA,EAAQ,SAAS,CAAA;AAEhE,EAAA,MAAM,WAAA,GAAc,YAAY,MAAM;AACpC,IAAA,eAAA,CAAgB,KAAK,CAAA;AACrB,IAAA,OAAA,IAAU;AAAA,EACZ,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAGZ,EAAA,IAAI,SAAS,QAAA,EAAU;AACrB,IAAA,uBACED,GAAAA;AAAA,MAAC,uBAAA;AAAA,MAAA;AAAA,QACC,KAAA;AAAA,QACA,eAAA;AAAA,QACA,MAAA;AAAA,QACA,YAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACC,GAAG;AAAA;AAAA,KACN;AAAA,EAEJ;AAGA,EAAA,MAAM,cAAA,GAAiB,OAAA,oBACrBA,GAAAA,CAAC,SAAI,SAAA,EAAW,EAAA;AAAA,IACd,2EAAA;AAAA,IACA,oEAAA;AAAA,IACA;AAAA,GACF,EACE,0BAAAA,GAAAA,CAAC,iBAAA,EAAA,EAAkB,OAAc,eAAA,EAAkC,MAAA,EAAQ,gBAAgB,CAAA,EAC7F,CAAA;AAGF,EAAA,uBACED,KAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAC,GAAAA,CAAC,UAAK,OAAA,EAAS,MAAM,gBAAgB,IAAI,CAAA,EAAG,SAAA,EAAU,gBAAA,EACnD,QAAA,EAAA,cAAA,EACH,CAAA;AAAA,oBACAA,GAAAA,CAAC,YAAA,EAAA,EAAa,MAAM,MAAA,EAAQ,OAAA,EAAS,aACnC,QAAA,kBAAAA,GAAAA;AAAA,MAAC,uBAAA;AAAA,MAAA;AAAA,QACC,KAAA;AAAA,QACA,eAAA;AAAA,QACA,MAAA;AAAA,QACA,YAAA;AAAA,QACA,SAAA;AAAA,QACC,GAAG;AAAA;AAAA,KACN,EACF;AAAA,GAAA,EACF,CAAA;AAEJ","file":"chunk-A4YZYKWT.js","sourcesContent":["// =============================================================================\r\n// CONDITIONS EDITOR — Condition Type Metadata\r\n// =============================================================================\r\n\r\nimport type { ConditionTypeMeta, ConditionType, Condition, SelectOption, FacetOption } from './types';\r\nimport {\r\n Tags,\r\n Globe,\r\n Hash,\r\n User,\r\n Calendar,\r\n Monitor,\r\n Tag,\r\n MapPin,\r\n Package,\r\n ToggleLeft,\r\n GitBranch,\r\n Layers,\r\n} from 'lucide-react';\r\nimport React from 'react';\r\n\r\nexport const CONDITION_TYPES: ConditionTypeMeta[] = [\r\n { value: 'version', title: 'Version', description: 'Match specific versions', icon: 'tags', color: '#7c3aed', helpText: 'Limit by specific versions of your application or product.' },\r\n { value: 'country', title: 'Country', description: 'Filter by geographic location', icon: 'globe', color: '#2563eb', helpText: \"Limit by the user's country or region.\" },\r\n { value: 'value', title: 'Value', description: 'Match custom field values', icon: 'hash', color: '#ea580c', helpText: 'Compare text, numbers, or boolean values using various operators.' },\r\n { value: 'user', title: 'User', description: 'Filter by auth & permissions', icon: 'user', color: '#16a34a', helpText: 'Limit by authentication status, ownership, group membership, or admin privileges.' },\r\n { value: 'date', title: 'Date', description: 'Time-based conditions', icon: 'calendar', color: '#dc2626', helpText: 'Limit by specific dates or date ranges.' },\r\n { value: 'device', title: 'Device', description: 'Filter by device type', icon: 'monitor', color: '#0891b2', helpText: 'Limit by the type of device or operating system.' },\r\n { value: 'tag', title: 'Label', description: 'Match by tags or labels', icon: 'tag', color: '#db2777', helpText: 'Limit by assigned labels or tags.' },\r\n { value: 'facet', title: 'Facet', description: 'Match product facet values', icon: 'layers', color: '#9333ea', helpText: 'Limit by one or more facet values assigned to products in the collection.' },\r\n { value: 'geofence', title: 'Geofence', description: 'Geographic boundary', icon: 'map-pin', color: '#0d9488', helpText: 'Limit by geographic boundaries (rectangular area).' },\r\n { value: 'product', title: 'Product ID', description: 'Match specific items', icon: 'package', color: '#d97706', helpText: 'Limit by specific product IDs.' },\r\n { value: 'itemStatus', title: 'Item Status', description: 'Filter by item state', icon: 'toggle-left', color: '#ea580c', helpText: 'Limit by item status such as proof, claimable, owner, or virtual.' },\r\n { value: 'condition', title: 'Condition', description: 'Reference another condition', icon: 'git-branch', color: '#4f46e5', helpText: 'Reference another saved condition and check if it passes or fails.' },\r\n];\r\n\r\nconst iconMap: Record<string, React.FC<{ className?: string }>> = {\r\n tags: Tags,\r\n globe: Globe,\r\n hash: Hash,\r\n user: User,\r\n calendar: Calendar,\r\n monitor: Monitor,\r\n tag: Tag,\r\n 'map-pin': MapPin,\r\n package: Package,\r\n 'toggle-left': ToggleLeft,\r\n 'git-branch': GitBranch,\r\n layers: Layers,\r\n};\r\n\r\nexport function getConditionMeta(type: ConditionType | null | undefined): ConditionTypeMeta | undefined {\r\n if (!type) return undefined;\r\n return CONDITION_TYPES.find(t => t.value === type);\r\n}\r\n\r\nexport function getConditionIcon(type: ConditionType | null | undefined): React.FC<{ className?: string }> {\r\n const meta = getConditionMeta(type);\r\n return (meta && iconMap[meta.icon]) || Hash;\r\n}\r\n\r\nexport function getConditionSummary(cond: Condition, options?: {\r\n savedConditions?: SelectOption[];\r\n regionOptions?: { title: string; value: string }[];\r\n facets?: FacetOption[];\r\n}): string {\r\n if (!cond.type) return 'No condition type selected';\r\n const meta = getConditionMeta(cond.type);\r\n let summary = meta?.title || cond.type;\r\n\r\n switch (cond.type) {\r\n case 'version':\r\n if (cond.versions?.length) {\r\n const verb = cond.contains ? 'is' : 'is not';\r\n summary += ` ${verb} ${cond.versions.map(v => typeof v === 'string' ? v : (v.title || v.value || '')).join(', ')}`;\r\n }\r\n break;\r\n case 'country':\r\n if (cond.useRegions && cond.regions?.length) {\r\n const verb = cond.contains ? 'is in' : 'is not in';\r\n const names = cond.regions.map(r => {\r\n const reg = REGION_OPTIONS.find(o => o.value === r);\r\n return reg?.title || r;\r\n });\r\n summary += ` ${verb} ${names.join(', ')}`;\r\n } else if (cond.countries?.length) {\r\n const verb = cond.contains ? 'is' : 'is not';\r\n summary += ` ${verb} ${cond.countries.join(', ')}`;\r\n }\r\n break;\r\n case 'value':\r\n if (cond.field) {\r\n const ops: Record<string, string> = { equal: '=', not: '≠', greater: '>', less: '<' };\r\n summary += `: ${cond.field} ${ops[cond.validationType || ''] || ''} ${cond.value ?? '?'}`;\r\n }\r\n break;\r\n case 'tag':\r\n if (cond.tags?.length) {\r\n const verb = cond.contains ? 'has' : 'does not have';\r\n summary += ` ${verb} ${cond.tags.length} label(s)`;\r\n }\r\n break;\r\n case 'facet': {\r\n const facet = options?.facets?.find(f => f.key === cond.facetKey);\r\n const facetName = facet?.name || cond.facetKey;\r\n const facetValues = cond.values ?? cond.valueKeys;\r\n if (cond.facetKey && facetValues?.length) {\r\n const verb = cond.contains === false ? 'is not' : 'is';\r\n const names = facetValues.map(vk => facet?.values.find(v => v.key === vk)?.name || vk);\r\n summary = `${facetName} ${verb} ${names.join(', ')}`;\r\n } else if (cond.facetKey) {\r\n summary = `${facetName}: (no values selected)`;\r\n }\r\n break;\r\n }\r\n case 'device':\r\n if (cond.displays?.length) {\r\n const verb = cond.contains ? 'is' : 'is not';\r\n summary += ` ${verb} ${cond.displays.join(', ')}`;\r\n }\r\n break;\r\n case 'user': {\r\n const userTypes: Record<string, string> = {\r\n valid: 'is logged in', invalid: 'is logged out', owner: 'is item owner',\r\n group: cond.groupIds?.length ? `in ${cond.groupIds.length} group(s)` : 'in groups',\r\n admin: 'is admin',\r\n };\r\n summary += ` ${userTypes[cond.userType || ''] || ''}`;\r\n break;\r\n }\r\n case 'product':\r\n if (cond.productIds?.length) {\r\n const verb = cond.contains ? 'is' : 'is not';\r\n summary += ` ${verb} ${cond.productIds.length} item(s)`;\r\n }\r\n break;\r\n case 'condition':\r\n if (cond.conditionId) {\r\n const condRef = options?.savedConditions?.find(c => c.value === cond.conditionId);\r\n summary += `: ${condRef?.title || cond.conditionId} ${cond.passes ? 'passes' : 'fails'}`;\r\n }\r\n break;\r\n case 'date': {\r\n const dateTests: Record<string, string> = { before: 'before', after: 'after', between: 'between' };\r\n summary += ` is ${dateTests[cond.dateTest || ''] || ''}`;\r\n if (cond.beforeDate) summary += ` ${cond.beforeDate}`;\r\n if (cond.afterDate) summary += ` ${cond.afterDate}`;\r\n if (cond.rangeDate) summary += ` ${cond.rangeDate}`;\r\n break;\r\n }\r\n case 'geofence': {\r\n const verb = cond.contains ? 'inside' : 'outside';\r\n summary += ` ${verb} bounds`;\r\n break;\r\n }\r\n case 'itemStatus': {\r\n const statusTypes: Record<string, string> = {\r\n hasProof: 'has proof', noProof: 'has no proof', isClaimable: 'is claimable',\r\n notClaimable: 'is not claimable', hasOwner: 'has owner', isVirtual: 'is virtual',\r\n };\r\n summary += ` ${statusTypes[cond.statusType || ''] || ''}`;\r\n break;\r\n }\r\n }\r\n\r\n return summary;\r\n}\r\n\r\nexport const DISPLAY_OPTIONS: SelectOption[] = [\r\n { title: 'Desktop', value: 'desktop' },\r\n { title: 'Mobile', value: 'mobile' },\r\n { title: 'Android', value: 'android' },\r\n { title: 'iOS', value: 'ios' },\r\n { title: 'Apple Mac', value: 'mac' },\r\n { title: 'Microsoft Windows', value: 'win' },\r\n];\r\n\r\nexport const REGION_OPTIONS: (SelectOption & { description?: string })[] = [\r\n { title: 'European Union (EU)', value: 'eu', description: 'All 27 EU member states' },\r\n { title: 'European Economic Area (EEA)', value: 'eea', description: 'EU + Iceland, Liechtenstein, Norway' },\r\n { title: 'United Kingdom', value: 'uk', description: 'England, Scotland, Wales, Northern Ireland' },\r\n { title: 'North America', value: 'northamerica', description: 'USA, Canada, Mexico' },\r\n { title: 'Asia Pacific', value: 'asiapacific', description: 'Major Asia-Pacific markets' },\r\n];\r\n\r\nexport const USER_TYPE_OPTIONS: SelectOption[] = [\r\n { title: 'Is Logged In', value: 'valid' },\r\n { title: 'Is Logged Out', value: 'invalid' },\r\n { title: 'Is Item Owner', value: 'owner' },\r\n { title: 'Is Group Member', value: 'group' },\r\n { title: 'Is Admin', value: 'admin' },\r\n];\r\n\r\nexport const ITEM_STATUS_OPTIONS: SelectOption[] = [\r\n { title: 'Is Product (Not Item)', value: 'hasProof' },\r\n { title: 'Is Single Item', value: 'noProof' },\r\n { title: 'Is Item & Claimable', value: 'isClaimable' },\r\n { title: 'Is Item & Claimed', value: 'notClaimable' },\r\n { title: 'Is Virtual Item', value: 'isVirtual' },\r\n { title: 'Is Not A Virtual Item', value: 'notVirtual' },\r\n];\r\n\r\nexport const VALUE_OPERATORS: SelectOption[] = [\r\n { title: 'Equal to', value: 'equal' },\r\n { title: 'Not Equal', value: 'not' },\r\n { title: 'Greater Than', value: 'greater' },\r\n { title: 'Less Than', value: 'less' },\r\n];\r\n\r\nexport const FIELD_TYPES: SelectOption[] = [\r\n { title: 'Boolean', value: 'boolean' },\r\n { title: 'Integer', value: 'integer' },\r\n { title: 'Text', value: 'text' },\r\n];\r\n","// =============================================================================\r\n// CONDITIONS EDITOR — Condition Type Picker Grid\r\n// =============================================================================\r\n\r\nimport React from 'react';\r\nimport { CONDITION_TYPES } from './conditionMeta';\r\nimport { getConditionIcon } from './conditionMeta';\r\nimport type { ConditionType } from './types';\r\nimport { cn } from '../../utils/cn';\r\n\r\ninterface ConditionTypePickerProps {\r\n onSelect: (type: ConditionType) => void;\r\n}\r\n\r\nexport const ConditionTypePicker: React.FC<ConditionTypePickerProps> = ({ onSelect }) => {\r\n return (\r\n <div className=\"p-4\">\r\n <p className=\"text-xs font-medium text-gray-500 dark:text-gray-400 mb-3\">Choose a condition type:</p>\r\n <div className=\"grid grid-cols-3 sm:grid-cols-4 gap-2\">\r\n {CONDITION_TYPES.map(ct => {\r\n const Icon = getConditionIcon(ct.value);\r\n return (\r\n <button\r\n key={ct.value}\r\n onClick={() => onSelect(ct.value)}\r\n className={cn(\r\n 'flex flex-col items-center gap-1.5 p-3 rounded-lg border-2 border-gray-200 dark:border-gray-700',\r\n 'hover:border-blue-400 dark:hover:border-blue-500 hover:bg-blue-50/50 dark:hover:bg-blue-950/20',\r\n 'transition-all text-center cursor-pointer'\r\n )}\r\n >\r\n <div\r\n className=\"w-8 h-8 rounded-full flex items-center justify-center\"\r\n style={{ backgroundColor: `${ct.color}18`, color: ct.color }}\r\n >\r\n <Icon className=\"w-4 h-4\" />\r\n </div>\r\n <span className=\"text-[11px] font-medium text-gray-700 dark:text-gray-300\">{ct.title}</span>\r\n </button>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n );\r\n};\r\n","// =============================================================================\r\n// ISO 3166-1 alpha-2 country list\r\n// =============================================================================\r\n\r\nexport interface CountryOption {\r\n code: string;\r\n name: string;\r\n}\r\n\r\nexport const COUNTRIES: CountryOption[] = [\r\n { code: 'AF', name: 'Afghanistan' },\r\n { code: 'AL', name: 'Albania' },\r\n { code: 'DZ', name: 'Algeria' },\r\n { code: 'AD', name: 'Andorra' },\r\n { code: 'AO', name: 'Angola' },\r\n { code: 'AG', name: 'Antigua and Barbuda' },\r\n { code: 'AR', name: 'Argentina' },\r\n { code: 'AM', name: 'Armenia' },\r\n { code: 'AU', name: 'Australia' },\r\n { code: 'AT', name: 'Austria' },\r\n { code: 'AZ', name: 'Azerbaijan' },\r\n { code: 'BS', name: 'Bahamas' },\r\n { code: 'BH', name: 'Bahrain' },\r\n { code: 'BD', name: 'Bangladesh' },\r\n { code: 'BB', name: 'Barbados' },\r\n { code: 'BY', name: 'Belarus' },\r\n { code: 'BE', name: 'Belgium' },\r\n { code: 'BZ', name: 'Belize' },\r\n { code: 'BJ', name: 'Benin' },\r\n { code: 'BT', name: 'Bhutan' },\r\n { code: 'BO', name: 'Bolivia' },\r\n { code: 'BA', name: 'Bosnia and Herzegovina' },\r\n { code: 'BW', name: 'Botswana' },\r\n { code: 'BR', name: 'Brazil' },\r\n { code: 'BN', name: 'Brunei' },\r\n { code: 'BG', name: 'Bulgaria' },\r\n { code: 'BF', name: 'Burkina Faso' },\r\n { code: 'BI', name: 'Burundi' },\r\n { code: 'CV', name: 'Cabo Verde' },\r\n { code: 'KH', name: 'Cambodia' },\r\n { code: 'CM', name: 'Cameroon' },\r\n { code: 'CA', name: 'Canada' },\r\n { code: 'CF', name: 'Central African Republic' },\r\n { code: 'TD', name: 'Chad' },\r\n { code: 'CL', name: 'Chile' },\r\n { code: 'CN', name: 'China' },\r\n { code: 'CO', name: 'Colombia' },\r\n { code: 'KM', name: 'Comoros' },\r\n { code: 'CG', name: 'Congo' },\r\n { code: 'CD', name: 'Congo (DRC)' },\r\n { code: 'CR', name: 'Costa Rica' },\r\n { code: 'CI', name: \"Côte d'Ivoire\" },\r\n { code: 'HR', name: 'Croatia' },\r\n { code: 'CU', name: 'Cuba' },\r\n { code: 'CY', name: 'Cyprus' },\r\n { code: 'CZ', name: 'Czechia' },\r\n { code: 'DK', name: 'Denmark' },\r\n { code: 'DJ', name: 'Djibouti' },\r\n { code: 'DM', name: 'Dominica' },\r\n { code: 'DO', name: 'Dominican Republic' },\r\n { code: 'EC', name: 'Ecuador' },\r\n { code: 'EG', name: 'Egypt' },\r\n { code: 'SV', name: 'El Salvador' },\r\n { code: 'GQ', name: 'Equatorial Guinea' },\r\n { code: 'ER', name: 'Eritrea' },\r\n { code: 'EE', name: 'Estonia' },\r\n { code: 'SZ', name: 'Eswatini' },\r\n { code: 'ET', name: 'Ethiopia' },\r\n { code: 'FJ', name: 'Fiji' },\r\n { code: 'FI', name: 'Finland' },\r\n { code: 'FR', name: 'France' },\r\n { code: 'GA', name: 'Gabon' },\r\n { code: 'GM', name: 'Gambia' },\r\n { code: 'GE', name: 'Georgia' },\r\n { code: 'DE', name: 'Germany' },\r\n { code: 'GH', name: 'Ghana' },\r\n { code: 'GR', name: 'Greece' },\r\n { code: 'GD', name: 'Grenada' },\r\n { code: 'GT', name: 'Guatemala' },\r\n { code: 'GN', name: 'Guinea' },\r\n { code: 'GW', name: 'Guinea-Bissau' },\r\n { code: 'GY', name: 'Guyana' },\r\n { code: 'HT', name: 'Haiti' },\r\n { code: 'HN', name: 'Honduras' },\r\n { code: 'HU', name: 'Hungary' },\r\n { code: 'IS', name: 'Iceland' },\r\n { code: 'IN', name: 'India' },\r\n { code: 'ID', name: 'Indonesia' },\r\n { code: 'IR', name: 'Iran' },\r\n { code: 'IQ', name: 'Iraq' },\r\n { code: 'IE', name: 'Ireland' },\r\n { code: 'IL', name: 'Israel' },\r\n { code: 'IT', name: 'Italy' },\r\n { code: 'JM', name: 'Jamaica' },\r\n { code: 'JP', name: 'Japan' },\r\n { code: 'JO', name: 'Jordan' },\r\n { code: 'KZ', name: 'Kazakhstan' },\r\n { code: 'KE', name: 'Kenya' },\r\n { code: 'KI', name: 'Kiribati' },\r\n { code: 'KP', name: 'North Korea' },\r\n { code: 'KR', name: 'South Korea' },\r\n { code: 'KW', name: 'Kuwait' },\r\n { code: 'KG', name: 'Kyrgyzstan' },\r\n { code: 'LA', name: 'Laos' },\r\n { code: 'LV', name: 'Latvia' },\r\n { code: 'LB', name: 'Lebanon' },\r\n { code: 'LS', name: 'Lesotho' },\r\n { code: 'LR', name: 'Liberia' },\r\n { code: 'LY', name: 'Libya' },\r\n { code: 'LI', name: 'Liechtenstein' },\r\n { code: 'LT', name: 'Lithuania' },\r\n { code: 'LU', name: 'Luxembourg' },\r\n { code: 'MG', name: 'Madagascar' },\r\n { code: 'MW', name: 'Malawi' },\r\n { code: 'MY', name: 'Malaysia' },\r\n { code: 'MV', name: 'Maldives' },\r\n { code: 'ML', name: 'Mali' },\r\n { code: 'MT', name: 'Malta' },\r\n { code: 'MH', name: 'Marshall Islands' },\r\n { code: 'MR', name: 'Mauritania' },\r\n { code: 'MU', name: 'Mauritius' },\r\n { code: 'MX', name: 'Mexico' },\r\n { code: 'FM', name: 'Micronesia' },\r\n { code: 'MD', name: 'Moldova' },\r\n { code: 'MC', name: 'Monaco' },\r\n { code: 'MN', name: 'Mongolia' },\r\n { code: 'ME', name: 'Montenegro' },\r\n { code: 'MA', name: 'Morocco' },\r\n { code: 'MZ', name: 'Mozambique' },\r\n { code: 'MM', name: 'Myanmar' },\r\n { code: 'NA', name: 'Namibia' },\r\n { code: 'NR', name: 'Nauru' },\r\n { code: 'NP', name: 'Nepal' },\r\n { code: 'NL', name: 'Netherlands' },\r\n { code: 'NZ', name: 'New Zealand' },\r\n { code: 'NI', name: 'Nicaragua' },\r\n { code: 'NE', name: 'Niger' },\r\n { code: 'NG', name: 'Nigeria' },\r\n { code: 'MK', name: 'North Macedonia' },\r\n { code: 'NO', name: 'Norway' },\r\n { code: 'OM', name: 'Oman' },\r\n { code: 'PK', name: 'Pakistan' },\r\n { code: 'PW', name: 'Palau' },\r\n { code: 'PS', name: 'Palestine' },\r\n { code: 'PA', name: 'Panama' },\r\n { code: 'PG', name: 'Papua New Guinea' },\r\n { code: 'PY', name: 'Paraguay' },\r\n { code: 'PE', name: 'Peru' },\r\n { code: 'PH', name: 'Philippines' },\r\n { code: 'PL', name: 'Poland' },\r\n { code: 'PT', name: 'Portugal' },\r\n { code: 'QA', name: 'Qatar' },\r\n { code: 'RO', name: 'Romania' },\r\n { code: 'RU', name: 'Russia' },\r\n { code: 'RW', name: 'Rwanda' },\r\n { code: 'KN', name: 'Saint Kitts and Nevis' },\r\n { code: 'LC', name: 'Saint Lucia' },\r\n { code: 'VC', name: 'Saint Vincent and the Grenadines' },\r\n { code: 'WS', name: 'Samoa' },\r\n { code: 'SM', name: 'San Marino' },\r\n { code: 'ST', name: 'São Tomé and Príncipe' },\r\n { code: 'SA', name: 'Saudi Arabia' },\r\n { code: 'SN', name: 'Senegal' },\r\n { code: 'RS', name: 'Serbia' },\r\n { code: 'SC', name: 'Seychelles' },\r\n { code: 'SL', name: 'Sierra Leone' },\r\n { code: 'SG', name: 'Singapore' },\r\n { code: 'SK', name: 'Slovakia' },\r\n { code: 'SI', name: 'Slovenia' },\r\n { code: 'SB', name: 'Solomon Islands' },\r\n { code: 'SO', name: 'Somalia' },\r\n { code: 'ZA', name: 'South Africa' },\r\n { code: 'SS', name: 'South Sudan' },\r\n { code: 'ES', name: 'Spain' },\r\n { code: 'LK', name: 'Sri Lanka' },\r\n { code: 'SD', name: 'Sudan' },\r\n { code: 'SR', name: 'Suriname' },\r\n { code: 'SE', name: 'Sweden' },\r\n { code: 'CH', name: 'Switzerland' },\r\n { code: 'SY', name: 'Syria' },\r\n { code: 'TW', name: 'Taiwan' },\r\n { code: 'TJ', name: 'Tajikistan' },\r\n { code: 'TZ', name: 'Tanzania' },\r\n { code: 'TH', name: 'Thailand' },\r\n { code: 'TL', name: 'Timor-Leste' },\r\n { code: 'TG', name: 'Togo' },\r\n { code: 'TO', name: 'Tonga' },\r\n { code: 'TT', name: 'Trinidad and Tobago' },\r\n { code: 'TN', name: 'Tunisia' },\r\n { code: 'TR', name: 'Turkey' },\r\n { code: 'TM', name: 'Turkmenistan' },\r\n { code: 'TV', name: 'Tuvalu' },\r\n { code: 'UG', name: 'Uganda' },\r\n { code: 'UA', name: 'Ukraine' },\r\n { code: 'AE', name: 'United Arab Emirates' },\r\n { code: 'GB', name: 'United Kingdom' },\r\n { code: 'US', name: 'United States' },\r\n { code: 'UY', name: 'Uruguay' },\r\n { code: 'UZ', name: 'Uzbekistan' },\r\n { code: 'VU', name: 'Vanuatu' },\r\n { code: 'VA', name: 'Vatican City' },\r\n { code: 'VE', name: 'Venezuela' },\r\n { code: 'VN', name: 'Vietnam' },\r\n { code: 'YE', name: 'Yemen' },\r\n { code: 'ZM', name: 'Zambia' },\r\n { code: 'ZW', name: 'Zimbabwe' },\r\n];\r\n\r\nexport function getCountryName(code: string): string {\r\n return COUNTRIES.find(c => c.code === code.toUpperCase())?.name || code;\r\n}\r\n","// =============================================================================\r\n// CONDITIONS EDITOR — Searchable Country Multi-Select (inline styles)\r\n// =============================================================================\r\n\r\nimport React, { useState, useRef, useEffect, useMemo } from 'react';\r\nimport { COUNTRIES, getCountryName } from './countries';\r\n\r\ninterface CountryPickerProps {\r\n selected: string[];\r\n onChange: (codes: string[]) => void;\r\n disabled?: boolean;\r\n placeholder?: string;\r\n}\r\n\r\nexport const CountryPicker: React.FC<CountryPickerProps> = ({\r\n selected,\r\n onChange,\r\n disabled,\r\n placeholder = 'Search countries…',\r\n}) => {\r\n const [open, setOpen] = useState(false);\r\n const [search, setSearch] = useState('');\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const inputRef = useRef<HTMLInputElement>(null);\r\n\r\n const filtered = useMemo(() => {\r\n if (!search) return COUNTRIES;\r\n const q = search.toLowerCase();\r\n return COUNTRIES.filter(\r\n c => c.name.toLowerCase().includes(q) || c.code.toLowerCase().includes(q)\r\n );\r\n }, [search]);\r\n\r\n // Close on outside click\r\n useEffect(() => {\r\n if (!open) return;\r\n const handler = (e: MouseEvent) => {\r\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\r\n setOpen(false);\r\n setSearch('');\r\n }\r\n };\r\n document.addEventListener('mousedown', handler);\r\n return () => document.removeEventListener('mousedown', handler);\r\n }, [open]);\r\n\r\n const toggle = (code: string) => {\r\n if (disabled) return;\r\n onChange(\r\n selected.includes(code)\r\n ? selected.filter(c => c !== code)\r\n : [...selected, code]\r\n );\r\n };\r\n\r\n const remove = (code: string) => {\r\n if (disabled) return;\r\n onChange(selected.filter(c => c !== code));\r\n };\r\n\r\n const triggerStyle = {\r\n minHeight: 38,\r\n width: '100%',\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n alignItems: 'center',\r\n gap: 6,\r\n padding: '6px 10px',\r\n borderRadius: 6,\r\n border: `1px solid ${open ? '#3b82f6' : '#d1d5db'}`,\r\n backgroundColor: 'transparent',\r\n cursor: disabled ? 'not-allowed' : 'pointer',\r\n opacity: disabled ? 0.5 : 1,\r\n outline: open ? '1px solid #3b82f6' : 'none',\r\n transition: 'border-color 0.15s',\r\n } as const;\r\n\r\n const chipStyle = {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n gap: 4,\r\n padding: '2px 8px',\r\n borderRadius: 9999,\r\n fontSize: 12,\r\n fontWeight: 500,\r\n backgroundColor: '#dbeafe',\r\n color: '#1d4ed8',\r\n border: '1px solid #bfdbfe',\r\n };\r\n\r\n const dropdownStyle = {\r\n position: 'absolute',\r\n zIndex: 50,\r\n marginTop: 4,\r\n width: '100%',\r\n maxHeight: 200,\r\n overflowY: 'auto',\r\n borderRadius: 6,\r\n border: '1px solid #e5e7eb',\r\n backgroundColor: '#ffffff',\r\n boxShadow: '0 4px 12px rgba(0,0,0,0.12)',\r\n } as const;\r\n\r\n const inputStyle = {\r\n flex: 1,\r\n minWidth: 120,\r\n fontSize: 14,\r\n backgroundColor: 'transparent',\r\n outline: 'none',\r\n color: '#111827',\r\n border: 'none',\r\n };\r\n\r\n return (\r\n <div ref={containerRef} style={{ position: 'relative' }}>\r\n {/* Trigger */}\r\n <div\r\n style={triggerStyle}\r\n onClick={() => {\r\n if (disabled) return;\r\n setOpen(true);\r\n setTimeout(() => inputRef.current?.focus(), 0);\r\n }}\r\n >\r\n {selected.map(code => (\r\n <span key={code} style={chipStyle}>\r\n {getCountryName(code)} ({code})\r\n {!disabled && (\r\n <button\r\n type=\"button\"\r\n onClick={(e) => { e.stopPropagation(); remove(code); }}\r\n style={{ background: 'none', border: 'none', cursor: 'pointer', padding: 0, color: '#1d4ed8', fontSize: 14, lineHeight: 1 }}\r\n >\r\n ✕\r\n </button>\r\n )}\r\n </span>\r\n ))}\r\n {selected.length === 0 && !open && (\r\n <span style={{ fontSize: 14, color: '#9ca3af' }}>{placeholder}</span>\r\n )}\r\n {open && (\r\n <input\r\n ref={inputRef}\r\n value={search}\r\n onChange={e => setSearch(e.target.value)}\r\n style={inputStyle}\r\n placeholder={placeholder}\r\n onClick={e => e.stopPropagation()}\r\n />\r\n )}\r\n <span style={{ marginLeft: 'auto', flexShrink: 0, fontSize: 12, color: '#9ca3af', transition: 'transform 0.15s', transform: open ? 'rotate(180deg)' : 'none' }}>▼</span>\r\n </div>\r\n\r\n {/* Dropdown */}\r\n {open && (\r\n <div style={dropdownStyle}>\r\n {filtered.length === 0 ? (\r\n <div style={{ padding: '8px 12px', fontSize: 14, color: '#9ca3af' }}>No countries found</div>\r\n ) : (\r\n filtered.map(country => {\r\n const isSelected = selected.includes(country.code);\r\n return (\r\n <button\r\n key={country.code}\r\n type=\"button\"\r\n onClick={() => toggle(country.code)}\r\n style={{\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: 8,\r\n padding: '6px 12px',\r\n fontSize: 14,\r\n textAlign: 'left',\r\n border: 'none',\r\n cursor: 'pointer',\r\n transition: 'background-color 0.1s',\r\n backgroundColor: isSelected ? '#eff6ff' : 'transparent',\r\n color: isSelected ? '#1d4ed8' : '#374151',\r\n }}\r\n onMouseEnter={e => { if (!isSelected) (e.currentTarget.style.backgroundColor = '#f9fafb'); }}\r\n onMouseLeave={e => { e.currentTarget.style.backgroundColor = isSelected ? '#eff6ff' : 'transparent'; }}\r\n >\r\n <span style={{\r\n width: 16,\r\n height: 16,\r\n borderRadius: 3,\r\n border: `1px solid ${isSelected ? '#3b82f6' : '#d1d5db'}`,\r\n backgroundColor: isSelected ? '#3b82f6' : 'transparent',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n flexShrink: 0,\r\n color: '#ffffff',\r\n fontSize: 10,\r\n }}>\r\n {isSelected && '✓'}\r\n </span>\r\n <span style={{ flex: 1 }}>{country.name}</span>\r\n <span style={{ fontSize: 12, color: '#9ca3af', fontFamily: 'monospace' }}>{country.code}</span>\r\n </button>\r\n );\r\n })\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n","// =============================================================================\r\n// CONDITIONS EDITOR — Per-type configuration UI\r\n// =============================================================================\r\n// Uses inline styles for toggle/pill elements to ensure visibility regardless\r\n// of the host app's Tailwind configuration.\r\n\r\nimport React from 'react';\r\nimport type { Condition, ConditionsEditorProps } from './types';\r\nimport { CountryPicker } from './CountryPicker';\r\nimport {\r\n DISPLAY_OPTIONS, REGION_OPTIONS, USER_TYPE_OPTIONS,\r\n ITEM_STATUS_OPTIONS, VALUE_OPERATORS, FIELD_TYPES,\r\n} from './conditionMeta';\r\n\r\ninterface ConditionConfigProps {\r\n condition: Condition;\r\n onChange: (updated: Condition) => void;\r\n editorProps: Pick<ConditionsEditorProps, 'versions' | 'tags' | 'products' | 'savedConditions' | 'userGroups' | 'facets'>;\r\n readOnly?: boolean;\r\n}\r\n\r\n// Reusable pill-toggle for contains/notContains — uses inline styles\r\nconst ContainsToggle: React.FC<{\r\n value: boolean | undefined;\r\n onChange: (v: boolean) => void;\r\n trueLabel?: string;\r\n falseLabel?: string;\r\n disabled?: boolean;\r\n}> = ({ value = true, onChange, trueLabel = 'Is One Of', falseLabel = 'Is Not One Of', disabled }) => (\r\n <div style={{ display: 'flex', gap: 4, backgroundColor: '#f3f4f6', borderRadius: 6, padding: 4, width: 'fit-content' }}>\r\n {[{ v: true, label: trueLabel }, { v: false, label: falseLabel }].map(opt => (\r\n <button\r\n key={String(opt.v)}\r\n type=\"button\"\r\n onClick={() => onChange(opt.v)}\r\n disabled={disabled}\r\n style={{\r\n padding: '6px 12px',\r\n fontSize: 12,\r\n fontWeight: 600,\r\n borderRadius: 4,\r\n border: 'none',\r\n cursor: disabled ? 'default' : 'pointer',\r\n transition: 'all 0.15s',\r\n ...(value === opt.v\r\n ? { backgroundColor: '#3b82f6', color: '#ffffff', boxShadow: '0 1px 2px rgba(0,0,0,0.1)' }\r\n : { backgroundColor: 'transparent', color: '#6b7280' }\r\n ),\r\n }}\r\n >\r\n {opt.label}\r\n </button>\r\n ))}\r\n </div>\r\n);\r\n\r\n// Toggle switch — uses inline styles\r\nconst ToggleSwitch: React.FC<{\r\n checked: boolean;\r\n onChange: (v: boolean) => void;\r\n label: string;\r\n disabled?: boolean;\r\n}> = ({ checked, onChange, label, disabled }) => (\r\n <label style={{ display: 'inline-flex', alignItems: 'center', gap: 10, fontSize: 12, fontWeight: 500, color: '#4b5563', cursor: 'pointer', userSelect: 'none' }}>\r\n <span\r\n role=\"switch\"\r\n aria-checked={checked}\r\n onClick={() => !disabled && onChange(!checked)}\r\n style={{\r\n display: 'inline-block',\r\n width: 40,\r\n height: 22,\r\n borderRadius: 11,\r\n border: 'none',\r\n cursor: disabled ? 'default' : 'pointer',\r\n position: 'relative',\r\n flexShrink: 0,\r\n transition: 'background-color 0.2s',\r\n backgroundColor: checked ? '#3b82f6' : '#d1d5db',\r\n }}\r\n >\r\n <span style={{\r\n position: 'absolute',\r\n top: 3,\r\n left: checked ? 21 : 3,\r\n width: 16,\r\n height: 16,\r\n borderRadius: '50%',\r\n backgroundColor: '#ffffff',\r\n boxShadow: '0 1px 3px rgba(0,0,0,0.2)',\r\n transition: 'left 0.2s',\r\n }} />\r\n </span>\r\n <span>{label}</span>\r\n </label>\r\n);\r\n\r\n// Multi-select chip picker — uses inline styles\r\nconst ChipSelect: React.FC<{\r\n options: { title: string; value: string; description?: string }[];\r\n selected: string[];\r\n onChange: (values: string[]) => void;\r\n disabled?: boolean;\r\n}> = ({ options, selected, onChange, disabled }) => (\r\n <div style={{ display: 'flex', flexWrap: 'wrap', gap: 6 }}>\r\n {options.map(opt => {\r\n const isSelected = selected.includes(opt.value);\r\n return (\r\n <button\r\n key={opt.value}\r\n type=\"button\"\r\n onClick={() => {\r\n if (disabled) return;\r\n onChange(isSelected ? selected.filter(v => v !== opt.value) : [...selected, opt.value]);\r\n }}\r\n disabled={disabled}\r\n title={opt.description}\r\n style={{\r\n padding: '4px 10px',\r\n fontSize: 12,\r\n borderRadius: 9999,\r\n border: '1px solid',\r\n cursor: disabled ? 'default' : 'pointer',\r\n transition: 'all 0.15s',\r\n ...(isSelected\r\n ? { backgroundColor: '#dbeafe', borderColor: '#93c5fd', color: '#1d4ed8' }\r\n : { backgroundColor: 'transparent', borderColor: '#e5e7eb', color: '#6b7280' }\r\n ),\r\n }}\r\n >\r\n {opt.title}\r\n </button>\r\n );\r\n })}\r\n </div>\r\n);\r\n\r\nconst inputStyle = {\r\n width: '100%',\r\n padding: '6px 10px',\r\n fontSize: 14,\r\n borderRadius: 6,\r\n border: '1px solid #d1d5db',\r\n backgroundColor: 'transparent',\r\n outline: 'none',\r\n};\r\n\r\nconst labelStyle = {\r\n fontSize: 10,\r\n color: '#9ca3af',\r\n marginBottom: 2,\r\n display: 'block',\r\n};\r\n\r\n// Pill group for date/pass-fail style selectors — inline styles\r\nconst PillGroup: React.FC<{\r\n options: { value: string; label: string }[];\r\n selected: string | undefined;\r\n onChange: (v: string) => void;\r\n disabled?: boolean;\r\n}> = ({ options, selected, onChange, disabled }) => (\r\n <div style={{ display: 'flex', gap: 4, backgroundColor: '#f3f4f6', borderRadius: 6, padding: 4, width: 'fit-content' }}>\r\n {options.map(opt => (\r\n <button\r\n key={opt.value}\r\n type=\"button\"\r\n onClick={() => onChange(opt.value)}\r\n disabled={disabled}\r\n style={{\r\n padding: '6px 12px',\r\n fontSize: 12,\r\n fontWeight: 600,\r\n borderRadius: 4,\r\n border: 'none',\r\n cursor: disabled ? 'default' : 'pointer',\r\n transition: 'all 0.15s',\r\n ...(selected === opt.value\r\n ? { backgroundColor: '#3b82f6', color: '#ffffff', boxShadow: '0 1px 2px rgba(0,0,0,0.1)' }\r\n : { backgroundColor: 'transparent', color: '#6b7280' }\r\n ),\r\n }}\r\n >\r\n {opt.label}\r\n </button>\r\n ))}\r\n </div>\r\n);\r\n\r\nexport const ConditionConfig: React.FC<ConditionConfigProps> = ({\r\n condition: cond,\r\n onChange,\r\n editorProps,\r\n readOnly,\r\n}) => {\r\n const update = (patch: Partial<Condition>) => onChange({ ...cond, ...patch });\r\n\r\n switch (cond.type) {\r\n // ─── VERSION ──────────────────────────────────\r\n case 'version':\r\n return (\r\n <div style={{ display: 'flex', flexDirection: 'column', gap: 12 }}>\r\n <ContainsToggle value={cond.contains} onChange={v => update({ contains: v })} disabled={readOnly} />\r\n {editorProps.versions?.length ? (\r\n <ChipSelect\r\n options={editorProps.versions.map(v => ({ title: v.title, value: v.value || '' }))}\r\n selected={(cond.versions || []).map(v => typeof v === 'string' ? v : (v.value || ''))}\r\n onChange={vals => update({ versions: vals.map(v => ({ value: v, title: editorProps.versions?.find(o => o.value === v)?.title || v })) })}\r\n disabled={readOnly}\r\n />\r\n ) : (\r\n <p style={{ fontSize: 12, color: '#9ca3af', fontStyle: 'italic' }}>No versions available</p>\r\n )}\r\n </div>\r\n );\r\n\r\n // ─── COUNTRY ──────────────────────────────────\r\n case 'country':\r\n return (\r\n <div style={{ display: 'flex', flexDirection: 'column', gap: 12 }}>\r\n <ContainsToggle value={cond.contains} onChange={v => update({ contains: v })} disabled={readOnly} />\r\n <ToggleSwitch\r\n checked={!!cond.useRegions}\r\n onChange={v => update({ useRegions: v })}\r\n label=\"Use regions\"\r\n disabled={readOnly}\r\n />\r\n {cond.useRegions ? (\r\n <ChipSelect\r\n options={REGION_OPTIONS}\r\n selected={cond.regions || []}\r\n onChange={vals => update({ regions: vals })}\r\n disabled={readOnly}\r\n />\r\n ) : (\r\n <CountryPicker\r\n selected={cond.countries || []}\r\n onChange={codes => update({ countries: codes })}\r\n disabled={readOnly}\r\n />\r\n )}\r\n </div>\r\n );\r\n\r\n // ─── VALUE ────────────────────────────────────\r\n case 'value':\r\n return (\r\n <div style={{ display: 'flex', flexDirection: 'column', gap: 12 }}>\r\n <div style={{ display: 'grid', gridTemplateColumns: '1fr 1fr', gap: 8 }}>\r\n <div>\r\n <label style={labelStyle}>Field Name</label>\r\n <input style={inputStyle} value={cond.field || ''} onChange={e => update({ field: e.target.value })} placeholder=\"field_name\" disabled={readOnly} />\r\n </div>\r\n <div>\r\n <label style={labelStyle}>Field Type</label>\r\n <select style={inputStyle} value={cond.fieldType || 'text'} onChange={e => update({ fieldType: e.target.value as any })} disabled={readOnly}>\r\n {FIELD_TYPES.map(ft => <option key={ft.value} value={ft.value}>{ft.title}</option>)}\r\n </select>\r\n </div>\r\n </div>\r\n <div style={{ display: 'grid', gridTemplateColumns: '1fr 1fr', gap: 8 }}>\r\n <div>\r\n <label style={labelStyle}>Operator</label>\r\n <select style={inputStyle} value={cond.validationType || 'equal'} onChange={e => update({ validationType: e.target.value as any })} disabled={readOnly}>\r\n {VALUE_OPERATORS.map(op => <option key={op.value} value={op.value}>{op.title}</option>)}\r\n </select>\r\n </div>\r\n <div>\r\n <label style={labelStyle}>Value</label>\r\n <input style={inputStyle} value={String(cond.value ?? '')} onChange={e => update({ value: e.target.value })} placeholder=\"value\" disabled={readOnly} />\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n\r\n // ─── USER ─────────────────────────────────────\r\n case 'user':\r\n return (\r\n <div style={{ display: 'flex', flexDirection: 'column', gap: 12 }}>\r\n <ChipSelect\r\n options={USER_TYPE_OPTIONS}\r\n selected={cond.userType ? [cond.userType] : []}\r\n onChange={vals => update({ userType: (vals[vals.length - 1] || undefined) as any })}\r\n disabled={readOnly}\r\n />\r\n {cond.userType === 'group' && editorProps.userGroups?.length ? (\r\n <ChipSelect\r\n options={editorProps.userGroups}\r\n selected={cond.groupIds || []}\r\n onChange={vals => update({ groupIds: vals })}\r\n disabled={readOnly}\r\n />\r\n ) : null}\r\n </div>\r\n );\r\n\r\n // ─── DATE ─────────────────────────────────────\r\n case 'date':\r\n return (\r\n <div style={{ display: 'flex', flexDirection: 'column', gap: 12 }}>\r\n <PillGroup\r\n options={[\r\n { value: 'before', label: 'Is Before' },\r\n { value: 'after', label: 'Is After' },\r\n { value: 'between', label: 'Is Between' },\r\n ]}\r\n selected={cond.dateTest}\r\n onChange={v => update({ dateTest: v as any })}\r\n disabled={readOnly}\r\n />\r\n {(cond.dateTest === 'before' || cond.dateTest === 'between') && (\r\n <div>\r\n <label style={labelStyle}>{cond.dateTest === 'between' ? 'Start Date' : 'Before Date'}</label>\r\n <input type=\"date\" style={inputStyle} value={cond.beforeDate || ''} onChange={e => update({ beforeDate: e.target.value })} disabled={readOnly} />\r\n </div>\r\n )}\r\n {(cond.dateTest === 'after' || cond.dateTest === 'between') && (\r\n <div>\r\n <label style={labelStyle}>{cond.dateTest === 'between' ? 'End Date' : 'After Date'}</label>\r\n <input type=\"date\" style={inputStyle} value={cond.afterDate || ''} onChange={e => update({ afterDate: e.target.value })} disabled={readOnly} />\r\n </div>\r\n )}\r\n </div>\r\n );\r\n\r\n // ─── DEVICE ───────────────────────────────────\r\n case 'device':\r\n return (\r\n <div style={{ display: 'flex', flexDirection: 'column', gap: 12 }}>\r\n <ContainsToggle value={cond.contains} onChange={v => update({ contains: v })} disabled={readOnly} />\r\n <ChipSelect\r\n options={DISPLAY_OPTIONS}\r\n selected={cond.displays || []}\r\n onChange={vals => update({ displays: vals })}\r\n disabled={readOnly}\r\n />\r\n </div>\r\n );\r\n\r\n // ─── TAG ──────────────────────────────────────\r\n case 'tag':\r\n return (\r\n <div style={{ display: 'flex', flexDirection: 'column', gap: 12 }}>\r\n <ContainsToggle value={cond.contains} onChange={v => update({ contains: v })} disabled={readOnly} />\r\n {editorProps.tags?.length ? (\r\n <ChipSelect\r\n options={editorProps.tags.map(t => ({ title: t, value: t }))}\r\n selected={cond.tags || []}\r\n onChange={vals => update({ tags: vals })}\r\n disabled={readOnly}\r\n />\r\n ) : (\r\n <input style={inputStyle} value={(cond.tags || []).join(', ')} onChange={e => update({ tags: e.target.value.split(',').map(s => s.trim()).filter(Boolean) })} placeholder=\"tag1, tag2, …\" disabled={readOnly} />\r\n )}\r\n </div>\r\n );\r\n\r\n // ─── FACET ────────────────────────────────────\r\n case 'facet': {\r\n const facets = editorProps.facets || [];\r\n const selectedFacet = facets.find(f => f.key === cond.facetKey);\r\n return (\r\n <div style={{ display: 'flex', flexDirection: 'column', gap: 12 }}>\r\n <ContainsToggle\r\n value={cond.contains !== false}\r\n onChange={v => update({ contains: v })}\r\n disabled={readOnly}\r\n />\r\n <div>\r\n <label style={labelStyle}>Facet</label>\r\n {facets.length ? (\r\n <select\r\n style={inputStyle}\r\n value={cond.facetKey || ''}\r\n onChange={e => update({ facetKey: e.target.value || undefined, values: [], valueKeys: undefined })}\r\n disabled={readOnly}\r\n >\r\n <option value=\"\">Select a facet…</option>\r\n {facets.map(f => (\r\n <option key={f.key} value={f.key}>\r\n {f.name}{f.cardinality === 'multi' ? ' (multi)' : ''}\r\n </option>\r\n ))}\r\n </select>\r\n ) : (\r\n <p style={{ fontSize: 12, color: '#9ca3af', fontStyle: 'italic' }}>\r\n No facets available for this collection\r\n </p>\r\n )}\r\n </div>\r\n {selectedFacet && (\r\n <div>\r\n <label style={labelStyle}>Value{selectedFacet.cardinality === 'multi' ? 's' : ''}</label>\r\n {selectedFacet.values.length ? (\r\n <ChipSelect\r\n options={selectedFacet.values.map(v => ({\r\n title: v.name,\r\n value: v.key,\r\n description: v.description || undefined,\r\n }))}\r\n selected={cond.values ?? cond.valueKeys ?? []}\r\n onChange={vals => update({ values: vals, valueKeys: undefined })}\r\n disabled={readOnly}\r\n />\r\n ) : (\r\n <p style={{ fontSize: 12, color: '#9ca3af', fontStyle: 'italic' }}>\r\n This facet has no values defined\r\n </p>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n }\r\n\r\n // ─── GEOFENCE ─────────────────────────────────\r\n case 'geofence':\r\n return (\r\n <div style={{ display: 'flex', flexDirection: 'column', gap: 12 }}>\r\n <ContainsToggle value={cond.contains} onChange={v => update({ contains: v })} trueLabel=\"Is Inside Of\" falseLabel=\"Is Outside Of\" disabled={readOnly} />\r\n <div style={{ display: 'grid', gridTemplateColumns: '1fr 1fr', gap: 8 }}>\r\n {[\r\n { label: 'Latitude 1 (NW)', key: 'lat1' as const },\r\n { label: 'Longitude 1 (NW)', key: 'lng1' as const },\r\n { label: 'Latitude 2 (SE)', key: 'lat2' as const },\r\n { label: 'Longitude 2 (SE)', key: 'lng2' as const },\r\n ].map(f => (\r\n <div key={f.key}>\r\n <label style={labelStyle}>{f.label}</label>\r\n <input\r\n type=\"number\"\r\n step=\"any\"\r\n style={inputStyle}\r\n value={cond[f.key] ?? ''}\r\n onChange={e => update({ [f.key]: e.target.value ? parseFloat(e.target.value) : undefined })}\r\n disabled={readOnly}\r\n />\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n\r\n // ─── PRODUCT ──────────────────────────────────\r\n case 'product':\r\n return (\r\n <div style={{ display: 'flex', flexDirection: 'column', gap: 12 }}>\r\n <ContainsToggle value={cond.contains} onChange={v => update({ contains: v })} disabled={readOnly} />\r\n {editorProps.products?.length ? (\r\n <ChipSelect\r\n options={editorProps.products}\r\n selected={cond.productIds || []}\r\n onChange={vals => update({ productIds: vals })}\r\n disabled={readOnly}\r\n />\r\n ) : (\r\n <input style={inputStyle} value={(cond.productIds || []).join(', ')} onChange={e => update({ productIds: e.target.value.split(',').map(s => s.trim()).filter(Boolean) })} placeholder=\"product-id-1, product-id-2, …\" disabled={readOnly} />\r\n )}\r\n </div>\r\n );\r\n\r\n // ─── ITEM STATUS ──────────────────────────────\r\n case 'itemStatus':\r\n return (\r\n <ChipSelect\r\n options={ITEM_STATUS_OPTIONS}\r\n selected={cond.statusType ? [cond.statusType] : []}\r\n onChange={vals => update({ statusType: (vals[vals.length - 1] || undefined) as any })}\r\n disabled={readOnly}\r\n />\r\n );\r\n\r\n // ─── CONDITION REFERENCE ──────────────────────\r\n case 'condition':\r\n return (\r\n <div style={{ display: 'flex', flexDirection: 'column', gap: 12 }}>\r\n {editorProps.savedConditions?.length ? (\r\n <select style={inputStyle} value={cond.conditionId || ''} onChange={e => update({ conditionId: e.target.value })} disabled={readOnly}>\r\n <option value=\"\">Select a condition…</option>\r\n {editorProps.savedConditions.map(c => <option key={c.value} value={c.value}>{c.title}</option>)}\r\n </select>\r\n ) : (\r\n <input style={inputStyle} value={cond.conditionId || ''} onChange={e => update({ conditionId: e.target.value })} placeholder=\"Condition ID\" disabled={readOnly} />\r\n )}\r\n <PillGroup\r\n options={[\r\n { value: 'true', label: 'Passes' },\r\n { value: 'false', label: 'Fails' },\r\n ]}\r\n selected={cond.passes === true ? 'true' : cond.passes === false ? 'false' : undefined}\r\n onChange={v => update({ passes: v === 'true' })}\r\n disabled={readOnly}\r\n />\r\n </div>\r\n );\r\n\r\n default:\r\n return <p style={{ fontSize: 12, color: '#9ca3af', fontStyle: 'italic' }}>Unknown condition type</p>;\r\n }\r\n};\r\n","// =============================================================================\r\n// CONDITIONS EDITOR — Single Condition Card\r\n// =============================================================================\r\n\r\nimport React, { useState } from 'react';\r\nimport type { Condition, ConditionType, ConditionsEditorProps } from './types';\r\nimport { getConditionMeta, getConditionIcon, getConditionSummary } from './conditionMeta';\r\nimport { ConditionTypePicker } from './ConditionTypePicker';\r\nimport { ConditionConfig } from './ConditionConfig';\r\nimport { cn } from '../../utils/cn';\r\nimport { ChevronDown, ChevronRight, Trash2, RefreshCw } from 'lucide-react';\r\n\r\ninterface ConditionCardProps {\r\n condition: Condition;\r\n index: number;\r\n onChange: (updated: Condition) => void;\r\n onDelete: () => void;\r\n editorProps: Pick<ConditionsEditorProps, 'versions' | 'tags' | 'products' | 'savedConditions' | 'userGroups' | 'facets'>;\r\n readOnly?: boolean;\r\n}\r\n\r\nexport const ConditionCard: React.FC<ConditionCardProps> = ({\r\n condition,\r\n index,\r\n onChange,\r\n onDelete,\r\n editorProps,\r\n readOnly,\r\n}) => {\r\n const [expanded, setExpanded] = useState(!condition.type);\r\n const meta = getConditionMeta(condition.type);\r\n const Icon = getConditionIcon(condition.type);\r\n const summary = getConditionSummary(condition, { savedConditions: editorProps.savedConditions, facets: editorProps.facets });\r\n\r\n const handleSelectType = (type: ConditionType) => {\r\n onChange({ ...condition, type });\r\n setExpanded(true);\r\n };\r\n\r\n return (\r\n <div className=\"rounded-lg border border-gray-200 dark:border-gray-700 shadow-sm transition-shadow hover:shadow-md\">\r\n {/* Header */}\r\n <div\r\n className={cn(\r\n 'flex items-center gap-3 px-4 py-3 cursor-pointer select-none transition-colors',\r\n 'hover:bg-gray-50 dark:hover:bg-gray-800/50'\r\n )}\r\n style={meta ? {\r\n background: `linear-gradient(90deg, ${meta.color}08 0%, transparent 100%)`,\r\n } : undefined}\r\n onClick={() => setExpanded(!expanded)}\r\n >\r\n {/* Icon */}\r\n <div\r\n className=\"w-8 h-8 rounded-full flex items-center justify-center flex-shrink-0\"\r\n style={meta ? { backgroundColor: `${meta.color}18`, color: meta.color } : { backgroundColor: '#e5e7eb' }}\r\n >\r\n <Icon className=\"w-4 h-4\" />\r\n </div>\r\n\r\n {/* Title & summary */}\r\n <div className=\"flex-1 min-w-0\">\r\n <p className=\"text-sm font-medium text-gray-800 dark:text-gray-200 truncate\">\r\n {meta?.title || 'Select Condition Type'}\r\n </p>\r\n <p className=\"text-[11px] text-gray-500 dark:text-gray-400 truncate\">{summary}</p>\r\n </div>\r\n\r\n {/* Actions */}\r\n <div className=\"flex items-center gap-1 flex-shrink-0\">\r\n {condition.type && !readOnly && (\r\n <button\r\n onClick={(e) => { e.stopPropagation(); onChange({ type: null }); }}\r\n className=\"p-1 rounded hover:bg-gray-200 dark:hover:bg-gray-700 transition-colors\"\r\n title=\"Change type\"\r\n >\r\n <RefreshCw className=\"w-3.5 h-3.5 text-gray-400\" />\r\n </button>\r\n )}\r\n {!readOnly && (\r\n <button\r\n onClick={(e) => { e.stopPropagation(); onDelete(); }}\r\n className=\"p-1 rounded hover:bg-red-100 dark:hover:bg-red-900/30 transition-colors\"\r\n title=\"Delete\"\r\n >\r\n <Trash2 className=\"w-3.5 h-3.5 text-red-400\" />\r\n </button>\r\n )}\r\n {expanded ? <ChevronDown className=\"w-4 h-4 text-gray-400\" /> : <ChevronRight className=\"w-4 h-4 text-gray-400\" />}\r\n </div>\r\n </div>\r\n\r\n {/* Body */}\r\n {expanded && (\r\n <div className=\"border-t border-gray-100 dark:border-gray-800 px-4 py-3\">\r\n {!condition.type ? (\r\n <ConditionTypePicker onSelect={handleSelectType} />\r\n ) : (\r\n <div className=\"space-y-3\">\r\n {meta?.helpText && (\r\n <p className=\"text-[11px] text-gray-400 dark:text-gray-500 italic\">{meta.helpText}</p>\r\n )}\r\n <ConditionConfig\r\n condition={condition}\r\n onChange={onChange}\r\n editorProps={editorProps}\r\n readOnly={readOnly}\r\n />\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n","// =============================================================================\r\n// CONDITIONS EDITOR — Main Component\r\n// =============================================================================\r\n// Supports inline and dialog modes. Dialog mode shows a summary trigger and\r\n// opens a modal with the full editor.\r\n\r\nimport React, { useCallback, useState } from 'react';\r\nimport type { Condition, ConditionGroup, ConditionsEditorProps } from './types';\r\nimport { ConditionCard } from './ConditionCard';\r\nimport { getConditionMeta, getConditionSummary } from './conditionMeta';\r\nimport { useFacets } from './useFacets';\r\nimport { cn } from '../../utils/cn';\r\nimport { Plus, GitBranch, Filter, X, ChevronRight } from 'lucide-react';\r\n\r\n// ---------------------------------------------------------------------------\r\n// Summary badge for dialog trigger\r\n// ---------------------------------------------------------------------------\r\nconst ConditionsSummary: React.FC<{\r\n value: ConditionGroup;\r\n savedConditions?: { title: string; value: string }[];\r\n facets?: import('./types').FacetOption[];\r\n}> = ({ value, savedConditions, facets }) => {\r\n const count = value.conditions.filter(c => c.type).length;\r\n if (count === 0) {\r\n return (\r\n <div className=\"flex items-center gap-2 text-sm text-gray-500 dark:text-gray-400\">\r\n <Filter className=\"w-4 h-4\" />\r\n <span>No conditions set</span>\r\n <ChevronRight className=\"w-4 h-4 ml-auto\" />\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div className=\"space-y-1\">\r\n <div className=\"flex items-center gap-2 text-xs font-medium text-gray-500 dark:text-gray-400\">\r\n <Filter className=\"w-3.5 h-3.5\" />\r\n {count} condition{count !== 1 ? 's' : ''} · {value.type === 'and' ? 'Match ALL' : 'Match ANY'}\r\n <ChevronRight className=\"w-4 h-4 ml-auto\" />\r\n </div>\r\n <div className=\"flex flex-wrap gap-1.5\">\r\n {value.conditions.filter(c => c.type).slice(0, 5).map((cond, i) => {\r\n const meta = getConditionMeta(cond.type);\r\n return (\r\n <span\r\n key={i}\r\n className=\"inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-[11px] font-medium\"\r\n style={{\r\n backgroundColor: meta ? `${meta.color}15` : '#e5e7eb',\r\n color: meta?.color || '#6b7280',\r\n }}\r\n >\r\n {getConditionSummary(cond, { savedConditions, facets })}\r\n </span>\r\n );\r\n })}\r\n {count > 5 && (\r\n <span className=\"inline-flex items-center px-2 py-0.5 rounded-full text-[11px] font-medium bg-gray-100 dark:bg-gray-800 text-gray-500\">\r\n +{count - 5} more\r\n </span>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\n// ---------------------------------------------------------------------------\r\n// Lightweight dialog\r\n// ---------------------------------------------------------------------------\r\nconst EditorDialog: React.FC<{\r\n open: boolean;\r\n onClose: () => void;\r\n children: React.ReactNode;\r\n}> = ({ open, onClose, children }) => {\r\n if (!open) return null;\r\n return (\r\n <div className=\"fixed inset-0 z-50 flex items-center justify-center\">\r\n <div className=\"absolute inset-0 bg-black/50 backdrop-blur-sm\" onClick={onClose} />\r\n <div className=\"relative z-10 w-full max-w-2xl max-h-[80vh] bg-white dark:bg-gray-900 rounded-xl shadow-2xl border border-gray-200 dark:border-gray-700 flex flex-col overflow-hidden mx-4\">\r\n <div className=\"flex items-center justify-between px-4 py-3 border-b border-gray-200 dark:border-gray-700\">\r\n <h3 className=\"text-sm font-semibold text-gray-900 dark:text-gray-100\">\r\n Edit Conditions\r\n </h3>\r\n <button\r\n onClick={onClose}\r\n className=\"p-1 rounded hover:bg-gray-100 dark:hover:bg-gray-800 transition-colors\"\r\n >\r\n <X className=\"w-4 h-4 text-gray-500\" />\r\n </button>\r\n </div>\r\n <div className=\"flex-1 overflow-y-auto p-4\">\r\n {children}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\n// ---------------------------------------------------------------------------\r\n// Inner editor content (shared by both modes)\r\n// ---------------------------------------------------------------------------\r\nconst ConditionsEditorContent: React.FC<Omit<ConditionsEditorProps, 'mode' | 'trigger' | 'open' | 'onClose'>> = ({\r\n value,\r\n onChange,\r\n isGlobal,\r\n versions,\r\n tags,\r\n products,\r\n savedConditions,\r\n userGroups,\r\n facets,\r\n collectionId,\r\n getFacets,\r\n readOnly = false,\r\n className,\r\n}) => {\r\n const resolvedFacets = useFacets(collectionId, facets, getFacets);\r\n const editorProps = { versions, tags, products, savedConditions, userGroups, facets: resolvedFacets };\r\n\r\n const updateCondition = useCallback((index: number, updated: Condition) => {\r\n const next = { ...value, conditions: [...value.conditions] };\r\n next.conditions[index] = updated;\r\n onChange(next);\r\n }, [value, onChange]);\r\n\r\n const deleteCondition = useCallback((index: number) => {\r\n const next = { ...value, conditions: value.conditions.filter((_, i) => i !== index) };\r\n onChange(next);\r\n }, [value, onChange]);\r\n\r\n const addCondition = useCallback(() => {\r\n const next = { ...value, conditions: [...value.conditions, {} as Condition] };\r\n onChange(next);\r\n }, [value, onChange]);\r\n\r\n const toggleLogic = useCallback((logic: 'and' | 'or') => {\r\n onChange({ ...value, type: logic });\r\n }, [value, onChange]);\r\n\r\n return (\r\n <div className={cn('smartlinks-ui-conditions-editor space-y-4', className)}>\r\n {/* Global settings */}\r\n {isGlobal && (\r\n <div className=\"rounded-lg border border-gray-200 dark:border-gray-700 p-4 space-y-3\">\r\n <input\r\n className=\"w-full px-3 py-2 text-sm rounded-md border border-gray-300 dark:border-gray-600 bg-transparent focus:outline-none focus:ring-1 focus:ring-blue-500\"\r\n value={value.title || ''}\r\n onChange={e => onChange({ ...value, title: e.target.value })}\r\n placeholder=\"Condition Title\"\r\n disabled={readOnly}\r\n />\r\n <label className=\"flex items-center gap-2 text-sm text-gray-600 dark:text-gray-400 cursor-pointer\">\r\n <button\r\n onClick={() => onChange({ ...value, disabled: !value.disabled })}\r\n disabled={readOnly}\r\n className={cn(\r\n 'w-9 h-5 rounded-full transition-colors relative',\r\n value.disabled ? 'bg-blue-500' : 'bg-gray-300 dark:bg-gray-600'\r\n )}\r\n >\r\n <span className={cn(\r\n 'absolute top-0.5 w-4 h-4 rounded-full bg-white shadow transition-transform',\r\n value.disabled ? 'translate-x-4' : 'translate-x-0.5'\r\n )} />\r\n </button>\r\n Disabled / Hidden\r\n </label>\r\n </div>\r\n )}\r\n\r\n {/* Logic type toggle */}\r\n <div style={{ borderRadius: 8, border: '1px solid #e5e7eb', padding: 16 }}>\r\n <div style={{ display: 'flex', alignItems: 'center', gap: 6, fontSize: 12, fontWeight: 500, color: '#6b7280', marginBottom: 12 }}>\r\n <GitBranch className=\"w-3.5 h-3.5\" />\r\n Logic Type\r\n </div>\r\n <div style={{ display: 'flex', gap: 4, backgroundColor: '#f3f4f6', borderRadius: 6, padding: 4 }}>\r\n {([{ v: 'and' as const, l: 'Match ALL (AND)' }, { v: 'or' as const, l: 'Match ANY (OR)' }]).map(opt => (\r\n <button\r\n key={opt.v}\r\n type=\"button\"\r\n onClick={() => toggleLogic(opt.v)}\r\n disabled={readOnly}\r\n style={{\r\n flex: 1,\r\n padding: '8px 12px',\r\n fontSize: 14,\r\n fontWeight: 600,\r\n borderRadius: 4,\r\n border: 'none',\r\n cursor: readOnly ? 'default' : 'pointer',\r\n transition: 'all 0.15s',\r\n ...(value.type === opt.v\r\n ? { backgroundColor: '#3b82f6', color: '#ffffff', boxShadow: '0 1px 2px rgba(0,0,0,0.1)' }\r\n : { backgroundColor: 'transparent', color: '#6b7280' }\r\n ),\r\n }}\r\n >\r\n {opt.l}\r\n </button>\r\n ))}\r\n </div>\r\n </div>\r\n\r\n {/* Conditions header */}\r\n <div className=\"flex items-center gap-2\">\r\n <p className=\"text-sm font-semibold text-gray-700 dark:text-gray-300\">Conditions</p>\r\n <span className=\"px-2 py-0.5 text-[10px] font-medium rounded-full bg-blue-100 dark:bg-blue-900/40 text-blue-700 dark:text-blue-300\">\r\n {value.conditions.length}\r\n </span>\r\n </div>\r\n\r\n {/* Condition cards */}\r\n <div className=\"space-y-3\">\r\n {value.conditions.map((cond, idx) => (\r\n <ConditionCard\r\n key={idx}\r\n condition={cond}\r\n index={idx}\r\n onChange={(updated) => updateCondition(idx, updated)}\r\n onDelete={() => deleteCondition(idx)}\r\n editorProps={editorProps}\r\n readOnly={readOnly}\r\n />\r\n ))}\r\n </div>\r\n\r\n {/* Add button */}\r\n {!readOnly && (\r\n <button\r\n onClick={addCondition}\r\n className={cn(\r\n 'w-full flex items-center justify-center gap-2 py-3 rounded-lg',\r\n 'border-2 border-dashed border-gray-300 dark:border-gray-600',\r\n 'text-sm text-gray-500 dark:text-gray-400',\r\n 'hover:border-blue-400 dark:hover:border-blue-500 hover:text-blue-500 dark:hover:text-blue-400',\r\n 'transition-colors cursor-pointer'\r\n )}\r\n >\r\n <Plus className=\"w-4 h-4\" />\r\n Add New Condition\r\n </button>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\n// ---------------------------------------------------------------------------\r\n// Public API\r\n// ---------------------------------------------------------------------------\r\nexport const ConditionsEditor: React.FC<ConditionsEditorProps> = (props) => {\r\n const { mode = 'inline', trigger, open: controlledOpen, onClose, value, savedConditions, facets, collectionId, getFacets, className, ...rest } = props;\r\n\r\n const [internalOpen, setInternalOpen] = useState(false);\r\n const isOpen = controlledOpen ?? internalOpen;\r\n\r\n // Resolve facets so the collapsed dialog summary chips can render names too.\r\n const resolvedFacets = useFacets(collectionId, facets, getFacets);\r\n\r\n const handleClose = useCallback(() => {\r\n setInternalOpen(false);\r\n onClose?.();\r\n }, [onClose]);\r\n\r\n // Inline mode — render editor directly\r\n if (mode === 'inline') {\r\n return (\r\n <ConditionsEditorContent\r\n value={value}\r\n savedConditions={savedConditions}\r\n facets={facets}\r\n collectionId={collectionId}\r\n getFacets={getFacets}\r\n className={className}\r\n {...rest}\r\n />\r\n );\r\n }\r\n\r\n // Dialog mode\r\n const triggerElement = trigger || (\r\n <div className={cn(\r\n 'rounded-lg border border-gray-200 dark:border-gray-700 p-3 cursor-pointer',\r\n 'hover:border-gray-300 dark:hover:border-gray-600 transition-colors',\r\n className,\r\n )}>\r\n <ConditionsSummary value={value} savedConditions={savedConditions} facets={resolvedFacets} />\r\n </div>\r\n );\r\n\r\n return (\r\n <>\r\n <span onClick={() => setInternalOpen(true)} className=\"cursor-pointer\">\r\n {triggerElement}\r\n </span>\r\n <EditorDialog open={isOpen} onClose={handleClose}>\r\n <ConditionsEditorContent\r\n value={value}\r\n savedConditions={savedConditions}\r\n facets={facets}\r\n collectionId={collectionId}\r\n getFacets={getFacets}\r\n {...rest}\r\n />\r\n </EditorDialog>\r\n </>\r\n );\r\n};\r\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/RecordsAdmin/data/scopeBridge.ts","../src/components/RecordsAdmin/data/records.ts"],"names":[],"mappings":"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","file":"chunk-KA4MKRHL.js","sourcesContent":["// =============================================================================\r\n// scopeBridge — Convert between our UI `ParsedRef` and the SDK record anchors.\r\n//\r\n// SDK 1.10.2 flattened `AppRecord`: anchor IDs (`productId`, `variantId`,\r\n// `batchId`, `proofId`) live at the top level and the nested `RecordScope`\r\n// type was removed. Facet selection moved to `facetRule` (rule records),\r\n// handled separately via the FacetRuleEditor.\r\n//\r\n// `parsedRefToScope` keeps its public name (it's re-exported from the\r\n// package entrypoint) but now returns the flat anchor object that Upsert /\r\n// Bulk inputs accept directly.\r\n// =============================================================================\r\nimport type { RecordTarget } from './sdkTypes';\r\nimport type { ParsedRef } from '../types';\r\n\r\n/** Flat anchor shape — matches `UpsertRecordInput` / `BulkUpsertItem`. */\r\nexport interface RecordAnchors {\r\n productId?: string | null;\r\n variantId?: string | null;\r\n batchId?: string | null;\r\n proofId?: string | null;\r\n}\r\n\r\n/**\r\n * Project a `ParsedRef` to the flat anchor IDs the SDK writes. Facet\r\n * components on the ref are intentionally ignored — facet targeting now\r\n * lives on `facetRule` (rule records), not as a record anchor.\r\n */\r\nexport const parsedRefToScope = (ref: ParsedRef): RecordAnchors => {\r\n const anchors: RecordAnchors = {};\r\n if (ref.productId) anchors.productId = ref.productId;\r\n if (ref.variantId) anchors.variantId = ref.variantId;\r\n if (ref.batchId) anchors.batchId = ref.batchId;\r\n if (ref.proofId) anchors.proofId = ref.proofId;\r\n return anchors;\r\n};\r\n\r\nexport const parsedRefToTarget = (ref: ParsedRef): RecordTarget => {\r\n const target: RecordTarget = {};\r\n if (ref.productId) target.productId = ref.productId;\r\n if (ref.variantId) target.variantId = ref.variantId;\r\n if (ref.batchId) target.batchId = ref.batchId;\r\n if (ref.proofId) target.proofId = ref.proofId;\r\n if (ref.facetId && ref.facetValue) {\r\n target.facets = { [ref.facetId]: [ref.facetValue] };\r\n }\r\n return target;\r\n};\r\n\r\n/**\r\n * True when two anchor sets refer to the same node. Used to decide\r\n * \"self\" vs \"inherited\" when consuming `match()` results: compare the\r\n * winning record's flat anchor IDs against the editing scope.\r\n */\r\nexport const scopesEqual = (a: RecordAnchors, b: RecordAnchors): boolean => {\r\n if ((a.productId ?? null) !== (b.productId ?? null)) return false;\r\n if ((a.variantId ?? null) !== (b.variantId ?? null)) return false;\r\n if ((a.batchId ?? null) !== (b.batchId ?? null)) return false;\r\n if ((a.proofId ?? null) !== (b.proofId ?? null)) return false;\r\n return true;\r\n};","// =============================================================================\r\n// Thin wrappers over SL.app.records.* — always admin: true here.\r\n//\r\n// As of `@proveanything/smartlinks` 1.9.0 the records surface ships a proper\r\n// `upsert()`, server-side `match()`, and atomic `bulkUpsert` / `bulkDelete`.\r\n// We delegate to those rather than rolling our own list+update sequences,\r\n// which were racy and ignored facet AND-of-OR semantics.\r\n//\r\n// Identity model (1.10.3+): every record has a stable UUID `id`. The shell\r\n// addresses existing records by id (`update`, `remove`); only genuinely new\r\n// records go via `upsert` (or `create`). We deliberately do NOT synthesise\r\n// a `ref` from anchor IDs anymore — anchors alone are sufficient for the\r\n// server to address the record, and a synthetic ref masks bugs by making\r\n// the editor \"find\" records that don't exist yet.\r\n// =============================================================================\r\nimport type {\r\n AppRecord, RecordTarget, BulkUpsertItem, BulkDeleteResult,\r\n MatchResult, FacetRule,\r\n} from './sdkTypes';\r\nimport type { ParsedRef, SmartLinksSDK } from '../types';\r\nimport { parsedRefToScope, type RecordAnchors } from './scopeBridge';\r\n\r\nexport interface RecordsCtx {\r\n SL: SmartLinksSDK;\r\n collectionId: string;\r\n appId: string;\r\n /** Optional — when omitted, records are stored against the app id alone\r\n * (no type qualifier). Set this only when an app uses multiple record types\r\n * and needs to query/scope by type. */\r\n recordType?: string;\r\n}\r\n\r\n/**\r\n * Shape of a single record write. SDK 1.10.2 takes flat anchor IDs\r\n * directly on the upsert payload (`productId`, `variantId`, `batchId`,\r\n * `proofId`); the legacy nested `scope` object is gone. Set `facetRule`\r\n * for rule records — mutually exclusive with anchor IDs.\r\n */\r\nexport interface RecordWrite<T = unknown> {\r\n /**\r\n * Optional caller-supplied external ref (e.g. a SKU or user-typed key).\r\n * When omitted the server addresses the record by anchors / facetRule\r\n * alone — we no longer synthesise one from anchor IDs client-side.\r\n */\r\n ref?: string;\r\n /** Flat anchor IDs. Drives specificity and `match()` server-side. */\r\n scope: RecordAnchors;\r\n data: T;\r\n visibility?: 'public' | 'owner' | 'admin';\r\n status?: string;\r\n startsAt?: string | null;\r\n expiresAt?: string | null;\r\n customId?: string;\r\n sourceSystem?: string;\r\n /**\r\n * Optional facet rule. When set, the record is targeted via this rule and\r\n * anchor IDs must be empty (SDK enforces mutual exclusion). Used by\r\n * the rule editor / Targeting section.\r\n */\r\n facetRule?: FacetRule | null;\r\n}\r\n\r\nexport const listRecords = async (\r\n ctx: RecordsCtx,\r\n params: { ref?: string; refPrefix?: string; q?: string; limit?: number; offset?: number; sort?: string } = {},\r\n): Promise<{ data: AppRecord[]; total: number; hasMore: boolean }> => {\r\n const { limit = 100, offset, ref, refPrefix, q, sort } = params;\r\n const res = await ctx.SL.app.records.list(\r\n ctx.collectionId,\r\n ctx.appId,\r\n {\r\n ...(ctx.recordType ? { recordType: ctx.recordType } : {}),\r\n limit, offset, ref, refPrefix, q, sort,\r\n },\r\n true,\r\n );\r\n return {\r\n data: res?.data ?? [],\r\n total: res?.pagination?.total ?? (res?.data?.length ?? 0),\r\n hasMore: res?.pagination?.hasMore ?? false,\r\n };\r\n};\r\n\r\n/**\r\n * Look up a single record by its UUID id. The id-primary read path used by\r\n * deep-link restore (`?recordId=`).\r\n */\r\nexport const getRecordById = async (\r\n ctx: RecordsCtx,\r\n recordId: string,\r\n): Promise<AppRecord | null> => {\r\n try {\r\n const record = await ctx.SL.app.records.get(ctx.collectionId, ctx.appId, recordId, true);\r\n return record;\r\n } catch (error) {\r\n // Some host environments appear to lag the id-primary `get()` path even\r\n // though the same record is visible in `list()`. Fall back to a bounded\r\n // scan so item selection still resolves instead of looking dead.\r\n // eslint-disable-next-line no-console\r\n console.warn('[RecordsAdmin/getRecordById] direct get failed, falling back to list scan', {\r\n recordId,\r\n error: error instanceof Error ? error.message : String(error),\r\n });\r\n let offset = 0;\r\n const limit = 100;\r\n for (let page = 0; page < 10; page += 1) {\r\n const res = await listRecords(ctx, { limit, offset }).catch(() => null);\r\n const hit = res?.data.find((rec) => rec.id === recordId) ?? null;\r\n if (hit) {\r\n return hit;\r\n }\r\n if (!res?.hasMore) break;\r\n offset += res.data.length;\r\n }\r\n // eslint-disable-next-line no-console\r\n console.warn('[RecordsAdmin/getRecordById] record not found after fallback scan', { recordId });\r\n return null;\r\n }\r\n};\r\n\r\n/**\r\n * Create-or-update by (anchors + recordType) — used when we don't yet know\r\n * the record's UUID id. The server addresses the row by anchors (or the\r\n * supplied `ref`/`facetRule`) and returns the row with its stable `id`.\r\n *\r\n * Prefer `updateRecord(ctx, id, …)` whenever an id is already in hand:\r\n * it's an unambiguous PATCH against a known row and never accidentally\r\n * resurrects a sibling at the same anchor.\r\n */\r\nexport const upsertRecord = async <T,>(\r\n ctx: RecordsCtx,\r\n write: RecordWrite<T>,\r\n): Promise<{ record: AppRecord; isCreate: boolean }> => {\r\n const payload: Record<string, unknown> = {\r\n ...(ctx.recordType ? { recordType: ctx.recordType } : {}),\r\n data: write.data as Record<string, unknown>,\r\n status: write.status,\r\n startsAt: write.startsAt,\r\n expiresAt: write.expiresAt,\r\n customId: write.customId,\r\n sourceSystem: write.sourceSystem,\r\n };\r\n // Only send `ref` when the caller supplied one explicitly (external key\r\n // such as a SKU). We no longer synthesise one from anchors.\r\n if (write.ref) payload.ref = write.ref;\r\n\r\n // SDK 1.10.3 enforces mutual exclusion between anchor IDs and `facetRule`.\r\n // Send exactly one. When a rule is supplied the server resolves matches\r\n // against it; otherwise the flat anchor IDs drive specificity.\r\n if (write.facetRule && write.facetRule.all && write.facetRule.all.length > 0) {\r\n payload.facetRule = write.facetRule;\r\n } else {\r\n if (write.scope.productId) payload.productId = write.scope.productId;\r\n if (write.scope.variantId) payload.variantId = write.scope.variantId;\r\n if (write.scope.batchId) payload.batchId = write.scope.batchId;\r\n if (write.scope.proofId) payload.proofId = write.scope.proofId;\r\n }\r\n const res = await ctx.SL.app.records.upsert(\r\n ctx.collectionId, ctx.appId, payload as Parameters<typeof ctx.SL.app.records.upsert>[2],\r\n );\r\n return { record: res, isCreate: !!res?.created };\r\n};\r\n\r\n/**\r\n * Create a brand-new record. Use this for collection-cardinality items\r\n * where each save must produce a distinct row (no upsert key collision).\r\n * Unlike `upsert`, the server allows omitting `ref` here — every call\r\n * inserts a new row and returns its UUID.\r\n */\r\nexport const createRecord = async <T,>(\r\n ctx: RecordsCtx,\r\n write: RecordWrite<T>,\r\n): Promise<AppRecord> => {\r\n const payload: Record<string, unknown> = {\r\n ...(ctx.recordType ? { recordType: ctx.recordType } : {}),\r\n data: write.data as Record<string, unknown>,\r\n status: write.status,\r\n startsAt: write.startsAt,\r\n expiresAt: write.expiresAt,\r\n customId: write.customId,\r\n sourceSystem: write.sourceSystem,\r\n };\r\n if (write.ref) payload.ref = write.ref;\r\n if (write.facetRule && write.facetRule.all && write.facetRule.all.length > 0) {\r\n payload.facetRule = write.facetRule;\r\n } else {\r\n if (write.scope.productId) payload.productId = write.scope.productId;\r\n if (write.scope.variantId) payload.variantId = write.scope.variantId;\r\n if (write.scope.batchId) payload.batchId = write.scope.batchId;\r\n if (write.scope.proofId) payload.proofId = write.scope.proofId;\r\n }\r\n return ctx.SL.app.records.create(\r\n ctx.collectionId, ctx.appId,\r\n payload as Parameters<typeof ctx.SL.app.records.create>[2],\r\n true,\r\n );\r\n};\r\n\r\n/**\r\n * PATCH an existing record by its UUID id. The id-primary save path —\r\n * preferred over `upsertRecord` whenever the resolver has handed us a\r\n * `recordId`. Anchors are passed through verbatim; pass `null` for an\r\n * anchor to clear it.\r\n */\r\nexport const updateRecord = async <T,>(\r\n ctx: RecordsCtx,\r\n recordId: string,\r\n patch: {\r\n data?: T;\r\n scope?: RecordAnchors;\r\n facetRule?: FacetRule | null;\r\n status?: string;\r\n startsAt?: string | null;\r\n expiresAt?: string | null;\r\n },\r\n): Promise<AppRecord> => {\r\n const payload: Record<string, unknown> = {\r\n ...(ctx.recordType ? { recordType: ctx.recordType } : {}),\r\n };\r\n if (patch.data !== undefined) payload.data = patch.data as Record<string, unknown>;\r\n if (patch.status !== undefined) payload.status = patch.status;\r\n if (patch.startsAt !== undefined) payload.startsAt = patch.startsAt;\r\n if (patch.expiresAt !== undefined) payload.expiresAt = patch.expiresAt;\r\n if (patch.scope) {\r\n if (patch.scope.productId !== undefined) payload.productId = patch.scope.productId;\r\n if (patch.scope.variantId !== undefined) payload.variantId = patch.scope.variantId;\r\n if (patch.scope.batchId !== undefined) payload.batchId = patch.scope.batchId;\r\n if (patch.scope.proofId !== undefined) payload.proofId = patch.scope.proofId;\r\n }\r\n if (patch.facetRule !== undefined) payload.facetRule = patch.facetRule;\r\n return ctx.SL.app.records.update(\r\n ctx.collectionId, ctx.appId, recordId,\r\n payload as Parameters<typeof ctx.SL.app.records.update>[3],\r\n true,\r\n );\r\n};\r\n\r\n/** Delete a record by its UUID id. The id-primary delete path. */\r\nexport const removeRecord = async (\r\n ctx: RecordsCtx,\r\n recordId: string,\r\n): Promise<void> => {\r\n await ctx.SL.app.records.remove(ctx.collectionId, ctx.appId, recordId, true);\r\n};\r\n\r\n/**\r\n * Convenience wrapper for callers that only have a `ParsedRef` and a payload —\r\n * matches the previous (`ref`, `data`) call shape used by the editor hook.\r\n */\r\nexport const upsertRecordForScope = async <T,>(\r\n ctx: RecordsCtx,\r\n scope: ParsedRef,\r\n data: T,\r\n extra: { visibility?: 'public' | 'owner' | 'admin' } = {},\r\n) => upsertRecord<T>(ctx, {\r\n ref: scope.raw || undefined,\r\n scope: parsedRefToScope(scope),\r\n data,\r\n visibility: extra.visibility,\r\n});\r\n\r\n/** Restore a soft-deleted record by ID (admin only). */\r\nexport const restoreRecord = async (\r\n ctx: RecordsCtx,\r\n recordId: string,\r\n): Promise<AppRecord> => ctx.SL.app.records.restore(ctx.collectionId, ctx.appId, recordId);\r\n\r\n/**\r\n * Server-side match — single round trip that returns every record whose\r\n * `scope` is satisfied by `target`, ordered by descending `specificity`.\r\n * Replaces the per-scope N+1 chain walk we used pre-1.9.\r\n */\r\nexport const matchRecords = async (\r\n ctx: RecordsCtx,\r\n target: RecordTarget,\r\n opts: {\r\n strategy?: 'all' | 'best';\r\n at?: string;\r\n includeScheduled?: boolean;\r\n includeExpired?: boolean;\r\n limit?: number;\r\n } = {},\r\n): Promise<MatchResult> => ctx.SL.app.records.match(\r\n ctx.collectionId,\r\n ctx.appId,\r\n {\r\n target,\r\n ...(ctx.recordType ? { recordType: ctx.recordType } : {}),\r\n strategy: opts.strategy ?? 'all',\r\n at: opts.at,\r\n includeScheduled: opts.includeScheduled,\r\n includeExpired: opts.includeExpired,\r\n limit: opts.limit,\r\n },\r\n true,\r\n);\r\n\r\n/**\r\n * Server-side bulk upsert. Up to 500 rows per call; any leftover is chunked.\r\n * Each row is error-isolated by the server.\r\n */\r\nexport const bulkUpsert = async <T,>(\r\n ctx: RecordsCtx,\r\n entries: Array<{ ref?: string; scope: RecordAnchors; data: T; status?: string }>,\r\n): Promise<{ saved: number; failed: number }> => {\r\n const CHUNK = 500;\r\n let saved = 0;\r\n let failed = 0;\r\n for (let i = 0; i < entries.length; i += CHUNK) {\r\n const slice = entries.slice(i, i + CHUNK);\r\n const items: BulkUpsertItem[] = slice.map((e) => {\r\n const item: BulkUpsertItem = {\r\n ...(ctx.recordType ? { recordType: ctx.recordType } : {}),\r\n productId: e.scope.productId ?? null,\r\n variantId: e.scope.variantId ?? null,\r\n batchId: e.scope.batchId ?? null,\r\n proofId: e.scope.proofId ?? null,\r\n data: e.data as Record<string, unknown>,\r\n status: e.status,\r\n } as BulkUpsertItem;\r\n // Caller-supplied external refs only — we no longer derive one from\r\n // anchors. Bulk imports without an external key rely on the server\r\n // matching on (recordType + anchors) for the upsert key.\r\n if (e.ref) (item as { ref?: string }).ref = e.ref;\r\n return item;\r\n });\r\n const res = await ctx.SL.app.records.bulkUpsert(ctx.collectionId, ctx.appId, items)\r\n .catch((): { saved: number; failed: number } => ({ saved: 0, failed: items.length }));\r\n saved += res.saved ?? 0;\r\n failed += res.failed ?? 0;\r\n }\r\n return { saved, failed };\r\n};\r\n\r\n/**\r\n * Server-side bulk delete. Accepts an explicit ref list (max 1000 per call,\r\n * chunked here) or a scope anchor (single call).\r\n */\r\nexport const bulkDelete = async (\r\n ctx: RecordsCtx,\r\n input: { refs: string[] } | { scope: RecordAnchors },\r\n): Promise<{ removed: number }> => {\r\n if ('scope' in input) {\r\n // SDK `BulkDeleteInput.scope` accepts the flat anchor object directly.\r\n const scope: Record<string, string> = {};\r\n if (input.scope.productId) scope.productId = input.scope.productId;\r\n if (input.scope.variantId) scope.variantId = input.scope.variantId;\r\n if (input.scope.batchId) scope.batchId = input.scope.batchId;\r\n if (input.scope.proofId) scope.proofId = input.scope.proofId;\r\n const res: BulkDeleteResult = await ctx.SL.app.records.bulkDelete(\r\n ctx.collectionId, ctx.appId,\r\n { scope, ...(ctx.recordType ? { recordType: ctx.recordType } : {}) },\r\n );\r\n return { removed: res.deleted ?? 0 };\r\n }\r\n\r\n const CHUNK = 1000;\r\n let removed = 0;\r\n for (let i = 0; i < input.refs.length; i += CHUNK) {\r\n const slice = input.refs.slice(i, i + CHUNK);\r\n const res: BulkDeleteResult = await ctx.SL.app.records.bulkDelete(\r\n ctx.collectionId, ctx.appId,\r\n { refs: slice, ...(ctx.recordType ? { recordType: ctx.recordType } : {}) },\r\n );\r\n removed += res.deleted ?? 0;\r\n }\r\n return { removed };\r\n};"]}
|
package/dist/records-4NN757SG.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export { bulkDelete, bulkUpsert, createRecord, getRecordById, listRecords, matchRecords, removeRecord, restoreRecord, updateRecord, upsertRecord, upsertRecordForScope } from './chunk-KA4MKRHL.js';
|
|
2
|
-
//# sourceMappingURL=records-4NN757SG.js.map
|
|
3
|
-
//# sourceMappingURL=records-4NN757SG.js.map
|