@pod-os/elements 0.29.1-rc.88079dc.0 → 0.29.1-rc.aee4031.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dist/cjs/elements.cjs.js +1 -1
  2. package/dist/cjs/ion-icon_33.cjs.entry.js +14 -6
  3. package/dist/cjs/ion-icon_33.cjs.entry.js.map +1 -1
  4. package/dist/cjs/loader.cjs.js +1 -1
  5. package/dist/collection/components/pos-tool-select/pos-tool-select.css +14 -5
  6. package/dist/collection/components/pos-tool-select/pos-tool-select.js +4 -1
  7. package/dist/collection/components/pos-tool-select/pos-tool-select.js.map +1 -1
  8. package/dist/collection/components/pos-type-router/pos-type-router.css +4 -2
  9. package/dist/collection/components/pos-type-router/pos-type-router.js +9 -2
  10. package/dist/collection/components/pos-type-router/pos-type-router.js.map +1 -1
  11. package/dist/collection/components/pos-type-router/selectToolsForTypes.js.map +1 -1
  12. package/dist/components/pos-app2.js +7 -2
  13. package/dist/components/pos-app2.js.map +1 -1
  14. package/dist/components/pos-tool-select2.js +2 -2
  15. package/dist/components/pos-tool-select2.js.map +1 -1
  16. package/dist/components/pos-type-router2.js +7 -3
  17. package/dist/components/pos-type-router2.js.map +1 -1
  18. package/dist/elements/elements.esm.js +1 -1
  19. package/dist/elements/elements.esm.js.map +1 -1
  20. package/dist/elements/{p-21649e42.entry.js → p-e7498ab7.entry.js} +11 -11
  21. package/dist/elements/p-e7498ab7.entry.js.map +1 -0
  22. package/dist/esm/elements.js +1 -1
  23. package/dist/esm/ion-icon_33.entry.js +14 -6
  24. package/dist/esm/ion-icon_33.entry.js.map +1 -1
  25. package/dist/esm/loader.js +1 -1
  26. package/dist/types/components/pos-tool-select/pos-tool-select.d.ts +3 -0
  27. package/dist/types/components/pos-type-router/pos-type-router.d.ts +4 -0
  28. package/dist/types/components/pos-type-router/selectToolsForTypes.d.ts +25 -0
  29. package/dist/types/components.d.ts +24 -0
  30. package/package.json +3 -3
  31. package/dist/elements/p-21649e42.entry.js.map +0 -1
@@ -1 +1 @@
1
- {"file":"pos-app2.js","mappings":";;;;;;;AAAA,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,YAAY,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,YAAY,CAAC,CAAC,CAAC;AAC9F;AACA,IAAI,iBAAiB,CAAC;AACtB,IAAI,oBAAoB,CAAC;AACzB;AACA,SAAS,oBAAoB,GAAG;AAChC,IAAI,QAAQ,iBAAiB;AAC7B,SAAS,iBAAiB,GAAG;AAC7B,YAAY,WAAW;AACvB,YAAY,cAAc;AAC1B,YAAY,QAAQ;AACpB,YAAY,SAAS;AACrB,YAAY,cAAc;AAC1B,SAAS,CAAC,EAAE;AACZ,CAAC;AACD;AACA,SAAS,uBAAuB,GAAG;AACnC,IAAI,QAAQ,oBAAoB;AAChC,SAAS,oBAAoB,GAAG;AAChC,YAAY,SAAS,CAAC,SAAS,CAAC,OAAO;AACvC,YAAY,SAAS,CAAC,SAAS,CAAC,QAAQ;AACxC,YAAY,SAAS,CAAC,SAAS,CAAC,kBAAkB;AAClD,SAAS,CAAC,EAAE;AACZ,CAAC;AACD,MAAM,kBAAkB,GAAG,IAAI,OAAO,EAAE,CAAC;AACzC,MAAM,cAAc,GAAG,IAAI,OAAO,EAAE,CAAC;AACrC,MAAM,qBAAqB,GAAG,IAAI,OAAO,EAAE,CAAC;AAC5C,SAAS,gBAAgB,CAAC,OAAO,EAAE;AACnC,IAAI,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AACrD,QAAQ,MAAM,QAAQ,GAAG,MAAM;AAC/B,YAAY,OAAO,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAC5D,YAAY,OAAO,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACxD,SAAS,CAAC;AACV,QAAQ,MAAM,OAAO,GAAG,MAAM;AAC9B,YAAY,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AAC1C,YAAY,QAAQ,EAAE,CAAC;AACvB,SAAS,CAAC;AACV,QAAQ,MAAM,KAAK,GAAG,MAAM;AAC5B,YAAY,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAClC,YAAY,QAAQ,EAAE,CAAC;AACvB,SAAS,CAAC;AACV,QAAQ,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACrD,QAAQ,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACjD,KAAK,CAAC,CAAC;AACP;AACA;AACA,IAAI,qBAAqB,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAChD,IAAI,OAAO,OAAO,CAAC;AACnB,CAAC;AACD,SAAS,8BAA8B,CAAC,EAAE,EAAE;AAC5C;AACA,IAAI,IAAI,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;AAClC,QAAQ,OAAO;AACf,IAAI,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAClD,QAAQ,MAAM,QAAQ,GAAG,MAAM;AAC/B,YAAY,EAAE,CAAC,mBAAmB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AACzD,YAAY,EAAE,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACnD,YAAY,EAAE,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACnD,SAAS,CAAC;AACV,QAAQ,MAAM,QAAQ,GAAG,MAAM;AAC/B,YAAY,OAAO,EAAE,CAAC;AACtB,YAAY,QAAQ,EAAE,CAAC;AACvB,SAAS,CAAC;AACV,QAAQ,MAAM,KAAK,GAAG,MAAM;AAC5B,YAAY,MAAM,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,YAAY,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC;AAC7E,YAAY,QAAQ,EAAE,CAAC;AACvB,SAAS,CAAC;AACV,QAAQ,EAAE,CAAC,gBAAgB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AAClD,QAAQ,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC5C,QAAQ,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC5C,KAAK,CAAC,CAAC;AACP;AACA,IAAI,kBAAkB,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AACrC,CAAC;AACD,IAAI,aAAa,GAAG;AACpB,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;AAChC,QAAQ,IAAI,MAAM,YAAY,cAAc,EAAE;AAC9C;AACA,YAAY,IAAI,IAAI,KAAK,MAAM;AAC/B,gBAAgB,OAAO,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACtD;AACA,YAAY,IAAI,IAAI,KAAK,OAAO,EAAE;AAClC,gBAAgB,OAAO,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACnD,sBAAsB,SAAS;AAC/B,sBAAsB,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;AACzE,aAAa;AACb,SAAS;AACT;AACA,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAClC,KAAK;AACL,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;AAC7B,QAAQ,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;AAC7B,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE;AACtB,QAAQ,IAAI,MAAM,YAAY,cAAc;AAC5C,aAAa,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,OAAO,CAAC,EAAE;AACnD,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS;AACT,QAAQ,OAAO,IAAI,IAAI,MAAM,CAAC;AAC9B,KAAK;AACL,CAAC,CAAC;AACF,SAAS,YAAY,CAAC,QAAQ,EAAE;AAChC,IAAI,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC;AAC5C,CAAC;AACD,SAAS,YAAY,CAAC,IAAI,EAAE;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,uBAAuB,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAClD,QAAQ,OAAO,UAAU,GAAG,IAAI,EAAE;AAClC;AACA;AACA,YAAY,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AAC3C,YAAY,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACtC,SAAS,CAAC;AACV,KAAK;AACL,IAAI,OAAO,UAAU,GAAG,IAAI,EAAE;AAC9B;AACA;AACA,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AACpD,KAAK,CAAC;AACN,CAAC;AACD,SAAS,sBAAsB,CAAC,KAAK,EAAE;AACvC,IAAI,IAAI,OAAO,KAAK,KAAK,UAAU;AACnC,QAAQ,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;AACnC;AACA;AACA,IAAI,IAAI,KAAK,YAAY,cAAc;AACvC,QAAQ,8BAA8B,CAAC,KAAK,CAAC,CAAC;AAC9C,IAAI,IAAI,aAAa,CAAC,KAAK,EAAE,oBAAoB,EAAE,CAAC;AACpD,QAAQ,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;AAC/C;AACA,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC;AACD,SAAS,IAAI,CAAC,KAAK,EAAE;AACrB;AACA;AACA,IAAI,IAAI,KAAK,YAAY,UAAU;AACnC,QAAQ,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACvC;AACA;AACA,IAAI,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;AACjC,QAAQ,OAAO,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACzC,IAAI,MAAM,QAAQ,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;AACnD;AACA;AACA,IAAI,IAAI,QAAQ,KAAK,KAAK,EAAE;AAC5B,QAAQ,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC5C,QAAQ,qBAAqB,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AACnD,KAAK;AACL,IAAI,OAAO,QAAQ,CAAC;AACpB,CAAC;AACD,MAAM,MAAM,GAAG,CAAC,KAAK,KAAK,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE;AAChF,IAAI,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAClD,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;AACtC,IAAI,IAAI,OAAO,EAAE;AACjB,QAAQ,OAAO,CAAC,gBAAgB,CAAC,eAAe,EAAE,CAAC,KAAK,KAAK;AAC7D,YAAY,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,CAAC;AAChH,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,IAAI,OAAO,EAAE;AACjB,QAAQ,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,KAAK,KAAK,OAAO;AAC9D;AACA,QAAQ,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,WAAW;AACf,SAAS,IAAI,CAAC,CAAC,EAAE,KAAK;AACtB,QAAQ,IAAI,UAAU;AACtB,YAAY,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,UAAU,EAAE,CAAC,CAAC;AAC7D,QAAQ,IAAI,QAAQ,EAAE;AACtB,YAAY,EAAE,CAAC,gBAAgB,CAAC,eAAe,EAAE,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;AACjH,SAAS;AACT,KAAK,CAAC;AACN,SAAS,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAC1B,IAAI,OAAO,WAAW,CAAC;AACvB,CAAC;AAeD;AACA,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;AACvE,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACvD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC;AAChC,SAAS,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE;AACjC,IAAI,IAAI,EAAE,MAAM,YAAY,WAAW;AACvC,QAAQ,EAAE,IAAI,IAAI,MAAM,CAAC;AACzB,QAAQ,OAAO,IAAI,KAAK,QAAQ,CAAC,EAAE;AACnC,QAAQ,OAAO;AACf,KAAK;AACL,IAAI,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;AAC/B,QAAQ,OAAO,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACvC,IAAI,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AAC1D,IAAI,MAAM,QAAQ,GAAG,IAAI,KAAK,cAAc,CAAC;AAC7C,IAAI,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AAC1D,IAAI;AACJ;AACA,IAAI,EAAE,cAAc,IAAI,CAAC,QAAQ,GAAG,QAAQ,GAAG,cAAc,EAAE,SAAS,CAAC;AACzE,QAAQ,EAAE,OAAO,IAAI,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,EAAE;AAC5D,QAAQ,OAAO;AACf,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,gBAAgB,SAAS,EAAE,GAAG,IAAI,EAAE;AACvD;AACA,QAAQ,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,GAAG,WAAW,GAAG,UAAU,CAAC,CAAC;AACnF,QAAQ,IAAI,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC;AAC9B,QAAQ,IAAI,QAAQ;AACpB,YAAY,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AAChD;AACA;AACA;AACA;AACA;AACA,QAAQ,OAAO,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC;AAClC,YAAY,MAAM,CAAC,cAAc,CAAC,CAAC,GAAG,IAAI,CAAC;AAC3C,YAAY,OAAO,IAAI,EAAE,CAAC,IAAI;AAC9B,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;AACf,KAAK,CAAC;AACN,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACpC,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;AACD,YAAY,CAAC,CAAC,QAAQ,MAAM;AAC5B,IAAI,GAAG,QAAQ;AACf,IAAI,GAAG,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,KAAK,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC;AACpG,IAAI,GAAG,EAAE,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC;AAClF,CAAC,CAAC,CAAC,CAAC;AACJ;AACA,MAAM,kBAAkB,GAAG,CAAC,UAAU,EAAE,oBAAoB,EAAE,SAAS,CAAC,CAAC;AACzE,MAAM,SAAS,GAAG,EAAE,CAAC;AACrB,MAAM,cAAc,GAAG,IAAI,OAAO,EAAE,CAAC;AACrC,MAAM,gCAAgC,GAAG,IAAI,OAAO,EAAE,CAAC;AACvD,MAAM,mBAAmB,GAAG;AAC5B,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE;AACtB,QAAQ,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC9C,YAAY,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;AAChC,QAAQ,IAAI,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AACzC,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB,YAAY,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,UAAU,GAAG,IAAI,EAAE;AAC9D,gBAAgB,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,gCAAgC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACpG,aAAa,CAAC;AACd,SAAS;AACT,QAAQ,OAAO,UAAU,CAAC;AAC1B,KAAK;AACL,CAAC,CAAC;AACF,gBAAgB,OAAO,CAAC,GAAG,IAAI,EAAE;AACjC;AACA,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC;AACtB,IAAI,IAAI,EAAE,MAAM,YAAY,SAAS,CAAC,EAAE;AACxC,QAAQ,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC;AAClD,KAAK;AACL,IAAI,IAAI,CAAC,MAAM;AACf,QAAQ,OAAO;AACf,IAAI,MAAM,GAAG,MAAM,CAAC;AACpB,IAAI,MAAM,aAAa,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;AACjE,IAAI,gCAAgC,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AAChE;AACA,IAAI,qBAAqB,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7D,IAAI,OAAO,MAAM,EAAE;AACnB,QAAQ,MAAM,aAAa,CAAC;AAC5B;AACA,QAAQ,MAAM,GAAG,OAAO,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;AAChF,QAAQ,cAAc,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAC7C,KAAK;AACL,CAAC;AACD,SAAS,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE;AACtC,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,CAAC,aAAa;AAC1C,QAAQ,aAAa,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;AACpE,SAAS,IAAI,KAAK,SAAS,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE;AACnF,CAAC;AACD,YAAY,CAAC,CAAC,QAAQ,MAAM;AAC5B,IAAI,GAAG,QAAQ;AACf,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;AAChC,QAAQ,IAAI,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC;AACxC,YAAY,OAAO,OAAO,CAAC;AAC3B,QAAQ,OAAO,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE;AACtB,QAAQ,OAAO,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC1E,KAAK;AACL,CAAC,CAAC,CAAC;;ACjSH;;;MAGa,qBAAqB;IAGhC;QACE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAiB,gBAAgB,EAAE,CAAC,EAAE;YAC3D,OAAO,CAAC,EAAE;gBACR,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;oBAC9C,MAAM,KAAK,GAAG,EAAE,CAAC,iBAAiB,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;oBACpE,KAAK,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;iBACxD;aACF;SACF,CAAC,CAAC;KACJ;IAED,MAAM,KAAK;QACT,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC;QAChC,OAAO,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;KAC9B;IAED,MAAM,GAAG,CAAC,GAAW;QACnB,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC;QAChC,OAAO,MAAM,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;KACvC;IAED,MAAM,GAAG,CAAC,QAA2B;QACnC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC;QAChC,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,cAAc,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QAEvG,IAAI,QAAQ,EAAE;YACZ,OAAO;SACR;QACD,MAAM,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;KACrC;;;MC9CU,qBAAqB;IAChC,QAAQ;QACN,OAAO,SAAS,CAAC,MAAM,CAAC;KACzB;;;ACCI,MAAM,WAAW,GAAG,CAAC,OAAuB,EAAE,QAAuB;IAC1E,OAAO,IAAI,KAAK,CAAC;QACf,OAAO;QACP,YAAY,EAAE,QAAQ,CAAC,YAAY,GAAG,IAAI,qBAAqB,EAAE,GAAG,IAAI,cAAc,EAAE;QACxF,YAAY,EAAE,IAAI,qBAAqB,EAAE;KAC1C,CAAC,CAAC;AACL,CAAC;;ACXM,MAAM,eAAe,SAAS,OAAO,CAAC;AAC7C,IAAI,WAAW,CAAC,MAAM,EAAE;AACxB,QAAQ,KAAK,EAAE,CAAC;AAChB,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B,KAAK;AACL,IAAI,IAAI,KAAK,GAAG;AAChB,QAAQ,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC/B,KAAK;AACL,IAAI,UAAU,CAAC,UAAU,EAAE;AAC3B,QAAQ,MAAM,YAAY,GAAG,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC1D,QAAQ,CAAC,YAAY,CAAC,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7D,QAAQ,OAAO,YAAY,CAAC;AAC5B,KAAK;AACL,IAAI,QAAQ,GAAG;AACf,QAAQ,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;AACvD,QAAQ,IAAI,QAAQ,EAAE;AACtB,YAAY,MAAM,WAAW,CAAC;AAC9B,SAAS;AACT,QAAQ,IAAI,CAAC,cAAc,EAAE,CAAC;AAC9B,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,QAAQ,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;AAC1C,KAAK;AACL;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAoGA;AACO,SAAS,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE;AAC7D,IAAI,SAAS,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,KAAK,YAAY,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,OAAO,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AAChH,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,UAAU,OAAO,EAAE,MAAM,EAAE;AAC/D,QAAQ,SAAS,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACnG,QAAQ,SAAS,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACtG,QAAQ,SAAS,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE;AACtH,QAAQ,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9E,KAAK,CAAC,CAAC;AACP,CAAC;AA6CD;AACO,SAAS,QAAQ,CAAC,CAAC,EAAE;AAC5B,IAAI,IAAI,CAAC,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AAClF,IAAI,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5B,IAAI,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,EAAE,OAAO;AAClD,QAAQ,IAAI,EAAE,YAAY;AAC1B,YAAY,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;AAC/C,YAAY,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;AACpD,SAAS;AACT,KAAK,CAAC;AACN,IAAI,MAAM,IAAI,SAAS,CAAC,CAAC,GAAG,yBAAyB,GAAG,iCAAiC,CAAC,CAAC;AAC3F,CAAC;AA4CD;AACO,SAAS,OAAO,CAAC,CAAC,EAAE;AAC3B,IAAI,OAAO,IAAI,YAAY,OAAO,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;AACzE,CAAC;AACD;AACO,SAAS,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE;AACjE,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;AAC3F,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;AAClE,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,YAAY,EAAE,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AAC1H,IAAI,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,EAAE,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;AAC9I,IAAI,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;AACtF,IAAI,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,YAAY,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AAC5H,IAAI,SAAS,OAAO,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE;AACtD,IAAI,SAAS,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE;AACtD,IAAI,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACtF,CAAC;AAOD;AACO,SAAS,aAAa,CAAC,CAAC,EAAE;AACjC,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;AAC3F,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;AACvC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,QAAQ,KAAK,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,YAAY,EAAE,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACrN,IAAI,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,EAAE,EAAE,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;AACpK,IAAI,SAAS,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE;AAChI,CAAC;AA+DD;AACuB,OAAO,eAAe,KAAK,UAAU,GAAG,eAAe,GAAG,UAAU,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE;AACvH,IAAI,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;AAC/B,IAAI,OAAO,CAAC,CAAC,IAAI,GAAG,iBAAiB,EAAE,CAAC,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC,UAAU,GAAG,UAAU,EAAE,CAAC,CAAC;AACrF;;AC9TO,MAAM,WAAW,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,UAAU,CAAC;;ACCzF,SAAS,SAAS,CAAC,KAAK,EAAE;AACjC,IAAI,OAAO,UAAU,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;AAChF;;ACDO,SAAS,mBAAmB,CAAC,KAAK,EAAE;AAC3C,IAAI,OAAO,UAAU,CAAC,KAAK,CAACA,UAAiB,CAAC,CAAC,CAAC;AAChD;;ACHO,SAAS,eAAe,CAAC,GAAG,EAAE;AACrC,IAAI,OAAO,MAAM,CAAC,aAAa,IAAI,UAAU,CAAC,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;AACnH;;ACHO,SAAS,gCAAgC,CAAC,KAAK,EAAE;AACxD,IAAI,OAAO,IAAI,SAAS,CAAC,CAAC,aAAa,EAAE,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,GAAG,mBAAmB,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,wHAAwH,CAAC,CAAC,CAAC;AACrP;;ACFO,SAAS,iBAAiB,GAAG;AACpC,IAAI,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AAC1D,QAAQ,OAAO,YAAY,CAAC;AAC5B,KAAK;AACL,IAAI,OAAO,MAAM,CAAC,QAAQ,CAAC;AAC3B,CAAC;AACM,MAAM,QAAQ,GAAG,iBAAiB,EAAE;;ACJpC,SAAS,UAAU,CAAC,KAAK,EAAE;AAClC,IAAI,OAAO,UAAU,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAACC,QAAe,CAAC,CAAC,CAAC;AAC5F;;ACFO,SAAS,kCAAkC,CAAC,cAAc,EAAE;AACnE,IAAI,OAAO,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,oCAAoC,GAAG;AAC9F,QAAQ,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,EAAE,CAAC;AAClD,QAAQ,IAAI;AACZ,YAAY,OAAO,IAAI,EAAE;AACzB,gBAAgB,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;AACrE,gBAAgB,IAAI,IAAI,EAAE;AAC1B,oBAAoB,OAAO,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACjD,iBAAiB;AACjB,gBAAgB,MAAM,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;AAC3C,aAAa;AACb,SAAS;AACT,gBAAgB;AAChB,YAAY,MAAM,CAAC,WAAW,EAAE,CAAC;AACjC,SAAS;AACT,KAAK,CAAC,CAAC;AACP,CAAC;AACM,SAAS,oBAAoB,CAAC,GAAG,EAAE;AAC1C,IAAI,OAAO,UAAU,CAAC,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;AAC/E;;ACTO,SAAS,SAAS,CAAC,KAAK,EAAE;AACjC,IAAI,IAAI,KAAK,YAAY,UAAU,EAAE;AACrC,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE;AACvB,QAAQ,IAAI,mBAAmB,CAAC,KAAK,CAAC,EAAE;AACxC,YAAY,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAC;AAChD,SAAS;AACT,QAAQ,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE;AAChC,YAAY,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;AACxC,SAAS;AACT,QAAQ,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE;AAC9B,YAAY,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;AACtC,SAAS;AACT,QAAQ,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE;AACpC,YAAY,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAC5C,SAAS;AACT,QAAQ,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE;AAC/B,YAAY,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;AACvC,SAAS;AACT,QAAQ,IAAI,oBAAoB,CAAC,KAAK,CAAC,EAAE;AACzC,YAAY,OAAO,sBAAsB,CAAC,KAAK,CAAC,CAAC;AACjD,SAAS;AACT,KAAK;AACL,IAAI,MAAM,gCAAgC,CAAC,KAAK,CAAC,CAAC;AAClD,CAAC;AACM,SAAS,qBAAqB,CAAC,GAAG,EAAE;AAC3C,IAAI,OAAO,IAAI,UAAU,CAAC,CAAC,UAAU,KAAK;AAC1C,QAAQ,MAAM,GAAG,GAAG,GAAG,CAACD,UAAiB,CAAC,EAAE,CAAC;AAC7C,QAAQ,IAAI,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;AACvC,YAAY,OAAO,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AAC7C,SAAS;AACT,QAAQ,MAAM,IAAI,SAAS,CAAC,gEAAgE,CAAC,CAAC;AAC9F,KAAK,CAAC,CAAC;AACP,CAAC;AACM,SAAS,aAAa,CAAC,KAAK,EAAE;AACrC,IAAI,OAAO,IAAI,UAAU,CAAC,CAAC,UAAU,KAAK;AAC1C,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrE,YAAY,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,SAAS;AACT,QAAQ,UAAU,CAAC,QAAQ,EAAE,CAAC;AAC9B,KAAK,CAAC,CAAC;AACP,CAAC;AACM,SAAS,WAAW,CAAC,OAAO,EAAE;AACrC,IAAI,OAAO,IAAI,UAAU,CAAC,CAAC,UAAU,KAAK;AAC1C,QAAQ,OAAO;AACf,aAAa,IAAI,CAAC,CAAC,KAAK,KAAK;AAC7B,YAAY,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;AACpC,gBAAgB,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvC,gBAAgB,UAAU,CAAC,QAAQ,EAAE,CAAC;AACtC,aAAa;AACb,SAAS,EAAE,CAAC,GAAG,KAAK,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC1C,aAAa,IAAI,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;AAC9C,KAAK,CAAC,CAAC;AACP,CAAC;AACM,SAAS,YAAY,CAAC,QAAQ,EAAE;AACvC,IAAI,OAAO,IAAI,UAAU,CAAC,CAAC,UAAU,KAAK;AAC1C,QAAQ,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;AACtC,YAAY,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnC,YAAY,IAAI,UAAU,CAAC,MAAM,EAAE;AACnC,gBAAgB,OAAO;AACvB,aAAa;AACb,SAAS;AACT,QAAQ,UAAU,CAAC,QAAQ,EAAE,CAAC;AAC9B,KAAK,CAAC,CAAC;AACP,CAAC;AACM,SAAS,iBAAiB,CAAC,aAAa,EAAE;AACjD,IAAI,OAAO,IAAI,UAAU,CAAC,CAAC,UAAU,KAAK;AAC1C,QAAQ,OAAO,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACjF,KAAK,CAAC,CAAC;AACP,CAAC;AACM,SAAS,sBAAsB,CAAC,cAAc,EAAE;AACvD,IAAI,OAAO,iBAAiB,CAAC,kCAAkC,CAAC,cAAc,CAAC,CAAC,CAAC;AACjF,CAAC;AACD,SAAS,OAAO,CAAC,aAAa,EAAE,UAAU,EAAE;AAC5C,IAAI,IAAI,eAAe,EAAE,iBAAiB,CAAC;AAC3C,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC;AAChB,IAAI,OAAO,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,aAAa;AACxD,QAAQ,IAAI;AACZ,YAAY,KAAK,eAAe,GAAG,aAAa,CAAC,aAAa,CAAC,EAAE,iBAAiB,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,GAAG;AAC7I,gBAAgB,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC;AACtD,gBAAgB,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvC,gBAAgB,IAAI,UAAU,CAAC,MAAM,EAAE;AACvC,oBAAoB,OAAO;AAC3B,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,KAAK,EAAE,EAAE,GAAG,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE;AACjD,gBAAgB;AAChB,YAAY,IAAI;AAChB,gBAAgB,IAAI,iBAAiB,IAAI,CAAC,iBAAiB,CAAC,IAAI,KAAK,EAAE,GAAG,eAAe,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAClI,aAAa;AACb,oBAAoB,EAAE,IAAI,GAAG,EAAE,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE;AACjD,SAAS;AACT,QAAQ,UAAU,CAAC,QAAQ,EAAE,CAAC;AAC9B,KAAK,CAAC,CAAC;AACP;;ACxGO,SAAS,SAAS,CAAC,QAAQ,EAAE;AACpC,IAAI,OAAO,OAAO,CAAC,CAAC,MAAM,EAAE,UAAU,KAAK;AAC3C,QAAQ,SAAS,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,UAAU,EAAE,MAAM,UAAU,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;AAC/G,QAAQ,CAAC,UAAU,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AAC3D,KAAK,CAAC,CAAC;AACP;;ACTA,IAAI,QAAQ,GAAG,MAAM,CAAC;AACtB,MAAM,WAAW,GAAG,CAAC,GAAG,KAAK,GAAG,YAAY,SAAS,CAAC;AACtD;AACA,MAAM,MAAM,GAAG,OAAO,SAAS,EAAE,IAAI,KAAK;AAC1C,IAAI,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,IAAI,OAAO,IAAI,UAAU,CAAC,MAAM,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC;AAC5E,CAAC,CAAC;AACF,IAAI,QAAQ,GAAG,MAAM,CAAC;AACtB;AACA,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAClC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAClC,SAAS,MAAM,CAAC,GAAG,OAAO,EAAE;AAC5B,IAAI,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,GAAG,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC;AACtE,IAAI,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;AACrC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,IAAI,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAClC,QAAQ,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC3B,QAAQ,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC;AAC3B,KAAK;AACL,IAAI,OAAO,GAAG,CAAC;AACf,CAAC;AACD;AACA,MAAM,YAAY,GAAG,CAAC,KAAK,KAAK;AAChC,IAAI,IAAI,SAAS,GAAG,KAAK,CAAC;AAC1B,IAAI,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;AACvC,QAAQ,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC9C,KAAK;AACL,IAAI,MAAM,UAAU,GAAG,MAAM,CAAC;AAC9B,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;AACnB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,UAAU,EAAE;AAC3D,QAAQ,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AACzF,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9B,CAAC,CAAC;AACF,MAAM,MAAM,GAAG,CAAC,KAAK,KAAK;AAC1B,IAAI,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACzF,CAAC,CAAC;AACF,MAAM,YAAY,GAAG,CAAC,OAAO,KAAK;AAClC,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;AACjC,IAAI,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAChD,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5C,QAAQ,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACxC,KAAK;AACL,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AACF,MAAM,QAAQ,GAAG,CAAC,KAAK,KAAK;AAC5B,IAAI,IAAI,OAAO,GAAG,KAAK,CAAC;AACxB,IAAI,IAAI,OAAO,YAAY,UAAU,EAAE;AACvC,QAAQ,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC1C,KAAK;AACL,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC/E,IAAI,IAAI;AACR,QAAQ,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC;AACrC,KAAK;AACL,IAAI,MAAM;AACV,QAAQ,MAAM,IAAI,SAAS,CAAC,mDAAmD,CAAC,CAAC;AACjF,KAAK;AACL,CAAC,CAAC;AACF;AACA,MAAM,SAAS,SAAS,KAAK,CAAC;AAC9B,IAAI,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE;AAClC,QAAQ,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAChC,QAAQ,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;AACvC,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AAC1C,QAAQ,KAAK,CAAC,iBAAiB,GAAG,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AAC1D,KAAK;AACL,CAAC;AACD,SAAS,CAAC,IAAI,GAAG,kBAAkB,CAAC;AACpC,MAAM,wBAAwB,SAAS,SAAS,CAAC;AACjD,IAAI,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,GAAG,aAAa,EAAE,MAAM,GAAG,aAAa,EAAE;AACjF,QAAQ,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;AAC9D,QAAQ,IAAI,CAAC,IAAI,GAAG,iCAAiC,CAAC;AACtD,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AAC/B,KAAK;AACL,CAAC;AACD,wBAAwB,CAAC,IAAI,GAAG,iCAAiC,CAAC;AAClE,MAAM,UAAU,SAAS,SAAS,CAAC;AACnC,IAAI,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,GAAG,aAAa,EAAE,MAAM,GAAG,aAAa,EAAE;AACjF,QAAQ,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;AAC9D,QAAQ,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;AACtC,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AAC/B,KAAK;AACL,CAAC;AACD,UAAU,CAAC,IAAI,GAAG,iBAAiB,CAAC;AACpC,MAAM,iBAAiB,SAAS,SAAS,CAAC;AAC1C,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC;AAC5B,QAAQ,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;AAC/C,KAAK;AACL,CAAC;AACD,iBAAiB,CAAC,IAAI,GAAG,0BAA0B,CAAC;AACpD,MAAM,gBAAgB,SAAS,SAAS,CAAC;AACzC,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC;AAC5B,QAAQ,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;AAC7C,KAAK;AACL,CAAC;AACD,gBAAgB,CAAC,IAAI,GAAG,wBAAwB,CAAC;AACjD,MAAM,mBAAmB,SAAS,SAAS,CAAC;AAC5C,IAAI,WAAW,CAAC,OAAO,GAAG,6BAA6B,EAAE,OAAO,EAAE;AAClE,QAAQ,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAChC,QAAQ,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;AAChD,KAAK;AACL,CAAC;AACD,mBAAmB,CAAC,IAAI,GAAG,2BAA2B,CAAC;AACvD,MAAM,UAAU,SAAS,SAAS,CAAC;AACnC,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC;AAC5B,QAAQ,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;AACtC,KAAK;AACL,CAAC;AACD,UAAU,CAAC,IAAI,GAAG,iBAAiB,CAAC;AACpC,MAAM,UAAU,SAAS,SAAS,CAAC;AACnC,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC;AAC5B,QAAQ,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;AACtC,KAAK;AACL,CAAC;AACD,UAAU,CAAC,IAAI,GAAG,iBAAiB,CAAC;AACpC,MAAM,UAAU,SAAS,SAAS,CAAC;AACnC,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC;AAC5B,QAAQ,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;AACtC,KAAK;AACL,CAAC;AACD,UAAU,CAAC,IAAI,GAAG,iBAAiB,CAAC;AACpC,MAAM,UAAU,SAAS,SAAS,CAAC;AACnC,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC;AAC5B,QAAQ,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;AACtC,KAAK;AACL,CAAC;AACD,UAAU,CAAC,IAAI,GAAG,iBAAiB,CAAC;AACpC,MAAM,WAAW,SAAS,SAAS,CAAC;AACpC,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC;AAC5B,QAAQ,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;AACvC,KAAK;AACL,CAAC;AACD,WAAW,CAAC,IAAI,GAAG,kBAAkB,CAAC;AACtC,MAAM,iBAAiB,SAAS,SAAS,CAAC;AAC1C,IAAI,WAAW,CAAC,OAAO,GAAG,iDAAiD,EAAE,OAAO,EAAE;AACtF,QAAQ,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAChC,QAAQ,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;AAC/C,KAAK;AACL,CAAC;AACD,iBAAiB,CAAC,IAAI,GAAG,0BAA0B,CAAC;AACpD,MAAM,wBAAwB,SAAS,SAAS,CAAC;AACjD,IAAI,WAAW,CAAC,OAAO,GAAG,sDAAsD,EAAE,OAAO,EAAE;AAC3F,QAAQ,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAChC,QAAQ,IAAI,CAAC,IAAI,GAAG,iCAAiC,CAAC;AACtD,KAAK;AACL,CAAC;AACD,wBAAwB,CAAC,IAAI,GAAG,iCAAiC,CAAC;AAClE,MAAM,WAAW,SAAS,SAAS,CAAC;AACpC,IAAI,WAAW,CAAC,OAAO,GAAG,mBAAmB,EAAE,OAAO,EAAE;AACxD,QAAQ,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAChC,QAAQ,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;AACvC,KAAK;AACL,CAAC;AACD,WAAW,CAAC,IAAI,GAAG,kBAAkB,CAAC;AACtC,MAAM,8BAA8B,SAAS,SAAS,CAAC;AACvD,IAAI,WAAW,CAAC,OAAO,GAAG,+BAA+B,EAAE,OAAO,EAAE;AACpE,QAAQ,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAChC,QAAQ,IAAI,CAAC,IAAI,GAAG,uCAAuC,CAAC;AAC5D,KAAK;AACL,CAAC;AACD,8BAA8B,CAAC,IAAI,GAAG,uCAAuC,CAAC;AAC9E;AACA,SAAS,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,gBAAgB,EAAE;AACjD,IAAI,OAAO,IAAI,SAAS,CAAC,CAAC,+CAA+C,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACnG,CAAC;AACD,SAAS,WAAW,CAAC,SAAS,EAAE,IAAI,EAAE;AACtC,IAAI,OAAO,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC;AACnC,CAAC;AACD,SAAS,aAAa,CAAC,IAAI,EAAE;AAC7B,IAAI,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC5C,CAAC;AACD,SAAS,aAAa,CAAC,GAAG,EAAE;AAC5B,IAAI,QAAQ,GAAG;AACf,QAAQ,KAAK,OAAO;AACpB,YAAY,OAAO,OAAO,CAAC;AAC3B,QAAQ,KAAK,OAAO;AACpB,YAAY,OAAO,OAAO,CAAC;AAC3B,QAAQ,KAAK,OAAO;AACpB,YAAY,OAAO,OAAO,CAAC;AAC3B,QAAQ;AACR,YAAY,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;AAC3C,KAAK;AACL,CAAC;AACD,SAAS,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE;AACjC,IAAI,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE;AACpF,QAAQ,IAAI,GAAG,GAAG,qEAAqE,CAAC;AACxF,QAAQ,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,YAAY,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;AACtC,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9D,SAAS;AACT,aAAa,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AACtC,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,SAAS;AACT,aAAa;AACb,YAAY,GAAG,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,SAAS;AACT,QAAQ,MAAM,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC;AACjC,KAAK;AACL,CAAC;AACD,SAAS,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE;AAChD,IAAI,QAAQ,GAAG;AACf,QAAQ,KAAK,OAAO,CAAC;AACrB,QAAQ,KAAK,OAAO,CAAC;AACrB,QAAQ,KAAK,OAAO,EAAE;AACtB,YAAY,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC;AACnD,gBAAgB,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;AACvC,YAAY,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACxD,YAAY,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC7D,YAAY,IAAI,MAAM,KAAK,QAAQ;AACnC,gBAAgB,MAAM,QAAQ,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;AACpE,YAAY,MAAM;AAClB,SAAS;AACT,QAAQ,KAAK,OAAO,CAAC;AACrB,QAAQ,KAAK,OAAO,CAAC;AACrB,QAAQ,KAAK,OAAO,EAAE;AACtB,YAAY,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,mBAAmB,CAAC;AAChE,gBAAgB,MAAM,QAAQ,CAAC,mBAAmB,CAAC,CAAC;AACpD,YAAY,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACxD,YAAY,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC7D,YAAY,IAAI,MAAM,KAAK,QAAQ;AACnC,gBAAgB,MAAM,QAAQ,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;AACpE,YAAY,MAAM;AAClB,SAAS;AACT,QAAQ,KAAK,OAAO,CAAC;AACrB,QAAQ,KAAK,OAAO,CAAC;AACrB,QAAQ,KAAK,OAAO,EAAE;AACtB,YAAY,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC;AACtD,gBAAgB,MAAM,QAAQ,CAAC,SAAS,CAAC,CAAC;AAC1C,YAAY,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACxD,YAAY,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC7D,YAAY,IAAI,MAAM,KAAK,QAAQ;AACnC,gBAAgB,MAAM,QAAQ,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;AACpE,YAAY,MAAM;AAClB,SAAS;AACT,QAAQ,KAAK,OAAO,EAAE;AACtB,YAAY,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,KAAK,OAAO,EAAE;AACpF,gBAAgB,MAAM,QAAQ,CAAC,kBAAkB,CAAC,CAAC;AACnD,aAAa;AACb,YAAY,MAAM;AAClB,SAAS;AACT,QAAQ,KAAK,SAAS,EAAE;AACxB,YAAY,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC;AACtD,gBAAgB,MAAM,QAAQ,CAAC,SAAS,CAAC,CAAC;AAC1C,YAAY,MAAM;AAClB,SAAS;AACT,QAAQ,KAAK,OAAO,CAAC;AACrB,QAAQ,KAAK,OAAO,CAAC;AACrB,QAAQ,KAAK,OAAO,EAAE;AACtB,YAAY,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC;AACpD,gBAAgB,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;AACxC,YAAY,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;AAChD,YAAY,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC;AACpD,YAAY,IAAI,MAAM,KAAK,QAAQ;AACnC,gBAAgB,MAAM,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC,CAAC;AACjE,YAAY,MAAM;AAClB,SAAS;AACT,QAAQ;AACR,YAAY,MAAM,IAAI,SAAS,CAAC,2CAA2C,CAAC,CAAC;AAC7E,KAAK;AACL,IAAI,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AAC5B,CAAC;AACD;AACA,SAAS,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE;AACxC,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAClC,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1B,QAAQ,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;AACjC,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9D,KAAK;AACL,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACjC,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,KAAK;AACL,SAAS;AACT,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,KAAK;AACL,IAAI,IAAI,MAAM,IAAI,IAAI,EAAE;AACxB,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;AACrC,KAAK;AACL,SAAS,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,IAAI,EAAE;AAC1D,QAAQ,GAAG,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACnD,KAAK;AACL,SAAS,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,IAAI,IAAI,EAAE;AAC3D,QAAQ,IAAI,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE;AACtC,YAAY,GAAG,IAAI,CAAC,yBAAyB,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AACzE,SAAS;AACT,KAAK;AACL,IAAI,OAAO,GAAG,CAAC;AACf,CAAC;AACD,IAAI,eAAe,GAAG,CAAC,MAAM,EAAE,GAAG,KAAK,KAAK;AAC5C,IAAI,OAAO,OAAO,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC;AACrD,CAAC,CAAC;AACF,SAAS,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE;AACxC,IAAI,OAAO,OAAO,CAAC,CAAC,YAAY,EAAE,GAAG,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC;AAC9E,CAAC;AACD;AACA,IAAI,SAAS,GAAG,CAAC,GAAG,KAAK;AACzB,IAAI,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE;AAC1B,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,OAAO,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,WAAW,CAAC;AACrD,CAAC,CAAC;AACF,MAAM,KAAK,GAAG,CAAC,WAAW,CAAC,CAAC;AAC5B;AACA,MAAM,UAAU,GAAG,CAAC,GAAG,OAAO,KAAK;AACnC,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC5C,IAAI,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AACtD,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,IAAI,GAAG,CAAC;AACZ,IAAI,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAClC,QAAQ,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/C,QAAQ,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE;AACpC,YAAY,GAAG,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;AACtC,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;AAC5C,YAAY,IAAI,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;AACpC,gBAAgB,OAAO,KAAK,CAAC;AAC7B,aAAa;AACb,YAAY,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC/B,SAAS;AACT,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AACF,IAAI,YAAY,GAAG,UAAU,CAAC;AAC9B;AACA,SAAS,YAAY,CAAC,KAAK,EAAE;AAC7B,IAAI,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACvD,CAAC;AACD,SAAS,QAAQ,CAAC,KAAK,EAAE;AACzB,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,iBAAiB,EAAE;AAC7F,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;AAC/C,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC;AACtB,IAAI,OAAO,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;AAClD,QAAQ,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC7C,KAAK;AACL,IAAI,OAAO,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC;AAClD,CAAC;AACD;AACA,IAAI,cAAc,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK;AACnC,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AACtD,QAAQ,MAAM,EAAE,aAAa,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC;AAChD,QAAQ,IAAI,OAAO,aAAa,KAAK,QAAQ,IAAI,aAAa,GAAG,IAAI,EAAE;AACvE,YAAY,MAAM,IAAI,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,qDAAqD,CAAC,CAAC,CAAC;AAC/F,SAAS;AACT,KAAK;AACL,CAAC,CAAC;AACF;AACA,SAAS,KAAK,CAAC,GAAG,EAAE;AACpB,IAAI,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,GAAG,KAAK,QAAQ,CAAC;AACxD,CAAC;AACD,SAAS,YAAY,CAAC,GAAG,EAAE;AAC3B,IAAI,OAAO,GAAG,CAAC,GAAG,KAAK,KAAK,IAAI,OAAO,GAAG,CAAC,CAAC,KAAK,QAAQ,CAAC;AAC1D,CAAC;AACD,SAAS,WAAW,CAAC,GAAG,EAAE;AAC1B,IAAI,OAAO,GAAG,CAAC,GAAG,KAAK,KAAK,IAAI,OAAO,GAAG,CAAC,CAAC,KAAK,WAAW,CAAC;AAC7D,CAAC;AACD,SAAS,WAAW,CAAC,GAAG,EAAE;AAC1B,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,KAAK,KAAK,IAAI,OAAO,GAAG,CAAC,CAAC,KAAK,QAAQ,CAAC;AACxE,CAAC;AACD;AACA,SAAS,aAAa,CAAC,GAAG,EAAE;AAC5B,IAAI,IAAI,SAAS,CAAC;AAClB,IAAI,IAAI,SAAS,CAAC;AAClB,IAAI,QAAQ,GAAG,CAAC,GAAG;AACnB,QAAQ,KAAK,KAAK,EAAE;AACpB,YAAY,QAAQ,GAAG,CAAC,GAAG;AAC3B,gBAAgB,KAAK,OAAO,CAAC;AAC7B,gBAAgB,KAAK,OAAO,CAAC;AAC7B,gBAAgB,KAAK,OAAO;AAC5B,oBAAoB,SAAS,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACtF,oBAAoB,SAAS,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC9D,oBAAoB,MAAM;AAC1B,gBAAgB,KAAK,OAAO,CAAC;AAC7B,gBAAgB,KAAK,OAAO,CAAC;AAC7B,gBAAgB,KAAK,OAAO;AAC5B,oBAAoB,SAAS,GAAG,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAChG,oBAAoB,SAAS,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC9D,oBAAoB,MAAM;AAC1B,gBAAgB,KAAK,UAAU,CAAC;AAChC,gBAAgB,KAAK,cAAc,CAAC;AACpC,gBAAgB,KAAK,cAAc,CAAC;AACpC,gBAAgB,KAAK,cAAc;AACnC,oBAAoB,SAAS,GAAG;AAChC,wBAAwB,IAAI,EAAE,UAAU;AACxC,wBAAwB,IAAI,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3E,qBAAqB,CAAC;AACtB,oBAAoB,SAAS,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAC1F,oBAAoB,MAAM;AAC1B,gBAAgB;AAChB,oBAAoB,MAAM,IAAI,gBAAgB,CAAC,8DAA8D,CAAC,CAAC;AAC/G,aAAa;AACb,YAAY,MAAM;AAClB,SAAS;AACT,QAAQ,KAAK,IAAI,EAAE;AACnB,YAAY,QAAQ,GAAG,CAAC,GAAG;AAC3B,gBAAgB,KAAK,OAAO;AAC5B,oBAAoB,SAAS,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;AACvE,oBAAoB,SAAS,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC9D,oBAAoB,MAAM;AAC1B,gBAAgB,KAAK,OAAO;AAC5B,oBAAoB,SAAS,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;AACvE,oBAAoB,SAAS,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC9D,oBAAoB,MAAM;AAC1B,gBAAgB,KAAK,OAAO;AAC5B,oBAAoB,SAAS,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;AACvE,oBAAoB,SAAS,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC9D,oBAAoB,MAAM;AAC1B,gBAAgB,KAAK,SAAS,CAAC;AAC/B,gBAAgB,KAAK,gBAAgB,CAAC;AACtC,gBAAgB,KAAK,gBAAgB,CAAC;AACtC,gBAAgB,KAAK,gBAAgB;AACrC,oBAAoB,SAAS,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;AACtE,oBAAoB,SAAS,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;AAC5D,oBAAoB,MAAM;AAC1B,gBAAgB;AAChB,oBAAoB,MAAM,IAAI,gBAAgB,CAAC,8DAA8D,CAAC,CAAC;AAC/G,aAAa;AACb,YAAY,MAAM;AAClB,SAAS;AACT,QAAQ,KAAK,KAAK,EAAE;AACpB,YAAY,QAAQ,GAAG,CAAC,GAAG;AAC3B,gBAAgB,KAAK,SAAS;AAC9B,oBAAoB,SAAS,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AACpD,oBAAoB,SAAS,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC9D,oBAAoB,MAAM;AAC1B,gBAAgB,KAAK,OAAO;AAC5B,oBAAoB,SAAS,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;AAClD,oBAAoB,SAAS,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC9D,oBAAoB,MAAM;AAC1B,gBAAgB,KAAK,SAAS,CAAC;AAC/B,gBAAgB,KAAK,gBAAgB,CAAC;AACtC,gBAAgB,KAAK,gBAAgB,CAAC;AACtC,gBAAgB,KAAK,gBAAgB;AACrC,oBAAoB,SAAS,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;AAClD,oBAAoB,SAAS,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;AAC5D,oBAAoB,MAAM;AAC1B,gBAAgB;AAChB,oBAAoB,MAAM,IAAI,gBAAgB,CAAC,8DAA8D,CAAC,CAAC;AAC/G,aAAa;AACb,YAAY,MAAM;AAClB,SAAS;AACT,QAAQ;AACR,YAAY,MAAM,IAAI,gBAAgB,CAAC,6DAA6D,CAAC,CAAC;AACtG,KAAK;AACL,IAAI,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AACpC,CAAC;AACD,MAAM,KAAK,GAAG,OAAO,GAAG,KAAK;AAC7B,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;AAClB,QAAQ,MAAM,IAAI,SAAS,CAAC,0DAA0D,CAAC,CAAC;AACxF,KAAK;AACL,IAAI,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;AACxD,IAAI,MAAM,IAAI,GAAG;AACjB,QAAQ,SAAS;AACjB,QAAQ,GAAG,CAAC,GAAG,IAAI,KAAK;AACxB,QAAQ,GAAG,CAAC,OAAO,IAAI,SAAS;AAChC,KAAK,CAAC;AACN,IAAI,MAAM,OAAO,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC;AAC/B,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC;AACvB,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC;AACvB,IAAI,OAAO,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;AAC9D,CAAC,CAAC;AACF,IAAI,WAAW,GAAG,KAAK,CAAC;AACxB;AACA,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC1C,IAAI,SAAS,CAAC;AACd,IAAI,QAAQ,CAAC;AACb,MAAM,WAAW,GAAG,CAAC,GAAG,KAAK;AAC7B,IAAI,OAAO,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,WAAW,CAAC;AACrD,CAAC,CAAC;AACF,MAAM,cAAc,GAAG,OAAO,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,KAAK;AACvE,IAAI,IAAI,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAChC,IAAI,IAAI,MAAM,GAAG,GAAG,CAAC,EAAE;AACvB,QAAQ,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AAC3B,KAAK;AACL,IAAI,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AACzD,IAAI,IAAI,MAAM;AACd,QAAQ,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC3B,IAAI,IAAI,CAAC,MAAM,EAAE;AACjB,QAAQ,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,SAAS,EAAE,CAAC,CAAC;AAC7C,KAAK;AACL,SAAS;AACT,QAAQ,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AAChC,KAAK;AACL,IAAI,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AACF,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK;AACzC,IAAI,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE;AAC1B,QAAQ,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;AAChD,QAAQ,OAAO,GAAG,CAAC,CAAC,CAAC;AACrB,QAAQ,OAAO,GAAG,CAAC,EAAE,CAAC;AACtB,QAAQ,OAAO,GAAG,CAAC,EAAE,CAAC;AACtB,QAAQ,OAAO,GAAG,CAAC,CAAC,CAAC;AACrB,QAAQ,OAAO,GAAG,CAAC,CAAC,CAAC;AACrB,QAAQ,OAAO,GAAG,CAAC,EAAE,CAAC;AACtB,QAAQ,IAAI,GAAG,CAAC,CAAC,EAAE;AACnB,YAAY,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC,SAAS;AACT,QAAQ,QAAQ,KAAK,QAAQ,GAAG,IAAI,OAAO,EAAE,CAAC,CAAC;AAC/C,QAAQ,OAAO,cAAc,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACvD,KAAK;AACL,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;AACpB,QAAQ,IAAI,GAAG,CAAC,CAAC;AACjB,YAAY,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACnC,QAAQ,QAAQ,KAAK,QAAQ,GAAG,IAAI,OAAO,EAAE,CAAC,CAAC;AAC/C,QAAQ,MAAM,SAAS,GAAG,cAAc,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AACxE,QAAQ,OAAO,SAAS,CAAC;AACzB,KAAK;AACL,IAAI,OAAO,GAAG,CAAC;AACf,CAAC,CAAC;AACF,MAAM,mBAAmB,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK;AAC1C,IAAI,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE;AAC1B,QAAQ,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;AAChD,QAAQ,IAAI,GAAG,CAAC,CAAC,EAAE;AACnB,YAAY,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC,SAAS;AACT,QAAQ,SAAS,KAAK,SAAS,GAAG,IAAI,OAAO,EAAE,CAAC,CAAC;AACjD,QAAQ,OAAO,cAAc,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACxD,KAAK;AACL,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;AACpB,QAAQ,IAAI,GAAG,CAAC,CAAC;AACjB,YAAY,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACnC,QAAQ,SAAS,KAAK,SAAS,GAAG,IAAI,OAAO,EAAE,CAAC,CAAC;AACjD,QAAQ,MAAM,SAAS,GAAG,cAAc,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AACzE,QAAQ,OAAO,SAAS,CAAC;AACzB,KAAK;AACL,IAAI,OAAO,GAAG,CAAC;AACf,CAAC,CAAC;AACF,IAAI,SAAS,GAAG,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,CAAC;AAC5D;AACA,eAAe,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE;AACnC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACxB,QAAQ,MAAM,IAAI,SAAS,CAAC,uBAAuB,CAAC,CAAC;AACrD,KAAK;AACL,IAAI,GAAG,KAAK,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3B,IAAI,QAAQ,GAAG,CAAC,GAAG;AACnB,QAAQ,KAAK,KAAK;AAClB,YAAY,IAAI,OAAO,GAAG,CAAC,CAAC,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;AACrD,gBAAgB,MAAM,IAAI,SAAS,CAAC,yCAAyC,CAAC,CAAC;AAC/E,aAAa;AACb,YAAY,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACnC,QAAQ,KAAK,KAAK;AAClB,YAAY,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS,EAAE;AACvD,gBAAgB,MAAM,IAAI,gBAAgB,CAAC,oEAAoE,CAAC,CAAC;AACjH,aAAa;AACb,QAAQ,KAAK,IAAI,CAAC;AAClB,QAAQ,KAAK,KAAK;AAClB,YAAY,OAAO,WAAW,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AAChD,QAAQ;AACR,YAAY,MAAM,IAAI,gBAAgB,CAAC,8CAA8C,CAAC,CAAC;AACvF,KAAK;AACL,CAAC;AACD;AACA,MAAM,GAAG,GAAG,CAAC,GAAG,KAAK,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAC/C,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,KAAK;AAC1C,IAAI,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,GAAG,KAAK,KAAK,EAAE;AACpD,QAAQ,MAAM,IAAI,SAAS,CAAC,kEAAkE,CAAC,CAAC;AAChG,KAAK;AACL,IAAI,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE;AAC7E,QAAQ,MAAM,IAAI,SAAS,CAAC,CAAC,sEAAsE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9G,KAAK;AACL,IAAI,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,GAAG,KAAK,GAAG,EAAE;AAClD,QAAQ,MAAM,IAAI,SAAS,CAAC,CAAC,6DAA6D,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACnG,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AACF,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,KAAK;AAC1D,IAAI,IAAI,GAAG,YAAY,UAAU;AACjC,QAAQ,OAAO;AACf,IAAI,IAAI,QAAQ,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;AAChC,QAAQ,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;AAC7D,YAAY,OAAO;AACnB,QAAQ,MAAM,IAAI,SAAS,CAAC,CAAC,uHAAuH,CAAC,CAAC,CAAC;AACvJ,KAAK;AACL,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;AACzB,QAAQ,MAAM,IAAI,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,YAAY,EAAE,QAAQ,GAAG,cAAc,GAAG,IAAI,CAAC,CAAC,CAAC;AACzG,KAAK;AACL,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC/B,QAAQ,MAAM,IAAI,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,4DAA4D,CAAC,CAAC,CAAC;AACvG,KAAK;AACL,CAAC,CAAC;AACF,MAAM,mBAAmB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,KAAK;AAC3D,IAAI,IAAI,QAAQ,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;AAChC,QAAQ,QAAQ,KAAK;AACrB,YAAY,KAAK,MAAM;AACvB,gBAAgB,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;AACtE,oBAAoB,OAAO;AAC3B,gBAAgB,MAAM,IAAI,SAAS,CAAC,CAAC,gDAAgD,CAAC,CAAC,CAAC;AACxF,YAAY,KAAK,QAAQ;AACzB,gBAAgB,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;AACrE,oBAAoB,OAAO;AAC3B,gBAAgB,MAAM,IAAI,SAAS,CAAC,CAAC,+CAA+C,CAAC,CAAC,CAAC;AACvF,SAAS;AACT,KAAK;AACL,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;AACzB,QAAQ,MAAM,IAAI,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,QAAQ,GAAG,cAAc,GAAG,IAAI,CAAC,CAAC,CAAC;AAC3F,KAAK;AACL,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC/B,QAAQ,MAAM,IAAI,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,iEAAiE,CAAC,CAAC,CAAC;AAC5G,KAAK;AACL,IAAI,IAAI,KAAK,KAAK,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE;AACnD,QAAQ,MAAM,IAAI,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,qEAAqE,CAAC,CAAC,CAAC;AAChH,KAAK;AACL,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE;AACtD,QAAQ,MAAM,IAAI,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,wEAAwE,CAAC,CAAC,CAAC;AACnH,KAAK;AACL,IAAI,IAAI,GAAG,CAAC,SAAS,IAAI,KAAK,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE;AACvE,QAAQ,MAAM,IAAI,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,sEAAsE,CAAC,CAAC,CAAC;AACjH,KAAK;AACL,IAAI,IAAI,GAAG,CAAC,SAAS,IAAI,KAAK,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE;AACxE,QAAQ,MAAM,IAAI,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,uEAAuE,CAAC,CAAC,CAAC;AAClH,KAAK;AACL,CAAC,CAAC;AACF,SAAS,YAAY,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;AACjD,IAAI,MAAM,SAAS,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;AAC1C,QAAQ,GAAG,KAAK,KAAK;AACrB,QAAQ,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;AAC/B,QAAQ,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvC,IAAI,IAAI,SAAS,EAAE;AACnB,QAAQ,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AACtD,KAAK;AACL,SAAS;AACT,QAAQ,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AACvD,KAAK;AACL,CAAC;AACD,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AACpC,MAAM,mBAAmB,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAC/D;AACA,SAAS,YAAY,CAAC,GAAG,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,eAAe,EAAE,UAAU,EAAE;AAC7F,IAAI,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,IAAI,eAAe,EAAE,IAAI,KAAK,SAAS,EAAE;AAC9E,QAAQ,MAAM,IAAI,GAAG,CAAC,gEAAgE,CAAC,CAAC;AACxF,KAAK;AACL,IAAI,IAAI,CAAC,eAAe,IAAI,eAAe,CAAC,IAAI,KAAK,SAAS,EAAE;AAChE,QAAQ,OAAO,IAAI,GAAG,EAAE,CAAC;AACzB,KAAK;AACL,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC;AAC5C,QAAQ,eAAe,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;AACzC,QAAQ,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;AAC/F,QAAQ,MAAM,IAAI,GAAG,CAAC,uFAAuF,CAAC,CAAC;AAC/G,KAAK;AACL,IAAI,IAAI,UAAU,CAAC;AACnB,IAAI,IAAI,gBAAgB,KAAK,SAAS,EAAE;AACxC,QAAQ,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,GAAG,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AACpG,KAAK;AACL,SAAS;AACT,QAAQ,UAAU,GAAG,iBAAiB,CAAC;AACvC,KAAK;AACL,IAAI,KAAK,MAAM,SAAS,IAAI,eAAe,CAAC,IAAI,EAAE;AAClD,QAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;AACxC,YAAY,MAAM,IAAI,gBAAgB,CAAC,CAAC,4BAA4B,EAAE,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAAC;AACtG,SAAS;AACT,QAAQ,IAAI,UAAU,CAAC,SAAS,CAAC,KAAK,SAAS,EAAE;AACjD,YAAY,MAAM,IAAI,GAAG,CAAC,CAAC,4BAA4B,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;AAClF,SAAS;AACT,QAAQ,IAAI,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,eAAe,CAAC,SAAS,CAAC,KAAK,SAAS,EAAE;AACnF,YAAY,MAAM,IAAI,GAAG,CAAC,CAAC,4BAA4B,EAAE,SAAS,CAAC,6BAA6B,CAAC,CAAC,CAAC;AACnG,SAAS;AACT,KAAK;AACL,IAAI,OAAO,IAAI,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC;AACD;AACA,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,UAAU,KAAK;AACnD,IAAI,IAAI,UAAU,KAAK,SAAS;AAChC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,EAAE;AACvF,QAAQ,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,oCAAoC,CAAC,CAAC,CAAC;AAC9E,KAAK;AACL,IAAI,IAAI,CAAC,UAAU,EAAE;AACrB,QAAQ,OAAO,SAAS,CAAC;AACzB,KAAK;AACL,IAAI,OAAO,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;AAC/B,CAAC,CAAC;AACF,IAAI,oBAAoB,GAAG,kBAAkB,CAAC;AAC9C;AACA,MAAM,QAAQ,GAAG,OAAO,GAAG,KAAK;AAChC,IAAI,IAAI,GAAG,YAAY,UAAU,EAAE;AACnC,QAAQ,OAAO;AACf,YAAY,GAAG,EAAE,KAAK;AACtB,YAAY,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC;AAC1B,SAAS,CAAC;AACV,KAAK;AACL,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE;AAC3B,QAAQ,MAAM,IAAI,SAAS,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;AAC1E,KAAK;AACL,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE;AAC1B,QAAQ,MAAM,IAAI,SAAS,CAAC,uDAAuD,CAAC,CAAC;AACrF,KAAK;AACL,IAAI,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC3F,IAAI,OAAO,GAAG,CAAC;AACf,CAAC,CAAC;AACF,IAAI,UAAU,GAAG,QAAQ,CAAC;AAC1B;AACA,eAAe,SAAS,CAAC,GAAG,EAAE;AAC9B,IAAI,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AACD;AACA,SAAS,SAAS,CAAC,GAAG,EAAE,SAAS,EAAE;AACnC,IAAI,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,IAAI,QAAQ,GAAG;AACf,QAAQ,KAAK,OAAO,CAAC;AACrB,QAAQ,KAAK,OAAO,CAAC;AACrB,QAAQ,KAAK,OAAO;AACpB,YAAY,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC1C,QAAQ,KAAK,OAAO,CAAC;AACrB,QAAQ,KAAK,OAAO,CAAC;AACrB,QAAQ,KAAK,OAAO;AACpB,YAAY,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AAC7E,QAAQ,KAAK,OAAO,CAAC;AACrB,QAAQ,KAAK,OAAO,CAAC;AACrB,QAAQ,KAAK,OAAO;AACpB,YAAY,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC;AACvD,QAAQ,KAAK,OAAO,CAAC;AACrB,QAAQ,KAAK,OAAO,CAAC;AACrB,QAAQ,KAAK,OAAO;AACpB,YAAY,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,UAAU,EAAE,CAAC;AAC7E,QAAQ,KAAK,SAAS;AACtB,YAAY,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AACvC,QAAQ,KAAK,OAAO;AACpB,YAAY,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC;AAC5C,QAAQ;AACR,YAAY,MAAM,IAAI,gBAAgB,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,2DAA2D,CAAC,CAAC,CAAC;AAChH,KAAK;AACL,CAAC;AACD;AACA,eAAe,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;AAC7C,IAAI,IAAI,KAAK,KAAK,MAAM,EAAE;AAC1B,QAAQ,GAAG,GAAG,MAAM,SAAS,CAAC,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC5D,KAAK;AACL,IAAI,IAAI,KAAK,KAAK,QAAQ,EAAE;AAC5B,QAAQ,GAAG,GAAG,MAAM,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC3D,KAAK;AACL,IAAI,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE;AAC1B,QAAQ,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAC3C,QAAQ,OAAO,GAAG,CAAC;AACnB,KAAK;AACL,IAAI,IAAI,GAAG,YAAY,UAAU,EAAE;AACnC,QAAQ,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AACnC,YAAY,MAAM,IAAI,SAAS,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;AAChE,SAAS;AACT,QAAQ,OAAO,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACrH,KAAK;AACL,IAAI,MAAM,IAAI,SAAS,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC,CAAC;AACtF,CAAC;AACD;AACA,MAAM,MAAM,GAAG,OAAO,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,KAAK;AACpD,IAAI,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;AAC7D,IAAI,cAAc,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AACnC,IAAI,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;AAC1D,IAAI,IAAI;AACR,QAAQ,OAAO,MAAM,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;AACnF,KAAK;AACL,IAAI,MAAM;AACV,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,CAAC,CAAC;AACF,IAAI,QAAQ,GAAG,MAAM,CAAC;AACtB;AACA,eAAe,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE;AAClD,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACxB,QAAQ,MAAM,IAAI,UAAU,CAAC,iCAAiC,CAAC,CAAC;AAChE,KAAK;AACL,IAAI,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE;AACjE,QAAQ,MAAM,IAAI,UAAU,CAAC,uEAAuE,CAAC,CAAC;AACtG,KAAK;AACL,IAAI,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,EAAE;AAC1E,QAAQ,MAAM,IAAI,UAAU,CAAC,qCAAqC,CAAC,CAAC;AACpE,KAAK;AACL,IAAI,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE;AACnC,QAAQ,MAAM,IAAI,UAAU,CAAC,qBAAqB,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,IAAI,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,EAAE;AAC3C,QAAQ,MAAM,IAAI,UAAU,CAAC,yCAAyC,CAAC,CAAC;AACxE,KAAK;AACL,IAAI,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;AAC3D,QAAQ,MAAM,IAAI,UAAU,CAAC,uCAAuC,CAAC,CAAC;AACtE,KAAK;AACL,IAAI,IAAI,UAAU,GAAG,EAAE,CAAC;AACxB,IAAI,IAAI,GAAG,CAAC,SAAS,EAAE;AACvB,QAAQ,IAAI;AACZ,YAAY,MAAM,eAAe,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC5D,YAAY,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;AACrE,SAAS;AACT,QAAQ,MAAM;AACd,YAAY,MAAM,IAAI,UAAU,CAAC,iCAAiC,CAAC,CAAC;AACpE,SAAS;AACT,KAAK;AACL,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE;AAC/C,QAAQ,MAAM,IAAI,UAAU,CAAC,2EAA2E,CAAC,CAAC;AAC1G,KAAK;AACL,IAAI,MAAM,UAAU,GAAG;AACvB,QAAQ,GAAG,UAAU;AACrB,QAAQ,GAAG,GAAG,CAAC,MAAM;AACrB,KAAK,CAAC;AACN,IAAI,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AACjH,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC;AACnB,IAAI,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AAC/B,QAAQ,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC;AAC7B,QAAQ,IAAI,OAAO,GAAG,KAAK,SAAS,EAAE;AACtC,YAAY,MAAM,IAAI,UAAU,CAAC,yEAAyE,CAAC,CAAC;AAC5G,SAAS;AACT,KAAK;AACL,IAAI,MAAM,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC;AAC/B,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,GAAG,EAAE;AACzC,QAAQ,MAAM,IAAI,UAAU,CAAC,2DAA2D,CAAC,CAAC;AAC1F,KAAK;AACL,IAAI,MAAM,UAAU,GAAG,OAAO,IAAI,oBAAoB,CAAC,YAAY,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;AACzF,IAAI,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAC5C,QAAQ,MAAM,IAAI,iBAAiB,CAAC,sDAAsD,CAAC,CAAC;AAC5F,KAAK;AACL,IAAI,IAAI,GAAG,EAAE;AACb,QAAQ,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,EAAE;AAC7C,YAAY,MAAM,IAAI,UAAU,CAAC,8BAA8B,CAAC,CAAC;AACjE,SAAS;AACT,KAAK;AACL,SAAS,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,IAAI,EAAE,GAAG,CAAC,OAAO,YAAY,UAAU,CAAC,EAAE;AACtF,QAAQ,MAAM,IAAI,UAAU,CAAC,wDAAwD,CAAC,CAAC;AACvF,KAAK;AACL,IAAI,IAAI,WAAW,GAAG,KAAK,CAAC;AAC5B,IAAI,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;AACnC,QAAQ,GAAG,GAAG,MAAM,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;AACzC,QAAQ,WAAW,GAAG,IAAI,CAAC;AAC3B,QAAQ,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;AAChD,QAAQ,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;AACxB,YAAY,GAAG,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC5C,SAAS;AACT,KAAK;AACL,SAAS;AACT,QAAQ,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;AAChD,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;AAC/J,IAAI,IAAI,SAAS,CAAC;AAClB,IAAI,IAAI;AACR,QAAQ,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC5C,KAAK;AACL,IAAI,MAAM;AACV,QAAQ,MAAM,IAAI,UAAU,CAAC,0CAA0C,CAAC,CAAC;AACzE,KAAK;AACL,IAAI,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;AAC/D,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnB,QAAQ,MAAM,IAAI,8BAA8B,EAAE,CAAC;AACnD,KAAK;AACL,IAAI,IAAI,OAAO,CAAC;AAChB,IAAI,IAAI,GAAG,EAAE;AACb,QAAQ,IAAI;AACZ,YAAY,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC5C,SAAS;AACT,QAAQ,MAAM;AACd,YAAY,MAAM,IAAI,UAAU,CAAC,wCAAwC,CAAC,CAAC;AAC3E,SAAS;AACT,KAAK;AACL,SAAS,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,EAAE;AAC9C,QAAQ,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC9C,KAAK;AACL,SAAS;AACT,QAAQ,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;AAC9B,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,CAAC;AAC/B,IAAI,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS,EAAE;AACrC,QAAQ,MAAM,CAAC,eAAe,GAAG,UAAU,CAAC;AAC5C,KAAK;AACL,IAAI,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE;AAClC,QAAQ,MAAM,CAAC,iBAAiB,GAAG,GAAG,CAAC,MAAM,CAAC;AAC9C,KAAK;AACL,IAAI,IAAI,WAAW,EAAE;AACrB,QAAQ,OAAO,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,CAAC;AAClC,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;AACD;AACA,eAAe,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE;AAChD,IAAI,IAAI,GAAG,YAAY,UAAU,EAAE;AACnC,QAAQ,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAClC,KAAK;AACL,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AACjC,QAAQ,MAAM,IAAI,UAAU,CAAC,4CAA4C,CAAC,CAAC;AAC3E,KAAK;AACL,IAAI,MAAM,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACpF,IAAI,IAAI,MAAM,KAAK,CAAC,EAAE;AACtB,QAAQ,MAAM,IAAI,UAAU,CAAC,qBAAqB,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;AAC7G,IAAI,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,CAAC,eAAe,EAAE,CAAC;AAC5F,IAAI,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;AACnC,QAAQ,OAAO,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC;AAChD,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;AACD;AACA,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;AACxD;AACA,MAAM,MAAM,GAAG,EAAE,CAAC;AAClB,MAAM,IAAI,GAAG,MAAM,GAAG,EAAE,CAAC;AACzB,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;AACtB,MAAM,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC;AACrB,MAAM,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC;AAC1B,MAAM,KAAK,GAAG,mIAAmI,CAAC;AAClJ,IAAI,IAAI,GAAG,CAAC,GAAG,KAAK;AACpB,IAAI,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpC,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;AAChD,QAAQ,MAAM,IAAI,SAAS,CAAC,4BAA4B,CAAC,CAAC;AAC1D,KAAK;AACL,IAAI,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,IAAI,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AAC1C,IAAI,IAAI,WAAW,CAAC;AACpB,IAAI,QAAQ,IAAI;AAChB,QAAQ,KAAK,KAAK,CAAC;AACnB,QAAQ,KAAK,MAAM,CAAC;AACpB,QAAQ,KAAK,QAAQ,CAAC;AACtB,QAAQ,KAAK,SAAS,CAAC;AACvB,QAAQ,KAAK,GAAG;AAChB,YAAY,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC5C,YAAY,MAAM;AAClB,QAAQ,KAAK,QAAQ,CAAC;AACtB,QAAQ,KAAK,SAAS,CAAC;AACvB,QAAQ,KAAK,KAAK,CAAC;AACnB,QAAQ,KAAK,MAAM,CAAC;AACpB,QAAQ,KAAK,GAAG;AAChB,YAAY,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC;AACrD,YAAY,MAAM;AAClB,QAAQ,KAAK,MAAM,CAAC;AACpB,QAAQ,KAAK,OAAO,CAAC;AACrB,QAAQ,KAAK,IAAI,CAAC;AAClB,QAAQ,KAAK,KAAK,CAAC;AACnB,QAAQ,KAAK,GAAG;AAChB,YAAY,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;AACnD,YAAY,MAAM;AAClB,QAAQ,KAAK,KAAK,CAAC;AACnB,QAAQ,KAAK,MAAM,CAAC;AACpB,QAAQ,KAAK,GAAG;AAChB,YAAY,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;AAClD,YAAY,MAAM;AAClB,QAAQ,KAAK,MAAM,CAAC;AACpB,QAAQ,KAAK,OAAO,CAAC;AACrB,QAAQ,KAAK,GAAG;AAChB,YAAY,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;AACnD,YAAY,MAAM;AAClB,QAAQ;AACR,YAAY,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;AACnD,YAAY,MAAM;AAClB,KAAK;AACL,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE;AACpD,QAAQ,OAAO,CAAC,WAAW,CAAC;AAC5B,KAAK;AACL,IAAI,OAAO,WAAW,CAAC;AACvB,CAAC,CAAC;AACF;AACA,MAAM,YAAY,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;AAClF,MAAM,qBAAqB,GAAG,CAAC,UAAU,EAAE,SAAS,KAAK;AACzD,IAAI,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;AACxC,QAAQ,OAAO,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AAC9C,KAAK;AACL,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;AACnC,QAAQ,OAAO,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC3E,KAAK;AACL,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AACF,IAAI,UAAU,GAAG,CAAC,eAAe,EAAE,cAAc,EAAE,OAAO,GAAG,EAAE,KAAK;AACpE,IAAI,IAAI,OAAO,CAAC;AAChB,IAAI,IAAI;AACR,QAAQ,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;AAC7D,KAAK;AACL,IAAI,MAAM;AACV,KAAK;AACL,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AAC5B,QAAQ,MAAM,IAAI,UAAU,CAAC,gDAAgD,CAAC,CAAC;AAC/E,KAAK;AACL,IAAI,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;AAC5B,IAAI,IAAI,GAAG;AACX,SAAS,OAAO,eAAe,CAAC,GAAG,KAAK,QAAQ;AAChD,YAAY,YAAY,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;AACtE,QAAQ,MAAM,IAAI,wBAAwB,CAAC,mCAAmC,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;AAChH,KAAK;AACL,IAAI,MAAM,EAAE,cAAc,GAAG,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;AACpF,IAAI,MAAM,aAAa,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC;AAC9C,IAAI,IAAI,WAAW,KAAK,SAAS;AACjC,QAAQ,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClC,IAAI,IAAI,QAAQ,KAAK,SAAS;AAC9B,QAAQ,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClC,IAAI,IAAI,OAAO,KAAK,SAAS;AAC7B,QAAQ,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClC,IAAI,IAAI,MAAM,KAAK,SAAS;AAC5B,QAAQ,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClC,IAAI,KAAK,MAAM,KAAK,IAAI,IAAI,GAAG,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,EAAE;AAC1D,QAAQ,IAAI,EAAE,KAAK,IAAI,OAAO,CAAC,EAAE;AACjC,YAAY,MAAM,IAAI,wBAAwB,CAAC,CAAC,kBAAkB,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;AAC/G,SAAS;AACT,KAAK;AACL,IAAI,IAAI,MAAM;AACd,QAAQ,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AAC5E,QAAQ,MAAM,IAAI,wBAAwB,CAAC,8BAA8B,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;AAC3G,KAAK;AACL,IAAI,IAAI,OAAO,IAAI,OAAO,CAAC,GAAG,KAAK,OAAO,EAAE;AAC5C,QAAQ,MAAM,IAAI,wBAAwB,CAAC,8BAA8B,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;AAC3G,KAAK;AACL,IAAI,IAAI,QAAQ;AAChB,QAAQ,CAAC,qBAAqB,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,QAAQ,KAAK,QAAQ,GAAG,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE;AACnG,QAAQ,MAAM,IAAI,wBAAwB,CAAC,8BAA8B,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;AAC3G,KAAK;AACL,IAAI,IAAI,SAAS,CAAC;AAClB,IAAI,QAAQ,OAAO,OAAO,CAAC,cAAc;AACzC,QAAQ,KAAK,QAAQ;AACrB,YAAY,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AACrD,YAAY,MAAM;AAClB,QAAQ,KAAK,QAAQ;AACrB,YAAY,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC;AAC/C,YAAY,MAAM;AAClB,QAAQ,KAAK,WAAW;AACxB,YAAY,SAAS,GAAG,CAAC,CAAC;AAC1B,YAAY,MAAM;AAClB,QAAQ;AACR,YAAY,MAAM,IAAI,SAAS,CAAC,oCAAoC,CAAC,CAAC;AACtE,KAAK;AACL,IAAI,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;AACpC,IAAI,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;AACjD,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,SAAS,IAAI,WAAW,KAAK,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,EAAE;AACvF,QAAQ,MAAM,IAAI,wBAAwB,CAAC,8BAA8B,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;AACtG,KAAK;AACL,IAAI,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,EAAE;AACnC,QAAQ,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,EAAE;AAC7C,YAAY,MAAM,IAAI,wBAAwB,CAAC,8BAA8B,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;AAC1G,SAAS;AACT,QAAQ,IAAI,OAAO,CAAC,GAAG,GAAG,GAAG,GAAG,SAAS,EAAE;AAC3C,YAAY,MAAM,IAAI,wBAAwB,CAAC,oCAAoC,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;AACrH,SAAS;AACT,KAAK;AACL,IAAI,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,EAAE;AACnC,QAAQ,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,EAAE;AAC7C,YAAY,MAAM,IAAI,wBAAwB,CAAC,8BAA8B,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;AAC1G,SAAS;AACT,QAAQ,IAAI,OAAO,CAAC,GAAG,IAAI,GAAG,GAAG,SAAS,EAAE;AAC5C,YAAY,MAAM,IAAI,UAAU,CAAC,oCAAoC,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;AACvG,SAAS;AACT,KAAK;AACL,IAAI,IAAI,WAAW,EAAE;AACrB,QAAQ,MAAM,GAAG,GAAG,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;AACtC,QAAQ,MAAM,GAAG,GAAG,OAAO,WAAW,KAAK,QAAQ,GAAG,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;AACtF,QAAQ,IAAI,GAAG,GAAG,SAAS,GAAG,GAAG,EAAE;AACnC,YAAY,MAAM,IAAI,UAAU,CAAC,0DAA0D,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;AAC7H,SAAS;AACT,QAAQ,IAAI,GAAG,GAAG,CAAC,GAAG,SAAS,EAAE;AACjC,YAAY,MAAM,IAAI,wBAAwB,CAAC,+DAA+D,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;AAChJ,SAAS;AACT,KAAK;AACL,IAAI,OAAO,OAAO,CAAC;AACnB,CAAC,CAAC;AACF;AACA,eAAe,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE;AAC5C,IAAI,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;AAC5D,IAAI,IAAI,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,eAAe,CAAC,GAAG,KAAK,KAAK,EAAE;AAClG,QAAQ,MAAM,IAAI,UAAU,CAAC,qCAAqC,CAAC,CAAC;AACpE,KAAK;AACL,IAAI,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,eAAe,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACpF,IAAI,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,CAAC,eAAe,EAAE,CAAC;AAC1E,IAAI,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;AACnC,QAAQ,OAAO,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC;AAChD,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;AACD;AACA,MAAM,IAAI,GAAG,OAAO,GAAG,EAAE,GAAG,EAAE,IAAI,KAAK;AACvC,IAAI,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AAC3D,IAAI,cAAc,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AACnC,IAAI,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;AACvG,IAAI,OAAO,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;AACrC,CAAC,CAAC;AACF,IAAI,MAAM,GAAG,IAAI,CAAC;AAClB;AACA,MAAM,aAAa,CAAC;AACpB,IAAI,WAAW,CAAC,OAAO,EAAE;AACzB,QAAQ,IAAI,EAAE,OAAO,YAAY,UAAU,CAAC,EAAE;AAC9C,YAAY,MAAM,IAAI,SAAS,CAAC,2CAA2C,CAAC,CAAC;AAC7E,SAAS;AACT,QAAQ,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;AAChC,KAAK;AACL,IAAI,kBAAkB,CAAC,eAAe,EAAE;AACxC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACnC,YAAY,MAAM,IAAI,SAAS,CAAC,4CAA4C,CAAC,CAAC;AAC9E,SAAS;AACT,QAAQ,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;AAChD,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,oBAAoB,CAAC,iBAAiB,EAAE;AAC5C,QAAQ,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACrC,YAAY,MAAM,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAC;AAChF,SAAS;AACT,QAAQ,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;AACpD,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,MAAM,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE;AAC7B,QAAQ,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAChE,YAAY,MAAM,IAAI,UAAU,CAAC,iFAAiF,CAAC,CAAC;AACpH,SAAS;AACT,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,kBAAkB,CAAC,EAAE;AAC3E,YAAY,MAAM,IAAI,UAAU,CAAC,2EAA2E,CAAC,CAAC;AAC9G,SAAS;AACT,QAAQ,MAAM,UAAU,GAAG;AAC3B,YAAY,GAAG,IAAI,CAAC,gBAAgB;AACpC,YAAY,GAAG,IAAI,CAAC,kBAAkB;AACtC,SAAS,CAAC;AACV,QAAQ,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;AAChI,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC;AACvB,QAAQ,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AACnC,YAAY,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;AAC5C,YAAY,IAAI,OAAO,GAAG,KAAK,SAAS,EAAE;AAC1C,gBAAgB,MAAM,IAAI,UAAU,CAAC,yEAAyE,CAAC,CAAC;AAChH,aAAa;AACb,SAAS;AACT,QAAQ,MAAM,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC;AACnC,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,GAAG,EAAE;AAC7C,YAAY,MAAM,IAAI,UAAU,CAAC,2DAA2D,CAAC,CAAC;AAC9F,SAAS;AACT,QAAQ,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AAC9C,QAAQ,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;AACpC,QAAQ,IAAI,GAAG,EAAE;AACjB,YAAY,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AACtD,SAAS;AACT,QAAQ,IAAI,eAAe,CAAC;AAC5B,QAAQ,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACnC,YAAY,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAC5F,SAAS;AACT,aAAa;AACb,YAAY,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACjD,SAAS;AACT,QAAQ,MAAM,IAAI,GAAG,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;AAC3E,QAAQ,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AACvD,QAAQ,MAAM,GAAG,GAAG;AACpB,YAAY,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC;AACxC,YAAY,OAAO,EAAE,EAAE;AACvB,SAAS,CAAC;AACV,QAAQ,IAAI,GAAG,EAAE;AACjB,YAAY,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAClD,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACrC,YAAY,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC;AACjD,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACnC,YAAY,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AAC5D,SAAS;AACT,QAAQ,OAAO,GAAG,CAAC;AACnB,KAAK;AACL,CAAC;AACD;AACA,MAAM,WAAW,CAAC;AAClB,IAAI,WAAW,CAAC,OAAO,EAAE;AACzB,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;AACrD,KAAK;AACL,IAAI,kBAAkB,CAAC,eAAe,EAAE;AACxC,QAAQ,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;AAC5D,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,MAAM,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE;AAC7B,QAAQ,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC7D,QAAQ,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE;AACvC,YAAY,MAAM,IAAI,SAAS,CAAC,2DAA2D,CAAC,CAAC;AAC7F,SAAS;AACT,QAAQ,OAAO,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;AAClE,KAAK;AACL,CAAC;AACD;AACA,SAAS,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE;AACrC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACjC,QAAQ,MAAM,IAAI,SAAS,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AACtD,KAAK;AACL,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC;AACD,MAAM,UAAU,CAAC;AACjB,IAAI,WAAW,CAAC,OAAO,GAAG,EAAE,EAAE;AAC9B,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AAChC,YAAY,MAAM,IAAI,SAAS,CAAC,kCAAkC,CAAC,CAAC;AACpE,SAAS;AACT,QAAQ,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;AAChC,KAAK;AACL,IAAI,SAAS,CAAC,MAAM,EAAE;AACtB,QAAQ,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;AAC1D,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,UAAU,CAAC,OAAO,EAAE;AACxB,QAAQ,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;AAC3D,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,WAAW,CAAC,QAAQ,EAAE;AAC1B,QAAQ,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAC5D,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,MAAM,CAAC,KAAK,EAAE;AAClB,QAAQ,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;AACzD,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,YAAY,CAAC,KAAK,EAAE;AACxB,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACvC,YAAY,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,aAAa,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC;AAC5F,SAAS;AACT,aAAa,IAAI,KAAK,YAAY,IAAI,EAAE;AACxC,YAAY,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,aAAa,CAAC,cAAc,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;AACnG,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;AACvF,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,iBAAiB,CAAC,KAAK,EAAE;AAC7B,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACvC,YAAY,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,aAAa,CAAC,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC;AACjG,SAAS;AACT,aAAa,IAAI,KAAK,YAAY,IAAI,EAAE;AACxC,YAAY,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,aAAa,CAAC,mBAAmB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;AACxG,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;AACvF,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;AAC1C,YAAY,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;AACzE,SAAS;AACT,aAAa,IAAI,KAAK,YAAY,IAAI,EAAE;AACxC,YAAY,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,aAAa,CAAC,aAAa,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;AAClG,SAAS;AACT,aAAa,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC5C,YAAY,IAAI,CAAC,QAAQ,GAAG;AAC5B,gBAAgB,GAAG,IAAI,CAAC,QAAQ;AAChC,gBAAgB,GAAG,EAAE,aAAa,CAAC,aAAa,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AAClF,aAAa,CAAC;AACd,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,aAAa,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC;AAC3F,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,CAAC;AACD;AACA,MAAM,OAAO,SAAS,UAAU,CAAC;AACjC,IAAI,kBAAkB,CAAC,eAAe,EAAE;AACxC,QAAQ,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;AAChD,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,MAAM,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE;AAC7B,QAAQ,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACnF,QAAQ,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACtD,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC;AACtD,YAAY,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AACtD,YAAY,IAAI,CAAC,gBAAgB,CAAC,GAAG,KAAK,KAAK,EAAE;AACjD,YAAY,MAAM,IAAI,UAAU,CAAC,qCAAqC,CAAC,CAAC;AACxE,SAAS;AACT,QAAQ,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AACtC,KAAK;AACL,CAAC;AACD;AACA,MAAM,KAAK,GAAG,CAAC,KAAK,EAAE,WAAW,KAAK;AACtC,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,EAAE;AAC7C,QAAQ,MAAM,IAAI,UAAU,CAAC,CAAC,EAAE,WAAW,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAClE,KAAK;AACL,CAAC,CAAC;AACF,eAAe,sBAAsB,CAAC,GAAG,EAAE,eAAe,EAAE;AAC5D,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACxB,QAAQ,MAAM,IAAI,SAAS,CAAC,uBAAuB,CAAC,CAAC;AACrD,KAAK;AACL,IAAI,eAAe,KAAK,eAAe,GAAG,QAAQ,CAAC,CAAC;AACpD,IAAI,IAAI,eAAe,KAAK,QAAQ;AACpC,QAAQ,eAAe,KAAK,QAAQ;AACpC,QAAQ,eAAe,KAAK,QAAQ,EAAE;AACtC,QAAQ,MAAM,IAAI,SAAS,CAAC,6DAA6D,CAAC,CAAC;AAC3F,KAAK;AACL,IAAI,IAAI,UAAU,CAAC;AACnB,IAAI,QAAQ,GAAG,CAAC,GAAG;AACnB,QAAQ,KAAK,IAAI;AACjB,YAAY,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,yBAAyB,CAAC,CAAC;AACtD,YAAY,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,8BAA8B,CAAC,CAAC;AACzD,YAAY,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,8BAA8B,CAAC,CAAC;AACzD,YAAY,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;AAC5E,YAAY,MAAM;AAClB,QAAQ,KAAK,KAAK;AAClB,YAAY,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,uCAAuC,CAAC,CAAC;AACpE,YAAY,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,4BAA4B,CAAC,CAAC;AACvD,YAAY,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;AAClE,YAAY,MAAM;AAClB,QAAQ,KAAK,KAAK;AAClB,YAAY,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,0BAA0B,CAAC,CAAC;AACrD,YAAY,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,yBAAyB,CAAC,CAAC;AACpD,YAAY,UAAU,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;AAC9D,YAAY,MAAM;AAClB,QAAQ,KAAK,KAAK;AAClB,YAAY,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,2BAA2B,CAAC,CAAC;AACtD,YAAY,UAAU,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;AACpD,YAAY,MAAM;AAClB,QAAQ;AACR,YAAY,MAAM,IAAI,gBAAgB,CAAC,mDAAmD,CAAC,CAAC;AAC5F,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;AAC5D,IAAI,OAAO,MAAM,CAAC,MAAM,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC,CAAC;AACzD,CAAC;AACD;AACA,SAAS,aAAa,CAAC,GAAG,EAAE;AAC5B,IAAI,QAAQ,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AACtD,QAAQ,KAAK,IAAI,CAAC;AAClB,QAAQ,KAAK,IAAI;AACjB,YAAY,OAAO,KAAK,CAAC;AACzB,QAAQ,KAAK,IAAI;AACjB,YAAY,OAAO,IAAI,CAAC;AACxB,QAAQ,KAAK,IAAI;AACjB,YAAY,OAAO,KAAK,CAAC;AACzB,QAAQ;AACR,YAAY,MAAM,IAAI,gBAAgB,CAAC,gDAAgD,CAAC,CAAC;AACzF,KAAK;AACL,CAAC;AACD,SAAS,UAAU,CAAC,IAAI,EAAE;AAC1B,IAAI,QAAQ,IAAI;AAChB,QAAQ,OAAO,IAAI,KAAK,QAAQ;AAChC,QAAQ,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AAChC,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;AACpC,CAAC;AACD,SAAS,SAAS,CAAC,GAAG,EAAE;AACxB,IAAI,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AACD,SAAS,KAAK,CAAC,GAAG,EAAE;AACpB,IAAI,IAAI,OAAO,eAAe,KAAK,UAAU,EAAE;AAC/C,QAAQ,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC;AACpC,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3C,CAAC;AACD,MAAM,WAAW,CAAC;AAClB,IAAI,WAAW,CAAC,IAAI,EAAE;AACtB,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AACrC,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AAC/B,YAAY,MAAM,IAAI,WAAW,CAAC,4BAA4B,CAAC,CAAC;AAChE,SAAS;AACT,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;AACjC,KAAK;AACL,IAAI,MAAM,MAAM,CAAC,eAAe,EAAE,KAAK,EAAE;AACzC,QAAQ,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,eAAe,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,CAAC;AACtE,QAAQ,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;AACvC,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK;AAC3D,YAAY,IAAI,SAAS,GAAG,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC;AAC5C,YAAY,IAAI,SAAS,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AACtD,gBAAgB,SAAS,GAAG,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC;AAC5C,aAAa;AACb,YAAY,IAAI,SAAS,IAAI,OAAO,GAAG,CAAC,GAAG,KAAK,QAAQ,EAAE;AAC1D,gBAAgB,SAAS,GAAG,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC;AAC5C,aAAa;AACb,YAAY,IAAI,SAAS,IAAI,OAAO,GAAG,CAAC,GAAG,KAAK,QAAQ,EAAE;AAC1D,gBAAgB,SAAS,GAAG,GAAG,CAAC,GAAG,KAAK,KAAK,CAAC;AAC9C,aAAa;AACb,YAAY,IAAI,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AACzD,gBAAgB,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC3D,aAAa;AACb,YAAY,IAAI,SAAS,EAAE;AAC3B,gBAAgB,QAAQ,GAAG;AAC3B,oBAAoB,KAAK,OAAO;AAChC,wBAAwB,SAAS,GAAG,GAAG,CAAC,GAAG,KAAK,OAAO,CAAC;AACxD,wBAAwB,MAAM;AAC9B,oBAAoB,KAAK,QAAQ;AACjC,wBAAwB,SAAS,GAAG,GAAG,CAAC,GAAG,KAAK,WAAW,CAAC;AAC5D,wBAAwB,MAAM;AAC9B,oBAAoB,KAAK,OAAO;AAChC,wBAAwB,SAAS,GAAG,GAAG,CAAC,GAAG,KAAK,OAAO,CAAC;AACxD,wBAAwB,MAAM;AAC9B,oBAAoB,KAAK,OAAO;AAChC,wBAAwB,SAAS,GAAG,GAAG,CAAC,GAAG,KAAK,OAAO,CAAC;AACxD,wBAAwB,MAAM;AAC9B,oBAAoB,KAAK,SAAS;AAClC,wBAAwB,SAAS,GAAG,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC;AAC1D,wBAAwB,MAAM;AAC9B,oBAAoB,KAAK,OAAO;AAChC,wBAAwB,SAAS,GAAG,GAAG,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,GAAG,KAAK,OAAO,CAAC;AACjF,wBAAwB,MAAM;AAC9B,iBAAiB;AACjB,aAAa;AACb,YAAY,OAAO,SAAS,CAAC;AAC7B,SAAS,CAAC,CAAC;AACX,QAAQ,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC;AAC9C,QAAQ,IAAI,MAAM,KAAK,CAAC,EAAE;AAC1B,YAAY,MAAM,IAAI,iBAAiB,EAAE,CAAC;AAC1C,SAAS;AACT,QAAQ,IAAI,MAAM,KAAK,CAAC,EAAE;AAC1B,YAAY,MAAM,KAAK,GAAG,IAAI,wBAAwB,EAAE,CAAC;AACzD,YAAY,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;AACrC,YAAY,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,mBAAmB;AAC7D,gBAAgB,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE;AAC9C,oBAAoB,IAAI;AACxB,wBAAwB,MAAM,MAAM,kBAAkB,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC1E,qBAAqB;AACrB,oBAAoB,MAAM,GAAG;AAC7B,iBAAiB;AACjB,aAAa,CAAC;AACd,YAAY,MAAM,KAAK,CAAC;AACxB,SAAS;AACT,QAAQ,OAAO,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC1D,KAAK;AACL,CAAC;AACD,eAAe,kBAAkB,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE;AACnD,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACjE,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;AACnC,QAAQ,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;AAChE,QAAQ,IAAI,GAAG,YAAY,UAAU,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE;AAChE,YAAY,MAAM,IAAI,WAAW,CAAC,8CAA8C,CAAC,CAAC;AAClF,SAAS;AACT,QAAQ,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AAC1B,KAAK;AACL,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACvB,CAAC;AACD,SAAS,iBAAiB,CAAC,IAAI,EAAE;AACjC,IAAI,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;AACtC,IAAI,MAAM,WAAW,GAAG,OAAO,eAAe,EAAE,KAAK,KAAK,GAAG,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;AAC7F,IAAI,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE;AACzC,QAAQ,IAAI,EAAE;AACd,YAAY,KAAK,EAAE,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AACzC,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,KAAK;AAC/B,YAAY,QAAQ,EAAE,KAAK;AAC3B,SAAS;AACT,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,WAAW,CAAC;AACvB,CAAC;AACD;AACA,MAAM,SAAS,GAAG,OAAO,GAAG,EAAE,OAAO,EAAE,OAAO,KAAK;AACnD,IAAI,IAAI,UAAU,CAAC;AACnB,IAAI,IAAI,EAAE,CAAC;AACX,IAAI,IAAI,QAAQ,GAAG,KAAK,CAAC;AACzB,IAAI,IAAI,OAAO,eAAe,KAAK,UAAU,EAAE;AAC/C,QAAQ,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;AAC3C,QAAQ,EAAE,GAAG,UAAU,CAAC,MAAM;AAC9B,YAAY,QAAQ,GAAG,IAAI,CAAC;AAC5B,YAAY,UAAU,CAAC,KAAK,EAAE,CAAC;AAC/B,SAAS,EAAE,OAAO,CAAC,CAAC;AACpB,KAAK;AACL,IAAI,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE;AAC3C,QAAQ,MAAM,EAAE,UAAU,GAAG,UAAU,CAAC,MAAM,GAAG,SAAS;AAC1D,QAAQ,QAAQ,EAAE,QAAQ;AAC1B,QAAQ,OAAO,EAAE,OAAO,CAAC,OAAO;AAChC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK;AACtB,QAAQ,IAAI,QAAQ;AACpB,YAAY,MAAM,IAAI,WAAW,EAAE,CAAC;AACpC,QAAQ,MAAM,GAAG,CAAC;AAClB,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,EAAE,KAAK,SAAS;AACxB,QAAQ,YAAY,CAAC,EAAE,CAAC,CAAC;AACzB,IAAI,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;AACjC,QAAQ,MAAM,IAAI,SAAS,CAAC,yDAAyD,CAAC,CAAC;AACvF,KAAK;AACL,IAAI,IAAI;AACR,QAAQ,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;AACrC,KAAK;AACL,IAAI,MAAM;AACV,QAAQ,MAAM,IAAI,SAAS,CAAC,4DAA4D,CAAC,CAAC;AAC1F,KAAK;AACL,CAAC,CAAC;AACF,IAAI,WAAW,GAAG,SAAS,CAAC;AAC5B;AACA,SAAS,mBAAmB,GAAG;AAC/B,IAAI,QAAQ,OAAO,aAAa,KAAK,WAAW;AAChD,SAAS,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,SAAS,KAAK,oBAAoB,CAAC;AAC1F,SAAS,OAAO,WAAW,KAAK,WAAW,IAAI,WAAW,KAAK,QAAQ,CAAC,EAAE;AAC1E,CAAC;AACD,IAAI,UAAU,CAAC;AACf,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,UAAU,GAAG,cAAc,CAAC,EAAE;AAC5F,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC;AACxB,IAAI,MAAM,OAAO,GAAG,SAAS,CAAC;AAC9B,IAAI,UAAU,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AACtC,CAAC;AACD,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC;AAC3B,SAAS,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAE;AAC9C,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;AACrD,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,IAAI,EAAE,KAAK,IAAI,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,IAAI,WAAW,EAAE;AACrG,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,IAAI,EAAE,MAAM,IAAI,KAAK,CAAC;AAC1B,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;AAC7B,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AACvC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE;AAChE,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC;AACD,MAAM,YAAY,CAAC;AACnB,IAAI,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE;AAC9B,QAAQ,IAAI,EAAE,GAAG,YAAY,GAAG,CAAC,EAAE;AACnC,YAAY,MAAM,IAAI,SAAS,CAAC,gCAAgC,CAAC,CAAC;AAClE,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACtC,QAAQ,IAAI,CAAC,QAAQ,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC7E,QAAQ,IAAI,CAAC,gBAAgB;AAC7B,YAAY,OAAO,OAAO,EAAE,eAAe,KAAK,QAAQ,GAAG,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;AAC3F,QAAQ,IAAI,CAAC,iBAAiB;AAC9B,YAAY,OAAO,OAAO,EAAE,gBAAgB,KAAK,QAAQ,GAAG,OAAO,EAAE,gBAAgB,GAAG,KAAK,CAAC;AAC9F,QAAQ,IAAI,CAAC,YAAY,GAAG,OAAO,OAAO,EAAE,WAAW,KAAK,QAAQ,GAAG,OAAO,EAAE,WAAW,GAAG,MAAM,CAAC;AACrG,QAAQ,IAAI,OAAO,GAAG,SAAS,CAAC,KAAK,SAAS,EAAE;AAChD,YAAY,IAAI,CAAC,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;AAC/C,YAAY,IAAI,gBAAgB,CAAC,OAAO,GAAG,SAAS,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE;AAC3E,gBAAgB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AACtD,gBAAgB,IAAI,CAAC,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAClE,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,WAAW,GAAG;AAClB,QAAQ,OAAO,OAAO,IAAI,CAAC,cAAc,KAAK,QAAQ;AACtD,cAAc,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,iBAAiB;AACvE,cAAc,KAAK,CAAC;AACpB,KAAK;AACL,IAAI,KAAK,GAAG;AACZ,QAAQ,OAAO,OAAO,IAAI,CAAC,cAAc,KAAK,QAAQ;AACtD,cAAc,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY;AAClE,cAAc,KAAK,CAAC;AACpB,KAAK;AACL,IAAI,MAAM,MAAM,CAAC,eAAe,EAAE,KAAK,EAAE;AACzC,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE;AAC3C,YAAY,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;AAChC,SAAS;AACT,QAAQ,IAAI;AACZ,YAAY,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;AAC7D,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,IAAI,GAAG,YAAY,iBAAiB,EAAE;AAClD,gBAAgB,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE;AAClD,oBAAoB,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;AACxC,oBAAoB,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;AAC/D,iBAAiB;AACjB,aAAa;AACb,YAAY,MAAM,GAAG,CAAC;AACtB,SAAS;AACT,KAAK;AACL,IAAI,MAAM,MAAM,GAAG;AACnB,QAAQ,IAAI,IAAI,CAAC,aAAa,IAAI,mBAAmB,EAAE,EAAE;AACzD,YAAY,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;AAC3C,SAAS;AACT,QAAQ,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC3D,QAAQ,IAAI,UAAU,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;AACtD,YAAY,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AAClD,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;AAC1E,SAAS;AACT,QAAQ,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC;AAChH,aAAa,IAAI,CAAC,CAAC,IAAI,KAAK;AAC5B,YAAY,IAAI,CAAC,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAClD,YAAY,IAAI,IAAI,CAAC,MAAM,EAAE;AAC7B,gBAAgB,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAC7C,gBAAgB,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;AACxC,aAAa;AACb,YAAY,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAC7C,YAAY,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;AAC3C,SAAS,CAAC;AACV,aAAa,KAAK,CAAC,CAAC,GAAG,KAAK;AAC5B,YAAY,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;AAC3C,YAAY,MAAM,GAAG,CAAC;AACtB,SAAS,CAAC,CAAC,CAAC;AACZ,QAAQ,MAAM,IAAI,CAAC,aAAa,CAAC;AACjC,KAAK;AACL,CAAC;AACD,SAAS,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE;AAC1C,IAAI,MAAM,GAAG,GAAG,IAAI,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC/C,IAAI,MAAM,YAAY,GAAG,OAAO,eAAe,EAAE,KAAK,KAAK,GAAG,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;AAC9F,IAAI,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE;AAC1C,QAAQ,WAAW,EAAE;AACrB,YAAY,GAAG,EAAE,MAAM,GAAG,CAAC,WAAW,EAAE;AACxC,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,KAAK;AAC/B,SAAS;AACT,QAAQ,KAAK,EAAE;AACf,YAAY,GAAG,EAAE,MAAM,GAAG,CAAC,KAAK,EAAE;AAClC,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,KAAK;AAC/B,SAAS;AACT,QAAQ,MAAM,EAAE;AAChB,YAAY,KAAK,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE;AACrC,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,KAAK;AAC/B,YAAY,QAAQ,EAAE,KAAK;AAC3B,SAAS;AACT,QAAQ,SAAS,EAAE;AACnB,YAAY,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,aAAa;AAC1C,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,KAAK;AAC/B,SAAS;AACT,QAAQ,IAAI,EAAE;AACd,YAAY,KAAK,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE;AAC3C,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,YAAY,EAAE,KAAK;AAC/B,YAAY,QAAQ,EAAE,KAAK;AAC3B,SAAS;AACT,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,YAAY,CAAC;AACxB,CAAC;AACD;AACA,MAAM,MAAM,GAAG,QAAQ,CAAC;AACxB;AACA,SAAS,SAAS,CAAC,GAAG,EAAE;AACxB,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ;AAC/B,QAAQ,MAAM,IAAI,UAAU,CAAC,+DAA+D,CAAC,CAAC;AAC9F,IAAI,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAClD,IAAI,IAAI,MAAM,KAAK,CAAC;AACpB,QAAQ,MAAM,IAAI,UAAU,CAAC,0DAA0D,CAAC,CAAC;AACzF,IAAI,IAAI,MAAM,KAAK,CAAC;AACpB,QAAQ,MAAM,IAAI,UAAU,CAAC,aAAa,CAAC,CAAC;AAC5C,IAAI,IAAI,CAAC,OAAO;AAChB,QAAQ,MAAM,IAAI,UAAU,CAAC,6BAA6B,CAAC,CAAC;AAC5D,IAAI,IAAI,OAAO,CAAC;AAChB,IAAI,IAAI;AACR,QAAQ,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AAClC,KAAK;AACL,IAAI,MAAM;AACV,QAAQ,MAAM,IAAI,UAAU,CAAC,wCAAwC,CAAC,CAAC;AACvE,KAAK;AACL,IAAI,IAAI,MAAM,CAAC;AACf,IAAI,IAAI;AACR,QAAQ,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AACrD,KAAK;AACL,IAAI,MAAM;AACV,QAAQ,MAAM,IAAI,UAAU,CAAC,6CAA6C,CAAC,CAAC;AAC5E,KAAK;AACL,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AACzB,QAAQ,MAAM,IAAI,UAAU,CAAC,wBAAwB,CAAC,CAAC;AACvD,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;AACD;AACA,SAAS,sBAAsB,CAAC,OAAO,EAAE;AACzC,IAAI,MAAM,aAAa,GAAG,OAAO,EAAE,aAAa,IAAI,IAAI,CAAC;AACzD,IAAI,IAAI,OAAO,aAAa,KAAK,QAAQ,IAAI,aAAa,GAAG,IAAI,EAAE;AACnE,QAAQ,MAAM,IAAI,gBAAgB,CAAC,6FAA6F,CAAC,CAAC;AAClI,KAAK;AACL,IAAI,OAAO,aAAa,CAAC;AACzB,CAAC;AACD,eAAe,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE;AAC/C,IAAI,IAAI,SAAS,CAAC;AAClB,IAAI,IAAI,SAAS,CAAC;AAClB,IAAI,QAAQ,GAAG;AACf,QAAQ,KAAK,OAAO,CAAC;AACrB,QAAQ,KAAK,OAAO,CAAC;AACrB,QAAQ,KAAK,OAAO;AACpB,YAAY,SAAS,GAAG;AACxB,gBAAgB,IAAI,EAAE,SAAS;AAC/B,gBAAgB,IAAI,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,gBAAgB,cAAc,EAAE,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAClE,gBAAgB,aAAa,EAAE,sBAAsB,CAAC,OAAO,CAAC;AAC9D,aAAa,CAAC;AACd,YAAY,SAAS,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC3C,YAAY,MAAM;AAClB,QAAQ,KAAK,OAAO,CAAC;AACrB,QAAQ,KAAK,OAAO,CAAC;AACrB,QAAQ,KAAK,OAAO;AACpB,YAAY,SAAS,GAAG;AACxB,gBAAgB,IAAI,EAAE,mBAAmB;AACzC,gBAAgB,IAAI,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,gBAAgB,cAAc,EAAE,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAClE,gBAAgB,aAAa,EAAE,sBAAsB,CAAC,OAAO,CAAC;AAC9D,aAAa,CAAC;AACd,YAAY,SAAS,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC3C,YAAY,MAAM;AAClB,QAAQ,KAAK,UAAU,CAAC;AACxB,QAAQ,KAAK,cAAc,CAAC;AAC5B,QAAQ,KAAK,cAAc,CAAC;AAC5B,QAAQ,KAAK,cAAc;AAC3B,YAAY,SAAS,GAAG;AACxB,gBAAgB,IAAI,EAAE,UAAU;AAChC,gBAAgB,IAAI,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/D,gBAAgB,cAAc,EAAE,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAClE,gBAAgB,aAAa,EAAE,sBAAsB,CAAC,OAAO,CAAC;AAC9D,aAAa,CAAC;AACd,YAAY,SAAS,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AACvE,YAAY,MAAM;AAClB,QAAQ,KAAK,OAAO;AACpB,YAAY,SAAS,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;AAC/D,YAAY,SAAS,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC3C,YAAY,MAAM;AAClB,QAAQ,KAAK,OAAO;AACpB,YAAY,SAAS,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;AAC/D,YAAY,SAAS,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC3C,YAAY,MAAM;AAClB,QAAQ,KAAK,OAAO;AACpB,YAAY,SAAS,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;AAC/D,YAAY,SAAS,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC3C,YAAY,MAAM;AAClB,QAAQ,KAAK,SAAS;AACtB,YAAY,SAAS,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AAC5C,YAAY,SAAS,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC3C,YAAY,MAAM;AAClB,QAAQ,KAAK,OAAO,EAAE;AACtB,YAAY,SAAS,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC3C,YAAY,MAAM,GAAG,GAAG,OAAO,EAAE,GAAG,IAAI,SAAS,CAAC;AAClD,YAAY,QAAQ,GAAG;AACvB,gBAAgB,KAAK,SAAS,CAAC;AAC/B,gBAAgB,KAAK,OAAO;AAC5B,oBAAoB,SAAS,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AAC9C,oBAAoB,MAAM;AAC1B,gBAAgB;AAChB,oBAAoB,MAAM,IAAI,gBAAgB,CAAC,4CAA4C,CAAC,CAAC;AAC7F,aAAa;AACb,YAAY,MAAM;AAClB,SAAS;AACT,QAAQ,KAAK,SAAS,CAAC;AACvB,QAAQ,KAAK,gBAAgB,CAAC;AAC9B,QAAQ,KAAK,gBAAgB,CAAC;AAC9B,QAAQ,KAAK,gBAAgB,EAAE;AAC/B,YAAY,SAAS,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;AACpD,YAAY,MAAM,GAAG,GAAG,OAAO,EAAE,GAAG,IAAI,OAAO,CAAC;AAChD,YAAY,QAAQ,GAAG;AACvB,gBAAgB,KAAK,OAAO,CAAC;AAC7B,gBAAgB,KAAK,OAAO,CAAC;AAC7B,gBAAgB,KAAK,OAAO,EAAE;AAC9B,oBAAoB,SAAS,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;AAClE,oBAAoB,MAAM;AAC1B,iBAAiB;AACjB,gBAAgB,KAAK,QAAQ,CAAC;AAC9B,gBAAgB,KAAK,MAAM;AAC3B,oBAAoB,SAAS,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AAC9C,oBAAoB,MAAM;AAC1B,gBAAgB;AAChB,oBAAoB,MAAM,IAAI,gBAAgB,CAAC,wGAAwG,CAAC,CAAC;AACzJ,aAAa;AACb,YAAY,MAAM;AAClB,SAAS;AACT,QAAQ;AACR,YAAY,MAAM,IAAI,gBAAgB,CAAC,8DAA8D,CAAC,CAAC;AACvG,KAAK;AACL,IAAI,OAAO,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,IAAI,KAAK,EAAE,SAAS,CAAC,CAAC;AAC5F,CAAC;AACD;AACA,eAAe,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE;AAC7C,IAAI,OAAO,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC3C,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,gCAAgC,GAAG,OAAO,qBAAqB,EAAE,cAAc,KAAK;AAC1F;AACA,IAAI,MAAM,gCAAgC,GAAG;AAC7C,QAAQ,GAAG,cAAc;AACzB,QAAQ,WAAW,EAAE,CAAC,oBAAoB,EAAE,eAAe,CAAC;AAC5D,QAAQ,4BAA4B,EAAE,OAAO;AAC7C,QAAQ,0BAA0B,EAAE,MAAM;AAC1C,QAAQ,gBAAgB,EAAE,KAAK;AAC/B,QAAQ,YAAY,EAAE,QAAQ;AAC9B,KAAK,CAAC;AACN;AACA,IAAI,OAAO,KAAK,CAAC,qBAAqB,EAAE;AACxC,QAAQ,MAAM,EAAE,MAAM;AACtB,QAAQ,OAAO,EAAE;AACjB,YAAY,cAAc,EAAE,kBAAkB;AAC9C,SAAS;AACT,QAAQ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,gCAAgC,CAAC;AAC9D,KAAK,CAAC,CAAC;AACP,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA,MAAM,eAAe,CAAC;AACtB,IAAI,MAAM,CAAC;AACX,IAAI,SAAS,CAAC;AACd,IAAI,SAAS,CAAC;AACd,IAAI,EAAE,GAAG,IAAI,CAAC;AACd;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,MAAM,GAAG,OAAO,EAAE,SAAS,GAAG,SAAS,EAAE,SAAS,GAAG,CAAC,EAAE;AACxE,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B,QAAQ,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AACnC,QAAQ,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AACnC,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,MAAM,IAAI,GAAG;AACjB,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAChD,YAAY,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACxE,YAAY,OAAO,CAAC,OAAO,GAAG,CAAC,KAAK,KAAK;AACzC,gBAAgB,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3E,aAAa,CAAC;AACd,YAAY,OAAO,CAAC,SAAS,GAAG,CAAC,KAAK,KAAK;AAC3C,gBAAgB,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;AAC9C,gBAAgB,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9B,aAAa,CAAC;AACd,YAAY,OAAO,CAAC,eAAe,GAAG,CAAC,KAAK,KAAK;AACjD,gBAAgB,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;AAC/C;AACA,gBAAgB,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AACnE,oBAAoB,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACzD,iBAAiB;AACjB,aAAa,CAAC;AACd,SAAS,CAAC,CAAC;AACX,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE;AAC7B,QAAQ,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;AACtB,YAAY,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;AAC9B,SAAS;AACT,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAChD,YAAY,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AACjF;AACA,YAAY,WAAW,CAAC,UAAU,GAAG,MAAM;AAC3C,gBAAgB,OAAO,EAAE,CAAC;AAC1B,aAAa,CAAC;AACd,YAAY,WAAW,CAAC,OAAO,GAAG,CAAC,KAAK,KAAK;AAC7C,gBAAgB,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,8BAA8B,EAAE,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACrG,aAAa,CAAC;AACd,YAAY,WAAW,CAAC,OAAO,GAAG,CAAC,KAAK,KAAK;AAC7C,gBAAgB,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,gCAAgC,EAAE,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACvG,aAAa,CAAC;AACd;AACA,YAAY,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAClE,YAAY,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACjC,SAAS,CAAC,CAAC;AACX,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,OAAO,CAAC,EAAE,EAAE;AACtB,QAAQ,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;AACtB,YAAY,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;AAC9B,SAAS;AACT,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAChD,YAAY,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AAChF;AACA,YAAY,WAAW,CAAC,OAAO,GAAG,CAAC,KAAK,KAAK;AAC7C,gBAAgB,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,8BAA8B,EAAE,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACjG,aAAa,CAAC;AACd,YAAY,WAAW,CAAC,OAAO,GAAG,CAAC,KAAK,KAAK;AAC7C,gBAAgB,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,gCAAgC,EAAE,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACnG,aAAa,CAAC;AACd;AACA,YAAY,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAClE,YAAY,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC1C,YAAY,OAAO,CAAC,SAAS,GAAG,MAAM;AACtC,gBAAgB,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC;AAChD,aAAa,CAAC;AACd,SAAS,CAAC,CAAC;AACX,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,MAAM,UAAU,CAAC,EAAE,EAAE;AACzB,QAAQ,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;AACtB,YAAY,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;AAC9B,SAAS;AACT,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAChD,YAAY,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AACjF;AACA,YAAY,WAAW,CAAC,UAAU,GAAG,MAAM;AAC3C,gBAAgB,OAAO,EAAE,CAAC;AAC1B,aAAa,CAAC;AACd,YAAY,WAAW,CAAC,OAAO,GAAG,CAAC,KAAK,KAAK;AAC7C,gBAAgB,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,iCAAiC,EAAE,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACpG,aAAa,CAAC;AACd,YAAY,WAAW,CAAC,OAAO,GAAG,CAAC,KAAK,KAAK;AAC7C,gBAAgB,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,mCAAmC,EAAE,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACtG,aAAa,CAAC;AACd;AACA,YAAY,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAClE,YAAY,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC7B,SAAS,CAAC,CAAC;AACX,KAAK;AACL;AACA;AACA;AACA,IAAI,MAAM,KAAK,GAAG;AAClB,QAAQ,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;AACtB,YAAY,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;AAC9B,SAAS;AACT,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAChD,YAAY,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AACjF;AACA,YAAY,WAAW,CAAC,UAAU,GAAG,MAAM;AAC3C,gBAAgB,OAAO,EAAE,CAAC;AAC1B,aAAa,CAAC;AACd,YAAY,WAAW,CAAC,OAAO,GAAG,CAAC,KAAK,KAAK;AAC7C,gBAAgB,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,+BAA+B,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1F,aAAa,CAAC;AACd,YAAY,WAAW,CAAC,OAAO,GAAG,CAAC,KAAK,KAAK;AAC7C,gBAAgB,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,iCAAiC,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5F,aAAa,CAAC;AACd;AACA,YAAY,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAClE,YAAY,KAAK,CAAC,KAAK,EAAE,CAAC;AAC1B,SAAS,CAAC,CAAC;AACX,KAAK;AACL;AACA;AACA;AACA,IAAI,KAAK,GAAG;AACZ,QAAQ,IAAI,IAAI,CAAC,EAAE,EAAE;AACrB,YAAY,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;AAC5B,YAAY,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;AAC3B,SAAS;AACT,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,gBAAgB,GAAG,OAAO,GAAG,EAAE,YAAY,EAAE,cAAc,KAAK;AACtE;AACA,IAAI,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;AAChD,IAAI,MAAM,iBAAiB,GAAG,aAAa,CAAC,MAAM,GAAG,aAAa,CAAC,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC;AACnG;AACA,IAAI,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACvC;AACA,IAAI,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;AAC3C,IAAI,MAAM,oBAAoB,GAAG,MAAM,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,iCAAiC,CAAC,CAAC;AAC9F,SAAS,IAAI,CAAC,CAAC,QAAQ,KAAK;AAC5B,QAAQ,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AAC1B,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACtE,SAAS;AACT,QAAQ,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC/B,KAAK,CAAC,CAAC;AACP;AACA,IAAI,cAAc,CAAC,OAAO,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACrF;AACA,IAAI,cAAc,CAAC,OAAO,CAAC,UAAU,EAAE,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC;AACzE,IAAI,IAAI,SAAS,GAAG,cAAc,EAAE,SAAS,CAAC;AAC9C;AACA,IAAI,IAAI,CAAC,SAAS,EAAE;AACpB;AACA,QAAQ,MAAM,qBAAqB,GAAG,oBAAoB,CAAC,uBAAuB,CAAC,CAAC;AACpF;AACA,QAAQ,MAAM,mBAAmB,GAAG,MAAM,gCAAgC,CAAC,qBAAqB,EAAE,cAAc,IAAI,EAAE,aAAa,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC;AAC3J,aAAa,IAAI,CAAC,CAAC,QAAQ,KAAK;AAChC,YAAY,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AAC9B,gBAAgB,MAAM,IAAI,KAAK,CAAC,CAAC,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1E,aAAa;AACb,YAAY,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;AACnC,SAAS,CAAC,CAAC;AACX,QAAQ,SAAS,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;AACrD;AACA,QAAQ,cAAc,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AACvD,KAAK;AACL;AACA,IAAI,MAAM,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,GAAG,MAAM,WAAW,EAAE,CAAC;AAC5E,IAAI,cAAc,CAAC,OAAO,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,CAAC;AACrE;AACA,IAAI,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;AAClD,IAAI,cAAc,CAAC,OAAO,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AACrD;AACA,IAAI,MAAM,eAAe,GAAG,oBAAoB,CAAC,wBAAwB,CAAC;AAC1E,QAAQ,CAAC,mBAAmB,CAAC;AAC7B,QAAQ,CAAC,cAAc,EAAE,kBAAkB,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAChE,QAAQ,CAAC,kCAAkC,CAAC;AAC5C,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC;AACrD,QAAQ,CAAC,2BAA2B,CAAC;AACrC,QAAQ,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,CAAC;AAChD,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAC9B,QAAQ,CAAC,eAAe,CAAC,CAAC;AAC1B,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,eAAe,CAAC;AAC3C,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA,MAAM,WAAW,GAAG,YAAY;AAChC;AACA,IAAI,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;AAC7F;AACA,IAAI,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC9H,IAAI,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,CAAC;AACpE,SAAS,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;AAC5B,SAAS,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;AAC5B,SAAS,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC5B,IAAI,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,CAAC;AACvD,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA,MAAM,kBAAkB,GAAG,OAAO,cAAc,KAAK;AACrD,IAAI,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC9C;AACA,IAAI,MAAM,kBAAkB,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC5D;AACA,IAAI,IAAI,kBAAkB,KAAK,IAAI,EAAE;AACrC,QAAQ,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,CAAC;AACjD,KAAK;AACL;AACA,IAAI,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9C,IAAI,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE;AAC5D,QAAQ,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,GAAG,GAAG,CAAC,CAAC;AACjG,KAAK;AACL;AACA,IAAI,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;AAC/E,QAAQ,MAAM,IAAI,KAAK,CAAC,mCAAmC,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;AAC7I,KAAK;AACL;AACA,IAAI,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACnC,IAAI,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACrC,IAAI,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACpC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjE;AACA,IAAI,MAAM,kBAAkB,GAAG,cAAc,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAC5E,IAAI,IAAI,kBAAkB,KAAK,IAAI,EAAE;AACrC,QAAQ,MAAM,IAAI,KAAK,CAAC,yFAAyF,CAAC,CAAC;AACnH,KAAK;AACL,IAAI,MAAM,SAAS,GAAG,cAAc,EAAE,SAAS,IAAI,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AACvF,IAAI,IAAI,CAAC,SAAS,EAAE;AACpB,QAAQ,MAAM,IAAI,KAAK,CAAC,uGAAuG,CAAC,CAAC;AACjI,KAAK;AACL,IAAI,MAAM,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;AACpE,IAAI,IAAI,cAAc,KAAK,IAAI,EAAE;AACjC,QAAQ,MAAM,IAAI,KAAK,CAAC,qFAAqF,CAAC,CAAC;AAC/G,KAAK;AACL;AACA,IAAI,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;AACpD;AACA,IAAI,MAAM,cAAc,GAAG,MAAM,kBAAkB,CAAC,kBAAkB,EAAE,kBAAkB,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,QAAQ,CAAC;AAChJ,SAAS,IAAI,CAAC,CAAC,QAAQ,KAAK;AAC5B,QAAQ,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AAC1B,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACtE,SAAS;AACT,QAAQ,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC/B,KAAK,CAAC,CAAC;AACP;AACA,IAAI,MAAM,WAAW,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;AACvD,IAAI,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACxD,IAAI,IAAI,QAAQ,KAAK,IAAI,EAAE;AAC3B,QAAQ,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAC;AAC5G,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;AACvD,IAAI,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE;AAC3D,QAAQ,MAAM,EAAE,GAAG;AACnB,QAAQ,QAAQ,EAAE,OAAO;AACzB;AACA,KAAK,CAAC,CAAC;AACP;AACA,IAAI,MAAM,cAAc,GAAG,MAAM,sBAAsB,CAAC,MAAM,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AAC7F,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,cAAc,EAAE;AACjD,QAAQ,MAAM,IAAI,KAAK,CAAC,oEAAoE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,MAAM,GAAG,cAAc,CAAC,CAAC;AAChJ,KAAK;AACL;AACA,IAAI,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,SAAS,EAAE;AAC3C,QAAQ,MAAM,IAAI,KAAK,CAAC,4EAA4E,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC;AAClJ,KAAK;AACL;AACA,IAAI,MAAM,aAAa,GAAG,EAAE,GAAG,cAAc,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC;AACzE,IAAI,MAAM,WAAW,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;AAC1D,IAAI,IAAI,CAAC,cAAc;AACvB,QAAQ,cAAc,GAAG,EAAE,aAAa,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;AACnE,IAAI,cAAc,CAAC,SAAS,GAAG,SAAS,CAAC;AACzC;AACA,IAAI,MAAM,eAAe,GAAG,MAAM,IAAI,eAAe,EAAE,CAAC,IAAI,EAAE,CAAC;AAC/D,IAAI,MAAM,OAAO,CAAC,GAAG,CAAC;AACtB,QAAQ,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;AAC3C,QAAQ,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC;AACrD,QAAQ,eAAe,CAAC,OAAO,CAAC,gBAAgB,EAAE,cAAc,CAAC;AACjE,QAAQ,eAAe,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC;AACvD,QAAQ,eAAe,CAAC,OAAO,CAAC,cAAc,EAAE,QAAQ,CAAC;AACzD,QAAQ,eAAe,CAAC,OAAO,CAAC,eAAe,EAAE,cAAc,CAAC,eAAe,CAAC,CAAC;AACjF,KAAK,CAAC,CAAC;AACP,IAAI,eAAe,CAAC,KAAK,EAAE,CAAC;AAC5B;AACA,IAAI,cAAc,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AAC5C,IAAI,cAAc,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;AACpD,IAAI,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACrC,IAAI,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC1C,IAAI,cAAc,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AAChD,IAAI,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAC3C;AACA,IAAI,OAAO;AACX,QAAQ,aAAa,EAAE,cAAc;AACrC,QAAQ,UAAU,EAAE,WAAW;AAC/B,QAAQ,YAAY,EAAE,aAAa;AACnC,KAAK,CAAC;AACN,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,kBAAkB,GAAG,OAAO,kBAAkB,EAAE,kBAAkB,EAAE,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,QAAQ,KAAK;AAChI;AACA,IAAI,MAAM,cAAc,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AAC/D,IAAI,cAAc,CAAC,GAAG,GAAG,OAAO,CAAC;AACjC;AACA,IAAI,MAAM,IAAI,GAAG,MAAM,IAAI,OAAO,CAAC;AACnC,QAAQ,GAAG,EAAE,cAAc;AAC3B,QAAQ,GAAG,EAAE,MAAM;AACnB,KAAK,CAAC;AACN,SAAS,WAAW,EAAE;AACtB,SAAS,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;AAC3C,SAAS,kBAAkB,CAAC;AAC5B,QAAQ,GAAG,EAAE,OAAO;AACpB,QAAQ,GAAG,EAAE,UAAU;AACvB,QAAQ,GAAG,EAAE,cAAc;AAC3B,KAAK,CAAC;AACN,SAAS,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AACnC,IAAI,OAAO,KAAK,CAAC,cAAc,EAAE;AACjC,QAAQ,MAAM,EAAE,MAAM;AACtB,QAAQ,OAAO,EAAE;AACjB,YAAY,IAAI;AAChB,YAAY,cAAc,EAAE,mCAAmC;AAC/D,SAAS;AACT,QAAQ,IAAI,EAAE,IAAI,eAAe,CAAC;AAClC,YAAY,UAAU,EAAE,oBAAoB;AAC5C,YAAY,IAAI,EAAE,kBAAkB;AACpC,YAAY,aAAa,EAAE,kBAAkB;AAC7C,YAAY,YAAY,EAAE,YAAY;AACtC,YAAY,SAAS,EAAE,SAAS;AAChC,SAAS,CAAC;AACV,KAAK,CAAC,CAAC;AACP,CAAC,CAAC;AACF;AACA,MAAM,WAAW,GAAG,YAAY;AAChC;AACA,IAAI,MAAM,eAAe,GAAG,MAAM,IAAI,eAAe,EAAE,CAAC,IAAI,EAAE,CAAC;AAC/D,IAAI,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AACjE,IAAI,MAAM,cAAc,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAC3E,IAAI,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AACnE,IAAI,MAAM,aAAa,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;AACzE,IAAI,IAAI,SAAS,KAAK,IAAI,IAAI,cAAc,KAAK,IAAI,IAAI,QAAQ,KAAK,IAAI,IAAI,aAAa,KAAK,IAAI,EAAE;AACtG;AACA,QAAQ,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;AACpF,KAAK;AACL,IAAI,MAAM,cAAc,GAAG,MAAM,kBAAkB,CAAC,aAAa,EAAE,SAAS,EAAE,cAAc,EAAE,QAAQ,CAAC;AACvG,SAAS,IAAI,CAAC,CAAC,QAAQ,KAAK;AAC5B,QAAQ,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AAC1B,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACtE,SAAS;AACT,QAAQ,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC/B,KAAK,CAAC,CAAC;AACP;AACA,IAAI,MAAM,WAAW,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;AACvD,IAAI,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACrD,IAAI,IAAI,GAAG,KAAK,IAAI,EAAE;AACtB,QAAQ,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAC;AACxG,KAAK;AACL,IAAI,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAC/D,IAAI,IAAI,QAAQ,KAAK,IAAI,EAAE;AAC3B,QAAQ,MAAM,IAAI,KAAK,CAAC,mFAAmF,CAAC,CAAC;AAC7G,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;AACvD,IAAI,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE;AAC3D,QAAQ,MAAM,EAAE,GAAG;AACnB,QAAQ,QAAQ,EAAE,OAAO;AACzB;AACA,KAAK,CAAC,CAAC;AACP;AACA,IAAI,MAAM,cAAc,GAAG,MAAM,sBAAsB,CAAC,MAAM,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AAC7F,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,cAAc,EAAE;AACjD,QAAQ,MAAM,IAAI,KAAK,CAAC,oEAAoE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,MAAM,GAAG,cAAc,CAAC,CAAC;AAChJ,KAAK;AACL;AACA,IAAI,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,SAAS,EAAE;AAC3C,QAAQ,MAAM,IAAI,KAAK,CAAC,4EAA4E,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC;AAClJ,KAAK;AACL;AACA,IAAI,MAAM,eAAe,CAAC,OAAO,CAAC,eAAe,EAAE,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC;AACpF,IAAI,eAAe,CAAC,KAAK,EAAE,CAAC;AAC5B,IAAI,OAAO;AACX,QAAQ,GAAG,cAAc;AACzB,QAAQ,aAAa,EAAE,QAAQ;AAC/B,KAAK,CAAC;AACN,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,kBAAkB,GAAG,OAAO,aAAa,EAAE,SAAS,EAAE,cAAc,EAAE,QAAQ,KAAK;AACzF;AACA,IAAI,MAAM,cAAc,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AAC/D,IAAI,cAAc,CAAC,GAAG,GAAG,OAAO,CAAC;AACjC;AACA,IAAI,MAAM,IAAI,GAAG,MAAM,IAAI,OAAO,CAAC;AACnC,QAAQ,GAAG,EAAE,cAAc;AAC3B,QAAQ,GAAG,EAAE,MAAM;AACnB,KAAK,CAAC;AACN,SAAS,WAAW,EAAE;AACtB,SAAS,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;AAC3C,SAAS,kBAAkB,CAAC;AAC5B,QAAQ,GAAG,EAAE,OAAO;AACpB,QAAQ,GAAG,EAAE,UAAU;AACvB,QAAQ,GAAG,EAAE,cAAc;AAC3B,KAAK,CAAC;AACN,SAAS,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AACnC,IAAI,OAAO,KAAK,CAAC,cAAc,EAAE;AACjC,QAAQ,MAAM,EAAE,MAAM;AACtB,QAAQ,OAAO,EAAE;AACjB,YAAY,IAAI;AAChB,YAAY,cAAc,EAAE,mCAAmC;AAC/D,SAAS;AACT,QAAQ,IAAI,EAAE,IAAI,eAAe,CAAC;AAClC,YAAY,UAAU,EAAE,eAAe;AACvC,YAAY,aAAa;AACzB,YAAY,SAAS;AACrB,SAAS,CAAC;AACV,KAAK,CAAC,CAAC;AACP,CAAC,CAAC;AACF;AACA,MAAM,OAAO,CAAC;AACd,IAAI,kBAAkB,CAAC;AACvB,IAAI,SAAS,GAAG,KAAK,CAAC;AACtB,IAAI,MAAM,GAAG,SAAS,CAAC;AACvB,IAAI,WAAW,GAAG,SAAS,CAAC;AAC5B,IAAI,mBAAmB,CAAC;AACxB,IAAI,wBAAwB,CAAC;AAC7B,IAAI,0BAA0B,CAAC;AAC/B;AACA;AACA;AACA,IAAI,WAAW,CAAC,aAAa,EAAE,cAAc,EAAE;AAC/C,QAAQ,IAAI,CAAC,kBAAkB,GAAG,EAAE,aAAa,EAAE,CAAC;AACpD,QAAQ,IAAI,CAAC,0BAA0B,GAAG,cAAc,EAAE,0BAA0B,CAAC;AACrF,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,KAAK,CAAC,GAAG,EAAE,YAAY,EAAE;AACnC,QAAQ,MAAM,gBAAgB,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;AACzF,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,MAAM,GAAG;AACnB;AACA,QAAQ,IAAI,IAAI,CAAC,wBAAwB;AACzC,YAAY,YAAY,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;AACxD,QAAQ,IAAI,CAAC,wBAAwB,GAAG,SAAS,CAAC;AAClD,QAAQ,IAAI,IAAI,CAAC,mBAAmB;AACpC,YAAY,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AACnD,QAAQ,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;AAC7C;AACA,QAAQ,IAAI,CAAC,kBAAkB,CAAC,UAAU,GAAG,SAAS,CAAC;AACvD,QAAQ,IAAI,CAAC,kBAAkB,CAAC,YAAY,GAAG,SAAS,CAAC;AACzD,QAAQ,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAC/B,QAAQ,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;AAChC;AACA,QAAQ,IAAI,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,SAAS;AAC5D,YAAY,IAAI;AAChB,gBAAgB,IAAI,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;AACzE,aAAa;AACb,YAAY,OAAO,CAAC,EAAE;AACtB,gBAAgB,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,SAAS,GAAG,SAAS,CAAC;AAC5E,aAAa;AACb;AACA,QAAQ,MAAM,eAAe,GAAG,MAAM,IAAI,eAAe,EAAE,CAAC,IAAI,EAAE,CAAC;AACnE,QAAQ,MAAM,eAAe,CAAC,KAAK,EAAE,CAAC;AACtC,QAAQ,eAAe,CAAC,KAAK,EAAE,CAAC;AAChC,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,MAAM,uBAAuB,GAAG;AACpC;AACA,QAAQ,MAAM,cAAc,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;AAC/F;AACA,QAAQ,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;AAC1C,YAAY,OAAO;AACnB,SAAS;AACT;AACA,QAAQ,IAAI,CAAC,kBAAkB,GAAG,cAAc,CAAC;AACjD,QAAQ,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACvC,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,MAAM,OAAO,GAAG;AACpB;AACA,QAAQ,MAAM,WAAW,EAAE;AAC3B,aAAa,IAAI,CAAC,YAAY,IAAI;AAClC;AACA,YAAY,IAAI,CAAC,kBAAkB,CAAC,YAAY,GAAG,YAAY,CAAC;AAChE;AACA,YAAY,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC5C,SAAS,CAAC;AACV;AACA,aAAa,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,qBAAqB,CAAC,OAAO,EAAE;AACzC,QAAQ,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACxE,YAAY,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;AACxD,SAAS;AACT,QAAQ,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;AACvC,QAAQ,MAAM,cAAc,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;AAC7G,QAAQ,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;AACnC,aAAa,WAAW,EAAE;AAC1B,aAAa,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;AAC/C,aAAa,kBAAkB,CAAC;AAChC,YAAY,GAAG,EAAE,OAAO;AACxB,YAAY,GAAG,EAAE,UAAU;AAC3B,YAAY,GAAG,EAAE,cAAc;AAC/B,SAAS,CAAC;AACV,aAAa,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AACjF,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE;AAC9C;AACA,QAAQ,IAAI,GAAG,CAAC;AAChB,QAAQ,IAAI,MAAM,CAAC;AACnB,QAAQ,IAAI,OAAO,CAAC;AACpB,QAAQ,IAAI,KAAK,YAAY,OAAO,EAAE;AACtC,YAAY,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACrC,YAAY,MAAM,GAAG,IAAI,EAAE,MAAM,IAAI,KAAK,EAAE,MAAM,IAAI,KAAK,CAAC;AAC5D,YAAY,OAAO,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACjD,SAAS;AACT,aAAa;AACb,YAAY,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;AAC9B,YAAY,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5C,YAAY,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC;AAC1C,YAAY,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,EAAE,CAAC;AAC/E,SAAS;AACT;AACA,QAAQ,IAAI,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;AAClD,YAAY,WAAW,GAAG,WAAW,IAAI;AACzC,gBAAgB,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;AACnD,gBAAgB,GAAG,EAAE,MAAM,CAAC,WAAW,EAAE;AACzC,aAAa,CAAC;AACd,YAAY,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;AACvE,YAAY,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACtC,YAAY,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AACtG,SAAS;AACT;AACA,QAAQ,IAAI,KAAK,YAAY,OAAO,EAAE;AACtC,YAAY,OAAO,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;AACnE,SAAS;AACT;AACA,QAAQ,OAAO,KAAK,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AAChD,KAAK;AACL,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC;AAC9B,KAAK;AACL,IAAI,IAAI,KAAK,GAAG;AAChB,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC;AAC3B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,iBAAiB,GAAG;AAC9B;AACA,QAAQ,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,YAAY,EAAE;AACjE,YAAY,IAAI,CAAC,MAAM,EAAE,CAAC;AAC1B,SAAS;AACT;AACA,QAAQ,IAAI,CAAC,WAAW,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;AACpG;AACA,QAAQ,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC;AAC5F,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC;AAClD;AACA,QAAQ,IAAI,CAAC,2BAA2B,EAAE,CAAC;AAC3C;AACA,QAAQ,IAAI,CAAC,sBAAsB,EAAE,CAAC;AACtC,KAAK;AACL,IAAI,2BAA2B,GAAG;AAClC,QAAQ,MAAM,yBAAyB,GAAG,CAAC,CAAC;AAC5C,QAAQ,MAAM,mBAAmB,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,UAAU,GAAG,yBAAyB,IAAI,IAAI,CAAC;AACzH,QAAQ,IAAI,IAAI,CAAC,wBAAwB;AACzC,YAAY,YAAY,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;AACxD,QAAQ,IAAI,CAAC,wBAAwB,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,mBAAmB,CAAC,CAAC;AAC7F,KAAK;AACL,IAAI,sBAAsB,GAAG;AAC7B,QAAQ,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAC1C,QAAQ,MAAM,gBAAgB,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,UAAU,GAAG,sBAAsB,IAAI,IAAI,CAAC;AACnH,QAAQ,IAAI,IAAI,CAAC,mBAAmB;AACpC,YAAY,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AACnD,QAAQ,IAAI,CAAC,mBAAmB,GAAG,UAAU,CAAC,YAAY;AAC1D,YAAY,MAAM,SAAS,GAAG,MAAM,WAAW,EAAE;AACjD,iBAAiB,KAAK,CAAC,CAAC,KAAK,KAAK;AAClC;AACA,gBAAgB,IAAI,IAAI,CAAC,0BAA0B;AACnD,oBAAoB,IAAI,CAAC,0BAA0B,EAAE,CAAC;AACtD,gBAAgB,OAAO,SAAS,CAAC;AACjC,aAAa,CAAC,CAAC;AACf,YAAY,IAAI,CAAC,SAAS,EAAE;AAC5B,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,IAAI,CAAC,kBAAkB,CAAC,YAAY,GAAG,SAAS,CAAC;AAC7D,YAAY,IAAI,CAAC,2BAA2B,EAAE,CAAC;AAC/C,YAAY,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAC1C,SAAS,EAAE,gBAAgB,CAAC,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA,IAAI,MAAM,UAAU,CAAC,WAAW,EAAE;AAClC;AACA,QAAQ,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAC1C,QAAQ,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AACjD;AACA,QAAQ,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AACvE;AACA,QAAQ,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;AACjE,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;AAC/D;AACA,QAAQ,MAAM,SAAS,GAAG,MAAM;AAChC,aAAa,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;AAChC,aAAa,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;AAChC,aAAa,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAChC,QAAQ,OAAO,SAAS,CAAC;AACzB,KAAK;AACL;;MC/4Ea,cAAc;IAUzB,IAAI,kBAAkB;QACpB,OAAO,IAAI,CAAC,mBAAmB,CAAC;KACjC;IAED;QAZQ,6BAAwB,GAA0B,SAAQ,CAAC;QAGlD,iBAAY,GAAiC,IAAI,eAAe,CAAc;YAC7F,UAAU,EAAE,KAAK;YACjB,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;QAOD,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACtE;IAED,MAAM,sBAAsB,CAAC,sBAAsB,GAAG,KAAK;QACzD,MAAM,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,CAAC;QAC7C,IAAI,sBAAsB,EAAE;YAC1B,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAC7B,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;gBACzB,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;aACrD;SACF;QACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;YACrB,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;YACjC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;SAC1B,CAAC,CAAC;KACJ;IAED,MAAM,KAAK,CAAC,UAAkB;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KAC7D;IAED,MAAM,MAAM;QACV,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QAC5B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;YACrB,UAAU,EAAE,KAAK;YACjB,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;KACJ;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B;IAED,gBAAgB,CAAC,QAA+B;QAC9C,IAAI,CAAC,wBAAwB,GAAG,QAAQ,CAAC;KAC1C;;;MChCU,MAAM;IAJnB;;;;;;QAOU,2BAAsB,GAAY,KAAK,CAAC;QAe/B,kBAAa,GAAG,IAAI,OAAO,EAAQ,CAAC;QAM7C,YAAO,GAAG,IAAI,CAAC;KA4DxB;IA1DC,MAAM,iBAAiB;QACrB,MAAM,OAAO,GAAG,IAAI,cAAc,EAAE,CAAC;QACrC,IAAI,CAAC,mBAAmB,GAAG,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE;YACjD,IAAI,CAAC,EAAE,GAAG,WAAW,CAAC,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;SACrD,CAAC,CAAC;QACH,IAAI,CAAC,EAAE,GAAG,WAAW,CAAC,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;QACpD,OAAO,CAAC,gBAAgB,CAAC,GAAG;YAC1B,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;SAC3C,CAAC,CAAC;QACH,IAAI;YACF,MAAM,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;SACnE;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAClB;QACD,IAAI,CAAC,EAAE;aACJ,cAAc,EAAE;aAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,OAAM,WAAW;YAC1BE,KAAY,CAAC,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;YAC7C,IAAI,WAAW,CAAC,UAAU,EAAE;gBAC1B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAC9DA,KAAY,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;aACtC;YACDA,KAAY,CAAC,KAAK,CAAC,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC;YACvD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;SACtB,CAAC,CAAC;QACL,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;YAC3B,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;SAC/C,CAAC,CAAC;KACJ;IAED,oBAAoB;QAClB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;KAClC;IAGD,MAAM,YAAY,CAAC,KAAwB;QACzC,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACvB;IAGD,MAAM,UAAU,CAAC,KAAyB;QACxC,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE;YACtC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,kBAAkB,EAAE,CAAC;YAClD,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;SAC/B;aAAM;YACL,MAAM,KAAK,CAAC,mBAAmB,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;SACxD;KACF;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,OAAO,GAAG,wBAAkB,IAAI,EAAC,eAAe,GAAoB,GAAG,eAAa,CAAC;KAClG;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["Symbol_observable","Symbol_iterator","sessionStore"],"sources":["../node_modules/idb/build/index.js","src/cache/IndexedDbOfflineCache.ts","src/cache/NavigatorOnlineStatus.ts","src/pod-os.ts","../node_modules/rxjs/dist/esm/internal/BehaviorSubject.js","../node_modules/tslib/tslib.es6.js","../node_modules/rxjs/dist/esm/internal/util/isArrayLike.js","../node_modules/rxjs/dist/esm/internal/util/isPromise.js","../node_modules/rxjs/dist/esm/internal/util/isInteropObservable.js","../node_modules/rxjs/dist/esm/internal/util/isAsyncIterable.js","../node_modules/rxjs/dist/esm/internal/util/throwUnobservableError.js","../node_modules/rxjs/dist/esm/internal/symbol/iterator.js","../node_modules/rxjs/dist/esm/internal/util/isIterable.js","../node_modules/rxjs/dist/esm/internal/util/isReadableStreamLike.js","../node_modules/rxjs/dist/esm/internal/observable/innerFrom.js","../node_modules/rxjs/dist/esm/internal/operators/takeUntil.js","../node_modules/@uvdsl/solid-oidc-client-browser/dist/esm/index.js","src/authentication/BrowserSession.ts","src/components/pos-app/pos-app.tsx"],"sourcesContent":["const instanceOfAny = (object, constructors) => constructors.some((c) => object instanceof c);\n\nlet idbProxyableTypes;\nlet cursorAdvanceMethods;\n// This is a function to prevent it throwing up in node environments.\nfunction getIdbProxyableTypes() {\n return (idbProxyableTypes ||\n (idbProxyableTypes = [\n IDBDatabase,\n IDBObjectStore,\n IDBIndex,\n IDBCursor,\n IDBTransaction,\n ]));\n}\n// This is a function to prevent it throwing up in node environments.\nfunction getCursorAdvanceMethods() {\n return (cursorAdvanceMethods ||\n (cursorAdvanceMethods = [\n IDBCursor.prototype.advance,\n IDBCursor.prototype.continue,\n IDBCursor.prototype.continuePrimaryKey,\n ]));\n}\nconst transactionDoneMap = new WeakMap();\nconst transformCache = new WeakMap();\nconst reverseTransformCache = new WeakMap();\nfunction promisifyRequest(request) {\n const promise = new Promise((resolve, reject) => {\n const unlisten = () => {\n request.removeEventListener('success', success);\n request.removeEventListener('error', error);\n };\n const success = () => {\n resolve(wrap(request.result));\n unlisten();\n };\n const error = () => {\n reject(request.error);\n unlisten();\n };\n request.addEventListener('success', success);\n request.addEventListener('error', error);\n });\n // This mapping exists in reverseTransformCache but doesn't exist in transformCache. This\n // is because we create many promises from a single IDBRequest.\n reverseTransformCache.set(promise, request);\n return promise;\n}\nfunction cacheDonePromiseForTransaction(tx) {\n // Early bail if we've already created a done promise for this transaction.\n if (transactionDoneMap.has(tx))\n return;\n const done = new Promise((resolve, reject) => {\n const unlisten = () => {\n tx.removeEventListener('complete', complete);\n tx.removeEventListener('error', error);\n tx.removeEventListener('abort', error);\n };\n const complete = () => {\n resolve();\n unlisten();\n };\n const error = () => {\n reject(tx.error || new DOMException('AbortError', 'AbortError'));\n unlisten();\n };\n tx.addEventListener('complete', complete);\n tx.addEventListener('error', error);\n tx.addEventListener('abort', error);\n });\n // Cache it for later retrieval.\n transactionDoneMap.set(tx, done);\n}\nlet idbProxyTraps = {\n get(target, prop, receiver) {\n if (target instanceof IDBTransaction) {\n // Special handling for transaction.done.\n if (prop === 'done')\n return transactionDoneMap.get(target);\n // Make tx.store return the only store in the transaction, or undefined if there are many.\n if (prop === 'store') {\n return receiver.objectStoreNames[1]\n ? undefined\n : receiver.objectStore(receiver.objectStoreNames[0]);\n }\n }\n // Else transform whatever we get back.\n return wrap(target[prop]);\n },\n set(target, prop, value) {\n target[prop] = value;\n return true;\n },\n has(target, prop) {\n if (target instanceof IDBTransaction &&\n (prop === 'done' || prop === 'store')) {\n return true;\n }\n return prop in target;\n },\n};\nfunction replaceTraps(callback) {\n idbProxyTraps = callback(idbProxyTraps);\n}\nfunction wrapFunction(func) {\n // Due to expected object equality (which is enforced by the caching in `wrap`), we\n // only create one new func per func.\n // Cursor methods are special, as the behaviour is a little more different to standard IDB. In\n // IDB, you advance the cursor and wait for a new 'success' on the IDBRequest that gave you the\n // cursor. It's kinda like a promise that can resolve with many values. That doesn't make sense\n // with real promises, so each advance methods returns a new promise for the cursor object, or\n // undefined if the end of the cursor has been reached.\n if (getCursorAdvanceMethods().includes(func)) {\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n func.apply(unwrap(this), args);\n return wrap(this.request);\n };\n }\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n return wrap(func.apply(unwrap(this), args));\n };\n}\nfunction transformCachableValue(value) {\n if (typeof value === 'function')\n return wrapFunction(value);\n // This doesn't return, it just creates a 'done' promise for the transaction,\n // which is later returned for transaction.done (see idbObjectHandler).\n if (value instanceof IDBTransaction)\n cacheDonePromiseForTransaction(value);\n if (instanceOfAny(value, getIdbProxyableTypes()))\n return new Proxy(value, idbProxyTraps);\n // Return the same value back if we're not going to transform it.\n return value;\n}\nfunction wrap(value) {\n // We sometimes generate multiple promises from a single IDBRequest (eg when cursoring), because\n // IDB is weird and a single IDBRequest can yield many responses, so these can't be cached.\n if (value instanceof IDBRequest)\n return promisifyRequest(value);\n // If we've already transformed this value before, reuse the transformed value.\n // This is faster, but it also provides object equality.\n if (transformCache.has(value))\n return transformCache.get(value);\n const newValue = transformCachableValue(value);\n // Not all types are transformed.\n // These may be primitive types, so they can't be WeakMap keys.\n if (newValue !== value) {\n transformCache.set(value, newValue);\n reverseTransformCache.set(newValue, value);\n }\n return newValue;\n}\nconst unwrap = (value) => reverseTransformCache.get(value);\n\n/**\n * Open a database.\n *\n * @param name Name of the database.\n * @param version Schema version.\n * @param callbacks Additional callbacks.\n */\nfunction openDB(name, version, { blocked, upgrade, blocking, terminated } = {}) {\n const request = indexedDB.open(name, version);\n const openPromise = wrap(request);\n if (upgrade) {\n request.addEventListener('upgradeneeded', (event) => {\n upgrade(wrap(request.result), event.oldVersion, event.newVersion, wrap(request.transaction), event);\n });\n }\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event.newVersion, event));\n }\n openPromise\n .then((db) => {\n if (terminated)\n db.addEventListener('close', () => terminated());\n if (blocking) {\n db.addEventListener('versionchange', (event) => blocking(event.oldVersion, event.newVersion, event));\n }\n })\n .catch(() => { });\n return openPromise;\n}\n/**\n * Delete a database.\n *\n * @param name Name of the database.\n */\nfunction deleteDB(name, { blocked } = {}) {\n const request = indexedDB.deleteDatabase(name);\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event));\n }\n return wrap(request).then(() => undefined);\n}\n\nconst readMethods = ['get', 'getKey', 'getAll', 'getAllKeys', 'count'];\nconst writeMethods = ['put', 'add', 'delete', 'clear'];\nconst cachedMethods = new Map();\nfunction getMethod(target, prop) {\n if (!(target instanceof IDBDatabase &&\n !(prop in target) &&\n typeof prop === 'string')) {\n return;\n }\n if (cachedMethods.get(prop))\n return cachedMethods.get(prop);\n const targetFuncName = prop.replace(/FromIndex$/, '');\n const useIndex = prop !== targetFuncName;\n const isWrite = writeMethods.includes(targetFuncName);\n if (\n // Bail if the target doesn't exist on the target. Eg, getAll isn't in Edge.\n !(targetFuncName in (useIndex ? IDBIndex : IDBObjectStore).prototype) ||\n !(isWrite || readMethods.includes(targetFuncName))) {\n return;\n }\n const method = async function (storeName, ...args) {\n // isWrite ? 'readwrite' : undefined gzipps better, but fails in Edge :(\n const tx = this.transaction(storeName, isWrite ? 'readwrite' : 'readonly');\n let target = tx.store;\n if (useIndex)\n target = target.index(args.shift());\n // Must reject if op rejects.\n // If it's a write operation, must reject if tx.done rejects.\n // Must reject with op rejection first.\n // Must resolve with op value.\n // Must handle both promises (no unhandled rejections)\n return (await Promise.all([\n target[targetFuncName](...args),\n isWrite && tx.done,\n ]))[0];\n };\n cachedMethods.set(prop, method);\n return method;\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get: (target, prop, receiver) => getMethod(target, prop) || oldTraps.get(target, prop, receiver),\n has: (target, prop) => !!getMethod(target, prop) || oldTraps.has(target, prop),\n}));\n\nconst advanceMethodProps = ['continue', 'continuePrimaryKey', 'advance'];\nconst methodMap = {};\nconst advanceResults = new WeakMap();\nconst ittrProxiedCursorToOriginalProxy = new WeakMap();\nconst cursorIteratorTraps = {\n get(target, prop) {\n if (!advanceMethodProps.includes(prop))\n return target[prop];\n let cachedFunc = methodMap[prop];\n if (!cachedFunc) {\n cachedFunc = methodMap[prop] = function (...args) {\n advanceResults.set(this, ittrProxiedCursorToOriginalProxy.get(this)[prop](...args));\n };\n }\n return cachedFunc;\n },\n};\nasync function* iterate(...args) {\n // tslint:disable-next-line:no-this-assignment\n let cursor = this;\n if (!(cursor instanceof IDBCursor)) {\n cursor = await cursor.openCursor(...args);\n }\n if (!cursor)\n return;\n cursor = cursor;\n const proxiedCursor = new Proxy(cursor, cursorIteratorTraps);\n ittrProxiedCursorToOriginalProxy.set(proxiedCursor, cursor);\n // Map this double-proxy back to the original, so other cursor methods work.\n reverseTransformCache.set(proxiedCursor, unwrap(cursor));\n while (cursor) {\n yield proxiedCursor;\n // If one of the advancing methods was not called, call continue().\n cursor = await (advanceResults.get(proxiedCursor) || cursor.continue());\n advanceResults.delete(proxiedCursor);\n }\n}\nfunction isIteratorProp(target, prop) {\n return ((prop === Symbol.asyncIterator &&\n instanceOfAny(target, [IDBIndex, IDBObjectStore, IDBCursor])) ||\n (prop === 'iterate' && instanceOfAny(target, [IDBIndex, IDBObjectStore])));\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get(target, prop, receiver) {\n if (isIteratorProp(target, prop))\n return iterate;\n return oldTraps.get(target, prop, receiver);\n },\n has(target, prop) {\n return isIteratorProp(target, prop) || oldTraps.has(target, prop);\n },\n}));\n\nexport { deleteDB, openDB, unwrap, wrap };\n","import { DBSchema, IDBPDatabase, openDB } from 'idb';\nimport { CachedRdfDocument, OfflineCache } from '@pod-os/core';\n\ninterface OfflineCacheDb extends DBSchema {\n documents: {\n key: string;\n value: CachedRdfDocument;\n indexes: {\n 'url-revision': [string, string];\n };\n };\n}\n\n/**\n * An offline cache backed by the browsers IndexedDB storage\n */\nexport class IndexedDbOfflineCache implements OfflineCache {\n private readonly dbPromise: Promise<IDBPDatabase<OfflineCacheDb>>;\n\n constructor() {\n this.dbPromise = openDB<OfflineCacheDb>('OfflineCacheDB', 1, {\n upgrade(db) {\n if (!db.objectStoreNames.contains('documents')) {\n const store = db.createObjectStore('documents', { keyPath: 'url' });\n store.createIndex('url-revision', ['url', 'revision']);\n }\n },\n });\n }\n\n async clear() {\n const db = await this.dbPromise;\n return db.clear('documents');\n }\n\n async get(url: string): Promise<CachedRdfDocument | undefined> {\n const db = await this.dbPromise;\n return await db.get('documents', url);\n }\n\n async put(document: CachedRdfDocument) {\n const db = await this.dbPromise;\n const existing = await db.getFromIndex('documents', 'url-revision', [document.url, document.revision]);\n\n if (existing) {\n return; // No need to update if the revision is the same\n }\n await db.put('documents', document);\n }\n}\n","import { OnlineStatus } from '@pod-os/core';\n\nexport class NavigatorOnlineStatus implements OnlineStatus {\n isOnline(): boolean {\n return navigator.onLine;\n }\n}\n","import { NoOfflineCache, PodOS } from '@pod-os/core';\nimport { IndexedDbOfflineCache } from './cache/IndexedDbOfflineCache';\nimport { NavigatorOnlineStatus } from './cache/NavigatorOnlineStatus';\nimport { LocalSettings } from './store/settings';\nimport { BrowserSession } from './authentication';\n\nexport const createPodOS = (session: BrowserSession, settings: LocalSettings): PodOS => {\n return new PodOS({\n session,\n offlineCache: settings.offlineCache ? new IndexedDbOfflineCache() : new NoOfflineCache(),\n onlineStatus: new NavigatorOnlineStatus(),\n });\n};\n","import { Subject } from './Subject';\nexport class BehaviorSubject extends Subject {\n constructor(_value) {\n super();\n this._value = _value;\n }\n get value() {\n return this.getValue();\n }\n _subscribe(subscriber) {\n const subscription = super._subscribe(subscriber);\n !subscription.closed && subscriber.next(this._value);\n return subscription;\n }\n getValue() {\n const { hasError, thrownError, _value } = this;\n if (hasError) {\n throw thrownError;\n }\n this._throwIfClosed();\n return _value;\n }\n next(value) {\n super.next((this._value = value));\n }\n}\n//# sourceMappingURL=BehaviorSubject.js.map","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n function next() {\r\n while (env.stack.length) {\r\n var rec = env.stack.pop();\r\n try {\r\n var result = rec.dispose && rec.dispose.call(rec.value);\r\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n};\r\n","export const isArrayLike = ((x) => x && typeof x.length === 'number' && typeof x !== 'function');\n//# sourceMappingURL=isArrayLike.js.map","import { isFunction } from \"./isFunction\";\nexport function isPromise(value) {\n return isFunction(value === null || value === void 0 ? void 0 : value.then);\n}\n//# sourceMappingURL=isPromise.js.map","import { observable as Symbol_observable } from '../symbol/observable';\nimport { isFunction } from './isFunction';\nexport function isInteropObservable(input) {\n return isFunction(input[Symbol_observable]);\n}\n//# sourceMappingURL=isInteropObservable.js.map","import { isFunction } from './isFunction';\nexport function isAsyncIterable(obj) {\n return Symbol.asyncIterator && isFunction(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]);\n}\n//# sourceMappingURL=isAsyncIterable.js.map","export function createInvalidObservableTypeError(input) {\n return new TypeError(`You provided ${input !== null && typeof input === 'object' ? 'an invalid object' : `'${input}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`);\n}\n//# sourceMappingURL=throwUnobservableError.js.map","export function getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n return Symbol.iterator;\n}\nexport const iterator = getSymbolIterator();\n//# sourceMappingURL=iterator.js.map","import { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from './isFunction';\nexport function isIterable(input) {\n return isFunction(input === null || input === void 0 ? void 0 : input[Symbol_iterator]);\n}\n//# sourceMappingURL=isIterable.js.map","import { __asyncGenerator, __await } from \"tslib\";\nimport { isFunction } from './isFunction';\nexport function readableStreamLikeToAsyncGenerator(readableStream) {\n return __asyncGenerator(this, arguments, function* readableStreamLikeToAsyncGenerator_1() {\n const reader = readableStream.getReader();\n try {\n while (true) {\n const { value, done } = yield __await(reader.read());\n if (done) {\n return yield __await(void 0);\n }\n yield yield __await(value);\n }\n }\n finally {\n reader.releaseLock();\n }\n });\n}\nexport function isReadableStreamLike(obj) {\n return isFunction(obj === null || obj === void 0 ? void 0 : obj.getReader);\n}\n//# sourceMappingURL=isReadableStreamLike.js.map","import { __asyncValues, __awaiter } from \"tslib\";\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isPromise } from '../util/isPromise';\nimport { Observable } from '../Observable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isIterable } from '../util/isIterable';\nimport { isReadableStreamLike, readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nimport { isFunction } from '../util/isFunction';\nimport { reportUnhandledError } from '../util/reportUnhandledError';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function innerFrom(input) {\n if (input instanceof Observable) {\n return input;\n }\n if (input != null) {\n if (isInteropObservable(input)) {\n return fromInteropObservable(input);\n }\n if (isArrayLike(input)) {\n return fromArrayLike(input);\n }\n if (isPromise(input)) {\n return fromPromise(input);\n }\n if (isAsyncIterable(input)) {\n return fromAsyncIterable(input);\n }\n if (isIterable(input)) {\n return fromIterable(input);\n }\n if (isReadableStreamLike(input)) {\n return fromReadableStreamLike(input);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\nexport function fromInteropObservable(obj) {\n return new Observable((subscriber) => {\n const obs = obj[Symbol_observable]();\n if (isFunction(obs.subscribe)) {\n return obs.subscribe(subscriber);\n }\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n });\n}\nexport function fromArrayLike(array) {\n return new Observable((subscriber) => {\n for (let i = 0; i < array.length && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n });\n}\nexport function fromPromise(promise) {\n return new Observable((subscriber) => {\n promise\n .then((value) => {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, (err) => subscriber.error(err))\n .then(null, reportUnhandledError);\n });\n}\nexport function fromIterable(iterable) {\n return new Observable((subscriber) => {\n for (const value of iterable) {\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n }\n subscriber.complete();\n });\n}\nexport function fromAsyncIterable(asyncIterable) {\n return new Observable((subscriber) => {\n process(asyncIterable, subscriber).catch((err) => subscriber.error(err));\n });\n}\nexport function fromReadableStreamLike(readableStream) {\n return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream));\n}\nfunction process(asyncIterable, subscriber) {\n var asyncIterable_1, asyncIterable_1_1;\n var e_1, _a;\n return __awaiter(this, void 0, void 0, function* () {\n try {\n for (asyncIterable_1 = __asyncValues(asyncIterable); asyncIterable_1_1 = yield asyncIterable_1.next(), !asyncIterable_1_1.done;) {\n const value = asyncIterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return)) yield _a.call(asyncIterable_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n subscriber.complete();\n });\n}\n//# sourceMappingURL=innerFrom.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { noop } from '../util/noop';\nexport function takeUntil(notifier) {\n return operate((source, subscriber) => {\n innerFrom(notifier).subscribe(createOperatorSubscriber(subscriber, () => subscriber.complete(), noop));\n !subscriber.closed && source.subscribe(subscriber);\n });\n}\n//# sourceMappingURL=takeUntil.js.map","var crypto$1 = crypto;\nconst isCryptoKey = (key) => key instanceof CryptoKey;\n\nconst digest = async (algorithm, data) => {\n const subtleDigest = `SHA-${algorithm.slice(-3)}`;\n return new Uint8Array(await crypto$1.subtle.digest(subtleDigest, data));\n};\nvar digest$1 = digest;\n\nconst encoder = new TextEncoder();\nconst decoder = new TextDecoder();\nfunction concat(...buffers) {\n const size = buffers.reduce((acc, { length }) => acc + length, 0);\n const buf = new Uint8Array(size);\n let i = 0;\n for (const buffer of buffers) {\n buf.set(buffer, i);\n i += buffer.length;\n }\n return buf;\n}\n\nconst encodeBase64 = (input) => {\n let unencoded = input;\n if (typeof unencoded === 'string') {\n unencoded = encoder.encode(unencoded);\n }\n const CHUNK_SIZE = 0x8000;\n const arr = [];\n for (let i = 0; i < unencoded.length; i += CHUNK_SIZE) {\n arr.push(String.fromCharCode.apply(null, unencoded.subarray(i, i + CHUNK_SIZE)));\n }\n return btoa(arr.join(''));\n};\nconst encode = (input) => {\n return encodeBase64(input).replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n};\nconst decodeBase64 = (encoded) => {\n const binary = atob(encoded);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes;\n};\nconst decode$1 = (input) => {\n let encoded = input;\n if (encoded instanceof Uint8Array) {\n encoded = decoder.decode(encoded);\n }\n encoded = encoded.replace(/-/g, '+').replace(/_/g, '/').replace(/\\s/g, '');\n try {\n return decodeBase64(encoded);\n }\n catch {\n throw new TypeError('The input to be decoded is not correctly encoded.');\n }\n};\n\nclass JOSEError extends Error {\n constructor(message, options) {\n super(message, options);\n this.code = 'ERR_JOSE_GENERIC';\n this.name = this.constructor.name;\n Error.captureStackTrace?.(this, this.constructor);\n }\n}\nJOSEError.code = 'ERR_JOSE_GENERIC';\nclass JWTClaimValidationFailed extends JOSEError {\n constructor(message, payload, claim = 'unspecified', reason = 'unspecified') {\n super(message, { cause: { claim, reason, payload } });\n this.code = 'ERR_JWT_CLAIM_VALIDATION_FAILED';\n this.claim = claim;\n this.reason = reason;\n this.payload = payload;\n }\n}\nJWTClaimValidationFailed.code = 'ERR_JWT_CLAIM_VALIDATION_FAILED';\nclass JWTExpired extends JOSEError {\n constructor(message, payload, claim = 'unspecified', reason = 'unspecified') {\n super(message, { cause: { claim, reason, payload } });\n this.code = 'ERR_JWT_EXPIRED';\n this.claim = claim;\n this.reason = reason;\n this.payload = payload;\n }\n}\nJWTExpired.code = 'ERR_JWT_EXPIRED';\nclass JOSEAlgNotAllowed extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JOSE_ALG_NOT_ALLOWED';\n }\n}\nJOSEAlgNotAllowed.code = 'ERR_JOSE_ALG_NOT_ALLOWED';\nclass JOSENotSupported extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JOSE_NOT_SUPPORTED';\n }\n}\nJOSENotSupported.code = 'ERR_JOSE_NOT_SUPPORTED';\nclass JWEDecryptionFailed extends JOSEError {\n constructor(message = 'decryption operation failed', options) {\n super(message, options);\n this.code = 'ERR_JWE_DECRYPTION_FAILED';\n }\n}\nJWEDecryptionFailed.code = 'ERR_JWE_DECRYPTION_FAILED';\nclass JWEInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWE_INVALID';\n }\n}\nJWEInvalid.code = 'ERR_JWE_INVALID';\nclass JWSInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWS_INVALID';\n }\n}\nJWSInvalid.code = 'ERR_JWS_INVALID';\nclass JWTInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWT_INVALID';\n }\n}\nJWTInvalid.code = 'ERR_JWT_INVALID';\nclass JWKInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWK_INVALID';\n }\n}\nJWKInvalid.code = 'ERR_JWK_INVALID';\nclass JWKSInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWKS_INVALID';\n }\n}\nJWKSInvalid.code = 'ERR_JWKS_INVALID';\nclass JWKSNoMatchingKey extends JOSEError {\n constructor(message = 'no applicable key found in the JSON Web Key Set', options) {\n super(message, options);\n this.code = 'ERR_JWKS_NO_MATCHING_KEY';\n }\n}\nJWKSNoMatchingKey.code = 'ERR_JWKS_NO_MATCHING_KEY';\nclass JWKSMultipleMatchingKeys extends JOSEError {\n constructor(message = 'multiple matching keys found in the JSON Web Key Set', options) {\n super(message, options);\n this.code = 'ERR_JWKS_MULTIPLE_MATCHING_KEYS';\n }\n}\nJWKSMultipleMatchingKeys.code = 'ERR_JWKS_MULTIPLE_MATCHING_KEYS';\nclass JWKSTimeout extends JOSEError {\n constructor(message = 'request timed out', options) {\n super(message, options);\n this.code = 'ERR_JWKS_TIMEOUT';\n }\n}\nJWKSTimeout.code = 'ERR_JWKS_TIMEOUT';\nclass JWSSignatureVerificationFailed extends JOSEError {\n constructor(message = 'signature verification failed', options) {\n super(message, options);\n this.code = 'ERR_JWS_SIGNATURE_VERIFICATION_FAILED';\n }\n}\nJWSSignatureVerificationFailed.code = 'ERR_JWS_SIGNATURE_VERIFICATION_FAILED';\n\nfunction unusable(name, prop = 'algorithm.name') {\n return new TypeError(`CryptoKey does not support this operation, its ${prop} must be ${name}`);\n}\nfunction isAlgorithm(algorithm, name) {\n return algorithm.name === name;\n}\nfunction getHashLength(hash) {\n return parseInt(hash.name.slice(4), 10);\n}\nfunction getNamedCurve(alg) {\n switch (alg) {\n case 'ES256':\n return 'P-256';\n case 'ES384':\n return 'P-384';\n case 'ES512':\n return 'P-521';\n default:\n throw new Error('unreachable');\n }\n}\nfunction checkUsage(key, usages) {\n if (usages.length && !usages.some((expected) => key.usages.includes(expected))) {\n let msg = 'CryptoKey does not support this operation, its usages must include ';\n if (usages.length > 2) {\n const last = usages.pop();\n msg += `one of ${usages.join(', ')}, or ${last}.`;\n }\n else if (usages.length === 2) {\n msg += `one of ${usages[0]} or ${usages[1]}.`;\n }\n else {\n msg += `${usages[0]}.`;\n }\n throw new TypeError(msg);\n }\n}\nfunction checkSigCryptoKey(key, alg, ...usages) {\n switch (alg) {\n case 'HS256':\n case 'HS384':\n case 'HS512': {\n if (!isAlgorithm(key.algorithm, 'HMAC'))\n throw unusable('HMAC');\n const expected = parseInt(alg.slice(2), 10);\n const actual = getHashLength(key.algorithm.hash);\n if (actual !== expected)\n throw unusable(`SHA-${expected}`, 'algorithm.hash');\n break;\n }\n case 'RS256':\n case 'RS384':\n case 'RS512': {\n if (!isAlgorithm(key.algorithm, 'RSASSA-PKCS1-v1_5'))\n throw unusable('RSASSA-PKCS1-v1_5');\n const expected = parseInt(alg.slice(2), 10);\n const actual = getHashLength(key.algorithm.hash);\n if (actual !== expected)\n throw unusable(`SHA-${expected}`, 'algorithm.hash');\n break;\n }\n case 'PS256':\n case 'PS384':\n case 'PS512': {\n if (!isAlgorithm(key.algorithm, 'RSA-PSS'))\n throw unusable('RSA-PSS');\n const expected = parseInt(alg.slice(2), 10);\n const actual = getHashLength(key.algorithm.hash);\n if (actual !== expected)\n throw unusable(`SHA-${expected}`, 'algorithm.hash');\n break;\n }\n case 'EdDSA': {\n if (key.algorithm.name !== 'Ed25519' && key.algorithm.name !== 'Ed448') {\n throw unusable('Ed25519 or Ed448');\n }\n break;\n }\n case 'Ed25519': {\n if (!isAlgorithm(key.algorithm, 'Ed25519'))\n throw unusable('Ed25519');\n break;\n }\n case 'ES256':\n case 'ES384':\n case 'ES512': {\n if (!isAlgorithm(key.algorithm, 'ECDSA'))\n throw unusable('ECDSA');\n const expected = getNamedCurve(alg);\n const actual = key.algorithm.namedCurve;\n if (actual !== expected)\n throw unusable(expected, 'algorithm.namedCurve');\n break;\n }\n default:\n throw new TypeError('CryptoKey does not support this operation');\n }\n checkUsage(key, usages);\n}\n\nfunction message(msg, actual, ...types) {\n types = types.filter(Boolean);\n if (types.length > 2) {\n const last = types.pop();\n msg += `one of type ${types.join(', ')}, or ${last}.`;\n }\n else if (types.length === 2) {\n msg += `one of type ${types[0]} or ${types[1]}.`;\n }\n else {\n msg += `of type ${types[0]}.`;\n }\n if (actual == null) {\n msg += ` Received ${actual}`;\n }\n else if (typeof actual === 'function' && actual.name) {\n msg += ` Received function ${actual.name}`;\n }\n else if (typeof actual === 'object' && actual != null) {\n if (actual.constructor?.name) {\n msg += ` Received an instance of ${actual.constructor.name}`;\n }\n }\n return msg;\n}\nvar invalidKeyInput = (actual, ...types) => {\n return message('Key must be ', actual, ...types);\n};\nfunction withAlg(alg, actual, ...types) {\n return message(`Key for the ${alg} algorithm must be `, actual, ...types);\n}\n\nvar isKeyLike = (key) => {\n if (isCryptoKey(key)) {\n return true;\n }\n return key?.[Symbol.toStringTag] === 'KeyObject';\n};\nconst types = ['CryptoKey'];\n\nconst isDisjoint = (...headers) => {\n const sources = headers.filter(Boolean);\n if (sources.length === 0 || sources.length === 1) {\n return true;\n }\n let acc;\n for (const header of sources) {\n const parameters = Object.keys(header);\n if (!acc || acc.size === 0) {\n acc = new Set(parameters);\n continue;\n }\n for (const parameter of parameters) {\n if (acc.has(parameter)) {\n return false;\n }\n acc.add(parameter);\n }\n }\n return true;\n};\nvar isDisjoint$1 = isDisjoint;\n\nfunction isObjectLike(value) {\n return typeof value === 'object' && value !== null;\n}\nfunction isObject(input) {\n if (!isObjectLike(input) || Object.prototype.toString.call(input) !== '[object Object]') {\n return false;\n }\n if (Object.getPrototypeOf(input) === null) {\n return true;\n }\n let proto = input;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(input) === proto;\n}\n\nvar checkKeyLength = (alg, key) => {\n if (alg.startsWith('RS') || alg.startsWith('PS')) {\n const { modulusLength } = key.algorithm;\n if (typeof modulusLength !== 'number' || modulusLength < 2048) {\n throw new TypeError(`${alg} requires key modulusLength to be 2048 bits or larger`);\n }\n }\n};\n\nfunction isJWK(key) {\n return isObject(key) && typeof key.kty === 'string';\n}\nfunction isPrivateJWK(key) {\n return key.kty !== 'oct' && typeof key.d === 'string';\n}\nfunction isPublicJWK(key) {\n return key.kty !== 'oct' && typeof key.d === 'undefined';\n}\nfunction isSecretJWK(key) {\n return isJWK(key) && key.kty === 'oct' && typeof key.k === 'string';\n}\n\nfunction subtleMapping(jwk) {\n let algorithm;\n let keyUsages;\n switch (jwk.kty) {\n case 'RSA': {\n switch (jwk.alg) {\n case 'PS256':\n case 'PS384':\n case 'PS512':\n algorithm = { name: 'RSA-PSS', hash: `SHA-${jwk.alg.slice(-3)}` };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'RS256':\n case 'RS384':\n case 'RS512':\n algorithm = { name: 'RSASSA-PKCS1-v1_5', hash: `SHA-${jwk.alg.slice(-3)}` };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'RSA-OAEP':\n case 'RSA-OAEP-256':\n case 'RSA-OAEP-384':\n case 'RSA-OAEP-512':\n algorithm = {\n name: 'RSA-OAEP',\n hash: `SHA-${parseInt(jwk.alg.slice(-3), 10) || 1}`,\n };\n keyUsages = jwk.d ? ['decrypt', 'unwrapKey'] : ['encrypt', 'wrapKey'];\n break;\n default:\n throw new JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n }\n break;\n }\n case 'EC': {\n switch (jwk.alg) {\n case 'ES256':\n algorithm = { name: 'ECDSA', namedCurve: 'P-256' };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'ES384':\n algorithm = { name: 'ECDSA', namedCurve: 'P-384' };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'ES512':\n algorithm = { name: 'ECDSA', namedCurve: 'P-521' };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'ECDH-ES':\n case 'ECDH-ES+A128KW':\n case 'ECDH-ES+A192KW':\n case 'ECDH-ES+A256KW':\n algorithm = { name: 'ECDH', namedCurve: jwk.crv };\n keyUsages = jwk.d ? ['deriveBits'] : [];\n break;\n default:\n throw new JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n }\n break;\n }\n case 'OKP': {\n switch (jwk.alg) {\n case 'Ed25519':\n algorithm = { name: 'Ed25519' };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'EdDSA':\n algorithm = { name: jwk.crv };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'ECDH-ES':\n case 'ECDH-ES+A128KW':\n case 'ECDH-ES+A192KW':\n case 'ECDH-ES+A256KW':\n algorithm = { name: jwk.crv };\n keyUsages = jwk.d ? ['deriveBits'] : [];\n break;\n default:\n throw new JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n }\n break;\n }\n default:\n throw new JOSENotSupported('Invalid or unsupported JWK \"kty\" (Key Type) Parameter value');\n }\n return { algorithm, keyUsages };\n}\nconst parse = async (jwk) => {\n if (!jwk.alg) {\n throw new TypeError('\"alg\" argument is required when \"jwk.alg\" is not present');\n }\n const { algorithm, keyUsages } = subtleMapping(jwk);\n const rest = [\n algorithm,\n jwk.ext ?? false,\n jwk.key_ops ?? keyUsages,\n ];\n const keyData = { ...jwk };\n delete keyData.alg;\n delete keyData.use;\n return crypto$1.subtle.importKey('jwk', keyData, ...rest);\n};\nvar asKeyObject = parse;\n\nconst exportKeyValue = (k) => decode$1(k);\nlet privCache;\nlet pubCache;\nconst isKeyObject = (key) => {\n return key?.[Symbol.toStringTag] === 'KeyObject';\n};\nconst importAndCache = async (cache, key, jwk, alg, freeze = false) => {\n let cached = cache.get(key);\n if (cached?.[alg]) {\n return cached[alg];\n }\n const cryptoKey = await asKeyObject({ ...jwk, alg });\n if (freeze)\n Object.freeze(key);\n if (!cached) {\n cache.set(key, { [alg]: cryptoKey });\n }\n else {\n cached[alg] = cryptoKey;\n }\n return cryptoKey;\n};\nconst normalizePublicKey = (key, alg) => {\n if (isKeyObject(key)) {\n let jwk = key.export({ format: 'jwk' });\n delete jwk.d;\n delete jwk.dp;\n delete jwk.dq;\n delete jwk.p;\n delete jwk.q;\n delete jwk.qi;\n if (jwk.k) {\n return exportKeyValue(jwk.k);\n }\n pubCache || (pubCache = new WeakMap());\n return importAndCache(pubCache, key, jwk, alg);\n }\n if (isJWK(key)) {\n if (key.k)\n return decode$1(key.k);\n pubCache || (pubCache = new WeakMap());\n const cryptoKey = importAndCache(pubCache, key, key, alg, true);\n return cryptoKey;\n }\n return key;\n};\nconst normalizePrivateKey = (key, alg) => {\n if (isKeyObject(key)) {\n let jwk = key.export({ format: 'jwk' });\n if (jwk.k) {\n return exportKeyValue(jwk.k);\n }\n privCache || (privCache = new WeakMap());\n return importAndCache(privCache, key, jwk, alg);\n }\n if (isJWK(key)) {\n if (key.k)\n return decode$1(key.k);\n privCache || (privCache = new WeakMap());\n const cryptoKey = importAndCache(privCache, key, key, alg, true);\n return cryptoKey;\n }\n return key;\n};\nvar normalize = { normalizePublicKey, normalizePrivateKey };\n\nasync function importJWK(jwk, alg) {\n if (!isObject(jwk)) {\n throw new TypeError('JWK must be an object');\n }\n alg || (alg = jwk.alg);\n switch (jwk.kty) {\n case 'oct':\n if (typeof jwk.k !== 'string' || !jwk.k) {\n throw new TypeError('missing \"k\" (Key Value) Parameter value');\n }\n return decode$1(jwk.k);\n case 'RSA':\n if ('oth' in jwk && jwk.oth !== undefined) {\n throw new JOSENotSupported('RSA JWK \"oth\" (Other Primes Info) Parameter value is not supported');\n }\n case 'EC':\n case 'OKP':\n return asKeyObject({ ...jwk, alg });\n default:\n throw new JOSENotSupported('Unsupported \"kty\" (Key Type) Parameter value');\n }\n}\n\nconst tag = (key) => key?.[Symbol.toStringTag];\nconst jwkMatchesOp = (alg, key, usage) => {\n if (key.use !== undefined && key.use !== 'sig') {\n throw new TypeError('Invalid key for this operation, when present its use must be sig');\n }\n if (key.key_ops !== undefined && key.key_ops.includes?.(usage) !== true) {\n throw new TypeError(`Invalid key for this operation, when present its key_ops must include ${usage}`);\n }\n if (key.alg !== undefined && key.alg !== alg) {\n throw new TypeError(`Invalid key for this operation, when present its alg must be ${alg}`);\n }\n return true;\n};\nconst symmetricTypeCheck = (alg, key, usage, allowJwk) => {\n if (key instanceof Uint8Array)\n return;\n if (allowJwk && isJWK(key)) {\n if (isSecretJWK(key) && jwkMatchesOp(alg, key, usage))\n return;\n throw new TypeError(`JSON Web Key for symmetric algorithms must have JWK \"kty\" (Key Type) equal to \"oct\" and the JWK \"k\" (Key Value) present`);\n }\n if (!isKeyLike(key)) {\n throw new TypeError(withAlg(alg, key, ...types, 'Uint8Array', allowJwk ? 'JSON Web Key' : null));\n }\n if (key.type !== 'secret') {\n throw new TypeError(`${tag(key)} instances for symmetric algorithms must be of type \"secret\"`);\n }\n};\nconst asymmetricTypeCheck = (alg, key, usage, allowJwk) => {\n if (allowJwk && isJWK(key)) {\n switch (usage) {\n case 'sign':\n if (isPrivateJWK(key) && jwkMatchesOp(alg, key, usage))\n return;\n throw new TypeError(`JSON Web Key for this operation be a private JWK`);\n case 'verify':\n if (isPublicJWK(key) && jwkMatchesOp(alg, key, usage))\n return;\n throw new TypeError(`JSON Web Key for this operation be a public JWK`);\n }\n }\n if (!isKeyLike(key)) {\n throw new TypeError(withAlg(alg, key, ...types, allowJwk ? 'JSON Web Key' : null));\n }\n if (key.type === 'secret') {\n throw new TypeError(`${tag(key)} instances for asymmetric algorithms must not be of type \"secret\"`);\n }\n if (usage === 'sign' && key.type === 'public') {\n throw new TypeError(`${tag(key)} instances for asymmetric algorithm signing must be of type \"private\"`);\n }\n if (usage === 'decrypt' && key.type === 'public') {\n throw new TypeError(`${tag(key)} instances for asymmetric algorithm decryption must be of type \"private\"`);\n }\n if (key.algorithm && usage === 'verify' && key.type === 'private') {\n throw new TypeError(`${tag(key)} instances for asymmetric algorithm verifying must be of type \"public\"`);\n }\n if (key.algorithm && usage === 'encrypt' && key.type === 'private') {\n throw new TypeError(`${tag(key)} instances for asymmetric algorithm encryption must be of type \"public\"`);\n }\n};\nfunction checkKeyType(allowJwk, alg, key, usage) {\n const symmetric = alg.startsWith('HS') ||\n alg === 'dir' ||\n alg.startsWith('PBES2') ||\n /^A\\d{3}(?:GCM)?KW$/.test(alg);\n if (symmetric) {\n symmetricTypeCheck(alg, key, usage, allowJwk);\n }\n else {\n asymmetricTypeCheck(alg, key, usage, allowJwk);\n }\n}\ncheckKeyType.bind(undefined, false);\nconst checkKeyTypeWithJwk = checkKeyType.bind(undefined, true);\n\nfunction validateCrit(Err, recognizedDefault, recognizedOption, protectedHeader, joseHeader) {\n if (joseHeader.crit !== undefined && protectedHeader?.crit === undefined) {\n throw new Err('\"crit\" (Critical) Header Parameter MUST be integrity protected');\n }\n if (!protectedHeader || protectedHeader.crit === undefined) {\n return new Set();\n }\n if (!Array.isArray(protectedHeader.crit) ||\n protectedHeader.crit.length === 0 ||\n protectedHeader.crit.some((input) => typeof input !== 'string' || input.length === 0)) {\n throw new Err('\"crit\" (Critical) Header Parameter MUST be an array of non-empty strings when present');\n }\n let recognized;\n if (recognizedOption !== undefined) {\n recognized = new Map([...Object.entries(recognizedOption), ...recognizedDefault.entries()]);\n }\n else {\n recognized = recognizedDefault;\n }\n for (const parameter of protectedHeader.crit) {\n if (!recognized.has(parameter)) {\n throw new JOSENotSupported(`Extension Header Parameter \"${parameter}\" is not recognized`);\n }\n if (joseHeader[parameter] === undefined) {\n throw new Err(`Extension Header Parameter \"${parameter}\" is missing`);\n }\n if (recognized.get(parameter) && protectedHeader[parameter] === undefined) {\n throw new Err(`Extension Header Parameter \"${parameter}\" MUST be integrity protected`);\n }\n }\n return new Set(protectedHeader.crit);\n}\n\nconst validateAlgorithms = (option, algorithms) => {\n if (algorithms !== undefined &&\n (!Array.isArray(algorithms) || algorithms.some((s) => typeof s !== 'string'))) {\n throw new TypeError(`\"${option}\" option must be an array of strings`);\n }\n if (!algorithms) {\n return undefined;\n }\n return new Set(algorithms);\n};\nvar validateAlgorithms$1 = validateAlgorithms;\n\nconst keyToJWK = async (key) => {\n if (key instanceof Uint8Array) {\n return {\n kty: 'oct',\n k: encode(key),\n };\n }\n if (!isCryptoKey(key)) {\n throw new TypeError(invalidKeyInput(key, ...types, 'Uint8Array'));\n }\n if (!key.extractable) {\n throw new TypeError('non-extractable CryptoKey cannot be exported as a JWK');\n }\n const { ext, key_ops, alg, use, ...jwk } = await crypto$1.subtle.exportKey('jwk', key);\n return jwk;\n};\nvar keyToJWK$1 = keyToJWK;\n\nasync function exportJWK(key) {\n return keyToJWK$1(key);\n}\n\nfunction subtleDsa(alg, algorithm) {\n const hash = `SHA-${alg.slice(-3)}`;\n switch (alg) {\n case 'HS256':\n case 'HS384':\n case 'HS512':\n return { hash, name: 'HMAC' };\n case 'PS256':\n case 'PS384':\n case 'PS512':\n return { hash, name: 'RSA-PSS', saltLength: alg.slice(-3) >> 3 };\n case 'RS256':\n case 'RS384':\n case 'RS512':\n return { hash, name: 'RSASSA-PKCS1-v1_5' };\n case 'ES256':\n case 'ES384':\n case 'ES512':\n return { hash, name: 'ECDSA', namedCurve: algorithm.namedCurve };\n case 'Ed25519':\n return { name: 'Ed25519' };\n case 'EdDSA':\n return { name: algorithm.name };\n default:\n throw new JOSENotSupported(`alg ${alg} is not supported either by JOSE or your javascript runtime`);\n }\n}\n\nasync function getCryptoKey(alg, key, usage) {\n if (usage === 'sign') {\n key = await normalize.normalizePrivateKey(key, alg);\n }\n if (usage === 'verify') {\n key = await normalize.normalizePublicKey(key, alg);\n }\n if (isCryptoKey(key)) {\n checkSigCryptoKey(key, alg, usage);\n return key;\n }\n if (key instanceof Uint8Array) {\n if (!alg.startsWith('HS')) {\n throw new TypeError(invalidKeyInput(key, ...types));\n }\n return crypto$1.subtle.importKey('raw', key, { hash: `SHA-${alg.slice(-3)}`, name: 'HMAC' }, false, [usage]);\n }\n throw new TypeError(invalidKeyInput(key, ...types, 'Uint8Array', 'JSON Web Key'));\n}\n\nconst verify = async (alg, key, signature, data) => {\n const cryptoKey = await getCryptoKey(alg, key, 'verify');\n checkKeyLength(alg, cryptoKey);\n const algorithm = subtleDsa(alg, cryptoKey.algorithm);\n try {\n return await crypto$1.subtle.verify(algorithm, cryptoKey, signature, data);\n }\n catch {\n return false;\n }\n};\nvar verify$1 = verify;\n\nasync function flattenedVerify(jws, key, options) {\n if (!isObject(jws)) {\n throw new JWSInvalid('Flattened JWS must be an object');\n }\n if (jws.protected === undefined && jws.header === undefined) {\n throw new JWSInvalid('Flattened JWS must have either of the \"protected\" or \"header\" members');\n }\n if (jws.protected !== undefined && typeof jws.protected !== 'string') {\n throw new JWSInvalid('JWS Protected Header incorrect type');\n }\n if (jws.payload === undefined) {\n throw new JWSInvalid('JWS Payload missing');\n }\n if (typeof jws.signature !== 'string') {\n throw new JWSInvalid('JWS Signature missing or incorrect type');\n }\n if (jws.header !== undefined && !isObject(jws.header)) {\n throw new JWSInvalid('JWS Unprotected Header incorrect type');\n }\n let parsedProt = {};\n if (jws.protected) {\n try {\n const protectedHeader = decode$1(jws.protected);\n parsedProt = JSON.parse(decoder.decode(protectedHeader));\n }\n catch {\n throw new JWSInvalid('JWS Protected Header is invalid');\n }\n }\n if (!isDisjoint$1(parsedProt, jws.header)) {\n throw new JWSInvalid('JWS Protected and JWS Unprotected Header Parameter names must be disjoint');\n }\n const joseHeader = {\n ...parsedProt,\n ...jws.header,\n };\n const extensions = validateCrit(JWSInvalid, new Map([['b64', true]]), options?.crit, parsedProt, joseHeader);\n let b64 = true;\n if (extensions.has('b64')) {\n b64 = parsedProt.b64;\n if (typeof b64 !== 'boolean') {\n throw new JWSInvalid('The \"b64\" (base64url-encode payload) Header Parameter must be a boolean');\n }\n }\n const { alg } = joseHeader;\n if (typeof alg !== 'string' || !alg) {\n throw new JWSInvalid('JWS \"alg\" (Algorithm) Header Parameter missing or invalid');\n }\n const algorithms = options && validateAlgorithms$1('algorithms', options.algorithms);\n if (algorithms && !algorithms.has(alg)) {\n throw new JOSEAlgNotAllowed('\"alg\" (Algorithm) Header Parameter value not allowed');\n }\n if (b64) {\n if (typeof jws.payload !== 'string') {\n throw new JWSInvalid('JWS Payload must be a string');\n }\n }\n else if (typeof jws.payload !== 'string' && !(jws.payload instanceof Uint8Array)) {\n throw new JWSInvalid('JWS Payload must be a string or an Uint8Array instance');\n }\n let resolvedKey = false;\n if (typeof key === 'function') {\n key = await key(parsedProt, jws);\n resolvedKey = true;\n checkKeyTypeWithJwk(alg, key, 'verify');\n if (isJWK(key)) {\n key = await importJWK(key, alg);\n }\n }\n else {\n checkKeyTypeWithJwk(alg, key, 'verify');\n }\n const data = concat(encoder.encode(jws.protected ?? ''), encoder.encode('.'), typeof jws.payload === 'string' ? encoder.encode(jws.payload) : jws.payload);\n let signature;\n try {\n signature = decode$1(jws.signature);\n }\n catch {\n throw new JWSInvalid('Failed to base64url decode the signature');\n }\n const verified = await verify$1(alg, key, signature, data);\n if (!verified) {\n throw new JWSSignatureVerificationFailed();\n }\n let payload;\n if (b64) {\n try {\n payload = decode$1(jws.payload);\n }\n catch {\n throw new JWSInvalid('Failed to base64url decode the payload');\n }\n }\n else if (typeof jws.payload === 'string') {\n payload = encoder.encode(jws.payload);\n }\n else {\n payload = jws.payload;\n }\n const result = { payload };\n if (jws.protected !== undefined) {\n result.protectedHeader = parsedProt;\n }\n if (jws.header !== undefined) {\n result.unprotectedHeader = jws.header;\n }\n if (resolvedKey) {\n return { ...result, key };\n }\n return result;\n}\n\nasync function compactVerify(jws, key, options) {\n if (jws instanceof Uint8Array) {\n jws = decoder.decode(jws);\n }\n if (typeof jws !== 'string') {\n throw new JWSInvalid('Compact JWS must be a string or Uint8Array');\n }\n const { 0: protectedHeader, 1: payload, 2: signature, length } = jws.split('.');\n if (length !== 3) {\n throw new JWSInvalid('Invalid Compact JWS');\n }\n const verified = await flattenedVerify({ payload, protected: protectedHeader, signature }, key, options);\n const result = { payload: verified.payload, protectedHeader: verified.protectedHeader };\n if (typeof key === 'function') {\n return { ...result, key: verified.key };\n }\n return result;\n}\n\nvar epoch = (date) => Math.floor(date.getTime() / 1000);\n\nconst minute = 60;\nconst hour = minute * 60;\nconst day = hour * 24;\nconst week = day * 7;\nconst year = day * 365.25;\nconst REGEX = /^(\\+|\\-)? ?(\\d+|\\d+\\.\\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)(?: (ago|from now))?$/i;\nvar secs = (str) => {\n const matched = REGEX.exec(str);\n if (!matched || (matched[4] && matched[1])) {\n throw new TypeError('Invalid time period format');\n }\n const value = parseFloat(matched[2]);\n const unit = matched[3].toLowerCase();\n let numericDate;\n switch (unit) {\n case 'sec':\n case 'secs':\n case 'second':\n case 'seconds':\n case 's':\n numericDate = Math.round(value);\n break;\n case 'minute':\n case 'minutes':\n case 'min':\n case 'mins':\n case 'm':\n numericDate = Math.round(value * minute);\n break;\n case 'hour':\n case 'hours':\n case 'hr':\n case 'hrs':\n case 'h':\n numericDate = Math.round(value * hour);\n break;\n case 'day':\n case 'days':\n case 'd':\n numericDate = Math.round(value * day);\n break;\n case 'week':\n case 'weeks':\n case 'w':\n numericDate = Math.round(value * week);\n break;\n default:\n numericDate = Math.round(value * year);\n break;\n }\n if (matched[1] === '-' || matched[4] === 'ago') {\n return -numericDate;\n }\n return numericDate;\n};\n\nconst normalizeTyp = (value) => value.toLowerCase().replace(/^application\\//, '');\nconst checkAudiencePresence = (audPayload, audOption) => {\n if (typeof audPayload === 'string') {\n return audOption.includes(audPayload);\n }\n if (Array.isArray(audPayload)) {\n return audOption.some(Set.prototype.has.bind(new Set(audPayload)));\n }\n return false;\n};\nvar jwtPayload = (protectedHeader, encodedPayload, options = {}) => {\n let payload;\n try {\n payload = JSON.parse(decoder.decode(encodedPayload));\n }\n catch {\n }\n if (!isObject(payload)) {\n throw new JWTInvalid('JWT Claims Set must be a top-level JSON object');\n }\n const { typ } = options;\n if (typ &&\n (typeof protectedHeader.typ !== 'string' ||\n normalizeTyp(protectedHeader.typ) !== normalizeTyp(typ))) {\n throw new JWTClaimValidationFailed('unexpected \"typ\" JWT header value', payload, 'typ', 'check_failed');\n }\n const { requiredClaims = [], issuer, subject, audience, maxTokenAge } = options;\n const presenceCheck = [...requiredClaims];\n if (maxTokenAge !== undefined)\n presenceCheck.push('iat');\n if (audience !== undefined)\n presenceCheck.push('aud');\n if (subject !== undefined)\n presenceCheck.push('sub');\n if (issuer !== undefined)\n presenceCheck.push('iss');\n for (const claim of new Set(presenceCheck.reverse())) {\n if (!(claim in payload)) {\n throw new JWTClaimValidationFailed(`missing required \"${claim}\" claim`, payload, claim, 'missing');\n }\n }\n if (issuer &&\n !(Array.isArray(issuer) ? issuer : [issuer]).includes(payload.iss)) {\n throw new JWTClaimValidationFailed('unexpected \"iss\" claim value', payload, 'iss', 'check_failed');\n }\n if (subject && payload.sub !== subject) {\n throw new JWTClaimValidationFailed('unexpected \"sub\" claim value', payload, 'sub', 'check_failed');\n }\n if (audience &&\n !checkAudiencePresence(payload.aud, typeof audience === 'string' ? [audience] : audience)) {\n throw new JWTClaimValidationFailed('unexpected \"aud\" claim value', payload, 'aud', 'check_failed');\n }\n let tolerance;\n switch (typeof options.clockTolerance) {\n case 'string':\n tolerance = secs(options.clockTolerance);\n break;\n case 'number':\n tolerance = options.clockTolerance;\n break;\n case 'undefined':\n tolerance = 0;\n break;\n default:\n throw new TypeError('Invalid clockTolerance option type');\n }\n const { currentDate } = options;\n const now = epoch(currentDate || new Date());\n if ((payload.iat !== undefined || maxTokenAge) && typeof payload.iat !== 'number') {\n throw new JWTClaimValidationFailed('\"iat\" claim must be a number', payload, 'iat', 'invalid');\n }\n if (payload.nbf !== undefined) {\n if (typeof payload.nbf !== 'number') {\n throw new JWTClaimValidationFailed('\"nbf\" claim must be a number', payload, 'nbf', 'invalid');\n }\n if (payload.nbf > now + tolerance) {\n throw new JWTClaimValidationFailed('\"nbf\" claim timestamp check failed', payload, 'nbf', 'check_failed');\n }\n }\n if (payload.exp !== undefined) {\n if (typeof payload.exp !== 'number') {\n throw new JWTClaimValidationFailed('\"exp\" claim must be a number', payload, 'exp', 'invalid');\n }\n if (payload.exp <= now - tolerance) {\n throw new JWTExpired('\"exp\" claim timestamp check failed', payload, 'exp', 'check_failed');\n }\n }\n if (maxTokenAge) {\n const age = now - payload.iat;\n const max = typeof maxTokenAge === 'number' ? maxTokenAge : secs(maxTokenAge);\n if (age - tolerance > max) {\n throw new JWTExpired('\"iat\" claim timestamp check failed (too far in the past)', payload, 'iat', 'check_failed');\n }\n if (age < 0 - tolerance) {\n throw new JWTClaimValidationFailed('\"iat\" claim timestamp check failed (it should be in the past)', payload, 'iat', 'check_failed');\n }\n }\n return payload;\n};\n\nasync function jwtVerify(jwt, key, options) {\n const verified = await compactVerify(jwt, key, options);\n if (verified.protectedHeader.crit?.includes('b64') && verified.protectedHeader.b64 === false) {\n throw new JWTInvalid('JWTs MUST NOT use unencoded payload');\n }\n const payload = jwtPayload(verified.protectedHeader, verified.payload, options);\n const result = { payload, protectedHeader: verified.protectedHeader };\n if (typeof key === 'function') {\n return { ...result, key: verified.key };\n }\n return result;\n}\n\nconst sign = async (alg, key, data) => {\n const cryptoKey = await getCryptoKey(alg, key, 'sign');\n checkKeyLength(alg, cryptoKey);\n const signature = await crypto$1.subtle.sign(subtleDsa(alg, cryptoKey.algorithm), cryptoKey, data);\n return new Uint8Array(signature);\n};\nvar sign$1 = sign;\n\nclass FlattenedSign {\n constructor(payload) {\n if (!(payload instanceof Uint8Array)) {\n throw new TypeError('payload must be an instance of Uint8Array');\n }\n this._payload = payload;\n }\n setProtectedHeader(protectedHeader) {\n if (this._protectedHeader) {\n throw new TypeError('setProtectedHeader can only be called once');\n }\n this._protectedHeader = protectedHeader;\n return this;\n }\n setUnprotectedHeader(unprotectedHeader) {\n if (this._unprotectedHeader) {\n throw new TypeError('setUnprotectedHeader can only be called once');\n }\n this._unprotectedHeader = unprotectedHeader;\n return this;\n }\n async sign(key, options) {\n if (!this._protectedHeader && !this._unprotectedHeader) {\n throw new JWSInvalid('either setProtectedHeader or setUnprotectedHeader must be called before #sign()');\n }\n if (!isDisjoint$1(this._protectedHeader, this._unprotectedHeader)) {\n throw new JWSInvalid('JWS Protected and JWS Unprotected Header Parameter names must be disjoint');\n }\n const joseHeader = {\n ...this._protectedHeader,\n ...this._unprotectedHeader,\n };\n const extensions = validateCrit(JWSInvalid, new Map([['b64', true]]), options?.crit, this._protectedHeader, joseHeader);\n let b64 = true;\n if (extensions.has('b64')) {\n b64 = this._protectedHeader.b64;\n if (typeof b64 !== 'boolean') {\n throw new JWSInvalid('The \"b64\" (base64url-encode payload) Header Parameter must be a boolean');\n }\n }\n const { alg } = joseHeader;\n if (typeof alg !== 'string' || !alg) {\n throw new JWSInvalid('JWS \"alg\" (Algorithm) Header Parameter missing or invalid');\n }\n checkKeyTypeWithJwk(alg, key, 'sign');\n let payload = this._payload;\n if (b64) {\n payload = encoder.encode(encode(payload));\n }\n let protectedHeader;\n if (this._protectedHeader) {\n protectedHeader = encoder.encode(encode(JSON.stringify(this._protectedHeader)));\n }\n else {\n protectedHeader = encoder.encode('');\n }\n const data = concat(protectedHeader, encoder.encode('.'), payload);\n const signature = await sign$1(alg, key, data);\n const jws = {\n signature: encode(signature),\n payload: '',\n };\n if (b64) {\n jws.payload = decoder.decode(payload);\n }\n if (this._unprotectedHeader) {\n jws.header = this._unprotectedHeader;\n }\n if (this._protectedHeader) {\n jws.protected = decoder.decode(protectedHeader);\n }\n return jws;\n }\n}\n\nclass CompactSign {\n constructor(payload) {\n this._flattened = new FlattenedSign(payload);\n }\n setProtectedHeader(protectedHeader) {\n this._flattened.setProtectedHeader(protectedHeader);\n return this;\n }\n async sign(key, options) {\n const jws = await this._flattened.sign(key, options);\n if (jws.payload === undefined) {\n throw new TypeError('use the flattened module for creating JWS with b64: false');\n }\n return `${jws.protected}.${jws.payload}.${jws.signature}`;\n }\n}\n\nfunction validateInput(label, input) {\n if (!Number.isFinite(input)) {\n throw new TypeError(`Invalid ${label} input`);\n }\n return input;\n}\nclass ProduceJWT {\n constructor(payload = {}) {\n if (!isObject(payload)) {\n throw new TypeError('JWT Claims Set MUST be an object');\n }\n this._payload = payload;\n }\n setIssuer(issuer) {\n this._payload = { ...this._payload, iss: issuer };\n return this;\n }\n setSubject(subject) {\n this._payload = { ...this._payload, sub: subject };\n return this;\n }\n setAudience(audience) {\n this._payload = { ...this._payload, aud: audience };\n return this;\n }\n setJti(jwtId) {\n this._payload = { ...this._payload, jti: jwtId };\n return this;\n }\n setNotBefore(input) {\n if (typeof input === 'number') {\n this._payload = { ...this._payload, nbf: validateInput('setNotBefore', input) };\n }\n else if (input instanceof Date) {\n this._payload = { ...this._payload, nbf: validateInput('setNotBefore', epoch(input)) };\n }\n else {\n this._payload = { ...this._payload, nbf: epoch(new Date()) + secs(input) };\n }\n return this;\n }\n setExpirationTime(input) {\n if (typeof input === 'number') {\n this._payload = { ...this._payload, exp: validateInput('setExpirationTime', input) };\n }\n else if (input instanceof Date) {\n this._payload = { ...this._payload, exp: validateInput('setExpirationTime', epoch(input)) };\n }\n else {\n this._payload = { ...this._payload, exp: epoch(new Date()) + secs(input) };\n }\n return this;\n }\n setIssuedAt(input) {\n if (typeof input === 'undefined') {\n this._payload = { ...this._payload, iat: epoch(new Date()) };\n }\n else if (input instanceof Date) {\n this._payload = { ...this._payload, iat: validateInput('setIssuedAt', epoch(input)) };\n }\n else if (typeof input === 'string') {\n this._payload = {\n ...this._payload,\n iat: validateInput('setIssuedAt', epoch(new Date()) + secs(input)),\n };\n }\n else {\n this._payload = { ...this._payload, iat: validateInput('setIssuedAt', input) };\n }\n return this;\n }\n}\n\nclass SignJWT extends ProduceJWT {\n setProtectedHeader(protectedHeader) {\n this._protectedHeader = protectedHeader;\n return this;\n }\n async sign(key, options) {\n const sig = new CompactSign(encoder.encode(JSON.stringify(this._payload)));\n sig.setProtectedHeader(this._protectedHeader);\n if (Array.isArray(this._protectedHeader?.crit) &&\n this._protectedHeader.crit.includes('b64') &&\n this._protectedHeader.b64 === false) {\n throw new JWTInvalid('JWTs MUST NOT use unencoded payload');\n }\n return sig.sign(key, options);\n }\n}\n\nconst check = (value, description) => {\n if (typeof value !== 'string' || !value) {\n throw new JWKInvalid(`${description} missing or invalid`);\n }\n};\nasync function calculateJwkThumbprint(jwk, digestAlgorithm) {\n if (!isObject(jwk)) {\n throw new TypeError('JWK must be an object');\n }\n digestAlgorithm ?? (digestAlgorithm = 'sha256');\n if (digestAlgorithm !== 'sha256' &&\n digestAlgorithm !== 'sha384' &&\n digestAlgorithm !== 'sha512') {\n throw new TypeError('digestAlgorithm must one of \"sha256\", \"sha384\", or \"sha512\"');\n }\n let components;\n switch (jwk.kty) {\n case 'EC':\n check(jwk.crv, '\"crv\" (Curve) Parameter');\n check(jwk.x, '\"x\" (X Coordinate) Parameter');\n check(jwk.y, '\"y\" (Y Coordinate) Parameter');\n components = { crv: jwk.crv, kty: jwk.kty, x: jwk.x, y: jwk.y };\n break;\n case 'OKP':\n check(jwk.crv, '\"crv\" (Subtype of Key Pair) Parameter');\n check(jwk.x, '\"x\" (Public Key) Parameter');\n components = { crv: jwk.crv, kty: jwk.kty, x: jwk.x };\n break;\n case 'RSA':\n check(jwk.e, '\"e\" (Exponent) Parameter');\n check(jwk.n, '\"n\" (Modulus) Parameter');\n components = { e: jwk.e, kty: jwk.kty, n: jwk.n };\n break;\n case 'oct':\n check(jwk.k, '\"k\" (Key Value) Parameter');\n components = { k: jwk.k, kty: jwk.kty };\n break;\n default:\n throw new JOSENotSupported('\"kty\" (Key Type) Parameter missing or unsupported');\n }\n const data = encoder.encode(JSON.stringify(components));\n return encode(await digest$1(digestAlgorithm, data));\n}\n\nfunction getKtyFromAlg(alg) {\n switch (typeof alg === 'string' && alg.slice(0, 2)) {\n case 'RS':\n case 'PS':\n return 'RSA';\n case 'ES':\n return 'EC';\n case 'Ed':\n return 'OKP';\n default:\n throw new JOSENotSupported('Unsupported \"alg\" value for a JSON Web Key Set');\n }\n}\nfunction isJWKSLike(jwks) {\n return (jwks &&\n typeof jwks === 'object' &&\n Array.isArray(jwks.keys) &&\n jwks.keys.every(isJWKLike));\n}\nfunction isJWKLike(key) {\n return isObject(key);\n}\nfunction clone(obj) {\n if (typeof structuredClone === 'function') {\n return structuredClone(obj);\n }\n return JSON.parse(JSON.stringify(obj));\n}\nclass LocalJWKSet {\n constructor(jwks) {\n this._cached = new WeakMap();\n if (!isJWKSLike(jwks)) {\n throw new JWKSInvalid('JSON Web Key Set malformed');\n }\n this._jwks = clone(jwks);\n }\n async getKey(protectedHeader, token) {\n const { alg, kid } = { ...protectedHeader, ...token?.header };\n const kty = getKtyFromAlg(alg);\n const candidates = this._jwks.keys.filter((jwk) => {\n let candidate = kty === jwk.kty;\n if (candidate && typeof kid === 'string') {\n candidate = kid === jwk.kid;\n }\n if (candidate && typeof jwk.alg === 'string') {\n candidate = alg === jwk.alg;\n }\n if (candidate && typeof jwk.use === 'string') {\n candidate = jwk.use === 'sig';\n }\n if (candidate && Array.isArray(jwk.key_ops)) {\n candidate = jwk.key_ops.includes('verify');\n }\n if (candidate) {\n switch (alg) {\n case 'ES256':\n candidate = jwk.crv === 'P-256';\n break;\n case 'ES256K':\n candidate = jwk.crv === 'secp256k1';\n break;\n case 'ES384':\n candidate = jwk.crv === 'P-384';\n break;\n case 'ES512':\n candidate = jwk.crv === 'P-521';\n break;\n case 'Ed25519':\n candidate = jwk.crv === 'Ed25519';\n break;\n case 'EdDSA':\n candidate = jwk.crv === 'Ed25519' || jwk.crv === 'Ed448';\n break;\n }\n }\n return candidate;\n });\n const { 0: jwk, length } = candidates;\n if (length === 0) {\n throw new JWKSNoMatchingKey();\n }\n if (length !== 1) {\n const error = new JWKSMultipleMatchingKeys();\n const { _cached } = this;\n error[Symbol.asyncIterator] = async function* () {\n for (const jwk of candidates) {\n try {\n yield await importWithAlgCache(_cached, jwk, alg);\n }\n catch { }\n }\n };\n throw error;\n }\n return importWithAlgCache(this._cached, jwk, alg);\n }\n}\nasync function importWithAlgCache(cache, jwk, alg) {\n const cached = cache.get(jwk) || cache.set(jwk, {}).get(jwk);\n if (cached[alg] === undefined) {\n const key = await importJWK({ ...jwk, ext: true }, alg);\n if (key instanceof Uint8Array || key.type !== 'public') {\n throw new JWKSInvalid('JSON Web Key Set members must be public keys');\n }\n cached[alg] = key;\n }\n return cached[alg];\n}\nfunction createLocalJWKSet(jwks) {\n const set = new LocalJWKSet(jwks);\n const localJWKSet = async (protectedHeader, token) => set.getKey(protectedHeader, token);\n Object.defineProperties(localJWKSet, {\n jwks: {\n value: () => clone(set._jwks),\n enumerable: true,\n configurable: false,\n writable: false,\n },\n });\n return localJWKSet;\n}\n\nconst fetchJwks = async (url, timeout, options) => {\n let controller;\n let id;\n let timedOut = false;\n if (typeof AbortController === 'function') {\n controller = new AbortController();\n id = setTimeout(() => {\n timedOut = true;\n controller.abort();\n }, timeout);\n }\n const response = await fetch(url.href, {\n signal: controller ? controller.signal : undefined,\n redirect: 'manual',\n headers: options.headers,\n }).catch((err) => {\n if (timedOut)\n throw new JWKSTimeout();\n throw err;\n });\n if (id !== undefined)\n clearTimeout(id);\n if (response.status !== 200) {\n throw new JOSEError('Expected 200 OK from the JSON Web Key Set HTTP response');\n }\n try {\n return await response.json();\n }\n catch {\n throw new JOSEError('Failed to parse the JSON Web Key Set HTTP response as JSON');\n }\n};\nvar fetchJwks$1 = fetchJwks;\n\nfunction isCloudflareWorkers() {\n return (typeof WebSocketPair !== 'undefined' ||\n (typeof navigator !== 'undefined' && navigator.userAgent === 'Cloudflare-Workers') ||\n (typeof EdgeRuntime !== 'undefined' && EdgeRuntime === 'vercel'));\n}\nlet USER_AGENT;\nif (typeof navigator === 'undefined' || !navigator.userAgent?.startsWith?.('Mozilla/5.0 ')) {\n const NAME = 'jose';\n const VERSION = 'v5.10.0';\n USER_AGENT = `${NAME}/${VERSION}`;\n}\nconst jwksCache = Symbol();\nfunction isFreshJwksCache(input, cacheMaxAge) {\n if (typeof input !== 'object' || input === null) {\n return false;\n }\n if (!('uat' in input) || typeof input.uat !== 'number' || Date.now() - input.uat >= cacheMaxAge) {\n return false;\n }\n if (!('jwks' in input) ||\n !isObject(input.jwks) ||\n !Array.isArray(input.jwks.keys) ||\n !Array.prototype.every.call(input.jwks.keys, isObject)) {\n return false;\n }\n return true;\n}\nclass RemoteJWKSet {\n constructor(url, options) {\n if (!(url instanceof URL)) {\n throw new TypeError('url must be an instance of URL');\n }\n this._url = new URL(url.href);\n this._options = { agent: options?.agent, headers: options?.headers };\n this._timeoutDuration =\n typeof options?.timeoutDuration === 'number' ? options?.timeoutDuration : 5000;\n this._cooldownDuration =\n typeof options?.cooldownDuration === 'number' ? options?.cooldownDuration : 30000;\n this._cacheMaxAge = typeof options?.cacheMaxAge === 'number' ? options?.cacheMaxAge : 600000;\n if (options?.[jwksCache] !== undefined) {\n this._cache = options?.[jwksCache];\n if (isFreshJwksCache(options?.[jwksCache], this._cacheMaxAge)) {\n this._jwksTimestamp = this._cache.uat;\n this._local = createLocalJWKSet(this._cache.jwks);\n }\n }\n }\n coolingDown() {\n return typeof this._jwksTimestamp === 'number'\n ? Date.now() < this._jwksTimestamp + this._cooldownDuration\n : false;\n }\n fresh() {\n return typeof this._jwksTimestamp === 'number'\n ? Date.now() < this._jwksTimestamp + this._cacheMaxAge\n : false;\n }\n async getKey(protectedHeader, token) {\n if (!this._local || !this.fresh()) {\n await this.reload();\n }\n try {\n return await this._local(protectedHeader, token);\n }\n catch (err) {\n if (err instanceof JWKSNoMatchingKey) {\n if (this.coolingDown() === false) {\n await this.reload();\n return this._local(protectedHeader, token);\n }\n }\n throw err;\n }\n }\n async reload() {\n if (this._pendingFetch && isCloudflareWorkers()) {\n this._pendingFetch = undefined;\n }\n const headers = new Headers(this._options.headers);\n if (USER_AGENT && !headers.has('User-Agent')) {\n headers.set('User-Agent', USER_AGENT);\n this._options.headers = Object.fromEntries(headers.entries());\n }\n this._pendingFetch || (this._pendingFetch = fetchJwks$1(this._url, this._timeoutDuration, this._options)\n .then((json) => {\n this._local = createLocalJWKSet(json);\n if (this._cache) {\n this._cache.uat = Date.now();\n this._cache.jwks = json;\n }\n this._jwksTimestamp = Date.now();\n this._pendingFetch = undefined;\n })\n .catch((err) => {\n this._pendingFetch = undefined;\n throw err;\n }));\n await this._pendingFetch;\n }\n}\nfunction createRemoteJWKSet(url, options) {\n const set = new RemoteJWKSet(url, options);\n const remoteJWKSet = async (protectedHeader, token) => set.getKey(protectedHeader, token);\n Object.defineProperties(remoteJWKSet, {\n coolingDown: {\n get: () => set.coolingDown(),\n enumerable: true,\n configurable: false,\n },\n fresh: {\n get: () => set.fresh(),\n enumerable: true,\n configurable: false,\n },\n reload: {\n value: () => set.reload(),\n enumerable: true,\n configurable: false,\n writable: false,\n },\n reloading: {\n get: () => !!set._pendingFetch,\n enumerable: true,\n configurable: false,\n },\n jwks: {\n value: () => set._local?.jwks(),\n enumerable: true,\n configurable: false,\n writable: false,\n },\n });\n return remoteJWKSet;\n}\n\nconst decode = decode$1;\n\nfunction decodeJwt(jwt) {\n if (typeof jwt !== 'string')\n throw new JWTInvalid('JWTs must use Compact JWS serialization, JWT must be a string');\n const { 1: payload, length } = jwt.split('.');\n if (length === 5)\n throw new JWTInvalid('Only JWTs using Compact JWS serialization can be decoded');\n if (length !== 3)\n throw new JWTInvalid('Invalid JWT');\n if (!payload)\n throw new JWTInvalid('JWTs must contain a payload');\n let decoded;\n try {\n decoded = decode(payload);\n }\n catch {\n throw new JWTInvalid('Failed to base64url decode the payload');\n }\n let result;\n try {\n result = JSON.parse(decoder.decode(decoded));\n }\n catch {\n throw new JWTInvalid('Failed to parse the decoded payload as JSON');\n }\n if (!isObject(result))\n throw new JWTInvalid('Invalid JWT Claims Set');\n return result;\n}\n\nfunction getModulusLengthOption(options) {\n const modulusLength = options?.modulusLength ?? 2048;\n if (typeof modulusLength !== 'number' || modulusLength < 2048) {\n throw new JOSENotSupported('Invalid or unsupported modulusLength option provided, 2048 bits or larger keys must be used');\n }\n return modulusLength;\n}\nasync function generateKeyPair$1(alg, options) {\n let algorithm;\n let keyUsages;\n switch (alg) {\n case 'PS256':\n case 'PS384':\n case 'PS512':\n algorithm = {\n name: 'RSA-PSS',\n hash: `SHA-${alg.slice(-3)}`,\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]),\n modulusLength: getModulusLengthOption(options),\n };\n keyUsages = ['sign', 'verify'];\n break;\n case 'RS256':\n case 'RS384':\n case 'RS512':\n algorithm = {\n name: 'RSASSA-PKCS1-v1_5',\n hash: `SHA-${alg.slice(-3)}`,\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]),\n modulusLength: getModulusLengthOption(options),\n };\n keyUsages = ['sign', 'verify'];\n break;\n case 'RSA-OAEP':\n case 'RSA-OAEP-256':\n case 'RSA-OAEP-384':\n case 'RSA-OAEP-512':\n algorithm = {\n name: 'RSA-OAEP',\n hash: `SHA-${parseInt(alg.slice(-3), 10) || 1}`,\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]),\n modulusLength: getModulusLengthOption(options),\n };\n keyUsages = ['decrypt', 'unwrapKey', 'encrypt', 'wrapKey'];\n break;\n case 'ES256':\n algorithm = { name: 'ECDSA', namedCurve: 'P-256' };\n keyUsages = ['sign', 'verify'];\n break;\n case 'ES384':\n algorithm = { name: 'ECDSA', namedCurve: 'P-384' };\n keyUsages = ['sign', 'verify'];\n break;\n case 'ES512':\n algorithm = { name: 'ECDSA', namedCurve: 'P-521' };\n keyUsages = ['sign', 'verify'];\n break;\n case 'Ed25519':\n algorithm = { name: 'Ed25519' };\n keyUsages = ['sign', 'verify'];\n break;\n case 'EdDSA': {\n keyUsages = ['sign', 'verify'];\n const crv = options?.crv ?? 'Ed25519';\n switch (crv) {\n case 'Ed25519':\n case 'Ed448':\n algorithm = { name: crv };\n break;\n default:\n throw new JOSENotSupported('Invalid or unsupported crv option provided');\n }\n break;\n }\n case 'ECDH-ES':\n case 'ECDH-ES+A128KW':\n case 'ECDH-ES+A192KW':\n case 'ECDH-ES+A256KW': {\n keyUsages = ['deriveKey', 'deriveBits'];\n const crv = options?.crv ?? 'P-256';\n switch (crv) {\n case 'P-256':\n case 'P-384':\n case 'P-521': {\n algorithm = { name: 'ECDH', namedCurve: crv };\n break;\n }\n case 'X25519':\n case 'X448':\n algorithm = { name: crv };\n break;\n default:\n throw new JOSENotSupported('Invalid or unsupported crv option provided, supported values are P-256, P-384, P-521, X25519, and X448');\n }\n break;\n }\n default:\n throw new JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n }\n return crypto$1.subtle.generateKey(algorithm, options?.extractable ?? false, keyUsages);\n}\n\nasync function generateKeyPair(alg, options) {\n return generateKeyPair$1(alg, options);\n}\n\n/**\n * When the client does not have a webid profile document, use this.\n *\n * @param registration_endpoint\n * @param redirect__uris\n * @returns\n */\nconst requestDynamicClientRegistration = async (registration_endpoint, client_details) => {\n // prepare dynamic client registration\n const client_registration_request_body = {\n ...client_details,\n grant_types: [\"authorization_code\", \"refresh_token\"],\n id_token_signed_response_alg: \"ES256\",\n token_endpoint_auth_method: \"none\",\n application_type: \"web\",\n subject_type: \"public\",\n };\n // register\n return fetch(registration_endpoint, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(client_registration_request_body),\n });\n};\n\n/**\n * A simple IndexedDB wrapper\n */\nclass SessionDatabase {\n dbName;\n storeName;\n dbVersion;\n db = null;\n /**\n * Creates a new instance\n * @param dbName The name of the IndexedDB database\n * @param storeName The name of the object store\n * @param dbVersion The database version\n */\n constructor(dbName = 'soidc', storeName = 'session', dbVersion = 1) {\n this.dbName = dbName;\n this.storeName = storeName;\n this.dbVersion = dbVersion;\n }\n /**\n * Initializes the IndexedDB database\n * @returns Promise that resolves when the database is ready\n */\n async init() {\n return new Promise((resolve, reject) => {\n const request = indexedDB.open(this.dbName, this.dbVersion);\n request.onerror = (event) => {\n reject(new Error(`Database error: ${event.target.error}`));\n };\n request.onsuccess = (event) => {\n this.db = event.target.result;\n resolve(this);\n };\n request.onupgradeneeded = (event) => {\n const db = event.target.result;\n // Check if the object store already exists, if not create it\n if (!db.objectStoreNames.contains(this.storeName)) {\n db.createObjectStore(this.storeName);\n }\n };\n });\n }\n /**\n * Stores any value in the database with the given ID as key\n * @param id The identifier/key for the value\n * @param value The value to store\n */\n async setItem(id, value) {\n if (!this.db) {\n await this.init();\n }\n return new Promise((resolve, reject) => {\n const transaction = this.db.transaction(this.storeName, 'readwrite');\n // Handle transation\n transaction.oncomplete = () => {\n resolve();\n };\n transaction.onerror = (event) => {\n reject(new Error(`Transaction error for setItem(${id},...): ${event.target.error}`));\n };\n transaction.onabort = (event) => {\n reject(new Error(`Transaction aborted for setItem(${id},...): ${event.target.error}`));\n };\n // Perform the request within the transaction\n const store = transaction.objectStore(this.storeName);\n store.put(value, id);\n });\n }\n /**\n * Retrieves a value from the database by ID\n * @param id The identifier/key for the value\n * @returns The stored value or null if not found\n */\n async getItem(id) {\n if (!this.db) {\n await this.init();\n }\n return new Promise((resolve, reject) => {\n const transaction = this.db.transaction(this.storeName, 'readonly');\n // Handle transation\n transaction.onerror = (event) => {\n reject(new Error(`Transaction error for getItem(${id}): ${event.target.error}`));\n };\n transaction.onabort = (event) => {\n reject(new Error(`Transaction aborted for getItem(${id}): ${event.target.error}`));\n };\n // Perform the request within the transaction\n const store = transaction.objectStore(this.storeName);\n const request = store.get(id);\n request.onsuccess = () => {\n resolve(request.result || null);\n };\n });\n }\n /**\n * Removes an item from the database\n * @param id The identifier of the item to remove\n */\n async deleteItem(id) {\n if (!this.db) {\n await this.init();\n }\n return new Promise((resolve, reject) => {\n const transaction = this.db.transaction(this.storeName, 'readwrite');\n // Handle transation\n transaction.oncomplete = () => {\n resolve();\n };\n transaction.onerror = (event) => {\n reject(new Error(`Transaction error for deleteItem(${id}): ${event.target.error}`));\n };\n transaction.onabort = (event) => {\n reject(new Error(`Transaction aborted for deleteItem(${id}): ${event.target.error}`));\n };\n // Perform the request within the transaction\n const store = transaction.objectStore(this.storeName);\n store.delete(id);\n });\n }\n /**\n * Clears all items from the database\n */\n async clear() {\n if (!this.db) {\n await this.init();\n }\n return new Promise((resolve, reject) => {\n const transaction = this.db.transaction(this.storeName, 'readwrite');\n // Handle transation\n transaction.oncomplete = () => {\n resolve();\n };\n transaction.onerror = (event) => {\n reject(new Error(`Transaction error for clear(): ${event.target.error}`));\n };\n transaction.onabort = (event) => {\n reject(new Error(`Transaction aborted for clear(): ${event.target.error}`));\n };\n // Perform the request within the transaction\n const store = transaction.objectStore(this.storeName);\n store.clear();\n });\n }\n /**\n * Closes the database connection\n */\n close() {\n if (this.db) {\n this.db.close();\n this.db = null;\n }\n }\n}\n\n/**\n * Login with the idp, using a provided `client_id` or dynamic client registration if none provided.\n *\n * @param idp\n * @param redirect_uri\n */\nconst redirectForLogin = async (idp, redirect_uri, client_details) => {\n // RFC 6749 - Section 3.1.2 - sanitize redirect_uri\n const redirect_uri_ = new URL(redirect_uri);\n const redirect_uri_sane = redirect_uri_.origin + redirect_uri_.pathname + redirect_uri_.search;\n // RFC 9207 iss check: remember the identity provider (idp) / issuer (iss)\n sessionStorage.setItem(\"idp\", idp);\n // lookup openid configuration of idp\n const idp_origin = new URL(idp).origin;\n const openid_configuration = await fetch(`${idp_origin}/.well-known/openid-configuration`)\n .then((response) => {\n if (!response.ok) {\n throw new Error(`HTTP error! Status: ${response.status}`);\n }\n return response.json();\n });\n // remember token endpoint\n sessionStorage.setItem(\"token_endpoint\", openid_configuration[\"token_endpoint\"]);\n // remember jwks_uri for later token verification\n sessionStorage.setItem(\"jwks_uri\", openid_configuration[\"jwks_uri\"]);\n let client_id = client_details?.client_id;\n // no client_id => attempt dynamic registration\n if (!client_id) {\n // use registration endpoint\n const registration_endpoint = openid_configuration[\"registration_endpoint\"];\n // get client registration\n const client_registration = await requestDynamicClientRegistration(registration_endpoint, client_details ?? { redirect_uris: [redirect_uri_sane] })\n .then((response) => {\n if (!response.ok) {\n throw new Error(`HTTP error! Status: ${response.status}`);\n }\n return response.json();\n });\n client_id = client_registration[\"client_id\"];\n // remember client_id\n sessionStorage.setItem(\"client_id\", client_id);\n }\n // RFC 7636 PKCE, remember code verifer\n const { pkce_code_verifier, pkce_code_challenge } = await getPKCEcode();\n sessionStorage.setItem(\"pkce_code_verifier\", pkce_code_verifier);\n // RFC 6749 OAuth 2.0 - CSRF token\n const csrf_token = window.crypto.randomUUID();\n sessionStorage.setItem(\"csrf_token\", csrf_token);\n // redirect to idp\n const redirect_to_idp = openid_configuration[\"authorization_endpoint\"] +\n `?response_type=code` +\n `&redirect_uri=${encodeURIComponent(redirect_uri_sane)}` +\n `&scope=openid offline_access webid` +\n `&client_id=${encodeURIComponent(client_id)}` +\n `&code_challenge_method=S256` +\n `&code_challenge=${pkce_code_challenge}` +\n `&state=${csrf_token}` +\n `&prompt=consent`; // this query parameter value MUST be present for CSS v7 to issue a refresh token ( // TODO open issue because prompting is the default behaviour but without this query param no refresh token is provided despite the \"remember this client\" box being checked)\n window.location.href = redirect_to_idp;\n};\n/**\n * RFC 7636 PKCE\n * @returns PKCE code verifier and PKCE code challenge\n */\nconst getPKCEcode = async () => {\n // create random string as PKCE code verifier\n const pkce_code_verifier = window.crypto.randomUUID() + \"-\" + window.crypto.randomUUID();\n // hash the verifier and base64URL encode as PKCE code challenge\n const digest = new Uint8Array(await window.crypto.subtle.digest(\"SHA-256\", new TextEncoder().encode(pkce_code_verifier)));\n const pkce_code_challenge = btoa(String.fromCharCode(...digest))\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\")\n .replace(/=+$/, \"\");\n return { pkce_code_verifier, pkce_code_challenge };\n};\n/**\n * On incoming redirect from OpenID provider (idp/iss),\n * URL contains authrization code, issuer (idp) and state (csrf token),\n * get an access token for the authrization code.\n */\nconst onIncomingRedirect = async (client_details) => {\n const url = new URL(window.location.href);\n // authorization code\n const authorization_code = url.searchParams.get(\"code\");\n // if no code, session remains unauthenticated at this point\n if (authorization_code === null) {\n return { clientDetails: client_details };\n }\n // RFC 9207 issuer check\n const idp = sessionStorage.getItem(\"idp\");\n if (idp === null || url.searchParams.get(\"iss\") != idp) {\n throw new Error(\"RFC 9207 - iss != idp - \" + url.searchParams.get(\"iss\") + \" != \" + idp);\n }\n // RFC 6749 OAuth 2.0\n if (url.searchParams.get(\"state\") != sessionStorage.getItem(\"csrf_token\")) {\n throw new Error(\"RFC 6749 - state != csrf_token - \" + url.searchParams.get(\"state\") + \" != \" + sessionStorage.getItem(\"csrf_token\"));\n }\n // remove redirect query parameters from URL\n url.searchParams.delete(\"iss\");\n url.searchParams.delete(\"state\");\n url.searchParams.delete(\"code\");\n window.history.pushState({}, document.title, url.toString());\n // prepare token request\n const pkce_code_verifier = sessionStorage.getItem(\"pkce_code_verifier\");\n if (pkce_code_verifier === null) {\n throw new Error(\"Access Token Request preparation - Could not find in sessionStorage: pkce_code_verifier\");\n }\n const client_id = client_details?.client_id || sessionStorage.getItem(\"client_id\");\n if (!client_id) {\n throw new Error(\"Access Token Request preparation - Could not find in sessionStorage: client_id (dynamic registration)\");\n }\n const token_endpoint = sessionStorage.getItem(\"token_endpoint\");\n if (token_endpoint === null) {\n throw new Error(\"Access Token Request preparation - Could not find in sessionStorage: token_endpoint\");\n }\n // RFC 9449 DPoP\n const key_pair = await generateKeyPair(\"ES256\");\n // get access token\n const token_response = await requestAccessToken(authorization_code, pkce_code_verifier, url.toString(), client_id, token_endpoint, key_pair)\n .then((response) => {\n if (!response.ok) {\n throw new Error(`HTTP error! Status: ${response.status}`);\n }\n return response.json();\n });\n // verify access_token // ! Solid-OIDC specification says it should be a dpop-bound `id token` but implementations provide a dpop-bound `access token`\n const accessToken = token_response[\"access_token\"];\n const jwks_uri = sessionStorage.getItem(\"jwks_uri\");\n if (jwks_uri === null) {\n throw new Error(\"Access Token validation preparation - Could not find in sessionStorage: jwks_uri\");\n }\n const jwks = createRemoteJWKSet(new URL(jwks_uri));\n const { payload } = await jwtVerify(accessToken, jwks, {\n issuer: idp, // RFC 9207\n audience: \"solid\", // RFC 7519 // ! \"solid\" as per implementations ...\n // exp, nbf, iat - handled automatically\n });\n // check dpop thumbprint\n const dpopThumbprint = await calculateJwkThumbprint(await exportJWK(key_pair.publicKey));\n if (payload[\"cnf\"][\"jkt\"] != dpopThumbprint) {\n throw new Error(\"Access Token validation failed on `jkt`: jkt != DPoP thumbprint - \" + payload[\"cnf\"][\"jkt\"] + \" != \" + dpopThumbprint);\n }\n // check client_id\n if (payload[\"client_id\"] != client_id) {\n throw new Error(\"Access Token validation failed on `client_id`: JWT payload != client_id - \" + payload[\"client_id\"] + \" != \" + client_id);\n }\n // summarise session info\n const token_details = { ...token_response, dpop_key_pair: key_pair };\n const idp_details = { idp, jwks_uri, token_endpoint };\n if (!client_details)\n client_details = { redirect_uris: [window.location.href] };\n client_details.client_id = client_id;\n // to remember for session restore\n const sessionDatabase = await new SessionDatabase().init();\n await Promise.all([\n sessionDatabase.setItem(\"idp\", idp),\n sessionDatabase.setItem(\"jwks_uri\", jwks_uri),\n sessionDatabase.setItem(\"token_endpoint\", token_endpoint),\n sessionDatabase.setItem(\"client_id\", client_id),\n sessionDatabase.setItem(\"dpop_keypair\", key_pair),\n sessionDatabase.setItem(\"refresh_token\", token_response[\"refresh_token\"])\n ]);\n sessionDatabase.close();\n // clean session storage\n sessionStorage.removeItem(\"csrf_token\");\n sessionStorage.removeItem(\"pkce_code_verifier\");\n sessionStorage.removeItem(\"idp\");\n sessionStorage.removeItem(\"jwks_uri\");\n sessionStorage.removeItem(\"token_endpoint\");\n sessionStorage.removeItem(\"client_id\");\n // return session information\n return {\n clientDetails: client_details,\n idpDetails: idp_details,\n tokenDetails: token_details\n };\n};\n/**\n * Request an dpop-bound access token from a token endpoint\n * @param authorization_code\n * @param pkce_code_verifier\n * @param redirect_uri\n * @param client_id\n * @param token_endpoint\n * @param key_pair\n * @returns\n */\nconst requestAccessToken = async (authorization_code, pkce_code_verifier, redirect_uri, client_id, token_endpoint, key_pair) => {\n // prepare public key to bind access token to\n const jwk_public_key = await exportJWK(key_pair.publicKey);\n jwk_public_key.alg = \"ES256\";\n // sign the access token request DPoP token\n const dpop = await new SignJWT({\n htu: token_endpoint,\n htm: \"POST\",\n })\n .setIssuedAt()\n .setJti(window.crypto.randomUUID())\n .setProtectedHeader({\n alg: \"ES256\",\n typ: \"dpop+jwt\",\n jwk: jwk_public_key,\n })\n .sign(key_pair.privateKey);\n return fetch(token_endpoint, {\n method: \"POST\",\n headers: {\n dpop,\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n },\n body: new URLSearchParams({\n grant_type: \"authorization_code\",\n code: authorization_code,\n code_verifier: pkce_code_verifier,\n redirect_uri: redirect_uri,\n client_id: client_id,\n }),\n });\n};\n\nconst renewTokens = async () => {\n // remember session details\n const sessionDatabase = await new SessionDatabase().init();\n const client_id = await sessionDatabase.getItem(\"client_id\");\n const token_endpoint = await sessionDatabase.getItem(\"token_endpoint\");\n const key_pair = await sessionDatabase.getItem(\"dpop_keypair\");\n const refresh_token = await sessionDatabase.getItem(\"refresh_token\");\n if (client_id === null || token_endpoint === null || key_pair === null || refresh_token === null) {\n // we can not restore the old session\n throw new Error(\"Could not refresh tokens: details missing from database.\");\n }\n const token_response = await requestFreshTokens(refresh_token, client_id, token_endpoint, key_pair)\n .then((response) => {\n if (!response.ok) {\n throw new Error(`HTTP error! Status: ${response.status}`);\n }\n return response.json();\n });\n // verify access_token // ! Solid-OIDC specification says it should be a dpop-bound `id token` but implementations provide a dpop-bound `access token`\n const accessToken = token_response[\"access_token\"];\n const idp = await sessionDatabase.getItem(\"idp\");\n if (idp === null) {\n throw new Error(\"Access Token validation preparation - Could not find in sessionDatabase: idp\");\n }\n const jwks_uri = await sessionDatabase.getItem(\"jwks_uri\");\n if (jwks_uri === null) {\n throw new Error(\"Access Token validation preparation - Could not find in sessionDatabase: jwks_uri\");\n }\n const jwks = createRemoteJWKSet(new URL(jwks_uri));\n const { payload } = await jwtVerify(accessToken, jwks, {\n issuer: idp, // RFC 9207\n audience: \"solid\", // RFC 7519 // ! \"solid\" as per implementations ...\n // exp, nbf, iat - handled automatically\n });\n // check dpop thumbprint\n const dpopThumbprint = await calculateJwkThumbprint(await exportJWK(key_pair.publicKey));\n if (payload[\"cnf\"][\"jkt\"] != dpopThumbprint) {\n throw new Error(\"Access Token validation failed on `jkt`: jkt != DPoP thumbprint - \" + payload[\"cnf\"][\"jkt\"] + \" != \" + dpopThumbprint);\n }\n // check client_id\n if (payload[\"client_id\"] != client_id) {\n throw new Error(\"Access Token validation failed on `client_id`: JWT payload != client_id - \" + payload[\"client_id\"] + \" != \" + client_id);\n }\n // set new refresh token for token rotation\n await sessionDatabase.setItem(\"refresh_token\", token_response[\"refresh_token\"]);\n sessionDatabase.close();\n return {\n ...token_response,\n dpop_key_pair: key_pair,\n };\n};\n/**\n * Request an dpop-bound access token from a token endpoint using a refresh token\n * @param authorization_code\n * @param pkce_code_verifier\n * @param redirect_uri\n * @param client_id\n * @param token_endpoint\n * @param key_pair\n * @returns\n */\nconst requestFreshTokens = async (refresh_token, client_id, token_endpoint, key_pair) => {\n // prepare public key to bind access token to\n const jwk_public_key = await exportJWK(key_pair.publicKey);\n jwk_public_key.alg = \"ES256\";\n // sign the access token request DPoP token\n const dpop = await new SignJWT({\n htu: token_endpoint,\n htm: \"POST\",\n })\n .setIssuedAt()\n .setJti(window.crypto.randomUUID())\n .setProtectedHeader({\n alg: \"ES256\",\n typ: \"dpop+jwt\",\n jwk: jwk_public_key,\n })\n .sign(key_pair.privateKey);\n return fetch(token_endpoint, {\n method: \"POST\",\n headers: {\n dpop,\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n },\n body: new URLSearchParams({\n grant_type: \"refresh_token\",\n refresh_token,\n client_id\n }),\n });\n};\n\nclass Session {\n sessionInformation;\n isActive_ = false;\n webId_ = undefined;\n currentAth_ = undefined;\n tokenRefreshTimeout;\n sessionDeactivateTimeout;\n onSessionExpirationWarning;\n /**\n * Create a new session.\n */\n constructor(clientDetails, sessionOptions) {\n this.sessionInformation = { clientDetails };\n this.onSessionExpirationWarning = sessionOptions?.onSessionExpirationWarning;\n }\n /**\n * Redirect the user for login to their IDP.\n *\n * @throws Error if the session has not been initialized.\n */\n async login(idp, redirect_uri) {\n await redirectForLogin(idp, redirect_uri, this.sessionInformation.clientDetails);\n }\n /**\n * Clears all session-related information, including IDP details and tokens.\n * This logs the user out.\n * Client details are preserved.\n */\n async logout() {\n // clear timeouts\n if (this.sessionDeactivateTimeout)\n clearTimeout(this.sessionDeactivateTimeout);\n this.sessionDeactivateTimeout = undefined;\n if (this.tokenRefreshTimeout)\n clearTimeout(this.tokenRefreshTimeout);\n this.tokenRefreshTimeout = undefined;\n // clean session data\n this.sessionInformation.idpDetails = undefined;\n this.sessionInformation.tokenDetails = undefined;\n this.isActive_ = false;\n this.webId_ = undefined;\n // only preserve client_id if URI\n if (this.sessionInformation.clientDetails?.client_id)\n try {\n new URL(this.sessionInformation.clientDetails.client_id);\n }\n catch (_) {\n this.sessionInformation.clientDetails.client_id = undefined;\n }\n // clean session database\n const sessionDatabase = await new SessionDatabase().init();\n await sessionDatabase.clear();\n sessionDatabase.close();\n }\n /**\n * Handles the redirect from the identity provider after a login attempt.\n * It attempts to retrieve tokens using the authorization code.\n */\n async handleRedirectFromLogin() {\n // Redirect after Authorization Code Grant // memory via sessionStorage\n const newSessionInfo = await onIncomingRedirect(this.sessionInformation.clientDetails);\n // no session - we remain unauthenticated\n if (!newSessionInfo.tokenDetails) {\n return;\n }\n // we got a session\n this.sessionInformation = newSessionInfo;\n await this.setSessionDetails();\n }\n /**\n * Handles session restoration using the refresh token grant.\n * Silently fails if session could not be restored (maybe there was no session in the first place).\n */\n async restore() {\n // Restore session using Refresh Token Grant // memory via IndexedDB\n await renewTokens()\n .then(tokenDetails => {\n // got new tokens\n this.sessionInformation.tokenDetails = tokenDetails;\n // set session information\n return this.setSessionDetails();\n })\n // anything missing or wrong => abort, could not restore session.\n .catch(_ => { }); // fail silently\n }\n /**\n * Creates a signed DPoP (Demonstration of Proof-of-Possession) token.\n *\n * @param payload The payload to include in the DPoP token. By default, it includes `htu` (HTTP target URI) and `htm` (HTTP method).\n * @returns A promise that resolves to the signed DPoP token string.\n * @throws Error if the session has not been initialized - if no token details are available.\n */\n async createSignedDPoPToken(payload) {\n if (!this.sessionInformation.tokenDetails || !this.currentAth_) {\n throw new Error(\"Session not established.\");\n }\n payload.ath = this.currentAth_;\n const jwk_public_key = await exportJWK(this.sessionInformation.tokenDetails.dpop_key_pair.publicKey);\n return new SignJWT(payload)\n .setIssuedAt()\n .setJti(window.crypto.randomUUID())\n .setProtectedHeader({\n alg: \"ES256\",\n typ: \"dpop+jwt\",\n jwk: jwk_public_key,\n })\n .sign(this.sessionInformation.tokenDetails.dpop_key_pair.privateKey);\n }\n /**\n * Makes an HTTP fetch request.\n * If a session is active, it includes the DPoP token and the access token in the `Authorization` header.\n *\n * @param input The URL or Request object to fetch.\n * @param init Optional fetch request options (RequestInit). Headers for `Authorization` and `DPoP` will be overwritten if a session is active.\n * @param dpopPayload Optional payload for the DPoP token. If provided, it overrides the default `htu` and `htm` claims.\n * @returns A promise that resolves to the fetch Response.\n */\n async authFetch(input, init, dpopPayload) {\n // prepare authenticated call using a DPoP token (either provided payload, or default)\n let url;\n let method;\n let headers;\n if (input instanceof Request) {\n url = new URL(input.url);\n method = init?.method || input?.method || 'GET';\n headers = new Headers(input.headers);\n }\n else {\n init = init || {};\n url = new URL(input.toString());\n method = init.method || 'GET';\n headers = init.headers ? new Headers(init.headers) : new Headers();\n }\n // create DPoP token, and add tokens to request\n if (this.sessionInformation.tokenDetails) {\n dpopPayload = dpopPayload ?? {\n htu: `${url.origin}${url.pathname}`,\n htm: method.toUpperCase()\n };\n const dpop = await this.createSignedDPoPToken(dpopPayload);\n headers.set(\"dpop\", dpop);\n headers.set(\"authorization\", `DPoP ${this.sessionInformation.tokenDetails.access_token}`);\n }\n // check explicitly; to avoid unexpected behaviour\n if (input instanceof Request) { // clone the provided request, and override the headers\n return fetch(new Request(input, { ...init, headers }));\n }\n // just override the headers\n return fetch(url, { ...init, headers });\n }\n get isActive() {\n return this.isActive_;\n }\n get webId() {\n return this.webId_;\n }\n //\n // Helper Methods\n //\n /**\n * Set the session to active if there is an access token.\n */\n async setSessionDetails() {\n // check for access token \n if (!this.sessionInformation.tokenDetails?.access_token) {\n this.logout();\n }\n // generate ath\n this.currentAth_ = await this.computeAth(this.sessionInformation.tokenDetails.access_token);\n // check for active session\n this.webId_ = decodeJwt(this.sessionInformation.tokenDetails.access_token)[\"webid\"];\n this.isActive_ = this.webId !== undefined;\n // deactivating session when token expire\n this.setSessionDeactivateTimeout();\n // refreshing tokens\n this.setTokenRefreshTimeout();\n }\n setSessionDeactivateTimeout() {\n const deactivate_buffer_seconds = 5;\n const timeUntilDeactivate = (this.sessionInformation.tokenDetails.expires_in - deactivate_buffer_seconds) * 1000;\n if (this.sessionDeactivateTimeout)\n clearTimeout(this.sessionDeactivateTimeout);\n this.sessionDeactivateTimeout = setTimeout(() => this.logout(), timeUntilDeactivate);\n }\n setTokenRefreshTimeout() {\n const refresh_buffer_seconds = 95;\n const timeUntilRefresh = (this.sessionInformation.tokenDetails.expires_in - refresh_buffer_seconds) * 1000;\n if (this.tokenRefreshTimeout)\n clearTimeout(this.tokenRefreshTimeout);\n this.tokenRefreshTimeout = setTimeout(async () => {\n const newTokens = await renewTokens()\n .catch((error) => {\n // anything missing or wrong => could not renew tokens.\n if (this.onSessionExpirationWarning)\n this.onSessionExpirationWarning();\n return undefined;\n });\n if (!newTokens) {\n return;\n }\n this.sessionInformation.tokenDetails = newTokens;\n this.setSessionDeactivateTimeout();\n this.setTokenRefreshTimeout();\n }, timeUntilRefresh);\n }\n /**\n * RFC 9449 - Hash of the access token\n */\n async computeAth(accessToken) {\n // Convert the ASCII string of the token to a Uint8Array\n const encoder = new TextEncoder();\n const data = encoder.encode(accessToken); // ASCII by default\n // Compute SHA-256 hash\n const hashBuffer = await crypto.subtle.digest('SHA-256', data);\n // Convert ArrayBuffer to base64url string\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n const base64 = btoa(String.fromCharCode(...hashArray));\n // Convert base64 to base64url\n const base64url = base64\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_')\n .replace(/=+$/, '');\n return base64url;\n }\n}\n\nexport { Session };\n//# sourceMappingURL=index.js.map\n","import { Session } from '@uvdsl/solid-oidc-client-browser';\nimport { BehaviorSubject } from 'rxjs';\nimport { AuthenticatedFetch, PodOsSession, SessionInfo } from '@pod-os/core';\n\nexport class BrowserSession implements PodOsSession {\n private readonly session: Session;\n private onSessionRestoreCallback: (url: string) => void = () => {};\n private readonly _authenticatedFetch: AuthenticatedFetch;\n\n private readonly sessionInfo$: BehaviorSubject<SessionInfo> = new BehaviorSubject<SessionInfo>({\n isLoggedIn: false,\n webId: undefined,\n });\n\n get authenticatedFetch(): (url: RequestInfo, init?: RequestInit | undefined) => Promise<Response> {\n return this._authenticatedFetch;\n }\n\n constructor() {\n this.session = new Session();\n this._authenticatedFetch = this.session.authFetch.bind(this.session);\n }\n\n async handleIncomingRedirect(restorePreviousSession = false) {\n await this.session.handleRedirectFromLogin();\n if (restorePreviousSession) {\n await this.session.restore();\n if (this.session.isActive) {\n this.onSessionRestoreCallback(window.location.href);\n }\n }\n this.sessionInfo$.next({\n isLoggedIn: this.session.isActive,\n webId: this.session.webId,\n });\n }\n\n async login(oidcIssuer: string) {\n return this.session.login(oidcIssuer, window.location.href);\n }\n\n async logout() {\n await this.session.logout();\n this.sessionInfo$.next({\n isLoggedIn: false,\n webId: undefined,\n });\n }\n\n observeSession(): BehaviorSubject<SessionInfo> {\n return this.sessionInfo$;\n }\n\n onSessionRestore(callback: (url: string) => void) {\n this.onSessionRestoreCallback = callback;\n }\n}\n","import { PodOS } from '@pod-os/core';\nimport { Component, h, Listen, Prop, State, Event, EventEmitter } from '@stencil/core';\nimport sessionStore from '../../store/session';\nimport { localSettings } from '../../store/settings';\nimport { createPodOS } from '../../pod-os';\nimport { Subject, takeUntil } from 'rxjs';\nimport { BrowserSession } from '../../authentication';\n\ninterface InitializeOsEvent extends CustomEvent {\n detail: Function;\n}\n\ninterface RequestModuleEvent extends CustomEvent {\n detail: {\n module: string;\n receiver: Function;\n };\n}\n\n@Component({\n tag: 'pos-app',\n shadow: true,\n})\nexport class PosApp {\n @State() os: PodOS;\n\n @Prop() restorePreviousSession: boolean = false;\n\n /**\n * Fired whenever the session was restored\n */\n @Event({ eventName: 'pod-os:session-restored' }) sessionRestoredEmitter: EventEmitter<{ url: string }>;\n\n /**\n * Fires as soon as the pos-app DOM element has been loaded and PodOS can be used. Note: In case the user is authenticated, this will fire before profile data of the user has been fetched, but after authentication has been handled.\n */\n @Event({ eventName: 'pod-os:loaded' }) podOsLoadedEmitter: EventEmitter<{\n os: PodOS;\n authenticatedFetch: typeof global.fetch;\n }>;\n\n private readonly disconnected$ = new Subject<void>();\n\n @State()\n private unsubscribeSettings: () => void;\n\n @State()\n private loading = true;\n\n async componentWillLoad() {\n const session = new BrowserSession();\n this.unsubscribeSettings = localSettings.on('set', () => {\n this.os = createPodOS(session, localSettings.state);\n });\n this.os = createPodOS(session, localSettings.state);\n session.onSessionRestore(url => {\n this.sessionRestoredEmitter.emit({ url });\n });\n try {\n await session.handleIncomingRedirect(this.restorePreviousSession);\n } catch (e) {\n console.error(e);\n }\n this.os\n .observeSession()\n .pipe(takeUntil(this.disconnected$))\n .subscribe(async sessionInfo => {\n sessionStore.state.webId = sessionInfo.webId;\n if (sessionInfo.isLoggedIn) {\n const profile = await this.os.fetchProfile(sessionInfo.webId);\n sessionStore.state.profile = profile;\n }\n sessionStore.state.isLoggedIn = sessionInfo.isLoggedIn;\n this.loading = false;\n });\n this.podOsLoadedEmitter.emit({\n os: this.os,\n authenticatedFetch: session.authenticatedFetch,\n });\n }\n\n disconnectedCallback() {\n this.unsubscribeSettings();\n this.disconnected$.next();\n this.disconnected$.unsubscribe();\n }\n\n @Listen('pod-os:init')\n async initializeOs(event: InitializeOsEvent) {\n event.stopPropagation();\n event.detail(this.os);\n }\n\n @Listen('pod-os:module')\n async loadModule(event: RequestModuleEvent) {\n event.stopPropagation();\n if (event.detail.module === 'contacts') {\n const module = await this.os.loadContactsModule();\n event.detail.receiver(module);\n } else {\n throw Error(`Unknown module \"${event.detail.module}\"`);\n }\n }\n\n render() {\n return this.loading ? <ion-progress-bar type=\"indeterminate\"></ion-progress-bar> : <slot></slot>;\n }\n}\n"],"version":3}
1
+ {"file":"pos-app2.js","mappings":"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","names":["Symbol_observable","Symbol_iterator","sessionStore"],"sources":["../node_modules/idb/build/index.js","src/cache/IndexedDbOfflineCache.ts","src/cache/NavigatorOnlineStatus.ts","src/pod-os.ts","../node_modules/rxjs/dist/esm/internal/BehaviorSubject.js","../node_modules/tslib/tslib.es6.js","../node_modules/rxjs/dist/esm/internal/util/isArrayLike.js","../node_modules/rxjs/dist/esm/internal/util/isPromise.js","../node_modules/rxjs/dist/esm/internal/util/isInteropObservable.js","../node_modules/rxjs/dist/esm/internal/util/isAsyncIterable.js","../node_modules/rxjs/dist/esm/internal/util/throwUnobservableError.js","../node_modules/rxjs/dist/esm/internal/symbol/iterator.js","../node_modules/rxjs/dist/esm/internal/util/isIterable.js","../node_modules/rxjs/dist/esm/internal/util/isReadableStreamLike.js","../node_modules/rxjs/dist/esm/internal/observable/innerFrom.js","../node_modules/rxjs/dist/esm/internal/operators/takeUntil.js","../node_modules/@uvdsl/solid-oidc-client-browser/dist/esm/index.js","src/authentication/BrowserSession.ts","src/components/pos-app/pos-app.tsx"],"sourcesContent":["const instanceOfAny = (object, constructors) => constructors.some((c) => object instanceof c);\n\nlet idbProxyableTypes;\nlet cursorAdvanceMethods;\n// This is a function to prevent it throwing up in node environments.\nfunction getIdbProxyableTypes() {\n return (idbProxyableTypes ||\n (idbProxyableTypes = [\n IDBDatabase,\n IDBObjectStore,\n IDBIndex,\n IDBCursor,\n IDBTransaction,\n ]));\n}\n// This is a function to prevent it throwing up in node environments.\nfunction getCursorAdvanceMethods() {\n return (cursorAdvanceMethods ||\n (cursorAdvanceMethods = [\n IDBCursor.prototype.advance,\n IDBCursor.prototype.continue,\n IDBCursor.prototype.continuePrimaryKey,\n ]));\n}\nconst transactionDoneMap = new WeakMap();\nconst transformCache = new WeakMap();\nconst reverseTransformCache = new WeakMap();\nfunction promisifyRequest(request) {\n const promise = new Promise((resolve, reject) => {\n const unlisten = () => {\n request.removeEventListener('success', success);\n request.removeEventListener('error', error);\n };\n const success = () => {\n resolve(wrap(request.result));\n unlisten();\n };\n const error = () => {\n reject(request.error);\n unlisten();\n };\n request.addEventListener('success', success);\n request.addEventListener('error', error);\n });\n // This mapping exists in reverseTransformCache but doesn't exist in transformCache. This\n // is because we create many promises from a single IDBRequest.\n reverseTransformCache.set(promise, request);\n return promise;\n}\nfunction cacheDonePromiseForTransaction(tx) {\n // Early bail if we've already created a done promise for this transaction.\n if (transactionDoneMap.has(tx))\n return;\n const done = new Promise((resolve, reject) => {\n const unlisten = () => {\n tx.removeEventListener('complete', complete);\n tx.removeEventListener('error', error);\n tx.removeEventListener('abort', error);\n };\n const complete = () => {\n resolve();\n unlisten();\n };\n const error = () => {\n reject(tx.error || new DOMException('AbortError', 'AbortError'));\n unlisten();\n };\n tx.addEventListener('complete', complete);\n tx.addEventListener('error', error);\n tx.addEventListener('abort', error);\n });\n // Cache it for later retrieval.\n transactionDoneMap.set(tx, done);\n}\nlet idbProxyTraps = {\n get(target, prop, receiver) {\n if (target instanceof IDBTransaction) {\n // Special handling for transaction.done.\n if (prop === 'done')\n return transactionDoneMap.get(target);\n // Make tx.store return the only store in the transaction, or undefined if there are many.\n if (prop === 'store') {\n return receiver.objectStoreNames[1]\n ? undefined\n : receiver.objectStore(receiver.objectStoreNames[0]);\n }\n }\n // Else transform whatever we get back.\n return wrap(target[prop]);\n },\n set(target, prop, value) {\n target[prop] = value;\n return true;\n },\n has(target, prop) {\n if (target instanceof IDBTransaction &&\n (prop === 'done' || prop === 'store')) {\n return true;\n }\n return prop in target;\n },\n};\nfunction replaceTraps(callback) {\n idbProxyTraps = callback(idbProxyTraps);\n}\nfunction wrapFunction(func) {\n // Due to expected object equality (which is enforced by the caching in `wrap`), we\n // only create one new func per func.\n // Cursor methods are special, as the behaviour is a little more different to standard IDB. In\n // IDB, you advance the cursor and wait for a new 'success' on the IDBRequest that gave you the\n // cursor. It's kinda like a promise that can resolve with many values. That doesn't make sense\n // with real promises, so each advance methods returns a new promise for the cursor object, or\n // undefined if the end of the cursor has been reached.\n if (getCursorAdvanceMethods().includes(func)) {\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n func.apply(unwrap(this), args);\n return wrap(this.request);\n };\n }\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n return wrap(func.apply(unwrap(this), args));\n };\n}\nfunction transformCachableValue(value) {\n if (typeof value === 'function')\n return wrapFunction(value);\n // This doesn't return, it just creates a 'done' promise for the transaction,\n // which is later returned for transaction.done (see idbObjectHandler).\n if (value instanceof IDBTransaction)\n cacheDonePromiseForTransaction(value);\n if (instanceOfAny(value, getIdbProxyableTypes()))\n return new Proxy(value, idbProxyTraps);\n // Return the same value back if we're not going to transform it.\n return value;\n}\nfunction wrap(value) {\n // We sometimes generate multiple promises from a single IDBRequest (eg when cursoring), because\n // IDB is weird and a single IDBRequest can yield many responses, so these can't be cached.\n if (value instanceof IDBRequest)\n return promisifyRequest(value);\n // If we've already transformed this value before, reuse the transformed value.\n // This is faster, but it also provides object equality.\n if (transformCache.has(value))\n return transformCache.get(value);\n const newValue = transformCachableValue(value);\n // Not all types are transformed.\n // These may be primitive types, so they can't be WeakMap keys.\n if (newValue !== value) {\n transformCache.set(value, newValue);\n reverseTransformCache.set(newValue, value);\n }\n return newValue;\n}\nconst unwrap = (value) => reverseTransformCache.get(value);\n\n/**\n * Open a database.\n *\n * @param name Name of the database.\n * @param version Schema version.\n * @param callbacks Additional callbacks.\n */\nfunction openDB(name, version, { blocked, upgrade, blocking, terminated } = {}) {\n const request = indexedDB.open(name, version);\n const openPromise = wrap(request);\n if (upgrade) {\n request.addEventListener('upgradeneeded', (event) => {\n upgrade(wrap(request.result), event.oldVersion, event.newVersion, wrap(request.transaction), event);\n });\n }\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event.newVersion, event));\n }\n openPromise\n .then((db) => {\n if (terminated)\n db.addEventListener('close', () => terminated());\n if (blocking) {\n db.addEventListener('versionchange', (event) => blocking(event.oldVersion, event.newVersion, event));\n }\n })\n .catch(() => { });\n return openPromise;\n}\n/**\n * Delete a database.\n *\n * @param name Name of the database.\n */\nfunction deleteDB(name, { blocked } = {}) {\n const request = indexedDB.deleteDatabase(name);\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event));\n }\n return wrap(request).then(() => undefined);\n}\n\nconst readMethods = ['get', 'getKey', 'getAll', 'getAllKeys', 'count'];\nconst writeMethods = ['put', 'add', 'delete', 'clear'];\nconst cachedMethods = new Map();\nfunction getMethod(target, prop) {\n if (!(target instanceof IDBDatabase &&\n !(prop in target) &&\n typeof prop === 'string')) {\n return;\n }\n if (cachedMethods.get(prop))\n return cachedMethods.get(prop);\n const targetFuncName = prop.replace(/FromIndex$/, '');\n const useIndex = prop !== targetFuncName;\n const isWrite = writeMethods.includes(targetFuncName);\n if (\n // Bail if the target doesn't exist on the target. Eg, getAll isn't in Edge.\n !(targetFuncName in (useIndex ? IDBIndex : IDBObjectStore).prototype) ||\n !(isWrite || readMethods.includes(targetFuncName))) {\n return;\n }\n const method = async function (storeName, ...args) {\n // isWrite ? 'readwrite' : undefined gzipps better, but fails in Edge :(\n const tx = this.transaction(storeName, isWrite ? 'readwrite' : 'readonly');\n let target = tx.store;\n if (useIndex)\n target = target.index(args.shift());\n // Must reject if op rejects.\n // If it's a write operation, must reject if tx.done rejects.\n // Must reject with op rejection first.\n // Must resolve with op value.\n // Must handle both promises (no unhandled rejections)\n return (await Promise.all([\n target[targetFuncName](...args),\n isWrite && tx.done,\n ]))[0];\n };\n cachedMethods.set(prop, method);\n return method;\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get: (target, prop, receiver) => getMethod(target, prop) || oldTraps.get(target, prop, receiver),\n has: (target, prop) => !!getMethod(target, prop) || oldTraps.has(target, prop),\n}));\n\nconst advanceMethodProps = ['continue', 'continuePrimaryKey', 'advance'];\nconst methodMap = {};\nconst advanceResults = new WeakMap();\nconst ittrProxiedCursorToOriginalProxy = new WeakMap();\nconst cursorIteratorTraps = {\n get(target, prop) {\n if (!advanceMethodProps.includes(prop))\n return target[prop];\n let cachedFunc = methodMap[prop];\n if (!cachedFunc) {\n cachedFunc = methodMap[prop] = function (...args) {\n advanceResults.set(this, ittrProxiedCursorToOriginalProxy.get(this)[prop](...args));\n };\n }\n return cachedFunc;\n },\n};\nasync function* iterate(...args) {\n // tslint:disable-next-line:no-this-assignment\n let cursor = this;\n if (!(cursor instanceof IDBCursor)) {\n cursor = await cursor.openCursor(...args);\n }\n if (!cursor)\n return;\n cursor = cursor;\n const proxiedCursor = new Proxy(cursor, cursorIteratorTraps);\n ittrProxiedCursorToOriginalProxy.set(proxiedCursor, cursor);\n // Map this double-proxy back to the original, so other cursor methods work.\n reverseTransformCache.set(proxiedCursor, unwrap(cursor));\n while (cursor) {\n yield proxiedCursor;\n // If one of the advancing methods was not called, call continue().\n cursor = await (advanceResults.get(proxiedCursor) || cursor.continue());\n advanceResults.delete(proxiedCursor);\n }\n}\nfunction isIteratorProp(target, prop) {\n return ((prop === Symbol.asyncIterator &&\n instanceOfAny(target, [IDBIndex, IDBObjectStore, IDBCursor])) ||\n (prop === 'iterate' && instanceOfAny(target, [IDBIndex, IDBObjectStore])));\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get(target, prop, receiver) {\n if (isIteratorProp(target, prop))\n return iterate;\n return oldTraps.get(target, prop, receiver);\n },\n has(target, prop) {\n return isIteratorProp(target, prop) || oldTraps.has(target, prop);\n },\n}));\n\nexport { deleteDB, openDB, unwrap, wrap };\n","import { DBSchema, IDBPDatabase, openDB } from 'idb';\nimport { CachedRdfDocument, OfflineCache } from '@pod-os/core';\n\ninterface OfflineCacheDb extends DBSchema {\n documents: {\n key: string;\n value: CachedRdfDocument;\n indexes: {\n 'url-revision': [string, string];\n };\n };\n}\n\n/**\n * An offline cache backed by the browsers IndexedDB storage\n */\nexport class IndexedDbOfflineCache implements OfflineCache {\n private readonly dbPromise: Promise<IDBPDatabase<OfflineCacheDb>>;\n\n constructor() {\n this.dbPromise = openDB<OfflineCacheDb>('OfflineCacheDB', 1, {\n upgrade(db) {\n if (!db.objectStoreNames.contains('documents')) {\n const store = db.createObjectStore('documents', { keyPath: 'url' });\n store.createIndex('url-revision', ['url', 'revision']);\n }\n },\n });\n }\n\n async clear() {\n const db = await this.dbPromise;\n return db.clear('documents');\n }\n\n async get(url: string): Promise<CachedRdfDocument | undefined> {\n const db = await this.dbPromise;\n return await db.get('documents', url);\n }\n\n async put(document: CachedRdfDocument) {\n const db = await this.dbPromise;\n const existing = await db.getFromIndex('documents', 'url-revision', [document.url, document.revision]);\n\n if (existing) {\n return; // No need to update if the revision is the same\n }\n await db.put('documents', document);\n }\n}\n","import { OnlineStatus } from '@pod-os/core';\n\nexport class NavigatorOnlineStatus implements OnlineStatus {\n isOnline(): boolean {\n return navigator.onLine;\n }\n}\n","import { NoOfflineCache, PodOS } from '@pod-os/core';\nimport { IndexedDbOfflineCache } from './cache/IndexedDbOfflineCache';\nimport { NavigatorOnlineStatus } from './cache/NavigatorOnlineStatus';\nimport { LocalSettings } from './store/settings';\nimport { BrowserSession } from './authentication';\n\nexport const createPodOS = (session: BrowserSession, settings: LocalSettings): PodOS => {\n return new PodOS({\n session,\n offlineCache: settings.offlineCache ? new IndexedDbOfflineCache() : new NoOfflineCache(),\n onlineStatus: new NavigatorOnlineStatus(),\n });\n};\n","import { Subject } from './Subject';\nexport class BehaviorSubject extends Subject {\n constructor(_value) {\n super();\n this._value = _value;\n }\n get value() {\n return this.getValue();\n }\n _subscribe(subscriber) {\n const subscription = super._subscribe(subscriber);\n !subscription.closed && subscriber.next(this._value);\n return subscription;\n }\n getValue() {\n const { hasError, thrownError, _value } = this;\n if (hasError) {\n throw thrownError;\n }\n this._throwIfClosed();\n return _value;\n }\n next(value) {\n super.next((this._value = value));\n }\n}\n//# sourceMappingURL=BehaviorSubject.js.map","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n function next() {\r\n while (env.stack.length) {\r\n var rec = env.stack.pop();\r\n try {\r\n var result = rec.dispose && rec.dispose.call(rec.value);\r\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n};\r\n","export const isArrayLike = ((x) => x && typeof x.length === 'number' && typeof x !== 'function');\n//# sourceMappingURL=isArrayLike.js.map","import { isFunction } from \"./isFunction\";\nexport function isPromise(value) {\n return isFunction(value === null || value === void 0 ? void 0 : value.then);\n}\n//# sourceMappingURL=isPromise.js.map","import { observable as Symbol_observable } from '../symbol/observable';\nimport { isFunction } from './isFunction';\nexport function isInteropObservable(input) {\n return isFunction(input[Symbol_observable]);\n}\n//# sourceMappingURL=isInteropObservable.js.map","import { isFunction } from './isFunction';\nexport function isAsyncIterable(obj) {\n return Symbol.asyncIterator && isFunction(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]);\n}\n//# sourceMappingURL=isAsyncIterable.js.map","export function createInvalidObservableTypeError(input) {\n return new TypeError(`You provided ${input !== null && typeof input === 'object' ? 'an invalid object' : `'${input}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`);\n}\n//# sourceMappingURL=throwUnobservableError.js.map","export function getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n return Symbol.iterator;\n}\nexport const iterator = getSymbolIterator();\n//# sourceMappingURL=iterator.js.map","import { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from './isFunction';\nexport function isIterable(input) {\n return isFunction(input === null || input === void 0 ? void 0 : input[Symbol_iterator]);\n}\n//# sourceMappingURL=isIterable.js.map","import { __asyncGenerator, __await } from \"tslib\";\nimport { isFunction } from './isFunction';\nexport function readableStreamLikeToAsyncGenerator(readableStream) {\n return __asyncGenerator(this, arguments, function* readableStreamLikeToAsyncGenerator_1() {\n const reader = readableStream.getReader();\n try {\n while (true) {\n const { value, done } = yield __await(reader.read());\n if (done) {\n return yield __await(void 0);\n }\n yield yield __await(value);\n }\n }\n finally {\n reader.releaseLock();\n }\n });\n}\nexport function isReadableStreamLike(obj) {\n return isFunction(obj === null || obj === void 0 ? void 0 : obj.getReader);\n}\n//# sourceMappingURL=isReadableStreamLike.js.map","import { __asyncValues, __awaiter } from \"tslib\";\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isPromise } from '../util/isPromise';\nimport { Observable } from '../Observable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isIterable } from '../util/isIterable';\nimport { isReadableStreamLike, readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nimport { isFunction } from '../util/isFunction';\nimport { reportUnhandledError } from '../util/reportUnhandledError';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function innerFrom(input) {\n if (input instanceof Observable) {\n return input;\n }\n if (input != null) {\n if (isInteropObservable(input)) {\n return fromInteropObservable(input);\n }\n if (isArrayLike(input)) {\n return fromArrayLike(input);\n }\n if (isPromise(input)) {\n return fromPromise(input);\n }\n if (isAsyncIterable(input)) {\n return fromAsyncIterable(input);\n }\n if (isIterable(input)) {\n return fromIterable(input);\n }\n if (isReadableStreamLike(input)) {\n return fromReadableStreamLike(input);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\nexport function fromInteropObservable(obj) {\n return new Observable((subscriber) => {\n const obs = obj[Symbol_observable]();\n if (isFunction(obs.subscribe)) {\n return obs.subscribe(subscriber);\n }\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n });\n}\nexport function fromArrayLike(array) {\n return new Observable((subscriber) => {\n for (let i = 0; i < array.length && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n });\n}\nexport function fromPromise(promise) {\n return new Observable((subscriber) => {\n promise\n .then((value) => {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, (err) => subscriber.error(err))\n .then(null, reportUnhandledError);\n });\n}\nexport function fromIterable(iterable) {\n return new Observable((subscriber) => {\n for (const value of iterable) {\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n }\n subscriber.complete();\n });\n}\nexport function fromAsyncIterable(asyncIterable) {\n return new Observable((subscriber) => {\n process(asyncIterable, subscriber).catch((err) => subscriber.error(err));\n });\n}\nexport function fromReadableStreamLike(readableStream) {\n return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream));\n}\nfunction process(asyncIterable, subscriber) {\n var asyncIterable_1, asyncIterable_1_1;\n var e_1, _a;\n return __awaiter(this, void 0, void 0, function* () {\n try {\n for (asyncIterable_1 = __asyncValues(asyncIterable); asyncIterable_1_1 = yield asyncIterable_1.next(), !asyncIterable_1_1.done;) {\n const value = asyncIterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return)) yield _a.call(asyncIterable_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n subscriber.complete();\n });\n}\n//# sourceMappingURL=innerFrom.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { noop } from '../util/noop';\nexport function takeUntil(notifier) {\n return operate((source, subscriber) => {\n innerFrom(notifier).subscribe(createOperatorSubscriber(subscriber, () => subscriber.complete(), noop));\n !subscriber.closed && source.subscribe(subscriber);\n });\n}\n//# sourceMappingURL=takeUntil.js.map","var crypto$1 = crypto;\nconst isCryptoKey = (key) => key instanceof CryptoKey;\n\nconst digest = async (algorithm, data) => {\n const subtleDigest = `SHA-${algorithm.slice(-3)}`;\n return new Uint8Array(await crypto$1.subtle.digest(subtleDigest, data));\n};\nvar digest$1 = digest;\n\nconst encoder = new TextEncoder();\nconst decoder = new TextDecoder();\nfunction concat(...buffers) {\n const size = buffers.reduce((acc, { length }) => acc + length, 0);\n const buf = new Uint8Array(size);\n let i = 0;\n for (const buffer of buffers) {\n buf.set(buffer, i);\n i += buffer.length;\n }\n return buf;\n}\n\nconst encodeBase64 = (input) => {\n let unencoded = input;\n if (typeof unencoded === 'string') {\n unencoded = encoder.encode(unencoded);\n }\n const CHUNK_SIZE = 0x8000;\n const arr = [];\n for (let i = 0; i < unencoded.length; i += CHUNK_SIZE) {\n arr.push(String.fromCharCode.apply(null, unencoded.subarray(i, i + CHUNK_SIZE)));\n }\n return btoa(arr.join(''));\n};\nconst encode = (input) => {\n return encodeBase64(input).replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n};\nconst decodeBase64 = (encoded) => {\n const binary = atob(encoded);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes;\n};\nconst decode$1 = (input) => {\n let encoded = input;\n if (encoded instanceof Uint8Array) {\n encoded = decoder.decode(encoded);\n }\n encoded = encoded.replace(/-/g, '+').replace(/_/g, '/').replace(/\\s/g, '');\n try {\n return decodeBase64(encoded);\n }\n catch {\n throw new TypeError('The input to be decoded is not correctly encoded.');\n }\n};\n\nclass JOSEError extends Error {\n constructor(message, options) {\n super(message, options);\n this.code = 'ERR_JOSE_GENERIC';\n this.name = this.constructor.name;\n Error.captureStackTrace?.(this, this.constructor);\n }\n}\nJOSEError.code = 'ERR_JOSE_GENERIC';\nclass JWTClaimValidationFailed extends JOSEError {\n constructor(message, payload, claim = 'unspecified', reason = 'unspecified') {\n super(message, { cause: { claim, reason, payload } });\n this.code = 'ERR_JWT_CLAIM_VALIDATION_FAILED';\n this.claim = claim;\n this.reason = reason;\n this.payload = payload;\n }\n}\nJWTClaimValidationFailed.code = 'ERR_JWT_CLAIM_VALIDATION_FAILED';\nclass JWTExpired extends JOSEError {\n constructor(message, payload, claim = 'unspecified', reason = 'unspecified') {\n super(message, { cause: { claim, reason, payload } });\n this.code = 'ERR_JWT_EXPIRED';\n this.claim = claim;\n this.reason = reason;\n this.payload = payload;\n }\n}\nJWTExpired.code = 'ERR_JWT_EXPIRED';\nclass JOSEAlgNotAllowed extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JOSE_ALG_NOT_ALLOWED';\n }\n}\nJOSEAlgNotAllowed.code = 'ERR_JOSE_ALG_NOT_ALLOWED';\nclass JOSENotSupported extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JOSE_NOT_SUPPORTED';\n }\n}\nJOSENotSupported.code = 'ERR_JOSE_NOT_SUPPORTED';\nclass JWEDecryptionFailed extends JOSEError {\n constructor(message = 'decryption operation failed', options) {\n super(message, options);\n this.code = 'ERR_JWE_DECRYPTION_FAILED';\n }\n}\nJWEDecryptionFailed.code = 'ERR_JWE_DECRYPTION_FAILED';\nclass JWEInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWE_INVALID';\n }\n}\nJWEInvalid.code = 'ERR_JWE_INVALID';\nclass JWSInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWS_INVALID';\n }\n}\nJWSInvalid.code = 'ERR_JWS_INVALID';\nclass JWTInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWT_INVALID';\n }\n}\nJWTInvalid.code = 'ERR_JWT_INVALID';\nclass JWKInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWK_INVALID';\n }\n}\nJWKInvalid.code = 'ERR_JWK_INVALID';\nclass JWKSInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWKS_INVALID';\n }\n}\nJWKSInvalid.code = 'ERR_JWKS_INVALID';\nclass JWKSNoMatchingKey extends JOSEError {\n constructor(message = 'no applicable key found in the JSON Web Key Set', options) {\n super(message, options);\n this.code = 'ERR_JWKS_NO_MATCHING_KEY';\n }\n}\nJWKSNoMatchingKey.code = 'ERR_JWKS_NO_MATCHING_KEY';\nclass JWKSMultipleMatchingKeys extends JOSEError {\n constructor(message = 'multiple matching keys found in the JSON Web Key Set', options) {\n super(message, options);\n this.code = 'ERR_JWKS_MULTIPLE_MATCHING_KEYS';\n }\n}\nJWKSMultipleMatchingKeys.code = 'ERR_JWKS_MULTIPLE_MATCHING_KEYS';\nclass JWKSTimeout extends JOSEError {\n constructor(message = 'request timed out', options) {\n super(message, options);\n this.code = 'ERR_JWKS_TIMEOUT';\n }\n}\nJWKSTimeout.code = 'ERR_JWKS_TIMEOUT';\nclass JWSSignatureVerificationFailed extends JOSEError {\n constructor(message = 'signature verification failed', options) {\n super(message, options);\n this.code = 'ERR_JWS_SIGNATURE_VERIFICATION_FAILED';\n }\n}\nJWSSignatureVerificationFailed.code = 'ERR_JWS_SIGNATURE_VERIFICATION_FAILED';\n\nfunction unusable(name, prop = 'algorithm.name') {\n return new TypeError(`CryptoKey does not support this operation, its ${prop} must be ${name}`);\n}\nfunction isAlgorithm(algorithm, name) {\n return algorithm.name === name;\n}\nfunction getHashLength(hash) {\n return parseInt(hash.name.slice(4), 10);\n}\nfunction getNamedCurve(alg) {\n switch (alg) {\n case 'ES256':\n return 'P-256';\n case 'ES384':\n return 'P-384';\n case 'ES512':\n return 'P-521';\n default:\n throw new Error('unreachable');\n }\n}\nfunction checkUsage(key, usages) {\n if (usages.length && !usages.some((expected) => key.usages.includes(expected))) {\n let msg = 'CryptoKey does not support this operation, its usages must include ';\n if (usages.length > 2) {\n const last = usages.pop();\n msg += `one of ${usages.join(', ')}, or ${last}.`;\n }\n else if (usages.length === 2) {\n msg += `one of ${usages[0]} or ${usages[1]}.`;\n }\n else {\n msg += `${usages[0]}.`;\n }\n throw new TypeError(msg);\n }\n}\nfunction checkSigCryptoKey(key, alg, ...usages) {\n switch (alg) {\n case 'HS256':\n case 'HS384':\n case 'HS512': {\n if (!isAlgorithm(key.algorithm, 'HMAC'))\n throw unusable('HMAC');\n const expected = parseInt(alg.slice(2), 10);\n const actual = getHashLength(key.algorithm.hash);\n if (actual !== expected)\n throw unusable(`SHA-${expected}`, 'algorithm.hash');\n break;\n }\n case 'RS256':\n case 'RS384':\n case 'RS512': {\n if (!isAlgorithm(key.algorithm, 'RSASSA-PKCS1-v1_5'))\n throw unusable('RSASSA-PKCS1-v1_5');\n const expected = parseInt(alg.slice(2), 10);\n const actual = getHashLength(key.algorithm.hash);\n if (actual !== expected)\n throw unusable(`SHA-${expected}`, 'algorithm.hash');\n break;\n }\n case 'PS256':\n case 'PS384':\n case 'PS512': {\n if (!isAlgorithm(key.algorithm, 'RSA-PSS'))\n throw unusable('RSA-PSS');\n const expected = parseInt(alg.slice(2), 10);\n const actual = getHashLength(key.algorithm.hash);\n if (actual !== expected)\n throw unusable(`SHA-${expected}`, 'algorithm.hash');\n break;\n }\n case 'EdDSA': {\n if (key.algorithm.name !== 'Ed25519' && key.algorithm.name !== 'Ed448') {\n throw unusable('Ed25519 or Ed448');\n }\n break;\n }\n case 'Ed25519': {\n if (!isAlgorithm(key.algorithm, 'Ed25519'))\n throw unusable('Ed25519');\n break;\n }\n case 'ES256':\n case 'ES384':\n case 'ES512': {\n if (!isAlgorithm(key.algorithm, 'ECDSA'))\n throw unusable('ECDSA');\n const expected = getNamedCurve(alg);\n const actual = key.algorithm.namedCurve;\n if (actual !== expected)\n throw unusable(expected, 'algorithm.namedCurve');\n break;\n }\n default:\n throw new TypeError('CryptoKey does not support this operation');\n }\n checkUsage(key, usages);\n}\n\nfunction message(msg, actual, ...types) {\n types = types.filter(Boolean);\n if (types.length > 2) {\n const last = types.pop();\n msg += `one of type ${types.join(', ')}, or ${last}.`;\n }\n else if (types.length === 2) {\n msg += `one of type ${types[0]} or ${types[1]}.`;\n }\n else {\n msg += `of type ${types[0]}.`;\n }\n if (actual == null) {\n msg += ` Received ${actual}`;\n }\n else if (typeof actual === 'function' && actual.name) {\n msg += ` Received function ${actual.name}`;\n }\n else if (typeof actual === 'object' && actual != null) {\n if (actual.constructor?.name) {\n msg += ` Received an instance of ${actual.constructor.name}`;\n }\n }\n return msg;\n}\nvar invalidKeyInput = (actual, ...types) => {\n return message('Key must be ', actual, ...types);\n};\nfunction withAlg(alg, actual, ...types) {\n return message(`Key for the ${alg} algorithm must be `, actual, ...types);\n}\n\nvar isKeyLike = (key) => {\n if (isCryptoKey(key)) {\n return true;\n }\n return key?.[Symbol.toStringTag] === 'KeyObject';\n};\nconst types = ['CryptoKey'];\n\nconst isDisjoint = (...headers) => {\n const sources = headers.filter(Boolean);\n if (sources.length === 0 || sources.length === 1) {\n return true;\n }\n let acc;\n for (const header of sources) {\n const parameters = Object.keys(header);\n if (!acc || acc.size === 0) {\n acc = new Set(parameters);\n continue;\n }\n for (const parameter of parameters) {\n if (acc.has(parameter)) {\n return false;\n }\n acc.add(parameter);\n }\n }\n return true;\n};\nvar isDisjoint$1 = isDisjoint;\n\nfunction isObjectLike(value) {\n return typeof value === 'object' && value !== null;\n}\nfunction isObject(input) {\n if (!isObjectLike(input) || Object.prototype.toString.call(input) !== '[object Object]') {\n return false;\n }\n if (Object.getPrototypeOf(input) === null) {\n return true;\n }\n let proto = input;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(input) === proto;\n}\n\nvar checkKeyLength = (alg, key) => {\n if (alg.startsWith('RS') || alg.startsWith('PS')) {\n const { modulusLength } = key.algorithm;\n if (typeof modulusLength !== 'number' || modulusLength < 2048) {\n throw new TypeError(`${alg} requires key modulusLength to be 2048 bits or larger`);\n }\n }\n};\n\nfunction isJWK(key) {\n return isObject(key) && typeof key.kty === 'string';\n}\nfunction isPrivateJWK(key) {\n return key.kty !== 'oct' && typeof key.d === 'string';\n}\nfunction isPublicJWK(key) {\n return key.kty !== 'oct' && typeof key.d === 'undefined';\n}\nfunction isSecretJWK(key) {\n return isJWK(key) && key.kty === 'oct' && typeof key.k === 'string';\n}\n\nfunction subtleMapping(jwk) {\n let algorithm;\n let keyUsages;\n switch (jwk.kty) {\n case 'RSA': {\n switch (jwk.alg) {\n case 'PS256':\n case 'PS384':\n case 'PS512':\n algorithm = { name: 'RSA-PSS', hash: `SHA-${jwk.alg.slice(-3)}` };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'RS256':\n case 'RS384':\n case 'RS512':\n algorithm = { name: 'RSASSA-PKCS1-v1_5', hash: `SHA-${jwk.alg.slice(-3)}` };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'RSA-OAEP':\n case 'RSA-OAEP-256':\n case 'RSA-OAEP-384':\n case 'RSA-OAEP-512':\n algorithm = {\n name: 'RSA-OAEP',\n hash: `SHA-${parseInt(jwk.alg.slice(-3), 10) || 1}`,\n };\n keyUsages = jwk.d ? ['decrypt', 'unwrapKey'] : ['encrypt', 'wrapKey'];\n break;\n default:\n throw new JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n }\n break;\n }\n case 'EC': {\n switch (jwk.alg) {\n case 'ES256':\n algorithm = { name: 'ECDSA', namedCurve: 'P-256' };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'ES384':\n algorithm = { name: 'ECDSA', namedCurve: 'P-384' };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'ES512':\n algorithm = { name: 'ECDSA', namedCurve: 'P-521' };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'ECDH-ES':\n case 'ECDH-ES+A128KW':\n case 'ECDH-ES+A192KW':\n case 'ECDH-ES+A256KW':\n algorithm = { name: 'ECDH', namedCurve: jwk.crv };\n keyUsages = jwk.d ? ['deriveBits'] : [];\n break;\n default:\n throw new JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n }\n break;\n }\n case 'OKP': {\n switch (jwk.alg) {\n case 'Ed25519':\n algorithm = { name: 'Ed25519' };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'EdDSA':\n algorithm = { name: jwk.crv };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'ECDH-ES':\n case 'ECDH-ES+A128KW':\n case 'ECDH-ES+A192KW':\n case 'ECDH-ES+A256KW':\n algorithm = { name: jwk.crv };\n keyUsages = jwk.d ? ['deriveBits'] : [];\n break;\n default:\n throw new JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n }\n break;\n }\n default:\n throw new JOSENotSupported('Invalid or unsupported JWK \"kty\" (Key Type) Parameter value');\n }\n return { algorithm, keyUsages };\n}\nconst parse = async (jwk) => {\n if (!jwk.alg) {\n throw new TypeError('\"alg\" argument is required when \"jwk.alg\" is not present');\n }\n const { algorithm, keyUsages } = subtleMapping(jwk);\n const rest = [\n algorithm,\n jwk.ext ?? false,\n jwk.key_ops ?? keyUsages,\n ];\n const keyData = { ...jwk };\n delete keyData.alg;\n delete keyData.use;\n return crypto$1.subtle.importKey('jwk', keyData, ...rest);\n};\nvar asKeyObject = parse;\n\nconst exportKeyValue = (k) => decode$1(k);\nlet privCache;\nlet pubCache;\nconst isKeyObject = (key) => {\n return key?.[Symbol.toStringTag] === 'KeyObject';\n};\nconst importAndCache = async (cache, key, jwk, alg, freeze = false) => {\n let cached = cache.get(key);\n if (cached?.[alg]) {\n return cached[alg];\n }\n const cryptoKey = await asKeyObject({ ...jwk, alg });\n if (freeze)\n Object.freeze(key);\n if (!cached) {\n cache.set(key, { [alg]: cryptoKey });\n }\n else {\n cached[alg] = cryptoKey;\n }\n return cryptoKey;\n};\nconst normalizePublicKey = (key, alg) => {\n if (isKeyObject(key)) {\n let jwk = key.export({ format: 'jwk' });\n delete jwk.d;\n delete jwk.dp;\n delete jwk.dq;\n delete jwk.p;\n delete jwk.q;\n delete jwk.qi;\n if (jwk.k) {\n return exportKeyValue(jwk.k);\n }\n pubCache || (pubCache = new WeakMap());\n return importAndCache(pubCache, key, jwk, alg);\n }\n if (isJWK(key)) {\n if (key.k)\n return decode$1(key.k);\n pubCache || (pubCache = new WeakMap());\n const cryptoKey = importAndCache(pubCache, key, key, alg, true);\n return cryptoKey;\n }\n return key;\n};\nconst normalizePrivateKey = (key, alg) => {\n if (isKeyObject(key)) {\n let jwk = key.export({ format: 'jwk' });\n if (jwk.k) {\n return exportKeyValue(jwk.k);\n }\n privCache || (privCache = new WeakMap());\n return importAndCache(privCache, key, jwk, alg);\n }\n if (isJWK(key)) {\n if (key.k)\n return decode$1(key.k);\n privCache || (privCache = new WeakMap());\n const cryptoKey = importAndCache(privCache, key, key, alg, true);\n return cryptoKey;\n }\n return key;\n};\nvar normalize = { normalizePublicKey, normalizePrivateKey };\n\nasync function importJWK(jwk, alg) {\n if (!isObject(jwk)) {\n throw new TypeError('JWK must be an object');\n }\n alg || (alg = jwk.alg);\n switch (jwk.kty) {\n case 'oct':\n if (typeof jwk.k !== 'string' || !jwk.k) {\n throw new TypeError('missing \"k\" (Key Value) Parameter value');\n }\n return decode$1(jwk.k);\n case 'RSA':\n if ('oth' in jwk && jwk.oth !== undefined) {\n throw new JOSENotSupported('RSA JWK \"oth\" (Other Primes Info) Parameter value is not supported');\n }\n case 'EC':\n case 'OKP':\n return asKeyObject({ ...jwk, alg });\n default:\n throw new JOSENotSupported('Unsupported \"kty\" (Key Type) Parameter value');\n }\n}\n\nconst tag = (key) => key?.[Symbol.toStringTag];\nconst jwkMatchesOp = (alg, key, usage) => {\n if (key.use !== undefined && key.use !== 'sig') {\n throw new TypeError('Invalid key for this operation, when present its use must be sig');\n }\n if (key.key_ops !== undefined && key.key_ops.includes?.(usage) !== true) {\n throw new TypeError(`Invalid key for this operation, when present its key_ops must include ${usage}`);\n }\n if (key.alg !== undefined && key.alg !== alg) {\n throw new TypeError(`Invalid key for this operation, when present its alg must be ${alg}`);\n }\n return true;\n};\nconst symmetricTypeCheck = (alg, key, usage, allowJwk) => {\n if (key instanceof Uint8Array)\n return;\n if (allowJwk && isJWK(key)) {\n if (isSecretJWK(key) && jwkMatchesOp(alg, key, usage))\n return;\n throw new TypeError(`JSON Web Key for symmetric algorithms must have JWK \"kty\" (Key Type) equal to \"oct\" and the JWK \"k\" (Key Value) present`);\n }\n if (!isKeyLike(key)) {\n throw new TypeError(withAlg(alg, key, ...types, 'Uint8Array', allowJwk ? 'JSON Web Key' : null));\n }\n if (key.type !== 'secret') {\n throw new TypeError(`${tag(key)} instances for symmetric algorithms must be of type \"secret\"`);\n }\n};\nconst asymmetricTypeCheck = (alg, key, usage, allowJwk) => {\n if (allowJwk && isJWK(key)) {\n switch (usage) {\n case 'sign':\n if (isPrivateJWK(key) && jwkMatchesOp(alg, key, usage))\n return;\n throw new TypeError(`JSON Web Key for this operation be a private JWK`);\n case 'verify':\n if (isPublicJWK(key) && jwkMatchesOp(alg, key, usage))\n return;\n throw new TypeError(`JSON Web Key for this operation be a public JWK`);\n }\n }\n if (!isKeyLike(key)) {\n throw new TypeError(withAlg(alg, key, ...types, allowJwk ? 'JSON Web Key' : null));\n }\n if (key.type === 'secret') {\n throw new TypeError(`${tag(key)} instances for asymmetric algorithms must not be of type \"secret\"`);\n }\n if (usage === 'sign' && key.type === 'public') {\n throw new TypeError(`${tag(key)} instances for asymmetric algorithm signing must be of type \"private\"`);\n }\n if (usage === 'decrypt' && key.type === 'public') {\n throw new TypeError(`${tag(key)} instances for asymmetric algorithm decryption must be of type \"private\"`);\n }\n if (key.algorithm && usage === 'verify' && key.type === 'private') {\n throw new TypeError(`${tag(key)} instances for asymmetric algorithm verifying must be of type \"public\"`);\n }\n if (key.algorithm && usage === 'encrypt' && key.type === 'private') {\n throw new TypeError(`${tag(key)} instances for asymmetric algorithm encryption must be of type \"public\"`);\n }\n};\nfunction checkKeyType(allowJwk, alg, key, usage) {\n const symmetric = alg.startsWith('HS') ||\n alg === 'dir' ||\n alg.startsWith('PBES2') ||\n /^A\\d{3}(?:GCM)?KW$/.test(alg);\n if (symmetric) {\n symmetricTypeCheck(alg, key, usage, allowJwk);\n }\n else {\n asymmetricTypeCheck(alg, key, usage, allowJwk);\n }\n}\ncheckKeyType.bind(undefined, false);\nconst checkKeyTypeWithJwk = checkKeyType.bind(undefined, true);\n\nfunction validateCrit(Err, recognizedDefault, recognizedOption, protectedHeader, joseHeader) {\n if (joseHeader.crit !== undefined && protectedHeader?.crit === undefined) {\n throw new Err('\"crit\" (Critical) Header Parameter MUST be integrity protected');\n }\n if (!protectedHeader || protectedHeader.crit === undefined) {\n return new Set();\n }\n if (!Array.isArray(protectedHeader.crit) ||\n protectedHeader.crit.length === 0 ||\n protectedHeader.crit.some((input) => typeof input !== 'string' || input.length === 0)) {\n throw new Err('\"crit\" (Critical) Header Parameter MUST be an array of non-empty strings when present');\n }\n let recognized;\n if (recognizedOption !== undefined) {\n recognized = new Map([...Object.entries(recognizedOption), ...recognizedDefault.entries()]);\n }\n else {\n recognized = recognizedDefault;\n }\n for (const parameter of protectedHeader.crit) {\n if (!recognized.has(parameter)) {\n throw new JOSENotSupported(`Extension Header Parameter \"${parameter}\" is not recognized`);\n }\n if (joseHeader[parameter] === undefined) {\n throw new Err(`Extension Header Parameter \"${parameter}\" is missing`);\n }\n if (recognized.get(parameter) && protectedHeader[parameter] === undefined) {\n throw new Err(`Extension Header Parameter \"${parameter}\" MUST be integrity protected`);\n }\n }\n return new Set(protectedHeader.crit);\n}\n\nconst validateAlgorithms = (option, algorithms) => {\n if (algorithms !== undefined &&\n (!Array.isArray(algorithms) || algorithms.some((s) => typeof s !== 'string'))) {\n throw new TypeError(`\"${option}\" option must be an array of strings`);\n }\n if (!algorithms) {\n return undefined;\n }\n return new Set(algorithms);\n};\nvar validateAlgorithms$1 = validateAlgorithms;\n\nconst keyToJWK = async (key) => {\n if (key instanceof Uint8Array) {\n return {\n kty: 'oct',\n k: encode(key),\n };\n }\n if (!isCryptoKey(key)) {\n throw new TypeError(invalidKeyInput(key, ...types, 'Uint8Array'));\n }\n if (!key.extractable) {\n throw new TypeError('non-extractable CryptoKey cannot be exported as a JWK');\n }\n const { ext, key_ops, alg, use, ...jwk } = await crypto$1.subtle.exportKey('jwk', key);\n return jwk;\n};\nvar keyToJWK$1 = keyToJWK;\n\nasync function exportJWK(key) {\n return keyToJWK$1(key);\n}\n\nfunction subtleDsa(alg, algorithm) {\n const hash = `SHA-${alg.slice(-3)}`;\n switch (alg) {\n case 'HS256':\n case 'HS384':\n case 'HS512':\n return { hash, name: 'HMAC' };\n case 'PS256':\n case 'PS384':\n case 'PS512':\n return { hash, name: 'RSA-PSS', saltLength: alg.slice(-3) >> 3 };\n case 'RS256':\n case 'RS384':\n case 'RS512':\n return { hash, name: 'RSASSA-PKCS1-v1_5' };\n case 'ES256':\n case 'ES384':\n case 'ES512':\n return { hash, name: 'ECDSA', namedCurve: algorithm.namedCurve };\n case 'Ed25519':\n return { name: 'Ed25519' };\n case 'EdDSA':\n return { name: algorithm.name };\n default:\n throw new JOSENotSupported(`alg ${alg} is not supported either by JOSE or your javascript runtime`);\n }\n}\n\nasync function getCryptoKey(alg, key, usage) {\n if (usage === 'sign') {\n key = await normalize.normalizePrivateKey(key, alg);\n }\n if (usage === 'verify') {\n key = await normalize.normalizePublicKey(key, alg);\n }\n if (isCryptoKey(key)) {\n checkSigCryptoKey(key, alg, usage);\n return key;\n }\n if (key instanceof Uint8Array) {\n if (!alg.startsWith('HS')) {\n throw new TypeError(invalidKeyInput(key, ...types));\n }\n return crypto$1.subtle.importKey('raw', key, { hash: `SHA-${alg.slice(-3)}`, name: 'HMAC' }, false, [usage]);\n }\n throw new TypeError(invalidKeyInput(key, ...types, 'Uint8Array', 'JSON Web Key'));\n}\n\nconst verify = async (alg, key, signature, data) => {\n const cryptoKey = await getCryptoKey(alg, key, 'verify');\n checkKeyLength(alg, cryptoKey);\n const algorithm = subtleDsa(alg, cryptoKey.algorithm);\n try {\n return await crypto$1.subtle.verify(algorithm, cryptoKey, signature, data);\n }\n catch {\n return false;\n }\n};\nvar verify$1 = verify;\n\nasync function flattenedVerify(jws, key, options) {\n if (!isObject(jws)) {\n throw new JWSInvalid('Flattened JWS must be an object');\n }\n if (jws.protected === undefined && jws.header === undefined) {\n throw new JWSInvalid('Flattened JWS must have either of the \"protected\" or \"header\" members');\n }\n if (jws.protected !== undefined && typeof jws.protected !== 'string') {\n throw new JWSInvalid('JWS Protected Header incorrect type');\n }\n if (jws.payload === undefined) {\n throw new JWSInvalid('JWS Payload missing');\n }\n if (typeof jws.signature !== 'string') {\n throw new JWSInvalid('JWS Signature missing or incorrect type');\n }\n if (jws.header !== undefined && !isObject(jws.header)) {\n throw new JWSInvalid('JWS Unprotected Header incorrect type');\n }\n let parsedProt = {};\n if (jws.protected) {\n try {\n const protectedHeader = decode$1(jws.protected);\n parsedProt = JSON.parse(decoder.decode(protectedHeader));\n }\n catch {\n throw new JWSInvalid('JWS Protected Header is invalid');\n }\n }\n if (!isDisjoint$1(parsedProt, jws.header)) {\n throw new JWSInvalid('JWS Protected and JWS Unprotected Header Parameter names must be disjoint');\n }\n const joseHeader = {\n ...parsedProt,\n ...jws.header,\n };\n const extensions = validateCrit(JWSInvalid, new Map([['b64', true]]), options?.crit, parsedProt, joseHeader);\n let b64 = true;\n if (extensions.has('b64')) {\n b64 = parsedProt.b64;\n if (typeof b64 !== 'boolean') {\n throw new JWSInvalid('The \"b64\" (base64url-encode payload) Header Parameter must be a boolean');\n }\n }\n const { alg } = joseHeader;\n if (typeof alg !== 'string' || !alg) {\n throw new JWSInvalid('JWS \"alg\" (Algorithm) Header Parameter missing or invalid');\n }\n const algorithms = options && validateAlgorithms$1('algorithms', options.algorithms);\n if (algorithms && !algorithms.has(alg)) {\n throw new JOSEAlgNotAllowed('\"alg\" (Algorithm) Header Parameter value not allowed');\n }\n if (b64) {\n if (typeof jws.payload !== 'string') {\n throw new JWSInvalid('JWS Payload must be a string');\n }\n }\n else if (typeof jws.payload !== 'string' && !(jws.payload instanceof Uint8Array)) {\n throw new JWSInvalid('JWS Payload must be a string or an Uint8Array instance');\n }\n let resolvedKey = false;\n if (typeof key === 'function') {\n key = await key(parsedProt, jws);\n resolvedKey = true;\n checkKeyTypeWithJwk(alg, key, 'verify');\n if (isJWK(key)) {\n key = await importJWK(key, alg);\n }\n }\n else {\n checkKeyTypeWithJwk(alg, key, 'verify');\n }\n const data = concat(encoder.encode(jws.protected ?? ''), encoder.encode('.'), typeof jws.payload === 'string' ? encoder.encode(jws.payload) : jws.payload);\n let signature;\n try {\n signature = decode$1(jws.signature);\n }\n catch {\n throw new JWSInvalid('Failed to base64url decode the signature');\n }\n const verified = await verify$1(alg, key, signature, data);\n if (!verified) {\n throw new JWSSignatureVerificationFailed();\n }\n let payload;\n if (b64) {\n try {\n payload = decode$1(jws.payload);\n }\n catch {\n throw new JWSInvalid('Failed to base64url decode the payload');\n }\n }\n else if (typeof jws.payload === 'string') {\n payload = encoder.encode(jws.payload);\n }\n else {\n payload = jws.payload;\n }\n const result = { payload };\n if (jws.protected !== undefined) {\n result.protectedHeader = parsedProt;\n }\n if (jws.header !== undefined) {\n result.unprotectedHeader = jws.header;\n }\n if (resolvedKey) {\n return { ...result, key };\n }\n return result;\n}\n\nasync function compactVerify(jws, key, options) {\n if (jws instanceof Uint8Array) {\n jws = decoder.decode(jws);\n }\n if (typeof jws !== 'string') {\n throw new JWSInvalid('Compact JWS must be a string or Uint8Array');\n }\n const { 0: protectedHeader, 1: payload, 2: signature, length } = jws.split('.');\n if (length !== 3) {\n throw new JWSInvalid('Invalid Compact JWS');\n }\n const verified = await flattenedVerify({ payload, protected: protectedHeader, signature }, key, options);\n const result = { payload: verified.payload, protectedHeader: verified.protectedHeader };\n if (typeof key === 'function') {\n return { ...result, key: verified.key };\n }\n return result;\n}\n\nvar epoch = (date) => Math.floor(date.getTime() / 1000);\n\nconst minute = 60;\nconst hour = minute * 60;\nconst day = hour * 24;\nconst week = day * 7;\nconst year = day * 365.25;\nconst REGEX = /^(\\+|\\-)? ?(\\d+|\\d+\\.\\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)(?: (ago|from now))?$/i;\nvar secs = (str) => {\n const matched = REGEX.exec(str);\n if (!matched || (matched[4] && matched[1])) {\n throw new TypeError('Invalid time period format');\n }\n const value = parseFloat(matched[2]);\n const unit = matched[3].toLowerCase();\n let numericDate;\n switch (unit) {\n case 'sec':\n case 'secs':\n case 'second':\n case 'seconds':\n case 's':\n numericDate = Math.round(value);\n break;\n case 'minute':\n case 'minutes':\n case 'min':\n case 'mins':\n case 'm':\n numericDate = Math.round(value * minute);\n break;\n case 'hour':\n case 'hours':\n case 'hr':\n case 'hrs':\n case 'h':\n numericDate = Math.round(value * hour);\n break;\n case 'day':\n case 'days':\n case 'd':\n numericDate = Math.round(value * day);\n break;\n case 'week':\n case 'weeks':\n case 'w':\n numericDate = Math.round(value * week);\n break;\n default:\n numericDate = Math.round(value * year);\n break;\n }\n if (matched[1] === '-' || matched[4] === 'ago') {\n return -numericDate;\n }\n return numericDate;\n};\n\nconst normalizeTyp = (value) => value.toLowerCase().replace(/^application\\//, '');\nconst checkAudiencePresence = (audPayload, audOption) => {\n if (typeof audPayload === 'string') {\n return audOption.includes(audPayload);\n }\n if (Array.isArray(audPayload)) {\n return audOption.some(Set.prototype.has.bind(new Set(audPayload)));\n }\n return false;\n};\nvar jwtPayload = (protectedHeader, encodedPayload, options = {}) => {\n let payload;\n try {\n payload = JSON.parse(decoder.decode(encodedPayload));\n }\n catch {\n }\n if (!isObject(payload)) {\n throw new JWTInvalid('JWT Claims Set must be a top-level JSON object');\n }\n const { typ } = options;\n if (typ &&\n (typeof protectedHeader.typ !== 'string' ||\n normalizeTyp(protectedHeader.typ) !== normalizeTyp(typ))) {\n throw new JWTClaimValidationFailed('unexpected \"typ\" JWT header value', payload, 'typ', 'check_failed');\n }\n const { requiredClaims = [], issuer, subject, audience, maxTokenAge } = options;\n const presenceCheck = [...requiredClaims];\n if (maxTokenAge !== undefined)\n presenceCheck.push('iat');\n if (audience !== undefined)\n presenceCheck.push('aud');\n if (subject !== undefined)\n presenceCheck.push('sub');\n if (issuer !== undefined)\n presenceCheck.push('iss');\n for (const claim of new Set(presenceCheck.reverse())) {\n if (!(claim in payload)) {\n throw new JWTClaimValidationFailed(`missing required \"${claim}\" claim`, payload, claim, 'missing');\n }\n }\n if (issuer &&\n !(Array.isArray(issuer) ? issuer : [issuer]).includes(payload.iss)) {\n throw new JWTClaimValidationFailed('unexpected \"iss\" claim value', payload, 'iss', 'check_failed');\n }\n if (subject && payload.sub !== subject) {\n throw new JWTClaimValidationFailed('unexpected \"sub\" claim value', payload, 'sub', 'check_failed');\n }\n if (audience &&\n !checkAudiencePresence(payload.aud, typeof audience === 'string' ? [audience] : audience)) {\n throw new JWTClaimValidationFailed('unexpected \"aud\" claim value', payload, 'aud', 'check_failed');\n }\n let tolerance;\n switch (typeof options.clockTolerance) {\n case 'string':\n tolerance = secs(options.clockTolerance);\n break;\n case 'number':\n tolerance = options.clockTolerance;\n break;\n case 'undefined':\n tolerance = 0;\n break;\n default:\n throw new TypeError('Invalid clockTolerance option type');\n }\n const { currentDate } = options;\n const now = epoch(currentDate || new Date());\n if ((payload.iat !== undefined || maxTokenAge) && typeof payload.iat !== 'number') {\n throw new JWTClaimValidationFailed('\"iat\" claim must be a number', payload, 'iat', 'invalid');\n }\n if (payload.nbf !== undefined) {\n if (typeof payload.nbf !== 'number') {\n throw new JWTClaimValidationFailed('\"nbf\" claim must be a number', payload, 'nbf', 'invalid');\n }\n if (payload.nbf > now + tolerance) {\n throw new JWTClaimValidationFailed('\"nbf\" claim timestamp check failed', payload, 'nbf', 'check_failed');\n }\n }\n if (payload.exp !== undefined) {\n if (typeof payload.exp !== 'number') {\n throw new JWTClaimValidationFailed('\"exp\" claim must be a number', payload, 'exp', 'invalid');\n }\n if (payload.exp <= now - tolerance) {\n throw new JWTExpired('\"exp\" claim timestamp check failed', payload, 'exp', 'check_failed');\n }\n }\n if (maxTokenAge) {\n const age = now - payload.iat;\n const max = typeof maxTokenAge === 'number' ? maxTokenAge : secs(maxTokenAge);\n if (age - tolerance > max) {\n throw new JWTExpired('\"iat\" claim timestamp check failed (too far in the past)', payload, 'iat', 'check_failed');\n }\n if (age < 0 - tolerance) {\n throw new JWTClaimValidationFailed('\"iat\" claim timestamp check failed (it should be in the past)', payload, 'iat', 'check_failed');\n }\n }\n return payload;\n};\n\nasync function jwtVerify(jwt, key, options) {\n const verified = await compactVerify(jwt, key, options);\n if (verified.protectedHeader.crit?.includes('b64') && verified.protectedHeader.b64 === false) {\n throw new JWTInvalid('JWTs MUST NOT use unencoded payload');\n }\n const payload = jwtPayload(verified.protectedHeader, verified.payload, options);\n const result = { payload, protectedHeader: verified.protectedHeader };\n if (typeof key === 'function') {\n return { ...result, key: verified.key };\n }\n return result;\n}\n\nconst sign = async (alg, key, data) => {\n const cryptoKey = await getCryptoKey(alg, key, 'sign');\n checkKeyLength(alg, cryptoKey);\n const signature = await crypto$1.subtle.sign(subtleDsa(alg, cryptoKey.algorithm), cryptoKey, data);\n return new Uint8Array(signature);\n};\nvar sign$1 = sign;\n\nclass FlattenedSign {\n constructor(payload) {\n if (!(payload instanceof Uint8Array)) {\n throw new TypeError('payload must be an instance of Uint8Array');\n }\n this._payload = payload;\n }\n setProtectedHeader(protectedHeader) {\n if (this._protectedHeader) {\n throw new TypeError('setProtectedHeader can only be called once');\n }\n this._protectedHeader = protectedHeader;\n return this;\n }\n setUnprotectedHeader(unprotectedHeader) {\n if (this._unprotectedHeader) {\n throw new TypeError('setUnprotectedHeader can only be called once');\n }\n this._unprotectedHeader = unprotectedHeader;\n return this;\n }\n async sign(key, options) {\n if (!this._protectedHeader && !this._unprotectedHeader) {\n throw new JWSInvalid('either setProtectedHeader or setUnprotectedHeader must be called before #sign()');\n }\n if (!isDisjoint$1(this._protectedHeader, this._unprotectedHeader)) {\n throw new JWSInvalid('JWS Protected and JWS Unprotected Header Parameter names must be disjoint');\n }\n const joseHeader = {\n ...this._protectedHeader,\n ...this._unprotectedHeader,\n };\n const extensions = validateCrit(JWSInvalid, new Map([['b64', true]]), options?.crit, this._protectedHeader, joseHeader);\n let b64 = true;\n if (extensions.has('b64')) {\n b64 = this._protectedHeader.b64;\n if (typeof b64 !== 'boolean') {\n throw new JWSInvalid('The \"b64\" (base64url-encode payload) Header Parameter must be a boolean');\n }\n }\n const { alg } = joseHeader;\n if (typeof alg !== 'string' || !alg) {\n throw new JWSInvalid('JWS \"alg\" (Algorithm) Header Parameter missing or invalid');\n }\n checkKeyTypeWithJwk(alg, key, 'sign');\n let payload = this._payload;\n if (b64) {\n payload = encoder.encode(encode(payload));\n }\n let protectedHeader;\n if (this._protectedHeader) {\n protectedHeader = encoder.encode(encode(JSON.stringify(this._protectedHeader)));\n }\n else {\n protectedHeader = encoder.encode('');\n }\n const data = concat(protectedHeader, encoder.encode('.'), payload);\n const signature = await sign$1(alg, key, data);\n const jws = {\n signature: encode(signature),\n payload: '',\n };\n if (b64) {\n jws.payload = decoder.decode(payload);\n }\n if (this._unprotectedHeader) {\n jws.header = this._unprotectedHeader;\n }\n if (this._protectedHeader) {\n jws.protected = decoder.decode(protectedHeader);\n }\n return jws;\n }\n}\n\nclass CompactSign {\n constructor(payload) {\n this._flattened = new FlattenedSign(payload);\n }\n setProtectedHeader(protectedHeader) {\n this._flattened.setProtectedHeader(protectedHeader);\n return this;\n }\n async sign(key, options) {\n const jws = await this._flattened.sign(key, options);\n if (jws.payload === undefined) {\n throw new TypeError('use the flattened module for creating JWS with b64: false');\n }\n return `${jws.protected}.${jws.payload}.${jws.signature}`;\n }\n}\n\nfunction validateInput(label, input) {\n if (!Number.isFinite(input)) {\n throw new TypeError(`Invalid ${label} input`);\n }\n return input;\n}\nclass ProduceJWT {\n constructor(payload = {}) {\n if (!isObject(payload)) {\n throw new TypeError('JWT Claims Set MUST be an object');\n }\n this._payload = payload;\n }\n setIssuer(issuer) {\n this._payload = { ...this._payload, iss: issuer };\n return this;\n }\n setSubject(subject) {\n this._payload = { ...this._payload, sub: subject };\n return this;\n }\n setAudience(audience) {\n this._payload = { ...this._payload, aud: audience };\n return this;\n }\n setJti(jwtId) {\n this._payload = { ...this._payload, jti: jwtId };\n return this;\n }\n setNotBefore(input) {\n if (typeof input === 'number') {\n this._payload = { ...this._payload, nbf: validateInput('setNotBefore', input) };\n }\n else if (input instanceof Date) {\n this._payload = { ...this._payload, nbf: validateInput('setNotBefore', epoch(input)) };\n }\n else {\n this._payload = { ...this._payload, nbf: epoch(new Date()) + secs(input) };\n }\n return this;\n }\n setExpirationTime(input) {\n if (typeof input === 'number') {\n this._payload = { ...this._payload, exp: validateInput('setExpirationTime', input) };\n }\n else if (input instanceof Date) {\n this._payload = { ...this._payload, exp: validateInput('setExpirationTime', epoch(input)) };\n }\n else {\n this._payload = { ...this._payload, exp: epoch(new Date()) + secs(input) };\n }\n return this;\n }\n setIssuedAt(input) {\n if (typeof input === 'undefined') {\n this._payload = { ...this._payload, iat: epoch(new Date()) };\n }\n else if (input instanceof Date) {\n this._payload = { ...this._payload, iat: validateInput('setIssuedAt', epoch(input)) };\n }\n else if (typeof input === 'string') {\n this._payload = {\n ...this._payload,\n iat: validateInput('setIssuedAt', epoch(new Date()) + secs(input)),\n };\n }\n else {\n this._payload = { ...this._payload, iat: validateInput('setIssuedAt', input) };\n }\n return this;\n }\n}\n\nclass SignJWT extends ProduceJWT {\n setProtectedHeader(protectedHeader) {\n this._protectedHeader = protectedHeader;\n return this;\n }\n async sign(key, options) {\n const sig = new CompactSign(encoder.encode(JSON.stringify(this._payload)));\n sig.setProtectedHeader(this._protectedHeader);\n if (Array.isArray(this._protectedHeader?.crit) &&\n this._protectedHeader.crit.includes('b64') &&\n this._protectedHeader.b64 === false) {\n throw new JWTInvalid('JWTs MUST NOT use unencoded payload');\n }\n return sig.sign(key, options);\n }\n}\n\nconst check = (value, description) => {\n if (typeof value !== 'string' || !value) {\n throw new JWKInvalid(`${description} missing or invalid`);\n }\n};\nasync function calculateJwkThumbprint(jwk, digestAlgorithm) {\n if (!isObject(jwk)) {\n throw new TypeError('JWK must be an object');\n }\n digestAlgorithm ?? (digestAlgorithm = 'sha256');\n if (digestAlgorithm !== 'sha256' &&\n digestAlgorithm !== 'sha384' &&\n digestAlgorithm !== 'sha512') {\n throw new TypeError('digestAlgorithm must one of \"sha256\", \"sha384\", or \"sha512\"');\n }\n let components;\n switch (jwk.kty) {\n case 'EC':\n check(jwk.crv, '\"crv\" (Curve) Parameter');\n check(jwk.x, '\"x\" (X Coordinate) Parameter');\n check(jwk.y, '\"y\" (Y Coordinate) Parameter');\n components = { crv: jwk.crv, kty: jwk.kty, x: jwk.x, y: jwk.y };\n break;\n case 'OKP':\n check(jwk.crv, '\"crv\" (Subtype of Key Pair) Parameter');\n check(jwk.x, '\"x\" (Public Key) Parameter');\n components = { crv: jwk.crv, kty: jwk.kty, x: jwk.x };\n break;\n case 'RSA':\n check(jwk.e, '\"e\" (Exponent) Parameter');\n check(jwk.n, '\"n\" (Modulus) Parameter');\n components = { e: jwk.e, kty: jwk.kty, n: jwk.n };\n break;\n case 'oct':\n check(jwk.k, '\"k\" (Key Value) Parameter');\n components = { k: jwk.k, kty: jwk.kty };\n break;\n default:\n throw new JOSENotSupported('\"kty\" (Key Type) Parameter missing or unsupported');\n }\n const data = encoder.encode(JSON.stringify(components));\n return encode(await digest$1(digestAlgorithm, data));\n}\n\nfunction getKtyFromAlg(alg) {\n switch (typeof alg === 'string' && alg.slice(0, 2)) {\n case 'RS':\n case 'PS':\n return 'RSA';\n case 'ES':\n return 'EC';\n case 'Ed':\n return 'OKP';\n default:\n throw new JOSENotSupported('Unsupported \"alg\" value for a JSON Web Key Set');\n }\n}\nfunction isJWKSLike(jwks) {\n return (jwks &&\n typeof jwks === 'object' &&\n Array.isArray(jwks.keys) &&\n jwks.keys.every(isJWKLike));\n}\nfunction isJWKLike(key) {\n return isObject(key);\n}\nfunction clone(obj) {\n if (typeof structuredClone === 'function') {\n return structuredClone(obj);\n }\n return JSON.parse(JSON.stringify(obj));\n}\nclass LocalJWKSet {\n constructor(jwks) {\n this._cached = new WeakMap();\n if (!isJWKSLike(jwks)) {\n throw new JWKSInvalid('JSON Web Key Set malformed');\n }\n this._jwks = clone(jwks);\n }\n async getKey(protectedHeader, token) {\n const { alg, kid } = { ...protectedHeader, ...token?.header };\n const kty = getKtyFromAlg(alg);\n const candidates = this._jwks.keys.filter((jwk) => {\n let candidate = kty === jwk.kty;\n if (candidate && typeof kid === 'string') {\n candidate = kid === jwk.kid;\n }\n if (candidate && typeof jwk.alg === 'string') {\n candidate = alg === jwk.alg;\n }\n if (candidate && typeof jwk.use === 'string') {\n candidate = jwk.use === 'sig';\n }\n if (candidate && Array.isArray(jwk.key_ops)) {\n candidate = jwk.key_ops.includes('verify');\n }\n if (candidate) {\n switch (alg) {\n case 'ES256':\n candidate = jwk.crv === 'P-256';\n break;\n case 'ES256K':\n candidate = jwk.crv === 'secp256k1';\n break;\n case 'ES384':\n candidate = jwk.crv === 'P-384';\n break;\n case 'ES512':\n candidate = jwk.crv === 'P-521';\n break;\n case 'Ed25519':\n candidate = jwk.crv === 'Ed25519';\n break;\n case 'EdDSA':\n candidate = jwk.crv === 'Ed25519' || jwk.crv === 'Ed448';\n break;\n }\n }\n return candidate;\n });\n const { 0: jwk, length } = candidates;\n if (length === 0) {\n throw new JWKSNoMatchingKey();\n }\n if (length !== 1) {\n const error = new JWKSMultipleMatchingKeys();\n const { _cached } = this;\n error[Symbol.asyncIterator] = async function* () {\n for (const jwk of candidates) {\n try {\n yield await importWithAlgCache(_cached, jwk, alg);\n }\n catch { }\n }\n };\n throw error;\n }\n return importWithAlgCache(this._cached, jwk, alg);\n }\n}\nasync function importWithAlgCache(cache, jwk, alg) {\n const cached = cache.get(jwk) || cache.set(jwk, {}).get(jwk);\n if (cached[alg] === undefined) {\n const key = await importJWK({ ...jwk, ext: true }, alg);\n if (key instanceof Uint8Array || key.type !== 'public') {\n throw new JWKSInvalid('JSON Web Key Set members must be public keys');\n }\n cached[alg] = key;\n }\n return cached[alg];\n}\nfunction createLocalJWKSet(jwks) {\n const set = new LocalJWKSet(jwks);\n const localJWKSet = async (protectedHeader, token) => set.getKey(protectedHeader, token);\n Object.defineProperties(localJWKSet, {\n jwks: {\n value: () => clone(set._jwks),\n enumerable: true,\n configurable: false,\n writable: false,\n },\n });\n return localJWKSet;\n}\n\nconst fetchJwks = async (url, timeout, options) => {\n let controller;\n let id;\n let timedOut = false;\n if (typeof AbortController === 'function') {\n controller = new AbortController();\n id = setTimeout(() => {\n timedOut = true;\n controller.abort();\n }, timeout);\n }\n const response = await fetch(url.href, {\n signal: controller ? controller.signal : undefined,\n redirect: 'manual',\n headers: options.headers,\n }).catch((err) => {\n if (timedOut)\n throw new JWKSTimeout();\n throw err;\n });\n if (id !== undefined)\n clearTimeout(id);\n if (response.status !== 200) {\n throw new JOSEError('Expected 200 OK from the JSON Web Key Set HTTP response');\n }\n try {\n return await response.json();\n }\n catch {\n throw new JOSEError('Failed to parse the JSON Web Key Set HTTP response as JSON');\n }\n};\nvar fetchJwks$1 = fetchJwks;\n\nfunction isCloudflareWorkers() {\n return (typeof WebSocketPair !== 'undefined' ||\n (typeof navigator !== 'undefined' && navigator.userAgent === 'Cloudflare-Workers') ||\n (typeof EdgeRuntime !== 'undefined' && EdgeRuntime === 'vercel'));\n}\nlet USER_AGENT;\nif (typeof navigator === 'undefined' || !navigator.userAgent?.startsWith?.('Mozilla/5.0 ')) {\n const NAME = 'jose';\n const VERSION = 'v5.10.0';\n USER_AGENT = `${NAME}/${VERSION}`;\n}\nconst jwksCache = Symbol();\nfunction isFreshJwksCache(input, cacheMaxAge) {\n if (typeof input !== 'object' || input === null) {\n return false;\n }\n if (!('uat' in input) || typeof input.uat !== 'number' || Date.now() - input.uat >= cacheMaxAge) {\n return false;\n }\n if (!('jwks' in input) ||\n !isObject(input.jwks) ||\n !Array.isArray(input.jwks.keys) ||\n !Array.prototype.every.call(input.jwks.keys, isObject)) {\n return false;\n }\n return true;\n}\nclass RemoteJWKSet {\n constructor(url, options) {\n if (!(url instanceof URL)) {\n throw new TypeError('url must be an instance of URL');\n }\n this._url = new URL(url.href);\n this._options = { agent: options?.agent, headers: options?.headers };\n this._timeoutDuration =\n typeof options?.timeoutDuration === 'number' ? options?.timeoutDuration : 5000;\n this._cooldownDuration =\n typeof options?.cooldownDuration === 'number' ? options?.cooldownDuration : 30000;\n this._cacheMaxAge = typeof options?.cacheMaxAge === 'number' ? options?.cacheMaxAge : 600000;\n if (options?.[jwksCache] !== undefined) {\n this._cache = options?.[jwksCache];\n if (isFreshJwksCache(options?.[jwksCache], this._cacheMaxAge)) {\n this._jwksTimestamp = this._cache.uat;\n this._local = createLocalJWKSet(this._cache.jwks);\n }\n }\n }\n coolingDown() {\n return typeof this._jwksTimestamp === 'number'\n ? Date.now() < this._jwksTimestamp + this._cooldownDuration\n : false;\n }\n fresh() {\n return typeof this._jwksTimestamp === 'number'\n ? Date.now() < this._jwksTimestamp + this._cacheMaxAge\n : false;\n }\n async getKey(protectedHeader, token) {\n if (!this._local || !this.fresh()) {\n await this.reload();\n }\n try {\n return await this._local(protectedHeader, token);\n }\n catch (err) {\n if (err instanceof JWKSNoMatchingKey) {\n if (this.coolingDown() === false) {\n await this.reload();\n return this._local(protectedHeader, token);\n }\n }\n throw err;\n }\n }\n async reload() {\n if (this._pendingFetch && isCloudflareWorkers()) {\n this._pendingFetch = undefined;\n }\n const headers = new Headers(this._options.headers);\n if (USER_AGENT && !headers.has('User-Agent')) {\n headers.set('User-Agent', USER_AGENT);\n this._options.headers = Object.fromEntries(headers.entries());\n }\n this._pendingFetch || (this._pendingFetch = fetchJwks$1(this._url, this._timeoutDuration, this._options)\n .then((json) => {\n this._local = createLocalJWKSet(json);\n if (this._cache) {\n this._cache.uat = Date.now();\n this._cache.jwks = json;\n }\n this._jwksTimestamp = Date.now();\n this._pendingFetch = undefined;\n })\n .catch((err) => {\n this._pendingFetch = undefined;\n throw err;\n }));\n await this._pendingFetch;\n }\n}\nfunction createRemoteJWKSet(url, options) {\n const set = new RemoteJWKSet(url, options);\n const remoteJWKSet = async (protectedHeader, token) => set.getKey(protectedHeader, token);\n Object.defineProperties(remoteJWKSet, {\n coolingDown: {\n get: () => set.coolingDown(),\n enumerable: true,\n configurable: false,\n },\n fresh: {\n get: () => set.fresh(),\n enumerable: true,\n configurable: false,\n },\n reload: {\n value: () => set.reload(),\n enumerable: true,\n configurable: false,\n writable: false,\n },\n reloading: {\n get: () => !!set._pendingFetch,\n enumerable: true,\n configurable: false,\n },\n jwks: {\n value: () => set._local?.jwks(),\n enumerable: true,\n configurable: false,\n writable: false,\n },\n });\n return remoteJWKSet;\n}\n\nconst decode = decode$1;\n\nfunction decodeJwt(jwt) {\n if (typeof jwt !== 'string')\n throw new JWTInvalid('JWTs must use Compact JWS serialization, JWT must be a string');\n const { 1: payload, length } = jwt.split('.');\n if (length === 5)\n throw new JWTInvalid('Only JWTs using Compact JWS serialization can be decoded');\n if (length !== 3)\n throw new JWTInvalid('Invalid JWT');\n if (!payload)\n throw new JWTInvalid('JWTs must contain a payload');\n let decoded;\n try {\n decoded = decode(payload);\n }\n catch {\n throw new JWTInvalid('Failed to base64url decode the payload');\n }\n let result;\n try {\n result = JSON.parse(decoder.decode(decoded));\n }\n catch {\n throw new JWTInvalid('Failed to parse the decoded payload as JSON');\n }\n if (!isObject(result))\n throw new JWTInvalid('Invalid JWT Claims Set');\n return result;\n}\n\nfunction getModulusLengthOption(options) {\n const modulusLength = options?.modulusLength ?? 2048;\n if (typeof modulusLength !== 'number' || modulusLength < 2048) {\n throw new JOSENotSupported('Invalid or unsupported modulusLength option provided, 2048 bits or larger keys must be used');\n }\n return modulusLength;\n}\nasync function generateKeyPair$1(alg, options) {\n let algorithm;\n let keyUsages;\n switch (alg) {\n case 'PS256':\n case 'PS384':\n case 'PS512':\n algorithm = {\n name: 'RSA-PSS',\n hash: `SHA-${alg.slice(-3)}`,\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]),\n modulusLength: getModulusLengthOption(options),\n };\n keyUsages = ['sign', 'verify'];\n break;\n case 'RS256':\n case 'RS384':\n case 'RS512':\n algorithm = {\n name: 'RSASSA-PKCS1-v1_5',\n hash: `SHA-${alg.slice(-3)}`,\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]),\n modulusLength: getModulusLengthOption(options),\n };\n keyUsages = ['sign', 'verify'];\n break;\n case 'RSA-OAEP':\n case 'RSA-OAEP-256':\n case 'RSA-OAEP-384':\n case 'RSA-OAEP-512':\n algorithm = {\n name: 'RSA-OAEP',\n hash: `SHA-${parseInt(alg.slice(-3), 10) || 1}`,\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]),\n modulusLength: getModulusLengthOption(options),\n };\n keyUsages = ['decrypt', 'unwrapKey', 'encrypt', 'wrapKey'];\n break;\n case 'ES256':\n algorithm = { name: 'ECDSA', namedCurve: 'P-256' };\n keyUsages = ['sign', 'verify'];\n break;\n case 'ES384':\n algorithm = { name: 'ECDSA', namedCurve: 'P-384' };\n keyUsages = ['sign', 'verify'];\n break;\n case 'ES512':\n algorithm = { name: 'ECDSA', namedCurve: 'P-521' };\n keyUsages = ['sign', 'verify'];\n break;\n case 'Ed25519':\n algorithm = { name: 'Ed25519' };\n keyUsages = ['sign', 'verify'];\n break;\n case 'EdDSA': {\n keyUsages = ['sign', 'verify'];\n const crv = options?.crv ?? 'Ed25519';\n switch (crv) {\n case 'Ed25519':\n case 'Ed448':\n algorithm = { name: crv };\n break;\n default:\n throw new JOSENotSupported('Invalid or unsupported crv option provided');\n }\n break;\n }\n case 'ECDH-ES':\n case 'ECDH-ES+A128KW':\n case 'ECDH-ES+A192KW':\n case 'ECDH-ES+A256KW': {\n keyUsages = ['deriveKey', 'deriveBits'];\n const crv = options?.crv ?? 'P-256';\n switch (crv) {\n case 'P-256':\n case 'P-384':\n case 'P-521': {\n algorithm = { name: 'ECDH', namedCurve: crv };\n break;\n }\n case 'X25519':\n case 'X448':\n algorithm = { name: crv };\n break;\n default:\n throw new JOSENotSupported('Invalid or unsupported crv option provided, supported values are P-256, P-384, P-521, X25519, and X448');\n }\n break;\n }\n default:\n throw new JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n }\n return crypto$1.subtle.generateKey(algorithm, options?.extractable ?? false, keyUsages);\n}\n\nasync function generateKeyPair(alg, options) {\n return generateKeyPair$1(alg, options);\n}\n\n/**\n * When the client does not have a webid profile document, use this.\n *\n * @param registration_endpoint\n * @param redirect__uris\n * @returns\n */\nconst requestDynamicClientRegistration = async (registration_endpoint, client_details) => {\n // prepare dynamic client registration\n const client_registration_request_body = {\n ...client_details,\n grant_types: [\"authorization_code\", \"refresh_token\"],\n id_token_signed_response_alg: \"ES256\",\n token_endpoint_auth_method: \"none\",\n application_type: \"web\",\n subject_type: \"public\",\n };\n // register\n return fetch(registration_endpoint, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(client_registration_request_body),\n });\n};\n\n/**\n * A simple IndexedDB wrapper\n */\nclass SessionDatabase {\n dbName;\n storeName;\n dbVersion;\n db = null;\n /**\n * Creates a new instance\n * @param dbName The name of the IndexedDB database\n * @param storeName The name of the object store\n * @param dbVersion The database version\n */\n constructor(dbName = 'soidc', storeName = 'session', dbVersion = 1) {\n this.dbName = dbName;\n this.storeName = storeName;\n this.dbVersion = dbVersion;\n }\n /**\n * Initializes the IndexedDB database\n * @returns Promise that resolves when the database is ready\n */\n async init() {\n return new Promise((resolve, reject) => {\n const request = indexedDB.open(this.dbName, this.dbVersion);\n request.onerror = (event) => {\n reject(new Error(`Database error: ${event.target.error}`));\n };\n request.onsuccess = (event) => {\n this.db = event.target.result;\n resolve(this);\n };\n request.onupgradeneeded = (event) => {\n const db = event.target.result;\n // Check if the object store already exists, if not create it\n if (!db.objectStoreNames.contains(this.storeName)) {\n db.createObjectStore(this.storeName);\n }\n };\n });\n }\n /**\n * Stores any value in the database with the given ID as key\n * @param id The identifier/key for the value\n * @param value The value to store\n */\n async setItem(id, value) {\n if (!this.db) {\n await this.init();\n }\n return new Promise((resolve, reject) => {\n const transaction = this.db.transaction(this.storeName, 'readwrite');\n // Handle transation\n transaction.oncomplete = () => {\n resolve();\n };\n transaction.onerror = (event) => {\n reject(new Error(`Transaction error for setItem(${id},...): ${event.target.error}`));\n };\n transaction.onabort = (event) => {\n reject(new Error(`Transaction aborted for setItem(${id},...): ${event.target.error}`));\n };\n // Perform the request within the transaction\n const store = transaction.objectStore(this.storeName);\n store.put(value, id);\n });\n }\n /**\n * Retrieves a value from the database by ID\n * @param id The identifier/key for the value\n * @returns The stored value or null if not found\n */\n async getItem(id) {\n if (!this.db) {\n await this.init();\n }\n return new Promise((resolve, reject) => {\n const transaction = this.db.transaction(this.storeName, 'readonly');\n // Handle transation\n transaction.onerror = (event) => {\n reject(new Error(`Transaction error for getItem(${id}): ${event.target.error}`));\n };\n transaction.onabort = (event) => {\n reject(new Error(`Transaction aborted for getItem(${id}): ${event.target.error}`));\n };\n // Perform the request within the transaction\n const store = transaction.objectStore(this.storeName);\n const request = store.get(id);\n request.onsuccess = () => {\n resolve(request.result || null);\n };\n });\n }\n /**\n * Removes an item from the database\n * @param id The identifier of the item to remove\n */\n async deleteItem(id) {\n if (!this.db) {\n await this.init();\n }\n return new Promise((resolve, reject) => {\n const transaction = this.db.transaction(this.storeName, 'readwrite');\n // Handle transation\n transaction.oncomplete = () => {\n resolve();\n };\n transaction.onerror = (event) => {\n reject(new Error(`Transaction error for deleteItem(${id}): ${event.target.error}`));\n };\n transaction.onabort = (event) => {\n reject(new Error(`Transaction aborted for deleteItem(${id}): ${event.target.error}`));\n };\n // Perform the request within the transaction\n const store = transaction.objectStore(this.storeName);\n store.delete(id);\n });\n }\n /**\n * Clears all items from the database\n */\n async clear() {\n if (!this.db) {\n await this.init();\n }\n return new Promise((resolve, reject) => {\n const transaction = this.db.transaction(this.storeName, 'readwrite');\n // Handle transation\n transaction.oncomplete = () => {\n resolve();\n };\n transaction.onerror = (event) => {\n reject(new Error(`Transaction error for clear(): ${event.target.error}`));\n };\n transaction.onabort = (event) => {\n reject(new Error(`Transaction aborted for clear(): ${event.target.error}`));\n };\n // Perform the request within the transaction\n const store = transaction.objectStore(this.storeName);\n store.clear();\n });\n }\n /**\n * Closes the database connection\n */\n close() {\n if (this.db) {\n this.db.close();\n this.db = null;\n }\n }\n}\n\n/**\n * Login with the idp, using a provided `client_id` or dynamic client registration if none provided.\n *\n * @param idp\n * @param redirect_uri\n */\nconst redirectForLogin = async (idp, redirect_uri, client_details) => {\n // RFC 6749 - Section 3.1.2 - sanitize redirect_uri\n const redirect_uri_ = new URL(redirect_uri);\n const redirect_uri_sane = redirect_uri_.origin + redirect_uri_.pathname + redirect_uri_.search;\n // lookup openid configuration of idp\n const idp_origin = new URL(idp).origin;\n const openid_configuration = await fetch(`${idp_origin}/.well-known/openid-configuration`)\n .then((response) => {\n if (!response.ok) {\n throw new Error(`HTTP error! Status: ${response.status}`);\n }\n return response.json();\n });\n // RFC 9207 iss check: remember the identity provider (idp) / issuer (iss) - relaxing for trailing slash\n const issuer = openid_configuration[\"issuer\"];\n const trim_trailing_slash = (url) => (url.endsWith('/') ? url.slice(0, -1) : url);\n if (trim_trailing_slash(idp) !== trim_trailing_slash(issuer)) { // expected idp matches received issuer mod trailing slash?\n throw new Error(\"RFC 9207 - iss != idp - \" + issuer + \" != \" + idp);\n }\n sessionStorage.setItem(\"idp\", issuer);\n // remember token endpoint\n sessionStorage.setItem(\"token_endpoint\", openid_configuration[\"token_endpoint\"]);\n // remember jwks_uri for later token verification\n sessionStorage.setItem(\"jwks_uri\", openid_configuration[\"jwks_uri\"]);\n let client_id = client_details?.client_id;\n // no client_id => attempt dynamic registration\n if (!client_id) {\n // use registration endpoint\n const registration_endpoint = openid_configuration[\"registration_endpoint\"];\n // get client registration\n const client_registration = await requestDynamicClientRegistration(registration_endpoint, client_details ?? { redirect_uris: [redirect_uri_sane] })\n .then((response) => {\n if (!response.ok) {\n throw new Error(`HTTP error! Status: ${response.status}`);\n }\n return response.json();\n });\n client_id = client_registration[\"client_id\"];\n // remember client_id\n sessionStorage.setItem(\"client_id\", client_id);\n }\n // RFC 7636 PKCE, remember code verifer\n const { pkce_code_verifier, pkce_code_challenge } = await getPKCEcode();\n sessionStorage.setItem(\"pkce_code_verifier\", pkce_code_verifier);\n // RFC 6749 OAuth 2.0 - CSRF token\n const csrf_token = window.crypto.randomUUID();\n sessionStorage.setItem(\"csrf_token\", csrf_token);\n // redirect to idp\n const redirect_to_idp = openid_configuration[\"authorization_endpoint\"] +\n `?response_type=code` +\n `&redirect_uri=${encodeURIComponent(redirect_uri_sane)}` +\n `&scope=openid offline_access webid` +\n `&client_id=${encodeURIComponent(client_id)}` +\n `&code_challenge_method=S256` +\n `&code_challenge=${pkce_code_challenge}` +\n `&state=${csrf_token}` +\n `&prompt=consent`; // this query parameter value MUST be present for CSS v7 to issue a refresh token ( // TODO open issue because prompting is the default behaviour but without this query param no refresh token is provided despite the \"remember this client\" box being checked)\n window.location.href = redirect_to_idp;\n};\n/**\n * RFC 7636 PKCE\n * @returns PKCE code verifier and PKCE code challenge\n */\nconst getPKCEcode = async () => {\n // create random string as PKCE code verifier\n const pkce_code_verifier = window.crypto.randomUUID() + \"-\" + window.crypto.randomUUID();\n // hash the verifier and base64URL encode as PKCE code challenge\n const digest = new Uint8Array(await window.crypto.subtle.digest(\"SHA-256\", new TextEncoder().encode(pkce_code_verifier)));\n const pkce_code_challenge = btoa(String.fromCharCode(...digest))\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\")\n .replace(/=+$/, \"\");\n return { pkce_code_verifier, pkce_code_challenge };\n};\n/**\n * On incoming redirect from OpenID provider (idp/iss),\n * URL contains authrization code, issuer (idp) and state (csrf token),\n * get an access token for the authrization code.\n */\nconst onIncomingRedirect = async (client_details) => {\n const url = new URL(window.location.href);\n // authorization code\n const authorization_code = url.searchParams.get(\"code\");\n // if no code, session remains unauthenticated at this point\n if (authorization_code === null) {\n return { clientDetails: client_details };\n }\n // RFC 9207 issuer check\n const idp = sessionStorage.getItem(\"idp\");\n if (idp === null || url.searchParams.get(\"iss\") != idp) {\n throw new Error(\"RFC 9207 - iss != idp - \" + url.searchParams.get(\"iss\") + \" != \" + idp);\n }\n // RFC 6749 OAuth 2.0\n if (url.searchParams.get(\"state\") != sessionStorage.getItem(\"csrf_token\")) {\n throw new Error(\"RFC 6749 - state != csrf_token - \" + url.searchParams.get(\"state\") + \" != \" + sessionStorage.getItem(\"csrf_token\"));\n }\n // remove redirect query parameters from URL\n url.searchParams.delete(\"iss\");\n url.searchParams.delete(\"state\");\n url.searchParams.delete(\"code\");\n window.history.pushState({}, document.title, url.toString());\n // prepare token request\n const pkce_code_verifier = sessionStorage.getItem(\"pkce_code_verifier\");\n if (pkce_code_verifier === null) {\n throw new Error(\"Access Token Request preparation - Could not find in sessionStorage: pkce_code_verifier\");\n }\n const client_id = client_details?.client_id || sessionStorage.getItem(\"client_id\");\n if (!client_id) {\n throw new Error(\"Access Token Request preparation - Could not find in sessionStorage: client_id (dynamic registration)\");\n }\n const token_endpoint = sessionStorage.getItem(\"token_endpoint\");\n if (token_endpoint === null) {\n throw new Error(\"Access Token Request preparation - Could not find in sessionStorage: token_endpoint\");\n }\n // RFC 9449 DPoP\n const key_pair = await generateKeyPair(\"ES256\");\n // get access token\n const token_response = await requestAccessToken(authorization_code, pkce_code_verifier, url.toString(), client_id, token_endpoint, key_pair)\n .then((response) => {\n if (!response.ok) {\n throw new Error(`HTTP error! Status: ${response.status}`);\n }\n return response.json();\n });\n // verify access_token // ! Solid-OIDC specification says it should be a dpop-bound `id token` but implementations provide a dpop-bound `access token`\n const accessToken = token_response[\"access_token\"];\n const jwks_uri = sessionStorage.getItem(\"jwks_uri\");\n if (jwks_uri === null) {\n throw new Error(\"Access Token validation preparation - Could not find in sessionStorage: jwks_uri\");\n }\n const jwks = createRemoteJWKSet(new URL(jwks_uri));\n const { payload } = await jwtVerify(accessToken, jwks, {\n issuer: idp, // RFC 9207\n audience: \"solid\", // RFC 7519 // ! \"solid\" as per implementations ...\n // exp, nbf, iat - handled automatically\n });\n // check dpop thumbprint\n const dpopThumbprint = await calculateJwkThumbprint(await exportJWK(key_pair.publicKey));\n if (payload[\"cnf\"][\"jkt\"] != dpopThumbprint) {\n throw new Error(\"Access Token validation failed on `jkt`: jkt != DPoP thumbprint - \" + payload[\"cnf\"][\"jkt\"] + \" != \" + dpopThumbprint);\n }\n // check client_id\n if (payload[\"client_id\"] != client_id) {\n throw new Error(\"Access Token validation failed on `client_id`: JWT payload != client_id - \" + payload[\"client_id\"] + \" != \" + client_id);\n }\n // summarise session info\n const token_details = { ...token_response, dpop_key_pair: key_pair };\n const idp_details = { idp, jwks_uri, token_endpoint };\n if (!client_details)\n client_details = { redirect_uris: [window.location.href] };\n client_details.client_id = client_id;\n // to remember for session restore\n const sessionDatabase = await new SessionDatabase().init();\n await Promise.all([\n sessionDatabase.setItem(\"idp\", idp),\n sessionDatabase.setItem(\"jwks_uri\", jwks_uri),\n sessionDatabase.setItem(\"token_endpoint\", token_endpoint),\n sessionDatabase.setItem(\"client_id\", client_id),\n sessionDatabase.setItem(\"dpop_keypair\", key_pair),\n sessionDatabase.setItem(\"refresh_token\", token_response[\"refresh_token\"])\n ]);\n sessionDatabase.close();\n // clean session storage\n sessionStorage.removeItem(\"csrf_token\");\n sessionStorage.removeItem(\"pkce_code_verifier\");\n sessionStorage.removeItem(\"idp\");\n sessionStorage.removeItem(\"jwks_uri\");\n sessionStorage.removeItem(\"token_endpoint\");\n sessionStorage.removeItem(\"client_id\");\n // return session information\n return {\n clientDetails: client_details,\n idpDetails: idp_details,\n tokenDetails: token_details\n };\n};\n/**\n * Request an dpop-bound access token from a token endpoint\n * @param authorization_code\n * @param pkce_code_verifier\n * @param redirect_uri\n * @param client_id\n * @param token_endpoint\n * @param key_pair\n * @returns\n */\nconst requestAccessToken = async (authorization_code, pkce_code_verifier, redirect_uri, client_id, token_endpoint, key_pair) => {\n // prepare public key to bind access token to\n const jwk_public_key = await exportJWK(key_pair.publicKey);\n jwk_public_key.alg = \"ES256\";\n // sign the access token request DPoP token\n const dpop = await new SignJWT({\n htu: token_endpoint,\n htm: \"POST\",\n })\n .setIssuedAt()\n .setJti(window.crypto.randomUUID())\n .setProtectedHeader({\n alg: \"ES256\",\n typ: \"dpop+jwt\",\n jwk: jwk_public_key,\n })\n .sign(key_pair.privateKey);\n return fetch(token_endpoint, {\n method: \"POST\",\n headers: {\n dpop,\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n },\n body: new URLSearchParams({\n grant_type: \"authorization_code\",\n code: authorization_code,\n code_verifier: pkce_code_verifier,\n redirect_uri: redirect_uri,\n client_id: client_id,\n }),\n });\n};\n\nconst renewTokens = async () => {\n // remember session details\n const sessionDatabase = await new SessionDatabase().init();\n const client_id = await sessionDatabase.getItem(\"client_id\");\n const token_endpoint = await sessionDatabase.getItem(\"token_endpoint\");\n const key_pair = await sessionDatabase.getItem(\"dpop_keypair\");\n const refresh_token = await sessionDatabase.getItem(\"refresh_token\");\n if (client_id === null || token_endpoint === null || key_pair === null || refresh_token === null) {\n // we can not restore the old session\n throw new Error(\"Could not refresh tokens: details missing from database.\");\n }\n const token_response = await requestFreshTokens(refresh_token, client_id, token_endpoint, key_pair)\n .then((response) => {\n if (!response.ok) {\n throw new Error(`HTTP error! Status: ${response.status}`);\n }\n return response.json();\n });\n // verify access_token // ! Solid-OIDC specification says it should be a dpop-bound `id token` but implementations provide a dpop-bound `access token`\n const accessToken = token_response[\"access_token\"];\n const idp = await sessionDatabase.getItem(\"idp\");\n if (idp === null) {\n throw new Error(\"Access Token validation preparation - Could not find in sessionDatabase: idp\");\n }\n const jwks_uri = await sessionDatabase.getItem(\"jwks_uri\");\n if (jwks_uri === null) {\n throw new Error(\"Access Token validation preparation - Could not find in sessionDatabase: jwks_uri\");\n }\n const jwks = createRemoteJWKSet(new URL(jwks_uri));\n const { payload } = await jwtVerify(accessToken, jwks, {\n issuer: idp, // RFC 9207\n audience: \"solid\", // RFC 7519 // ! \"solid\" as per implementations ...\n // exp, nbf, iat - handled automatically\n });\n // check dpop thumbprint\n const dpopThumbprint = await calculateJwkThumbprint(await exportJWK(key_pair.publicKey));\n if (payload[\"cnf\"][\"jkt\"] != dpopThumbprint) {\n throw new Error(\"Access Token validation failed on `jkt`: jkt != DPoP thumbprint - \" + payload[\"cnf\"][\"jkt\"] + \" != \" + dpopThumbprint);\n }\n // check client_id\n if (payload[\"client_id\"] != client_id) {\n throw new Error(\"Access Token validation failed on `client_id`: JWT payload != client_id - \" + payload[\"client_id\"] + \" != \" + client_id);\n }\n // set new refresh token for token rotation\n await sessionDatabase.setItem(\"refresh_token\", token_response[\"refresh_token\"]);\n sessionDatabase.close();\n return {\n ...token_response,\n dpop_key_pair: key_pair,\n };\n};\n/**\n * Request an dpop-bound access token from a token endpoint using a refresh token\n * @param authorization_code\n * @param pkce_code_verifier\n * @param redirect_uri\n * @param client_id\n * @param token_endpoint\n * @param key_pair\n * @returns\n */\nconst requestFreshTokens = async (refresh_token, client_id, token_endpoint, key_pair) => {\n // prepare public key to bind access token to\n const jwk_public_key = await exportJWK(key_pair.publicKey);\n jwk_public_key.alg = \"ES256\";\n // sign the access token request DPoP token\n const dpop = await new SignJWT({\n htu: token_endpoint,\n htm: \"POST\",\n })\n .setIssuedAt()\n .setJti(window.crypto.randomUUID())\n .setProtectedHeader({\n alg: \"ES256\",\n typ: \"dpop+jwt\",\n jwk: jwk_public_key,\n })\n .sign(key_pair.privateKey);\n return fetch(token_endpoint, {\n method: \"POST\",\n headers: {\n dpop,\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n },\n body: new URLSearchParams({\n grant_type: \"refresh_token\",\n refresh_token,\n client_id\n }),\n });\n};\n\nclass Session {\n sessionInformation;\n isActive_ = false;\n webId_ = undefined;\n currentAth_ = undefined;\n tokenRefreshTimeout;\n sessionDeactivateTimeout;\n onSessionExpirationWarning;\n /**\n * Create a new session.\n */\n constructor(clientDetails, sessionOptions) {\n this.sessionInformation = { clientDetails };\n this.onSessionExpirationWarning = sessionOptions?.onSessionExpirationWarning;\n }\n /**\n * Redirect the user for login to their IDP.\n *\n * @throws Error if the session has not been initialized.\n */\n async login(idp, redirect_uri) {\n await redirectForLogin(idp, redirect_uri, this.sessionInformation.clientDetails);\n }\n /**\n * Clears all session-related information, including IDP details and tokens.\n * This logs the user out.\n * Client details are preserved.\n */\n async logout() {\n // clear timeouts\n if (this.sessionDeactivateTimeout)\n clearTimeout(this.sessionDeactivateTimeout);\n this.sessionDeactivateTimeout = undefined;\n if (this.tokenRefreshTimeout)\n clearTimeout(this.tokenRefreshTimeout);\n this.tokenRefreshTimeout = undefined;\n // clean session data\n this.sessionInformation.idpDetails = undefined;\n this.sessionInformation.tokenDetails = undefined;\n this.isActive_ = false;\n this.webId_ = undefined;\n // only preserve client_id if URI\n if (this.sessionInformation.clientDetails?.client_id)\n try {\n new URL(this.sessionInformation.clientDetails.client_id);\n }\n catch (_) {\n this.sessionInformation.clientDetails.client_id = undefined;\n }\n // clean session database\n const sessionDatabase = await new SessionDatabase().init();\n await sessionDatabase.clear();\n sessionDatabase.close();\n }\n /**\n * Handles the redirect from the identity provider after a login attempt.\n * It attempts to retrieve tokens using the authorization code.\n */\n async handleRedirectFromLogin() {\n // Redirect after Authorization Code Grant // memory via sessionStorage\n const newSessionInfo = await onIncomingRedirect(this.sessionInformation.clientDetails);\n // no session - we remain unauthenticated\n if (!newSessionInfo.tokenDetails) {\n return;\n }\n // we got a session\n this.sessionInformation = newSessionInfo;\n await this.setSessionDetails();\n }\n /**\n * Handles session restoration using the refresh token grant.\n * Silently fails if session could not be restored (maybe there was no session in the first place).\n */\n async restore() {\n // Restore session using Refresh Token Grant // memory via IndexedDB\n await renewTokens()\n .then(tokenDetails => {\n // got new tokens\n this.sessionInformation.tokenDetails = tokenDetails;\n // set session information\n return this.setSessionDetails();\n })\n // anything missing or wrong => abort, could not restore session.\n .catch(_ => { }); // fail silently\n }\n /**\n * Creates a signed DPoP (Demonstration of Proof-of-Possession) token.\n *\n * @param payload The payload to include in the DPoP token. By default, it includes `htu` (HTTP target URI) and `htm` (HTTP method).\n * @returns A promise that resolves to the signed DPoP token string.\n * @throws Error if the session has not been initialized - if no token details are available.\n */\n async createSignedDPoPToken(payload) {\n if (!this.sessionInformation.tokenDetails || !this.currentAth_) {\n throw new Error(\"Session not established.\");\n }\n payload.ath = this.currentAth_;\n const jwk_public_key = await exportJWK(this.sessionInformation.tokenDetails.dpop_key_pair.publicKey);\n return new SignJWT(payload)\n .setIssuedAt()\n .setJti(window.crypto.randomUUID())\n .setProtectedHeader({\n alg: \"ES256\",\n typ: \"dpop+jwt\",\n jwk: jwk_public_key,\n })\n .sign(this.sessionInformation.tokenDetails.dpop_key_pair.privateKey);\n }\n /**\n * Makes an HTTP fetch request.\n * If a session is active, it includes the DPoP token and the access token in the `Authorization` header.\n *\n * @param input The URL or Request object to fetch.\n * @param init Optional fetch request options (RequestInit). Headers for `Authorization` and `DPoP` will be overwritten if a session is active.\n * @param dpopPayload Optional payload for the DPoP token. If provided, it overrides the default `htu` and `htm` claims.\n * @returns A promise that resolves to the fetch Response.\n */\n async authFetch(input, init, dpopPayload) {\n // prepare authenticated call using a DPoP token (either provided payload, or default)\n let url;\n let method;\n let headers;\n if (input instanceof Request) {\n url = new URL(input.url);\n method = init?.method || input?.method || 'GET';\n headers = new Headers(input.headers);\n }\n else {\n init = init || {};\n url = new URL(input.toString());\n method = init.method || 'GET';\n headers = init.headers ? new Headers(init.headers) : new Headers();\n }\n // create DPoP token, and add tokens to request\n if (this.sessionInformation.tokenDetails) {\n dpopPayload = dpopPayload ?? {\n htu: `${url.origin}${url.pathname}`,\n htm: method.toUpperCase()\n };\n const dpop = await this.createSignedDPoPToken(dpopPayload);\n headers.set(\"dpop\", dpop);\n headers.set(\"authorization\", `DPoP ${this.sessionInformation.tokenDetails.access_token}`);\n }\n // check explicitly; to avoid unexpected behaviour\n if (input instanceof Request) { // clone the provided request, and override the headers\n return fetch(new Request(input, { ...init, headers }));\n }\n // just override the headers\n return fetch(url, { ...init, headers });\n }\n get isActive() {\n return this.isActive_;\n }\n get webId() {\n return this.webId_;\n }\n //\n // Helper Methods\n //\n /**\n * Set the session to active if there is an access token.\n */\n async setSessionDetails() {\n // check for access token \n if (!this.sessionInformation.tokenDetails?.access_token) {\n this.logout();\n }\n // generate ath\n this.currentAth_ = await this.computeAth(this.sessionInformation.tokenDetails.access_token);\n // check for active session\n this.webId_ = decodeJwt(this.sessionInformation.tokenDetails.access_token)[\"webid\"];\n this.isActive_ = this.webId !== undefined;\n // deactivating session when token expire\n this.setSessionDeactivateTimeout();\n // refreshing tokens\n this.setTokenRefreshTimeout();\n }\n setSessionDeactivateTimeout() {\n const deactivate_buffer_seconds = 5;\n const timeUntilDeactivate = (this.sessionInformation.tokenDetails.expires_in - deactivate_buffer_seconds) * 1000;\n if (this.sessionDeactivateTimeout)\n clearTimeout(this.sessionDeactivateTimeout);\n this.sessionDeactivateTimeout = setTimeout(() => this.logout(), timeUntilDeactivate);\n }\n setTokenRefreshTimeout() {\n const refresh_buffer_seconds = 95;\n const timeUntilRefresh = (this.sessionInformation.tokenDetails.expires_in - refresh_buffer_seconds) * 1000;\n if (this.tokenRefreshTimeout)\n clearTimeout(this.tokenRefreshTimeout);\n this.tokenRefreshTimeout = setTimeout(async () => {\n const newTokens = await renewTokens()\n .catch((error) => {\n // anything missing or wrong => could not renew tokens.\n if (this.onSessionExpirationWarning)\n this.onSessionExpirationWarning();\n return undefined;\n });\n if (!newTokens) {\n return;\n }\n this.sessionInformation.tokenDetails = newTokens;\n this.setSessionDeactivateTimeout();\n this.setTokenRefreshTimeout();\n }, timeUntilRefresh);\n }\n /**\n * RFC 9449 - Hash of the access token\n */\n async computeAth(accessToken) {\n // Convert the ASCII string of the token to a Uint8Array\n const encoder = new TextEncoder();\n const data = encoder.encode(accessToken); // ASCII by default\n // Compute SHA-256 hash\n const hashBuffer = await crypto.subtle.digest('SHA-256', data);\n // Convert ArrayBuffer to base64url string\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n const base64 = btoa(String.fromCharCode(...hashArray));\n // Convert base64 to base64url\n const base64url = base64\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_')\n .replace(/=+$/, '');\n return base64url;\n }\n}\n\nexport { Session };\n//# sourceMappingURL=index.js.map\n","import { Session } from '@uvdsl/solid-oidc-client-browser';\nimport { BehaviorSubject } from 'rxjs';\nimport { AuthenticatedFetch, PodOsSession, SessionInfo } from '@pod-os/core';\n\nexport class BrowserSession implements PodOsSession {\n private readonly session: Session;\n private onSessionRestoreCallback: (url: string) => void = () => {};\n private readonly _authenticatedFetch: AuthenticatedFetch;\n\n private readonly sessionInfo$: BehaviorSubject<SessionInfo> = new BehaviorSubject<SessionInfo>({\n isLoggedIn: false,\n webId: undefined,\n });\n\n get authenticatedFetch(): (url: RequestInfo, init?: RequestInit | undefined) => Promise<Response> {\n return this._authenticatedFetch;\n }\n\n constructor() {\n this.session = new Session();\n this._authenticatedFetch = this.session.authFetch.bind(this.session);\n }\n\n async handleIncomingRedirect(restorePreviousSession = false) {\n await this.session.handleRedirectFromLogin();\n if (restorePreviousSession) {\n await this.session.restore();\n if (this.session.isActive) {\n this.onSessionRestoreCallback(window.location.href);\n }\n }\n this.sessionInfo$.next({\n isLoggedIn: this.session.isActive,\n webId: this.session.webId,\n });\n }\n\n async login(oidcIssuer: string) {\n return this.session.login(oidcIssuer, window.location.href);\n }\n\n async logout() {\n await this.session.logout();\n this.sessionInfo$.next({\n isLoggedIn: false,\n webId: undefined,\n });\n }\n\n observeSession(): BehaviorSubject<SessionInfo> {\n return this.sessionInfo$;\n }\n\n onSessionRestore(callback: (url: string) => void) {\n this.onSessionRestoreCallback = callback;\n }\n}\n","import { PodOS } from '@pod-os/core';\nimport { Component, h, Listen, Prop, State, Event, EventEmitter } from '@stencil/core';\nimport sessionStore from '../../store/session';\nimport { localSettings } from '../../store/settings';\nimport { createPodOS } from '../../pod-os';\nimport { Subject, takeUntil } from 'rxjs';\nimport { BrowserSession } from '../../authentication';\n\ninterface InitializeOsEvent extends CustomEvent {\n detail: Function;\n}\n\ninterface RequestModuleEvent extends CustomEvent {\n detail: {\n module: string;\n receiver: Function;\n };\n}\n\n@Component({\n tag: 'pos-app',\n shadow: true,\n})\nexport class PosApp {\n @State() os: PodOS;\n\n @Prop() restorePreviousSession: boolean = false;\n\n /**\n * Fired whenever the session was restored\n */\n @Event({ eventName: 'pod-os:session-restored' }) sessionRestoredEmitter: EventEmitter<{ url: string }>;\n\n /**\n * Fires as soon as the pos-app DOM element has been loaded and PodOS can be used. Note: In case the user is authenticated, this will fire before profile data of the user has been fetched, but after authentication has been handled.\n */\n @Event({ eventName: 'pod-os:loaded' }) podOsLoadedEmitter: EventEmitter<{\n os: PodOS;\n authenticatedFetch: typeof global.fetch;\n }>;\n\n private readonly disconnected$ = new Subject<void>();\n\n @State()\n private unsubscribeSettings: () => void;\n\n @State()\n private loading = true;\n\n async componentWillLoad() {\n const session = new BrowserSession();\n this.unsubscribeSettings = localSettings.on('set', () => {\n this.os = createPodOS(session, localSettings.state);\n });\n this.os = createPodOS(session, localSettings.state);\n session.onSessionRestore(url => {\n this.sessionRestoredEmitter.emit({ url });\n });\n try {\n await session.handleIncomingRedirect(this.restorePreviousSession);\n } catch (e) {\n console.error(e);\n }\n this.os\n .observeSession()\n .pipe(takeUntil(this.disconnected$))\n .subscribe(async sessionInfo => {\n sessionStore.state.webId = sessionInfo.webId;\n if (sessionInfo.isLoggedIn) {\n const profile = await this.os.fetchProfile(sessionInfo.webId);\n sessionStore.state.profile = profile;\n }\n sessionStore.state.isLoggedIn = sessionInfo.isLoggedIn;\n this.loading = false;\n });\n this.podOsLoadedEmitter.emit({\n os: this.os,\n authenticatedFetch: session.authenticatedFetch,\n });\n }\n\n disconnectedCallback() {\n this.unsubscribeSettings();\n this.disconnected$.next();\n this.disconnected$.unsubscribe();\n }\n\n @Listen('pod-os:init')\n async initializeOs(event: InitializeOsEvent) {\n event.stopPropagation();\n event.detail(this.os);\n }\n\n @Listen('pod-os:module')\n async loadModule(event: RequestModuleEvent) {\n event.stopPropagation();\n if (event.detail.module === 'contacts') {\n const module = await this.os.loadContactsModule();\n event.detail.receiver(module);\n } else {\n throw Error(`Unknown module \"${event.detail.module}\"`);\n }\n }\n\n render() {\n return this.loading ? <ion-progress-bar type=\"indeterminate\"></ion-progress-bar> : <slot></slot>;\n }\n}\n"],"version":3}