@wix/himalaya-cli 0.1536.0 → 0.1538.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/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/wix-sdk/bookings-v2/src/extensions.d.ts +16 -0
  2. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/wix-sdk/data-collections-v1/src/extensions.d.ts +4 -0
  3. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/wix-sdk/wix-data/src/index.d.ts +497 -4
  4. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/wix-bookings.mjs +5 -0
  5. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/wix-data-collections.mjs +1 -5
  6. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/wix-data.mjs +315 -7
  7. package/dist/cli.mjs +852 -538
  8. package/dist/preview-assets.generated.bin +0 -0
  9. package/fixtures/wix-canned.json +1 -0
  10. package/guides/cms-collections.md +31 -0
  11. package/guides/himi-json-output.md +13 -2
  12. package/guides/iap-products.md +13 -5
  13. package/guides/release-notes.md +12 -0
  14. package/guides/wix-api-usage.md +53 -6
  15. package/package.json +2 -2
  16. package/templates/beauty-salon/dev/index.ts +1109 -2310
  17. package/templates/beauty-salon/tier5-src/_shared/himi-bookings.ts +121 -1
  18. package/templates/beauty-salon/tier5-src/himi-booking-service/index.ts +9 -55
  19. package/templates/beauty-salon/tier5-src/himi-booking-services/index.ts +264 -18
  20. package/templates/branded-lite/dev/index.ts +1075 -2276
  21. package/templates/branded-lite/tier5-src/_shared/himi-bookings.ts +121 -1
  22. package/templates/branded-lite/tier5-src/himi-booking-service/index.ts +9 -55
  23. package/templates/branded-lite/tier5-src/himi-booking-services/index.ts +264 -18
  24. package/templates/gym-fitness/dev/index.ts +1075 -2276
  25. package/templates/gym-fitness/tier5-src/_shared/himi-bookings.ts +121 -1
  26. package/templates/gym-fitness/tier5-src/himi-booking-service/index.ts +9 -55
  27. package/templates/gym-fitness/tier5-src/himi-booking-services/index.ts +264 -18
  28. package/templates/yoga-studio/dev/index.ts +1137 -2338
  29. package/templates/yoga-studio/tier5-src/_shared/himi-bookings.ts +121 -1
  30. package/templates/yoga-studio/tier5-src/himi-booking-service/index.ts +9 -55
  31. package/templates/yoga-studio/tier5-src/himi-booking-services/index.ts +264 -18
package/dist/cli.mjs CHANGED
@@ -4762,8 +4762,8 @@ var init_catalog_v2 = __esm({
4762
4762
  "../html-to-t5/catalog.v2.json"() {
4763
4763
  catalog_v2_default = {
4764
4764
  encoding: "gzip-base64",
4765
- sha256: "da9148b1f5ea7fb20a46b896858ffdca7453c53edc833686eff49d77122e192f",
4766
- data: "H4sIAAAAAAAC/+y963LbOpoo+iop7646P7bda5+Z3lNTa//Ziu0k7rZjj6Uk3TOT44LITxLaIMABQNlaXanaD3Ge8DzJKVxIgiRASbYkyln4k5gAROLy4btf/nGyBC4woye/niwW+S//9Os//Y//+S//+j+S9H/O/vQ/0n+d/cvJ6YlIFpChk1//cfIHnJ78epKwLGcUqPyj6fnj3wWjJ6cnEksCJ7+efMIZImiF3o0vvly9q0afnJ48JCzL1J+/nny8/Hx5P5pcXrybcZa9SxiHX6T4RfDkF/tWKd5NV+/mQM/U+89sa/Z38e7/+z//77uUvaNMvlsgmp5BiuUf310DxUDlO0bfFfSRsif6LucsF//rnZAcJ7qDw38VmEP67r+/A1pk4o8npyd/4DA7+fXkv/3yhxRm4hd3vrpFLbxu/PUfJ3KVq2Wy6d8hUaPUV4BLDHqo2qJqjPoynZ/8OD2ZsnSlt7D5Nd384/QkYymeYeCi+4EfpyfJApOUA3U6EedodXJ6giVkwvPiesY/fvxwvt+efLkjJ7/+h+n73l5QjpJHNAezDVSow1vYE1ZzMy/0rFhvvmc5P05PECG3s5Nf/+MfJ3imP9H4YPnG8mtfxxIlj/qH3dmqGSzMzrSm7f98e3Wv3Fq1FjynmQUNBVRqbgRQqrbh9CQBKoGr28ERJqpNTVnkKFF/1x+lRTYF3llkNb3v+hg327BPccO227B//9k2bBebco1+W11jIfe0LdXaX7QnC8bxb4xKRJxXTBkjgOhJL7ycngiJ5nPgN8Lby+hdQciE3cOMg1ic/PoPhcvQHFMkNaH8h34FTh5XnwClwPvnenrC2dP4CecwStTvhXmBXuUdkgsv6kQUZ0jCVWuLnPVxUIQbrtGKFdI/JGFUApVXVICcsNy7WHfMeyYly9bfMHNA20DSR47To4SihJEioyKwNbrvBlJcZH0jLp9zRFNI/bDWA4f9MPBqKPUeW73mbQ7wHPH0WLFjjtI0eNN7dj9hnAK/Ryku/Fs8RcnjnLOC+hm6gbDyOCdYfsXwtKfzyDnOEF+tQ2opSITJulH2ZTfo+RtOG3AewC3l16sPbLM1F3iJU89Ld7IxP7Y6I5Tsax4nS0QKP8OdMEJQLuDbAuhllsuVjy5ssw79krFEEva0Fisx+rBfMQ134oRR/51MahJt/r5GUyDesfr1Y7laM4HwCPOBqr9EATUIC0gYTc3fOUGY6g2zP8O/NX4lspPTkyztIgmzC9tcg0vOGd/nqS0Rx6iJ9wTwpcZ2bDYjmIL6DfAMC61bOD0ReE6vzPrtr4N0L3zsLRHWAXyJzJknEoUPPCcogTbCFgkHoOawNOx83+qGTOB5X/yxVK/2bhBkOVGnq5cscQb3CgOrhwxTnBXZOEEEPqBEMu6lbBmjTJFGSC/wHMsAiyl5QZOSm/DxJ6GLkTDS+HDdk6Hna0zBT28zxB9T9kQDs4FnOVIkd1Nye3ry90JIPFuZo4BneYE5lAiiegUqJDs5PSFS/ZhLokenkDCO2kMLmgK30K3W9AhywVkxX+jfqI5xL7+xAXauWP+vLSzfHXEPS/BLP9sA8FWmVDv7geCC+y8iEgL8oI0plhgR4e18CrAQpycLwPOF7BNwLkAkHOdBYLbDbljawMozrFY1w4SYIweZmMPWuGTBiBX/PEvMIZH3CoT8jOkC5Y0vcauNU+wmpAqgMU+IOYQguVMTazNW7pXB1L/NHBQkYzpvr7dCLacnjGMlTJAtEeKVmut+wImiDDZbThd02gBSd2lyNCWdC1efFcxmajpeHGipeOc3wa3fCB5b26cXvg0H8L6Qcm/HwFkA7YcJt8uWhclGioU6iNQPzGVvkG+wtOAqdFlKwhAcQBhqCZKuPinAr52eEKOgnBW9d1Hd4VtKViFVzRpZNMP0UwjJeRnGatO/b8nNfMBA9iXrr8OaYdFG9wSPntHzBaJzyxE9wmrKlMLCwBskBQ9Q0qwgUsEE3PTzJc/XQOcB2qP4h3OUY4kI/q3DMlCmuYUnxlOhmUx1+xPQepgF4iiRyuTzXa9hXEwzLO2si/kcRKkvrF6neWk2mxmVuB5f8bvlmNR8cq64Gqp4SP3ZVP+HuKVfM5YUYn9XKSGAuMVC3p1fAMmBT0IsLigRxv/LnMMMPwdEtlmoa8q44t1ABHjdJSI4dfS7egLB/dG9wckvscBTTLBcTdh8TuC1LJp9y36uJAmKS8swB7rNbZQcJY+3QThKHm9nM3/nosimu2IEW3tn1raV2k1Cnh9Mp1OvqH+rM0xDKCugNXaPJuegEFIHaZW6ildv2miJJNrXnmEluXwJiBi9gkSAa9vmTr5H6d7EpqDgH2adJHsEGu4JwE979uq7W7ELaH5w3ccgC73jbM5BiPd7A+bcfsF7a8vOHpVZQNrQCPY8qI4Jox1MU5BKgUeNoimshkjDsmd4vtW0Njuwane2ObQPjGf7Qj1pQBwHkr7cGGn4uZpr6jOsuNxi286XnlRTab102+3bpywQ2MMwP6JYxiDPVc9vY+7uBoSwbk390IfT7TZObZrWwR+cPiifAGwUiyUtN5z06ckT4rT0pVEvCN5Nzb0GmNbXolGcPO6NhWJ5JS0Fbp++Y0AgkZBepRuwruvEVfvJ4FbqS9jPamVAC3U6CwCtYlwAyC7nVa5tK2MokrDXDdfE4wvFzyGFRbgPPYf7WhrJ1GgjlZVDGYWRBP3n985h9THKW9luleFsVpCxNRXsZ/OEtHS1smSw0pIB2jZwWt3cFElkDAy1fqqPNIC1LThi9A/7ljW/tB/4yFECAbcTO+QDYczvmdLaLbPOrQStRyCwP+3lC40Ia9RzCSuoDPiatczDakdwou86zjLgW+rXP3A0VzbMMWH7MjwmSIQlTtW5DsmmMEMFkedIbEBdq6+V727+fhvQ+cb4I/BxMZUc9iaccYA/C0aDG5QzghN7/2aIEOVFtJb1a8zT/UL1PudlW90mrfI7Tp1uE3839Z8pTFlBA2hoq/uCiQR+vsC52J8DW74529ErHnRvitZQj/Wv/axtaxN7OZKu+1kuthT4p/vaRalevUPerYN3JcsV0lWOuIZ7WMO8KfPJErYQUvUKGrPc7qJqtA7pOaOSM/J2uOStYK78/ov36RxxVgggx+lOXHCuvalT2ET/qkxHOUGrK+W6skQkwHP1uwkTvIRvmKbsaR+e23dovjcBIkdzONheiwV7uqIpTpAMWZa22Ukz920NCPUE9iVVQL4lgVm7jR1EmjKp7u8UKeHEjAOP36KZS+sDW9104y+F6dyGWQxhRlCdo6C70gvdV8EGDHzqkziMs1jvmNd7znNECHoOegq+2hXVGIDGkuN8T8eH9Bd6yLjpX0fwQn48bAmcoDzsyJWh568djZnr58WebpfAZ6SBVVwGzvaeB0XIBIX91hidoNxgOG5E9xSD1xiwnXWL0r1dOJ+WEtMZ08rqJFFq/lpdqRQXdK6l5L7rlgV1uU3noxQL7ZMcUHCucxpvo7hyJacvuBpjipLH6d4MShvvSGH8XAO8x8sPa6udLGe7FW4hwOUFRoTNDx6d0Le7CaMzzLORs8kJogkQtyUFIXmhRYxg8J56S9ib3bwz3J+xNOAd7HcXa057m4O4x8lij37wvFgjr7S+qsdvpTaC6R7jqYqgh4JyPPsks5C1K0j31/oWJ5wRckl7nCn1Yc9L4MyRdlfCIO67ZrQNeMgpx+m8wSMal7dHiwowFVJBa0CcNJJ22MelkD1enxyUSvovsOqxwhASckJTe7wDm4GKklaxuvvy0YKNFP8v5EY1i6OCGvo8/dbboys+BGmywPjK4weZLGDJtRNjsoDkUUV81JT9NbFYuvu8J+6kL7SkfH349+UehUZsZWAi+wtS7PHo2NZVTMlvG8jV3P7p2dZCOcx9faFnW9ClpVcz3O9EvtUpafUUZnS/+rgXuV8+YhOSXF4ufZem7FnFj6AUMz0tFbmcb6TA6z+Ifq/8tX5C2+y54j2WWK72rSZ5qbflBk5R2weE8EDIwVbyms7cMNbOA3sycpiwlQ2iwoHKTVRQjophrVCmhOiPHE2nwENGkAvzjoazRQhmq+6wf3eLnZmazBinTrxhIzlNkNcOBJ0arYLeFs0FGoGpkMwuI2R8DwlTW4DKjXI42ZMqhiYLtjYbyjoN+w+vzpGzXNNvG0CloxqMhPlQ+sysU5T3HRKHpZIA1mXR2sJlnxG5P53XRhsd9qENKyZbcG9sZn3Qb8DWLIljla+k8Xukfk8YnT/k3OgKquGNO7vN3t6xXN2fQfd2Q3T4qv18NRZrYcWwQmAbpfxib1AdZoXa/A4SQqWlUtgzL3R8UxUtZaJ1pRU818Ux2X6jpQ7ZADhkbImCxMmRfBi9V2NLi5M1cAZomu0N0yACyx736qAffD+/1uslvyUciCu9/Xvk0ba0ZZnfhD1z1rlz0lGa+k5ydzLFPl0KF1Uysq4KhDEZ6Hq1EQnTpnXsRTtzgUVCmCg4fFRiy3Flm4Fufi/nRpW9YY+5mla8aIMZrcIIt1NKKXxq/Em8bmYHll+9G7IbbssowQ/sbB9MyrB9XpQf27lg7S0WtJsNbwOky9nTOnZeDdkBzfmIijm88QDMzZkcpclBKiZACYioNID2KBHWncKL47W2OSNllaDzwys3A9uNlWcV6jGzNTVh4cRFwdveDx4inOVrK2YL8f3yWeFooE3ZMEefU0LyFnmheqxdAjhe43G+FafBaCH3uaGC4GSth7wZtBZsulrEBU4eaShO1OTAmgQZGdM/7uN1dkGirmGu8k0M46D5Y60eiHHsRmK9YqEXSKJh6fHrCfDpyQKn8KktOzRERmkC6au/w9QQPd83Z1MD528w5ejVEpROm7Wf3e5BW2ujf8oB2MZ9GJOz/ctxytLsIWePWzPzysdiv5x8ypJC6al7g1vcQQEZ+hrTx62iX162C5cp3p+BKJhprFz/yzdonRJCMkbWXecm01LkygNiDHyJEwh6QIyWCJOwFqsvv9Q+TlJl1Ub7DEvq58vW71mYUW+H8na32+7WpC/MegHtZGMB17h6Ie1pv8RHa4CI/p6TUC7IUgJX1Wf+n//8zz8Is7Jf//jf//M///jH//6HNQexVp8Xii97XYD/V4YT+Mz2ll73CS1hppJXbMV1l78Ko6Z+T8+6uye0UeCeN9TdfTntJYR7wnMHFZzBV72dPYaQO2VttWBwhwpRwwTAY6XyRRKaEHMPkq9KPxe5rRzEm2utN4r3LTUo408RD/mIb4V5Ef+vAg6eu2idn/F+lWY4A21n38+igcq1MuppOWoHShYVlLVft6RwPPtWYVfbLOqbSoHx1jKErIl93C7aifH95+vYJHL2Cclksa3tbY0hYAc7dCvzfRocSTjF527SkipXwiwnIGFdYtKt4tvRdF/sXNBqHjzqRp7fluqTw7wgOmZQZEjn0yaIz6FPr70dWdufX4LEskghkA+FzsO9vzGWBVPdw9qoNDuqR4YISmxrFd+cFQ3uxK82KiR0UoRjHS5iqjGqTCbfrYfeFwH8mnUKBjjfnDFCNhqH5YSdd8ymrriK8rEnsYoqtqET3SIJhGCdOWixUuEJ1uXoBuWOt8aN3t+G+8Yct9yb1Rb0JEPJgKMwt6u0VWvpjR7Ug0O0zquapNr+MSt4sjWB/YpTYAcOcsmZCDkelMHv4dplvKkJcSO1WaOcWSOjc9DC9YqImvXVAbYz6NylswEijvqMLAv25HCVgW0XEnF514x7ayK7sIIJqas/XqDXUzytOlIC3R4jVHXZmgAHuJkDK+K9MfVqI624PNZVgkKZP/1p46zbsMJAGuEpLRzSK1EVYE60Uj8FU2/HvUqVQ3OBibyidnym7cxJIYxboo7V+d66olUgD9g6PzQBk7iOlvHP7k++1jmwF6o+HSP+8ng997W85K0QIvMvIqTKum9L+BjXb5zIgsMVvTN/mNa6kpuCG6vJ1L47SvmESLM1t0/324v8M8afEE/HjzjvO1b19k3GqWv5bwUUPX7x5wuUyyYr0Rox4YiaYhOD4MWSCITcK1GeA+IqPNDyjYRJURNklNaKm5AS55JWbnuXdcY7Ru/qpLr6+UMFLE2+XIXuNfKyKFx1DoRohjXkfatUsYGgmB7741aGVCYl3pfSQpRMhK8QRoi89hNtkUOgCmYPjKnX7cLxRHG6B98pxGVZaiKg0rxBySIUXNm/m+Fc9tsQS0bl4hwRUKzxnvZnBShYZiwgUZdKlougOtgZ0KMVLqt0rc9IWI3siRPmQn4DeEwbJ+JqtkxQ4EVVe41Rs7+tPEOj9O8o0XiRykUAM6tN6wlVoXLR53MW3LcMPff2MSl6DkTpZ1u4XOXf0QKfCfT87pzNWHExa0+wGhUWk+zIS7oeHuyYPnFJj7yvTyTFQl2y9sIMcKrSUGBikJ1xYad87ezbFwxwUb+lSWQsl6Qn9jINqdJi77GScjfzrrpF/2z+q3bJxMcEz6nuDu/hck2I4I9qUJ8dictPrPDjHaBpsG/tLVcX+DN7um4i7cYZGxC7XFY+Hcp21DhWu4BJXamxv0I4GBqz1o+nHNcTuYhlGDwFRfkNpoWEUFFpvaiW1pJDhfBUTMRoTV1VDkr11z9qq6hg5U2G9mW62QUw6nwbExZGXs6AHpCuK8oHaIbO7BxMge+By62AMAWRAE37wpG//zBF0+2v9DS/jqX1DMlR8qiVAycLJVKiFVKRbWhuGvDZUuiRbp0EN/rEaBRfUT2Bz5C+Qv9xgpkONaQpZ7oaQoYS3fIEU0XJaN0pl2qOS9Or7B5MnHwvXVjr6bXLfddzRXR1Ozv59T9qeC2j+hR8l222OqnbVIX8/fi+p9kbs0WzCnpnkx3Et78pBOue7/ir+tKP20vcV+H5BkTsCg6CBWR7asefnnza+BIu4iWMlzBewn1cwn/f+BL+Fi/hEJcw3oDNDqEXyq/RbyuV72wTOCfot9UZMbH6NahXyzpmOD89meKKGbaFfBzFrkoBmSwQxSI7+VV5sS70lBaM498YlSbRQmd9jZxjPzOt0RK6ygZyI4acBKN3hRK87mGmjFDeqYTygGj5NWACVImTM690idJUG/UQufMIta7DFOLzrd7Qudm0IETd4Pbsupvsgb8+eXfN1vwIzXGGiACDPtp2yy5ayguxaCAgk8bHbeGgPbwbbTZXVKNNW+7cBmUUfLBWQbcdqYyxzY9WSXg7WK8CgO/9690PCFtPKg1rc5VvzG7kpuCbFFyEchnSa4bSG9awxMdbEG/B626BqogwDhTWbdUAqQFwkLvl0Kha5da8XH16sn1MSehqXjpQc6wq1BjtqdjmxpNOQFHIX2HrVB6lJ2gFvwp4amAOXr1wy/cf31130YiFIhbaDRZak1e99V4D8hUgrnl7Kx1yvGXxlsVbtvtb9mNQnqDhu9WhvW7GsD1OwqbquQoqSg6lSODK21PANVqxQg46E+tqeKWyzU2Me9pQWgV3Kibz8tEo9W2BtyH1ma+roNdUoPlcDEOq+ZbKyePb0NEFRXoY6eGuZF9HRxM1MxE6fweamZbypNe/ravWiMqMeHHjxY3KjHjL4i37PSsz+nNVthUBnjj+toTuj6Vuic6hSL6WTLthNfHTEx2WsIFDyJxrCfR34QviZO8cTlOhp6AipovsCCZy6WTSH8wxZXjfmKPQMUYHnUjho4NOdNCJtyCqgY7TQcfLbtZ81Ru2cnQTu7uceItnC4247JYlcqh2j52kX+SIVpSIoKIVJUJnhM79k891FE4NOLfpZdapVmwmsDcZUZarTRo4XmV4tUC7zshQ86izpQ3qAxWjDI8pytC5olsxm2uL5zShrasBP2x04zgnWH61tcDXoVyhBp/pyuEu4s05zpCpVTB8REEKEmFyHHOxG3ODnr/hNKD9HMJrrjywarcGvaoO+PSnaykPtm+UZ8v7mZfuXqgRF3iJrZ/HukuR2qHOjWh+YsjN/WHuOEo2W4swI93LXeWCH4Quei1RZZdrhVJ8Oaa2Km7CCEG5gG8LoJcqh9CAnrzHAwu9FYo9G+bJiHR6onvHZVWbdfCkEzidmSI4LlBV9RgHMwY5NSGHmkPpMuLh9XbkPLJffjXZ1gQQlQ9R+XAUFizUzNU3FALQGKgq6zA0Khx8IuZUPNPwQLpl2hpwp/OKt1tzgjA9ORQ2LPVlfXMXWWOCWXpoAd0QvkE5kXA9ZtFXrDk6WUYC9kYIGFqTNLaJcoPXIDyihS13hCObaGxD5OXHL1paUNUJNpcW1GiPtLBEHKP1elFVTLWlBmOzmSmD6K4WuIIWwwo4v8ZzerV3ShGQZ/X6Qr6VVRXRuoosZfpZLuDdE1M1nf4v8U7v3jv1tf/1DtF3BX2k7Im+09999wiQi3dqPCrkgnFI35W7enpiq9DeUrI6+VXyQttp3EkNzSMNOYEpS1dDfj+RKMpYkUS9ORkrkWhwAUufwyYmNc+mC7BL+f470g9WdHaf1LVFWfyskb8itMXFXf2ljKgxosbdoUYXeXVBxcUq2+ISrUQvSxqsY4h1cfGG3tz+8HhsMXaKQVOMdIoxbMrDuL/Zw0Vtiyvl17YimGoLvexqBvcwC9GbNQhK9peK78Ka+hxv3TBVvnfZumJqeQ33AJxBG5ULdVe7d0au3Zefc1l71xjqQpRFNk4QgQ8okYxv7R9QzoFT7wcYZdqgm17gOZa7Tazkg31e0CQcF9KHovoXIobWTCeqVv2QE8jQs6rPNKiXnCrOnbInOmhWLEVuRspDaudOck7j3wsh8Wx1AKuBWs4F5uAxpXaXpKonNuZJZAtJSnKAOdelBddNuKAp8I6EoK7MI8gFZ8V8cYD5qgmMj8HZ9Xh8Uqo4+69B554DT+QeljBoDYGDiuGIEHtVNmUNpb8IWoeVfZaqRNwLGOw3xYoHf7bB0msG/WfkWjumGLNabeZcWw/Ty5D6itx22MruVW0yg56gu5Bdq+K1fOVcKyaoM6uf/Fyb7Jdnu12+aI/cUIdheQ2b0uQkXsE/tEi8L4B0vXtjlygGR9TUqusjqQ/3KtNqnfUaHqwHuiqegpPj0vCoCfUoeJBQMD2kGyXFEiMihpzD07Du/W7t9IGTBF+ASDjOX6QF2P1syhrYfVLKDDcVyDNMSBvhgEwOIapozfKCkU55jgM74olcVxSXmA0aobhA+drTU6SoSV1UZBWkTVKHeULgAAf4xl26FeiHI5UOpuPBdFCCwkHxHZjON8EelezRYPQ4VpH95PdkPLZ8S9dPreQPut6cDuHudD4FordcUhdK6teiQR4Ro0EcXksSWljbswMNdNpFoiWe2wF225eHbAMzeMQPe2U7a+/cpRfcIK0muLILW8tQq3EuP01RBm8YJfcgo43tKj6GNcwvvuh92qdjSnoUiuvtWJ7XwmymbsAOiYGPz+g47R+Wzxma3h0T595SjOjLOyhZK9HHrpFG5153KWCbztVdndvWAdj64nRPz5/TpQeJb0RWvSenWt8XUm6Gu6dmpIu9ORvW8jus+7Hf40ZPqU8jEwMzo2fc23QaHtzTI8VCIdZ0OAHYe+fLafWl326MGXALra3h6m2rQkpTyBtfBmEomGjsUPoc8bKgWNeCND+A7k4h0uGVX0p+NYFYg9YePI7EbBmmnwY2bHhjG91qGMOJJiVvvEUARQx0jgzhrhnCoCeHy0t1EVibXen8vMVH7Jrstgn8rt/vUF4P9t4mwNpDCBu0qvt6l4j4yuOsyVDYQLv92dPa+LCMbvlgGNfNQlzODJvbSCl4HJbQY01+1icH1AMG3DhGzxeIziFqISLReVtaiNMTWNrYvkdYOXcRaMLMZXRh6hFWU2YzVvcJOCnMUEGaWwGZyjfZiJ5dsJa3mwNRlVscb/4ohUSh1gOISAKSgg/rL54VRCq6DTdHERLzfA10Pqzrl/K3PEc5lojg3zaKy6BtIHtiPBWtiFWl8ldTbliaF4ijRAIXBwA2RsfFNMMykpBIQn5qEiKK+RxEVSi67+a2siqw2ewQWF9fQ08yDw+Va2OWedMVnKoAlRaeSVsNiB/E13LGkkJEXXnUlddaTwKI19bqwVicBZAc+GTIVA/Kg0ClEzsyM5ie0/Zp0kxmtAyEQHP4X+90Uup3GSAqVHY0nJ5Y4jfDz8MmYp0NPIMp4yriBoQY9ALoQ9m6wGTNBvjLRs/h2R9WhmnNxHd1YS6L79OUhX1wMvQc7jQNPhq6iVTYFgE9UiKmEuamTaNOC/7+LQg6Z5J2lBujD1NS8Hab4RHsx34MWEPx1EESQ2PPoVH4Egs8xQTL1YTN5wRiFQSPatnjXBeqktDQrHrK8NUqzyilRil1J1Kqq14cUKlY6f26SMOrkNuSjPpVWHtUXLm6pXhX413dkUapocfZRnvTULDsW63S0Hz8bGb3lhDfxVdN6bqz/Ers7f6ylhA9bNws1NWUqbpvbQo7UcT5SUSchhTih7IgDPr4dm8xrrp7rZuFGem6WJChszMvh00+Fb0rIiMTGZkjNI3VOE6zC8nj7aCpRMwUZrNB57AosmlMcHM8fuCmdVA9FgkmKF+GE1hFFVakJgemJg4K70YqOLi121kivV0kB/HfX10dWUKeb1ge2Q7drD7yIfDSG2ZiM0wH9t0b8vORhY9I9+dl4VUmCd+e15Deqj34O+PdlkGlWT+DZnGmTw/nbY8MXcQtO8ct7cW2rnKY0xotkUQbMVrIjHT5LJ0p9wsna0rr9NkHDs6IVXPuydbiT1975Osq59yzrmGzah15On8XmLfJi9i6W9VrNsju3pttsWc+7U+Wr9kopXwg15TNkv0epZtlyZ7qgW+7ENrgqW0kewR6ZHumptQnqNYDjiUjnSmxMSTvKENmw3AkfnX0/p4Au+kvLqLMjmi+kc0Rzd968cJ4ZX7uK7Pji3HH2ZyDEO8343JzO/xs2uJ1y47jUiuWs+qDvsaYQfM20mPDNdiWPA7dW6UKPx+00KB/3tW81mqUh9SnYpqCVLWnaajY7IErmqWD59Af/A42IedYyFGFXIeNQnBQfOemtLGoJ8NXIFVvE4ustQzXn+zcn2DxozScAj483w4o9JPU+oxUzwfGs03o6UyNa+iM0iHhv55HZwZtLeTJH7iqXXby3375Qwoz8UvCspxRsFr0fcwyWWCScqB1gLcv8jU8rf3MShAmY+6HqMF+w0mM2/oyJ69Z66YNSn+w/5440vrLMFUTk/ThjxiDE2/2jm/2Fnev5Cs2TlSomAtPosJhWYzBffhVNM3QYc5uVEzMWRADet5qzoKberVDXSXz7DdE9/9VV/NqhSLayCNjLazrpxlHymZrjpPHTqMpq/z9R0dXtcONsIWNt7m5MYtA5IpiFoGYRSBKMPGuxiwCMYtAzCIQhY43mEVgLeewV547nJUsxjxGIh5jHvcS8zjolRd1sKWIsTIREcRYmWO7oVYJt8UFZXklrYSMhi+yRYaJvdAT3jaSwdTF2oe40FfpzGeTMitbb8wSQCCRkAZQTcRYEWPtHmOtUWzb2x4ku7PSoNoPkUagDXuqmf5vQabnVUXsFMynrep8zqsXsOSMlrqF7n2pdyg0/x/b0oUuSGVAi6aWcgFAfEDWOewSIQ9LSNKQI24fn/eF4ufQcYb70HO4LyixG8OSa6nCWet6Igmm8XvEthHb7gPb9okwQypnulzLwWJod8wruh4qnc5+VWhUqv68StWb4IQ8oO8VEwKAULpQtBwi2jFo0a0gEq/oVhDdCqJbQbyr0a0guhVEt4LIAf9e3ApaSExzzKdlGoXTrRls62Ds+hNEL4JIs6MXwXBeBIEbbu7nC+54FS/Q8CCIfgPx6ke/gdfdyfI6veBSluE6rs9A9BSIngIRR0VPgegp8DN5CvhJh8X6L6Ac1vReuQhEx4CIXCNy3ZVjgP+2aqj+rtkQlfpC4d7LUp24NveFGn1mtI/Hn9G1L0+hgCVwLFehIPdKCajX2kCqiNMD5Fu3luKhc/dpLR8ZMpHiG8q77MDU1pDkHrZf1xpUsQZy0Fay2Nr0s2ake6EdAW19zrooqr1MVDssRnS58CBSdIXHWNQ2MlQx59+rKmI5F6pRFssBrJbwPNila8rog6ZK3ebi/86VAns9jHDRttfpHg7JLjqKjeE4xqjujuruyEBEdXdUdx+bult1XCAJmwvLSn3mk5gbyul9FL/wV04+9BdrRfqhvmjV833Mx7aK+l3OL0qrkdgchbTqg9ItKjUXFD+fCUgYTcWZA0p7LxG/x5KdL6rGHA2MEcNEA6M9aPXasUQSZgUZQ1JuyDomSdifKIRiMZBTBEd2EgJ4/N2ZDvBoBY3lctVs6dhUUiTRAUxz5fSOokiO2Zct+A+JZaBAqCim4c59KQdQsllgSURqEaltiNTMyOugfkwD+ThYJ7e8BuER5gNVv2czOc4QX7Xi2xR71W61rrz1TRjbYtndl4qs8css9WySub/fhy9jcACMxEHyVUQcEXHsDHFoiArhjSO8aZrfOQouxLJEHzlK4EYMWQLWzuQDYYwPOZMWuBi+d1BDVMV674PhdnjiPhisuNXIo0ZSE3nUyKOuCU+PzGO80b9f5rHk7/ooapfz6nA5XZaoP7jb8ipa/fcIBOSGer9yrKvvq0LNh+IH64j2oWbQtsUPN4+CDroRoiRGfbpfBXw4aeEEnGW2JODhWPZBefUXZGjYwOmjgoDuuYf5hP4D0UaCDxzNM6ByrKTBTSKJ7PgzLT666CJBAoZ2Q1Vz2GfwQ8JU/je5DrGjJAFRZtkZUcoKmkAGVG6UrbL+zJCxCIqGmQSA50gMWNO0tT8VlJWH3Zzmrm++OgnOiPaAlLyALXGBeye6wFQC688Noi0o6n/3uuNV478x/gh8XEwlB9gEZz3pH5wJ+4tGACQH+LNgdGjElTOCk61sgYgQ9gTpZJVvBESu3GJ+ObLs8Za/ztDzpfI+gfT9SobzcX5mabjzAvJwtrhPG+YxamyAZ1XdqToTc6bhfnRYnfAMEaJFoSPQC7elHveeVODqTPnIEG/7XncVANWFi9fs+K6ZexPC8L81jGqxWOcq/VD6cq+VjPVwE0DfoBxHEv9VJUmLUZ9RNRejPl8V9enxrnVgys3qHQE9AvpPC+gpTLU0eDwm+EH1eS+v6BHdviOe2DmeiMUlIlDtHKiaKL8tEJp8Y0QCP1/gXGyWcEwNP0v0+IaVoHzDwdMT7bn0RMhAc5yZhhoh+Nudh4MA9jo/XfpnrCc5YBazKOBG1PsTpjUSPu7/zBznj2NJK9S2DWnSMagsUFGvSLPWZ3bZVuPdxPddLB/FqYh+dy9O9SZ98WMg1TxB040YYanGNSzO9ocH53+nKN2wXOrRMajRvhHxT2T/DpHVciM/T8ny5kY84RwOELx/JLku1fYuQSfIOir+2JIa55SHTbdtCd1bJm8xS2EkCIcmCGF37h68uy53oQdnrQlz6SIT4z2jvb8hPTf+WZu50NjfnFmnrqPJWP+2WOKYHT6izYg23wYffYz60xLTHg+LePj82pFLjOjud6e29F98NeoccVYI2IiNS8qxLvdW3dP1vFuvH/c+sGCywCTlQP2Mk55XH9uUFJwDlVc0hechQ28j4xQxydtknNReF5LlBK2uqAS+RGTYBFP1nR9QECJ4Cd8wTdnT5luxjrUz8D8oL9fm2LbD/21k29mMyEVF3Lf7TE5e7NSBvQba6Aobjfu8xpPC3FNd5hHNN6zyqAc2Qs/QHI6e6YocVMQikYN6PQclFuzpiqY4QTKQmvdQjrD7YFwMKhs2vqfEppFxiSjnraCcNlLoooJt2BJ7C03RCMgbb15fMgLyM1z9olkwAvLjjC04Fs5kI3eblMk29DVT+ZrJQnroGp3mfFu7OXCeZMi3dDtei8B7DPJbncxGm6eVsowQlAtM558ApZsJCUn1m7OF+VFDS+uUDh1E7eHXwJazaipgFRbHVBUELIuejoQAOaTKpspFO9QE3Hy4Q80BnnNEU0g/HUFWTg3sRzGVUtw9fmlccZCEoOcPKAlJEkNk16/y6Q6ouuytrNzAQP5k39vnsO5eJk/Gzw6Uewq61uD3IqDrAkU/p2hPSzWPlkgiPpYc55tQKKSH6wqFeYM4mY7hvXrNNHbih9YLTxRLjIjYvrbu4Sm0ezQh5zKbT34w3d4SOEH5vZL7hpxHhp6/YoGnZNDdUHLh7RL4jASUNAcLmraTOB86cXWC8lIjcDycbzmpHsaX0QnKo8I6ao/enMKam5IGKQYqj8X3cVD2ssXgdH3za87j6PgNS927Wu0W2fVlGHXoYRfntwiVJ9q7TUG6zG+N2j1OlxZ9RqQZkeZuasS00Jqv4vJ7ROlm+rqpGdnQlsMSOG4XBO7uKaYz1lxeoXO5N9qeEKftqnCpMkPxA8RpDq6qykAINIehg0QDbGfERREXHTMDZ1cclGUPJUO26uwdRQxNhaRPj0Fx6ZKMPRGKsArTQbKBCoYR50Wct7sUlU2s1MVF/WU5195j7fxQTnQTv4dyrMvDRcYjXsLIeLyY8Si43sZhg0R+HjnsGBmoEkMOyjdF1iVizUOyLg281sVm++fit+KNqiuqrfxqSy4wImy+kZVfDT9LzfhG2sOoE1InM8M8G0UOLeKat8mhJYgmQCIARwB+qyIGCMkLnQxtUN2mJQUD8+blhR58GhlLERnwQLxejm2CPWw2zRfpYTscR0TTEU3vBE23OYEIWBGwdlSKqkGhu2SgTTq7SK9J07oIsyQ27XdvRgXUsHucLCbwLDcRiTlOFmdSDXblYV7sJudpolK6+iMT7Py6lLwMaOvuDOKPvX5oXcibMpI2gABLRHDSaCpoCpxg2gQ+VTG60UAwfbSgo/6MuCXilp3ilvb1Vvdj0BIXrQlplDAok1kipYiKIiqKqOjIUJEXW6jWbzD9iuFpE17kCaZnSzXWZUWKHQaG18jIl36Pqpv3SWYH+t5it+HBvd9CIodE7jYMrfeDIuGMkEuKpgTS3alOer+pOeH5Nopfdc3eF1IGbzTLfZfuCaYKTB8WWEjGVw9yAfQhV+UPtDWLEPYE6S3Hc0y3TPcAzxI4ReQa00cRsrg92O83r/1KSMgeppw9idKulqBkATeKevjzQ8AMFaSNoAhDTTrFZjN1MR6ACHgwvd81+KpEDq+kGIUAPpr7fdZPT/KCkAm7hxkHsQiAzoI93XE25yDEexRKNsN0ncJJiM4D54xPgiosTNW6/iwuWFKoUhFjibjcaOQlDWUAX7FChs5XtIgGpHN4kOxB/W/9MlY0GUskC7XmUZ4D4kqqDHieKXgUCqLuOCwtKu4Om4OQBYcNOKkUC3WtR4T432T77zBNFv/OWNY7Sh2KKavY5GG6I1VND3iWN0CL3nFfBPALjub9n0X5JzxfkFbsenfgWCOy97r+9AYDq+REonfwBZLoAiQkoZE/1ikiMkjxJqYtdfhXmrLdEbTSfIUfSmyyyR4Y+lAQYrFheNAdThQYXVH7R8/QEeahL65dfs5Zlsv3MGMcLh2k6f/cjDAkMZ2/b+D7/p2DmnZ1X6j2cc5ZQdPzsFiBqQz3Om8Q4ivqeUWoe+0eYZU3NIFc6gSiLlXxH/+9xv239JyjELq1tGAD3++Fio2jVN3rJZarIG7WuPdWx+sFYI9DoqLtVj2DNgAXmIFMFpvUBeNzkC8ha2vJuz51mSzG/rDFtYsgLEFE5/p4X9A0QKxSlo0l42gOl30ALBeYp3eIy9U5Y48YRO9osUBcFVVaP/IJphcwLeZzTOe9A6ccp3MYQ1KUzkVrnOLQ84jPx3qd10DnjWjVRmDniM8vIA/33xiL1PuVBL/HE0cSrnGG5Q16PkeErBll0tgFvKdyzmY4lKCrKcnl+YOqQKVzn3xfDw127AdMJPD7gnhZrFP1WkW80guWoe3Z0XwBGXBEFL1SYAV9h/kZZSByw8hvleOMUcEIfGD8CfEyGYEvZeAMklVC4FLVuwngMY3zjJw7AQIZSL4KjVRwdgECz+mEPQINYUYyZxzLRYaTC8QfgQYnuMApfGJCQjrGEursaJ5vZxlwEbQhaORJmIAOrXIGPQLkIxJ8R46pmUvvPFzCMBJjTdxFCA1rGfKTlPm5kitC5o8l8Peojy6qbfqGn0ep2GQbPzAmQ9MXIARm9L2GvsDLqheNUpTbN625iU/4uaWMEfCnP1mppzG5MC/KtPR3JRjpURi1lEVIp+JzmnLgD5gKqXl7/fkZRxncMYKT1QavdNCJUmZqqjCGBkYOkW+KcrFgMlzBZY3+aFdeNP0CP8rRFBOsXn5fKZ/2ndCzd0rTChb7nPOb4Mb4o8fh3quhMrCwTam8YIXY7TJa+bxiCgnpq99iFA5/gdWr3zTDZBsnnaBG7pUTeUVqjwZkbWUaKYLpNVydZhcVh3O3tTSGXT1hW8EXMIXPoxYuauGiFi5q4aIWLmrhohYuauGiFi5q4aIWLmrhohYuauGiFm5ILVxIfbY5zqi1XVvouJpaLG+Gg1o71fW8dLVOnd6ONqkzotQSeYC0of3xJVC8xkJeScg28WUjWMgztXUNZzYCqESttXopnAJ/P/69gjA5fCJEb+rpMqghmHh68FIj3mlXs+pLmb20rr1HNfNqVj0zlxxhcjRQG1OPR7fnN1ptXGdGYXxt7ibK2hEAC1hyRtttyaOKQzhUytxxtxrcMGWmBp+InkXFWg8WlY74Y8qe6KCZAsozGXw3SkI28ESOKLG/w2v20eoXlohy2ZmuxtThGPq+HfPgRwq+WwreoLG7oaxNmhO8JeERTQTpjSUs8bgPe0/X/L6D+Xyi65jgDWt1CjPSlVoNbtt93NDLRBbd1Vf0K8N04FpbwxbthXzQkmdORfEookUEP5iIto10dnoCS+v/8ggrB/8ATZhBQCcpK1R2bz31IIAfiu8u8hz4153i5RfMokbFg0pjdNDyyylMtV/KsHmhrUtLejRpygaVfSqOpWt6xjRkkg7UV4fcX2PMoXORukXqtpsyXi2Ici5uE+N3wLGBir0uTH5HlQby6rzVxSoddx8tV5ROg8ovkDOykYRR/uYssT9qmMiGzvYYlnYOgkZfJvOYV/SrlbVcO2VNs7qqGccOoEJWXnb5NoELUTKJuDsajzYXT1w3zKPgy4+AI1XOJilI4BmmSELkjRsEtgMOba7Z9XOz9GV7quIgfk8d3MhDRzy8Yzzczwn3cbQedOFlekfWnb4KM9mo9oj90RmufrU/HfthmM6jIDPHguHrcuRDqYCGVoTxjo9YVD9tJ6avRT89Ne+DIj4PuMqbmuBMSpaNNbLfpDC4Hn5miIOLvkon56NwEVSbaGMTNk4F4MT/7JsrPoryxSq64SNH0ynwQefB6IXlIaJUHrnBt+bSabdySCHXy7pV8+pj35qDBmQcYIOUKYbyNNNgWwc3t63yPNu/RnPoqkCnJ/oGZh2y2908ZoN2G+nHqUk0vv86r4VkFscPayIlx1RqdlD+1OHW+ng0h4/anHtaWwm9xXl4ovZcliAyApER2Akj0CDVnkjdNjHs5qcJhjq+iDYF6/y08Pr22LyDcDtoNqQC1iJhGU67ThbM1DhXBkQ0WbR974cSASsE9doKRjiUOyikRMdJ6zKpY6oPMYgHwi3f9amurTzVr9mMhcMjRt1nkRB9a82tGLJqkVca0mfcJwmJbkSZJ1EbZ7n20+8E9z83N9fs4IM92L3z1/XqfsclUvXVK9OqDU1+jojTr2ly31a0aWGkkZFGRho5MI0sadJOKVGDWGxee7SBXsOYRMsPE8aIxPkmIoS0Q49ViigrAw4aaH7smlmpUu6evkIadgG2kIdwRpUcz+dtw5dnZai5MsLo/EGhLzHEpKOlLJKqt2ope3MccbAmbDgjQlg/uB8M6SCxHaCuqHSPOGXn7K/64R3LlcJ6E3Ywt0OPlR08Kienn5Q1ix4VkVeMeP337VU1tDL5zXGrG/pzHJpDfbXJPTKlEXntHnkFtZyaXz1fbKa7TBYtxeXggeubxIAjIbCQLdeRvGjtcjFXdYhwKy/aTBc5OAAPaFHNlbUSedazI3vRIVYxWiKJ+Bc+KGhwyNgSDR1zEFM3R6T+NjlSRu/VDYqpIyLwvj3gNfl2jk6jUk6r1zHLHTOkHZTAEsmBc1lIVR/pyOp1qCn1HeBRJAGpZxmDP/ryf4STfOxKbGhx9rvm530st6dGkMML+6JPYk7ySN13Sd1d5jECVQSq3bCMDlPnq8nX5Ju6zgoOQ+OpS1pyGlumz2kQWl9skVKuiStNOTZUsYkzQ2g6uXK2i+5x7sAQWXTE2jQ6g3vwa7BfMJLCsHVc6ChNo5gdcebPl6HRgamoT4qA/rsA9JiWvpMXbMu63E3uoHvxm2TbY0K39DQil4hcojgbgeo4gWqDQgNVcOb6+gIlqapFxgWggQWbGWNy2BkkC0xSHjAhdChRT5TffuZZTc/UiAcZeYYm5HZr2Vcg1elyz/pFJ1ydgPc2XmCRECYKDh9Veu9NbmVa/eRMpwRvXM/BAx0HryuvdHLPOaLp0dlpy2n1qbAaY4ZEcb4IjaPEcIxO2HxOogYg8lMxmPPFxPGFxatdTNvFr21k1iWuNZZ5EW5x73688fHG7yrU8lp5dkB6XoPnOqaMmF+clRB9PP7sXlbETKnJg6gTxhRIrSw7rjmXXcE5H1FU6ZusUuTFy2ty1FyXb9/ogjRFlYFzwuC3HRXhSbV3aBGBMB4dAR1IPlh6tursPTfXHorPaWRSOuutTSelBzbLkpAio0foKqLAgD3tJENtAoRsZVNqsRjm90eXtFNtT5/KoeqPV7kB55tDdwmAxw127jn7sMNHVMw3wg5zPTDWXNtFtldMhyzkYGu1/z7rSLxMMNokNlgV7USkGfSPKaBDhPwOWrvOH9qCqeylP5jOd0K/l7ut6f5jQEKuvk1xNnykVHl2kTd4OXxZJN/5lcW+GxeV6IsrWoNyemsaijd05dxb4XGbd8DVx+LcI2mR0zoeh5uRb53JGZjAYyqBoyqN+ID5Eury2NFGGC0GP5eXMLbWsIEVcm9eo3oUEmG39nX36ohmQrEs3btc8Sa4sBA/1aJCvkjlmjxEohCJwk6IQkgTvz+rQD/LXSKWDdGJjTJFfMMAUzWwG1o6NDZ9QYDrQeqXvzDAtat8+l2Z/E5PFoDnCzmkSCOAY9iJumqNYX7LarFropvC2KiEqe5BSs4e4dgUY0cXhBbc8pecYvAwwudXX4nuRahgNUJoy8dLud4zWsiNKVyqRnvonCA4OQg+8J5w0Nx/bEZos029GcrqEUclfh2WvMgFTh4piEHruycqmTSfDBrG4YUid2J9joB62HjoSJSeJVRz63VnjP5V0MKxbwKzNhBZUA7rfLFx9bvzad7JLvnswPx2vmHXMAdDZtd6cpqRLhHcWZHw8EmF2YOwG2uG+CO8CfK4trDyUdQmZhy76pvfPV56ZbXfowH2/lqmrVP3IY8LJNHGzqUpkmhHHqaBjdWWkq1KziGC5/48bU8h8Wpg95BdOb0GSk6/xCkxur1urc7CKXwKJ1Q4XFpfichWFa4OBDUDpGFWO9EHNs6IIf1G0fN9CAEcSEj8DaYcxcwS2zmNHzfBep0f++EoSY8nexun+lKrlsjuSFBcE6N4+LrqqncueHUH/Zl+FijfiCMTeqDLjA1vaOIU+D1KcTGsJqyaB96GPEqWX9sqb15Jn+WTsuCbr98Ujet7gxnR85IBCavKp4MJ2W6//GmSW8Z3M+z74Ev7qLxtQ9lRQig+6Lpb+umedr15Tawfy1+BlcMZqFGASGy943qS1ozSzRDhtd20PmPWOOzB1sYksTnZb0jpBwHuJ5w2CEWNE1IkFttY5IZEEUfEvPWYXJs0yKMibhCHN08SSqx9SHBuo9OIRPeORNtG898ldjPhIDhZbJHjheNk4U3wkrKkyIDKPwtGh9YMuHM5LstnZ5cCGhZGrzF9jKEa0Sv3zRUInCFC9ApjCiL3OvjwY7cgTgtxeRKwl3ghYoOIDXaCDdz7uibRlcMrXKZYGtZoG47hDMzPXMaBogyOgVmITMtRlW6SjJHNjLs/YuRsRMA/CTu260jZFHO5CtbTKXLCUDoGvsTJoDhYaUBGS4RJ6T8zmBtAhumnweNr3gwLvV+WueQMgmzyy/nodYWOKurTQ3NixGwkBjsnBh2U3K3T0caVXQzZQGId1LUFw38DKUYfjO5qPaefqdFnRtXVCYPdJ3vtQaEHIW2HTufm49Zbl+NAny1haALP8sAnu6jtPwf5Yusqu+mGmkD2/XVf3T7sMkj+1iORsNt1G6C6+Mdz9J6AzLaRLmAT6dnOUuOgPrQxDtLaBpWL2IOHcDp4GP7QSoZhs00eU2HoKNJHLu6NWlgYHRfTDMsIvBF433S1J0WRhw1eS8MBZkHepod3Wls+OWoM4nXdeQXlmhpEoIpAtYv6X10srdq+MpzAZyY3iqdYqsFnVI12ZbAntIQZ49kbSUdWTrfPV6sxZkgDcsE1cN6I40rQXM+rbxdbo4YUUZnAx7iP9bz69rE1asg0QhLJI0s8o6fUm4CpGjDkRQaCl8BXR+a6amfVe4ndMYOqd+4IWkX5OPJGb1C5c4cKERWTEXbfpGISIEYtRNB9i6B7jyREo1AE4LcLwCB55Hkj7L492OVIHmOBAjuz49IC8TUaDH4ECoxB62+qNACIn7OCDujDfUSBh67GffNb1VZqd12sG9rmbqh6R53bpTANPWvnDV1Fpif3vb2e/p7w3B0FW7AznAu0Ui5F8hrJ645suJXSJ8JUhKld+QVYZUwEqQhSOwKpppIkAlYErF0BVqm8iDAVYWonMFUpFTYXenhTnKhlEd4nTQTryrtiaCc1l4quQ/y/CtjImyqzQ11XKhXl8jv3N9KS3orA77ge5BFpGkqA3FZXUB3hdtV6JjgDlfJwk/sjy7HuBQIqd1XHMpykXPRVI1LTOmh53JRRb8zw0VWusGfTp+l0h8Tr1wDnCMR+IG6BjA+r3KE5qBxXnJFNEEuO5qCzW6nxzVI+gyqgT0+SgnOg8oqm8DzkPGKoZWTzf4potYHLq/gFie497wyIUWfx2u06QEj98NsCgNzhxFbcW0cpn9Tws9yMdykly9Vn9lnILRyxKfR99HMvGZrDF04Oy9pgodL6pAH2phWVVa7s+7Fx7/ZIeyMtgEAiIb1KjyxEpJ5XT13iyNRE7Po2mZpOisgGwPvzRLrXOUraDYoV6dRu6VSDKsQEChHZHsD42MRuPqXQudJDb87qarW1j9WtKlcfD7/jJmALlCKJrE68fT8Fq1NeAz+XY2jslvYg9/c/deK+I0hfeEQcYIXII4sSkeQBkKSDmjZHSGFxoi/BmWZ4bmV+RfNio5JwTOZnWA92WR0CdB5AFgcyPL1FZusoksRGji8is98Fx8foOctyAjKCegT1n1y4gaTgQ5bWOSLmvWZNOgxJmK/vzwkbuf6IPfYQFeGSpwhWEax2Q5QqUtCx3KiXfkDTTaS+GZo2i2sk7QI0u7Y5veUyPZZoRy4zXugj4jJ9uVgE/g0C99jZmHlBEG+uJEOENFoI4nM42fnV3WdykT1yrVuXJtiT5T6sFKxxVMRMETPtBjNZZLIDFBKIsrSBlPlmQZR5U0WNJJZFurcETz6+g9H5ob/5G2PZAT+XIf4IfCfuvO4Bdebc2MpubxDNBXyvglG8+0HErStVrdRd1x7dejeyVtiT7LNXuEMOWQJynxWaPR/EVAJXaG+5PxWaL/scKwKq6XiR3tJF0ufYm7RPDbhh6VrOW2LSpPpmsMTJ7hltsWBPXwTwa5aEy8vuCfJnjJABv47lhKkgUAiIGnv6bobycTedQRcKhEQ0RTxtQgKSQAiWTfhYrKYcp7sHDkZvUD4xfFdUaUTB4ZhVGgpWFZsSwTWC65sA13uY4+iEEyH2rUBszd8eTgZMUAYcHfijYoFy2GeksvmgD/Z09iIXDHJGVnPWBJYE84RYhVnOMJUiyox7kxk5SnEhbgIprTh79DuSzDAJxPjp33zDqdc35cfAMqwB/d6I7nrE4W4ko2P12cjaRUL5BgilUt+MWcGTrdi6gpMJZDkJJbtHUnI8LVrWu7o/Q8//bm0A2yGVn8OS+gpC9pt/2xpGjkhd90JdW5aFztxrG0Bng1ra+q7OrtKrx7PbD2fkqrNfoMT2KJ67h+hXEXvGtZS53RGu2nVnylZXQRqZkciM7MgjuKHJjHAV4Wpn+febKscIWhG0dpOG39UNdhN8N7R4XU1BpW+LWraoZTsOLVtDy+UJBHP1URGLRiy6EyzaVBwdqbpI++J+xSmwTbxxl3qg649b8N2F5PQqjXMmJPDDfAsVkuW2XuRu/Ij6zWImFb040OcIY/mBPpUVEtIDfWvHDqb9ACJySOS9wmOH+WBidCGbuBvOcBOXaaq6pS/ZfnTCL1cHF4FUmTVS6GJM5w53Yc69ct3e8oZ41E4lQHe7epSbLXDppoNvnu7mZ2qqX6SzrxieNqp8kc7OlmrsICj8kDdU6SOdsiCHwq1CIi7v0BwOs0pl61A5XQ+0OqS0t+MF4of54FGhmp7r7YM1z5a4oOG1WpUn2f1tc+O9IeA3kGKkilxvlu40U8PPcjPexQYChKgknAM5BFRy98E9dFCRYtZArYbFbaoT0gSJlgyC9O8UVQ3SJs7Uu3hvZ0CQzHAGE93ol4YBZWW3b02ytQDO5lwd67Jl+iBNgSlFSvYygXuhwlGISyz8GglEpkUW+tET44+hhNdlqbkxJIym/npzJGgYTBYol6+y6wZVL8HSWuoq9822d8Hr9RWqKN+Eo+TxkOnKCaLzoomeNrlBZZmxJiglyKZbbzSWJ9V7b7C4gBkqiHxJubChPa704fQ6XCnQ2Wt9ryBXwgRu3bIDfb6t9emTXjDtqHOTtiE3YVmOkiZCzjDFTeSG01TpeXYdROMX1rsLmRaYyCvamWSGmuHSSSEkyxpNVNXK2/nE/UqN7sQpLKEZ481oS9v2tAD6FQs8JXucp/4AJliuJgsOYsFIesiI6N1qLjaJMm9rZTxHw1pXo/2Mthf1N4isKwixWlN3fj86+PDlH1VIAiey4HBF78wf+/yW0gzPOStoqhhmrSfe49fgWQJX5OgA38rtN+7LQtobc9SOvni3QaH8CfF0/IjzwxMetRPDfV2Jhf9WQHHQ8HP10XOHIz7kdyccUZFwnB80APfgiQX2ofzdjO84oAZ4A65O616/8IOmZMtzQBzRZMsQuwSoPC/rkm9hJG8Si5e+YcY4vO4NQiMvxFcvfUGpAnjxJhSzGXB48QIs1zwO5hby8fS+fENOdqGEcQq8xwu0wy51kxUpNViR+b7g6k9KbfvhPO9PTwRhUmwD5bUt5A8cZie/nvy3X/6Qwkz8oraWUeVJq9lMVMqsfcOAc7b2Xa4o1DeOLYFbwaNvmNbFva9u27rhNVt6u9n7IcvlmkEHPWHlwIfSVYyBit4nxx/efhdyh4iQGiH1uCAVFSJmYIig+gZA9ZKmEVAjoL4BQC3FgQiqEVSPnPxbTUeE1gitxw+tHyolRswcFqH2rUDtlYQswmuE17cBr9p59hwI0caEA1omcw5K3X7IT9b+Zz9/tZWGp3LXjbDl3xA9iaMncfQkjp7EO/QkbrjyegLd/U63nYHrKftenGJd6+2e3Fddl9PdOJqucQ7t5nwLx+uVDpevcbNsuEb6nRhD7oZ+x0CfC9/mjnt+Z7vOpgTc4rxxTZUDm4dvabma+Uc0ncKOI2yy5bzUpTINN6PoXBSdi47Buah0CIpuQIO7ATmuO1HnEXUeO8rndtdMVxBBKoLUq0GqdIaJMBVhakcwZb1WIkRFiNoVRJVsZoSpCFO7onyOH0gEqwhWOwIrn8NGBK8IXjsCr6ZnRQSsCFg7AayOC0RXD+84K3Q7G24FbUBR07pmUmLYJPEYMSMbKcfC1ZV2noPwgMlPD5xFVuQA6WHSDh4ykaPawZ06tBxbwkHRThHtGNKDeUj7s5tWoNA5lB5rm7vRvit+b/0m1l1wrsYNdb0Rl1OmTOMH+ZqQSMINShbKOv8zZqY+3EU/tqvnApLPa6dx7lsmHw5eQpPIk1G5OEcElE12o1Se6gdnSfkL9+qtIODxuIMcJacncml6kUwWTGyWIE/NqC8/nl7McU1ZT6k3px8QSCSkFzZ7/z78Ll82dXdmm65gn96ja1ehfPggYcaLbycpYdNQSYWUyXNWUD8x1J2E8Ql7BH/FhRQLla83wDBPUer1f9tjfsqXQYiz230A0h42IHzMMBfyG8BjGiCDh0AUpmqMvjXBWx/F9ii2DxQG0QO/bhyPYTViIE+E4LcJwcq/dJT+HSXaC5TKxf5SHm5CESredkDqWDOrQ04C00F5YVMQ6ximEMrhdiAexfD1WGH69WkjBabzVpFnrknD61JHbj5PSMcqZuJ4xahqepvIUs3BA8JhOaFLesQSqp3cJhvrDh1wW0v+/z6yT5F9epPsU4qFUlJuQhuMWq4RmgXwuG/K4NdY1LPu1Vi0hg2IKeA5RzTdbZ2uFyGsi3pPotQX0dab1VvYkFBNeSMgR0B+k4C8u8QZvo9tZQctzYTd8OnSGtcVW1s2ry5F9ZiUukaUpq3n92Hh8dhSOt9uGzk6029bHyLKiyhvRz6oLatAhKwIWbshpl5tfRezumr0bj4jV7/tyXZEgwTJ0Qh7+5rR9W1K5+hQt9ac+pSbQXrZURsGRzr6vHVjgu/qKLHibY+3fSe3vaVc2k6l5FHedMCtqVXpopGAuiMCeATwHTFKfjVEBLAIYDsAMO0LPMEZfOQmAd86N2CJMzibc60uqD2Asw2U+0rGdGf/z+2GQ+j61fHTZMH48dko63n1GRxao4a0NyyByp04z26fz9LmcAwnu/TTcpoGEoGSi5AXfdKvvcFJC0UogN4isZgv1dh36/tfiAAzPUF5JAGRBOyMx4BnydHrgIGDiXLxwtvRuaMb1NWHZp0RQ/rUKFT2iRV8SO8uoOnQUzgWZ3ylW/rMnq5DgXiHs7EbfcqlgtJolIxE4Q1a16NZPULwW4ZgzSFMIMtJR5Lsywu7j0mpnL0nDhN2hEJZrxh1dPxhtZF9LGJz0JCCeIrl4G5/gqL8BtNCghg2XFLzRJGuRLryZjmjcw4x2DcC71sE3owtYaSfrsu6PUNRRQ4C/3YckzkiH8wsaCjfwjzTtKB01ekdE0VXE1/ZDqLFIFoMIhWJFoNtJcKmgt5/pUu1dUcEcVTanb61PtEtJbDPJailnY3XLl67HTkDRS+gCFl7QehtbWafDrOhZ/wJtIsdTV6XD3RUbB7FWlP35YmiaSml4rWN13ZHBKFWFkWgikC1E6DyKHE6EOPVrvjyOY/mKl/sJp6lyIx03Uqji2FUGEScEhUG0cVwf3bbhDNCJuwIc3Y5M+tN2NUeN6jDJk4eV58ApbZa+WD2eF1/eALP8hiSl0U/xUhZopfXjry8UhAJVNhyIARzRCbNaEuMokFE4FE02J8tscUi9w7osUi2WMPubW/wbMEkGtGsGG/ggMafJvvRPhej9MtYimfYwnmuPh5gVgKwSwC1PlAbUyRHmAQ7G5Xs6vYpk5JlvlpY6/amJafukM3R2d2SxzlnBU232R0ZNnS552+GfR90gQnjFPg9SnGxzi18r/N4wunael97ncBGJe72OoMZJuQGPX8L7oRDiPY6kaxvEoeCh8GPg6AVK+QF5ibr17rkGUTyJmmRpPFMmKrMZ9wz9zpvNpsJkH8dcuvMFP426BRKKSgqtCI3tmNurKmD2j3kXrBiSiDCb4Tftwi/KElACDzFBMvVJnEd+2XrcJoCHZSdMlPYwPC1Z4J4zej8joMQEa1EtPIGyeIoz0NlrCPwRuA9ZuCVC8i2ihfWZqVXAqfIUdJUw236Ekf3xivN0MvfIVc5m3OUL1YveE9gg5Rzo1eqrBUHnS7SDAhyIopQhsnKiyUISAl83NlKd4scgNPTqiZhP/l9rX0jQxI4Rn5PziXiGFEZKJxBBZarQIr08uZ2Tado+l6j0oHVq2KBUvb0k6pWa93xR3WLtnSwedMLHZrZrWeka7scz3SuMjSH4UWBG0Ci4FtRJKMfDxpPtf4+0DssjmlOfKg9b+zPUJOwhr4Jy49kJu+11W/oycxfgJ7NhLyGAEyVmNIsApIq4m49d1j+Cl8oGXQ1QnI9e7IRtXiBj1SbC9JrHJYoZUg8xgP9iQ50yngKW4n/lU25w/Br8eqwPFjrN2Zu5UyG3VmmpBu5GtJch0Suqw9JzAadxtYqpjfEprtC5k+4PEdMHoqRcKTxoaZQC/2DsXbKxPABINUqvSFNPyiXONndDFrfNHm2sLpV54xKoHJsdVKDWZokRwoAQwAQcs+nEnigtBYOqJ1cr5j1iqeDIJcUC4loAkfnQ8hhCYjc0rF2Qh4UQJTNgxD0PCiNNXemXyl2+BtzlQ6KtkEsjmJDEkZnICUedBLGE3/YKejLesfZPGgxP9RUlpBIxkcUZ0NCqKYSF6DqKA7qKKzZixu2LZF7Q4yseMI5XFgb6dbW7mgVj1bxHRZvDfN53pcOfHU4GD0CpEUCaQ+WOBwZQYG0/wdCl5zVoDrUHH67oikMynNOydryWHt2AZQTEBvVgNizDvV5vLXJva0sdXJMtZ1D6u189rau1mu0zdeqdw+LTxq+rPeMrC+hCgnjSOJlE7dLFTLqNixs/JzbhpVtuIn+CylZE9ETTJsUQbJ5u+Z8soDkccqeOyYL1vwlmrafCRbNeaL074WF2wZxAcSTRWeJJjFMYyosm7L2VDpfUQ2KSjcaM6BFp6EzStlh2HwNLcwtGz9tmXFEkWWIN5Oo28h6t0mZ7vNWC047DQkQ0qLyc52k4vtBwfQTHlYJ2prM8O7X5qpdwzLgiX4ovYe7L1/1J47llCYc4U2z+HVxntBB75C2uVmFNZqNRZ4iCeJhphA+UEmaVy8naCUehI62bV1JLsVDBilGlp3dbyAmSwpxG7Q2HiocVM3io0Y9Q14fTLHEiHxQsxl0IohSVlj97qasS84IlkCtBscjqun+JvUQQv1+aUM1ZSjZg+R4PjcQ0n0vow+JySXsvprRB2tgbBB5JpuUlDIKFsyHDAwnOB8vUD4ollKTOK8i1PF2Cp/8ui9JAcsnfXkKTD6CvjeYET0vGfb8UDZVyuTtNWWlI0zXrIPpR5Tf+Pn9DD2HOl+xD/oS4Cxn3JCn/10mpv1lsdBoMUE50jQMm/HKZmVH/8eJMsspLS4oeaJ+MOlZlLV2hik0BlHGM0Twb9AdbWjXe0WcDPFWm/y/n/DzL8c2p2o+ipWFtTMa5fkY+BIncMm5Fr1aLeeqItHpyWe0fI+Sx1teqiZ1k42PX9oREzY2yin7NEEKXu8YIe5A9TyWLHfb7Bcv1AZgG4RRzsJOtmr4hGhK9I8kB5Q1XqNbyg36ighOtf7jA8JEebx62u4L/S6U59ofh1L9MmXHL8/DfvZEacETlsK4mEoO6hmL7vZhoT/x1YIzRUs8VwdRybnnzW8szYTA+XNESP2kAkGUA6lcmMV5IC+e9E980tUpq/zbcu0pC+3kg3+DD4yP9C+68PKqN1VvSRiHX5bVJq993z0IRpaQ1udyYwBum8NLYYYKIm9ACKUuOT2B2czAxAelfbCjQJ2QHfPBnFWWEwzpX2A1ZYin9emdaKOHgM9FBhwnJyZZGVmCM9S22OmKBStIeq/N+iUobHK03XOIO/iCHax2T+JsA6S3RJiY7tWYMHmNH9UnzhFRyewrUqoyw9muC7S6sGo8jZsu0MqIYfrPv4C6ybrhNlcj1JXVYe714w2jcnEOevbqm6MU5RJ4PaCsXqU5owu0Um1p+e4U2bB5/ad4D/LJ4Nm0MHMqe7Ve6v3qQr9oscgyfSRjlIFpytQ0bpDk+FntOWFSTFi9NFE3XpoMndZP+HZmfq/2t/yW+luXNlJ/m0R7p7rg4O3M/lFO2wfn8aSO+KSqU3rC6RzWk4Wx4c8niKvRpydfMTw1iPk3/Z7zKidd2eIZ9MFEXlaPHGVQPd3DjINY3DGCk3rM2IRYGnqtvl09mH4P+P1MC6sWpc3M3SUZ83NzYRdA8BI4pJ+ZxDOclPfFfSyv110hFnfAFd9nWbNkAWlB4FolsKovRqJ87ciIEN1eNVRPBBB/j1INhvqhmoS6DyDLPr19iqkySXR1Q/39sdHGn2oTgfsGlgMdK0clOheavKDUtxqtaBSysSDhLkg915NZAteDuiAUd3vPu13tdIpFrvQYa6/rhR1Y71L10+757eytNQ9dyPVvGxVyYbkvK1ypltscKpplnstvqad7EAWR9mEsDQK/uPww+nI9eRh9mXx6uLu//HD1V0WT6tfbp5qrQ86vcQpUYrnSvJY5wTkWEvgNaB2N5s9A3iEhnpjm1wSe0yta/WEEL/t4W5R/QXpFLzOEiU/GiPvT3p+a71cWWlasJ0mXVCcyz8z9+ng/+jwZP4zOzy/HY4U90Oq2kAnTpOUOre7N/VOL0/z8HUH0KhVamnXfg4V9r2HdV+dILDBwY/LQLeZPj8DyhiZeTRqj/GzjiY+0YeweUGr0IwSuUH5e/rrbdAE50BRool7W7b5bIAGe9numixF2O0qQfM8V0a93yTzfw6wQGo/apev3nJyeqDewLAOetJ7qu3OF8kuC59bmZxr0dlmm12m5UmZ2/XhX8EQt4Zzlq2bLB1MErNH2EeXNhnutQAdhx92DkIxDdYPN56VUebXLxyY60E13iEvNXhm2W7fdw8z5sxrhtI2luej1M+MW3hQ4mYOunytfX6V80tRLK1bNvituUKmtE0TMh7/h56pnytgjpnP9HU2sCRICz1bnKuby9CTRBQA9oGQ6midn2r4x/mjB2pm4yQKNk0eQ1bew50CUrdYu6pIaK6wK+ldxrHqRKKt+nnOsEpuo+1a16SMSer5jREDU7zA9d5ylRVJOoYsj4nWL1y1et31et1rvr1XwYiM2y4KUZpr0z5pclVVt143lztnfVRem9duqvf37C5AIE0hNQYVRmVir2VwPV3tyz560CKS+cEmXQFhecWqlsSFpzKM+73oJVVtralqcdj/eYi88ZpW4vTve3mprC+yTpgvckqVHypfP2Un1WKGzsXVxr/vLlolyoTi1noCntS98n4R/FDOqZjPl7EkAPwtIUSe2/0H3N2f43nQ1BSensZqt01ZJ/iZRRN8+HdXM6lkhAX/6k3c+pqd7Y+84W2IDp40Pvdc/KM0S5slcHfP3F6F/oyWRVWWg/LPQ90/9d1s6Vlxj4YDKNZtjWi1Rb8+pnV35MX1fDGczK2hS/hKL5pwkaz73HFbcljakPK6mCnpzvBat/0WNHOW4lk7rFpEzKqDWefWewmE+WZOtHMCr6TqxPWG7y8npyQdMarP7PSRsTvFvDuGpmmqslwN6dFCe/kjrraaxabOfqODbhOO8RqB10xjmVuhHzTfxakpUEx2hvm64pVz/pz7xWbntlQ9jiznKJz1O2i9NQS249/jifr56P13h0LeRqrm1i3d315cPd/e3X6/GV7efrz5/fLj/cn2ptEemazy6vqybtHRR4apRnr839WrHuuxYKfgp2YemSnVeCnIV3+2Q9LLJWsL1s97IKjvs+9vbv1x9/jh+qKcyfrj8PHp/fXmhuo2EUn9NC5BSRSrcwww42CbCkkftBpblBFRlMiNEOK44ra7qXG27q7PXSSie6yFWf79SrjwqyVPd4n6gbFMiaKVLtW2lMF0+l/2XXy+1Ns+79suEZZ61NvWBHzDFYuHsaTXrj0rL2tmGurUa+OnqZnQ9+tvoYXx5//Xy4Wp093B/+2VyqbqYkOeIkMtnFQxYKpJV65XV81ZQoRqt+OnQPafV2uHU689Hk9H17ceHv1x9vhgbAXuU52ps9UDASmtWKWD24YrmRaulEvhtw1+wPqG64c5Iio22cWIY9oY6JMHW0HKFcvXacsIov0F57t4ApSewm1hrMdoOW6qJ48RVQKjHWvughF3VUgLDzeivSul+ezOaXJ0/jCaTy5u7ydh23F9O7v/2cHF5Pfrbw41u1Pp0C6rVc+dY7u6vztWNv7sefQ7A2R1aPSFCzhmdYbVNdsMarpO2raUzsq3lqZSP5kjsk927ToMDJLajPJTy0W6LffxCLbYlSjdjeKE7znTsBZ2PkkfKngik8/Ji1OBj/5qszNsrvVC5c3UL4ymmyj/G39pefaUqshepbKgQSdkgaiyqCM7k9v4ydOlt59Xk8ubhbvS3m8vPk27v3f3txZfzSY24a9WPs622ZUxRLhZMk0NFbq4cJYuDGNp9VoH3haqNpZ4BNZFVHaE3dgYX0wwrlRWb1aRVa4YaON5BaO4rnebaGOU0lgqnL3Sm8SKkTqeoPvgVeGVx7ZziN/ys0ALBpV9C/dgCANNVT6TxbPGQaXPNcKbF7kv7uQId01qil2/4WS9E0XTjdkngBlE0h7RcMnJprXZ5r/azobqt2RYC7Y3Xfi3TNsnVraVqUDkwqi8Zt09RZLUWw8H1DR1hGw2bHh+WsT3e+2j1i83DcbQiWqRpE0Nrlm8hONVkcIIwT35wUQ5GTEgPB7SoV/qBs+wjYVOt2sZtHJ81kLLeyIY606LK3K7Y+fMD4y6UWleB8k1awWtsqfb4xQJxSD/55yt95xzm0iNnGTnLyFlGzjJylpGzjJxl5CwjZxk5yxdzlnVMJ87wGcpznxH4RHU+6M4mh6kZAjpjyhsiBzri2mtW/WnjX9Sf1QVLEFXP6q+Cc3OQi/oNzPSFGd/jnGLtB5rnZ1iN88wO5fmD7usEKl7SJeaMWpwwynP7qVGe3xEkZ4xn1jWXoNVX+2ENvL17NfRkqolwIIAEnCXmvvvmY4c8lEPajlOKr7o3Y7QZQf+lbGv1UwXx5bNNeKOIoUra4RgZ9HNthiu5tgo3Wq/w0hV2wq5VKg9tBtA/7d32n3611Up1me+zdOpbou57SJFEyrzZjhqYGsuptogmiPxbAXrqd6Bx1zeONa3SzeeMpqX7lW64zau/rCtsy8iTsMLEl3OE6b8VUJgQ1/+yfxlInYM0EXd5wbWn1X/ZOehhF5Br0yyHjOnNKnIBa3wFfve7Ue3EDBPwImjT0Vx9w2SoHhQb5IIkSpWl+1/+ZB8mhnGv5iLM8GWFiZ70fnXP52hmVdtaFd32mlp1R8+MxmpAfcVbR25+3mvlPeSXq68q0nlWcC9KVH0Pqq/5bYdI13S5DOo17Wt5hsN9tg4dIDg30cCeb9adzY8ukKjAqIKoFgTpVk+owv6/V8e3lvU9298xHR2Ggqzec0TTigDdF1SFbepGK7usygcT22Ufwic6zBSakexTNeRMZ3A8y9Am4T/n50qgH3+5/zA6v3y4vvr4afLw7VL9p9gr0zu5/Ovk4ebq88P57efJ/Wg8sVpZKkc8055J96PPFw/nt9e39w+T279cfh5XjR+vb789jD+NLm6/abcyZCsCluFv+t3vR+d/ubi/vat/rI54XKah0ZKd5EjY+jQK6jlegplDFejpNtrftlotOJmmMSRMhTWvTJ/Co8rDTQlJOgiYA9F5JK+LDFOrBVC5eHK9CCVmXaWYKb5TOpO9nYWyDMSzOZazqWNKF0wyL/m1PT00xxO0eYcTx2tIBRSjJXjG5VjbBtR/pbewmj9awoRd4yk3LHNPKOybmXY9ZQ4mHO+syAlDXpJQjXmwY5rLUErnq8/XV58vH96Pxpf/8qeH93+bXJbq6C9317eji6rpi37DDcgFS6vHepHmuUK9RlucF3KtJ9obXkeD5zxTp2iS5/k4zwfbvYb/bEJO2XIPf4dS2VW3lVP0ApF+1KYKxpVGz6Qh6j2JN7uKmirYvBpe9qjsayUvs81VLE87N8dneGo3eW6yUV3WKc+UGbJ8CsejV5kvfFHmJhNa+ZLwsf1eFu3QfipRIr3ouurrpqhDSWAZ/qlagPTG/5tU0b2HcpxzrFlrJB69kzMdzZl5vjxRpUjNf6K2mU+rvwxo9MKBK0f7VyBLg/4aMeFtr8XJLpBidqZ8l/0Cnu5/sP3tIIcUM5MO+tQ83Othxhqzjl2pxlqZt3quHaydpnJNdZO14lYN31RqifIOm6we1R/17/27qZilaojaWjsHUT3qTg39qBChDedg7VaicuxG3Hlz5QnOcqexmBp373InHSlZLcl6jOu/S4dx+8Byb7qIeKBv/UBdMktEgMYS0R8v4T7eg2VhtNON0lZYTwf9bPdY/W2ty+rP0rdI/V1aeNXf7UwhV+eXxsPnXrvcJDr3o9YW3xZyqgyKYzyn2o7pOanx5Mvnh9vP1397uL66uZqMJle3nxVeLDi9V0WydIJe8eTVPpeTUYKikWBneK7y86kfCrclrZpSMIfjbkIYhuxSVQpqnQ1tgUQ5K4KMC9PtTLlQpVUzNs3qDUx1mcgQUNJwuQ0cbAAX17NS07fhXQEgVBn/qo0VBrXfFAatC5D3mM51hSP9pKNe9HeF/mAZcqIfqpAT+2Th1zaWkFtxS70MYITMCJnHAZlOgrrns2SBfOkyTp7w84Pua6cCRUQpbPWbnWjusr06i7KhJlT1syWAtsFMNq8dRTpDq/WUPUoKod1WXwq+n3CFboSggpCzFCOOfwvlcj2xwx7cYb0Y56IeGO6p1AJNo5T5lhP2RxFZ/VZG57Vufm/w40+0tGpZupjImfLXKMtUt1ekRzxUI3q0ODdq5AV7og1tmG69sz8/d1/e6qv8XduNRTVU26itc5RusGybSY5iWh5xfqVqdC4RsQkfGm9P7fzq1NbmFQ3Va2uaDsKmBueVXGeOE1lwuKJ35g/VZNC1rY/4oSBElDkkcg5LzAqjxyhdOIwMeFFPSwA82v8mrIOSSzO9ws5mSuIRW1xbJggwuLe8q9UWOve3agsDfISMCBl+v54Q7qv6mpDwEdjMxiiUf5aMYfl8wyg27pytlnrvy45JXdu9btSypuZMru0cRklScJSsnKZvzXSWjWb9W/tNxXLNnWyerebardtjw2HV1Jx32CT2ZZt9n5KZi7z03E3T1mdKc3OruVahdveurPx+A9IwcwpeKz9FPy+adV/Pg7M0ANmdqFd7pVg/pRlTOZ+pcqBNHo0iQkGht6MlaJf/lwutKrt0tsTvcBXBNILp8YFpTV9ZCEBtTzvfksSySGGMMuNm/8nUZKqeTYWjFg9pGltjxkAF49VjC+CcRhOF4xGtJeSfsHIxXzXaqu+0WE/tQmimb57s3PslZMjPrX+iTrvsfBOklpl959k+HA9fE/f9UPteu+YrcdGbOcb2tJzyL0fXk08Pk7/daeu7ffzy+UqHvX3SP2ltuGl8X6iAhuqxTIDkPNmAIdPS3IG6vfSyNU/uyRO5sPFi5kE74NqWb7f3f7n9MnkYnU+uvl5NrvTcVUpFk3bR/jWqy+B0T8tzJHaDyj/qkjvNJZZOuV4ch5ZQz6MngCKe0nGeUnVC8/x5fWU1UohG6Y6P+fMFS4oyBXX+fMdw+adagB2jKZzCQyi/wzqKElP7LlOHytRAcnLxm847XGaH11S9Lv6ha+F8zHUlj/LX9lGX0Jnpih3spg5nk9yKY/2S6e92F2plVPp4pqoLbpCS8+vo6nr0/ur6avK3h+vLr5fX45YGXynfR3flEHUtbj8/XOn4a6f9/vLj1Xhy/7e2Dkr7v+tQEM1zNp11nI6SGb28v7kaq3QDD+PJaPJlrK+fj9SltUZg5Vb/64z1qOri7jR3p6F9zstIrYAGuupv5azE1TRV1D/HjfDd29lMhS+Wsoj7aPGubXLEkkYEyx2m83tdbKAKiNX6jFTLI3/XhZXLsWPzkbEtLGBunBsh+74QOvuzDU9TwaE2QLL5VJIE/Nx8l9suoYw/L1MyYm3sgVyXoNd7ZHdDh5oSpCMI8f/9r1QTABN/r/Tl+tFug17Ke5WdAtJOeyfEOquEHGP7USO1iskIKrXp2uxPGHPG8//dnX/j7AnJ1uLEj0BVULoO7ygzOLht1Qlek+wqM7nOTYRhgy4qzyjjvvRcMk7mHX8uTaP1K7VO0r5hLfy+wTXU4Ub0LNVlh86QN8syow+m/wHhfrPRxiu8pabQUev3ZfMlnRtg2mT5HVb49Scad6Rj/zYVFoIGYtvd8lA0aSLqXC2t9BrtNBJYjJwQ34p9qJ1EVQYVSCeszkfRfyvfxKwbM1bo/JcnXfFgPZ9oqind/vVvdU2lUaLDZ+uMWKqqEkuReUW1JtWsqI3R4jaT4TMFDHeIo0yUEPt+fPVwfzsZTS4frj5PLu+/jq5NXp/z0d3k/NPo4XJ8PrrWziwP57cXmkE8R7lMFuhSJIiUxNO2TbCWWyzAq/T8ZYoMp6mcat1Uyqt1i5P0qmyaKF7T+J04jSpoSTSaWGUIPz25ojeQaVWSpllXF2WakqqjRdQZN9j55nIyGl9NLh8+XY4uLu+1vmyKVc4fLUlb76LPOhzJXcFnNsEZ8PLxVp+k+uf2/urfLx8uP1/c3V59nmhgE+IRVueE0aqwsSpLN8pzzpao8k66v7wYnU902h2XYXETGdetdf5q+1dV63B8aRj997dfPl/YilAP4/PbO5205+rj58uLh6vP48no8/nlw+Vf7+qFV3tnXC3dlroEQWeDmxtrC+jyTodlfcYswYi00qB/u/rrw/jy8/hqcvX18uEvl38bV416Lf/8ML79MHm4+nw1eRjfXZ4bFqq8JxWXotoad8W0OWdXYuBv+PlWNVywDGlhHAkVXK5mrFWUo3Sp5pxa5uyOs+dVxfs1Wk0lBuE23QkoUlau2/bYm8r4BZJIf8P4hzUvq9vyhasLMBV4bGr5Mgsm0wKTNHT5dacfehJzccs051XKmDLRTgXcVkeWFoiY/Rk5UzIlw9Q2jglAbnBnuXJnzVh8wFxIVcdm9Q0/21RrWChVNdalkDlo8vXZ1O10ekxRHCya8HP5nGNueVrTY4KjqmKiOt3BBVpd0RSeXSxu3qfVJQZ3/BsvnzufUB36IpmKzBxSlMj3LF1VD+cqWxGMpWWaTWMNBebZkmlThdmiT7CYM0DnItWIVCNSjUg1ItWIVCNINZoUQ6xocvZ3NhUh4UgVRGlSjvoC1CosU9qq1LCpBsroKmOF+IqFUg9dORHJqjvPuy2krFRsUZVqVfP7M5s2nz7oaFr3a2WHzYjn6bLud62WUZoGR3e+ov3e3TmXEXDlr2rU6O2sasPoXn0RhfNU/m1qeXlf2epqvFD3pe9XrUc74VtqEuiproILxu/Q3MBR1WK/fwHBJbW73O+bC+vsltOgwNiZgMkaZWfo/MK0m49027/oQFq3/SNI7zQb7e4cjWq1TE+o8GGo/Sp15qsSmLmAIRpf8/S63yxT3DYAxxY4dvzlFV14osCdPxtzMMd1AxKpZFxf/8m0mgCX8utltcbG9EJD3DnaEpT1dTZ77d3cdpf7HlVdyl3pvD4I5XthblCId42Y6P9n792WG0eSRMFfgeVLKack5VT1ZeaodtaMKVFKzujCJqms6T2nTRkEQmSMQACFi5Ssthk7H7HfsB92vmTN3eMeAVLKysyumsaLRLgHIgJx8fDw60CJBko0UKKvTYkcKgRKqiP0f38JEYpsR7geiJY33kY0YGfH9OwDd6gJg4ZFYdU22K56Llrr16JmzXqk9PpeseZc5K2adwQoI6ZU91uZCakHsmaFJ3Dnw+pNhF/Z9m66P4z4Fx5xVxOyI4rHSwZbBfYwD6Msk5miAxiFv4miuAsdb5jIQ4hbSOlELYgmFxJwyZbcrUde9gxgui6LCMRtyrjHWLBaQMDaoM3GWU0OzF1PCqfm2gLNyUZcn5oSHjl6NcY5+fDAiqIuIF5HBI4jFceAS6/sV7jwn4Oxa0MUNuYhiIrHPtTD6JdSewB0mB7zvNKfiv7K5vuUn7LaA3Jn+c/US3Q88t7u7B5Z+wx/4RdOIWhfjxJy2HrD1hu23lfYes62k5khXnirtCwnxkWr1gokdprnZevsSADybGxZcBFE+UbZMJBRy/DnGjZP1zyjVFMGlpdtWFYvcZVgKqOQ2ixHkaqL03kTzG6RKDmIDmmQqPOy3gTlwRfUAYRfBqlxyKrhLculHDZAxRqEDw0AQYPvRcZL0OlgPil/GPBOso3VrmzyDMShFC7MpRQKZ1EKBbIoRUCdcX/IghHSoTHhfVnqOSIvaUxIb6KoC95aM9eHC+CyLud7DDgkUGo4giuoQdivgDxepKJiRXtdtnaOEEWi3MgtAQWLtudhgpfUJorh5JfFuHqNce+moNzg9aL8kYkWyFlwd5VbOTrE7n6eYzS7aBd8lHNrQLNsnql8R5UZQ6MoMw8OZ6Bg1jCflgWoa4QW+UTKOAtC4uEDR/ctryldklIAugVg50cwUpnlEhGJPMUAXKTxPec88rpdYg/6R1Fk5ZOLDmiIQnRNW27ifUKUk/pIYs6YyLda1WzBuzqsRgFnrFi5k3QuPuoJdRDvyq6ONmCxYRJyKTaiHbM63/aPPJa5NFQoViQ2ABifIIQYMaaClgV3q7vBtEHO0SUxU7aSakYbpilEE+lbbIScbeAuUarhjNuxZAwWYhBYnKohcnIHR9p3z2kFbNn9PQnW+uDOwaTRNedtbHdKRacBvGe1iC8PRYUifbUOPkVHrIPMAZnTTIGJ/tgHpYuxaiI+MUruCBU71TyM/ZL6JOeWo4AWI2YIsGOUD7yeNU1Lya7pyH5mJTrPo0bPIIbOqjdWQfvc1s+G1mY8ddd4xik6hylgHdRW9A5nnlb6WHYeJCO00qcw6qCd7ftelNpAJufgpSeHRnLc6myUjwqrOW4L/5NzYGq5U3gieChTFBa9dH53D0qSULmnow7palXT6E8fKWckC2Tn2uvsRfTSq/hwJxjuBMOdYLgTDHeC4U4w3AmGO8FwJxjuBMOd4O/qTuDcBzBW5AsuA5N/vzsbL0aTy7vJ1ehiLE3GLyfzhQGIj0iR5+RRKZrbohE/8wxNboh2PsmfQPPi95RfSb+cPoHlfPn8Pp2+G11fjy+VN8D5ZHxJ8SkkXANQ57VmRcHzxgowJ5qWsroiv29h3k/Oxjd3p6PZmamDYPoRPp5AF7PR9N2fLu9uZ5c9XDpWb/08ZXVmP1LPLIhlGmiez6WDvQJahzI9F2FF1lGKz1P3FZOCXENM4u2UUUwu1fuUaj8tH3lNRykES2A0eBYLsuKtekX9pAB79JJowGqeZ6qMaKZMWE+yYyXk2qG+SdiMs4xM6FVnf+TLGb/vGvSpya2ZVBpB6nEMph4v3bceremh3+ZrH+3vnPOUVrMzX0/WMDfWszrBtmXXdktO05X1bMxhEwyb4O9tEzgboBbpGi1agAF99j6YTU7fYRJKyEqJiQ/mOoKKCRQv0rKxomHhs/IlxIdrchMirmkmUnD3a2W++3aTT5pFLR6FjGkyzZko8DXleoMP0k+mAiw4Ay1KVaY2Fd488hpvSBJeNotyqt7oIQ3DyLQxu1qwTnyBvBVd/C54O63LrHNMUBCjZRzW0+m6lH6CBqajWCmwrM97nKvUYjbQkbI8j7MaZZl8GemZJ9KLCwb1FwYyvvDbtYwviooOl8fvwWMBdutlvTWXdQdk3RM1HC6cTF01KV65FtKaITUPFjm3IaZFCQW6zo31u+q+s3BduNU7NXltiUHxDCQs07iCXAW177MKZt1k8aceg4i00KwUX1oYW0PiIy6v5hxPIxDY1UY2hxgLQBfinsYJGVs5Hka/xNyViadmrWQkU7aVMdxTe+GZzOF6a8lne1tl9oKksxYj0bcsL1fvdeDVlV6cKpKrsxvBCVPWqbxVem4nG7X66LDTvpbBqGoCRrFXoKELluc0uxKgWBP5aLZnZa1PdZXVk6EAapLNXdeiHiaFjdw8k8zcbr2Cjfp2iuqz1XdZu8nOnlr/drvnIjmQ34H8DuR3IL8D+f0a5NchvTwtNy+zM8iyBVzt2n30ixmVcy0V6eb5UhTc7Hcb4pdUHnz02/UlQNAZz8Ujr7c6w7jGhI28/97S+BDgTx2zvCZtjP+BADNToEG2OBuBuLahXXX3MdAZJ12eqnPNUxU72zx53SabdomLqeEpX/euEqQrkGMXK3BTZxBn00aM03ITuqEB1KWWCDGDCo9GPzNuWrHBCA/hgILfQbCMLnh7RlRkR58v+B5s5HNASOW85KupoQC+h9lHGG64SJE5e9SqLVpxUTdWZ506IFCQGJcTB0UqNunYWmfaxxV+vu22vDZ2Lgg77/J7kedGy+ZD3ZWE2B0gS/F4aaLB7ChhPsMp1QOeWhRX4RwdIUGApjq7TE7mfVdkFkDlFPGGxJ48C/yjaNfWuHhThkUazeaRcQ5OsFnXOryi6Qf9lgjfl9hFeTYZXc7qmIXRDJ0n1YD57AGsPJCpmU8OF6NtjkGfFbHTUIiQaVBNK6IYwzUK6TIQp2VXlcWilNloJPlnWabfc3BI1hmeJe4LdboWj1wt/5TlaYcxYpxSpAvVhRwSGQDAEdV7PaSKGupWGtlnxNL4L0udaWxC4Ij1gzbIUEJc0UdvYExWH9ljF6DKxEglYSIg9WGiGW+qdmtVZzIu0Mo4L+ulyDKu40vkIfFU0G2EIEpcbENuWP2A8BGKqyUkrEO60iFHZxNPMBq8ovTxtbPHtOsxrcNwzmt3b720AA55Y20f0vP2zABibLbkvKz9yqTLmA1V75iKOnfrTYp4LcHe1Bi/Z7u93QducOAGB25w4AYHbnDgBgducOAGB27w74gbdO0EeIaMxC8Od6cBLqMQxsFrW5auR3m+4JsKjVAcWhVD2xSL8GgwEnlPwp0XVOxWp/hb1lDmnahrjWe/2vQyu3kOybF16FoTkU4F+5vJ4dWZtsPgdbuLTsjOwQpWt+etkM3zikS0T/ESPU3v/6QXfcnuD0AHB1rNYDTb/M1C60UWy6cGz3McGaKB7645WHxBeG1LwQaxaaSoH5kGZ9iiQAxLbK1ND63sq+H/M4qpg3VHUTXMzsd4ZfCGsb8qKGYziyrI9443YIae08vLciWK3fjdFdB6bCTN21EQDrtpzorn9Gpaq1tiHK90g6SRcurxYhVCTOdJcTu7dJlAA3X4S73A4JdnSi+hrnvY7ezSYV/fs1zgmSapod9wFO97VoDrJhnjpzGqsFegMRxjwzE2HGPDMTYcY8Mx9ts5xtxoEHm5etHp9TYvV6es5atShwHIy5UTRUA/e+dDXq7s6AF5udobOeCsZvfttGxiNmoWLrRS60MqsPdomW2NN0ueWUZkICaOVwZGb37XNMwV5j7wEGq1QRZqxlXE9BB+2RZtZdNqN2HsuGhdezWKhUgTJKJu/vprIrZjNi40OYu/EykeWNHRmRCfzQBnIi6i6E05sNpzl7orQAvFbMjKmjhpBVZKN1CaDrC16pa5aNZ2uZ/cAVQQMzLaBEs+1PyR105TTaTHXWE127mfvJfRHHbpsEuHXfor26XODu0akNO+ZItebQ3XCxH7p3V5L9BNPxNNlbOt1G2BhF0VFYVoBcubHjLxt+iE04GCPx3VPOes4S+8ExdF2RUp31iZSwxE+7778KbhkeL2MgflgIPrGbrfTM/dc0HGjjm65zx7UbfPOc+gc4+i3V6WK7MKAOFEmwCA0eLCk7TZtsJPANTq+oq36q2+8f7N9Nx1JcE0ei/s89n4fHR7ubibjUenkOext3N670n9v+6Jr9SVOi6juiZCa1WZ268j9WNpuyitEl2BMA3p8Z35b/7BbhamguXbVqQvIABnkENcbDjIZ+pH9C1FvaHObUE/TsuCItNpCNxYxUdMhI6pLkaqbcNeaW5NBe6ihJ0yINcGlG/pVZnxHLaAOasxq+boenT558XkdH43G4NbLWSmPBthgkf1KvZTpYe0q/OfVSw9B2imQoHfs7yjVJN1q7lM/VnQx2kpDI2U8CvOmq52qKfEeJJIAwZ+xU1PJSsBJTerc8GbVmcjPyNDK35/D14Oj/z/oej7GEHG/eaVNxEGBBMs3xNyns8ho+SWMp8HPYK16NTemDyJLYmy9JOKfoWAK5EVYrVub9vUhJTxJrovg9iwdoe1+9tYu866FcWy/PiLs4I88rqx7SItiJQRT2v+KPiTZban81noov4VMV4mkqtCY5uYISC2H0aFNAj3uolQ9eB4DtoegyY0HPp2Ue4JexjQMEfVtYp/jElMYb5gryximLFf+Yy554KgJGPpmr0syZjMvhudvt2ZC3/pGMZz7FF0GqegAzKxf82NwClgPsgBW13Mrf6BfMAp9tIwy8PAf52BdwZ9VZdd9cL7O6aD5/9aiuIC3pa98o/wphGrYlbm/FmO9XZNEXgoCI0gEGT9HKUp2Z+3tbCkCojDAEiWZBKB8EmRKu3gnBagkZyaTVCxU2Vuvz3nbSvDIyqQJZU1z5Y/AgIj1ftDHodSGCD9ubCU98xVPw3GPtjfHBGfUm/9Cyj0YU+zZFDdX/ttwXoWEYlWw6Fw4Mb+uWfBAko3oK/IahVlZpnR6aJ+/oeqR8XL1A+xkVasHY2SepLfi9fu6Ehpk1d7ePBO7nS5Mx/sPlmrbjdzMhCAgQAMBODvhwBEAv0cpWUuQ1q8NOhPVCFnY7b+s9pyKmaQgvtZxvPcXsPm2VIaGqC1nwyw8ZM5aoSb/1GD7TSP8h6hcNG8jgYZS+0Yx2J2xzhK5mTU3YklbLSQYaiaKybs4ZFATwWrcjVGvyxEWjpLmidMkWw9q6pTb1CsdI8WaGV/vhVbxlotP3lf6sRrcfSXndfb/cmjh+U+LPf/tsvd9RxH88TnL+/xewglOl+MFrfzMQiO0b5xppJfaAnrQqQP3DO/bUBI2vaZAzePUfaN6nedmj37VxRFa60vgqyZxWfXupXq9G00ECqNLYyrNAJb1naNBbDNZXAA0bHXBsQduQlneQVf8Jb6JyLGNZFPv4BFec5SrrKoIAC9np1kOgoaeRsG2nq0J8rOjaOmMMbIyc+wW7Rmd1I8ljrimWmNqrOCoRHA8nUjcxcCW/Vh7GU9mjYUF45aDaleRvohVhUlTVAvZWaNYYDbTMvicWMYjzt8dFN8IGhcZFciz4Uuo1YePTRThkSEe4sQn69YRbZMXC6yunXr+nHNJTVQPVQ/9QRbML2uVlzO6hm/R5MSbFLHVFN1uYCRtv3xF4CCUyMoRYJYEGqgWtHm/JRiZhPpoQZ6IlUM9GagNwO9GejNl6E3Xp4Tugy/zIWM7J+Qn1O7xgMqgUtIPKRLEPjEeOv4vMzz8gkraLz4J2FYlG0Mgfo18hsn9Nu8TIPkfztKhfFN7N+nZVHYVwsNNVZfBLJInfxc29hICiDcO4YtBpOQrWkvyN7nSZW0yMfn++OyIMthPsLEByMrZT56QJYwXvrJDhPhPdIsY2xUmFpdBgzd3MnWkRyUuad+Eg0VReWQhIHU6LTcbLqCqBRKjhxA3xSHMqOuwM9xSiPY67MdZcA8bud5t+rNITTsrWFvDXvrM+wtZ1+lGPjkZfuKgqUouQ38nqfaz1ECKp56iVAJEVEeKDkOoHcgYsKdEIOCnRC8R5Eg+xZbfZF+uQgjmrG6a4ld5ONKdczIVmjkjQAFsXHyN0zTr3GaXIUlL8RLjURGs8no7mY2uZiAaTU+zcajy8Xkanw3mk7vzsbnd5MzhZpPzsZ34/Pz8eniTubciqHml7cXCn57PTmfjM/uRvP5ZL4YXS9kdcuyBs8F0bSsUAYbF7zgtX9/HdWCzUXGx2i6CAD1lk7eSjEHpO2kJG60oq4oXlXEJMyDGjtOGwpuLLK81aOddmGEPBc5v63AP8Dc4XyM9dJ5V1DMeLJMsR+1vevF+HoyvrudXt6Mzu7mp+/GV2M0my0EP10zHQzrwrUFi5jqeCU81LxbrdDrndxNrDtoBGm9isbyuF/sgZfBneikxgcdH1+a0rvAaV1C1q1aJmubFE0Lse4zBbdb1BNjYlMqEGkA5ZOWLVAeBM8n4E+dSB9mvMpRQXF7cTGeL2C5orfBXOZ4m/Mik7WZ8bCAts7DHaJXh6+sRWRRF7Z7A2BIOcHCtc70Wm/wcphaUznJApDVuEV5HCPA1FuXJs+qvevurTVJLa/8pYcAtbbvQ7tEywrLwygjY295IU8TrHABM0jWw6wJhlCyNOHKwZhsBe1Ws2I29JaM7yifqPZKvYlPP+nFg3HSiizcpApjetL4mwmv87VYrSCSXNDxDsduwSDzBMktOjN9cnL32KwMR8BwBAxHwHAEDEfA38kR4JD/itK7HlUQ6+b5JwDadG8hQA7FCHX0DiOKbAtY31wRlAn6rWh87gLyt0fQ4F9hcNI9I4y1EK9bYkKBlvmCOC4GhnAAaQRpxVAOe6puh13De/oIYPPL0kfpR0uhpWEqSuo2zbmHcjL3AnTK64fGevTxM55ibalVUxOL0gErd9P3HXMa6/eiERSNyBZ2mZWhdUv216b+GpC+KLHhXFE75pd6IffWpgRFAfq3mVTMyGpPE+Wzsj+Y4t66X9nDXg37a9hfw/76bPvL8wVEpXbz0qweOi6dt4SlktzLIWlrzuWD1Eo4sdQUCsMeOgkmDdjOayARbpYCCXSSBUjYomyZ11Z07UwpWk30W1RaR3w51GcYjLveiixa2/tSRBBMjy+tHDN+ldMzK7cgTSKxQQb7aKrv9QUd5v/vaP7dCC4sW/FfHPnWD3CL3gBvoWo3Qq0Nt4cAQdZPKsgzC6T0mF3RWlDljcGzPkceeCGEuEoMgkQO+Vic2EisVzdea9y7M7bGCGPbPNuOoKRBcRpUIEfR8vUjwV7wFkdf6dF9B24P6ZEHv7RHJz4xpKxOONFg65Ms5jzr4ePpfnpfjKT/sRcI2aR5r8bU9aoDO8LfBuovp6VQQRexZAiDotphMdTGCTephwnVbYgggyynVwE2opFzsGHVkfoildhU0nQVZS+dZS5HdJP+OivSyU/iPVlz85Pcl13httKpvF+d/0kv9S4fiO9AfAfiOxDfgfh+eeLrEN77st40vyz6DWSLN78iNjN77Fnwrci1Yt4tNwIjfvv3B43wn/FXq60crRq8XqFJG3Yb5f1WfT/pLmlfL1PLXt3nMJy/ZDj9oexekF71HIq/vb93o0RH0nS4aHrqt/PahPd6bMkedgvgzg0iAg8UhJoY1G7U5bAnYQjn/cGW/eDIUrcGDctP0jZfKpCxaMAZAJ5kCfo8XkTBODkEVV+2Mu6zXtzjpvUmhzwmwX0eykBKXP1eJYrdEZFN/GMMiCkLkzM+DRVTGs+uMLXt3bbDWhvW2pdYa+46Yz99tdRK5NTkusSNinQN0RL1WwWk0DToqsI49FYBCzKqKvhncbt+Zk59vdKxoLtMlKa2tyx9yOqyMk8Q36bI/OeLmmWCmxuWgluG+m9ZUahzqS9/ExiK/9SVLT/zczrZAKO2od+nZa7vPgT5UWQ629DbLn8YSd9/p7Euf6Cby59gO8GIFC3tGDvTVH8p5x7a5Q/EY9rFXOa7p0zQXLTMMxrTBj9UBO9kcJOwhq5rW/tqRM/zdpvz/iRZlXudgpy84ZO/MgDu1qt2KlKgt53I9SR6OPsz4vQ4mqdIIdVlNIoktqriqQtWF1X3HZ7n+AlWvvJl+dEd0dO8LLhMi2rTXPus6CnixqvIOC7+MyfeBKsascy51ySs9shjMAXWrpDnlY6VER5l8TAaiOtfrVH8Z5ZpyKuQLL8u7bu7J/VIy9oijebZo4HSuj82GD4q5hRQtDqrd0gYYtXtGJ8zDvdD+VtseNGYnXcm0IjIzLQFsLfWWZl2G/RT1Wv1JZKdTLRlnfOmcUVnBu5LyrzzBtMrf+ZkbUVbg9raO+sUWFuWKcdtqzPhmTL+2PIi4xk5o0seS+TWCQNPcytDlnn2Fs55WbTnbCNyK2UFwObiZ6u6i8m5/mFBwaas3gYA1z3cgV2ybdkZaVd0wfZGwLkAD+6+dRki3RBt9ln+bnF1aXqtnryRecdZ5hzS7zhEYv5FgjmLdcCf1ovq8VRzJhpk7wwEOgCjZG35xvsGAHkZAlu+sXbVJVvyXP3cch3zFKcJTgvTQ4LFnn0qHcNYX34pigfzy6pQPjmCzOJBWm645SygPRjopanPo0Ag2XOa+ShfsAljdl1m3O5C03q8U9DYLg4sivebVeHTMUFjWXmUA0A21bhilenfFfMiCkLGdZ45GySSiKlwF3NUGAvLCUKgo7sayy0SF8PI1CDWlLrLERLhNBVLwaa1WClyfE320vKXtyYAZK3gm4wjWXdJvYL6hP4GBJvqd2VGk37bRxdBbHqFUk2f/ZyenbsjHQ/3C9kRVzWr1tabvLYkUAAQKWua0v0QCfS/Y5qzLWQudFbdNO9W4ONatEwU9ikbQeBtYjfWG3eM1c9re81Nyzw3v6z25JM9egizxtc8++QjhjG/nB7ludMEGaaZfgRigyB62C6RAnFiNuuO4F37PlYgbHXnzveQ4dUiVsDrpL/JHdCoaJ54bQ2jg43eQ5wS0cuIU8K7kTi46LVkxvMeNc1MLJfubS4QLs26Qtq3I3WUOGfU+4q45kB4n5YMqYLVj2C2BLbvsFHV7pNwCk2qYS7/gSeruzriRdyUqD1FPENJi97M16yyTib9aI8ZUGU5sQYg59EA3sG91wdesfqBZ6NG5b4OMfLRIKSlll3LtKtXPAO2tS5Ynm8NZsYLtrGLLmpWNPe8rm3gbZH5HbstqrCd2zp3DpL5A29Ti+ZC6ljvySJJ8w2rW7yyupyPgVswW384r0qR60VDD3bYdsXRzVuQRLkEnmCLpz6wT/kJEUKt2cbftkhpARJN95sWMhWKeuQfW/fJO2YBZD+uu82yMFaCizK1Ut6Rc7Yj53BhMd/wKMtPOPe+E9GLugUitfsFwjYiZHOfYGuvUAv8jeiaimzWGUmcsyhyXFi49yLjpfXTjC3P3XXCc2cpLPtEexIX/9bUkZdogF8scyQJGuAXC8TifoHc4bclIOxvjzg8LNhEiaaJEmA600UWgwb73XyR6dAgUx9k6oNMfZCpDzL1QaY+yNQHmfogUx9k6oNMfZCpDzL1QaY+yNQHmfogUx9k6oNMfZCpDzL1QaY+yNT3e4RlrFkvS1ZnRw1vu+olXhFp18i5xd/zllf271MXpQPiofeQejcu5P81dMoNRb1m7dETXz6/JxA7jpgwCMK4ZlbANevJRMuxgBCWQ5WzAjmuWStDDMLPH/lSKQzsx1MZenLN2rosN9ZPVesFd9oB5h69tfAiaZfVGCv3+2KLbA+E9LA6bEUnLOH2ZLUuAwpZkNTtvNyXBg87cM3aRfnA3bTyjfs0DTLNn4map61VlWi8kcrtb/SfZYUbVj8o2IxjYEIbdFvUBGzcMeiLYT4snGHhPGPhxPJ+HN1znh3BNPP6+evn6v5xkqJo4Or+UYqrru4fr8vWDnp/d1fzhrdX94+zskP/rYVMdAt9HkFwSf0F8iceYHY1ze60Jb+R7jtdLyz8UVWrkJ3Ni7ZvUeCVEBOh2A1OTX1u9Fu70KKsROoEnO1aE0z2+mYxOZ+cjiBM7N10Nj4fz8bXp+P53dvRHALz9jTnYbANJ4+UKSuvrwYAbUM/ZjwVFYih1VYGuDxqb6uG18/62ozn4hEkUW+32AuVUaS/46vY+Eg3QFPwHIQdsoO4gc9UQ9eYxk6AGv8B2cyNHtBz3NtmmukZtqnbBYDodrvd39qzJ4aFNSysz7GwnEVV86ZlXc1elOwxGoRA1E1rpYjbcBAv+Bmguvxe5PmGNHrrMgvA6sWYcgdzBFrR61q+CR2SgZUImolGQJEBq/0In7zozK99sRR0LZaI3PoZ8Zf2gy/4Yb1NYqeii8FjkUxJ4BjNJDUz82uSFhpxn/MQCdEQndQpr+0Zoy0HYfZotpBPwkFE/sgE7AynRSLMXPjxqn/SQ6EedHjPn+yP3uuvP6zzYZ3/N1zn7kWx3hy1rHl44QoP7HlwfBZQkSd411EhAGl+Kfseuk5JHCQbpV8/6eq0qAkxPbfd3+BHeJQG7isv6P4MX4C8E7Q47KzCcqlijf6CNyGn6bdlYiCrNLptAqhvTCluHPVTffLMCrqsf/9kta8DWaikEw0UpJ8yW57/DX20eBghZ4TcaO1l3d6XuShftAFQglLmeZQ4YkjzuvwPnrYRMmxhgzMiE8watKnqmmnJQ8h64lBJN3O3qyo6t9U/F4TRuk3LjxCB7b4v1P0weM8ePGfgSgy/flTV5Qolby8ZPoi8T++5I/CvpSh6ETyzRHvaSKQXIOM5T3mRmXj2Bq0ugmgFgS06D26CbgM/77QBBwEsU1Wp8dBNRCMZyeGyUCs9GDKPqXmq2BbYC5kP5Se/fg1TcxBf4sNM/UpnypmlvNyyvN2+INsGvQBhqGScdpCLE/BM6bIiIOuDJOrmEcwz1Mkngc5YS9iMP1GdBrQQKh+D6Y/dukGYCoHaODU2LhDq3H9BGwZs94A5g9XC6oQ7La8f5YXihWRgZt51d8s7nmcW0skvIOPCKpzyaortN6tYeFNTmADg+klZCM2XYToRtwpS1nv9VlyaDch7um+4OGs8MSEIr4GXs+voVCBXBdvJ6Q7z9KucJ9dQoCw+YWp+iU9g1F+vz31uh6eb1DzK/p+yTcXEqmgCB7WecoGTWm8531HNL+J5qUkrG7/Ugq2at9tzkbde/OXnvdLjU7f7lbiLXeydF/ToBT15SQ+eN4rP7ehze/nsLuqC+1ZAxN+QCl2ULLedzMJKAj+0SDuuKxooNrZXvK1JAfKV/dOI8xhtglj9L/DW8j8xDo3aJfuFoqbJfiHPOtlHE52UVqS7a4JFe1Vm4l7sKxm1eg4WWGjrHS9iL7Yv4ar2TIezMmU5OgVoByy/u3Jd+n5avcU8Z6+d+yOK/wz5CEKXKfKdiS/TuItMl7dC7U1UZqibG89Ascsz2jH7fQ12E7W+Is9PJuAsdiULXgH7pB8a80utddv6NT4scVzEeHbHFC77T2THmDW2K/cWUCfkzoKNZtoiX7kK118caojzT9H50sxapLrdV8aBcxs4t4FzGzi3gXMbOLeBcxs4t4Fz+5Vybg7XthL37VGKUu+vG4TLeXind/9otar5yo6/ZQBWCC4D/DfheGFbGNoFTR+c/u18dZ6ynDm7yd5wVkyvXqazEQVvmnm65lmn4xz15JkROpQT7iMnDo4DCsMYnMJaL9ppmYt0a2UjvBD3LQSKasLUhRoV5jC0UGGsIoWMJDVUqAj/YVBfPXjRnIPnSQh5VsQjEJGLpkVdUbA0Hay9SiIIE0Kp5qzR4/GW5SCbd3meeBkv7lFPmX3xlMjpMzpTAe5T00N+QsCjr8F8SENAvYCD3ILxAi4zUZ6WZZ2JgrVqt17wNjqcDtypRELdpyhjqpAer6nAtJAjcIytBLTYmhaFjPKQesuPqsoNTrCpLFd3XSxkMV2UvRsu6rKr3m4xgIyzGT6VsyrSvMv4FYQrKVZYrUvfJsX+TdZTxpnB3jK+yZH+9rdbNxF8YCO8o+SOSscbJvJddckCThXAVvMvGToHuNNcFKtO3UZ7wufwpuVZQDwDsLG6jqK8cz4o46ysPmxw5lNBAlsRjgLwzhedRrF40LIKFmSWtWGdXhgzCKiSeflFYXrqsuJ1q/kM80wTtv8eEWcafJRzb4CKg8n3oXZDiHvbpQ/cBgQlnKG3HXqigVvswsTVBX0KmT0ir44un0DxYQhwbpiUIlMo3K1eLBYP61UcYP2qPylGDMRhya0yXzcui158FuVxEZ6L6K8woIsbdgWp5buyq6e8FqWOhVLWMKyZaHefrV8wHEtXwd2NZ5cMqLXa6OBYYfcUhya3RntRi9WK1328wXlePllz9+nhRX4frDyfiMahcgtZVHkX8bXoeABonhXOJHUuR/pSb/FzmctC00Xeesp3sQAhHje7uvDbDTcuqZE+6A6NeGkY7kEQMAgCBkHAIAgYBAGDIGAQBAyCgEEQMAgCBkHAIAgYBAGDIGAQBPz3FQQ4QoBGtPxog274zxYCXPACnOj5bQV8wW1tkawIyvL3JNwVxpabrsu21MUstA3bbX/6G+q7G39BpOujlIKAH9FR//wPOBufj24vF3dXo3+/u51e3ozO7t7+eTGeQxQukZYNdUHFkLVB0mLWAilf4NoC0WnRFznit9JzLxRty14k4sJ7h+ZJ4ckWVGB0cx3FZFJAyC/1RsTKSmKanagwHnRYI1gImY4Jp11tI6Sq1KEwrBKdU/F+8+5h2J4xbM6QLaXU76gty/xrilWVjyYESXJGLMDZQzbKMgAuSlXEf9XHei/vEuZGEy9SQNidQLcLPs4xuO63+yeOIlplDO2bcRs+FAKPBq/76LgVeG/rPtp9nRaQYg8CefK0Lu+dTFsKMeMr4eYh/GoC6M2mLKLzHZNN98/Mrll5iQzyKxszM5HzzO27jXFne6csMToqDtwzc9bBjykTYt/7vcW86twrmCsz+zR53SUGVZDu40GGKssv3pNv9XjM24Itd0TVkyQYZJ3sCr1Ukai0VSE9aasCz3nrDV789aiAVX9MKDl1UfYNpVduB0xvfOAiWCceUiC0s0/nmN7leUKjHcRyF6E0OHfZRYfQR/e0opBBlAXrZ3w5uqiQ59gVwuHm/h7jjFlSquBrSfrSe0rH0OHrAD+vy010n/cV2W3SH6zrPrifJWgnLXmWeOkZUiAIOtQjCdonKfLX00ukNjXnrRvE8hOlKLcF28HcRLAhP+sxBJHcM16JiKtEUKK/Gcle7GhGltjRjC7R3wwxKztaoQI7GlEF+ttQjM+OSkyRsBqHd4nlC3LxYQXujtrBE/byg8zl3QnisuQmy4IFWQYsrhZYWYAVtzd9bp+66lpkA2TmgzqgVBro0x6KvxjSly62KAO4XEUBnCY+AFtsbhfOj4Za3XiRrcxwsRsudsPFbrjYDRe74WI3XOyGi91wsRsudsPFbrjYDRe739bFLlBwHqVWMPevd607ZS3Ly9U071bC3S4+0r+5eUjv4na6aXrqVIigPoPw6gKmz4S6j1cbK+O3EC/jN1aze4qf39OQhw8aCfBeAzaXFG8iLOE3EivhNSNN1OItOEi/cg/p1SvPtCmvN2D87PMyPSW8Sm7rXPzMs3jnHKRfuYfsFxfkefnEccqtjrg4mKkQWVVuh6Kh3kZ1zbZnZdptzGYC0Fz8zGeGcyVYW2uOYAS2cXuFCxdkKWCld4C0oG+384JVzRqTTHk3/ue+seAFK1pIPhIarj2zHl8WEb7yjN55PjgsT7uctWp0zfOUtWBQaQsDIvIFoEMxmcMWr9EuZuP7Iak+ndoE18M5aQhJ7JDFHimvk/4MH6z+N67bFBWSJ50PurmPFbbsxF0Y/rHfwEN5VFXW4KvJjMhG+gqGPljuhEYGuq9ULERcrNS+JvfWs7+KXSPRWzKsdFJk/GOkCgkPX7gSKzDSy57Xk52lHRGW0+UYTMWEs6RcLh6vVL3o8aNI2wAfkFBwPWvFhrtPkk3zF6hCXzH8GcOIwseQU1kvdxLFR7zSomd4gAtf3Lf2e0tFGtq79mPFIgdnf7G9jT73Q/dWtL+K+DrfUzJS6S4mLV4k1uBOVo3K7OHF+guFVfUzXVF8WEE/YxTFuxVUHHyX3APqjFc1t++QZ7xpRWEDHBbnJSExd85QHDllorbJ3I7qQpoTZebO6rIKqbMFtcdImax/IWfQotuQn6B6fhR1WcDgetxEDGNYCUsN8VPHcndCoxqFitci1oxGuHVIdYN3jgC0q1VWU6BS1s+QdSKw2yDCaPoCQMiNEiWE4+o9y0XGongaZgvQSIbRBNh0iIqzCgNsEJxzB3HDvNl9l6AQuftVwu5d45C0q7/F3vY+1cXVZKzDzWL9jCo4EBMNX4sYa83g86XYCO2EC4A/dWXLAmhUWE/JyLzldclXLN2elrlayJfigbtLGxQ/OrkrVs9DzVBYwPeK9Q6qQOu06zoUxfsNyJaDivu6HO0pOjldsDzX2om4xoe4SwqDPCtzr/oYOtD5zFRi8VAP5HzDdQdOK9b9+GYJqQmtpQG3zUtRPLhPkSNkr2bJgb3/XkHbdB1jkyOIkGHrL+SoncJS+2rxKvD3vQWwCZ5NSum3f7nto60Ed+pCIabnwWvBDA/gQx3th49snoXFU8vuHpXr2nVZi581dYrU5ZEAAt48FUr7SQD00fG/IHBM7pWXeaub1GB7xGD9hTxtGUZJcJ9QSGxp06SjprtgpaJtxzrrKRHR1nn0CCTsUTb9OcV3KgNnIl2fktOWASy0GchcgDOqN6ce0BJ8xDD+7XIuilXOMZd6OLEYX0A7As3zTqnt5Nf4Y26VjWj5gm0bwvee8OEr8w5JpP1JEIsZRXj2BiYh4yUvVu3aIrDydefBMb1ZOL8MqxWDWZ1Y6Os9yKhc0mtD1H/rVeMetesK3VsqFoF7H0mOFdtbT18VfVu+p0RYye4K9rzct9j6sJEW9lEl8hqlH3CfvCnyrcNW90vv34uMy71+h7Jv+fttWeacydfvzvSqxZ89giHEhVIhAgcioTviLeTDjVr1LK71IUx0LNOI9K8HrPiW1Ej7dIrwoIKsT9rTg9MdzdRt1bgQOhWvvOuETGjrAPIIXyvBHjWXUFOmirJMVQ8rpFW10bGtYweI49i4F6xa6fzNomHRll9kYzuoYwd17KCOHdSxgzp2UMcO6thBHTuoYwd17KCOHdSxgzp2UMcO6thBHTuoYwd17KCOHdSxgzp2UMcO6thBHTuoYwd17KCOHdSxgzr2c6hjHVUsByHA0QYC+COF/1qaWPJ4jmZ9D3CO0ouQkokZtS1L15ZOqmvLDbk1S0f+snYO4B4lVETJYqeqV0+gzTKMkYJGb4cKGb0gaqRo2losu94ClE3J0pQoOMwaDOqjJXuJ1nBTC800K9iUdU1feZ14IY7WOTichBkGC2So713l392HblkrmlakTR8c/cyFZnZVgQWs/CIyBLlIH3SAo6psuNFTSX91enjkdWutnPLqPza5lzCtp4yj6iirLWRAUOkxFiXlpnDqiRdxq+mKVn1aJG+bhQoVLaaHwKVGd9fugmGVOyrZ9RpUqz4z8qqLjr9uj1RPFW6RsJqIhm5PrTtq7MljZymBDJd4xlOgsurBHPiNq7GJjK2PcsTahmB4AIhw5G2glwTcitCTfgzWgLparwa7N87QfzahctOKDS5fIsRofmAPXryAI/WWJc5F3vK6twIb7bweHh4XvFXN+TJKA/cEojsOqrCOHUW9atWquWJVJYqVX1WA7nndFxtH16kD9yuS9DZ4QcO9F+QWQXwBopJANh0W8Kq4ZEueB+8pqFd4mrOUr0sI4/VvfBvKln2093oYdw3TM8USwoVI79XbBq4WO7sTLWJXA/ma3padZk3etZv8lwnDCb2lrktLIzdvXryEI4gvWr7ScdJgItTPIhPFCqSdPs0C6a4+4QJ5cPxY9DC+cFmzLGF9BhVUaKP8Gk2ng9dsVBD2ztwDL8vyoat27daeEo4omlW75NxlweV19KbixT4pspEYdw2XnJrfpwDnioGBqVTyVr1WHe47hIOWsA/nX5CnOROFkd9Ma/4o+FOUNgU4N2wdIl3JMbG9UQLo4dyGfJzTkJtcTD6KYmW24YynZZEKFOsFob9CpCttJGbbfnK2+Iw3sfhZNtiTXvIiW5TXaL9V8LrxpMI+2q81QPui3/yRj9K2YzmwbjGa0l9ot5iVd02cl/IwToA7dRux8/rJgY6l/DMoPy3fgjctWP0F6fwMIvZKkBsQgNE6YpkAvYSFFih6HZyX9619QMy7ZZPWYknRvgw9dtvvLWT3x1y/5HPZstyn6zpQXnSaIlhHQKfQmRu9jXiJiBg1yn74qFDWGJU/9h7sUXxYwUK00QB2Eu6+0Li3zJ2s4TNKh5Vb8Q0jlTnY/pd1C5NsRyVOKbsyKWDnwKSAttMd1gg29jKgou8RwnmF1+I+lj2XEDSDYULOCNZ+Wct7SRqqpZqW5GjFZVYqS260MlyzfDKiiZXHKkISqxiXJWWW8p/hVCTA2XuVe2YDhI4/+EUHkvll9azWpwQ9eMSdgFFijaiu4eq/VWkjCZoV4U9/fBdup1eHrx791WDBpN780UzvS/1QBuHnIPwchJ+D8HMQfg7Cz0H4OQg/B+HnIPwchJ+D8HMQfg7Cz0H4OQg/B+HnIPwchJ+D8PO/g/DTEXwyeac9QpElfNLXEn3Khk+p3SjQS+DmYaMU3isTSdMWLWEn/Hq2cNTu+YukDJ/fxTZ+Hfe+NLhSB/jP4TxZpDW6HO1sfUcp15MvwtLvc4Dzk8Tt7EhPiWflhQvzr+1sar5zxFchFghf3ziprE4ReBOtSVGEuP5jIAMDGRjIwN8bGXBIwFdXfj53g8lII6p7C7bag47FKXHQkWAnFv7993vqf//9nhagwK8v4fE5S/myLB+m4qMSQZJ4X1KCslzlfKRSIcvHguVbc3/1gDItH3hk2vgFW12xgq3cmg00eA3Y2vFmqfIry+3+i5MV21MSSj0dbCDB9LCuwNGgQsiU1Wxju5xHiVdANRZsFVWgL9gqqjtfsFX04FuIh4UzxXQb7d0eMbT9sX9m4A93xcH1lunbnTcEWWQHyFuYM454v/Hbe6mpxkCnBjo10KmBTv3K6JR7ndLiyBdepCY+LXoZ1bJ/n5bFvVh1dRDANXYFKwuo0loNBJzW5aPI4AZWtszuBSCjwDlvYbwaG3YL62rebTZMMeQEN/EVgu55KPwT9M4UsnqRUUwMlluwqsIwpjxzRike3tZAbZuxUdPw1gSytWdEPTrbGuTR0kZPJy12DPP8Z2e2diLtzpoSsT1p0NGtadD0pf4K0Gj//q0R3mRrePxKrtHxee9DB3Nv9lbkVu8hn3GhB9UUrYsQjhcnq84fRbvGUCYumd5dNAgKvKuoH2OYZs4qHNQWKRGvxB6L08WoV5yRmcgy9n4BxLwQVcVbL/yuW0oCxx8rEIOLsrioy64yln/WsnPbtVGBvaCN2mfwpwzXJtlekz+76K5qd1YUDbcL8/mCbu0pv7eBWARit8T+RmPNTGsuiqaFYGrZztbiBSON9hUM287ebkdVNcnC86PPCDEmByKMJQ2yALr8urSpt2vRyHO2tZe4v+EiTHbfd0mjRjsMkRWQdWeVO+dKhlHdP1e7CsYCsz5jrqjkvGX58+vdWdq19Nzwwg5r+tI4rPqcpjCprikKEV2rTEeHv00kypoCAQYfsq+sYy6JBuw5bxo30JyB+0HZHOlwLWzrfvPcfPG72PhjC6rIjEKMhpcx+o0mSnPuhk1FDETd8dkvVU3XdhgRh6OYktYqileVZLqACJZcsadV10r7L5s4ejaaz3nFk38/7xXXWpHeecZ+21002pPnbAsptUcuRzLhMam+i/crWK1qvoIlgPQVuT/P4DVSJGgmVqTXylfeEdI137B+A1+3VG9l/RXsfOlRNJF4uGGJXdWrEl4zN/X+k3dXsc+hd2n5xt3CV7xecfv8QsDNI69rkTmrDfjQWVdA5Pn3vA7G4EXv7VXfQCcxDCEFrbLIUAwzZdu8ZPaHyvCs73le0sf18ci7C9r9vGYb3lQs5TJZgISWylwVfskVc5NxJN0uOVdQn5jbZI3uWqYP5vS56dqqa0dubFYZD3MqUtY0pRemlIBBPM+c6aigjR0jNEpYYJRNH+wy9v1XCQL6bqLyYN218PuKBDo2a36cXeojIwq8vpn1sT33uP5iO9vqu79hOeIl7bsXgr1hiDQQlgjqjs9oc17Wfi6f/cXDDuwp/tzePLtiv8rSaHIdQdMMjZ42ovUeR2GQWFsrWz+KlOM6BgplDF4RTlFrNax9z2oBvEtjVwpESXJZBiDZKwMAJ4QAiILEbNQohiLEyEeD8HhVAtWQw+QjBKRkeb41mBkv2MYuiuaH97yubeBtkfkduy2qsJ3bOndIoBf0NXfHet5CaieXNBFs8dQH9mkWIXyoZvIsSrSoxUpL7OVDH1WSaFdMJYHhpVIiotKpOM4XTRFL7Qv5fGjECraPHsrIqi4l2IGKhWXdRW9l4NX9fOyugrFQrs/gYW+rVc0yriVR4HJItzmM334mGtiAWRQ5LiycMnk1Db3dTtyYuvEiUcNZv0jM6rZnkEL0nhaitQdyVZ67m4jnzj5Z7pQoygKBkBAsdh2xmjbh3Qly5VImOmywQtP9Ui1dKr5atL4mAgrby3bIK9Cs5jnXPKvgjpqCq5WEhjchZfbsvR5cJAjecy0wdskh4iePE4mAnKXw047jdw+ajn1toex0o+shU90OYmBZMO8Bwj58qZHAoIAbFHCDAm5QwA0KuEEBNyjgBgXcoIAbFHCDAm5QwA0KuEEBNyjgBgXcoIAbFHCDAm5QwA0KuEEBNyjgBgXcoIAbFHCDAu7TFXCO8u2prB/u8/Lphao3ipsEISItFYwX2TwSobzOzC/DbsBTcylcyeePsmMRoahBhaK16Gs+yruJRt9x4H44TYUJPUA1JvD+tDBuEMoVhKIL86vbITPWTIPhp3UFgUdr7PxAGvHu+Cg3Vl/bVdER8TDOSzbPQ6datAofZdehoO6T/NTUmXhNwizAysyXdBPVH6g3l1XgRRrqYZMMm2TYJDtOkaXIIVTfUcs+frVgVHGLBGT1lNztk1XZVM34I99Uraos1GJHSwUq555SvtqZdu0VKzqWL9hHyXBFVOfxcqHevK+c37DbM8cGoMsf/Ap8vJQd7O9Pf0G/QztKOk0rxn7fNPWUC3rYW85Rtgb0OjrOEYIcGclnpGr4QkpavqfLfUU+NQLJV4mfRhPnhBkmEBpVTDKXLMS0dRe83TksUfwXUURQvJBdm6qnhBtVxEXHoVFzKL9Q1CjKL+TZPvnoqKVT8AmhnVK8iE0OokqTXRLl3UPbV2RnSG/3eJe0xF1yNADuwotIjtwCEd7ALxBKqeIzH8dFGtixyJd9R5qSrsTPHYntobGaeYn0O4uSImJmItA8ti3UdT2G6CJDqsGRBl50cxgYo4ExGhijgTEaGKOBMRoYo4Ex+ntljBymqCjNjn+hSBUSWJxtC7YRKdpR+kLVEBeeS2tWFDxvnDRPCmgIU1iTDbm5jyYTtChumncZqHAojUaj81+F9V6VS5kwyVh1mUxY19ZgWZAtmns7K9SBO6ZaiHAGgUCR19037XVokh3FEiBZ7+H0bveGsR9Wwd/hKnBWQMPLF817MIn/xrdPpVKXQJonMEo0w2+0Bk4ngaeY8zII4BqiY5/ooCPpwnbU7KKgIuirtXzccrHWXdQzqoj1EJLtpJjKcEdf/ULR3oSFXC1JSXbJ+lEGbCU9iWW1Mc87K8McBXCtg/E2wBDg9+SlF/VhLQ5r8W+0Fp11mJYbclZ59mJ8e3lzcXd6c3U1vl7M70bT6d3k7NXhq4vZze10HkH8QulSlp1SF2ecpYHZVgxtT0NcJ16k67I2Yz4qhOP3W1X6B0b0tkpaEPCccdefr2s3z2gX57jJZqK0qu3adVm/ZdmKNyHEDNtblj5kdVmZp1VddkXmP1/UDBiA1odPNjok+VvgPOrdcrm8TB9+6srWIitv83KlBlxphd+W5YOTsfNtWesrI/0+LXMt9CDIjyJr143vBSurDiRHDrbHyVZjfTEWJVW210gomoqUCZqJlvEbeyey3q+wcEHlDs6vFKLM18qIS7JsQe2xQkEz8UJhe4+qM2+35CsWaS4oE2ktUsZvTOWH7Rk0Fx004aO92lFWAgIaa3V2bWtLhOh53m5z3vTayFSuFAmMY8Inf0MC3KmX5zk+K+6fpw/L8qPbPfDkxp1ng/KcVY1Y5twvm9t0TD8GHbG2nxwp54GoTQRE0rLWliBKPHRTbwMPY99wHJhjtx5FuYIjVSQmF5M4x5jfhUXLvxNZxosIKFqa7P8joHhpubm8F4zvgg2J1uC5FfjQ6DuerM8jUa5ntke+LGsvvX/Krk65nptu98yAqM0B3BabcMgUMFpFVBYpcRERpINxgiZQ8mFH6CzXlru8LRD9dRY3fLBsIszkpjBeAAQHE3rKxyibg4noKKL07GuqJk67pi03OjvIGU9LO/yJefZ4INp75tTg7luEnIC0NYKJjceOw/2MN5Q0lX63zoUncE4X6CNniVoMwCbSZ2Xa4dI2hPpF+hWHX/wS6pairVmRco9pVeDx/T1Pbc2M1ZlIOh2hvhF+nTnwOVIC/9mb7vOyaM/ZRuRb6+WyaOfiZ6u6i8m5/mFBwei83gYA1/vXgV2ybdkZFVBsvdhgz6RUwhfrmrPM9zF2kD01KqRTr8Nrv1tcXZoPUk/eoL3jLHMY5ndcrNaqhh4msZdB/FRNl7kL4E/rRfV4qq8aGmTvFAQ6gIJ839QWikNpSfdQiHjhnkJKBwOZnItVUEg5K5yydM2jwAvevt162j/zy5s1vIwbonDJtlwRS1qWwN6ZUSRY7NnnzmIYa3ZkDmf5y6pQPjkJo4qHKeWudstZQHvCgJtUJ9fbrT78g2MmXi4wsw6LBHrSWBHfjhuVxNOyiR/E0RI2IwAFYK6uy4yfOWpcS/p9WZaVR0EBZFNPkJobP31WuVIbYANj29SBu372mdBO/4Xt8F+4+1YCIqx3r6u+FU9g301x7y1x/w3xWuc8U0Ns9RFA1i654XAgyt+V+Wr6bR/gBLEJ/A3ICfzb2/Ts3J2Iqd4o8EsDa7aqWbW2BaI113yaBPF6IxqLR5jmbLtk6YMzYtO8W4kC2UtR2AxEBIFSjd1Yb7ympQBqZi+8aZnn5pfVnnyyxwhh1iiaZ5/KxDDml9OjPHeaqEXqnFY7buS7buNkBRDb0g4m1P/Heeseo4KZyhlHTuO7ZIc9JVypcZULcuUIEVtz+9lxb+oxUpiJ5dKVOsxEunbuznOK2CP51KjoeM0qi8bpR7va+QNvU2sfzPOy9Z6s9TPfsLpF8YN7mhm4BXMdz0uR617Sg1W0VZyE0zX8bUsLF+A57LaMIOuRf2zdJ4/iAMh+XHebZWGuhIsyNa/fzib6hzL8wLtqbG17mNDUw6EtDihi2LGjHp8Haizuf1cJzQBZm1mGfOFZ/9XLFJG1TbIeRJQZey8yXlo/zejiI2pLOqt42VqO/SwQ34N5ii9jXvoyXgmLCGQlxmKWJSR2rGlUIKWUGJecgW0Ma/mqrAUZylgCrI+tBaGf8uQkJ2ICWYICbWhjSdQ1zH/2+R1tjGOeV7yNPdCN5dXhq7UzImCbYzXcSFDInUlEwHC9Onxl7QZ4io9v5Y/gTzZFBx0WU/SsjpFjsP8p3JY6b7M9iWzF2xcrYAfF16D4GhRfg+JrUHwNiq9B8TUovgbF16D4GhRfg+JrUHwNiq9B8TUovgbF16D4GhRfg+JrUHwNiq9B8TUovgbF16D4+s0pvv7z0NNt/fUV08zfyV9fbVAUAtqtv0A/VqJpgfOYd/U9S7mEg3CB3G9FzbXOTJT4r6k207rMupR0ZO+kiu20rK2LOmjgWJHVpcjgHQgtnvMzXuErJ2lZ86OaUpQcMeelqhaPLN3CS8TIU5aPk/9pPuMkuSzbVvCEFVkyE488qSF+QJ2URZJxSB+AmLTMIQNSUpTtWhSrHxKWfKCZ/pDczi4T0ST3cF7wLMnFA7yzTcp2zevkZjFKGGSYPKYBLTjPmmscExTQvTpp647DF1bVnYBzzhlYWJOv+kYXR9GMzeGrJ7581TvkO0ajqo6g6ZMEVn2TlEW+Tdq1aBJWVd80SflUJEvobPItfs9G8s7JwSPRukOJLrrNktfwVGQ5T0R2mNQ85xDeNDtMGl4/8qTEgP+vk/u63CSiOKrqMuVNk9BwNsn/+d//b1KUavCFvI3zujkEcNfwOoG2D9VcqLnhWVLWCUhzmo1oW54dJ9dQnq140rQ1lHyT1DQm2VHNWVMWyWg6gWItT0SbZDwXS9yN+TbJSt4k1zeLBFS4DU8mZ+ejN6Prs9nN5OxucvYGNm7+5mZ+JIfgJGEZSCdw6oPOJ2te8+Sp7PIsIdqUsOReFCteV7UoYC8fsSI7amuWglIwkZOV3JdliyVoPuryiXpWlG2Slo8w2E2ZtGvWJkuel8WqSUSRsKThFYMvSfQG3iZPol0noqX5zHiaMzqQelfmPcsbtTQbSqbR/KJ9X3R5vrMh0O/e1SAkzbx9kIKULsezBH7MKf8kEW1zIQFn1q4hqCkCpHjOVzbJlkh4rFiHjERN3IapjHxkuw0gm5Yh04r/Tc0NMWjwzwJ2yyatxZJf8kfs8hNr0/U1pQXE33NZm3woq8+0xSVVxUU/xzUPdfz11QPfvjp5dT2/EmldVuuy4BjH/oxDP9X1sulWK96AGubk1QynIMH5oHWzLbs62ej3j1/9518Od5JveBWp8IalX7lbKAHIzbCk5eaYVVXOjxuedrVot8e0Q4+xpiMBOQMkIXbPmsq66uKxgZhjAz6ejU9vZmd3o9uzyc2+Q8da3SfJ6D0OEX0Sr5M3CYo61PNxMqLGEtwuid1OcpDBHakuu+YwkUff6+OEXoXRTRhQmxrIYJGIogUKwYGYJw0rsmX5MTm4FzlPYKW2QCZe/6DJac7ZI2/wBUnGugKyGJoqeJE1idh/oFmfe7c01+rPwjh8hbWUPK1hjBieOUe48XmWNLTN4cQHVutRLjk4PqdAWKBztxMjIQAG2sw+rpBh17i75jBW4vxmNgbbqOuzu/l49n5yOn5uuburyensZvru5rrnlenNfHF3fbOYnE9OR4vJzfUcKOp9WXOaMpk3CoLlYP/NQEE5cxD+z7++gsxMr05eifJYWYcdAz96bG3tc7/eVz1tvTqxW/rP59MSa3OdEO8WW7FNsmHbBO5XoujU4jZv8uyHRNzM4VW51XG5mAIJcDzIDCvChEWZvWPMdyVymGi9saQCLqmB201iR1LaR0OWrE7LjN81KdldfVnacco2vGZ7dtNtw7OkLRPoUvKnWQL9a3BcZGebY5q8F22I09HVeDbCdcgZJE911pd6Yc3q7InV/DjFnkqmBRhaxUPtG86G//73HmfFunZ9Wa5E8V4wjAg1ZU0jg8PYuJu2siGQfEalDjRwEn/CwxWXP2ZyjvRjw1uvCc22wYMMXadef89rCASFjSOJErwxgVEtYAAg2YcF0EIKBbjAzI3qSaZcUI/UD9itXaHsPh7LB/55ebUdh8Fbmq0XXH+X5g2LdOgLEsiYFFX766uWaM71fEpFT/1ikJgLTVFzUYBtCq6iw1fqjiKXHAgrargiYX/6a5tSqVFVncvxZHArgc4+oy+4MKVV6pfv0V8OX8Edc87uebvFwZISLKATU143UDQRJJXOZHVEG+pkcoa3Cqr81ckrabSbbFjBVjj/r+CTn1cjfjdcLeWH764WV6ZzTtCKOElAVA3cnSgk/wYkHo6Jb5qEYxsHQMIquS/hKl0W/AhWFVK414lhIr9pElqaeDrwIjuE0yRdJzVvu7poJMuUiOw4IXMMuLcaBhIYU94kq5LqhKsr1ZO0ZYn3f7qckhjlvqtRkIICB1gnjdUPuMmq/ZqsyzxLDoBkHibVumzL5jDJpQXz//nf/9/rvYeNKDe8rUXa+BTykYkc5OkkoLwX9eYrXdjOWconZ888kboCFA1mmOHkhQqSydne69pb8+0vPrtu5+O7t5Obq/FiNjmFb91JotyG+jkcU/BEfUXStGzbWKI5KSvSBO4IFwkv2nqL1yae7Z1zWJm8voOTxpt1uvJ/dtnbr50af3HaFyFSNAlHMAknCUtkVXDHMsK9tkwAD7sdOnScjLIsIfIoz4XkTQJR7BJxLxnYdp1UkkMxtAnIjLrJgm4RyclmrwwsZTkvMlb7YilkOpSmibQL6ikumYJLIpZoemROMpAtVvJ1qMyp/LbmR6DMN0W+HaUgk91Dd2ACOH4JTA7eKdUoHeMRF9R/3uX5s6qer8snnCpaOG7lstGeNj5PzbuppWrsmTf1L/b9z7u1V3LTooy/Jr3Hsaqs+eQb/Ojs7nR0Ob4+G83i9+wfZ5PF2JTZczCk9pj2Hwuq2EmCO+TfRJscwL31u3/6lhiLI7wBv0nuuzxPGA726+RNouZAXVlC+Zr1Pcm3idv5mMTtSG5enr0+ps40eEBZ55MnOVPKiT0kRx5NKcvzgBMpmie6SRFLgoL9nULwlu4wYFTRVUpfiTUfvirv77GymqdcPPK5WBUsx+f/IKuaGHlqeHvVkbF+w9uZKFbAvdHTvOLsAatssC4p86YHJfRWT1JyLoFKZi5J469MHr5g+QMQuYqXVc7j4sKsQyUTg32aP4eE5M3nlvR9Yjf/dvLygCQoMdoR0oZUD9JOgpA3J8l3J9+B9jKnKwsJr0A/lvzIl7PF6XGyWHN7GJq25mwDLEbFeX3UlkfwH2muIMUfCddIrdhVecng93KLu9nSqgEPKlp4iRdwU8qwjgYkXZmoedqCLpXuTqQRrljdilRUrGiTg7PF5fxoPltMXx+/OlTfQjsEZulgfjZN+McUbaJeQyNQz2g6/aZJarKBEdQP1Id6ffuGtKleh+GaBApEUFyD9jB94C18Iy+yCqzqjpMf16zlMHaKcEGyebhhQW9wUEWTPMHFDWiZUlVmoknzsulqnmy6Rqonf8B3UkbvG6XCNw1ezXIcLLR2SJPJVF10QYamR2O+uL0moi6KZN7CcfjdcYL7B8SZBejlG7bhRwVvIfUpVlkWiVp0jzy5Hi0Qej6aXAKq2W7obvGGelZDCVDqL25n16CyZlv9iffiIwd1h1oaTQcZizj0uuaoJ6/LbrXGb/sgUg4SXV43H5LUzlyfNHnZ7qf4KNXzFZ8VyAOBrRbpg2UjXtWg4+XK5BnkkX+afTWO8QWS0pY9cHkhT0TRiIyrheWycFMocimWNau3z6wahkRVjQYFSO1yqkPKYZ/Dn32ur3kRMVXT/Ul09PMJjHcTV3jtRAtkcIqaN2ii1iTMvp/h1fvm+vLPcP+SizZLNqDThG2jKSjc48gUpP4B91BSFkeSX5KvqVobpZTcu3FyUS1LFhgNrFmzIBYEDFvkT+QS8feXtqvR3TpJwNQNidih9bkkvvCsWN44JizA2pJRTluL1UrS5GbbtHwD0roWdDigGkkOvvvjt69/0FytZclDqp77Mu1gCR9894/fvn6ubczeWzF5Dzah0VKEHYXN2stUsjpdfy3iJTu9Z8Ofi4LOcpZliqMyNEZ9+X5GTw3RM2nR5+/cp14R5WG8LMuHX3RJvLlejE4X870XQHugdmwqWewEif/Ba2LhVJN43zoou/aovNemZTdzLMvr1z8ktNIOXstrnxpueVOM3wrlB/SYXZyhH1Xa0vj78fFl9Qc/io/JbDxf7JVCg2HGHXXX21Vy/yAbgJxlWW/Py3qMMUY+097RC/QZiwZ62hyTrpkT8ToGsnOEFNYsmf65hBqO6FtPSGmN5wUeJ5LRkROTHNxOFO8zxReSN8l8dP4aiWjF6yM0aFnVrGiloaBD3KxFmeD7WYLdR0uZtKyAoYsZyuylgFiLN1E5KRKtM4eMdOm+q8+gz0ru3HGmQePZqBKNL8PVQuGRKjSdnEo0OKwuxIY3LdtU9AmN3N6/e/uH74+/IwFxZBqbExi2oyYtK3v2QMRKE+FK7g+M2B644zf+lL2mC5vTn9gJBbtfMidZsuQp2PJBY+0bmAQp9QXTBTDDzEYtmCjImXeZN6KZAk9SWT19MZ2ViiyYdYQLT36uEiazFd+7YFZlVrb+gilZNmXydER7WTwTi+yr6ZovsFcvUDWv9Av92xvLnOAIr0Awz4uVKDiQziYZXy8ms/Hln+OG1przUyoe3w6YFSzftiKlJ3Xz4yvUA5T3yswVV1HN5cW55mCgEtEYgfIFrsCxBdaWaoHRxVgvGNE2PL9Pao4hnhK2LLsWv7OC6+NBA8N1CAoI7JQoi9cgAHzkeePcGaUiEwz3WL1NWg5EFxRY8r6pVzd+AF3z4RfckHGA0SS7YulDc0LDLH0o6OVcPMLSAV6doWCBZ2/ms8lRJYqCZ8nxz6LSpuusVccayZ5BdcMzEiNN6xKEgsqR6hiW7F0t3R3uoPkDuWctUcNsfH47H89hDLEyMARi6QPWCKPFkg1YwMI8N2v2/R/+mMxnkyQTwObAwgAhxDZh9QZlvG/kJnzzxJevpd2zaOAzYUxYkXTFIxiLAC1XY5BSjrTjBLZXk+Q4qAUO/Ono9N1YymjKegvb/igrnwr4MlD2HoLgBROi0cmOOm2QdXbVa5oG7Udk5uLbZFRVyRwUS8n3x384/v7ETI82wGKiSC7O5sjaKd05fAi4J1U1BDRAnTsMJwgc1qJC0omcP0zwN8ttUoHQFjbFN2gjjiI9ErBw6didLASvj/6Q/Os8gc3BazUYycHvjn93/PH1IS6KAizcc5EKEFTBuVFB+xXRCVh9gk5NtJJHUVK5qcDEi24tBRiQiqI9SZCEwFK+vxepYLmmmfI6nqwYqP3f3izeJUdHEAniCBcDTMnRUcXadbLka+BrM9HABNwB7K5U6dzkjPNkWZYtdBDWI4maYIhser6kvQQ1w+iDpRbehEZnZ7AWRXucTO4R9Q9Q2T/gQsPjY8OTgsOxCO+LVprsS7oAQlOM76EoGXo9mMmXzTbiZ36SgJoWhginhIqzLGuS//qn75Ort3gNLvB6B7REOkwc/Ncffn/8T4CWVX2b/Nd3fzz+Z4DMn8R9i2N8fF+zDYc5fY2f+F/ff08vgR9uopZw8ib5rz/+8/HvASGKpoWAECgXU9NywOrNH39/9PjPDAfnh2R0MVUq0eMGzAlgplEcl8HQq/dgNDcbBgTwtVyioknKqj0SKHTDD4LlKRqQj6lDubxHWw+QshVlcVRWtGaR+smvBTFBQbLOvYr7NcSWSn0OOWfbz3Rkvuie837ydjZajPd1mbM8sDJ4liLnJxmPJnp1Zo/8x7J+AMu7r3N/foffMV+zer/lMcvoRtq0vGoOkzVndZuAxflhwgter2iTPlH/pQwPUsLzhFpBS0tQhmItaHENVw9HbkglyVxvn16VPRKF0C1uyw4pGijuoTG78X3X54xTRIH6mKb2QbR6snfwWlT5y+1sqBG6VI9OF5P3qJ+8mU3G87u3t7Pr8VlcD2u/dzaZL0bXfcbUdsnxv49np5P5M0q+G49mizvcAHvLzhfj6XxnMVK8fsL30YvP+kAqqr/wL4ev5MoS/Xbd8lWaPCsEwoyR9QwfycX5SoX9NEY6ApkRMj+lBpTfrZnpj6oF+PSb67v5u5sf76bj2dVkPgcbdRjgyc316BLIDBpN7uvke8GfTEdxZ1h9bFm94q0GfL6PNcNtCaKtOZgvYLm8n4ztz7u7nY8uYNKeM1THVOiYMMfxqv7iuB2HL6sb8fG78ehy8c4eahzgvxDZFUrqtDleleUq58eqHlZVjRwoDCSyR7y1Nrv+M1iDSRpirMGk9dffxDj3XLSFa5f7pXqz0zhNnhhwoNzrHlkWahIvTdcsIzXQcDoNefa5+yqW3/+smkPpCS2ME3nmKIMWsFmR7Z5KJeeB5MBeH8tT6qITcMErePKH4++Of4cdvMBFiqzgN41fQ1XmIt0my7JdgyBkiU4cwIZRH0iHAxISlj3yuhWIK+uk4Tmqo0V7SJ4OUIFhipUGWFaPJr1AnOg+YtcNIjHgl61eqnrgfup11/JRhV5t1M0NXzsti6ZEvUat7om99P4fbLmNNtv5AThwtMuBDtM1q13zhlulG31XJR0/mcZw/Ahg3iE+AImJk4wXgoHC2kxkgfcKJSF4WnM0AIBBUGLNJwZ13oNmBu83HyIM4IeEzH6a5EMBYUdawBc8+4DfTooeVAVgFzjpfpJGbKp8q+0eixLujlVOqnW4p5tuWhyOmY3WKWJd6uVNFNb25Ay7YMlvFrxpz3MIy0aXo2YvHy824g5Iaejve1NhxNG0q2vSeK/LRgXDLgH3pfV30Lcj6NtJAu3BKJMJh+LmcPU8goLT8mN/Em26Tg5gkfL6NWwfqOfkzZtkzYqsvL9XMi2ldKGtoU+CHxxHeRRvkDEGe+AFcchAZsGOhG2avfJGwSr/ylFVbwXe38meXbo4O3wuCLYL0awXoIzUMSVgcbLtE8vzUzRukCDF5+LTbUFv8sx6V1oFp2sSbaqf52WN7j0mVXxNAX++mtxzMpq+ROoJg7l7PT/wbUwTnYkG9vQXX7Kq+ZNEtih3clkcNWnNeZGoErgKUTCi1NFPosjKpzeoKIYFLykvCAfAuZiR1dAD3zZtXT5wEr1qHTc+gZr7JEF6UYCErFzSWkZLGqB1wEtkhySNAa957NzkapwsOUkBUWh7vSe0ww8RDc+nqK9BOHrHNAvszBjHCGDKPpGMsj/vsnR8hq/n867Cc+JSPCr2GpnP/RdK643ty6+VEXfYfrfZ6ezm6mYxPgv9Z3dtGxjnIzWEO7cPGoXdAUEEz6XdshJ0LSCiQ39HGMSm6mo0iFJCk5863kG/kF2mB5BYqodxgf9sJV1XNfxzaVR3rz+VX8H9TuN0q2xmbQjazUKoIn0uxoVG0PeyGGWZ/n2ac1brp0ulpYSHa6WnXGEwNzkQ9CgXZo/86VcT3EIlq/hxzYtJcdvw/QZd0lxMvqhlTQVn9RJYJ4iPt9/CQ2fJeJ6Fhyr++bp3+LUG4VMtScw6/yQzktHp6Xg+vzufXI/vLm+I5sRplCx5ejOaza2yz7WSy0uLEfHs5PZQOHsN9B/PqthJYi8cuBkUR6I4Ajn5m0SBr9D3o8aDGpwxm3WpzFEPzP4nHYAJg6Bc/MuukUbOaEiMu/G1b98SG1nQYUWHcV/YEbpHkUKmqx/B8NbQLbw+wh1vPp6OQFZo3+5Okg9qZKxgBh+On3FYeO984QgBX3B7RTbxKH9i22ZUZM9tTkb6wBbrsmtVmAetsm7UFdqM2HPjlzgr/DnU8DAKtuKrDuTyV0oud5V9Ozr9NxlvZXf5XxDAZXfFPeFbfjl9748AY9b+/vgvquyxWlsvCQCjG/rU8+ZT5clT0tdam/dvKsq1+mHJWWUnE2saXyhrjZwYJ0og2CSjyx9Hf56j43BZi59pg6M3j5INosJen1UfgvA438KNWh2xkWg4B72L4hCvxv+iqj5UgXNAVy6v8pDIKCmLVQlnqR1FR3v53MyPNqzIyIBSu+OgaxEMzwwHI2nSumtBRsMb+wM0SVtz9ijy7YmMEWHdsvFshzUvDUGKFKxVyHLznkG460TuQ+IFpBQAbbPMaJAzzwE/Xh0n39TWkbWG0Jl0YpHSmCQWAm1KvpFGNyxZgeZYpMk3YgPu3bIw/1iBtqZI+TfHyfhjBQJkJuW1KMYAyd2TaNBwylvujp1V6NWgTBiY8QnD7UCmR/WG5eAHZMQTb5ptkYL1/uQeuiseOcmZHziHZVSjMRAMKTqHWUaRePs9ypYJeQqQ3E95Trw+TCCJnRx6f5u/MZtJBkAAySzOAp78BZrEEddzRK5JiTat2cdooVXuXSXDvPuiLWlwIm+ldsBYxwW1oDuiCrdYiRQWyqSY0g8AgfkGOjaB+xw4S9MKINijKOW9VllI0oX9zLTfcP4g/y3KwFf1T/KeD26r1KXmQUgnVLoyq3COyhlV36W7wod9OUnQp0ePo1wJLxYA/ZJQa+Ozyehuejn6M/AFLzmvdx1uG/0d/Tcpd0meWITsDURBUdJOVYCClcmYizJUpwq5qB5Rv2eolKLZDqVt5EyjUTD24SjHuGZA+5BYOEErlhAL9p51+V7fv00ZEQSFxkGjvBVth4kkVryVGXF2O4Dz6lQKykCJAc/vBAjZt3PedtWvXapzVT6D+ccPtAyNKMoHkmie80eaOuX4XPSYEX2+u4D0wdlANCU4TfHyG21+t2CJvn3OC8wv9peX3wMWk/eTxZ/vwOf64nryIlFIg60ew3CinFUGCnCZ5sO97y9ZDWF8PvFtOYYvF8fI3fSZmOPfiH3DLzNDoCEjwRQtvOTg9GrKM5q/5Nvk9AqoDz69dgJB0gpV4qqDxZ+nYzT0uju9ub1ejGfJmwRh09l4Pr+djdXz1ejieryYnN6dT8aXZ6+PZUVSpf2yWBqHr2LLHVX2ymMBfINcE9jv/vFb/BCyTEbnVTSybjn4g+CqR95ar2Lpo0A7G9g55G1hX4MIT9oIkBYe1flaJY+NE/+ccVi5XLfUJC1wvDVD1XK7ZiSheVqDdQMdY9raQNISx7J/uXWEicQlm1k8UVYOZOnxAQn4wV8T2mInyTey0m+S/3z9gXo4upzfaJdf67aDIeIwyhrylYbUkJab6lHqanCsf+TGQBg/VxRg9rEpMTzAZlOCaw4x4EULw4K/l90KPvi6tMYdjdq1FTyMxVxsupy1EKiuphrVrHKJaI4TCh5pHQKK9iVoCMLyRJEcnOcP9oF78PqYqfX+ASP8wx6X4dVV43KW9TPdbVrwX8C7iXFkIf8QXL7yDE/Avh1Xrux4xgSqRXmVtGXLcpLz6hOcQi8wdPuVytrXMIzS8xN0uWSEjTXMFzezsbpDYAHXceUkXOp0P4HoGNg8TFcqze3xNgph+WGnkBGQNp7hMtwf+WFIgyJyLRBg1d4JuWBknBkyRqGtTqGMcBSLMvmPcgmzyXJw+QA7c3S2hxCzWYE2JTWtMXI0QUsBaJasib5pLFH0aDo5xEgbZHfO1dDEjgm4undgfW/M5CEmof5seL1Gj5R7uVxfH/umSnJH6vQBdFOV9VNHYYHVagO3akt8IBOlD5aFzSHSI/Q1k44BchdB9H/0ISDjEWXQtOTbEqhxhP4p7xJoyRkckv/D4nPBBz1j9PrEtixT8oxGXogbby0p3yhYJrSoOljSyXf/mGTgB3hznSzejZOzMVwiDvXiki0wChr3g16w0gEegoegVRutTqS4TAkJlIFOpsJLqtABieR2E1TlN4n04LoXNeoplpq9Sw4MHMn1a+1xQsCMooJg/BYGLkUQSMYYiEXHhyy3kg+NYbtPkv+F98mKzGb/16sPdKSzPMdbjIoWA/SdhlP5QtLxDif+UUM3fVwRyxILQtSRRLQviORuztD90dzL4o4quWNi3y2lwF3wGUMs7LfjuSnOsHejyZ57o/0dJ8Aq8RpkRr1OiQdkankOV0I6QuBOnkOwQRm2EA3dkLiMJq91+hK4CgYToBYUkS01T8bD0JE90axnZVlLIt6InBcgMbrH2Df2WknzsvPsGS2vLt6kLEcWpy09B/U836jGG2kHKTOHgIhOJQsJspFYikRjPyQnHrfS1WUCZoMXvBhNkjfJBd+IQiTXrCjRXm40gUl7TWQTogvxDM2GSCuJdNGyuN7kD6I9WfGCiaN/+JAQ459kvIJUPUWKznBHS/bAtW8fuRUZkqpyP5LRU5ZBWx3m+VFXD3OboFwtSCaAycGQSPs2R8WLu67Oe20Yv4q5IjRy1NX5CZ4PxP1LyS0FEjFibLSNAR+7oyZd8w0Qm6aFwbucw3qX0o4/kf37HIs0yQHYXh5XUPQ1KInlAmDJ/yUN5f9vCFco7uGoXGIoWhhtOQjS5IvjMoOOISfNim8gcQ0sVgYx6NEn70AUj6wWwDB/94fXx8lbsDbG2wAYUB6ReH6Hh5iyrqmye29CRDOyQvl+lUmpsnu0xQNBFKi/tWc88WwQhAtlSVVdtiQzUk61ZG7MMp9oeFMLDJPFDFjuyq8OqXWZtSh5N7o+m9PBe3N6ezW+XiSLm2R0fbN4N55BUDHLWxpcro1NK3wR5cQigXK9IWNlGMGD1x/00Vok0nkFXDIScrTQEVchTxbZHGZoD6gjjAECD1wKV6apJuWfQjk2cjH4guHRZKfSnIkNllTL9k2V3QPjg5/SotftEtyS0ccZr5fo6E/yeSTOak7wdBcU/VqpC4gZO6QvRwsGK9DZU1m362TD4Ap4qL/0wzS7B+ebD8npzdX05hpG+kCFyAaqA3d0MCzWEd2WvG3RQbeEwFB7FzZGYQpj7oB3W3/cHXAUXKj4Wl9JemeH9Bpl2XNTK4CXngyxpSLLmphevyxi2O66n2eS8CW+6heYC1CdR7Ku58RdoTcogo7J+OFFzZm+k4FWDpzrBtr5YgWqxURa3GLyi9fSXAmIvb3g5NG+d/CsIATHye4ZVudZWWoNHZ79EBriZ7j05gxSIRVb+BSrHnC4kFzfwWRxNT/6H//4x3/+HcX5gKix9nchR/H4nWF36MspZk3yrVQg4P0O5xe+0ruelUXy3e++ffP9//h2HxsBii+M0HBHOj/fu7mj1JDgHcd/PYHJKSZcWVNQuF+JSxrqeWRO1b+p0JZGB4+GRzVAtkkDkfIXuaPht1EQG7ey93B6oL8WKvRrnQ/s5dJgfymeSDV0kyy3raQXt/PxDI6shicHjCJsyf1xaKvKH0upRaMkEiyBUFgUFxAcerRUq+ZH1CTxRAuToCKtMdIFxJTw5SwQqJW1LZ3tygwCGAoVclRdYTCmKlomYNweGTvE3IBlwBAlMBMyjfxxsqjFxtW5U8wYSmlRkmsDeadXFeh2OjQHkMN14tzJJA8M+TfULdnESoJIHxhtQmv5cSzfUCxb0OnD99hiYhi5I5vbCybtg6QWHywZCt2NTIQmlQMOWTrRJrPxn24ns/E8+YBL7AN85JJbcWhkkg7lRs9rZJGAzomb+WGyYSn809cDYPf4Unq5NckHcys79jt8rLuLC0VGxVACFtmf42QiGbHaELNDFQMGvN6EMrKlPqPY22/qg2I5C5B3SiEhBYaSOt7kACVJb8jKAONJvSYeD0b1Q3JgdoIcBpbDKMsIuyrCHM552Hx8vubj09vZZPFnPcAQMg4jNdMCuppcL+YY6gZfwJV+AJxA8+bx92+abqlUgm9IN03F4FL4Wl4n0jXcfkBpwEA5DtLsoiy2GzAXhpzLKNNW4l0fk7Ql+KCBZHYJ0ZRRn6KEz7SuZCzfNBeYEhv2MWtJioFRQjAhobq6o/nLPW1FW/5JvLIO2wI7RtGdku5MNBxYrRp10TQdZjHTdkfQQRRny7smwPBMh5HFkztRSisQpsBe56w1oUqJSDGIStLWXYPXgK5gbVuLZdeaKEP7GfauWUfzmY7yHPQ2Jq+pfgJXjTOl4yFV/luWraTin4RdC5iNnYkm7BpQ+y/DN/XFEgEy2uVc9aJRjX7W24LP57KqOeLFo6jLAkMbn7ySgTVkrqRnmMfAHm35kW2qsc9YZgpz4vD7zwn0saevn8H3ao9mu1Ld/gycG60iJ6nM34RHon7oW7fMImMxNvECL2Vpugazy8B/ScgOZMWTs9eu3Q55NePe2aKYAF+i+wbIL89FzcFB7VD/SljelPLEMlyHHCgQnJGWg39saxbzVdxrgyfN3u6A5tSlL2qkXKQmMUSuUtDjLoav+uKSLtnBI9nBE5QpNnYecZnVXor5ZHkZ9Af9RNW7+hw5JC1qAbTx6L7mPFlLbY6KVk/2uTqRD/Gjhao8EWTXmoML63Wvy3WQOfzqdr4gkSNKf06SD7JCuhJ/QC1wVSlDyoMq71AyxJfdihzfX+sA8pRAvMHgCaQsXouqotMDXK9rFf5KnlA5B498TK9ZN0lFEu1Nw/NHdf6BBIzrT8SEaSXyPxgHzQlqwFsp1ofLMEZMJ3IIF1OKZcbr/T7kKH/gdzLE5W71DxywtjPlZwx1uruPEI9qd9eoyFfoCqVBucsEU2bkQR4XlFHgRd5L5vKlt2mkcydJI7OjWyyfLEf55PEKohgtnQFBJsNgVYVcl05Mz4u6zPNDFbQTYp7XZDZOkaqPkwlEooAWsf2GzE4oTgZwWIqGkY63KC0lkwylR/Yg+xduxXm63rdg03JViJ/5TYG+Gfjhdm538KFTmWzwQWeykU9YDukHWgh/RvHMZ0tgo4SQKsI+XljpZo5nnUhbmZDXlq/OcfhmNEDPc8KiHAkQdJfMMbEGGVqZf2z32jxSk587Mc6v6/N/LfnpP5VvjAnX/hbZCClb+pcSgdHcnST6az0vkaZDz1pKZXGEsUfniwVyi7VZMmg41uXo53GkrADocKQwOrp2Kxw2OnDsYwiJ+vwih9eiy/Od5BPzTNyRIq8J/D4K8qKo+X3Nm/V8XdZt2n215F1zUYtnbsi6K5R0Do8b5DjhfQgir7p9vC/nOo3GkRyNkyTeBRRzgNSCEpDqbJRVldCINVIxiswc1LBvolvWPDSREBEUoSRVaa/7pQA2O9aT0u1UhsDMvtLkzcAgBDShvywlYq2qcQm3rv0z1vmLEkzqOpVsC4x98NaSWVnadE7Gvaek/sA91k64dE7Q+ONfTMJE3Zvk4FkzIUW7kGPxMNkxuijD/+6fLOOgf0mYyvNlkgMYc8hAsdhjuLZ3h4CBShjlKt/ePPKanMpQoGYelR/PF2e3sWsneCLkZVfbIngIAVe0JIpANnvDN6V23OOoHYHhEi0PgzXdToIQTV8ralIXGADmnPjhgqUPS0jh2TeonziInTixIlhhc29UY4l0FzQjoZYWpH1x1dburd/NtHRqoubDWlVWRsi2SbMNDMIfRO5/ogv6frONJ76Er/qFISr6R0nWf6KOHL5Z8gyOoB/5EsxRQLLQSLEC2S4mrF6KFnXdKmA+xEMGixlUZLPkLZSDpaKsaI3xyw+kcunaUumg9ptkPYmPd6wSX5RpgTZS1qxFkEDHNf9COweeLcop224+e7LlZ8Sc+xy6d+q6DIr4t+TFzwUI6UQ0Nbjs5Sc6Jqm3ZbDL/OiprHP0wtlwMJM7gARVwGC8ITHgm6oW4Ip+VOWsaFAO1/C2zUlgAcpnWaObh4NmM5Er5wdQIGdJBqZiOWUJQjotfqZqyCp4yiDTsDL8ZhTMnBTIYKqYOzKSfYcYrts1a0O7rhknRxTN1GlnZIVxXZQ19EsfbqrLJ8a1o5Zt40CfovyTUiNjWFl/vknNj2YAZJXX0DsY0khJ1o36v/kBqjCKcqJFHG18NpC0YYV3PzoRUk70vl3zrbLANOZ/zyJVVc5a0K4+j169ZFR3EzHIrNfg2Mt+Q2gQtgUlOGbfKCju233OPx5RApP/v60r1m0YBKL/crORd7YOHTJ0ydKZFmKjgLEAqyRS/r16d8ZppUy84zAcCEsI7t4J23ap8Al/1gw0gf2TysrkDDAu+GlRvrpYEHcJqacTNZZjifWBsAYWCQukHC8+hA/TPrkS6QwQkkO6A1zYNNU/ic+GbOaU0w966m1xHMqkpZR/6x/PHek/wgu96h28aHVJ/DJXb2uaslnn26HhNIw8a+hdq2+MB/qCr0pW2Vi/FTYrLy6fRexqjCYANU2V2VielYBjlITlZk71jgYyBYwUig9sWHkWmU693x3KRkNS7uLqCJd9N+ZUO9PJXeHQ3UjT/cSAc49VsSpssAmv9Pu1pqbZWyvUCan4Y3/47yvHaGRvVXURGxyvLmGLi0yb0biXeCPfYpfedydtejx+AeTyGjprqQgA"
4765
+ sha256: "cfb86c40dd3bb1c140104f0700e182ec0572b55d78ea4916dac2d751a520f85d",
4766
+ data: "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"
4767
4767
  };
4768
4768
  }
4769
4769
  });
@@ -12668,7 +12668,6 @@ function webViewOriginAllowed(url, origins) {
12668
12668
  }
12669
12669
  var init_webview_origin = __esm({
12670
12670
  "../../core/ts/src/webview-origin.ts"() {
12671
- "use strict";
12672
12671
  }
12673
12672
  });
12674
12673
 
@@ -21710,6 +21709,7 @@ var init_wix_cache_defaults_generated = __esm({
21710
21709
  { method: "GET", pathPrefix: "/blog/v3/posts/", cacheable: true, ttl: 60, swr: 86400, tag: "blog" },
21711
21710
  { method: "POST", pathPrefix: "/blog/v3/posts/query", cacheable: true, ttl: 60, swr: 86400, tag: "blog" },
21712
21711
  { method: "GET", pathPrefix: "/bookings/v2/services/", cacheable: true, ttl: 60, swr: 86400, tag: "bookings/services" },
21712
+ { method: "POST", pathPrefix: "/bookings/v2/services/categories/query", cacheable: true, ttl: 60, swr: 86400, tag: "bookings/services" },
21713
21713
  { method: "POST", pathPrefix: "/bookings/v2/services/query", cacheable: true, ttl: 60, swr: 86400, tag: "bookings/services" },
21714
21714
  { method: "GET", pathPrefix: "/donation-campaigns/v2/donation-campaigns/", cacheable: true, ttl: 60, swr: 86400, tag: "donations" },
21715
21715
  { method: "POST", pathPrefix: "/donation-campaigns/v2/donation-campaigns/query", cacheable: true, ttl: 60, swr: 86400, tag: "donations" },
@@ -31838,8 +31838,77 @@ var init_helpers = __esm({
31838
31838
  }
31839
31839
  });
31840
31840
 
31841
+ // ../../core/web-renderer/src/liveWindow.ts
31842
+ import React2 from "react";
31843
+ function liveWindowCurrent(current, count2) {
31844
+ if (count2 <= 0 || !Number.isFinite(current)) return 0;
31845
+ return Math.min(Math.max(Math.trunc(current), 0), count2 - 1);
31846
+ }
31847
+ function liveWindowRange(current, count2, n2) {
31848
+ if (typeof n2 !== "number" || !Number.isFinite(n2) && n2 !== Infinity) return null;
31849
+ const w2 = Math.floor(n2);
31850
+ if (!(w2 > 0) || count2 <= 0) return null;
31851
+ const c2 = liveWindowCurrent(current, count2);
31852
+ return { lo: Math.max(0, c2 - w2), hi: Math.min(count2 - 1, c2 + w2) };
31853
+ }
31854
+ function liveWindowMounted(i2, current, count2, n2) {
31855
+ const r3 = liveWindowRange(current, count2, n2);
31856
+ return r3 == null || i2 >= r3.lo && i2 <= r3.hi;
31857
+ }
31858
+ function liveWindowActive(i2, current, count2, n2) {
31859
+ return liveWindowRange(current, count2, n2) == null || i2 === liveWindowCurrent(current, count2);
31860
+ }
31861
+ function liveWindowFirstImage(page) {
31862
+ const stack = page && typeof page === "object" ? [page] : [];
31863
+ while (stack.length) {
31864
+ const node = stack.pop();
31865
+ const { type, props } = normalize(node);
31866
+ if (type === "Image") return node;
31867
+ if (!CONTAINERS.has(type) || !Array.isArray(props.children)) continue;
31868
+ for (let i2 = props.children.length - 1; i2 >= 0; i2--) {
31869
+ const child = props.children[i2];
31870
+ if (child && typeof child === "object") stack.push(child);
31871
+ }
31872
+ }
31873
+ return null;
31874
+ }
31875
+ function useSettledPage(index, settleMs = LIVE_WINDOW_SETTLE_MS) {
31876
+ const [settled, setSettled] = React2.useState(index);
31877
+ const latest = React2.useRef(index);
31878
+ latest.current = index;
31879
+ const pending = React2.useRef(false);
31880
+ const timer = React2.useRef(null);
31881
+ React2.useEffect(() => {
31882
+ if (!pending.current) setSettled(index);
31883
+ }, [index]);
31884
+ React2.useEffect(() => () => {
31885
+ if (timer.current) clearTimeout(timer.current);
31886
+ }, []);
31887
+ const scrolling = React2.useCallback((page) => {
31888
+ if (page === latest.current && !pending.current) return;
31889
+ pending.current = true;
31890
+ if (timer.current) clearTimeout(timer.current);
31891
+ timer.current = setTimeout(() => {
31892
+ pending.current = false;
31893
+ timer.current = null;
31894
+ setSettled(latest.current);
31895
+ }, settleMs);
31896
+ }, [settleMs]);
31897
+ return { settled, scrolling };
31898
+ }
31899
+ var liveWindowPlaceholderId, CONTAINERS, PageActiveContext, LIVE_WINDOW_SETTLE_MS;
31900
+ var init_liveWindow = __esm({
31901
+ "../../core/web-renderer/src/liveWindow.ts"() {
31902
+ init_helpers();
31903
+ liveWindowPlaceholderId = (owner, index) => `${owner}.page.${index}.placeholder`;
31904
+ CONTAINERS = /* @__PURE__ */ new Set(["VStack", "HStack", "ZStack", "Card"]);
31905
+ PageActiveContext = React2.createContext(true);
31906
+ LIVE_WINDOW_SETTLE_MS = 150;
31907
+ }
31908
+ });
31909
+
31841
31910
  // ../../core/web-renderer/src/bindings.tsx
31842
- import React2, { useEffect, useState } from "react";
31911
+ import React3, { useEffect, useState } from "react";
31843
31912
  import { Fragment, jsx as jsx3 } from "react/jsx-runtime";
31844
31913
  function servicePath(binding2) {
31845
31914
  return binding2.startsWith("$service:") ? binding2.slice("$service:".length) : binding2;
@@ -31874,7 +31943,7 @@ function useBoundValue(ctx, binding2) {
31874
31943
  }
31875
31944
  function useBoundValues(ctx, bindings) {
31876
31945
  const key3 = bindings.join("\0");
31877
- const paths2 = React2.useMemo(
31946
+ const paths2 = React3.useMemo(
31878
31947
  () => bindings.map((b2) => b2 && isBinding(b2) && b2.startsWith("$service:") ? servicePath(b2) : ""),
31879
31948
  // eslint-disable-next-line react-hooks/exhaustive-deps
31880
31949
  [key3]
@@ -31957,7 +32026,7 @@ var init_bindings2 = __esm({
31957
32026
  }) });
31958
32027
  };
31959
32028
  readsService = /* @__PURE__ */ new WeakMap();
31960
- BoundRow = React2.memo(
32029
+ BoundRow = React3.memo(
31961
32030
  ({ ctx, template, item, index, renderRow }) => {
31962
32031
  const scope2 = item && typeof item === "object" ? { ...item, __index: index } : { value: item, __index: index };
31963
32032
  return /* @__PURE__ */ jsx3(Fragment, { children: renderRow(template, { ...ctx, itemScope: scope2 }) });
@@ -31987,7 +32056,7 @@ var init_snackbarTiming = __esm({
31987
32056
  });
31988
32057
 
31989
32058
  // ../../core/web-renderer/src/formBag.ts
31990
- import React3 from "react";
32059
+ import React4 from "react";
31991
32060
  function hasContributed(bag, fieldId) {
31992
32061
  return Object.prototype.hasOwnProperty.call(bag.values, fieldId);
31993
32062
  }
@@ -32072,7 +32141,7 @@ var FormValuesContext;
32072
32141
  var init_formBag = __esm({
32073
32142
  "../../core/web-renderer/src/formBag.ts"() {
32074
32143
  init_validation();
32075
- FormValuesContext = React3.createContext(null);
32144
+ FormValuesContext = React4.createContext(null);
32076
32145
  }
32077
32146
  });
32078
32147
 
@@ -32477,10 +32546,10 @@ var init_pickerField = __esm({
32477
32546
  });
32478
32547
 
32479
32548
  // ../../core/web-renderer/src/symbolEffects.ts
32480
- import React4 from "react";
32549
+ import React5 from "react";
32481
32550
  function useSymbolEffect(effect, reduceMotion) {
32482
- const [, changed] = React4.useReducer((value2) => value2 + 1, 0);
32483
- React4.useEffect(() => {
32551
+ const [, changed] = React5.useReducer((value2) => value2 + 1, 0);
32552
+ React5.useEffect(() => {
32484
32553
  if (typeof window === "undefined" || typeof window.matchMedia !== "function") return;
32485
32554
  const query = window.matchMedia("(prefers-reduced-motion: reduce)");
32486
32555
  const listener = () => changed();
@@ -32488,7 +32557,7 @@ function useSymbolEffect(effect, reduceMotion) {
32488
32557
  return () => query.removeEventListener("change", listener);
32489
32558
  }, []);
32490
32559
  const supported = !reduceMotion() && (effect === "bounce" || effect === "pulse") ? effect : void 0;
32491
- React4.useEffect(() => {
32560
+ React5.useEffect(() => {
32492
32561
  if (!supported || typeof document === "undefined" || document.getElementById("himalaya-symbol-effects")) return;
32493
32562
  const style = document.createElement("style");
32494
32563
  style.id = "himalaya-symbol-effects";
@@ -33165,7 +33234,7 @@ var init_host_toolbar = __esm({
33165
33234
  });
33166
33235
 
33167
33236
  // ../../core/web-renderer/src/richContentEditor.tsx
33168
- import React5 from "react";
33237
+ import React6 from "react";
33169
33238
  import { jsx as jsx6, jsxs as jsxs3 } from "react/jsx-runtime";
33170
33239
  function effectiveTools(tools, uploadService) {
33171
33240
  return ricosEffectiveTools(tools, typeof uploadService === "string" && uploadService !== "");
@@ -33180,32 +33249,32 @@ function RichContentEditorView({ props, ctx, wrap, nodeId, renderChild, ...dom }
33180
33249
  const id = String(nodeId ?? dom["data-component-id"] ?? "rich_content_editor");
33181
33250
  const C2 = ctx.color;
33182
33251
  const name = typeof props.name === "string" && props.name ? props.name : void 0;
33183
- const bag = React5.useContext(FormValuesContext);
33252
+ const bag = React6.useContext(FormValuesContext);
33184
33253
  const live3 = !!ctx.onAction;
33185
33254
  const toolsKey = JSON.stringify(props.tools ?? null);
33186
- const tools = React5.useMemo(() => effectiveTools(props.tools, props.uploadService), [toolsKey, props.uploadService]);
33255
+ const tools = React6.useMemo(() => effectiveTools(props.tools, props.uploadService), [toolsKey, props.uploadService]);
33187
33256
  const seedMode = typeof props.documentJson === "string" ? "literal" : typeof props.documentPath === "string" && props.documentPath ? "binding" : "none";
33188
33257
  const boundSeed = useBoundValue(ctx, seedMode === "binding" ? props.documentPath : "");
33189
33258
  const fill = props.fillAvailable === true;
33190
33259
  const minHeight = typeof props.minHeight === "number" && props.minHeight >= 0 ? props.minHeight : 240;
33191
33260
  const placeholder3 = typeof props.placeholder === "string" ? props.placeholder : "";
33192
- const onChangeRef = React5.useRef(props.onChange);
33261
+ const onChangeRef = React6.useRef(props.onChange);
33193
33262
  onChangeRef.current = props.onChange;
33194
- const bagRef = React5.useRef(bag);
33263
+ const bagRef = React6.useRef(bag);
33195
33264
  bagRef.current = bag;
33196
- const nameRef = React5.useRef(name);
33265
+ const nameRef = React6.useRef(name);
33197
33266
  nameRef.current = name;
33198
- const [status, setStatus] = React5.useState("loading");
33199
- const [toolbar, setToolbar] = React5.useState(EMPTY_TOOLBAR);
33200
- const [focused, setFocused] = React5.useState(false);
33201
- const [src, setSrc] = React5.useState(null);
33202
- const [link, setLink] = React5.useState(null);
33203
- const [uploadError, setUploadError] = React5.useState(false);
33204
- const [, repaint] = React5.useReducer((n2) => n2 + 1, 0);
33205
- const iframeRef = React5.useRef(null);
33206
- const fileRef = React5.useRef(null);
33207
- const sessionRef = React5.useRef(null);
33208
- React5.useEffect(() => {
33267
+ const [status, setStatus] = React6.useState("loading");
33268
+ const [toolbar, setToolbar] = React6.useState(EMPTY_TOOLBAR);
33269
+ const [focused, setFocused] = React6.useState(false);
33270
+ const [src, setSrc] = React6.useState(null);
33271
+ const [link, setLink] = React6.useState(null);
33272
+ const [uploadError, setUploadError] = React6.useState(false);
33273
+ const [, repaint] = React6.useReducer((n2) => n2 + 1, 0);
33274
+ const iframeRef = React6.useRef(null);
33275
+ const fileRef = React6.useRef(null);
33276
+ const sessionRef = React6.useRef(null);
33277
+ React6.useEffect(() => {
33209
33278
  if (!bag || !name) return;
33210
33279
  bag.register(name, void 0);
33211
33280
  const current = sessionRef.current?.currentContent();
@@ -33221,12 +33290,12 @@ function RichContentEditorView({ props, ctx, wrap, nodeId, renderChild, ...dom }
33221
33290
  if (!act || !ctx.onAction) return;
33222
33291
  ctx.onAction({ ...act, args: { ...act.args ?? {}, dirty: "true" } });
33223
33292
  };
33224
- const fireOnChangeRef = React5.useRef(fireOnChange);
33293
+ const fireOnChangeRef = React6.useRef(fireOnChange);
33225
33294
  fireOnChangeRef.current = fireOnChange;
33226
- React5.useEffect(() => {
33295
+ React6.useEffect(() => {
33227
33296
  if (live3) setSrc(new URL(ENGINE_PAGE_PATH, document.baseURI).toString());
33228
33297
  }, [live3]);
33229
- React5.useEffect(() => {
33298
+ React6.useEffect(() => {
33230
33299
  const frame = iframeRef.current;
33231
33300
  if (!live3 || !src || !frame) return;
33232
33301
  const t2 = ricosEditorWebTimings;
@@ -33274,13 +33343,13 @@ function RichContentEditorView({ props, ctx, wrap, nodeId, renderChild, ...dom }
33274
33343
  sessionRef.current = null;
33275
33344
  };
33276
33345
  }, [live3, src]);
33277
- React5.useEffect(() => {
33346
+ React6.useEffect(() => {
33278
33347
  sessionRef.current?.updateLocale(ctx.localeTag ?? "en", ctx.isRTL ?? document.documentElement.dir === "rtl");
33279
33348
  }, [ctx.localeTag, ctx.isRTL]);
33280
- React5.useEffect(() => {
33349
+ React6.useEffect(() => {
33281
33350
  sessionRef.current?.setSeed(seedMode === "literal" ? props.documentJson : seedMode === "binding" ? boundSeed : "");
33282
33351
  }, [seedMode, props.documentJson, boundSeed, src]);
33283
- React5.useEffect(() => {
33352
+ React6.useEffect(() => {
33284
33353
  const vv = typeof window !== "undefined" ? window.visualViewport : null;
33285
33354
  if (!vv || !focused) return;
33286
33355
  vv.addEventListener("resize", repaint);
@@ -33785,20 +33854,20 @@ var init_radioGroups = __esm({
33785
33854
  });
33786
33855
 
33787
33856
  // ../../core/web-renderer/src/a11y/radioGroupScope.tsx
33788
- import React6 from "react";
33857
+ import React7 from "react";
33789
33858
  var scope, RadioGroupScope, useRadioGroups;
33790
33859
  var init_radioGroupScope = __esm({
33791
33860
  "../../core/web-renderer/src/a11y/radioGroupScope.tsx"() {
33792
33861
  "use strict";
33793
33862
  init_radioGroups();
33794
- scope = React6.createContext(radioGroups);
33863
+ scope = React7.createContext(radioGroups);
33795
33864
  RadioGroupScope = scope.Provider;
33796
- useRadioGroups = () => React6.useContext(scope);
33865
+ useRadioGroups = () => React7.useContext(scope);
33797
33866
  }
33798
33867
  });
33799
33868
 
33800
33869
  // ../../core/web-renderer/src/a11y/controls.tsx
33801
- import React7 from "react";
33870
+ import React8 from "react";
33802
33871
  import { jsx as jsx7, jsxs as jsxs4 } from "react/jsx-runtime";
33803
33872
  function labelText(label3, ctx) {
33804
33873
  if (typeof label3 === "string" && isBinding(label3)) {
@@ -33843,25 +33912,25 @@ var init_controls = __esm({
33843
33912
  const C2 = ctx.color;
33844
33913
  const bound2 = useResolvedScalar(props.valuePath, ctx);
33845
33914
  const resolved2 = ctx.empty ? false : props.valuePath != null ? encodeToggleFieldValue(bound2) === "true" : encodeToggleFieldValue(props.value, props.on === true) === "true";
33846
- const bag = React7.useContext(FormValuesContext);
33915
+ const bag = React8.useContext(FormValuesContext);
33847
33916
  const fieldId = props.__formFieldId;
33848
33917
  const inForm = Boolean(bag && fieldId);
33849
- const [formOn, setFormOn] = React7.useState(null);
33850
- const touchedField = React7.useRef(void 0);
33851
- React7.useEffect(() => {
33918
+ const [formOn, setFormOn] = React8.useState(null);
33919
+ const touchedField = React8.useRef(void 0);
33920
+ React8.useEffect(() => {
33852
33921
  if (bag && fieldId && touchedField.current === fieldId) bag.set(fieldId, encodeToggleFieldValue(resolved2));
33853
33922
  setFormOn(null);
33854
33923
  }, [resolved2]);
33855
33924
  const toggleServiceBound = typeof props.valuePath === "string" && props.valuePath.startsWith("$service:");
33856
33925
  const toggleReady = !toggleServiceBound || bound2 !== void 0;
33857
- React7.useEffect(() => {
33926
+ React8.useEffect(() => {
33858
33927
  if (!bag || !fieldId) return;
33859
33928
  if (!toggleReady && !hasContributed(bag, fieldId)) return;
33860
33929
  bag.set(fieldId, encodeToggleFieldValue(resolved2));
33861
33930
  }, [toggleReady, resolved2, fieldId, bag]);
33862
33931
  const on4 = inForm && touchedField.current === fieldId && formOn !== null ? formOn : resolved2;
33863
33932
  const ruleKey = props.validation ? JSON.stringify(props.validation) : "";
33864
- React7.useEffect(() => {
33933
+ React8.useEffect(() => {
33865
33934
  if (!bag || !fieldId) return;
33866
33935
  bag.register(fieldId, props.validation);
33867
33936
  return () => bag.unregister(fieldId);
@@ -33921,15 +33990,15 @@ var init_controls = __esm({
33921
33990
  const tint = C2(props.tint ?? "accentPrimary", "#116DFF");
33922
33991
  const step = typeof props.step === "number" && props.step > 0 ? props.step : (max - min) / 100 || 0.01;
33923
33992
  const range = props.range === true && typeof props.upperValue === "number";
33924
- const [val, setVal] = React7.useState(bound2);
33925
- const latestValue = React7.useRef(bound2);
33926
- const dragging = React7.useRef(false);
33927
- React7.useEffect(() => {
33993
+ const [val, setVal] = React8.useState(bound2);
33994
+ const latestValue = React8.useRef(bound2);
33995
+ const dragging = React8.useRef(false);
33996
+ React8.useEffect(() => {
33928
33997
  if (dragging.current) return;
33929
33998
  latestValue.current = bound2;
33930
33999
  setVal(bound2);
33931
34000
  }, [bound2]);
33932
- const lastEmit = React7.useRef(void 0);
34001
+ const lastEmit = React8.useRef(void 0);
33933
34002
  const canFire = !!(ctx.onAction && props.onChange && !props.disabled);
33934
34003
  const commit = (nv) => {
33935
34004
  latestValue.current = nv;
@@ -33939,8 +34008,8 @@ var init_controls = __esm({
33939
34008
  ctx.onAction({ ...act, args: { ...act.args ?? {}, value: nv } });
33940
34009
  };
33941
34010
  const clampPct = (n2) => max > min ? Math.max(0, Math.min(1, (n2 - min) / (max - min))) : 0;
33942
- const [pair, setPair] = React7.useState(() => [Math.min(bound2, props.upperValue ?? bound2), Math.max(bound2, props.upperValue ?? bound2)]);
33943
- React7.useEffect(() => {
34011
+ const [pair, setPair] = React8.useState(() => [Math.min(bound2, props.upperValue ?? bound2), Math.max(bound2, props.upperValue ?? bound2)]);
34012
+ React8.useEffect(() => {
33944
34013
  if (range) setPair([Math.min(bound2, props.upperValue), Math.max(bound2, props.upperValue)]);
33945
34014
  }, [range, bound2, props.upperValue]);
33946
34015
  if (range) {
@@ -34098,25 +34167,25 @@ var init_controls = __esm({
34098
34167
  const boundValue = useResolvedScalar(props.valuePath, ctx);
34099
34168
  const raw = props.valuePath != null ? boundValue : props.value;
34100
34169
  const groupId = isRadio && typeof props.groupId === "string" && props.groupId !== "" ? props.groupId : void 0;
34101
- const [local, setLocal] = React7.useState(void 0);
34102
- React7.useEffect(() => {
34170
+ const [local, setLocal] = React8.useState(void 0);
34171
+ React8.useEffect(() => {
34103
34172
  setLocal(void 0);
34104
34173
  }, [raw, radioGroups2, groupId]);
34105
34174
  const localValue2 = local?.registry === radioGroups2 && local.groupId === groupId ? local.value : void 0;
34106
34175
  const on4 = ctx.empty ? false : localValue2 ?? raw === true;
34107
- const member = React7.useMemo(() => radioGroups2.newMember(), [radioGroups2]);
34108
- const owner = React7.useSyncExternalStore(
34176
+ const member = React8.useMemo(() => radioGroups2.newMember(), [radioGroups2]);
34177
+ const owner = React8.useSyncExternalStore(
34109
34178
  radioGroups2.subscribe,
34110
34179
  () => groupId ? radioGroups2.owner(groupId) : void 0,
34111
34180
  () => void 0
34112
34181
  );
34113
- React7.useEffect(() => {
34182
+ React8.useEffect(() => {
34114
34183
  if (!groupId) return;
34115
34184
  radioGroups2.join(groupId);
34116
34185
  return () => radioGroups2.leave(groupId, member);
34117
34186
  }, [radioGroups2, groupId, member]);
34118
- const seenRaw = React7.useRef(null);
34119
- React7.useEffect(() => {
34187
+ const seenRaw = React8.useRef(null);
34188
+ React8.useEffect(() => {
34120
34189
  const prev = seenRaw.current;
34121
34190
  seenRaw.current = { raw, groupId, registry: radioGroups2 };
34122
34191
  if (!groupId) return;
@@ -34126,7 +34195,7 @@ var init_controls = __esm({
34126
34195
  radioGroups2.adopt(groupId, member, raw === true);
34127
34196
  }
34128
34197
  }, [radioGroups2, raw, groupId, member]);
34129
- React7.useEffect(() => {
34198
+ React8.useEffect(() => {
34130
34199
  if (groupId && radioGroups2.deselects(radioGroups2.owner(groupId), member)) setLocal({ value: false, registry: radioGroups2, groupId });
34131
34200
  }, [radioGroups2, owner, member, groupId]);
34132
34201
  const accent = C2("accentPrimary", "#116DFF");
@@ -34198,8 +34267,8 @@ var init_controls = __esm({
34198
34267
  const selectedId = useResolvedId(props.selectedId, ctx);
34199
34268
  const tabs = Array.isArray(boundTabs) && boundTabs.length ? boundTabs : Array.isArray(props.tabs) ? props.tabs : [];
34200
34269
  const pages2 = props.style === "swipe" ? props.swipePages : void 0;
34201
- const [local, setLocal] = React7.useState(void 0);
34202
- React7.useEffect(() => {
34270
+ const [local, setLocal] = React8.useState(void 0);
34271
+ React8.useEffect(() => {
34203
34272
  setLocal(void 0);
34204
34273
  }, [selectedId]);
34205
34274
  const current = local != null && tabs.some((t2) => t2.id === local) ? local : selectedId;
@@ -34219,15 +34288,15 @@ var init_controls = __esm({
34219
34288
  e2.preventDefault();
34220
34289
  if (ni2 !== selIdx) select2(ni2);
34221
34290
  };
34222
- const pagerRef = React7.useRef(null);
34223
- const settle2 = React7.useRef(void 0);
34224
- React7.useEffect(() => {
34291
+ const pagerRef = React8.useRef(null);
34292
+ const settle2 = React8.useRef(void 0);
34293
+ React8.useEffect(() => {
34225
34294
  const el2 = pagerRef.current;
34226
34295
  if (!el2 || !el2.clientWidth) return;
34227
34296
  const x2 = selIdx * el2.clientWidth;
34228
34297
  if (Math.abs(el2.scrollLeft - x2) > 1) el2.scrollTo?.({ left: x2, behavior: "smooth" });
34229
34298
  }, [selIdx, pages2]);
34230
- React7.useEffect(() => () => clearTimeout(settle2.current), []);
34299
+ React8.useEffect(() => () => clearTimeout(settle2.current), []);
34231
34300
  const onPagerScroll = () => {
34232
34301
  clearTimeout(settle2.current);
34233
34302
  settle2.current = setTimeout(() => {
@@ -34338,7 +34407,7 @@ var init_controls = __esm({
34338
34407
  const expanded = useResolvedScalar(props.expandedPath ?? props.expanded, ctx);
34339
34408
  const open = expanded === true;
34340
34409
  const fire = ctx.onAction && props.onToggle ? () => ctx.onAction(resolveRowAction(props.onToggle, ctx)) : void 0;
34341
- const regionId = React7.useMemo(() => `himi-disclosure-${++disclosureSeq}`, []);
34410
+ const regionId = React8.useMemo(() => `himi-disclosure-${++disclosureSeq}`, []);
34342
34411
  return /* @__PURE__ */ jsxs4("div", { style: { width: "100%", ...wrap }, children: [
34343
34412
  /* @__PURE__ */ jsxs4(
34344
34413
  "button",
@@ -34357,7 +34426,7 @@ var init_controls = __esm({
34357
34426
  ]
34358
34427
  }
34359
34428
  ),
34360
- /* @__PURE__ */ jsx7("div", { id: regionId, role: "region", hidden: !open, style: open ? { padding: "2px 2px 8px 24px" } : void 0, children: open && (Array.isArray(props.content) ? props.content.map((c2, i2) => /* @__PURE__ */ jsx7(React7.Fragment, { children: renderChild(c2) }, c2?.id ?? i2)) : renderChild(props.content)) })
34429
+ /* @__PURE__ */ jsx7("div", { id: regionId, role: "region", hidden: !open, style: open ? { padding: "2px 2px 8px 24px" } : void 0, children: open && (Array.isArray(props.content) ? props.content.map((c2, i2) => /* @__PURE__ */ jsx7(React8.Fragment, { children: renderChild(c2) }, c2?.id ?? i2)) : renderChild(props.content)) })
34361
34430
  ] });
34362
34431
  };
34363
34432
  }
@@ -35481,7 +35550,7 @@ var init_rich_text_field = __esm({
35481
35550
  });
35482
35551
 
35483
35552
  // ../../core/web-renderer/src/richContent.tsx
35484
- import React9 from "react";
35553
+ import React10 from "react";
35485
35554
  import { Fragment as Fragment3, jsx as jsx9, jsxs as jsxs6 } from "react/jsx-runtime";
35486
35555
  function richContentFollow(ctx, onLink) {
35487
35556
  return (url) => {
@@ -35586,7 +35655,7 @@ function Block({ b: b2, env, depth }) {
35586
35655
  minHeight: b2.spans.length ? void 0 : "1.5em"
35587
35656
  }, children: /* @__PURE__ */ jsx9(Spans, { spans: b2.spans, env }) });
35588
35657
  case "heading":
35589
- return React9.createElement(
35658
+ return React10.createElement(
35590
35659
  `h${b2.level}`,
35591
35660
  { ...tid(env, b2.id, b2.kind), style: textStyle(ctx, RICH_CONTENT_HEADING_TOKENS[b2.level - 1], text11) },
35592
35661
  /* @__PURE__ */ jsx9(Spans, { spans: b2.spans, env })
@@ -35969,7 +36038,9 @@ var init_webviewBridge = __esm({
35969
36038
  const registration = channel3.register(instanceId, (json8) => this.toPage(json8));
35970
36039
  this.registration = registration;
35971
36040
  channel3.deliverLifecycle(instanceId, registration.replacedLive ? lifecycleEnvelope(instanceId, "reloaded") : lifecycleEnvelope(instanceId, "mounted", plan.bridged ? { bridged: true } : { bridged: false, reason: plan.reason }));
35972
- if (!this.active) channel3.deliverLifecycle(instanceId, lifecycleEnvelope(instanceId, "inactive"));
36041
+ if (!this.active || registration.replacedLive) {
36042
+ channel3.deliverLifecycle(instanceId, lifecycleEnvelope(instanceId, this.active ? "active" : "inactive"));
36043
+ }
35973
36044
  if (plan.bridged) this.opts.win.addEventListener("message", this.onWindowMessage);
35974
36045
  }
35975
36046
  /** The iframe's `load`. Only the first one of a document epoch is `loaded`: an in-frame navigation
@@ -36152,12 +36223,13 @@ var webviewBridgeHost_exports = {};
36152
36223
  __export(webviewBridgeHost_exports, {
36153
36224
  default: () => WebViewBridgeHost
36154
36225
  });
36155
- import React10 from "react";
36226
+ import React11 from "react";
36156
36227
  function WebViewBridgeHost(p2) {
36157
36228
  const { channel: channel3, props, ctx } = p2;
36158
36229
  const explicit2 = useResolvedScalar(props.instanceId, ctx);
36159
36230
  const explicitId = typeof explicit2 === "string" || typeof explicit2 === "number" ? String(explicit2) : "";
36160
- const active = useResolvedScalar(bound(props.activePath), ctx) !== false;
36231
+ const pageActive = React11.useContext(PageActiveContext);
36232
+ const active = useResolvedScalar(bound(props.activePath), ctx) !== false && pageActive;
36161
36233
  const muted = useResolvedScalar(bound(props.mutedPath), ctx) === true;
36162
36234
  const cfg = props.config && typeof props.config === "object" ? props.config : {};
36163
36235
  const consoleForwarding = cfg.consoleForwarding === true;
@@ -36165,10 +36237,10 @@ function WebViewBridgeHost(p2) {
36165
36237
  const screenArgs = JSON.stringify(ctx.screenArgs ?? null);
36166
36238
  const source = p2.htmlStr != null ? "\0html" : p2.urlStr ?? "";
36167
36239
  const origins = p2.allowedOrigins.join("\n");
36168
- const sessionRef = React10.useRef(null);
36169
- const live3 = React10.useRef({ active, muted });
36240
+ const sessionRef = React11.useRef(null);
36241
+ const live3 = React11.useRef({ active, muted });
36170
36242
  live3.current = { active, muted };
36171
- React10.useEffect(() => {
36243
+ React11.useEffect(() => {
36172
36244
  if (typeof window === "undefined") return;
36173
36245
  if (p2.urlStr == null && p2.htmlStr == null) return;
36174
36246
  let instanceId;
@@ -36207,13 +36279,13 @@ function WebViewBridgeHost(p2) {
36207
36279
  p2.load.onLoad = void 0;
36208
36280
  };
36209
36281
  }, [channel3, ctx.screenId, screenArgs, p2.nodeId, explicitId, source, origins, security, consoleForwarding]);
36210
- React10.useEffect(() => {
36282
+ React11.useEffect(() => {
36211
36283
  sessionRef.current?.setActive(active);
36212
36284
  }, [active]);
36213
- React10.useEffect(() => {
36285
+ React11.useEffect(() => {
36214
36286
  sessionRef.current?.setMuted(muted);
36215
36287
  }, [muted]);
36216
- const first = React10.useRef(true);
36288
+ const first = React11.useRef(true);
36217
36289
  useLayoutEffectInBrowser(() => {
36218
36290
  if (first.current) {
36219
36291
  first.current = false;
@@ -36230,8 +36302,9 @@ var init_webviewBridgeHost = __esm({
36230
36302
  "use strict";
36231
36303
  init_bindings2();
36232
36304
  init_helpers();
36305
+ init_liveWindow();
36233
36306
  init_webviewBridge();
36234
- useLayoutEffectInBrowser = typeof globalThis.document === "undefined" ? React10.useEffect : React10.useLayoutEffect;
36307
+ useLayoutEffectInBrowser = typeof globalThis.document === "undefined" ? React11.useEffect : React11.useLayoutEffect;
36235
36308
  bound = (v2) => typeof v2 === "string" && isBinding(v2) ? v2 : void 0;
36236
36309
  }
36237
36310
  });
@@ -116844,7 +116917,7 @@ __export(pdfDocument_exports, {
116844
116917
  PdfDocument: () => PdfDocument,
116845
116918
  destroyPdfDocumentLoad: () => destroyPdfDocumentLoad
116846
116919
  });
116847
- import React11 from "react";
116920
+ import React12 from "react";
116848
116921
  import { jsx as jsx10, jsxs as jsxs7 } from "react/jsx-runtime";
116849
116922
  async function loadPdfDocument(src, ownerDocument) {
116850
116923
  const [pdfjs, pdfWorkerAsset] = await Promise.all([
@@ -116863,18 +116936,18 @@ async function destroyPdfDocumentLoad(loading) {
116863
116936
  }
116864
116937
  }
116865
116938
  function PdfDocument({ src, nativeSrc, title, height, startPage, zoomPercent, style, onPageCount, onFallback, loadDocument = loadPdfDocument }) {
116866
- const [pages2, setPages] = React11.useState(0);
116867
- const [failedRequest, setFailedRequest] = React11.useState(null);
116939
+ const [pages2, setPages] = React12.useState(0);
116940
+ const [failedRequest, setFailedRequest] = React12.useState(null);
116868
116941
  const request = JSON.stringify([src, zoomPercent]);
116869
116942
  const failed3 = failedRequest === request;
116870
- const containerRef = React11.useRef(null);
116871
- const frameRef = React11.useRef(null);
116872
- const startPageRef = React11.useRef(startPage);
116943
+ const containerRef = React12.useRef(null);
116944
+ const frameRef = React12.useRef(null);
116945
+ const startPageRef = React12.useRef(startPage);
116873
116946
  startPageRef.current = startPage;
116874
- React11.useEffect(() => {
116947
+ React12.useEffect(() => {
116875
116948
  if (failed3) onFallback?.();
116876
116949
  }, [failed3, onFallback]);
116877
- React11.useEffect(() => {
116950
+ React12.useEffect(() => {
116878
116951
  const frame2 = frameRef.current;
116879
116952
  const page = Math.min(pages2, Math.max(1, Math.floor(startPage ?? 1) || 1));
116880
116953
  const canvas = pages2 ? containerRef.current?.querySelector(`[data-pdf-page="${page}"]`) : null;
@@ -116883,7 +116956,7 @@ function PdfDocument({ src, nativeSrc, title, height, startPage, zoomPercent, st
116883
116956
  const scale = frame2.offsetHeight > 0 && box.height > 0 ? box.height / frame2.offsetHeight : 1;
116884
116957
  frame2.scrollTop += (canvas.getBoundingClientRect().top - box.top) / scale;
116885
116958
  }, [startPage, pages2]);
116886
- React11.useEffect(() => {
116959
+ React12.useEffect(() => {
116887
116960
  let live3 = true;
116888
116961
  let loading;
116889
116962
  const container = containerRef.current;
@@ -116945,7 +117018,7 @@ var init_pdfDocument = __esm({
116945
117018
  });
116946
117019
 
116947
117020
  // ../../core/web-renderer/src/renderNode.tsx
116948
- import React12 from "react";
117021
+ import React13 from "react";
116949
117022
  import { createPortal } from "react-dom";
116950
117023
  import { Fragment as Fragment4, jsx as jsx11, jsxs as jsxs8 } from "react/jsx-runtime";
116951
117024
  function boundTokenName(path2, fallback, ctx) {
@@ -117038,8 +117111,8 @@ function isNumericLike(s2) {
117038
117111
  return NUMERIC_TEXT.test(s2.trim());
117039
117112
  }
117040
117113
  function useValueSwap(value2, enabled2) {
117041
- const prev = React12.useRef(value2);
117042
- const gen = React12.useRef(0);
117114
+ const prev = React13.useRef(value2);
117115
+ const gen = React13.useRef(0);
117043
117116
  if (prev.current !== value2) {
117044
117117
  if (enabled2 && prev.current !== void 0 && value2 !== void 0) gen.current += 1;
117045
117118
  prev.current = value2;
@@ -117107,9 +117180,9 @@ function revealOnFocusStyle(C2) {
117107
117180
  };
117108
117181
  }
117109
117182
  function FormFieldLabelIdScope({ render, fieldKey, ...extras }) {
117110
- const id = React12.useId().replace(/[^A-Za-z0-9_-]/g, "");
117183
+ const id = React13.useId().replace(/[^A-Za-z0-9_-]/g, "");
117111
117184
  const el2 = render(`${fieldKey ? `${fieldKey}-` : ""}auto-${id}`);
117112
- return Object.keys(extras).length ? React12.cloneElement(el2, extras) : el2;
117185
+ return Object.keys(extras).length ? React13.cloneElement(el2, extras) : el2;
117113
117186
  }
117114
117187
  function formFieldA11y(props) {
117115
117188
  const labelledBy = props.__labelledBy;
@@ -117844,9 +117917,9 @@ function sectionSlot(raw) {
117844
117917
  }
117845
117918
  }
117846
117919
  function useLoadingTiming(target, graceMs, floorMs) {
117847
- const [shown2, setShown] = React12.useState(() => target === "loading" && graceMs > 0 ? "pending" : target);
117848
- const loadingSince = React12.useRef(shown2 === "loading" ? Date.now() : null);
117849
- React12.useEffect(() => {
117920
+ const [shown2, setShown] = React13.useState(() => target === "loading" && graceMs > 0 ? "pending" : target);
117921
+ const loadingSince = React13.useRef(shown2 === "loading" ? Date.now() : null);
117922
+ React13.useEffect(() => {
117850
117923
  if (target === shown2) return void 0;
117851
117924
  if (target === "loading") {
117852
117925
  if (graceMs <= 0) {
@@ -117885,8 +117958,8 @@ function autoGrowBox(contentHeight, lineHeight, verticalPadding, maxLines) {
117885
117958
  function PreviewMenuOverlay({ label: label3, dialogRef, preview, ctx, onClose, anchorHost, children }) {
117886
117959
  const host = anchorHost?.closest(`[${MODAL_SCOPE_ATTR}]`) ?? (typeof document !== "undefined" ? document.body : null);
117887
117960
  const reduce = ctx.reduceMotion();
117888
- const [shown2, setShown] = React12.useState(reduce);
117889
- React12.useEffect(() => {
117961
+ const [shown2, setShown] = React13.useState(reduce);
117962
+ React13.useEffect(() => {
117890
117963
  if (reduce || typeof requestAnimationFrame !== "function") {
117891
117964
  setShown(true);
117892
117965
  return;
@@ -117895,7 +117968,7 @@ function PreviewMenuOverlay({ label: label3, dialogRef, preview, ctx, onClose, a
117895
117968
  return () => cancelAnimationFrame(raf);
117896
117969
  }, [reduce]);
117897
117970
  const inScope = host != null && host !== host.ownerDocument.body;
117898
- const previewCtx = React12.useMemo(() => ctx.onAction ? { ...ctx, onAction: (a2) => {
117971
+ const previewCtx = React13.useMemo(() => ctx.onAction ? { ...ctx, onAction: (a2) => {
117899
117972
  onClose();
117900
117973
  ctx.onAction(a2);
117901
117974
  } } : ctx, [ctx, onClose]);
@@ -117962,7 +118035,7 @@ function youtubeId(item) {
117962
118035
  }
117963
118036
  }
117964
118037
  function useResolvedMediaItems(items, ctx) {
117965
- const paths2 = React12.useMemo(() => {
118038
+ const paths2 = React13.useMemo(() => {
117966
118039
  const set = /* @__PURE__ */ new Set();
117967
118040
  for (const it2 of items) {
117968
118041
  if (!it2 || typeof it2 !== "object") continue;
@@ -117974,17 +118047,17 @@ function useResolvedMediaItems(items, ctx) {
117974
118047
  return [...set];
117975
118048
  }, [items]);
117976
118049
  const key3 = paths2.join("\0");
117977
- const [values, setValues] = React12.useState(() => {
118050
+ const [values, setValues] = React13.useState(() => {
117978
118051
  const seed2 = {};
117979
118052
  if (ctx.provider) for (const p2 of paths2) seed2[p2] = ctx.provider.value(p2);
117980
118053
  return seed2;
117981
118054
  });
117982
- React12.useEffect(() => {
118055
+ React13.useEffect(() => {
117983
118056
  if (!ctx.provider || paths2.length === 0) return;
117984
118057
  const unsubs = paths2.map((p2) => ctx.provider.subscribe(p2, (v2) => setValues((prev) => prev[p2] === v2 ? prev : { ...prev, [p2]: v2 })));
117985
118058
  return () => unsubs.forEach((u2) => u2());
117986
118059
  }, [ctx.provider, key3]);
117987
- return React12.useMemo(() => items.map((it2) => {
118060
+ return React13.useMemo(() => items.map((it2) => {
117988
118061
  if (!it2 || typeof it2 !== "object") return it2;
117989
118062
  let out2 = null;
117990
118063
  for (const f2 of MEDIA_ITEM_BINDABLE) {
@@ -118027,8 +118100,8 @@ function reloadKeyOf(v2) {
118027
118100
  return String(v2);
118028
118101
  }
118029
118102
  function cloneWithKids(el2, props, kids3) {
118030
- if (kids3 === el2.props.children) return React12.cloneElement(el2, props);
118031
- return React12.cloneElement(el2, props, ...Array.isArray(kids3) ? kids3 : [kids3]);
118103
+ if (kids3 === el2.props.children) return React13.cloneElement(el2, props);
118104
+ return React13.cloneElement(el2, props, ...Array.isArray(kids3) ? kids3 : [kids3]);
118032
118105
  }
118033
118106
  function editA11yParts(node, edit) {
118034
118107
  if (Array.isArray(node)) {
@@ -118040,7 +118113,7 @@ function editA11yParts(node, edit) {
118040
118113
  });
118041
118114
  return changed ? out2 : node;
118042
118115
  }
118043
- if (!React12.isValidElement(node) || typeof node.type !== "string") return node;
118116
+ if (!React13.isValidElement(node) || typeof node.type !== "string") return node;
118044
118117
  const own6 = node.props;
118045
118118
  if (own6["data-component-id"] != null) return node;
118046
118119
  const part3 = own6[A11Y_PART];
@@ -118084,8 +118157,8 @@ function isNativeInteractiveElement(el2) {
118084
118157
  return typeof el2.type === "string" && (["button", "input", "select", "textarea"].includes(el2.type) || el2.type === "a" && typeof props.href === "string");
118085
118158
  }
118086
118159
  function hasInteractiveReactDescendant(el2) {
118087
- return React12.Children.toArray(el2.props.children).some((child) => {
118088
- if (!React12.isValidElement(child)) return false;
118160
+ return React13.Children.toArray(el2.props.children).some((child) => {
118161
+ if (!React13.isValidElement(child)) return false;
118089
118162
  if (isNativeInteractiveElement(child)) return true;
118090
118163
  const props = child.props;
118091
118164
  if (typeof child.type === "string" && typeof props.role === "string" && INTERACTIVE_ROLES.has(props.role)) return true;
@@ -118162,8 +118235,8 @@ function trackActivatorName(activator) {
118162
118235
  activatorNameObservers.set(activator, observer);
118163
118236
  }
118164
118237
  function TapActivator({ label: label3, state, tabIndex = 0, role = "button", hint, initialFocus }) {
118165
- const ref = React12.useRef(null);
118166
- const hintId = `hm-tap-hint${React12.useId()}`;
118238
+ const ref = React13.useRef(null);
118239
+ const hintId = `hm-tap-hint${React13.useId()}`;
118167
118240
  useIsomorphicLayoutEffect(() => {
118168
118241
  const el2 = ref.current;
118169
118242
  if (!el2 || label3) return;
@@ -118202,9 +118275,9 @@ function TapActivator({ label: label3, state, tabIndex = 0, role = "button", hin
118202
118275
  function withExtras(name, render) {
118203
118276
  const Wrapped = ({ props, ctx, wrap, nodeId, gap, ...pass }) => {
118204
118277
  const el2 = render({ props, ctx, wrap, nodeId, gap, nodeExtras: pass });
118205
- if (!React12.isValidElement(el2)) return /* @__PURE__ */ jsx11(Fragment4, { children: el2 });
118278
+ if (!React13.isValidElement(el2)) return /* @__PURE__ */ jsx11(Fragment4, { children: el2 });
118206
118279
  if (el2.props[NODE_EXTRAS_TARGET] === "bottom-drawer-panel") {
118207
- return React12.cloneElement(el2, { [NODE_EXTRAS_TARGET]: void 0 });
118280
+ return React13.cloneElement(el2, { [NODE_EXTRAS_TARGET]: void 0 });
118208
118281
  }
118209
118282
  const additive = addIntrinsicPadding(el2.props.style, wrap ?? {});
118210
118283
  const inferredDecorative = el2.props[INFERRED_DECORATIVE] === true;
@@ -118224,7 +118297,7 @@ function withExtras(name, render) {
118224
118297
  }, hasA11yParts ? editA11yParts(kids3, a11yPartEdit({}, false, () => {
118225
118298
  })) : kids3));
118226
118299
  }
118227
- return withCircleClipBorder(additive ? React12.cloneElement(el2, { style: additive }) : el2);
118300
+ return withCircleClipBorder(additive ? React13.cloneElement(el2, { style: additive }) : el2);
118228
118301
  }
118229
118302
  const prev = el2.props;
118230
118303
  const next = { ...pass };
@@ -118325,7 +118398,7 @@ function withExtras(name, render) {
118325
118398
  }
118326
118399
  return withCircleClipBorder(cloneWithKids(el2, next, kids3));
118327
118400
  }
118328
- return withCircleClipBorder(React12.cloneElement(el2, next));
118401
+ return withCircleClipBorder(React13.cloneElement(el2, next));
118329
118402
  };
118330
118403
  Wrapped.displayName = name;
118331
118404
  return Wrapped;
@@ -118433,7 +118506,7 @@ function overlayEdgeStyle(edge, gap) {
118433
118506
  }
118434
118507
  function useFlippedEdge(edge, open, bubbleRef, anchorRef, gap = TOOLTIP_GAP) {
118435
118508
  const initial = { edge, x: 0, y: 0, maxWidth: Infinity };
118436
- const [placed, setPlaced] = React12.useState(initial);
118509
+ const [placed, setPlaced] = React13.useState(initial);
118437
118510
  useIsomorphicLayoutEffect(() => {
118438
118511
  if (!open) {
118439
118512
  setPlaced((previous) => previous.edge === edge && previous.x === 0 && previous.y === 0 && previous.maxWidth === Infinity ? previous : initial);
@@ -119227,7 +119300,7 @@ function renderNodeInner(node, ctx) {
119227
119300
  }
119228
119301
  }
119229
119302
  const el2 = renderInner(node, ctx);
119230
- if (!React12.isValidElement(el2)) return el2;
119303
+ if (!React13.isValidElement(el2)) return el2;
119231
119304
  const extra = {};
119232
119305
  const material = node?.modifiers?.material;
119233
119306
  const materialName = typeof material === "string" ? material : material?.token ?? material?.name;
@@ -119406,8 +119479,8 @@ function renderNodeInner(node, ctx) {
119406
119479
  const finalStyle = extra.style ?? el2.props.style;
119407
119480
  if (!finalStyle?.position) extra.style = { ...finalStyle ?? {}, position: "relative" };
119408
119481
  }
119409
- let out2 = tapActivator ? React12.cloneElement(el2, extra, tapActivator, el2.props.children) : Object.keys(extra).length ? React12.cloneElement(el2, extra) : el2;
119410
- if (React12.isValidElement(out2)) out2 = withCircleClipBorder(out2);
119482
+ let out2 = tapActivator ? React13.cloneElement(el2, extra, tapActivator, el2.props.children) : Object.keys(extra).length ? React13.cloneElement(el2, extra) : el2;
119483
+ if (React13.isValidElement(out2)) out2 = withCircleClipBorder(out2);
119411
119484
  if (a11yHint && !tapActivator) {
119412
119485
  out2 = /* @__PURE__ */ jsx11(A11yHintDescription, { hint: a11yHint, idBase: componentId, children: out2 });
119413
119486
  }
@@ -119624,10 +119697,10 @@ function renderInner(node, ctx) {
119624
119697
  template: items[0],
119625
119698
  renderRow: (t2, ic) => {
119626
119699
  let row2 = renderNode(t2, asItem(ic));
119627
- if (boundStagger > 0 && React12.isValidElement(row2)) {
119700
+ if (boundStagger > 0 && React13.isValidElement(row2)) {
119628
119701
  const i2 = Number(ic.itemScope?.__index ?? 0);
119629
119702
  const prev = row2.props.style ?? {};
119630
- row2 = React12.cloneElement(row2, { style: { ...prev, animationDelay: `${i2 * boundStagger}ms` } });
119703
+ row2 = React13.cloneElement(row2, { style: { ...prev, animationDelay: `${i2 * boundStagger}ms` } });
119631
119704
  }
119632
119705
  if (boundSwipe && ctx.onAction && !props.horizontal) {
119633
119706
  const leading = resolveSwipeActions(boundSwipe.leading, ic);
@@ -119687,7 +119760,7 @@ function renderInner(node, ctx) {
119687
119760
  if (swipe && ctx.onAction && !props.horizontal) {
119688
119761
  const leading = swipe.leading ?? [];
119689
119762
  const trailing = swipe.trailing ?? [];
119690
- const arr2 = React12.Children.toArray(rendered);
119763
+ const arr2 = React13.Children.toArray(rendered);
119691
119764
  body = arr2.map((child, i2) => /* @__PURE__ */ jsx11(
119692
119765
  SwipeRow,
119693
119766
  {
@@ -120142,8 +120215,8 @@ function renderInner(node, ctx) {
120142
120215
  if (carItemsPath && items[0] && ctx.provider) {
120143
120216
  return /* @__PURE__ */ jsx11("div", { style: { width: "100%", ...wrap }, children: /* @__PURE__ */ jsx11("div", { style: { display: "flex", overflowX: "auto", gap: 12, width: "100%" }, children: /* @__PURE__ */ jsx11(BoundList, { ctx, itemsPath: carItemsPath, template: items[0], renderRow: (t2, ic) => /* @__PURE__ */ jsx11("div", { style: { flex: "0 0 auto" }, children: renderNode(t2, ic) }) }) }) });
120144
120217
  }
120145
- if (type === "Carousel") return /* @__PURE__ */ jsx11(CarouselNode, { props, ctx, wrap });
120146
- return /* @__PURE__ */ jsx11(PagingNode, { props: { ...props, __pager: true }, ctx, wrap });
120218
+ if (type === "Carousel") return /* @__PURE__ */ jsx11(CarouselNode, { props, ctx, wrap, nodeId: resolvedComponentId(node.id, ctx) ?? "" });
120219
+ return /* @__PURE__ */ jsx11(PagingNode, { props: { ...props, __pager: true }, ctx, wrap, nodeId: resolvedComponentId(node.id, ctx) ?? "" });
120147
120220
  }
120148
120221
  case "StepIndicator": {
120149
120222
  const steps = Array.isArray(props.steps) ? props.steps : [];
@@ -120200,7 +120273,7 @@ function reportUnknownComponent(ctx, pkg, type) {
120200
120273
  function unknownComponentShowsDeveloperLabel(ctx) {
120201
120274
  return ctx.debugUnknownComponents ?? ctx.previewSurface != null;
120202
120275
  }
120203
- var rowValue, loadPdfFetch, WebViewBridgeHost2, useIsomorphicLayoutEffect, ResponsiveGrid, SPLIT_EXPANDED_MIN_WIDTH, SPLIT_COLUMN_GAP, ResponsiveSplitView, ABSOLUTE_URL_RE, appearKeyframesInjected, valueSwapKeyframesInjected, NUMERIC_TEXT, shimmerKeyframesInjected, pressStylesInjected, REVEAL_ON_FOCUS_ATTR, FOCUS_RING_CSS, focusStylesInjected, HLIST_CHILD_CSS, hListStylesInjected, listAnimateRuntimeInstalled, transitionKeyframesInjected, countUpRuntimeInjected, MEASURE_PREFIX, measureRuntimeInjected, revealRuntimeInjected, AMBIENT_HOST_STYLE, AmbientMotionBox, vectorAnimStylesInjected, scrollProgressRuntimeInjected, confettiRuntimeInjected, lottieRuntimeInjected, LOTTIE_RUNTIME_ATTRIBUTES, lottieAnims, riveRuntimeInjected, gradientKeyframesInjected, parallaxRuntimeInjected, spinKeyframesInjected, marqueeKeyframesInjected, alignItems, zJustifyItems, hAlignItems, bodyFont, kids2, rowKidCtx, rowKids, staggeredKids, asTextL10n, asFinalTextL10n, asBoundText, useBoundString, InterpolatedTextView, txt, selectFragmentCase, fragmentValueHash, fragmentSlotContent, FragmentSlotNode, RichContentEditorNode, MediaFieldNode, WorkerSubtreeNode, RichContentNode, resolveItemDeep2, resolveRowAction2, resolveSwipeActions, resolveModBindings, resolvedComponentId, directServiceBindings, withRootStyle, ReactiveDirectScalars, HiddenGate, ExitPresence, StatefulSectionNode, KEYBOARD_INPUT_MODES, AUTOCAPITALIZE_VALUES, ENTER_KEY_HINTS, AUTOGROW_CEILING, EditableField, MENU_ANCHOR_CONTROL, MenuNode, MENU_LONG_PRESS_MS, menuOpensOnLongPress, LoadMoreSentinel, FieldErrorNode, FormView, MediaSlotProvider, MEDIA_ITEM_BINDABLE, MediaPlayerView, VideoNode, PdfDocumentCanvas, PdfViewNode, WebViewNode, InteractivePicker, InteractiveDatePicker, InteractiveSearchField, InteractiveStepper, NODE_EXTRAS_TARGET, SYNTHETIC_TAP_ROLE, SYNTHETIC_TABINDEX, INFERRED_DECORATIVE, SELF_RENDERED_LEAF, ROLE_WHEN_NAMED, AUTHORED_ROLE, PENDING_RANGE, RANGE_ROLES, NODE_A11Y_ATTRS, INTERACTIVE_ROLES, ALWAYS_INTERACTIVE_COMPONENT_TYPES, TAP_ACTIVATOR_ATTR, TAP_GROUP_ATTR, NESTED_CONTROL_SELECTOR, VISUALLY_HIDDEN, NAME_SKIP_SELECTOR, activatorNameObservers, ACTIVATOR_STATE_ATTRS, controlNode, ToggleNode, SliderNode, SelectionControlNode, TabsNode, SegmentedControlNode, DisclosureGroupNode, GridNode, SplitViewNode, REVEAL_RELEASE_MS, REVEAL_FADE_MS, REVEAL_BUFFER, revealProgress, countWords, RevealText, TextNode, ImageNode, ANIMATION_LEAF, LottieNode, RiveNode, AvatarNode, IconNode, EMPTY_STATE_SPACING, EmptyStateNode, ERROR_STATE_VARIANTS, ERROR_STATE_SPACING, ErrorStateNode, ButtonNode, OtpInputNode, ProgressBarNode, SnackbarNode, ACTIVITY_DEFAULT_NAME, ACTIVITY_RING_ARC, ActivityIndicatorNode, NATIVELY_TABBABLE, BottomSheetNode, BOTTOM_DRAWER_HOST_STACK_EVENT, ModalBottomSheetNode, BottomDrawerNode, PRESENTED_OVERLAY_ATTR, TooltipNode, PopoverNode, ChipsInputNode, ChipNode, TableNode, GaugeRing, GaugeNode, RATING_METRICS, ratingMetrics, RatingNode, AvatarStripNode, CHART_STROKE_CYCLE, chartStrokeAt, chartBarCenter, ChartNode, donutSliceOpacity, DonutChartNode, ShapeNode, LegendMarker, LegendNode, cellAlign, DataTableNode, voiceNoteState, voiceNoteDelivery, VOICE_NOTE_DEFAULT_BARS, clampBarCount, VoiceNoteNode, TimelineNode, PagingNode, WheelPickerNode, ColorPickerNode, FilterChipsNode, TILE_PX, MAX_MERCATOR_LAT, DEFAULT_TILE_MAX_ZOOM, CIRCLE_SEGMENTS, METRES_PER_DEG_LAT, MARKER_HIT_RADIUS, SHAPE_HIT_RADIUS, MapNode, CAROUSEL_SETTLE_MS, scrollCarouselTo, CarouselNode, BannerNode, CollapsingHeaderNode, UnsupportedOnSurface, CALENDAR_DATE_ONLY_RE, CAL_DEFAULT_MAX_DOTS, CAL_AGENDA_INITIAL_DAYS, CAL_AGENDA_PAGE_DAYS, CAL_DEFAULT_SNAP_MINUTES, CAL_UNASSIGNED_LANE_ID, MonthCalendarNode, TimeGridNode, AgendaNode, ARIA_ROLE, initialFocusScheduled, PRESENTED_SCOPE, focusRoots, A11yHintDescription, reportedUnknownComponents, UnknownComponentNode, WebRenderer;
120276
+ var rowValue, loadPdfFetch, WebViewBridgeHost2, useIsomorphicLayoutEffect, ResponsiveGrid, SPLIT_EXPANDED_MIN_WIDTH, SPLIT_COLUMN_GAP, ResponsiveSplitView, ABSOLUTE_URL_RE, appearKeyframesInjected, valueSwapKeyframesInjected, NUMERIC_TEXT, shimmerKeyframesInjected, pressStylesInjected, REVEAL_ON_FOCUS_ATTR, FOCUS_RING_CSS, focusStylesInjected, HLIST_CHILD_CSS, hListStylesInjected, listAnimateRuntimeInstalled, transitionKeyframesInjected, countUpRuntimeInjected, MEASURE_PREFIX, measureRuntimeInjected, revealRuntimeInjected, AMBIENT_HOST_STYLE, AmbientMotionBox, vectorAnimStylesInjected, scrollProgressRuntimeInjected, confettiRuntimeInjected, lottieRuntimeInjected, LOTTIE_RUNTIME_ATTRIBUTES, lottieAnims, riveRuntimeInjected, gradientKeyframesInjected, parallaxRuntimeInjected, spinKeyframesInjected, marqueeKeyframesInjected, alignItems, zJustifyItems, hAlignItems, bodyFont, kids2, rowKidCtx, rowKids, staggeredKids, asTextL10n, asFinalTextL10n, asBoundText, useBoundString, InterpolatedTextView, txt, selectFragmentCase, fragmentValueHash, fragmentSlotContent, FragmentSlotNode, RichContentEditorNode, MediaFieldNode, WorkerSubtreeNode, RichContentNode, resolveItemDeep2, resolveRowAction2, resolveSwipeActions, resolveModBindings, resolvedComponentId, directServiceBindings, withRootStyle, ReactiveDirectScalars, HiddenGate, ExitPresence, StatefulSectionNode, KEYBOARD_INPUT_MODES, AUTOCAPITALIZE_VALUES, ENTER_KEY_HINTS, AUTOGROW_CEILING, EditableField, MENU_ANCHOR_CONTROL, MenuNode, MENU_LONG_PRESS_MS, menuOpensOnLongPress, LoadMoreSentinel, FieldErrorNode, FormView, MediaSlotProvider, MEDIA_ITEM_BINDABLE, MediaPlayerView, VideoNode, PdfDocumentCanvas, PdfViewNode, WebViewNode, InteractivePicker, InteractiveDatePicker, InteractiveSearchField, InteractiveStepper, NODE_EXTRAS_TARGET, SYNTHETIC_TAP_ROLE, SYNTHETIC_TABINDEX, INFERRED_DECORATIVE, SELF_RENDERED_LEAF, ROLE_WHEN_NAMED, AUTHORED_ROLE, PENDING_RANGE, RANGE_ROLES, NODE_A11Y_ATTRS, INTERACTIVE_ROLES, ALWAYS_INTERACTIVE_COMPONENT_TYPES, TAP_ACTIVATOR_ATTR, TAP_GROUP_ATTR, NESTED_CONTROL_SELECTOR, VISUALLY_HIDDEN, NAME_SKIP_SELECTOR, activatorNameObservers, ACTIVATOR_STATE_ATTRS, controlNode, ToggleNode, SliderNode, SelectionControlNode, TabsNode, SegmentedControlNode, DisclosureGroupNode, GridNode, SplitViewNode, REVEAL_RELEASE_MS, REVEAL_FADE_MS, REVEAL_BUFFER, revealProgress, countWords, RevealText, TextNode, ImageNode, ANIMATION_LEAF, LottieNode, RiveNode, AvatarNode, IconNode, EMPTY_STATE_SPACING, EmptyStateNode, ERROR_STATE_VARIANTS, ERROR_STATE_SPACING, ErrorStateNode, ButtonNode, OtpInputNode, ProgressBarNode, SnackbarNode, ACTIVITY_DEFAULT_NAME, ACTIVITY_RING_ARC, ActivityIndicatorNode, NATIVELY_TABBABLE, BottomSheetNode, BOTTOM_DRAWER_HOST_STACK_EVENT, ModalBottomSheetNode, BottomDrawerNode, PRESENTED_OVERLAY_ATTR, TooltipNode, PopoverNode, ChipsInputNode, ChipNode, TableNode, GaugeRing, GaugeNode, RATING_METRICS, ratingMetrics, RatingNode, AvatarStripNode, CHART_STROKE_CYCLE, chartStrokeAt, chartBarCenter, ChartNode, donutSliceOpacity, DonutChartNode, ShapeNode, LegendMarker, LegendNode, cellAlign, DataTableNode, voiceNoteState, voiceNoteDelivery, VOICE_NOTE_DEFAULT_BARS, clampBarCount, VoiceNoteNode, TimelineNode, LiveWindowMeasured, LiveWindowPage, PagingNode, WheelPickerNode, ColorPickerNode, FilterChipsNode, TILE_PX, MAX_MERCATOR_LAT, DEFAULT_TILE_MAX_ZOOM, CIRCLE_SEGMENTS, METRES_PER_DEG_LAT, MARKER_HIT_RADIUS, SHAPE_HIT_RADIUS, MapNode, CAROUSEL_SETTLE_MS, scrollCarouselTo, CarouselNode, BannerNode, CollapsingHeaderNode, UnsupportedOnSurface, CALENDAR_DATE_ONLY_RE, CAL_DEFAULT_MAX_DOTS, CAL_AGENDA_INITIAL_DAYS, CAL_AGENDA_PAGE_DAYS, CAL_DEFAULT_SNAP_MINUTES, CAL_UNASSIGNED_LANE_ID, MonthCalendarNode, TimeGridNode, AgendaNode, ARIA_ROLE, initialFocusScheduled, PRESENTED_SCOPE, focusRoots, A11yHintDescription, reportedUnknownComponents, UnknownComponentNode, WebRenderer;
120204
120277
  var init_renderNode = __esm({
120205
120278
  "../../core/web-renderer/src/renderNode.tsx"() {
120206
120279
  "use strict";
@@ -120212,6 +120285,7 @@ var init_renderNode = __esm({
120212
120285
  init_modifiers();
120213
120286
  init_shape();
120214
120287
  init_helpers();
120288
+ init_liveWindow();
120215
120289
  init_bindings2();
120216
120290
  init_snackbarTiming();
120217
120291
  init_bindings();
@@ -120249,12 +120323,12 @@ var init_renderNode = __esm({
120249
120323
  init_richContent();
120250
120324
  rowValue = (v2, ctx) => typeof v2 === "string" && v2.startsWith("$item") ? resolveScalarStatic(v2, ctx) : v2;
120251
120325
  loadPdfFetch = () => Promise.resolve().then(() => (init_pdfFetch(), pdfFetch_exports));
120252
- WebViewBridgeHost2 = React12.lazy(() => Promise.resolve().then(() => (init_webviewBridgeHost(), webviewBridgeHost_exports)));
120253
- useIsomorphicLayoutEffect = typeof globalThis.document === "undefined" ? React12.useEffect : React12.useLayoutEffect;
120326
+ WebViewBridgeHost2 = React13.lazy(() => Promise.resolve().then(() => (init_webviewBridgeHost(), webviewBridgeHost_exports)));
120327
+ useIsomorphicLayoutEffect = typeof globalThis.document === "undefined" ? React13.useEffect : React13.useLayoutEffect;
120254
120328
  ResponsiveGrid = ({ base, medium, expanded, initialCols, seedWidth, spacing, extra, children }) => {
120255
- const [el2, setEl] = React12.useState(null);
120256
- const [cols, setCols] = React12.useState(initialCols);
120257
- React12.useEffect(() => {
120329
+ const [el2, setEl] = React13.useState(null);
120330
+ const [cols, setCols] = React13.useState(initialCols);
120331
+ React13.useEffect(() => {
120258
120332
  if (!el2) return;
120259
120333
  const measure2 = () => {
120260
120334
  const w2 = seededWidth(el2.clientWidth, seedWidth);
@@ -120280,9 +120354,9 @@ var init_renderNode = __esm({
120280
120354
  SPLIT_EXPANDED_MIN_WIDTH = 840;
120281
120355
  SPLIT_COLUMN_GAP = 16;
120282
120356
  ResponsiveSplitView = ({ primary, detail, primaryMaxWidth, initialWide, seedWidth, extra }) => {
120283
- const ref = React12.useRef(null);
120284
- const [wide, setWide] = React12.useState(initialWide);
120285
- React12.useEffect(() => {
120357
+ const ref = React13.useRef(null);
120358
+ const [wide, setWide] = React13.useState(initialWide);
120359
+ React13.useEffect(() => {
120286
120360
  const el2 = ref.current;
120287
120361
  if (!el2) return;
120288
120362
  const measure2 = () => {
@@ -120328,9 +120402,9 @@ var init_renderNode = __esm({
120328
120402
  revealRuntimeInjected = false;
120329
120403
  AMBIENT_HOST_STYLE = { display: "contents" };
120330
120404
  AmbientMotionBox = ({ spec, kind, children }) => {
120331
- const ref = React12.useRef(null);
120405
+ const ref = React13.useRef(null);
120332
120406
  const { minGapMs, maxGapMs } = spec;
120333
- React12.useEffect(() => {
120407
+ React13.useEffect(() => {
120334
120408
  const el2 = ref.current?.firstElementChild;
120335
120409
  if (!el2 || typeof el2.animate !== "function") return;
120336
120410
  let timer;
@@ -120414,14 +120488,14 @@ var init_renderNode = __esm({
120414
120488
  }
120415
120489
  };
120416
120490
  bodyFont = (ctx) => fontStack(ctx.font("body").family, ctx.idiom);
120417
- kids2 = (arr2, ctx) => Array.isArray(arr2) ? arr2.map((n2, i2) => /* @__PURE__ */ jsx11(React12.Fragment, { children: renderNode(n2, ctx) }, n2?.id ?? i2)) : null;
120491
+ kids2 = (arr2, ctx) => Array.isArray(arr2) ? arr2.map((n2, i2) => /* @__PURE__ */ jsx11(React13.Fragment, { children: renderNode(n2, ctx) }, n2?.id ?? i2)) : null;
120418
120492
  rowKidCtx = (n2, ctx) => wantsRowStretch(n2) ? { ...ctx, rowStretch: true } : normalize(n2).type === "Divider" ? { ...ctx, rowDivider: true } : ctx;
120419
- rowKids = (arr2, ctx) => Array.isArray(arr2) ? arr2.map((n2, i2) => /* @__PURE__ */ jsx11(React12.Fragment, { children: renderNode(n2, rowKidCtx(n2, ctx)) }, n2?.id ?? i2)) : null;
120493
+ rowKids = (arr2, ctx) => Array.isArray(arr2) ? arr2.map((n2, i2) => /* @__PURE__ */ jsx11(React13.Fragment, { children: renderNode(n2, rowKidCtx(n2, ctx)) }, n2?.id ?? i2)) : null;
120420
120494
  staggeredKids = (arr2, ctx, staggerMs) => Array.isArray(arr2) ? arr2.map((n2, i2) => {
120421
120495
  const el2 = renderNode(n2, ctx);
120422
- if (!React12.isValidElement(el2)) return /* @__PURE__ */ jsx11(React12.Fragment, { children: el2 }, n2?.id ?? i2);
120496
+ if (!React13.isValidElement(el2)) return /* @__PURE__ */ jsx11(React13.Fragment, { children: el2 }, n2?.id ?? i2);
120423
120497
  const prev = el2.props.style ?? {};
120424
- return React12.cloneElement(el2, { key: n2?.id ?? i2, style: { ...prev, animationDelay: `${i2 * staggerMs}ms` } });
120498
+ return React13.cloneElement(el2, { key: n2?.id ?? i2, style: { ...prev, animationDelay: `${i2 * staggerMs}ms` } });
120425
120499
  }) : null;
120426
120500
  asTextL10n = (v2, ctx) => typeof v2 === "string" && v2.startsWith(TRANSLATION_PREFIX) ? asText2(resolveTranslation(v2, ctx.catalog)) : asText2(v2);
120427
120501
  asFinalTextL10n = (v2, ctx) => typeof v2 === "string" ? v2.startsWith(TRANSLATION_PREFIX) ? asText2(resolveTranslation(v2, ctx.catalog)) : v2 : asText2(v2);
@@ -120434,13 +120508,13 @@ var init_renderNode = __esm({
120434
120508
  const bound2 = Object.entries(params).filter(
120435
120509
  ([, v2]) => typeof v2 === "string" && v2.startsWith("$service:")
120436
120510
  );
120437
- const [live3, setLive] = React12.useState(() => {
120511
+ const [live3, setLive] = React13.useState(() => {
120438
120512
  const seed2 = {};
120439
120513
  if (ctx.provider) for (const [k2, p2] of bound2) seed2[k2] = ctx.provider.value(servicePath(p2));
120440
120514
  return seed2;
120441
120515
  });
120442
120516
  const subKey = bound2.map(([k2, p2]) => `${k2}=${p2}`).join("|");
120443
- React12.useEffect(() => {
120517
+ React13.useEffect(() => {
120444
120518
  const provider = ctx.provider;
120445
120519
  if (!provider) return;
120446
120520
  const unsubs = bound2.map(
@@ -120482,11 +120556,11 @@ var init_renderNode = __esm({
120482
120556
  fragmentSlotContent = ({ props, ctx, discriminator, slotId, extra }) => {
120483
120557
  const selected = selectFragmentCase(props, discriminator);
120484
120558
  const selectedId = typeof selected?.id === "string" ? selected.id : "";
120485
- const previousId = React12.useRef(selectedId);
120486
- const reportedUnknown = React12.useRef(/* @__PURE__ */ new Set());
120487
- const reportedInvalid = React12.useRef(/* @__PURE__ */ new Set());
120488
- const [announcement, setAnnouncement] = React12.useState("");
120489
- React12.useEffect(() => {
120559
+ const previousId = React13.useRef(selectedId);
120560
+ const reportedUnknown = React13.useRef(/* @__PURE__ */ new Set());
120561
+ const reportedInvalid = React13.useRef(/* @__PURE__ */ new Set());
120562
+ const [announcement, setAnnouncement] = React13.useState("");
120563
+ React13.useEffect(() => {
120490
120564
  if (typeof discriminator === "string") {
120491
120565
  if (discriminator && !props.cases?.some((candidate) => candidate.id === discriminator) && !reportedUnknown.current.has(discriminator)) {
120492
120566
  reportedUnknown.current.add(discriminator);
@@ -120500,7 +120574,7 @@ var init_renderNode = __esm({
120500
120574
  }
120501
120575
  }
120502
120576
  }, [ctx, discriminator, props.cases, slotId]);
120503
- React12.useEffect(() => {
120577
+ React13.useEffect(() => {
120504
120578
  if (previousId.current !== selectedId) {
120505
120579
  const next = selected?.accessibilityAnnouncement ?? selected?.accessibility_announcement;
120506
120580
  setAnnouncement(typeof next === "string" ? next : "");
@@ -120514,7 +120588,7 @@ var init_renderNode = __esm({
120514
120588
  // and the right edge clips (branded-lite's home is a FragmentSlot → 32px cut in
120515
120589
  // the phone preview). Included before ...extra so a modifier can still override.
120516
120590
  /* @__PURE__ */ jsxs8("div", { "data-fragment-slot": slotId ?? "", "data-fragment-case": selectedId, style: { width: "100%", boxSizing: "border-box", ...extra }, children: [
120517
- selected?.content ? /* @__PURE__ */ jsx11(React12.Fragment, { children: renderNode(selected.content, ctx) }, selectedId) : null,
120591
+ selected?.content ? /* @__PURE__ */ jsx11(React13.Fragment, { children: renderNode(selected.content, ctx) }, selectedId) : null,
120518
120592
  /* @__PURE__ */ jsx11("span", { "aria-live": "polite", style: { position: "absolute", width: 1, height: 1, padding: 0, margin: -1, overflow: "hidden", clip: "rect(0, 0, 0, 0)", whiteSpace: "nowrap", border: 0 }, children: announcement })
120519
120593
  ] })
120520
120594
  );
@@ -120535,11 +120609,11 @@ var init_renderNode = __esm({
120535
120609
  const fallbackPathStr = mediaFieldServicePath(props.fallbackTextPath);
120536
120610
  const fallbackBound = useBoundValue(ctx, fallbackPathStr ? String(props.fallbackTextPath) : "");
120537
120611
  const fallbackText = typeof fallbackBound === "string" ? fallbackBound : "";
120538
- const [uploading, setUploading] = React12.useState(false);
120539
- const [failed3, setFailed] = React12.useState(false);
120540
- const fileRef = React12.useRef(null);
120541
- const previewRef = React12.useRef(null);
120542
- const [localPreview, setLocalPreview] = React12.useState("");
120612
+ const [uploading, setUploading] = React13.useState(false);
120613
+ const [failed3, setFailed] = React13.useState(false);
120614
+ const fileRef = React13.useRef(null);
120615
+ const previewRef = React13.useRef(null);
120616
+ const [localPreview, setLocalPreview] = React13.useState("");
120543
120617
  const uploadService = typeof props.uploadService === "string" ? props.uploadService : "";
120544
120618
  const resolvedLabel = asText2(resolveScalarStatic(props.label, ctx));
120545
120619
  const name = mediaFieldName(resolvedLabel);
@@ -120584,7 +120658,7 @@ var init_renderNode = __esm({
120584
120658
  setUploading(false);
120585
120659
  }
120586
120660
  };
120587
- React12.useEffect(() => () => {
120661
+ React13.useEffect(() => () => {
120588
120662
  const previewUrl = previewRef.current;
120589
120663
  if (previewUrl && typeof URL.revokeObjectURL === "function") URL.revokeObjectURL(previewUrl);
120590
120664
  previewRef.current = null;
@@ -120656,7 +120730,7 @@ var init_renderNode = __esm({
120656
120730
  const value2 = useBoundValue(ctx, typeof path2 === "string" ? path2 : "");
120657
120731
  const policy = props.policy;
120658
120732
  const catalog4 = ctx.provider && typeof ctx.provider.listActions === "function" ? ctx.provider : null;
120659
- const validation = React12.useMemo(() => {
120733
+ const validation = React13.useMemo(() => {
120660
120734
  if (value2 === void 0 || value2 === null) return { ok: false, reason: "unresolved" };
120661
120735
  if (typeof value2 !== "string") return { ok: false, reason: "value_type" };
120662
120736
  if (!policy || typeof policy !== "object") return { ok: false, reason: "typed_decode" };
@@ -120666,8 +120740,8 @@ var init_renderNode = __esm({
120666
120740
  return { ok: false, reason: "typed_decode" };
120667
120741
  }
120668
120742
  }, [catalog4, policy, slotId, value2]);
120669
- const reported = React12.useRef(/* @__PURE__ */ new Set());
120670
- React12.useEffect(() => {
120743
+ const reported = React13.useRef(/* @__PURE__ */ new Set());
120744
+ React13.useEffect(() => {
120671
120745
  const key3 = validation.ok ? `ok:${validation.treeHash}` : `bad:${validation.treeHash ?? validation.reason}`;
120672
120746
  if (reported.current.has(key3)) return;
120673
120747
  reported.current.add(key3);
@@ -120696,10 +120770,10 @@ var init_renderNode = __esm({
120696
120770
  const hasPath = typeof path2 === "string" && path2 !== "";
120697
120771
  const bound2 = useResolvedScalar(hasPath ? path2 : void 0, ctx);
120698
120772
  const raw = hasPath ? bound2 : props.documentJson ?? props.document_json;
120699
- const result = React12.useMemo(() => layoutRichContentValue(raw), [raw]);
120773
+ const result = React13.useMemo(() => layoutRichContentValue(raw), [raw]);
120700
120774
  const reason = result && "rejected" in result ? result.rejected : void 0;
120701
- const reported = React12.useRef(/* @__PURE__ */ new Set());
120702
- React12.useEffect(() => {
120775
+ const reported = React13.useRef(/* @__PURE__ */ new Set());
120776
+ React13.useEffect(() => {
120703
120777
  if (!reason) return;
120704
120778
  const key3 = typeof raw === "string" ? `${reason}:${raw.length}:${richContentDocumentHash(raw)}` : `${reason}:non-string`;
120705
120779
  if (reported.current.has(key3)) return;
@@ -120793,17 +120867,17 @@ var init_renderNode = __esm({
120793
120867
  };
120794
120868
  withRootStyle = (content, style) => {
120795
120869
  if (Array.isArray(content)) return content.map((child) => withRootStyle(child, style));
120796
- if (!React12.isValidElement(content)) return content;
120797
- if (content.type === React12.Fragment) {
120798
- return React12.cloneElement(content, {}, React12.Children.map(content.props.children, (child) => withRootStyle(child, style)));
120870
+ if (!React13.isValidElement(content)) return content;
120871
+ if (content.type === React13.Fragment) {
120872
+ return React13.cloneElement(content, {}, React13.Children.map(content.props.children, (child) => withRootStyle(child, style)));
120799
120873
  }
120800
120874
  const element = content;
120801
- return React12.cloneElement(element, { style: { ...element.props.style, ...style } });
120875
+ return React13.cloneElement(element, { style: { ...element.props.style, ...style } });
120802
120876
  };
120803
120877
  ReactiveDirectScalars = ({ node, ctx, bindings, style }) => {
120804
- const [, rerender] = React12.useState(0);
120878
+ const [, rerender] = React13.useState(0);
120805
120879
  const bindingKey = bindings.join("|");
120806
- React12.useEffect(() => {
120880
+ React13.useEffect(() => {
120807
120881
  if (!ctx.provider) return;
120808
120882
  const unsubs = bindings.map((binding2) => ctx.provider.subscribe(servicePath(binding2), () => rerender((n2) => n2 + 1)));
120809
120883
  return () => unsubs.forEach((unsubscribe) => unsubscribe());
@@ -120816,14 +120890,14 @@ var init_renderNode = __esm({
120816
120890
  return /* @__PURE__ */ jsx11(ExitPresence, { hidden: hiddenBool(v2), exit: exit ?? null, children });
120817
120891
  };
120818
120892
  ExitPresence = ({ hidden, exit, children }) => {
120819
- const [prevHidden, setPrevHidden] = React12.useState(hidden);
120820
- const [exiting, setExiting] = React12.useState(false);
120893
+ const [prevHidden, setPrevHidden] = React13.useState(hidden);
120894
+ const [exiting, setExiting] = React13.useState(false);
120821
120895
  if (hidden !== prevHidden) {
120822
120896
  setPrevHidden(hidden);
120823
120897
  setExiting(hidden && exit != null);
120824
120898
  }
120825
- const ref = React12.useRef(null);
120826
- const exitRef = React12.useRef(exit);
120899
+ const ref = React13.useRef(null);
120900
+ const exitRef = React13.useRef(exit);
120827
120901
  exitRef.current = exit;
120828
120902
  useIsomorphicLayoutEffect(() => {
120829
120903
  if (!exiting) return void 0;
@@ -120856,8 +120930,8 @@ var init_renderNode = __esm({
120856
120930
  const target = raw == null || raw === "" || isBound && !ctx.provider ? legacy : sectionSlot(isBound ? bound2 : raw);
120857
120931
  const { graceMs, floorMs } = loadingTiming(ctx.kit, props.loadingGraceMs ?? props.loading_grace_ms, props.loadingFloorMs ?? props.loading_floor_ms);
120858
120932
  const shown2 = useLoadingTiming(target, graceMs, floorMs);
120859
- const changed = React12.useRef(false);
120860
- const first = React12.useRef(shown2);
120933
+ const changed = React13.useRef(false);
120934
+ const first = React13.useRef(shown2);
120861
120935
  if (shown2 !== first.current) changed.current = true;
120862
120936
  const renderCfg = (cfg) => cfg && typeof cfg === "object" ? /* @__PURE__ */ jsxs8("div", { style: { textAlign: "center", padding: "24px 12px", color: C2("textSecondary", "#9aa2ad") }, children: [
120863
120937
  cfg.title && /* @__PURE__ */ jsx11("div", { style: { fontSize: pxToRem(15), fontWeight: 600, color: C2("textPrimary", "#111") }, children: asText2(cfg.title) }),
@@ -120889,8 +120963,8 @@ var init_renderNode = __esm({
120889
120963
  }
120890
120964
  const animate = motionDefaultsAnimate(ctx);
120891
120965
  const fadeMs = motionDefaultsDuration(ctx.kit, 220);
120892
- const lastShown = React12.useRef(null);
120893
- const [outgoing, setOutgoing] = React12.useState(null);
120966
+ const lastShown = React13.useRef(null);
120967
+ const [outgoing, setOutgoing] = React13.useState(null);
120894
120968
  useIsomorphicLayoutEffect(() => {
120895
120969
  const was = lastShown.current;
120896
120970
  if (!animate || !was || was.slot === shown2 || was.node == null) return void 0;
@@ -120898,7 +120972,7 @@ var init_renderNode = __esm({
120898
120972
  const t2 = setTimeout(() => setOutgoing(null), fadeMs);
120899
120973
  return () => clearTimeout(t2);
120900
120974
  }, [shown2]);
120901
- React12.useEffect(() => {
120975
+ React13.useEffect(() => {
120902
120976
  lastShown.current = { slot: shown2, node: content };
120903
120977
  });
120904
120978
  if (changed.current && animate) {
@@ -120934,7 +121008,7 @@ var init_renderNode = __esm({
120934
121008
  const onChangeAction = resolveRowAction2(props.onChange ?? cfg.onChange, ctx);
120935
121009
  const borderless = props.borderless === true || cfg.borderless === true;
120936
121010
  const secure = props.secure === true || cfg.secure === true;
120937
- const [valueVisible, setValueVisible] = React12.useState(false);
121011
+ const [valueVisible, setValueVisible] = React13.useState(false);
120938
121012
  const visibilityToggle = secure && (props.visibilityToggle === true || cfg.visibilityToggle === true);
120939
121013
  const visibilityLabel = ctx.catalog?.get(valueVisible ? "auth.gate.password.hide" : "auth.gate.password.show") ?? (valueVisible ? "Hide password" : "Show password");
120940
121014
  const erroredProp = props.error === true || cfg.error === true;
@@ -120948,20 +121022,20 @@ var init_renderNode = __esm({
120948
121022
  const boundRawText = typeof boundVal === "string" ? boundVal : typeof boundVal === "number" ? String(boundVal) : void 0;
120949
121023
  const boundText = serializeRichText && boundRawText !== void 0 ? richTextHtmlToPlainText(boundRawText) : boundRawText;
120950
121024
  const literalText = typeof valueBinding === "string" ? serializeRichText ? richTextHtmlToPlainText(valueBinding) : valueBinding : "";
120951
- const [local, setLocal] = React12.useState(
121025
+ const [local, setLocal] = React13.useState(
120952
121026
  isBound ? boundText ?? "" : literalText
120953
121027
  );
120954
- const [edited, setEdited] = React12.useState(false);
120955
- const [pristineRichValue, setPristineRichValue] = React12.useState(
121028
+ const [edited, setEdited] = React13.useState(false);
121029
+ const [pristineRichValue, setPristineRichValue] = React13.useState(
120956
121030
  serializeRichText ? isBound ? boundRawText : typeof valueBinding === "string" ? valueBinding : void 0 : void 0
120957
121031
  );
120958
- const focused = React12.useRef(false);
120959
- const [touched, setTouched] = React12.useState(false);
120960
- const [isFocused, setIsFocused] = React12.useState(false);
120961
- const pendingEdits = React12.useRef([]);
120962
- const previousBoundText = React12.useRef(boundText);
120963
- const previousBoundRawText = React12.useRef(boundRawText);
120964
- React12.useEffect(() => {
121032
+ const focused = React13.useRef(false);
121033
+ const [touched, setTouched] = React13.useState(false);
121034
+ const [isFocused, setIsFocused] = React13.useState(false);
121035
+ const pendingEdits = React13.useRef([]);
121036
+ const previousBoundText = React13.useRef(boundText);
121037
+ const previousBoundRawText = React13.useRef(boundRawText);
121038
+ React13.useEffect(() => {
120965
121039
  if (!isBound || boundText === void 0) return;
120966
121040
  const boundTextChanged = previousBoundText.current !== boundText;
120967
121041
  const boundRawTextChanged = previousBoundRawText.current !== boundRawText;
@@ -120992,23 +121066,23 @@ var init_renderNode = __esm({
120992
121066
  }
120993
121067
  if (!focused.current && boundText !== local) setLocal(boundText);
120994
121068
  }, [boundText, serializeRichText ? boundRawText : void 0, isFocused, serializeRichText ? edited : false]);
120995
- const formBag = React12.useContext(FormValuesContext);
121069
+ const formBag = React13.useContext(FormValuesContext);
120996
121070
  const fieldId = props.__formFieldId;
120997
- const previousBinding = React12.useRef(binding2);
121071
+ const previousBinding = React13.useRef(binding2);
120998
121072
  const rule = props.validation ?? cfg.validation;
120999
121073
  const { "aria-labelledby": labelledBy } = formFieldA11y(props);
121000
121074
  const required3 = rule?.required === true || void 0;
121001
- const ruleKey = React12.useMemo(() => rule ? JSON.stringify(rule) : "", [rule]);
121002
- React12.useEffect(() => {
121075
+ const ruleKey = React13.useMemo(() => rule ? JSON.stringify(rule) : "", [rule]);
121076
+ React13.useEffect(() => {
121003
121077
  if (!formBag || !fieldId) return;
121004
121078
  formBag.register(fieldId, rule);
121005
121079
  return () => formBag.unregister(fieldId);
121006
121080
  }, [fieldId, formBag, ruleKey]);
121007
121081
  const formValue = serializeRichText && !edited && pristineRichValue !== void 0 ? pristineRichValue : serializeRichText ? richTextEditedHtml(pristineRichValue, pristineRichValue === void 0 ? "" : richTextHtmlToPlainText(pristineRichValue), local) : local;
121008
- React12.useEffect(() => {
121082
+ React13.useEffect(() => {
121009
121083
  if (formBag && fieldId) formBag.set(fieldId, formValue);
121010
121084
  }, [formValue, fieldId, formBag, binding2]);
121011
- React12.useEffect(() => {
121085
+ React13.useEffect(() => {
121012
121086
  if (previousBinding.current === binding2) return;
121013
121087
  previousBinding.current = binding2;
121014
121088
  pendingEdits.current = [];
@@ -121027,7 +121101,7 @@ var init_renderNode = __esm({
121027
121101
  const errorTextRaw = props.errorText ?? cfg.errorText;
121028
121102
  const errorTextResolved = useBoundString(errorTextRaw, ctx);
121029
121103
  const workerError = typeof boundError === "string" ? boundError : errorTextRaw == null ? void 0 : errorTextResolved;
121030
- const validationCatalog = React12.useMemo(
121104
+ const validationCatalog = React13.useMemo(
121031
121105
  () => ctx.catalog ? new Proxy({}, { get: (_t2, k2) => typeof k2 === "string" ? ctx.catalog.get(k2) : void 0 }) : void 0,
121032
121106
  [ctx.catalog]
121033
121107
  );
@@ -121042,7 +121116,7 @@ var init_renderNode = __esm({
121042
121116
  const hasWorkerError = Boolean(workerError && workerError.trim());
121043
121117
  const painted2 = rawMessage === null ? "" : translateOnly(rawMessage);
121044
121118
  const message2 = !painted2.trim() || ruleMessagePending && !hasWorkerError ? null : painted2;
121045
- const [feedbackShown, setFeedbackShown] = React12.useState(false);
121119
+ const [feedbackShown, setFeedbackShown] = React13.useState(false);
121046
121120
  const revealed = message2 !== null && shouldRevealError({
121047
121121
  rule,
121048
121122
  feedbackShown,
@@ -121051,11 +121125,11 @@ var init_renderNode = __esm({
121051
121125
  focused: isFocused,
121052
121126
  submitAttempted: formBag?.submitAttempted ?? false
121053
121127
  });
121054
- React12.useEffect(() => {
121128
+ React13.useEffect(() => {
121055
121129
  if (revealed) setFeedbackShown(true);
121056
121130
  }, [revealed]);
121057
121131
  const errored = erroredProp || revealed;
121058
- const generatedId = React12.useId();
121132
+ const generatedId = React13.useId();
121059
121133
  const errorId = revealed ? `${componentId ?? generatedId}__error` : void 0;
121060
121134
  const emit = (v2) => {
121061
121135
  if (onChangeAction && ctx.onAction) {
@@ -121067,16 +121141,16 @@ var init_renderNode = __esm({
121067
121141
  });
121068
121142
  }
121069
121143
  };
121070
- const ownsPrivateDraft = React12.useRef(false);
121071
- React12.useEffect(() => {
121144
+ const ownsPrivateDraft = React13.useRef(false);
121145
+ React13.useEffect(() => {
121072
121146
  if (visibilityToggle && !isBound) ownsPrivateDraft.current = true;
121073
121147
  }, [visibilityToggle, isBound]);
121074
- const clearSensitiveDraft = React12.useRef(() => {
121148
+ const clearSensitiveDraft = React13.useRef(() => {
121075
121149
  });
121076
121150
  clearSensitiveDraft.current = () => {
121077
121151
  if (ownsPrivateDraft.current && !isBound) emit("");
121078
121152
  };
121079
- React12.useEffect(() => () => clearSensitiveDraft.current(), []);
121153
+ React13.useEffect(() => () => clearSensitiveDraft.current(), []);
121080
121154
  const onInput = (e2) => {
121081
121155
  const v2 = e2.currentTarget.value;
121082
121156
  setLocal(v2);
@@ -121108,7 +121182,7 @@ var init_renderNode = __esm({
121108
121182
  const submitLabelRaw = props.submitLabel ?? cfg.submitLabel;
121109
121183
  const onSubmitAction = props.onSubmit ?? cfg.onSubmit;
121110
121184
  const enterKeyHint = !multilineBox && ENTER_KEY_HINTS.has(submitLabelRaw) ? submitLabelRaw : !multilineBox && onSubmitAction ? "done" : void 0;
121111
- const inputRef = React12.useRef(null);
121185
+ const inputRef = React13.useRef(null);
121112
121186
  useIsomorphicLayoutEffect(() => {
121113
121187
  const el2 = inputRef.current;
121114
121188
  const view = el2?.ownerDocument?.defaultView;
@@ -121123,8 +121197,8 @@ var init_renderNode = __esm({
121123
121197
  }, [local, multilineBox, maxLines]);
121124
121198
  const focusBinding = (typeof props.focusPath === "string" ? props.focusPath : typeof cfg.focusPath === "string" ? cfg.focusPath : void 0) ?? "";
121125
121199
  const focusTokenVal = useBoundValue(ctx, focusBinding);
121126
- const lastFocusToken = React12.useRef(void 0);
121127
- React12.useEffect(() => {
121200
+ const lastFocusToken = React13.useRef(void 0);
121201
+ React13.useEffect(() => {
121128
121202
  if (!focusBinding) return;
121129
121203
  const next = typeof focusTokenVal === "string" ? focusTokenVal : typeof focusTokenVal === "number" ? String(focusTokenVal) : "";
121130
121204
  if (!next || next === lastFocusToken.current) return;
@@ -121199,8 +121273,8 @@ var init_renderNode = __esm({
121199
121273
  };
121200
121274
  MENU_ANCHOR_CONTROL = 'a[href], button, input, select, textarea, [tabindex]:not([tabindex="-1"]), [role="button"], [role="link"]';
121201
121275
  MenuNode = withExtras("MenuNode", ({ props, ctx, wrap }) => {
121202
- const [open, setOpen] = React12.useState(false);
121203
- const hostRef = React12.useRef(null);
121276
+ const [open, setOpen] = React13.useState(false);
121277
+ const hostRef = React13.useRef(null);
121204
121278
  const context = menuOpensOnLongPress(props.style);
121205
121279
  const itemsPath = typeof props.itemsPath === "string" && props.itemsPath.startsWith("$service:") ? props.itemsPath : "";
121206
121280
  const boundItems = useBoundValue(ctx, itemsPath);
@@ -121208,7 +121282,7 @@ var init_renderNode = __esm({
121208
121282
  const previewMode = context && props.preview != null;
121209
121283
  const items = sourceItems.map((it2) => ({ ...it2, label: typeof it2?.label === "string" && it2.label.startsWith("$item") ? resolveItemDeep2(it2.label, ctx) : it2?.label, disabled: it2?.disabled === true || !it2?.action }));
121210
121284
  const C2 = ctx.color;
121211
- React12.useEffect(() => {
121285
+ React13.useEffect(() => {
121212
121286
  if (!open) return;
121213
121287
  const onTop = () => menuRef.current != null && isWithinTopModal(menuRef.current);
121214
121288
  const onDown = (e2) => {
@@ -121234,11 +121308,11 @@ var init_renderNode = __esm({
121234
121308
  const flexGrow = typeof wrap?.flex === "string" ? parseFloat(wrap.flex) : typeof wrap?.flex === "number" ? wrap.flex : Number(wrap?.flexGrow ?? 0);
121235
121309
  const fill = wrap?.width === "100%" || Number.isFinite(flexGrow) && flexGrow > 0;
121236
121310
  const popupPlacement = fill ? { position: "absolute", top: "100%", left: 0, right: 0, zIndex: 20, marginTop: 4 } : { position: "absolute", top: "100%", right: 0, zIndex: 20, marginTop: 4 };
121237
- const anchorRef = React12.useRef(null);
121238
- const menuRef = React12.useRef(null);
121239
- const dialogRef = React12.useRef(null);
121240
- const [popupAlignLeft, setPopupAlignLeft] = React12.useState(false);
121241
- const [popupAbove, setPopupAbove] = React12.useState(false);
121311
+ const anchorRef = React13.useRef(null);
121312
+ const menuRef = React13.useRef(null);
121313
+ const dialogRef = React13.useRef(null);
121314
+ const [popupAlignLeft, setPopupAlignLeft] = React13.useState(false);
121315
+ const [popupAbove, setPopupAbove] = React13.useState(false);
121242
121316
  useIsomorphicLayoutEffect(() => {
121243
121317
  if (!open || !anchorRef.current || !menuRef.current) return;
121244
121318
  const anchor = anchorRef.current.getBoundingClientRect();
@@ -121260,8 +121334,8 @@ var init_renderNode = __esm({
121260
121334
  setPopupAlignLeft(anchor.right - popup.width < left);
121261
121335
  setPopupAbove(anchor.bottom + popup.height + 4 > bottom && anchor.top - popup.height - 4 >= top);
121262
121336
  });
121263
- const [innerControl, setInnerControl] = React12.useState(null);
121264
- const innerControlRef = React12.useRef(null);
121337
+ const [innerControl, setInnerControl] = React13.useState(null);
121338
+ const innerControlRef = React13.useRef(null);
121265
121339
  useIsomorphicLayoutEffect(() => {
121266
121340
  const anchor = anchorRef.current;
121267
121341
  const refresh = () => {
@@ -121277,7 +121351,7 @@ var init_renderNode = __esm({
121277
121351
  observer.observe(anchor, { childList: true, subtree: true, attributes: true, attributeFilter: ["disabled", "tabindex", "href", "role"] });
121278
121352
  return () => observer.disconnect();
121279
121353
  });
121280
- React12.useEffect(() => {
121354
+ React13.useEffect(() => {
121281
121355
  if (!innerControl) return;
121282
121356
  innerControl.setAttribute("aria-haspopup", "menu");
121283
121357
  innerControl.setAttribute("aria-expanded", String(open));
@@ -121289,13 +121363,13 @@ var init_renderNode = __esm({
121289
121363
  };
121290
121364
  }, [innerControl, open]);
121291
121365
  const itemsKey = items.map((it2, i2) => `${it2?.id ?? i2}:${it2?.disabled ? 0 : 1}`).join("|");
121292
- React12.useEffect(() => {
121366
+ React13.useEffect(() => {
121293
121367
  if (!open || !modal) return;
121294
121368
  const menu = menuRef.current;
121295
121369
  if (!menu || menu.contains(document.activeElement)) return;
121296
121370
  (menu.querySelector('[role="menuitem"][tabindex="0"]') ?? menu).focus();
121297
121371
  }, [open, modal, itemsKey]);
121298
- React12.useEffect(() => {
121372
+ React13.useEffect(() => {
121299
121373
  if (!open || !modal) return;
121300
121374
  const layer = pushModalLayer(() => dialogRef.current);
121301
121375
  return () => {
@@ -121317,11 +121391,11 @@ var init_renderNode = __esm({
121317
121391
  e2.preventDefault();
121318
121392
  items2[next].focus();
121319
121393
  };
121320
- const pressTimer = React12.useRef(null);
121321
- const longPressed = React12.useRef(false);
121322
- const touchOrigin = React12.useRef(null);
121323
- const suppressNextClick = React12.useRef(false);
121324
- const suppressTimer = React12.useRef(null);
121394
+ const pressTimer = React13.useRef(null);
121395
+ const longPressed = React13.useRef(false);
121396
+ const touchOrigin = React13.useRef(null);
121397
+ const suppressNextClick = React13.useRef(false);
121398
+ const suppressTimer = React13.useRef(null);
121325
121399
  const clearSuppress = () => {
121326
121400
  suppressNextClick.current = false;
121327
121401
  if (suppressTimer.current != null) {
@@ -121335,7 +121409,7 @@ var init_renderNode = __esm({
121335
121409
  pressTimer.current = null;
121336
121410
  }
121337
121411
  };
121338
- React12.useEffect(() => () => {
121412
+ React13.useEffect(() => () => {
121339
121413
  cancelPress();
121340
121414
  clearSuppress();
121341
121415
  }, []);
@@ -121501,9 +121575,9 @@ var init_renderNode = __esm({
121501
121575
  const isBound = typeof raw === "string" && isBinding(raw);
121502
121576
  const bound2 = useBoundValue(ctx, isBound ? raw : "");
121503
121577
  const cursor = isBound ? typeof bound2 === "string" ? bound2 : "" : String(raw ?? "");
121504
- const ref = React12.useRef(null);
121505
- const fired = React12.useRef("");
121506
- React12.useEffect(() => {
121578
+ const ref = React13.useRef(null);
121579
+ const fired = React13.useRef("");
121580
+ React13.useEffect(() => {
121507
121581
  fired.current = "";
121508
121582
  const el2 = ref.current;
121509
121583
  if (!cursor || !ctx.onAction || !el2 || typeof IntersectionObserver === "undefined") return;
@@ -121534,11 +121608,11 @@ var init_renderNode = __esm({
121534
121608
  ] });
121535
121609
  });
121536
121610
  FormView = withExtras("FormView", ({ props, ctx, wrap }) => {
121537
- const bagRef = React12.useRef(null);
121611
+ const bagRef = React13.useRef(null);
121538
121612
  if (!bagRef.current) bagRef.current = createFormBag();
121539
121613
  const bag = bagRef.current;
121540
- React12.useSyncExternalStore(
121541
- React12.useCallback((cb) => bag.subscribe(cb), [bag]),
121614
+ React13.useSyncExternalStore(
121615
+ React13.useCallback((cb) => bag.subscribe(cb), [bag]),
121542
121616
  () => bag.version,
121543
121617
  () => bag.version
121544
121618
  );
@@ -121555,7 +121629,7 @@ var init_renderNode = __esm({
121555
121629
  ctx.onAction?.({ ...action, args: merged });
121556
121630
  }
121557
121631
  };
121558
- const submitNode = React12.useMemo(() => {
121632
+ const submitNode = React13.useMemo(() => {
121559
121633
  const node = props.submitButton;
121560
121634
  if (!node || valid) return node;
121561
121635
  if (node.body) return { ...node, body: { ...node.body, props: { ...node.body.props ?? {}, disabled: true } } };
@@ -121605,11 +121679,11 @@ var init_renderNode = __esm({
121605
121679
  const startPositionPath = typeof props.startPositionSeconds === "string" && isBinding(props.startPositionSeconds) ? props.startPositionSeconds : "";
121606
121680
  const boundStartPosition = useResolvedScalar(startPositionPath || void 0, ctx);
121607
121681
  const initialStartPosition = startPositionPath && typeof boundStartPosition === "number" && Number.isFinite(boundStartPosition) ? Math.max(0, boundStartPosition) : Math.max(0, Number.isFinite(Number(props.startPositionSeconds)) ? Number(props.startPositionSeconds) : 0);
121608
- const [index, setIndex] = React12.useState(initialIndex);
121682
+ const [index, setIndex] = React13.useState(initialIndex);
121609
121683
  const queueReady = !itemsPath || Array.isArray(boundQueue);
121610
121684
  const seatKey = `${itemsPath ?? ""}|${startIndex}`;
121611
- const seated = React12.useRef(null);
121612
- React12.useEffect(() => {
121685
+ const seated = React13.useRef(null);
121686
+ React13.useEffect(() => {
121613
121687
  const last = Math.max(0, resolvedItems.length - 1);
121614
121688
  if (resolvedItems.length === 0) return;
121615
121689
  if (queueReady && seated.current !== seatKey) {
@@ -121624,19 +121698,19 @@ var init_renderNode = __esm({
121624
121698
  }
121625
121699
  setIndex((i2) => Math.min(Math.max(0, i2), last));
121626
121700
  }, [resolvedItems.length, startIndex, queueReady, seatKey]);
121627
- const [status, setStatus] = React12.useState("idle");
121628
- const [position, setPosition] = React12.useState(initialStartPosition);
121629
- const [duration2, setDuration] = React12.useState(0);
121630
- const [buffered, setBuffered] = React12.useState(0);
121631
- const [rate, setRateState] = React12.useState(1);
121632
- const [fullscreen, setFullscreen] = React12.useState(false);
121633
- const [error, setError] = React12.useState("");
121634
- const mediaRef = React12.useRef(null);
121635
- const hostRef = React12.useRef(null);
121636
- const autoplayConsumed = React12.useRef(false);
121701
+ const [status, setStatus] = React13.useState("idle");
121702
+ const [position, setPosition] = React13.useState(initialStartPosition);
121703
+ const [duration2, setDuration] = React13.useState(0);
121704
+ const [buffered, setBuffered] = React13.useState(0);
121705
+ const [rate, setRateState] = React13.useState(1);
121706
+ const [fullscreen, setFullscreen] = React13.useState(false);
121707
+ const [error, setError] = React13.useState("");
121708
+ const mediaRef = React13.useRef(null);
121709
+ const hostRef = React13.useRef(null);
121710
+ const autoplayConsumed = React13.useRef(false);
121637
121711
  const item = resolvedItems[index];
121638
121712
  const mediaKey2 = `${index}:${item?.id ?? item?.url ?? ""}`;
121639
- React12.useEffect(() => {
121713
+ React13.useEffect(() => {
121640
121714
  const outgoing = mediaRef.current;
121641
121715
  return () => {
121642
121716
  try {
@@ -121650,7 +121724,7 @@ var init_renderNode = __esm({
121650
121724
  const isYouTube = provider === "youtube";
121651
121725
  const isUnsupportedProvider = provider !== "direct" && !isYouTube;
121652
121726
  const isAudio = ["audio", "podcast", "radio"].includes(String(item?.kind ?? ""));
121653
- const capabilities = React12.useMemo(() => ({
121727
+ const capabilities = React13.useMemo(() => ({
121654
121728
  seek: !isUnsupportedProvider && item?.live !== true,
121655
121729
  rate: !isUnsupportedProvider && item?.live !== true,
121656
121730
  queue: !isUnsupportedProvider && items.length > 1,
@@ -121678,9 +121752,9 @@ var init_renderNode = __esm({
121678
121752
  error,
121679
121753
  capabilities
121680
121754
  };
121681
- const slotProvider = React12.useMemo(() => new MediaSlotProvider(state), []);
121682
- React12.useEffect(() => slotProvider.set(state));
121683
- React12.useEffect(() => {
121755
+ const slotProvider = React13.useMemo(() => new MediaSlotProvider(state), []);
121756
+ React13.useEffect(() => slotProvider.set(state));
121757
+ React13.useEffect(() => {
121684
121758
  if (!startPositionPath || typeof boundStartPosition !== "number" || !Number.isFinite(boundStartPosition) || status !== "idle") return;
121685
121759
  const next = Math.max(0, boundStartPosition);
121686
121760
  setPosition(next);
@@ -121691,7 +121765,7 @@ var init_renderNode = __esm({
121691
121765
  }
121692
121766
  }
121693
121767
  }, [startPositionPath, boundStartPosition, status]);
121694
- const emit = React12.useCallback((action, extra = {}) => {
121768
+ const emit = React13.useCallback((action, extra = {}) => {
121695
121769
  if (!action || !ctx.onAction) return;
121696
121770
  const snapshot3 = {
121697
121771
  sessionId,
@@ -121710,13 +121784,13 @@ var init_renderNode = __esm({
121710
121784
  };
121711
121785
  ctx.onAction({ ...action, args: { ...action.args ?? {}, ...snapshot3, ...extra }, params: { ...action.params ?? {}, sessionId, index: String(index), ...Object.fromEntries(Object.entries(extra).map(([k2, v2]) => [k2, String(v2)])) } });
121712
121786
  }, [ctx.onAction, sessionId, status, index, position, duration2, item, buffered, rate, props.muted, fullscreen, error]);
121713
- React12.useEffect(() => {
121787
+ React13.useEffect(() => {
121714
121788
  if (!isUnsupportedProvider || status === "error") return;
121715
121789
  setStatus("error");
121716
121790
  setError("provider_unsupported");
121717
121791
  emit(props.onError, { state: "error", status: "error", error: "provider_unsupported", code: "provider_unsupported" });
121718
121792
  }, [isUnsupportedProvider, status, emit, props.onError]);
121719
- const play = React12.useCallback(async () => {
121793
+ const play = React13.useCallback(async () => {
121720
121794
  if (isYouTube) return;
121721
121795
  if (isUnsupportedProvider) {
121722
121796
  setStatus("error");
@@ -121738,17 +121812,17 @@ var init_renderNode = __esm({
121738
121812
  emit(props.onError, { state: "blocked", status: "blocked", error: message2, code: "playback_blocked" });
121739
121813
  }
121740
121814
  }, [isYouTube, isUnsupportedProvider, emit, props.onError]);
121741
- const pause = React12.useCallback(() => {
121815
+ const pause = React13.useCallback(() => {
121742
121816
  mediaRef.current?.pause();
121743
121817
  setStatus("paused");
121744
121818
  }, []);
121745
- const seek = React12.useCallback((seconds) => {
121819
+ const seek = React13.useCallback((seconds) => {
121746
121820
  const media = mediaRef.current;
121747
121821
  if (!media || !Number.isFinite(seconds)) return;
121748
121822
  media.currentTime = Math.max(0, Math.min(seconds, Number.isFinite(media.duration) ? media.duration : seconds));
121749
121823
  setPosition(media.currentTime);
121750
121824
  }, []);
121751
- const select2 = React12.useCallback((next) => {
121825
+ const select2 = React13.useCallback((next) => {
121752
121826
  if (resolvedItems.length === 0) return;
121753
121827
  const normalized = (next % resolvedItems.length + resolvedItems.length) % resolvedItems.length;
121754
121828
  const nextItem = resolvedItems[normalized];
@@ -121770,7 +121844,7 @@ var init_renderNode = __esm({
121770
121844
  error: ""
121771
121845
  });
121772
121846
  }, [resolvedItems, emit, props.onItemChange]);
121773
- const toggleFullscreen = React12.useCallback(async () => {
121847
+ const toggleFullscreen = React13.useCallback(async () => {
121774
121848
  if (props.fullscreen === "disabled") return;
121775
121849
  const host = hostRef.current;
121776
121850
  try {
@@ -121780,7 +121854,7 @@ var init_renderNode = __esm({
121780
121854
  setFullscreen((value2) => !value2);
121781
121855
  }
121782
121856
  }, [props.fullscreen]);
121783
- React12.useEffect(() => {
121857
+ React13.useEffect(() => {
121784
121858
  const listener = (event) => {
121785
121859
  const detail = event.detail;
121786
121860
  if (!detail || detail.sessionId !== sessionId) return;
@@ -121828,7 +121902,7 @@ var init_renderNode = __esm({
121828
121902
  window.addEventListener("himalaya-media-command", listener);
121829
121903
  return () => window.removeEventListener("himalaya-media-command", listener);
121830
121904
  }, [sessionId, index, play, pause, seek, select2, toggleFullscreen]);
121831
- React12.useEffect(() => {
121905
+ React13.useEffect(() => {
121832
121906
  const listener = () => {
121833
121907
  const value2 = document.fullscreenElement === hostRef.current;
121834
121908
  setFullscreen(value2);
@@ -121837,14 +121911,14 @@ var init_renderNode = __esm({
121837
121911
  document.addEventListener("fullscreenchange", listener);
121838
121912
  return () => document.removeEventListener("fullscreenchange", listener);
121839
121913
  }, [emit, props.onFullscreenChange]);
121840
- React12.useEffect(() => {
121914
+ React13.useEffect(() => {
121841
121915
  const media = mediaRef.current;
121842
121916
  if (!media || isYouTube || isUnsupportedProvider) return;
121843
121917
  media.muted = props.muted === true;
121844
121918
  media.playbackRate = rate;
121845
121919
  if (position > 0) media.currentTime = position;
121846
121920
  }, [item?.url, isUnsupportedProvider]);
121847
- React12.useEffect(() => {
121921
+ React13.useEffect(() => {
121848
121922
  if (isYouTube || isUnsupportedProvider || props.autoplay === "never" || autoplayConsumed.current) return;
121849
121923
  if (props.autoplay === "once") {
121850
121924
  autoplayConsumed.current = true;
@@ -122046,15 +122120,15 @@ var init_renderNode = __esm({
122046
122120
  }
122047
122121
  );
122048
122122
  });
122049
- PdfDocumentCanvas = React12.lazy(() => Promise.resolve().then(() => (init_pdfDocument(), pdfDocument_exports)).then((module) => ({ default: module.PdfDocument })));
122123
+ PdfDocumentCanvas = React13.lazy(() => Promise.resolve().then(() => (init_pdfDocument(), pdfDocument_exports)).then((module) => ({ default: module.PdfDocument })));
122050
122124
  PdfViewNode = withExtras("PdfViewNode", ({ props, ctx, wrap }) => {
122051
122125
  const boundUrl = useResolvedScalar(props.url != null && isBinding(props.url) ? props.url : void 0, ctx);
122052
122126
  const url = props.url != null && isBinding(props.url) ? boundUrl : props.url;
122053
122127
  const rawUrl = typeof url === "string" && !isBinding(url) ? url : "";
122054
122128
  const plan = rawUrl ? pdfEmbedPlan(rawUrl, void 0, typeof document !== "undefined" ? document.baseURI : void 0) : null;
122055
122129
  const retypeSrc = plan?.mode === "retype" ? plan.src : null;
122056
- const [retyped, setRetyped] = React12.useState(null);
122057
- React12.useEffect(() => {
122130
+ const [retyped, setRetyped] = React13.useState(null);
122131
+ React13.useEffect(() => {
122058
122132
  if (!retypeSrc) return;
122059
122133
  let live3 = true;
122060
122134
  let made = null;
@@ -122076,11 +122150,11 @@ var init_renderNode = __esm({
122076
122150
  }, [retypeSrc]);
122077
122151
  const settled = retyped && retyped.from === retypeSrc ? retyped : null;
122078
122152
  const wantsShare = props.allowShare === true;
122079
- const [fellBackFrom, setFellBackFrom] = React12.useState(null);
122153
+ const [fellBackFrom, setFellBackFrom] = React13.useState(null);
122080
122154
  const directFellBack = plan?.mode === "direct" && fellBackFrom === plan.src;
122081
122155
  const directSrc = plan?.mode === "direct" && (wantsShare || props.showPageControls !== false && directFellBack) ? plan.src : null;
122082
- const [direct, setDirect] = React12.useState(null);
122083
- React12.useEffect(() => {
122156
+ const [direct, setDirect] = React13.useState(null);
122157
+ React13.useEffect(() => {
122084
122158
  if (!directSrc) return;
122085
122159
  let live3 = true;
122086
122160
  let made = null;
@@ -122097,16 +122171,16 @@ var init_renderNode = __esm({
122097
122171
  }, [directSrc, wantsShare]);
122098
122172
  const directDoc = direct && direct.from === directSrc ? direct : null;
122099
122173
  const fallbackPageCount = plan?.mode === "retype" ? settled?.pageCount ?? null : directDoc?.count ?? null;
122100
- const [nav, setNav] = React12.useState({ from: rawUrl, page: null, zoom: null });
122174
+ const [nav, setNav] = React13.useState({ from: rawUrl, page: null, zoom: null });
122101
122175
  const view = nav.from === rawUrl ? nav : { from: rawUrl, page: null, zoom: null };
122102
122176
  const src = plan?.mode === "direct" ? plan.src : settled?.url ?? null;
122103
- const [canvasCount, setCanvasCount] = React12.useState(null);
122104
- const onPageCount = React12.useCallback((count2) => {
122177
+ const [canvasCount, setCanvasCount] = React13.useState(null);
122178
+ const onPageCount = React13.useCallback((count2) => {
122105
122179
  if (!Number.isInteger(count2) || count2 < 1) return;
122106
122180
  setCanvasCount((cur) => cur?.from === src && cur.count === count2 ? cur : { from: src, count: count2 });
122107
122181
  }, [src]);
122108
122182
  const pageCount = canvasCount?.from === src ? canvasCount.count : fallbackPageCount;
122109
- const onFallback = React12.useCallback(() => setFellBackFrom(src), [src]);
122183
+ const onFallback = React13.useCallback(() => setFellBackFrom(src), [src]);
122110
122184
  const loading = plan?.mode === "retype" && !settled || directSrc != null && wantsShare && !directDoc && typeof window !== "undefined";
122111
122185
  const loadSrc = plan?.mode === "direct" && wantsShare ? directDoc?.blobUrl ?? src : src;
122112
122186
  const ph = typeof props.height === "number" && props.height > 0 ? props.height : void 0;
@@ -122156,7 +122230,7 @@ var init_renderNode = __esm({
122156
122230
  const data = base + pdfOpenFragment(sourceHash, { page, zoom: zoomable ? view.zoom : null, fitWidth: !zoomable });
122157
122231
  const label3 = typeof props.title === "string" && props.title ? props.title : "PDF document";
122158
122232
  const documentStyle = showPageControls || zoomable || allowShare ? { display: "block", width: "100%", flex: "1 1 auto", minHeight: ph ? 0 : 280, border: "none" } : frame;
122159
- const object10 = typeof window === "undefined" ? /* @__PURE__ */ jsx11("object", { "data-himalaya-pdf": "static-fallback", data, type: "application/pdf", "aria-label": label3, style: documentStyle }) : /* @__PURE__ */ jsx11(React12.Suspense, { fallback: /* @__PURE__ */ jsx11("div", { "data-himalaya-pdf": "loading", role: "img", "aria-label": "loading document", "aria-busy": "true", style: documentStyle }), children: /* @__PURE__ */ jsx11(
122233
+ const object10 = typeof window === "undefined" ? /* @__PURE__ */ jsx11("object", { "data-himalaya-pdf": "static-fallback", data, type: "application/pdf", "aria-label": label3, style: documentStyle }) : /* @__PURE__ */ jsx11(React13.Suspense, { fallback: /* @__PURE__ */ jsx11("div", { "data-himalaya-pdf": "loading", role: "img", "aria-label": "loading document", "aria-busy": "true", style: documentStyle }), children: /* @__PURE__ */ jsx11(
122160
122234
  PdfDocumentCanvas,
122161
122235
  {
122162
122236
  src: loadSrc ?? src,
@@ -122238,7 +122312,7 @@ var init_renderNode = __esm({
122238
122312
  const ar2 = typeof props.aspectRatio === "number" && props.aspectRatio > 0 ? props.aspectRatio : void 0;
122239
122313
  const frameStyle = { width: "100%", boxSizing: "border-box", border: "none", borderRadius: ctx.radius("md", 8), background: "#fff", ...scrollEnabled ? {} : { overflow: "hidden" }, ...fill ? { flex: "1 1 0", minHeight: 0 } : h2 ? { height: h2 } : ar2 ? { aspectRatio: String(ar2) } : { height: 200 } };
122240
122314
  const reloadValue = reloadKeyOf(useResolvedScalar(props.reloadKeyPath != null && isBinding(props.reloadKeyPath) ? props.reloadKeyPath : void 0, ctx));
122241
- const reloadState = React12.useRef({ base: null, epoch: 0 });
122315
+ const reloadState = React13.useRef({ base: null, epoch: 0 });
122242
122316
  if (reloadValue !== null && reloadValue !== reloadState.current.base) {
122243
122317
  if (reloadState.current.base !== null) reloadState.current.epoch++;
122244
122318
  reloadState.current.base = reloadValue;
@@ -122246,11 +122320,11 @@ var init_renderNode = __esm({
122246
122320
  const reloadKey = reloadState.current.epoch > 0 ? String(reloadState.current.epoch) : "";
122247
122321
  const sourceKey = htmlStr ?? urlFrame?.src ?? null;
122248
122322
  const frameKey = sourceKey == null ? null : reloadKey ? `${sourceKey}\0${reloadKey}` : sourceKey;
122249
- const [loadedKey, setLoadedKey] = React12.useState(null);
122323
+ const [loadedKey, setLoadedKey] = React13.useState(null);
122250
122324
  const loaded = loadedKey === frameKey;
122251
122325
  const bridgeChannel = props.bridge === "worker" ? webViewChannelOf(ctx.provider) : null;
122252
- const frameRef = React12.useRef(null);
122253
- const bridgeLoad = React12.useRef({ loaded: false });
122326
+ const frameRef = React13.useRef(null);
122327
+ const bridgeLoad = React13.useRef({ loaded: false });
122254
122328
  if (bridgeLoad.current.key !== frameKey) {
122255
122329
  bridgeLoad.current.key = frameKey;
122256
122330
  bridgeLoad.current.loaded = false;
@@ -122274,7 +122348,7 @@ var init_renderNode = __esm({
122274
122348
  return /* @__PURE__ */ jsxs8("div", { style: { width: "100%", position: "relative", ...fill ? { height: "100%", flex: "1 1 0", minHeight: 0, display: "flex", flexDirection: "column" } : {}, ...bandColor ? { background: bandColor, borderRadius: ctx.radius("md", 8), overflow: "hidden" } : {}, ...wrap }, children: [
122275
122349
  bandColor ? /* @__PURE__ */ jsx11("div", { "data-testid": "webview-cover-band", style: { height: 8, background: bandColor } }) : null,
122276
122350
  htmlStr ? /* @__PURE__ */ jsx11("iframe", { ...frameProps, srcDoc: htmlStr, sandbox: "allow-scripts" }, frameKey ?? void 0) : urlFrame ? /* @__PURE__ */ jsx11("iframe", { ...frameProps, src: urlFrame.src, sandbox: urlFrame.sandbox }, frameKey ?? void 0) : /* @__PURE__ */ jsx11("div", { style: { ...frameStyle, display: "grid", placeItems: "center", color: "#999", fontFamily: "ui-monospace, monospace", fontSize: pxToRem(11), border: "1px dashed #ccc" }, children: urlStr ? "WebView (url not allowed)" : "WebView (no url)" }),
122277
- bridgeChannel ? /* @__PURE__ */ jsx11(React12.Suspense, { fallback: null, children: /* @__PURE__ */ jsx11(
122351
+ bridgeChannel ? /* @__PURE__ */ jsx11(React13.Suspense, { fallback: null, children: /* @__PURE__ */ jsx11(
122278
122352
  WebViewBridgeHost2,
122279
122353
  {
122280
122354
  channel: bridgeChannel,
@@ -122304,19 +122378,19 @@ var init_renderNode = __esm({
122304
122378
  const onChange = props.onChange;
122305
122379
  const boundSel = useResolvedScalar(isBinding(props.selectedId) ? props.selectedId : void 0, ctx);
122306
122380
  const selectedId = isBinding(props.selectedId) ? boundSel : props.selectedId;
122307
- const [sel, setSel] = React12.useState(ctx.empty ? "" : String(selectedId ?? ""));
122308
- React12.useEffect(() => {
122381
+ const [sel, setSel] = React13.useState(ctx.empty ? "" : String(selectedId ?? ""));
122382
+ React13.useEffect(() => {
122309
122383
  if (!ctx.empty && selectedId != null) setSel(String(selectedId));
122310
122384
  }, [selectedId, ctx.empty]);
122311
- const pickerBag = React12.useContext(FormValuesContext);
122385
+ const pickerBag = React13.useContext(FormValuesContext);
122312
122386
  const pickerFieldId = props.__formFieldId;
122313
122387
  const pickerRuleKey = props.validation ? JSON.stringify(props.validation) : "";
122314
- React12.useEffect(() => {
122388
+ React13.useEffect(() => {
122315
122389
  if (!pickerBag || !pickerFieldId) return;
122316
122390
  pickerBag.register(pickerFieldId, props.validation);
122317
122391
  return () => pickerBag.unregister(pickerFieldId);
122318
122392
  }, [pickerFieldId, pickerBag, pickerRuleKey]);
122319
- React12.useEffect(() => {
122393
+ React13.useEffect(() => {
122320
122394
  if (pickerBag && pickerFieldId) pickerBag.set(pickerFieldId, sel);
122321
122395
  }, [sel, pickerFieldId, pickerBag]);
122322
122396
  const emitPick = (id) => {
@@ -122432,24 +122506,24 @@ var init_renderNode = __esm({
122432
122506
  const s2 = seedUnix();
122433
122507
  return s2 == null ? null : clampUnix(s2);
122434
122508
  };
122435
- const [val, setVal] = React12.useState(ctx.empty ? "" : toInput(shownSeed()));
122509
+ const [val, setVal] = React13.useState(ctx.empty ? "" : toInput(shownSeed()));
122436
122510
  const dateServiceBound = typeof props.valuePath === "string" && props.valuePath.startsWith("$service:");
122437
122511
  const bagSource = () => dateServiceBound ? boundRaw : boundRaw !== void 0 && boundRaw !== null && boundRaw !== "" ? boundRaw : props.valueUnix;
122438
- const [dateBagVal, setDateBagVal] = React12.useState(ctx.empty ? "" : clampDateFieldValue(encodeDateFieldValue(bagSource()), props.minUnix, props.maxUnix, props.mode));
122439
- React12.useEffect(() => {
122512
+ const [dateBagVal, setDateBagVal] = React13.useState(ctx.empty ? "" : clampDateFieldValue(encodeDateFieldValue(bagSource()), props.minUnix, props.maxUnix, props.mode));
122513
+ React13.useEffect(() => {
122440
122514
  if (ctx.empty) return;
122441
122515
  setVal(toInput(shownSeed()));
122442
122516
  setDateBagVal(clampDateFieldValue(encodeDateFieldValue(bagSource()), props.minUnix, props.maxUnix, props.mode));
122443
122517
  }, [boundRaw, props.valueUnix, props.valuePath, ctx.empty]);
122444
- const dateBag = React12.useContext(FormValuesContext);
122518
+ const dateBag = React13.useContext(FormValuesContext);
122445
122519
  const dateFieldId = props.__formFieldId;
122446
122520
  const dateRuleKey = props.validation ? JSON.stringify(props.validation) : "";
122447
- React12.useEffect(() => {
122521
+ React13.useEffect(() => {
122448
122522
  if (!dateBag || !dateFieldId) return;
122449
122523
  dateBag.register(dateFieldId, props.validation);
122450
122524
  return () => dateBag.unregister(dateFieldId);
122451
122525
  }, [dateFieldId, dateBag, dateRuleKey]);
122452
- React12.useEffect(() => {
122526
+ React13.useEffect(() => {
122453
122527
  if (dateBag && dateFieldId) dateBag.set(dateFieldId, dateBagVal);
122454
122528
  }, [dateBagVal, dateFieldId, dateBag]);
122455
122529
  if (!ctx.onAction) {
@@ -122518,11 +122592,11 @@ var init_renderNode = __esm({
122518
122592
  const valueBinding = isBinding(props.value) ? props.value : void 0;
122519
122593
  const boundValue = useResolvedScalar(valueBinding, ctx);
122520
122594
  const initialValue2 = ctx.empty ? "" : valueBinding ? boundValue == null ? "" : String(boundValue) : String(props.value ?? "");
122521
- const [local, setLocal] = React12.useState(initialValue2);
122522
- React12.useEffect(() => {
122595
+ const [local, setLocal] = React13.useState(initialValue2);
122596
+ React13.useEffect(() => {
122523
122597
  if (!ctx.empty && valueBinding) setLocal(boundValue == null ? "" : String(boundValue));
122524
122598
  }, [boundValue, ctx.empty, valueBinding]);
122525
- const timer = React12.useRef(null);
122599
+ const timer = React13.useRef(null);
122526
122600
  const dispatch = (action, v2) => {
122527
122601
  if (!action || !ctx.onAction) return;
122528
122602
  ctx.onAction({ ...action, params: { ...action.params ?? {}, value: v2 }, args: { ...action.args ?? {}, value: v2 } });
@@ -122564,33 +122638,33 @@ var init_renderNode = __esm({
122564
122638
  const boundValue = useResolvedScalar(props.valuePath, ctx);
122565
122639
  const effectiveValue = props.valuePath != null ? boundValue : props.value;
122566
122640
  const fallbackValue = effectiveValue ?? props.value ?? 0;
122567
- const [value2, setValue] = React12.useState(() => {
122641
+ const [value2, setValue] = React13.useState(() => {
122568
122642
  const seed2 = Number(fallbackValue);
122569
122643
  return Number.isFinite(seed2) ? Math.min(max, Math.max(min, seed2)) : 0;
122570
122644
  });
122571
- React12.useEffect(() => {
122645
+ React13.useEffect(() => {
122572
122646
  const next = Number(fallbackValue);
122573
122647
  if (Number.isFinite(next)) setValue(Math.min(max, Math.max(min, next)));
122574
122648
  }, [fallbackValue, min, max]);
122575
- const stepperBag = React12.useContext(FormValuesContext);
122649
+ const stepperBag = React13.useContext(FormValuesContext);
122576
122650
  const stepperFieldId = props.__formFieldId;
122577
122651
  const stepperRuleKey = props.validation ? JSON.stringify(props.validation) : "";
122578
- React12.useEffect(() => {
122652
+ React13.useEffect(() => {
122579
122653
  if (!stepperBag || !stepperFieldId) return;
122580
122654
  stepperBag.register(stepperFieldId, props.validation);
122581
122655
  return () => stepperBag.unregister(stepperFieldId);
122582
122656
  }, [stepperFieldId, stepperBag, stepperRuleKey]);
122583
122657
  const serviceBound = typeof props.valuePath === "string" && isBinding(props.valuePath) && props.valuePath.startsWith("$service:");
122584
- const [bagValue, setBagValue] = React12.useState(() => serviceBound ? boundValue != null ? encodeStepperFieldValue(boundValue, { min, max }) : "" : encodeStepperFieldValue(value2, { min, max }));
122585
- React12.useEffect(() => {
122658
+ const [bagValue, setBagValue] = React13.useState(() => serviceBound ? boundValue != null ? encodeStepperFieldValue(boundValue, { min, max }) : "" : encodeStepperFieldValue(value2, { min, max }));
122659
+ React13.useEffect(() => {
122586
122660
  if (!serviceBound || boundValue == null) return;
122587
122661
  setBagValue(encodeStepperFieldValue(boundValue, { min, max }));
122588
122662
  }, [boundValue, serviceBound, min, max]);
122589
- React12.useEffect(() => {
122663
+ React13.useEffect(() => {
122590
122664
  if (serviceBound) return;
122591
122665
  setBagValue(encodeStepperFieldValue(value2, { min, max }));
122592
122666
  }, [value2, serviceBound, min, max]);
122593
- React12.useEffect(() => {
122667
+ React13.useEffect(() => {
122594
122668
  if (stepperBag && stepperFieldId) stepperBag.set(stepperFieldId, bagValue);
122595
122669
  }, [bagValue, stepperFieldId, stepperBag]);
122596
122670
  const dispatch = (next) => {
@@ -122605,7 +122679,7 @@ var init_renderNode = __esm({
122605
122679
  dispatch(next);
122606
122680
  return next;
122607
122681
  };
122608
- const [pressed, setPressed] = React12.useState({ text: "", count: 0 });
122682
+ const [pressed, setPressed] = React13.useState({ text: "", count: 0 });
122609
122683
  const bump = (delta) => commit(value2 + delta);
122610
122684
  const press = (delta) => {
122611
122685
  const next = bump(delta);
@@ -122749,9 +122823,9 @@ var init_renderNode = __esm({
122749
122823
  const items = Array.isArray(props.items) ? props.items : [];
122750
122824
  const gridStagger = ctx.reduceMotion() ? 0 : Number(props.staggerMs ?? props.stagger_ms ?? 0);
122751
122825
  const stagger = (el2, i2) => {
122752
- if (!(gridStagger > 0) || !React12.isValidElement(el2)) return el2;
122826
+ if (!(gridStagger > 0) || !React13.isValidElement(el2)) return el2;
122753
122827
  const prev = el2.props.style ?? {};
122754
- return React12.cloneElement(el2, { style: { ...prev, animationDelay: `${i2 * gridStagger}ms` } });
122828
+ return React13.cloneElement(el2, { style: { ...prev, animationDelay: `${i2 * gridStagger}ms` } });
122755
122829
  };
122756
122830
  const inner = itemsPath && items[0] && ctx.provider ? /* @__PURE__ */ jsx11(
122757
122831
  BoundList,
@@ -122826,13 +122900,13 @@ var init_renderNode = __esm({
122826
122900
  revealProgress = /* @__PURE__ */ new Map();
122827
122901
  countWords = (s2) => s2.split(/\s+/).filter((t2) => t2 !== "").length;
122828
122902
  RevealText = ({ text: text11, reduce, markdownHtml }) => {
122829
- const tokens2 = React12.useMemo(() => text11.split(/(\s+)/).filter((t2) => t2 !== ""), [text11]);
122830
- const total = React12.useMemo(
122903
+ const tokens2 = React13.useMemo(() => text11.split(/(\s+)/).filter((t2) => t2 !== ""), [text11]);
122904
+ const total = React13.useMemo(
122831
122905
  () => markdownHtml != null ? revealHtml(markdownHtml, 0, void 0).total : countWords(text11),
122832
122906
  [text11, markdownHtml]
122833
122907
  );
122834
- const [shown2, setShown] = React12.useState(total);
122835
- const prevRef = React12.useRef(null);
122908
+ const [shown2, setShown] = React13.useState(total);
122909
+ const prevRef = React13.useRef(null);
122836
122910
  useIsomorphicLayoutEffect(() => {
122837
122911
  const prev = prevRef.current;
122838
122912
  prevRef.current = text11;
@@ -122955,8 +123029,8 @@ var init_renderNode = __esm({
122955
123029
  const boundInitials = useResolvedScalar(props.initials != null && isBinding(props.initials) ? props.initials : void 0, ctx);
122956
123030
  const boundAlt = useResolvedScalar(contentDescription, ctx);
122957
123031
  const fadeIn = motionDefaultsAnimate(ctx);
122958
- const [shownSrc, setShownSrc] = React12.useState(null);
122959
- const imgRef = React12.useRef(null);
123032
+ const [shownSrc, setShownSrc] = React13.useState(null);
123033
+ const imgRef = React13.useRef(null);
122960
123034
  const hasSource = props.url != null || props.initials != null || props.asset != null || props.icon != null;
122961
123035
  const banner = fillWidth === true || props.width == null && props.height == null && !props.initials;
122962
123036
  const w2 = banner ? "100%" : props.width ?? 40;
@@ -122970,7 +123044,7 @@ var init_renderNode = __esm({
122970
123044
  const ph = props.placeholder ? C2(props.placeholder, "#e6e6e6") : void 0;
122971
123045
  const imgUrl = props.url != null && isBinding(props.url) ? boundUrl : props.url;
122972
123046
  const imgInitials = props.initials != null && isBinding(props.initials) ? boundInitials : props.initials;
122973
- const [failedSrc, setFailedSrc] = React12.useState(null);
123047
+ const [failedSrc, setFailedSrc] = React13.useState(null);
122974
123048
  const resolvedSrc = imgUrl && typeof imgUrl === "string" ? resolveAssetUrl(imgUrl, ctx.assetBaseUrl) : null;
122975
123049
  const imgShown = !fadeIn || resolvedSrc != null && shownSrc === resolvedSrc;
122976
123050
  useIsomorphicLayoutEffect(() => {
@@ -123003,7 +123077,7 @@ var init_renderNode = __esm({
123003
123077
  if (imgInitials && typeof imgInitials === "string") {
123004
123078
  const alt = asText2(boundAlt).trim();
123005
123079
  const circle = avatarCircle(String(imgInitials), typeof w2 === "number" ? w2 : 40, C2, false, bodyFont(ctx));
123006
- return React12.cloneElement(circle, alt ? { role: "img", "aria-label": alt, [SELF_RENDERED_LEAF]: true } : { [ROLE_WHEN_NAMED]: "img", [SELF_RENDERED_LEAF]: true });
123080
+ return React13.cloneElement(circle, alt ? { role: "img", "aria-label": alt, [SELF_RENDERED_LEAF]: true } : { [ROLE_WHEN_NAMED]: "img", [SELF_RENDERED_LEAF]: true });
123007
123081
  }
123008
123082
  if (props.icon != null && props.url == null && props.asset == null && imgInitials == null) {
123009
123083
  const side2 = typeof w2 === "number" ? w2 : 40;
@@ -123018,13 +123092,13 @@ var init_renderNode = __esm({
123018
123092
  const reduce = ctx.reduceMotion();
123019
123093
  const servicePlayPath = typeof props.playPath === "string" && props.playPath.startsWith("$service:") ? props.playPath : void 0;
123020
123094
  const nonce = lottieNonce(useResolvedScalar(servicePlayPath, ctx));
123021
- const [replay, setReplay] = React12.useState({ plays: 0 });
123022
- const [gen, setGen] = React12.useState(0);
123023
- React12.useEffect(() => {
123095
+ const [replay, setReplay] = React13.useState({ plays: 0 });
123096
+ const [gen, setGen] = React13.useState(0);
123097
+ React13.useEffect(() => {
123024
123098
  setReplay((s2) => ({ plays: s2.plays }));
123025
123099
  setGen((g2) => g2 + 1);
123026
123100
  }, [servicePlayPath, ctx.provider, props.source]);
123027
- React12.useEffect(() => {
123101
+ React13.useEffect(() => {
123028
123102
  setReplay((s2) => lottieReplayStep(s2, nonce, reduce));
123029
123103
  }, [nonce, servicePlayPath, ctx.provider, props.source]);
123030
123104
  return /* @__PURE__ */ jsx11(
@@ -123082,7 +123156,7 @@ var init_renderNode = __esm({
123082
123156
  const a11y = described ? { role: "img", "aria-label": String(contentDescription), [SELF_RENDERED_LEAF]: true } : { "aria-hidden": "true", [INFERRED_DECORATIVE]: true, [SELF_RENDERED_LEAF]: true, [ROLE_WHEN_NAMED]: "img" };
123083
123157
  const glyph = iconSvg(iconName, { size, color: C2(resolveScalarStatic(props.tint, ctx) ?? "textPrimary", "#636b78") });
123084
123158
  const swap = useIconSwap(iconName, ctx);
123085
- const animatedGlyph = Object.keys(effectStyle).length || swap.key > 0 ? React12.cloneElement(glyph, { style: { ...glyph.props.style, ...swap.style, ...effectStyle }, key: swap.key }) : glyph;
123159
+ const animatedGlyph = Object.keys(effectStyle).length || swap.key > 0 ? React13.cloneElement(glyph, { style: { ...glyph.props.style, ...swap.style, ...effectStyle }, key: swap.key }) : glyph;
123086
123160
  return /* @__PURE__ */ jsx11("span", { ...a11y, style: { display: "inline-grid", placeItems: "center", width: size + 6, height: size + 6, lineHeight: 1, flex: "none", ...wrap }, children: animatedGlyph });
123087
123161
  });
123088
123162
  EMPTY_STATE_SPACING = {
@@ -123318,12 +123392,12 @@ var init_renderNode = __esm({
123318
123392
  const C2 = ctx.color;
123319
123393
  const bound2 = useResolvedScalar(props.valuePath, ctx);
123320
123394
  const boundText = props.valuePath != null ? typeof bound2 === "string" ? bound2 : typeof bound2 === "number" ? String(bound2) : "" : void 0;
123321
- const [typed, setTyped] = React12.useState(void 0);
123322
- React12.useEffect(() => {
123395
+ const [typed, setTyped] = React13.useState(void 0);
123396
+ React13.useEffect(() => {
123323
123397
  setTyped(void 0);
123324
123398
  }, [boundText, props.value, props.valuePath, typeof props.valuePath === "string" && props.valuePath.startsWith("$service:") ? ctx.provider : null]);
123325
123399
  const otpPath = typeof props.valuePath === "string" && props.valuePath.startsWith("$service:") ? servicePath(props.valuePath) : "";
123326
- React12.useEffect(() => {
123400
+ React13.useEffect(() => {
123327
123401
  if (!ctx.provider || !otpPath) return;
123328
123402
  let subscribing = true;
123329
123403
  let active = true;
@@ -123414,10 +123488,10 @@ var init_renderNode = __esm({
123414
123488
  return /* @__PURE__ */ jsx11("div", { ...a11y, style: { width: "100%", height: 6, borderRadius: 999, background: C2(boundTokenName(props.trackColorPath, props.trackColor, ctx) ?? "surfaceTertiary", "#eee"), overflow: "hidden", ...wrap }, children: /* @__PURE__ */ jsx11("div", { style: { width: `${Math.round((p2 ?? 0.4) * 100)}%`, height: "100%", borderRadius: 999, background: C2(boundTokenName(props.tintPath, props.tint, ctx) ?? "accentPrimary", "#116DFF"), opacity: p2 == null ? 0.45 : 1, ...animatedFill ? { transition: ctx.motionTransition(ctx.kit?.motion) } : {} } }) });
123415
123489
  });
123416
123490
  SnackbarNode = withExtras("SnackbarNode", ({ props, ctx, wrap }) => {
123417
- const [phase, setPhase] = React12.useState("shown");
123491
+ const [phase, setPhase] = React13.useState("shown");
123418
123492
  const hideAfter = ctx.empty ? void 0 : snackbarAutoHideMs(props.durationMs);
123419
123493
  const identity = snackbarIdentity(props);
123420
- React12.useEffect(() => {
123494
+ React13.useEffect(() => {
123421
123495
  setPhase("shown");
123422
123496
  if (hideAfter === void 0) return;
123423
123497
  let fade;
@@ -123473,8 +123547,8 @@ var init_renderNode = __esm({
123473
123547
  const gated2 = props.presentedPath != null || props.presented != null;
123474
123548
  const presented = props.presentedPath != null ? bound2 : props.presented;
123475
123549
  const gateOpen = !gated2 || presented === true || presented === "true";
123476
- const [dismissed, setDismissed] = React12.useState(false);
123477
- React12.useEffect(() => {
123550
+ const [dismissed, setDismissed] = React13.useState(false);
123551
+ React13.useEffect(() => {
123478
123552
  if (!gateOpen) setDismissed(false);
123479
123553
  }, [gateOpen]);
123480
123554
  const shown2 = gateOpen && !dismissed;
@@ -123482,26 +123556,26 @@ var init_renderNode = __esm({
123482
123556
  const dismissible = props.dismissible !== false;
123483
123557
  const edge = sheetEdge(props.edge);
123484
123558
  const detents = edge === "bottom" ? sheetDetents(props.detents) : [];
123485
- const [detentIndex, setDetentIndex] = React12.useState(0);
123486
- React12.useEffect(() => {
123559
+ const [detentIndex, setDetentIndex] = React13.useState(0);
123560
+ React13.useEffect(() => {
123487
123561
  if (!shown2) setDetentIndex(0);
123488
123562
  }, [shown2]);
123489
- const dialogRef = React12.useRef(null);
123563
+ const dialogRef = React13.useRef(null);
123490
123564
  const trapTab = useModalOverlay(dialogRef, shown2 && modal);
123491
- const latest = React12.useRef({ ctx, onDismiss: props.onDismiss });
123565
+ const latest = React13.useRef({ ctx, onDismiss: props.onDismiss });
123492
123566
  latest.current = { ctx, onDismiss: props.onDismiss };
123493
- const closed = React12.useRef(false);
123494
- React12.useEffect(() => {
123567
+ const closed = React13.useRef(false);
123568
+ React13.useEffect(() => {
123495
123569
  if (shown2) closed.current = false;
123496
123570
  }, [shown2]);
123497
- const dismiss = React12.useCallback(() => {
123571
+ const dismiss = React13.useCallback(() => {
123498
123572
  if (closed.current) return;
123499
123573
  closed.current = true;
123500
123574
  setDismissed(true);
123501
123575
  const { ctx: now, onDismiss } = latest.current;
123502
123576
  if (onDismiss != null) now.onAction?.(resolveItemDeep2(onDismiss, now));
123503
123577
  }, []);
123504
- React12.useEffect(() => {
123578
+ React13.useEffect(() => {
123505
123579
  if (!shown2 || !dismissible) return;
123506
123580
  const doc = dialogRef.current?.ownerDocument;
123507
123581
  if (!doc) return;
@@ -123515,11 +123589,11 @@ var init_renderNode = __esm({
123515
123589
  doc.addEventListener("keydown", onKey, true);
123516
123590
  return () => doc.removeEventListener("keydown", onKey, true);
123517
123591
  }, [shown2, dismissible, dismiss]);
123518
- const drag = React12.useRef(null);
123592
+ const drag = React13.useRef(null);
123519
123593
  const reduceMotion = ctx.reduceMotion();
123520
- const [mounted, setMounted] = React12.useState(shown2);
123521
- const [entered, setEntered] = React12.useState(shown2 && ctx.staticRender === true);
123522
- React12.useEffect(() => {
123594
+ const [mounted, setMounted] = React13.useState(shown2);
123595
+ const [entered, setEntered] = React13.useState(shown2 && ctx.staticRender === true);
123596
+ React13.useEffect(() => {
123523
123597
  if (shown2) {
123524
123598
  setMounted(true);
123525
123599
  if (reduceMotion || typeof requestAnimationFrame !== "function") {
@@ -123543,8 +123617,8 @@ var init_renderNode = __esm({
123543
123617
  const t2 = setTimeout(() => setMounted(false), DRAWER_EXIT_MS);
123544
123618
  return () => clearTimeout(t2);
123545
123619
  }, [shown2, reduceMotion]);
123546
- const scrimRef = React12.useRef(null);
123547
- const [rtl, setRtl] = React12.useState(false);
123620
+ const scrimRef = React13.useRef(null);
123621
+ const [rtl, setRtl] = React13.useState(false);
123548
123622
  useIsomorphicLayoutEffect(() => {
123549
123623
  const el2 = scrimRef.current;
123550
123624
  if (el2 && el2.ownerDocument.defaultView) setRtl(el2.ownerDocument.defaultView.getComputedStyle(el2).direction === "rtl");
@@ -123652,8 +123726,8 @@ var init_renderNode = __esm({
123652
123726
  const gated2 = props.presentedPath != null || props.presented != null;
123653
123727
  const presented = props.presentedPath != null ? bound2 : props.presented;
123654
123728
  const gateOpen = !gated2 || presented === true || presented === "true";
123655
- const [dismissed, setDismissed] = React12.useState(false);
123656
- React12.useEffect(() => {
123729
+ const [dismissed, setDismissed] = React13.useState(false);
123730
+ React13.useEffect(() => {
123657
123731
  if (!gateOpen) setDismissed(false);
123658
123732
  }, [gateOpen]);
123659
123733
  const shown2 = gateOpen && !dismissed;
@@ -123661,18 +123735,18 @@ var init_renderNode = __esm({
123661
123735
  const autoMs = drawerAutoDismissMs(props.autoDismissMs);
123662
123736
  const placement = sheetPlacement(props.placement);
123663
123737
  const detents = sheetDetents(props.detents);
123664
- const [detentIndex, setDetentIndex] = React12.useState(0);
123665
- const [expanded, setExpanded] = React12.useState(false);
123666
- React12.useEffect(() => {
123738
+ const [detentIndex, setDetentIndex] = React13.useState(0);
123739
+ const [expanded, setExpanded] = React13.useState(false);
123740
+ React13.useEffect(() => {
123667
123741
  if (!shown2) {
123668
123742
  setDetentIndex(0);
123669
123743
  setExpanded(false);
123670
123744
  }
123671
123745
  }, [shown2]);
123672
123746
  const reduceMotion = ctx.reduceMotion();
123673
- const [mounted, setMounted] = React12.useState(shown2);
123674
- const [entered, setEntered] = React12.useState(shown2 && ctx.staticRender === true);
123675
- React12.useEffect(() => {
123747
+ const [mounted, setMounted] = React13.useState(shown2);
123748
+ const [entered, setEntered] = React13.useState(shown2 && ctx.staticRender === true);
123749
+ React13.useEffect(() => {
123676
123750
  if (shown2) {
123677
123751
  setMounted(true);
123678
123752
  if (reduceMotion || typeof requestAnimationFrame !== "function") {
@@ -123696,10 +123770,10 @@ var init_renderNode = __esm({
123696
123770
  const t2 = setTimeout(() => setMounted(false), DRAWER_EXIT_MS);
123697
123771
  return () => clearTimeout(t2);
123698
123772
  }, [shown2, reduceMotion]);
123699
- const anchorRef = React12.useRef(null);
123700
- const panelRef = React12.useRef(null);
123701
- const [host, setHost] = React12.useState(null);
123702
- const [hostTop, setHostTop] = React12.useState(true);
123773
+ const anchorRef = React13.useRef(null);
123774
+ const panelRef = React13.useRef(null);
123775
+ const [host, setHost] = React13.useState(null);
123776
+ const [hostTop, setHostTop] = React13.useState(true);
123703
123777
  useIsomorphicLayoutEffect(() => {
123704
123778
  if (!host) {
123705
123779
  setHostTop(true);
@@ -123727,7 +123801,7 @@ var init_renderNode = __esm({
123727
123801
  setHost(overlay ?? own6(DRAWER_HOST_ATTR));
123728
123802
  }, [mounted, placement]);
123729
123803
  const overHost = host?.hasAttribute(SHEET_OVERLAY_HOST_ATTR) ?? false;
123730
- const [regionPx, setRegionPx] = React12.useState(0);
123804
+ const [regionPx, setRegionPx] = React13.useState(0);
123731
123805
  useIsomorphicLayoutEffect(() => {
123732
123806
  if (!detents.length || !mounted) return;
123733
123807
  const region = host ? overHost ? host.parentElement : host.previousElementSibling : null;
@@ -123754,38 +123828,38 @@ var init_renderNode = __esm({
123754
123828
  resizeObserver?.disconnect();
123755
123829
  };
123756
123830
  }, [host, overHost, mounted, detents.length]);
123757
- const latest = React12.useRef({ ctx, onDismiss: props.onDismiss });
123831
+ const latest = React13.useRef({ ctx, onDismiss: props.onDismiss });
123758
123832
  latest.current = { ctx, onDismiss: props.onDismiss };
123759
- const closed = React12.useRef(false);
123760
- const remaining = React12.useRef(autoMs ?? 0);
123761
- React12.useEffect(() => {
123833
+ const closed = React13.useRef(false);
123834
+ const remaining = React13.useRef(autoMs ?? 0);
123835
+ React13.useEffect(() => {
123762
123836
  if (!shown2) return;
123763
123837
  closed.current = false;
123764
123838
  remaining.current = autoMs ?? 0;
123765
123839
  }, [shown2, autoMs]);
123766
- const close = React12.useCallback(() => {
123840
+ const close = React13.useCallback(() => {
123767
123841
  if (closed.current) return;
123768
123842
  closed.current = true;
123769
123843
  setDismissed(true);
123770
123844
  const { ctx: now, onDismiss } = latest.current;
123771
123845
  if (onDismiss != null) now.onAction?.(resolveItemDeep2(onDismiss, now));
123772
123846
  }, []);
123773
- const toDetent = React12.useCallback((next, from) => {
123847
+ const toDetent = React13.useCallback((next, from) => {
123774
123848
  if (next > from) setExpanded(true);
123775
123849
  setDetentIndex(next);
123776
123850
  }, []);
123777
- const [hover, setHover] = React12.useState(false);
123778
- const [pressed, setPressed] = React12.useState(false);
123779
- const [focusIn, setFocusIn] = React12.useState(false);
123851
+ const [hover, setHover] = React13.useState(false);
123852
+ const [pressed, setPressed] = React13.useState(false);
123853
+ const [focusIn, setFocusIn] = React13.useState(false);
123780
123854
  const paused = hover || pressed || focusIn;
123781
- React12.useEffect(() => {
123855
+ React13.useEffect(() => {
123782
123856
  if (!shown2) {
123783
123857
  setHover(false);
123784
123858
  setPressed(false);
123785
123859
  setFocusIn(false);
123786
123860
  }
123787
123861
  }, [shown2]);
123788
- React12.useEffect(() => {
123862
+ React13.useEffect(() => {
123789
123863
  if (!shown2 || !hostTop || autoMs == null || paused || expanded) return;
123790
123864
  const since = Date.now();
123791
123865
  const t2 = setTimeout(() => {
@@ -123796,7 +123870,7 @@ var init_renderNode = __esm({
123796
123870
  remaining.current = drawerRemainingMs(remaining.current, Date.now() - since);
123797
123871
  };
123798
123872
  }, [shown2, hostTop, autoMs, paused, expanded, close]);
123799
- React12.useEffect(() => {
123873
+ React13.useEffect(() => {
123800
123874
  if (!shown2 || !dismissible) return;
123801
123875
  const doc = panelRef.current?.ownerDocument;
123802
123876
  if (!doc) return;
@@ -123809,13 +123883,13 @@ var init_renderNode = __esm({
123809
123883
  doc.addEventListener("keydown", onKey, true);
123810
123884
  return () => doc.removeEventListener("keydown", onKey, true);
123811
123885
  }, [shown2, dismissible, close, host]);
123812
- const drag = React12.useRef(null);
123813
- const dragged = React12.useRef(false);
123814
- const [dragDy, setDragDy] = React12.useState(0);
123815
- React12.useEffect(() => {
123886
+ const drag = React13.useRef(null);
123887
+ const dragged = React13.useRef(false);
123888
+ const [dragDy, setDragDy] = React13.useState(0);
123889
+ React13.useEffect(() => {
123816
123890
  if (!shown2) setDragDy(0);
123817
123891
  }, [shown2]);
123818
- const dragState = React12.useRef({ index: 0, count: 0, dismissible });
123892
+ const dragState = React13.useRef({ index: 0, count: 0, dismissible });
123819
123893
  if (!shown2 && !mounted) return /* @__PURE__ */ jsx11("span", { ref: anchorRef, "data-bottom-drawer-anchor": "", hidden: true, ...{ [NODE_EXTRAS_TARGET]: "bottom-drawer-panel" } });
123820
123894
  const sheet = idiomControls(ctx.idiom).sheet;
123821
123895
  const r3 = `${sheet.cornerRadius}px`;
@@ -123957,23 +124031,23 @@ var init_renderNode = __esm({
123957
124031
  const rich = title !== "";
123958
124032
  const trigger = resolveTooltipTrigger(props.trigger, "pointer");
123959
124033
  const edge = resolveOverlayEdge("Tooltip", props.edge);
123960
- const [open, setOpen] = React12.useState(false);
123961
- const anchorRef = React12.useRef(null);
123962
- const bubbleRef = React12.useRef(null);
123963
- const pressTimer = React12.useRef(null);
124034
+ const [open, setOpen] = React13.useState(false);
124035
+ const anchorRef = React13.useRef(null);
124036
+ const bubbleRef = React13.useRef(null);
124037
+ const pressTimer = React13.useRef(null);
123964
124038
  const placement = useFlippedEdge(edge, open, bubbleRef, anchorRef);
123965
124039
  const placed = placement.edge;
123966
- const latest = React12.useRef({ ctx, onDismiss: props.onDismiss, open });
124040
+ const latest = React13.useRef({ ctx, onDismiss: props.onDismiss, open });
123967
124041
  latest.current = { ctx, onDismiss: props.onDismiss, open };
123968
- const holding = React12.useRef({ hover: false, focus: false });
123969
- const [needsTabStop, setNeedsTabStop] = React12.useState(false);
124042
+ const holding = React13.useRef({ hover: false, focus: false });
124043
+ const [needsTabStop, setNeedsTabStop] = React13.useState(false);
123970
124044
  useIsomorphicLayoutEffect(() => {
123971
124045
  const el2 = anchorRef.current;
123972
124046
  const want = trigger === "hover" && el2 != null && !hasTabStop(el2);
123973
124047
  if (want !== needsTabStop) setNeedsTabStop(want);
123974
124048
  });
123975
- const show = React12.useCallback(() => setOpen(true), []);
123976
- const dismiss = React12.useCallback(() => {
124049
+ const show = React13.useCallback(() => setOpen(true), []);
124050
+ const dismiss = React13.useCallback(() => {
123977
124051
  holding.current = { hover: false, focus: false };
123978
124052
  const { ctx: now, onDismiss, open: wasOpen } = latest.current;
123979
124053
  if (!wasOpen) return;
@@ -123981,7 +124055,7 @@ var init_renderNode = __esm({
123981
124055
  setOpen(false);
123982
124056
  if (onDismiss != null) now.onAction?.(resolveItemDeep2(onDismiss, now));
123983
124057
  }, []);
123984
- React12.useEffect(() => {
124058
+ React13.useEffect(() => {
123985
124059
  if (!open) return;
123986
124060
  const doc = bubbleRef.current?.ownerDocument;
123987
124061
  if (!doc) return;
@@ -124005,7 +124079,7 @@ var init_renderNode = __esm({
124005
124079
  if (timer) clearTimeout(timer);
124006
124080
  };
124007
124081
  }, [open, trigger, dismiss]);
124008
- React12.useEffect(() => () => {
124082
+ React13.useEffect(() => () => {
124009
124083
  if (pressTimer.current) clearTimeout(pressTimer.current);
124010
124084
  }, []);
124011
124085
  const cancelPress = () => {
@@ -124045,7 +124119,7 @@ var init_renderNode = __esm({
124045
124119
  };
124046
124120
  const hint = [title, text11].filter((s2) => s2 !== "").join(". ");
124047
124121
  const anchor = props.anchor ? renderNode(props.anchor, ctx) : null;
124048
- const wrapperHintId = `hm-tip-hint${React12.useId()}`;
124122
+ const wrapperHintId = `hm-tip-hint${React13.useId()}`;
124049
124123
  useIsomorphicLayoutEffect(() => {
124050
124124
  const wrapper = anchorRef.current;
124051
124125
  if (!wrapper || !hint || needsTabStop) return;
@@ -124067,7 +124141,7 @@ var init_renderNode = __esm({
124067
124141
  /* @__PURE__ */ jsx11(OverlayAnchorClip, { wrap, children: needsTabStop ? /* @__PURE__ */ jsxs8(Fragment4, { children: [
124068
124142
  anchor,
124069
124143
  hint && /* @__PURE__ */ jsx11("span", { id: wrapperHintId, hidden: true, "data-hm-a11y-hint": "", children: hint })
124070
- ] }) : hint && React12.isValidElement(anchor) ? /* @__PURE__ */ jsxs8(Fragment4, { children: [
124144
+ ] }) : hint && React13.isValidElement(anchor) ? /* @__PURE__ */ jsxs8(Fragment4, { children: [
124071
124145
  /* @__PURE__ */ jsx11(A11yHintDescription, { hint, children: anchor }),
124072
124146
  /* @__PURE__ */ jsx11("span", { id: wrapperHintId, hidden: true, "data-hm-a11y-hint": "", children: hint })
124073
124147
  ] }) : /* @__PURE__ */ jsxs8(Fragment4, { children: [
@@ -124088,24 +124162,24 @@ var init_renderNode = __esm({
124088
124162
  const gateOpen = gate === true || gate === "true";
124089
124163
  const literal = props.presentedPath == null && props.presented != null;
124090
124164
  const identity = { path: props.presentedPath, presented: props.presented, provider: ctx.provider };
124091
- const [local, setLocal] = React12.useState({ ...identity, opened: false, dismissed: false });
124165
+ const [local, setLocal] = React13.useState({ ...identity, opened: false, dismissed: false });
124092
124166
  const sameGate = local.path === identity.path && local.presented === identity.presented && local.provider === identity.provider;
124093
124167
  const current = sameGate ? local : { ...identity, opened: false, dismissed: false };
124094
124168
  if (!sameGate) setLocal(current);
124095
- React12.useEffect(() => {
124169
+ React13.useEffect(() => {
124096
124170
  if (!gateOpen) setLocal((previous) => previous.dismissed ? { ...previous, dismissed: false } : previous);
124097
124171
  }, [gateOpen]);
124098
124172
  const shown2 = !gated2 || (gateOpen || current.opened) && !current.dismissed;
124099
124173
  const modal = gated2 && isOverlayModal("Popover", props.modal);
124100
- const dialogRef = React12.useRef(null);
124101
- const anchorRef = React12.useRef(null);
124102
- const boxRef = React12.useRef(null);
124174
+ const dialogRef = React13.useRef(null);
124175
+ const anchorRef = React13.useRef(null);
124176
+ const boxRef = React13.useRef(null);
124103
124177
  const trapTab = useModalOverlay(dialogRef, shown2 && modal);
124104
124178
  const placement = useFlippedEdge(resolveOverlayEdge("Popover", props.edge), gated2 && shown2, dialogRef, boxRef, 6);
124105
124179
  const placed = placement.edge;
124106
- const latest = React12.useRef({ ctx, onDismiss: props.onDismiss });
124180
+ const latest = React13.useRef({ ctx, onDismiss: props.onDismiss });
124107
124181
  latest.current = { ctx, onDismiss: props.onDismiss };
124108
- React12.useEffect(() => {
124182
+ React13.useEffect(() => {
124109
124183
  if (!gated2 || !shown2) return;
124110
124184
  const doc = dialogRef.current?.ownerDocument;
124111
124185
  if (!doc) return;
@@ -124143,8 +124217,8 @@ var init_renderNode = __esm({
124143
124217
  if (shown2) return;
124144
124218
  setLocal({ ...identity, opened: true, dismissed: false });
124145
124219
  } : void 0;
124146
- const [anchorIsButton, setAnchorIsButton] = React12.useState(false);
124147
- const [needsSeparateOpener, setNeedsSeparateOpener] = React12.useState(false);
124220
+ const [anchorIsButton, setAnchorIsButton] = React13.useState(false);
124221
+ const [needsSeparateOpener, setNeedsSeparateOpener] = React13.useState(false);
124148
124222
  useIsomorphicLayoutEffect(() => {
124149
124223
  const el2 = anchorRef.current;
124150
124224
  const want = literal && el2 != null && !hasTabStop(el2);
@@ -124171,7 +124245,7 @@ var init_renderNode = __esm({
124171
124245
  });
124172
124246
  ChipsInputNode = withExtras("ChipsInputNode", ({ props, ctx, wrap }) => {
124173
124247
  const placeholderText = useBoundString(props.placeholder, ctx);
124174
- const [draft, setDraft] = React12.useState("");
124248
+ const [draft, setDraft] = React13.useState("");
124175
124249
  const C2 = ctx.color;
124176
124250
  const bound2 = useResolvedScalar(props.valuesPath, ctx);
124177
124251
  const raw = props.valuesPath != null ? bound2 : props.values;
@@ -124364,7 +124438,7 @@ var init_renderNode = __esm({
124364
124438
  const who = asText2(a2.initials).trim();
124365
124439
  const initials = avatarCircle(who || "?", size, C2, true, bodyFont(ctx));
124366
124440
  const photo = typeof a2.imageUrl === "string" && a2.imageUrl && !isBinding(a2.imageUrl) ? a2.imageUrl : "";
124367
- const circle = photo ? React12.cloneElement(
124441
+ const circle = photo ? React13.cloneElement(
124368
124442
  initials,
124369
124443
  { style: { ...initials.props.style, position: "relative", overflow: "hidden" } },
124370
124444
  initials.props.children,
@@ -124372,7 +124446,7 @@ var init_renderNode = __esm({
124372
124446
  e2.currentTarget.style.display = "none";
124373
124447
  }, style: { position: "absolute", inset: 0, width: "100%", height: "100%", objectFit: "cover" } })
124374
124448
  ) : initials;
124375
- return who ? /* @__PURE__ */ jsx11("div", { role: "listitem", style: wrapStyle, children: React12.cloneElement(circle, { role: "img", "aria-label": who }) }, i2) : /* @__PURE__ */ jsx11("div", { "aria-hidden": "true", style: wrapStyle, children: circle }, i2);
124449
+ return who ? /* @__PURE__ */ jsx11("div", { role: "listitem", style: wrapStyle, children: React13.cloneElement(circle, { role: "img", "aria-label": who }) }, i2) : /* @__PURE__ */ jsx11("div", { "aria-hidden": "true", style: wrapStyle, children: circle }, i2);
124376
124450
  }),
124377
124451
  overflow > 0 && /* @__PURE__ */ jsx11("div", { role: "listitem", style: { marginLeft: -(size - shift), width: size, height: size, borderRadius: "50%", border: `2px solid ${C2("surfacePrimary", "#fff")}`, background: C2("surfaceTertiary", "#e6e6e6"), color: C2("textPrimary", "#111"), display: "grid", placeItems: "center", fontSize: size * 0.32, fontWeight: 700, fontFamily: bodyFont(ctx) }, children: /* @__PURE__ */ jsxs8("span", { role: "img", "aria-label": `${overflow} more`, children: [
124378
124452
  "+",
@@ -124393,7 +124467,7 @@ var init_renderNode = __esm({
124393
124467
  const declared = Array.isArray(props.series) ? props.series : [];
124394
124468
  const multi = declared.length > 0;
124395
124469
  const singleBound = useBoundValue(ctx, typeof props.valuesPath === "string" && !multi ? props.valuesPath : "");
124396
- const seriesBindings = React12.useMemo(
124470
+ const seriesBindings = React13.useMemo(
124397
124471
  () => declared.map((d2) => typeof d2?.valuesPath === "string" ? d2.valuesPath : ""),
124398
124472
  // eslint-disable-next-line react-hooks/exhaustive-deps
124399
124473
  [declared.map((d2) => String(d2?.valuesPath ?? "")).join("\0")]
@@ -124539,9 +124613,9 @@ var init_renderNode = __esm({
124539
124613
  ] }) });
124540
124614
  });
124541
124615
  ShapeNode = withExtras("ShapeNode", ({ props, ctx, wrap }) => {
124542
- const ref = React12.useRef(null);
124543
- const [box, setBox] = React12.useState(null);
124544
- React12.useEffect(() => {
124616
+ const ref = React13.useRef(null);
124617
+ const [box, setBox] = React13.useState(null);
124618
+ React13.useEffect(() => {
124545
124619
  const el2 = ref.current;
124546
124620
  if (!el2) return;
124547
124621
  const measure2 = () => {
@@ -124699,10 +124773,10 @@ var init_renderNode = __esm({
124699
124773
  const isPlayable = !isFailed && !isUploading;
124700
124774
  const isPlaying = state === "playing";
124701
124775
  const isLoading = state === "loading";
124702
- const [scrub, setScrub] = React12.useState(null);
124703
- const [seeked, setSeeked] = React12.useState(null);
124776
+ const [scrub, setScrub] = React13.useState(null);
124777
+ const [seeked, setSeeked] = React13.useState(null);
124704
124778
  const positionMs = Math.max(0, num4(props.positionMsPath != null ? boundPosition : void 0, props.positionMs, 0));
124705
- React12.useEffect(() => {
124779
+ React13.useEffect(() => {
124706
124780
  setSeeked(null);
124707
124781
  }, [positionMs]);
124708
124782
  const effectivePositionMs = seeked ?? positionMs;
@@ -124744,8 +124818,8 @@ var init_renderNode = __esm({
124744
124818
  const barW = Math.max(0.6, slot * 0.58);
124745
124819
  const cut2 = progress * W2;
124746
124820
  const rates = Array.isArray(props.rates) ? props.rates.map(Number).filter((n2) => n2 > 0) : [];
124747
- const [pickedRate, setPickedRate] = React12.useState(null);
124748
- React12.useEffect(() => {
124821
+ const [pickedRate, setPickedRate] = React13.useState(null);
124822
+ React13.useEffect(() => {
124749
124823
  setPickedRate(null);
124750
124824
  }, [rate]);
124751
124825
  const effectiveRate = pickedRate ?? rate;
@@ -124918,27 +124992,77 @@ var init_renderNode = __esm({
124918
124992
  ] }, i2);
124919
124993
  }) });
124920
124994
  });
124921
- PagingNode = withExtras("PagingNode", ({ props, ctx, wrap }) => {
124995
+ LiveWindowMeasured = ({ index, heights, children }) => {
124996
+ const ref = React13.useRef(null);
124997
+ React13.useLayoutEffect(() => {
124998
+ const el2 = ref.current;
124999
+ if (!el2) return;
125000
+ const record2 = () => {
125001
+ const h2 = el2.offsetHeight;
125002
+ if (h2 > 0 && heights.map.get(index) !== h2) {
125003
+ heights.map.set(index, h2);
125004
+ heights.changed();
125005
+ }
125006
+ };
125007
+ record2();
125008
+ if (typeof ResizeObserver === "undefined") return;
125009
+ const observer = new ResizeObserver(record2);
125010
+ observer.observe(el2);
125011
+ return () => observer.disconnect();
125012
+ }, [index, heights]);
125013
+ return /* @__PURE__ */ jsx11("div", { ref, style: { width: "100%" }, children });
125014
+ };
125015
+ LiveWindowPage = ({ page, index, count: count2, current, liveWindow, ownerId, heights, ctx }) => {
125016
+ const outerActive = React13.useContext(PageActiveContext);
125017
+ if (liveWindowRange(current, count2, liveWindow) == null) return /* @__PURE__ */ jsx11(Fragment4, { children: renderNode(page, ctx) });
125018
+ if (liveWindowMounted(index, current, count2, liveWindow)) {
125019
+ return /* @__PURE__ */ jsx11(PageActiveContext.Provider, { value: outerActive && liveWindowActive(index, current, count2, liveWindow), children: /* @__PURE__ */ jsx11(LiveWindowMeasured, { index, heights, children: renderNode(page, ctx) }) });
125020
+ }
125021
+ const bg = normalize(page ?? {}).modifiers?.background;
125022
+ const token = typeof bg === "string" ? bg : typeof bg?.token === "string" ? bg.token : void 0;
125023
+ const image = liveWindowFirstImage(page);
125024
+ const picture = image ? normalize(image) : null;
125025
+ const remembered = heights.map.get(index) ?? heights.map.get(liveWindowCurrent(current, count2));
125026
+ return (
125027
+ // Hidden from assistive tech except as the page's position; the picture is inert (no id, no actions).
125028
+ /* @__PURE__ */ jsx11(
125029
+ "div",
125030
+ {
125031
+ "data-component-id": liveWindowPlaceholderId(ownerId, index),
125032
+ "data-live-window-placeholder": "",
125033
+ role: "group",
125034
+ "aria-label": `page ${index + 1} of ${count2}`,
125035
+ style: { width: "100%", height: remembered ? remembered : "100%", minHeight: remembered ? remembered : "100%", position: "relative", overflow: "hidden", background: token && !isBinding(token) ? ctx.color(token, "transparent") : void 0 },
125036
+ children: picture ? /* @__PURE__ */ jsx11("div", { "aria-hidden": "true", style: { position: "absolute", inset: 0, pointerEvents: "none" }, children: renderNode({ type: picture.type, props: picture.props }, { ...ctx, onAction: null }) }) : null
125037
+ }
125038
+ )
125039
+ );
125040
+ };
125041
+ PagingNode = withExtras("PagingNode", ({ props, ctx, wrap, nodeId }) => {
124922
125042
  const items = (props.__pager ? props.pages : props.items) ?? [];
124923
125043
  const pages2 = items.filter((page) => isNodeLike(page) || page?.type);
124924
125044
  const requested = Math.max(0, Math.min(pages2.length - 1, props.currentIndex ?? 0));
124925
- const [current, setCurrent] = React12.useState(requested);
124926
- const rail = React12.useRef(null);
124927
- const currentRef = React12.useRef(current);
125045
+ const [current, setCurrent] = React13.useState(requested);
125046
+ const rail = React13.useRef(null);
125047
+ const currentRef = React13.useRef(current);
124928
125048
  const itemsPath = props.itemsPath ?? props.items_path;
124929
125049
  const boundRail = !!itemsPath && !!items[0] && !!ctx.provider;
125050
+ const { settled, scrolling } = useSettledPage(current);
125051
+ const [, heightsChanged] = React13.useReducer((n2) => n2 + 1, 0);
125052
+ const pageKey = pages2.map((p2, i2) => p2?.id ?? `#${i2}`).join("\0");
125053
+ const pageHeights = React13.useMemo(() => ({ map: /* @__PURE__ */ new Map(), changed: heightsChanged }), [pageKey]);
124930
125054
  const select2 = (index) => {
124931
125055
  if (index === currentRef.current) return;
124932
125056
  currentRef.current = index;
124933
125057
  setCurrent(index);
124934
125058
  if (props.onChange && ctx.onAction) ctx.onAction({ ...props.onChange, args: { ...props.onChange.args ?? {}, index } });
124935
125059
  };
124936
- React12.useEffect(() => {
125060
+ React13.useEffect(() => {
124937
125061
  currentRef.current = requested;
124938
125062
  setCurrent(requested);
124939
125063
  if (rail.current && !boundRail) rail.current.scrollLeft = requested * rail.current.clientWidth;
124940
125064
  }, [requested, boundRail, pages2.length]);
124941
- React12.useEffect(() => {
125065
+ React13.useEffect(() => {
124942
125066
  const interval = props.autoplayIntervalMs;
124943
125067
  if (props.__pager || boundRail || !Number.isFinite(interval) || interval <= 0 || pages2.length < 2 || ctx.reduceMotion()) return;
124944
125068
  const timer = setInterval(() => {
@@ -124964,10 +125088,14 @@ var init_renderNode = __esm({
124964
125088
  select2(index);
124965
125089
  },
124966
125090
  onScroll: (event) => {
124967
- if (!boundRail && event.currentTarget.clientWidth > 0) select2(Math.max(0, Math.min(pages2.length - 1, Math.round(event.currentTarget.scrollLeft / event.currentTarget.clientWidth))));
125091
+ if (!boundRail && event.currentTarget.clientWidth > 0) {
125092
+ const page = Math.max(0, Math.min(pages2.length - 1, Math.round(event.currentTarget.scrollLeft / event.currentTarget.clientWidth)));
125093
+ scrolling(page);
125094
+ select2(page);
125095
+ }
124968
125096
  },
124969
125097
  style: { display: "flex", overflowX: "auto", scrollSnapType: boundRail ? void 0 : "x mandatory", gap: boundRail ? 12 : void 0, width: "100%" },
124970
- children: boundRail ? /* @__PURE__ */ jsx11(BoundList, { ctx, itemsPath, template: items[0], renderRow: (template, itemCtx) => /* @__PURE__ */ jsx11("div", { style: { flex: "0 0 auto" }, children: renderNode(template, itemCtx) }) }) : pages2.map((page, index) => /* @__PURE__ */ jsx11("div", { style: { minWidth: "100%", scrollSnapAlign: "start" }, children: renderNode(page, ctx) }, page?.id ?? index))
125098
+ children: boundRail ? /* @__PURE__ */ jsx11(BoundList, { ctx, itemsPath, template: items[0], renderRow: (template, itemCtx) => /* @__PURE__ */ jsx11("div", { style: { flex: "0 0 auto" }, children: renderNode(template, itemCtx) }) }) : pages2.map((page, index) => /* @__PURE__ */ jsx11("div", { style: { minWidth: "100%", scrollSnapAlign: "start" }, children: /* @__PURE__ */ jsx11(LiveWindowPage, { page, index, count: pages2.length, current: settled, liveWindow: props.liveWindow, ownerId: nodeId || (props.__pager ? "pager" : "carousel"), heights: pageHeights, ctx }) }, page?.id ?? index))
124971
125099
  }
124972
125100
  ),
124973
125101
  !boundRail && pages2.length > 1 && (!props.__pager || props.showIndicator !== false) && /* @__PURE__ */ jsx11("div", { "aria-label": `Page ${current + 1} of ${pages2.length}`, style: { display: "flex", gap: 6, justifyContent: "center", marginTop: 10 }, children: pages2.map((_2, index) => /* @__PURE__ */ jsx11("span", { "aria-current": index === current ? "true" : void 0, style: { width: index === current ? 18 : 7, height: 7, borderRadius: 999, background: index === current ? ctx.color("accentPrimary", "#116DFF") : ctx.color("border", "#ccc") } }, index)) })
@@ -124981,19 +125109,19 @@ var init_renderNode = __esm({
124981
125109
  const opts = Array.isArray(rawOpts) ? rawOpts : [];
124982
125110
  const selectedId = isBinding(props.selectedId) ? boundSel : props.selectedId;
124983
125111
  const selIdx = Math.max(0, opts.findIndex((o2) => o2?.id === selectedId));
124984
- const viewport = React12.useRef(null);
124985
- const settle2 = React12.useRef(void 0);
124986
- const pickerId = React12.useId();
125112
+ const viewport = React13.useRef(null);
125113
+ const settle2 = React13.useRef(void 0);
125114
+ const pickerId = React13.useId();
124987
125115
  const interactive = !!ctx.onAction && !!props.onChange;
124988
125116
  const emit = (index) => {
124989
125117
  const id = opts[index]?.id;
124990
125118
  if (!interactive || id == null || index === selIdx) return;
124991
125119
  ctx.onAction({ ...props.onChange, args: { ...props.onChange.args ?? {}, selectedId: String(id) } });
124992
125120
  };
124993
- React12.useEffect(() => {
125121
+ React13.useEffect(() => {
124994
125122
  if (viewport.current) viewport.current.scrollTop = selIdx * 32;
124995
125123
  }, [selIdx, opts.length]);
124996
- React12.useEffect(() => () => clearTimeout(settle2.current), []);
125124
+ React13.useEffect(() => () => clearTimeout(settle2.current), []);
124997
125125
  return /* @__PURE__ */ jsxs8("div", { style: { position: "relative", width: "100%", maxWidth: 220, height: 160, overflow: "hidden", background: C2("surfaceSecondary", "#f5f7fa"), borderRadius: 12, ...wrap }, children: [
124998
125126
  /* @__PURE__ */ jsx11("div", { "aria-hidden": "true", style: { position: "absolute", top: 64, left: 8, right: 8, height: 32, background: C2("surfacePrimary", "#fff"), borderRadius: 8, boxShadow: "inset 0 0 0 1px rgba(0,0,0,.06)" } }),
124999
125127
  /* @__PURE__ */ jsx11(
@@ -125104,23 +125232,23 @@ var init_renderNode = __esm({
125104
125232
  const hasEvents = !!(props.onMapTap || props.onMarkerTap || props.onRegionChange || props.onShapeTap);
125105
125233
  const boundShapes = useResolvedScalar(props.shapesPath, ctx);
125106
125234
  const shapesRaw = Array.isArray(boundShapes) ? boundShapes : Array.isArray(props.shapes) ? props.shapes : [];
125107
- const shapes = React12.useMemo(() => shapesRaw.map((sh) => {
125235
+ const shapes = React13.useMemo(() => shapesRaw.map((sh) => {
125108
125236
  const kind = parseShapeKind(sh?.kind);
125109
125237
  const pts = Array.isArray(sh?.points) ? sh.points.filter((p2) => p2 && typeof p2.latitude === "number" && typeof p2.longitude === "number") : [];
125110
125238
  const ring = kind === "circle" && pts.length ? circleRing(pts[0].latitude, pts[0].longitude, typeof sh.radiusM === "number" ? sh.radiusM : 0) : pts;
125111
125239
  return { ...sh, kind, points: ring };
125112
125240
  }), [JSON.stringify(shapesRaw)]);
125113
125241
  const boundCameraRaw = useResolvedScalar(props.cameraPath, ctx);
125114
- const commandedCamera = React12.useMemo(() => decodeCamera(boundCameraRaw), [boundCameraRaw]);
125115
- const [box, setBox] = React12.useState({ w: 400, h: h2 });
125116
- const [tileStatus, setTileStatus] = React12.useState({});
125117
- const [userCam, setUserCam] = React12.useState(null);
125118
- const dragRef = React12.useRef(null);
125119
- const dragMovedRef = React12.useRef(false);
125120
- const regionReportedRef = React12.useRef(false);
125121
- const [boxEl, setBoxEl] = React12.useState(null);
125122
- const attachBox = React12.useCallback((el2) => setBoxEl(el2), []);
125123
- React12.useEffect(() => {
125242
+ const commandedCamera = React13.useMemo(() => decodeCamera(boundCameraRaw), [boundCameraRaw]);
125243
+ const [box, setBox] = React13.useState({ w: 400, h: h2 });
125244
+ const [tileStatus, setTileStatus] = React13.useState({});
125245
+ const [userCam, setUserCam] = React13.useState(null);
125246
+ const dragRef = React13.useRef(null);
125247
+ const dragMovedRef = React13.useRef(false);
125248
+ const regionReportedRef = React13.useRef(false);
125249
+ const [boxEl, setBoxEl] = React13.useState(null);
125250
+ const attachBox = React13.useCallback((el2) => setBoxEl(el2), []);
125251
+ React13.useEffect(() => {
125124
125252
  const el2 = boxEl;
125125
125253
  if (!el2) return;
125126
125254
  const measure2 = () => {
@@ -125143,12 +125271,12 @@ var init_renderNode = __esm({
125143
125271
  const explicitSchematic = schematic && props.routeMode?.toLowerCase() === "schematic";
125144
125272
  const usesTileArm = !explicitSchematic && (otherTileReason || hasStaticMarkers) && (follow || !schematic);
125145
125273
  const pinsOnly = hasStaticMarkers && !otherTileReason;
125146
- const [userFix, setUserFix] = React12.useState(null);
125147
- const [followBroken, setFollowBroken] = React12.useState(false);
125148
- React12.useEffect(() => {
125274
+ const [userFix, setUserFix] = React13.useState(null);
125275
+ const [followBroken, setFollowBroken] = React13.useState(false);
125276
+ React13.useEffect(() => {
125149
125277
  if (follow) setFollowBroken(false);
125150
125278
  }, [follow]);
125151
- React12.useEffect(() => {
125279
+ React13.useEffect(() => {
125152
125280
  if (!observeUserLocation || !usesTileArm) return;
125153
125281
  const geo = typeof navigator !== "undefined" ? navigator.geolocation : void 0;
125154
125282
  if (!geo || typeof geo.watchPosition !== "function") return;
@@ -125175,7 +125303,7 @@ var init_renderNode = __esm({
125175
125303
  const z5 = userCam?.z ?? fitted;
125176
125304
  const cLat = followActive ? userFix.lat : userCam?.lat ?? baseLat;
125177
125305
  const cLng = followActive ? userFix.lng : userCam?.lng ?? baseLng;
125178
- React12.useEffect(() => {
125306
+ React13.useEffect(() => {
125179
125307
  const resolved2 = resolveCamera(commandedCamera, cLat, cLng, z5);
125180
125308
  if (!resolved2) return;
125181
125309
  setFollowBroken(true);
@@ -125257,7 +125385,7 @@ var init_renderNode = __esm({
125257
125385
  const endDrag = () => {
125258
125386
  dragRef.current = null;
125259
125387
  };
125260
- React12.useEffect(() => {
125388
+ React13.useEffect(() => {
125261
125389
  if (!boxEl || !usesTileArm || !interactive) return;
125262
125390
  const zoomOnWheel = (event) => {
125263
125391
  event.preventDefault();
@@ -125267,7 +125395,7 @@ var init_renderNode = __esm({
125267
125395
  boxEl.addEventListener("wheel", zoomOnWheel, { passive: false });
125268
125396
  return () => boxEl.removeEventListener("wheel", zoomOnWheel);
125269
125397
  }, [boxEl, usesTileArm, interactive, z5, cLat, cLng]);
125270
- React12.useEffect(() => {
125398
+ React13.useEffect(() => {
125271
125399
  const action = props.onRegionChange;
125272
125400
  const fire = ctx.onAction;
125273
125401
  if (!usesTileArm || !action || !fire) return;
@@ -125399,35 +125527,39 @@ var init_renderNode = __esm({
125399
125527
  if (typeof el2.scrollTo === "function") el2.scrollTo({ left, behavior: "smooth" });
125400
125528
  else el2.scrollLeft = left;
125401
125529
  };
125402
- CarouselNode = withExtras("CarouselNode", ({ props, ctx, wrap }) => {
125530
+ CarouselNode = withExtras("CarouselNode", ({ props, ctx, wrap, nodeId }) => {
125403
125531
  const C2 = ctx.color;
125404
125532
  const items = Array.isArray(props.items) ? props.items : [];
125405
125533
  const pages2 = items.filter((p2) => isNodeLike(p2) || p2?.type);
125406
125534
  const count2 = pages2.length;
125407
- const [index, setIndex] = React12.useState(typeof props.currentIndex === "number" ? props.currentIndex : 0);
125408
- const indexRef = React12.useRef(index);
125409
- const trackRef = React12.useRef(null);
125410
- const [hovered, setHovered] = React12.useState(false);
125411
- const [focused, setFocused] = React12.useState(false);
125535
+ const [index, setIndex] = React13.useState(typeof props.currentIndex === "number" ? props.currentIndex : 0);
125536
+ const indexRef = React13.useRef(index);
125537
+ const { settled, scrolling } = useSettledPage(index);
125538
+ const [, heightsChanged] = React13.useReducer((n2) => n2 + 1, 0);
125539
+ const pageKey = pages2.map((p2, i2) => p2?.id ?? `#${i2}`).join("\0");
125540
+ const pageHeights = React13.useMemo(() => ({ map: /* @__PURE__ */ new Map(), changed: heightsChanged }), [pageKey]);
125541
+ const trackRef = React13.useRef(null);
125542
+ const [hovered, setHovered] = React13.useState(false);
125543
+ const [focused, setFocused] = React13.useState(false);
125412
125544
  const paused = hovered || focused;
125413
125545
  const interval = typeof props.autoplayIntervalMs === "number" && props.autoplayIntervalMs > 0 ? props.autoplayIntervalMs : 0;
125414
125546
  const autoplay = interval > 0 && count2 > 1 && !ctx.reduceMotion();
125415
125547
  const onChange = props.onChange;
125416
- const onChangeRef = React12.useRef(onChange);
125548
+ const onChangeRef = React13.useRef(onChange);
125417
125549
  onChangeRef.current = onChange;
125418
- const autoScrollRef = React12.useRef(null);
125419
- const endAutoScroll = React12.useCallback(() => {
125550
+ const autoScrollRef = React13.useRef(null);
125551
+ const endAutoScroll = React13.useCallback(() => {
125420
125552
  if (autoScrollRef.current) clearTimeout(autoScrollRef.current.timer);
125421
125553
  autoScrollRef.current = null;
125422
125554
  }, []);
125423
125555
  const requestedIndex = Math.max(0, Math.min(count2 - 1, typeof props.currentIndex === "number" ? props.currentIndex : 0));
125424
- React12.useEffect(() => {
125556
+ React13.useEffect(() => {
125425
125557
  endAutoScroll();
125426
125558
  indexRef.current = requestedIndex;
125427
125559
  setIndex(requestedIndex);
125428
125560
  if (trackRef.current) trackRef.current.scrollLeft = requestedIndex * trackRef.current.clientWidth;
125429
125561
  }, [requestedIndex, count2, endAutoScroll]);
125430
- React12.useEffect(() => {
125562
+ React13.useEffect(() => {
125431
125563
  const el2 = trackRef.current;
125432
125564
  el2?.addEventListener("scrollend", endAutoScroll);
125433
125565
  return () => {
@@ -125435,14 +125567,14 @@ var init_renderNode = __esm({
125435
125567
  endAutoScroll();
125436
125568
  };
125437
125569
  }, [endAutoScroll]);
125438
- const pageTo = React12.useCallback((page) => {
125570
+ const pageTo = React13.useCallback((page) => {
125439
125571
  if (page === indexRef.current) return;
125440
125572
  indexRef.current = page;
125441
125573
  setIndex(page);
125442
125574
  const action = onChangeRef.current;
125443
125575
  if (action && ctx.onAction) ctx.onAction({ ...action, args: { ...action.args ?? {}, index: page } });
125444
125576
  }, [ctx]);
125445
- React12.useEffect(() => {
125577
+ React13.useEffect(() => {
125446
125578
  if (!autoplay || paused) return;
125447
125579
  const id = setInterval(() => {
125448
125580
  const next = (indexRef.current + 1) % count2;
@@ -125461,6 +125593,7 @@ var init_renderNode = __esm({
125461
125593
  if (page === autoScrollRef.current.target) endAutoScroll();
125462
125594
  return;
125463
125595
  }
125596
+ scrolling(page);
125464
125597
  pageTo(page);
125465
125598
  };
125466
125599
  const onPointerOver = () => setHovered(true);
@@ -125499,7 +125632,7 @@ var init_renderNode = __esm({
125499
125632
  const next = event.key === "Home" ? 0 : event.key === "End" ? count2 - 1 : Math.max(0, Math.min(count2 - 1, indexRef.current + (event.key === "ArrowRight" ? 1 : -1)));
125500
125633
  if (trackRef.current) trackRef.current.scrollLeft = next * trackRef.current.clientWidth;
125501
125634
  pageTo(next);
125502
- }, style: { display: "flex", overflowX: "auto", scrollSnapType: "x mandatory", width: "100%" }, children: pages2.map((pg, i2) => /* @__PURE__ */ jsx11("div", { style: { minWidth: "100%", scrollSnapAlign: "start" }, children: renderNode(pg, ctx) }, pg?.id ?? i2)) }),
125635
+ }, style: { display: "flex", overflowX: "auto", scrollSnapType: "x mandatory", width: "100%" }, children: pages2.map((pg, i2) => /* @__PURE__ */ jsx11("div", { style: { minWidth: "100%", scrollSnapAlign: "start" }, children: /* @__PURE__ */ jsx11(LiveWindowPage, { page: pg, index: i2, count: count2, current: settled, liveWindow: props.liveWindow, ownerId: nodeId || "carousel", heights: pageHeights, ctx }) }, pg?.id ?? i2)) }),
125503
125636
  count2 > 1 && /* @__PURE__ */ jsx11("div", { "aria-label": `Page ${index + 1} of ${count2}`, style: { display: "flex", gap: 6, justifyContent: "center", marginTop: 10 }, children: pages2.map((_2, i2) => /* @__PURE__ */ jsx11("span", { "aria-current": i2 === index ? "true" : void 0, style: { width: i2 === index ? 18 : 7, height: 7, borderRadius: 999, background: i2 === index ? C2("accentPrimary", "#116DFF") : C2("border", "#ccc") } }, i2)) })
125504
125637
  ]
125505
125638
  }
@@ -125507,7 +125640,7 @@ var init_renderNode = __esm({
125507
125640
  });
125508
125641
  BannerNode = withExtras("BannerNode", ({ props, ctx, wrap }) => {
125509
125642
  const C2 = ctx.color;
125510
- const [dismissed, setDismissed] = React12.useState(false);
125643
+ const [dismissed, setDismissed] = React13.useState(false);
125511
125644
  if (dismissed) return null;
125512
125645
  const accent = sevColor(ctx, props.severity ?? "info");
125513
125646
  return /* @__PURE__ */ jsxs8("div", { style: { display: "flex", gap: 11, width: "100%", boxSizing: "border-box", borderRadius: ctx.radius("md", 10), padding: 13, background: `color-mix(in srgb, ${accent} 12%, ${C2("surfacePrimary", "#fff")})`, border: `1px solid color-mix(in srgb, ${accent} 32%, transparent)`, ...wrap }, children: [
@@ -125540,15 +125673,15 @@ var init_renderNode = __esm({
125540
125673
  const rawImageUrl = props.imageUrl != null && isBinding(props.imageUrl) ? boundImageUrl : props.imageUrl;
125541
125674
  const heroSrc = typeof rawImageUrl === "string" && rawImageUrl !== "" ? rawImageUrl : typeof props.imageAsset === "string" && isWebAssetPath(props.imageAsset) ? props.imageAsset : void 0;
125542
125675
  const resolvedHero = heroSrc ? resolveAssetUrl(heroSrc, ctx.assetBaseUrl) : void 0;
125543
- const [failedHero, setFailedHero] = React12.useState(null);
125676
+ const [failedHero, setFailedHero] = React13.useState(null);
125544
125677
  const imageUrl = resolvedHero && resolvedHero !== failedHero ? resolvedHero : void 0;
125545
125678
  const expanded = Math.max(0, typeof props.expandedHeight === "number" && Number.isFinite(props.expandedHeight) ? props.expandedHeight : 280);
125546
125679
  const collapsed = Math.max(0, Math.min(expanded, typeof props.collapsedHeight === "number" && props.collapsedHeight > 0 ? props.collapsedHeight : 64));
125547
125680
  const parallax = typeof props.parallaxFactor === "number" && Number.isFinite(props.parallaxFactor) ? Math.max(0, Math.min(1, props.parallaxFactor)) : 0.5;
125548
125681
  const span = Math.max(1, expanded - collapsed);
125549
- const rootRef = React12.useRef(null);
125550
- const [offset, setOffset] = React12.useState(0);
125551
- React12.useEffect(() => {
125682
+ const rootRef = React13.useRef(null);
125683
+ const [offset, setOffset] = React13.useState(0);
125684
+ React13.useEffect(() => {
125552
125685
  const el2 = rootRef.current;
125553
125686
  const win = el2?.ownerDocument?.defaultView;
125554
125687
  if (!el2 || !win) return;
@@ -125650,22 +125783,22 @@ var init_renderNode = __esm({
125650
125783
  const boundEnd = useResolvedScalar(props.selectedEndDatePath, ctx);
125651
125784
  const seedStart = (props.selectedStartDatePath != null ? typeof boundStart === "string" ? boundStart : "" : typeof props.selectedStartDate === "string" ? props.selectedStartDate : "") || "";
125652
125785
  const seedEnd = (props.selectedEndDatePath != null ? typeof boundEnd === "string" ? boundEnd : "" : typeof props.selectedEndDate === "string" ? props.selectedEndDate : "") || "";
125653
- const [range, setRange] = React12.useState({ start: seedStart, end: seedEnd });
125654
- const lastRangeSeed = React12.useRef(`${seedStart}|${seedEnd}`);
125655
- React12.useEffect(() => {
125786
+ const [range, setRange] = React13.useState({ start: seedStart, end: seedEnd });
125787
+ const lastRangeSeed = React13.useRef(`${seedStart}|${seedEnd}`);
125788
+ React13.useEffect(() => {
125656
125789
  const key3 = `${seedStart}|${seedEnd}`;
125657
125790
  if (lastRangeSeed.current === key3) return;
125658
125791
  lastRangeSeed.current = key3;
125659
125792
  setRange({ start: seedStart, end: seedEnd });
125660
125793
  }, [seedStart, seedEnd]);
125661
- const seed2 = React12.useMemo(
125794
+ const seed2 = React13.useMemo(
125662
125795
  () => monthSeed(drivenYear ?? props.year, drivenMonth ?? props.month, selectedDate),
125663
125796
  [drivenYear, drivenMonth, props.year, props.month, selectedDate]
125664
125797
  );
125665
- const [view, setView] = React12.useState(seed2);
125798
+ const [view, setView] = React13.useState(seed2);
125666
125799
  const seedKey = `${seed2.year}-${seed2.month}`;
125667
- const lastSeed = React12.useRef(seedKey);
125668
- React12.useEffect(() => {
125800
+ const lastSeed = React13.useRef(seedKey);
125801
+ React13.useEffect(() => {
125669
125802
  if (lastSeed.current === seedKey) return;
125670
125803
  lastSeed.current = seedKey;
125671
125804
  setView(seed2);
@@ -125675,18 +125808,18 @@ var init_renderNode = __esm({
125675
125808
  const boundMode = useResolvedScalar(props.displayModePath, ctx);
125676
125809
  const drivenMode = props.displayModePath != null && (boundMode === "week" || boundMode === "month") ? boundMode : void 0;
125677
125810
  const modeSeed = drivenMode ?? (props.displayMode === "week" ? "week" : "month");
125678
- const [mode, setMode] = React12.useState(modeSeed);
125679
- const lastModeSeed = React12.useRef(modeSeed);
125680
- React12.useEffect(() => {
125811
+ const [mode, setMode] = React13.useState(modeSeed);
125812
+ const lastModeSeed = React13.useRef(modeSeed);
125813
+ React13.useEffect(() => {
125681
125814
  if (lastModeSeed.current === modeSeed) return;
125682
125815
  lastModeSeed.current = modeSeed;
125683
125816
  setMode(modeSeed);
125684
125817
  }, [modeSeed]);
125685
125818
  const isWeek = mode === "week";
125686
125819
  const weekSeed = calWeekStart(selectedDate ?? localDayKey(/* @__PURE__ */ new Date()), firstWeekday);
125687
- const [weekStart, setWeekStart] = React12.useState(weekSeed);
125688
- const lastWeekSeed = React12.useRef(weekSeed);
125689
- React12.useEffect(() => {
125820
+ const [weekStart, setWeekStart] = React13.useState(weekSeed);
125821
+ const lastWeekSeed = React13.useRef(weekSeed);
125822
+ React13.useEffect(() => {
125690
125823
  if (lastWeekSeed.current === weekSeed) return;
125691
125824
  lastWeekSeed.current = weekSeed;
125692
125825
  setWeekStart(weekSeed);
@@ -125699,7 +125832,7 @@ var init_renderNode = __esm({
125699
125832
  return { date, day: parseLocalDate(date)?.getDate() ?? 0, inMonth: true, isToday: date === todayKey };
125700
125833
  })] : monthMatrix(year, month, firstWeekday);
125701
125834
  const heads = weekdayLabels(firstWeekday);
125702
- const gridRef = React12.useRef(null);
125835
+ const gridRef = React13.useRef(null);
125703
125836
  const titleMonth = isWeek ? calWeekTitleMonth(weekStart) : { year, month };
125704
125837
  const monthLabel = new Date(titleMonth.year, titleMonth.month - 1, 1).toLocaleDateString(void 0, { month: "long", year: "numeric" });
125705
125838
  const expandable = props.expandable === true;
@@ -125874,7 +126007,7 @@ var init_renderNode = __esm({
125874
126007
  const events = Array.isArray(rawEvents) ? rawEvents : [];
125875
126008
  const boundAnchor = useResolvedScalar(props.anchorDatePath, ctx);
125876
126009
  const anchorRaw = props.anchorDatePath != null ? boundAnchor : props.anchorDate;
125877
- const [pagedAnchor, setPagedAnchor] = React12.useState(null);
126010
+ const [pagedAnchor, setPagedAnchor] = React13.useState(null);
125878
126011
  const localAnchor = pagedAnchor && Object.is(pagedAnchor.raw, anchorRaw) && pagedAnchor.path === props.anchorDatePath && pagedAnchor.mode === props.mode && pagedAnchor.provider === ctx.provider ? pagedAnchor.date : null;
125879
126012
  if (pagedAnchor && !localAnchor) setPagedAnchor(null);
125880
126013
  const anchor = localAnchor ?? (typeof anchorRaw === "string" ? parseLocalDate(anchorRaw) : null) ?? /* @__PURE__ */ new Date();
@@ -126114,7 +126247,7 @@ var init_renderNode = __esm({
126114
126247
  const boundEvents = useResolvedScalar(props.eventsPath, ctx);
126115
126248
  const rawEvents = props.eventsPath != null ? boundEvents : props.events;
126116
126249
  const events = Array.isArray(rawEvents) ? rawEvents : [];
126117
- const groups = React12.useMemo(() => {
126250
+ const groups = React13.useMemo(() => {
126118
126251
  const buckets = /* @__PURE__ */ new Map();
126119
126252
  for (const ev of events) {
126120
126253
  if (!ev) continue;
@@ -126134,19 +126267,19 @@ var init_renderNode = __esm({
126134
126267
  const onSelect = (ev) => dispatchCalendarAction(ctx, ev?.onTap ?? props.onSelectEvent, { eventId: ev?.id });
126135
126268
  const boundScrollTo = useResolvedScalar(props.scrollToDatePath, ctx);
126136
126269
  const scrollTarget = props.scrollToDatePath != null ? typeof boundScrollTo === "string" ? boundScrollTo : void 0 : typeof props.scrollToDate === "string" ? props.scrollToDate : void 0;
126137
- const containerRef = React12.useRef(null);
126138
- const [visibleDays, setVisibleDays] = React12.useState(CAL_AGENDA_INITIAL_DAYS);
126270
+ const containerRef = React13.useRef(null);
126271
+ const [visibleDays, setVisibleDays] = React13.useState(CAL_AGENDA_INITIAL_DAYS);
126139
126272
  const targetIndex = scrollTarget ? groups.findIndex((g2) => g2.key === scrollTarget) : -1;
126140
126273
  const windowEnd = Math.max(visibleDays, targetIndex >= 0 ? targetIndex + 1 : 0);
126141
126274
  const shown2 = groups.length > windowEnd ? groups.slice(0, windowEnd) : groups;
126142
126275
  const hasMore = groups.length > shown2.length;
126143
- React12.useEffect(() => {
126276
+ React13.useEffect(() => {
126144
126277
  if (!scrollTarget) return;
126145
126278
  const block = groups[0]?.key === scrollTarget ? "nearest" : "start";
126146
126279
  containerRef.current?.querySelector(`[data-daygroup="${scrollTarget}"]`)?.scrollIntoView({ block });
126147
126280
  }, [scrollTarget, windowEnd]);
126148
- const sentinelRef = React12.useRef(null);
126149
- React12.useEffect(() => {
126281
+ const sentinelRef = React13.useRef(null);
126282
+ React13.useEffect(() => {
126150
126283
  if (!hasMore) return;
126151
126284
  const el2 = sentinelRef.current;
126152
126285
  if (!el2 || typeof IntersectionObserver === "undefined") return;
@@ -126263,26 +126396,26 @@ var init_renderNode = __esm({
126263
126396
  PRESENTED_SCOPE = '[aria-modal="true"], [role="dialog"], [role="alertdialog"], [role="menu"]';
126264
126397
  focusRoots = /* @__PURE__ */ new WeakMap();
126265
126398
  A11yHintDescription = ({ hint, idBase, children, ...forwarded }) => {
126266
- const descId = `${idBase ?? "hm"}__hint${React12.useId()}`;
126399
+ const descId = `${idBase ?? "hm"}__hint${React13.useId()}`;
126267
126400
  const own6 = children.props;
126268
126401
  const next = { ...forwarded };
126269
126402
  if (forwarded.style) next.style = { ...own6.style ?? {}, ...forwarded.style };
126270
126403
  const ids = [own6["aria-describedby"], forwarded["aria-describedby"], descId].flatMap((v2) => v2 ? String(v2).split(/\s+/) : []).filter(Boolean);
126271
126404
  next["aria-describedby"] = Array.from(new Set(ids)).join(" ");
126272
126405
  return /* @__PURE__ */ jsxs8(Fragment4, { children: [
126273
- React12.cloneElement(children, next),
126406
+ React13.cloneElement(children, next),
126274
126407
  /* @__PURE__ */ jsx11("span", { id: descId, hidden: true, "data-hm-a11y-hint": "", children: hint })
126275
126408
  ] });
126276
126409
  };
126277
126410
  reportedUnknownComponents = /* @__PURE__ */ new Set();
126278
126411
  UnknownComponentNode = ({ pkg, type, props, ctx, wrap, ...extras }) => {
126279
126412
  const hasTelemetry = !!ctx.emitTelemetry;
126280
- React12.useEffect(() => {
126413
+ React13.useEffect(() => {
126281
126414
  reportUnknownComponent(ctx, pkg, type);
126282
126415
  }, [ctx.appId, ctx.screenId, hasTelemetry, pkg, type]);
126283
126416
  const { style: extraStyle, children: extraChildren, ...attrs } = extras;
126284
126417
  const nodeProps = (entries) => entries.filter(([, v2]) => isNodeLike(v2) || Array.isArray(v2) && v2.some(isNodeLike));
126285
- const renderProps = (entries) => entries.map(([k2, v2]) => /* @__PURE__ */ jsx11(React12.Fragment, { children: Array.isArray(v2) ? kids2(v2.filter(isNodeLike), ctx) : renderNode(v2, ctx) }, k2));
126418
+ const renderProps = (entries) => entries.map(([k2, v2]) => /* @__PURE__ */ jsx11(React13.Fragment, { children: Array.isArray(v2) ? kids2(v2.filter(isNodeLike), ctx) : renderNode(v2, ctx) }, k2));
126286
126419
  const childKeys = nodeProps(Object.entries(props ?? {}));
126287
126420
  if (!unknownComponentShowsDeveloperLabel(ctx)) {
126288
126421
  const contentKeys = childKeys.filter(([k2]) => k2 === "child" || k2 === "children");
@@ -126306,7 +126439,7 @@ var init_renderNode = __esm({
126306
126439
  });
126307
126440
 
126308
126441
  // ../../core/web-renderer/src/renderToHtml.tsx
126309
- import React13 from "react";
126442
+ import React14 from "react";
126310
126443
  import { renderToStaticMarkup } from "react-dom/server";
126311
126444
  function renderDescriptorToHtml(payload, tokens2, scheme = "light", provider = null, width, chrome, opts) {
126312
126445
  const rtl = opts?.isRTL === true;
@@ -126326,7 +126459,7 @@ function renderDescriptorToHtml(payload, tokens2, scheme = "light", provider = n
126326
126459
  const withRenderStyles = (markup) => {
126327
126460
  if (!markup) return markup;
126328
126461
  if (!glassPreview) return FOCUS_STYLE_MARKUP + markup;
126329
- const scoped = renderToStaticMarkup(React13.createElement(
126462
+ const scoped = renderToStaticMarkup(React14.createElement(
126330
126463
  "div",
126331
126464
  {
126332
126465
  className: "himi-ios-glass-preview",
@@ -126343,18 +126476,18 @@ function renderDescriptorToHtml(payload, tokens2, scheme = "light", provider = n
126343
126476
  const dir = rtl ? { dir: "rtl" } : {};
126344
126477
  if (header || footer) {
126345
126478
  return withRenderStyles(renderToStaticMarkup(
126346
- React13.createElement(
126479
+ React14.createElement(
126347
126480
  "div",
126348
126481
  // F-22 — same footer pin as ScreenHost: a full-height flex column + margin-top:auto
126349
126482
  // keeps the footer at the bottom edge even when the payload is short.
126350
126483
  { "data-testid": "screen-host", ...dir, ...footer ? { style: { display: "flex", flexDirection: "column", minHeight: "100%", flexGrow: 1 } } : {} },
126351
- header ? React13.createElement(
126484
+ header ? React14.createElement(
126352
126485
  "div",
126353
126486
  { "data-testid": "sticky-header", style: { position: "sticky", top: 0, zIndex: 10 } },
126354
126487
  renderNode(header, ctx)
126355
126488
  ) : null,
126356
126489
  renderNode(payload, ctx),
126357
- footer ? React13.createElement(
126490
+ footer ? React14.createElement(
126358
126491
  "div",
126359
126492
  { "data-testid": "sticky-footer", style: { position: "sticky", bottom: 0, zIndex: 10, marginTop: "auto" } },
126360
126493
  renderNode(footer, ctx)
@@ -126364,11 +126497,11 @@ function renderDescriptorToHtml(payload, tokens2, scheme = "light", provider = n
126364
126497
  }
126365
126498
  if (rtl) {
126366
126499
  return withRenderStyles(renderToStaticMarkup(
126367
- React13.createElement("div", dir, renderNode(payload, ctx))
126500
+ React14.createElement("div", dir, renderNode(payload, ctx))
126368
126501
  ));
126369
126502
  }
126370
126503
  return withRenderStyles(renderToStaticMarkup(
126371
- React13.createElement(React13.Fragment, null, renderNode(payload, ctx))
126504
+ React14.createElement(React14.Fragment, null, renderNode(payload, ctx))
126372
126505
  ));
126373
126506
  }
126374
126507
  var init_renderToHtml = __esm({
@@ -150275,7 +150408,7 @@ function keepFromSpec(dir, specPath) {
150275
150408
  function droppedPrimaryTaps(dropped, primaryIds = /* @__PURE__ */ new Set()) {
150276
150409
  const out2 = /* @__PURE__ */ new Map();
150277
150410
  for (const d2 of dropped) {
150278
- if (!primaryIds.has(d2.node) && !/\/primary$|[._](?:primary|cta)(?:[._]|$)/i.test(d2.node)) continue;
150411
+ if (!primaryIds.has(d2.node) && !/\/(?:primary|book)$|[._](?:primary|cta)(?:[._]|$)/i.test(d2.node)) continue;
150279
150412
  const k2 = `${d2.screen}\u2192${d2.to}`;
150280
150413
  const cur = out2.get(k2) ?? { screen: d2.screen, to: d2.to, taps: 0 };
150281
150414
  cur.taps++;
@@ -153886,7 +154019,7 @@ function tokenColorIssues(dir, tokensPathOverride) {
153886
154019
  );
153887
154020
  }
153888
154021
  const base = contrastFindings(colors);
153889
- for (const f2 of base) warn3(`${tokensPath}: ${f2.render(f2.schemes)}`);
154022
+ for (const f2 of base) (f2.invisible ? error : warn3)(`${tokensPath}: ${f2.render(f2.schemes)}`);
153890
154023
  if (idiom !== null && typeof idiom === "object" && !Array.isArray(idiom)) {
153891
154024
  const seen = new Set(base.flatMap((f2) => f2.schemes.map((s2) => `${f2.key}|${s2}`)));
153892
154025
  for (const [overlay, layer] of Object.entries(idiom)) {
@@ -153895,7 +154028,7 @@ function tokenColorIssues(dir, tokensPathOverride) {
153895
154028
  const merged = mergeIdiomOverlay({ colors }, { colors: layerColors }).colors;
153896
154029
  for (const f2 of contrastFindings(merged)) {
153897
154030
  const added = f2.schemes.filter((s2) => !seen.has(`${f2.key}|${s2}`));
153898
- if (added.length) warn3(`${tokensPath}: under the idiom.${overlay} overlay, ${f2.render(added)}`);
154031
+ if (added.length) (f2.invisible ? error : warn3)(`${tokensPath}: under the idiom.${overlay} overlay, ${f2.render(added)}`);
153899
154032
  }
153900
154033
  }
153901
154034
  }
@@ -153957,11 +154090,15 @@ function contrastFindings(colors) {
153957
154090
  findings.set(key3, {
153958
154091
  key: key3,
153959
154092
  schemes: [scheme],
154093
+ // Body text the page makes invisible is an error too (#4999): the same no-degraded-mode case
154094
+ // as invisible card text, and the card pass defers to this row when page and card match.
154095
+ invisible: fgName === "textPrimary" && ratio < INVISIBLE_TEXT,
153960
154096
  render: (schemes) => `colors.${fgName} (${fg}) on colors.${pair.bg} (${bg}) is ${ratio.toFixed(2)}:1 in ${schemes.join(" / ")} \u2014 below the WCAG AA ${AA_TEXT}:1 for text. ${fgName} is ${pair.use}, so that text is hard to read.${fix}`
153961
154097
  });
153962
154098
  }
153963
154099
  }
153964
154100
  accentOnSurfaces(colors, declared, findings);
154101
+ textOnCardSurfaces(colors, declared, findings);
153965
154102
  return [...findings.values()];
153966
154103
  }
153967
154104
  function sameHueClearingAll(fg, bgs, target = AA_TEXT) {
@@ -153975,6 +154112,45 @@ function sameHueClearingAll(fg, bgs, target = AA_TEXT) {
153975
154112
  }
153976
154113
  return void 0;
153977
154114
  }
154115
+ function textOnCardSurfaces(colors, declared, findings) {
154116
+ const fgName = "textPrimary";
154117
+ if (colors[fgName] === void 0) return;
154118
+ for (const surface of CARD_TEXT_SURFACES) {
154119
+ if (colors[surface] === void 0) continue;
154120
+ for (const scheme of SCHEMES) {
154121
+ if (!declared.has(scheme)) continue;
154122
+ const fg = schemeValue(colors[fgName], scheme);
154123
+ const bg = schemeValue(colors[surface], scheme);
154124
+ if (!fg || !bg) continue;
154125
+ const painted2 = paintedOver(fg, bg);
154126
+ if (!painted2) continue;
154127
+ const pageRaw = schemeValue(colors.surfacePrimary, scheme);
154128
+ const page = pageRaw && paintedOver(fg, pageRaw) ? pageRaw.slice(0, 7) : void 0;
154129
+ const opaqueBg = bg.slice(0, 7);
154130
+ if (page === opaqueBg) continue;
154131
+ const ratio = contrastRatio3(painted2, opaqueBg);
154132
+ if (ratio >= AA_TEXT) continue;
154133
+ if (ratio >= INVISIBLE_TEXT && page && contrastRatio3(paintedOver(fg, pageRaw), page) < AA_TEXT) continue;
154134
+ const key3 = `${fgName}|${surface}|${fg}|${bg}|${page ?? ""}`;
154135
+ const same3 = findings.get(key3);
154136
+ if (same3) {
154137
+ same3.schemes.push(scheme);
154138
+ continue;
154139
+ }
154140
+ const opposite = page !== void 0 && onLightSide(page) !== onLightSide(opaqueBg);
154141
+ const noSingle = page !== void 0 && opposite && contrastRatio3(page, opaqueBg) < AA_TEXT * AA_TEXT;
154142
+ const suggestion = noSingle ? void 0 : sameHueClearingAll(painted2, page ? [page, opaqueBg] : [opaqueBg]);
154143
+ const restructure = ` Move ${surface} to the page's side of mid-grey (a ${page && onLightSide(page) ? "light" : "dark"} ${surface} on this page), or scope the card's text colour with \`modifiers.theme\` (e.g. { "colors": { "textPrimary": "#RRGGBB" } } on the card).`;
154144
+ const fix = noSingle ? ` surfacePrimary (${page}) and ${surface} (${opaqueBg}) sit on opposite sides of mid-grey, so no single textPrimary can clear ${AA_TEXT}:1 on both.${restructure}` : suggestion ? ` A ${fgName} that clears it${page ? " and the page" : ""} is ${suggestion} (${contrastRatio3(suggestion, opaqueBg).toFixed(2)}:1 on ${surface}).` + (opposite ? restructure : "") : ` No ${fgName} of this hue clears ${AA_TEXT}:1 on ${surface}${page ? " and the page" : ""}.` + (opposite ? restructure : "");
154145
+ findings.set(key3, {
154146
+ key: key3,
154147
+ schemes: [scheme],
154148
+ invisible: ratio < INVISIBLE_TEXT,
154149
+ render: (schemes) => `colors.${fgName} (${fg}) on colors.${surface} (${bg}) is ${ratio.toFixed(2)}:1 in ${schemes.join(" / ")} \u2014 below the WCAG AA ${AA_TEXT}:1 for text. ${fgName} is body and title text, and cards, sheets and list rows paint their titles and labels on ${surface}, not the page, so that text is hard to read or invisible.${fix}`
154150
+ });
154151
+ }
154152
+ }
154153
+ }
153978
154154
  function accentOnSurfaces(colors, declared, findings) {
153979
154155
  const hasAccentText = colors.accentText !== void 0;
153980
154156
  for (const fgName of hasAccentText ? ["accentText", "accentPrimary"] : ["accentPrimary"]) {
@@ -154020,7 +154196,7 @@ function accentOnSurfacesFor(fgName, role, colors, declared, findings) {
154020
154196
  }
154021
154197
  }
154022
154198
  }
154023
- var INTEGER_TOKEN_FIELDS, INTEGER_TOKEN_MAPS, AA_TEXT, CONTRAST_PAIRS, SCHEMES, channels, toHex2, mixHex, onLightSide;
154199
+ var INTEGER_TOKEN_FIELDS, INTEGER_TOKEN_MAPS, AA_TEXT, INVISIBLE_TEXT, CONTRAST_PAIRS, SCHEMES, channels, toHex2, mixHex, onLightSide, CARD_TEXT_SURFACES;
154024
154200
  var init_token_lint = __esm({
154025
154201
  "src/token-lint.ts"() {
154026
154202
  init_token_colors();
@@ -154033,6 +154209,7 @@ var init_token_lint = __esm({
154033
154209
  ];
154034
154210
  INTEGER_TOKEN_MAPS = ["spacing", "radius"];
154035
154211
  AA_TEXT = 4.5;
154212
+ INVISIBLE_TEXT = 1.5;
154036
154213
  CONTRAST_PAIRS = [
154037
154214
  {
154038
154215
  fg: "accentPrimary",
@@ -154053,6 +154230,7 @@ var init_token_lint = __esm({
154053
154230
  return toHex2(ca2.map((c2, i2) => c2 * w2 + cb[i2] * (1 - w2)));
154054
154231
  };
154055
154232
  onLightSide = (hex2) => contrastRatio3("#000000", hex2) >= contrastRatio3("#FFFFFF", hex2);
154233
+ CARD_TEXT_SURFACES = ["surfaceSecondary", "surfaceElevated"];
154056
154234
  }
154057
154235
  });
154058
154236
 
@@ -168801,38 +168979,38 @@ var init_preview_assets_generated = __esm({
168801
168979
  "../../packages/serve/src/preview-assets.generated.ts"() {
168802
168980
  init_preview_assets_format();
168803
168981
  PREVIEW_ASSET_MANIFEST = [
168804
- { key: "assets/DashboardHost-CKAKQQH0.js", contentType: "application/javascript; charset=utf-8", offset: 8, length: 2916, sha256: "bb3e4ce667ae9992367c62d035e5cef2367bfd684484d0ccd6689952624dd0ec" },
168805
- { key: "assets/DevDrawer-Bo1-NtPp.js", contentType: "application/javascript; charset=utf-8", offset: 2924, length: 16744, sha256: "73c480764b062926b68dec0e4976232c8b08dd6f54bdc8ea1dab74b2b3ded5d1" },
168806
- { key: "assets/IdiomCompare-z7cS66yR.js", contentType: "application/javascript; charset=utf-8", offset: 19668, length: 1892, sha256: "1031b3129bca32bfb5d16744b12ce887ca6bd80526c54d96e24061ed85df2836" },
168807
- { key: "assets/LightboxViewer-CtEUVaFK.js", contentType: "application/javascript; charset=utf-8", offset: 21560, length: 8132, sha256: "ff0fcd314ce86c2dcce9e62fd0637be7b65780c9c865324fab5ed2147eaee8dd" },
168808
- { key: "assets/PhonePreviewControl-BQSqif6v.js", contentType: "application/javascript; charset=utf-8", offset: 29692, length: 37729, sha256: "9edaf0f361aa26eb84999a2c26d2ec5d3b8bcd9b0751992346301292fcdd34c0" },
168809
- { key: "assets/SchemeCompare-CnLhoKms.js", contentType: "application/javascript; charset=utf-8", offset: 67421, length: 1824, sha256: "e34139136ef0b09ed4d035cccd288aad174cad001fbf37ea7190a95d021daa0a" },
168982
+ { key: "assets/DashboardHost-Bj846Us1.js", contentType: "application/javascript; charset=utf-8", offset: 8, length: 2916, sha256: "61f8fe74e7af4453425d4411e2b921b21ab50b65996da2324914f89ab331a00c" },
168983
+ { key: "assets/DevDrawer-BBFrX7mE.js", contentType: "application/javascript; charset=utf-8", offset: 2924, length: 16744, sha256: "739e732189369e9aecb1e2a42ba1a0c9aaf9be2fd9e52c92824962b4fb353176" },
168984
+ { key: "assets/IdiomCompare-SWzYZw-S.js", contentType: "application/javascript; charset=utf-8", offset: 19668, length: 1892, sha256: "1a666b1ef64e3abe2cf09e623d6d2b0154dda215cb9a8c4ae86e1953d2c001d6" },
168985
+ { key: "assets/LightboxViewer-DdAzf3s1.js", contentType: "application/javascript; charset=utf-8", offset: 21560, length: 8132, sha256: "44a1d49fcb99f920a21093cb8257ee221270e03c957b53da9422a16026c227f0" },
168986
+ { key: "assets/PhonePreviewControl-CkfYkUzf.js", contentType: "application/javascript; charset=utf-8", offset: 29692, length: 37729, sha256: "371c24a92955a2d083bfd0e63781635bf86a44df2a8107c2f2cc98f39ffbd4ac" },
168987
+ { key: "assets/SchemeCompare-DxFs6E3A.js", contentType: "application/javascript; charset=utf-8", offset: 67421, length: 1824, sha256: "9a15cc50a91a5263de0a1fc21bd8192404714e18fe92c7e67b37399db93fc841" },
168810
168988
  { key: "assets/glassPreviewBrowser-Bt5ZFmG4.js", contentType: "application/javascript; charset=utf-8", offset: 69245, length: 342, sha256: "20d73f97d38f6d9a0b79e68e24954cd6bbfe66833a6e6aecae00a9102e64cab3" },
168811
- { key: "assets/index-C4VDe6F7.js", contentType: "application/javascript; charset=utf-8", offset: 69587, length: 1339680, sha256: "d3a004b8bc8713b9f3a96d38a7ffedf2bb4ad3992c8b9f1d46d4c5906c1a69a0" },
168812
- { key: "assets/pdf-Bh2VDDGs.js", contentType: "application/javascript; charset=utf-8", offset: 1409267, length: 488199, sha256: "ecc062652805a1f0b10c43e9e0bd272738471baae10af272fd8cf0bbaefe9afe" },
168813
- { key: "assets/pdf.worker.min-BQa_JDET.js", contentType: "application/javascript; charset=utf-8", offset: 1897466, length: 73, sha256: "41bcfda4f3c8c0a81c785ea87c69afc8e7d0ed8c333324aee94c273d881bb6aa" },
168814
- { key: "assets/pdf.worker.min-BmVo14Nb.mjs", contentType: "application/javascript; charset=utf-8", offset: 1897539, length: 1317034, sha256: "a33cfe728c584fdba4fcc1fd54bcdc2f9f2f13889ddbb5b2bd1d0f8cbe49b84e" },
168815
- { key: "assets/pdfDocument-Beot4wow.js", contentType: "application/javascript; charset=utf-8", offset: 3214573, length: 3379, sha256: "f65ebbbff93207e6d06e016710c3bd2d64d1c1cb3c3cbbd78c98fccc261c1b91" },
168816
- { key: "assets/pdfFetch-Cc8i1I1h.js", contentType: "application/javascript; charset=utf-8", offset: 3217952, length: 2266, sha256: "1d21ad008921942217c9eac0c35b1713773b9d89c71e3ab4412781f7bb88f463" },
168817
- { key: "assets/webviewBridgeHost-U7EnNQhQ.js", contentType: "application/javascript; charset=utf-8", offset: 3220218, length: 9781, sha256: "38dc9521ea546e2a9df2832916f07cda0179a60d5aa40fdd3f5af6e6fda5c620" },
168818
- { key: "fonts/Roboto-LICENSE.txt", contentType: "application/octet-stream", offset: 3229999, length: 4610, sha256: "994062dd7af4186a739de55dd9e151c63b6301f8e2cbafc608d35c2e87da0cd2" },
168819
- { key: "fonts/Roboto-Variable.ttf", contentType: "font/ttf", offset: 3234609, length: 488584, sha256: "d7598e12c5dbef095ff8272cfc55da0250bd07fbdecbac8a530b9b277872a134" },
168820
- { key: "fonts/WixMadeforDisplay-Bold.ttf", contentType: "font/ttf", offset: 3723193, length: 90924, sha256: "ec4c7d63772d980d6e147b2df6215fd2737e4b04cebe0cf7e11dc695fb63cdcf" },
168821
- { key: "fonts/WixMadeforDisplay-ExtraBold.ttf", contentType: "font/ttf", offset: 3814117, length: 90984, sha256: "bf4c16a2774edd38a921edf3099469866cd74c094fd596f3fa4e81f54a04dfaa" },
168822
- { key: "fonts/WixMadeforDisplay-Medium.ttf", contentType: "font/ttf", offset: 3905101, length: 90980, sha256: "368faca44fb9f7207e4af784e94750b1ee59c1098b8689e0f4a918926f244fb5" },
168823
- { key: "fonts/WixMadeforDisplay-Regular.ttf", contentType: "font/ttf", offset: 3996081, length: 90872, sha256: "97ed8f1a6772abe26e3d8af5cecfc4b02faa94497d585b0398b5053b739a70c1" },
168824
- { key: "fonts/WixMadeforDisplay-SemiBold.ttf", contentType: "font/ttf", offset: 4086953, length: 90980, sha256: "642feab8a48ddf6c7a89d7c2a7c0edfa0e6e773f671287e460e222703563191e" },
168825
- { key: "fonts/WixMadeforText-Bold.ttf", contentType: "font/ttf", offset: 4177933, length: 108636, sha256: "37c179b4fefb63ea9637322b84583a2df53aa226c150294eea1675c14b1b8e29" },
168826
- { key: "fonts/WixMadeforText-ExtraBold.ttf", contentType: "font/ttf", offset: 4286569, length: 109084, sha256: "62e2fe4718129f36ecdb0ae4de385bd6b81ecc876146447167c6c140fad699a9" },
168827
- { key: "fonts/WixMadeforText-Medium.ttf", contentType: "font/ttf", offset: 4395653, length: 109048, sha256: "4ecf270136af928612c76fe4ebade91d8156975e5ea4c0cf9225501dd1788e02" },
168828
- { key: "fonts/WixMadeforText-Regular.ttf", contentType: "font/ttf", offset: 4504701, length: 107700, sha256: "dee56f09fd3efc127c1ea95557edc74110c1460a46287da36e0af25efd341ef5" },
168829
- { key: "fonts/WixMadeforText-SemiBold.ttf", contentType: "font/ttf", offset: 4612401, length: 88108, sha256: "dced97a77624bc5f8b1ae65850360908297f4588e09feb6f22792d29dc7e765b" },
168830
- { key: "himi-sw.js", contentType: "application/javascript; charset=utf-8", offset: 4700509, length: 6748, sha256: "4a92459977d7cefa1a6a7e020c3a63509737f083b3f2773557c1a5771665811a" },
168831
- { key: "index.html", contentType: "text/html; charset=utf-8", offset: 4707257, length: 4947, sha256: "c371161e8847353be43f370a3103a51d47bc3d3b980c04e703ad1e5ce1dff2e5" },
168832
- { key: "ios-glass-preview.css", contentType: "text/css; charset=utf-8", offset: 4712204, length: 7193, sha256: "a482f4796147c2a3893942e10ab225bd3b6f749f7125fe0330680d4c20ea0212" },
168833
- { key: "ios-glass-preview.svg", contentType: "image/svg+xml", offset: 4719397, length: 423, sha256: "b9cd5989d31464a0422f260a332af6be5add0b04de2148944de35158f3b75efc" },
168834
- { key: "kit-tab-bar.css", contentType: "text/css; charset=utf-8", offset: 4719820, length: 1171, sha256: "9e2c3a0faaf05d5471badf167a4d3bdf1c4e6dd65c432eea6d254158bfd99585" },
168835
- { key: "t5-frame.html", contentType: "text/html; charset=utf-8", offset: 4720991, length: 18778, sha256: "ba734d58c88281c71c01d9a2842a991d06f3ed91bf03449427ef11c7f6d1605d" }
168989
+ { key: "assets/index-D_QfkdYs.js", contentType: "application/javascript; charset=utf-8", offset: 69587, length: 1342829, sha256: "618f576acd30abe2aa40ceefdf01c25b8d88440739faa1dd07c8dccdc018768b" },
168990
+ { key: "assets/pdf-DmANontw.js", contentType: "application/javascript; charset=utf-8", offset: 1412416, length: 488199, sha256: "314d2fd0775446940489d7703961fdbf86ec60e44cbfec2ee01b43f6e7efac8c" },
168991
+ { key: "assets/pdf.worker.min-BQa_JDET.js", contentType: "application/javascript; charset=utf-8", offset: 1900615, length: 73, sha256: "41bcfda4f3c8c0a81c785ea87c69afc8e7d0ed8c333324aee94c273d881bb6aa" },
168992
+ { key: "assets/pdf.worker.min-BmVo14Nb.mjs", contentType: "application/javascript; charset=utf-8", offset: 1900688, length: 1317034, sha256: "a33cfe728c584fdba4fcc1fd54bcdc2f9f2f13889ddbb5b2bd1d0f8cbe49b84e" },
168993
+ { key: "assets/pdfDocument-CYAYFEwo.js", contentType: "application/javascript; charset=utf-8", offset: 3217722, length: 3379, sha256: "7bd09b21cb023744a610fa54d3fc4bed725809a44d99d61424ca58bc42afd571" },
168994
+ { key: "assets/pdfFetch-Cc8i1I1h.js", contentType: "application/javascript; charset=utf-8", offset: 3221101, length: 2266, sha256: "1d21ad008921942217c9eac0c35b1713773b9d89c71e3ab4412781f7bb88f463" },
168995
+ { key: "assets/webviewBridgeHost-IKhmRiMP.js", contentType: "application/javascript; charset=utf-8", offset: 3223367, length: 9849, sha256: "b747782404d1e8888300cae837498e755a09b8acda41a257731ea094784989dd" },
168996
+ { key: "fonts/Roboto-LICENSE.txt", contentType: "application/octet-stream", offset: 3233216, length: 4610, sha256: "994062dd7af4186a739de55dd9e151c63b6301f8e2cbafc608d35c2e87da0cd2" },
168997
+ { key: "fonts/Roboto-Variable.ttf", contentType: "font/ttf", offset: 3237826, length: 488584, sha256: "d7598e12c5dbef095ff8272cfc55da0250bd07fbdecbac8a530b9b277872a134" },
168998
+ { key: "fonts/WixMadeforDisplay-Bold.ttf", contentType: "font/ttf", offset: 3726410, length: 90924, sha256: "ec4c7d63772d980d6e147b2df6215fd2737e4b04cebe0cf7e11dc695fb63cdcf" },
168999
+ { key: "fonts/WixMadeforDisplay-ExtraBold.ttf", contentType: "font/ttf", offset: 3817334, length: 90984, sha256: "bf4c16a2774edd38a921edf3099469866cd74c094fd596f3fa4e81f54a04dfaa" },
169000
+ { key: "fonts/WixMadeforDisplay-Medium.ttf", contentType: "font/ttf", offset: 3908318, length: 90980, sha256: "368faca44fb9f7207e4af784e94750b1ee59c1098b8689e0f4a918926f244fb5" },
169001
+ { key: "fonts/WixMadeforDisplay-Regular.ttf", contentType: "font/ttf", offset: 3999298, length: 90872, sha256: "97ed8f1a6772abe26e3d8af5cecfc4b02faa94497d585b0398b5053b739a70c1" },
169002
+ { key: "fonts/WixMadeforDisplay-SemiBold.ttf", contentType: "font/ttf", offset: 4090170, length: 90980, sha256: "642feab8a48ddf6c7a89d7c2a7c0edfa0e6e773f671287e460e222703563191e" },
169003
+ { key: "fonts/WixMadeforText-Bold.ttf", contentType: "font/ttf", offset: 4181150, length: 108636, sha256: "37c179b4fefb63ea9637322b84583a2df53aa226c150294eea1675c14b1b8e29" },
169004
+ { key: "fonts/WixMadeforText-ExtraBold.ttf", contentType: "font/ttf", offset: 4289786, length: 109084, sha256: "62e2fe4718129f36ecdb0ae4de385bd6b81ecc876146447167c6c140fad699a9" },
169005
+ { key: "fonts/WixMadeforText-Medium.ttf", contentType: "font/ttf", offset: 4398870, length: 109048, sha256: "4ecf270136af928612c76fe4ebade91d8156975e5ea4c0cf9225501dd1788e02" },
169006
+ { key: "fonts/WixMadeforText-Regular.ttf", contentType: "font/ttf", offset: 4507918, length: 107700, sha256: "dee56f09fd3efc127c1ea95557edc74110c1460a46287da36e0af25efd341ef5" },
169007
+ { key: "fonts/WixMadeforText-SemiBold.ttf", contentType: "font/ttf", offset: 4615618, length: 88108, sha256: "dced97a77624bc5f8b1ae65850360908297f4588e09feb6f22792d29dc7e765b" },
169008
+ { key: "himi-sw.js", contentType: "application/javascript; charset=utf-8", offset: 4703726, length: 6748, sha256: "4a92459977d7cefa1a6a7e020c3a63509737f083b3f2773557c1a5771665811a" },
169009
+ { key: "index.html", contentType: "text/html; charset=utf-8", offset: 4710474, length: 4947, sha256: "f330d81ec1135e52fe917c6766b457e187e536147b59359f35e1dae94a77f026" },
169010
+ { key: "ios-glass-preview.css", contentType: "text/css; charset=utf-8", offset: 4715421, length: 7193, sha256: "a482f4796147c2a3893942e10ab225bd3b6f749f7125fe0330680d4c20ea0212" },
169011
+ { key: "ios-glass-preview.svg", contentType: "image/svg+xml", offset: 4722614, length: 423, sha256: "b9cd5989d31464a0422f260a332af6be5add0b04de2148944de35158f3b75efc" },
169012
+ { key: "kit-tab-bar.css", contentType: "text/css; charset=utf-8", offset: 4723037, length: 1171, sha256: "9e2c3a0faaf05d5471badf167a4d3bdf1c4e6dd65c432eea6d254158bfd99585" },
169013
+ { key: "t5-frame.html", contentType: "text/html; charset=utf-8", offset: 4724208, length: 18778, sha256: "ba734d58c88281c71c01d9a2842a991d06f3ed91bf03449427ef11c7f6d1605d" }
168836
169014
  ];
168837
169015
  }
168838
169016
  });
@@ -173139,6 +173317,12 @@ function credentialsPlan(deps) {
173139
173317
  };
173140
173318
  }
173141
173319
  async function connectProvider(provider, appId2, apply) {
173320
+ if (provider && !apply) {
173321
+ return {
173322
+ state: "unverified",
173323
+ detail: "whether the appleIAP payment provider is connected cannot be read (wix-iap has no read-only provider-readiness method), so applying sends ConnectProviderAccount again"
173324
+ };
173325
+ }
173142
173326
  if (!provider || !apply) return providerPlan(provider);
173143
173327
  try {
173144
173328
  const { connected } = await provider.connect(appId2);
@@ -173200,7 +173384,16 @@ function mappingTarget(item, plans, rules = APPLE_PROVISIONING_RULES) {
173200
173384
  return skip(entity, `the App Store purchase flow sells ${item.wix.entityType} items only as ${rule.productType}, not ${PRODUCT_TYPE[item.type]}`);
173201
173385
  }
173202
173386
  if (item.wix.entityType === "pricingPlan") {
173203
- if (!plans.ok) return skip(entity, `only one-time unlimited plans sell through the App Store, and ${plans.why}, so this plan was not mapped`);
173387
+ if (!plans.ok) {
173388
+ return { skip: {
173389
+ entity,
173390
+ appProductId: rule.appProductId(item.wix.entityId),
173391
+ storeProductId: item.productId,
173392
+ state: "failed",
173393
+ code: "request_failed",
173394
+ detail: `only one-time unlimited plans sell through the App Store, and ${plans.why}, so this plan was not mapped`
173395
+ } };
173396
+ }
173204
173397
  if (!plans.ids.has(item.wix.entityId)) {
173205
173398
  return skip(entity, "only one-time unlimited plans (one payment, valid until cancelled) sell through the App Store; this plan is recurring, time-limited, archived or not on the site");
173206
173399
  }
@@ -173227,6 +173420,17 @@ function decide(catalog4, target) {
173227
173420
  }
173228
173421
  return void 0;
173229
173422
  }
173423
+ function connectDiff(report3) {
173424
+ const diff = { inPlace: [], toCreate: [], conflicts: [], unverified: [], blocked: [], skipped: [] };
173425
+ const steps = [
173426
+ ["app", report3.app],
173427
+ ["key", report3.credentials],
173428
+ ["provider", report3.provider],
173429
+ ...report3.mappings.map((m2) => [`mapping ${m2.appProductId ?? m2.entity}`, m2])
173430
+ ];
173431
+ for (const [label3, step] of steps) diff[DIFF_BUCKET[step.state]].push(label3);
173432
+ return diff;
173433
+ }
173230
173434
  function mappingWithoutApp(item, planning, plans, rules = APPLE_PROVISIONING_RULES) {
173231
173435
  const target = mappingTarget(item, plans, rules);
173232
173436
  if ("skip" in target) return target.skip;
@@ -173241,12 +173445,22 @@ function noApp(why) {
173241
173445
  function failed(what, error) {
173242
173446
  return { state: "failed", code: "request_failed", detail: `could not ${what}: ${error instanceof Error ? error.message : String(error)}` };
173243
173447
  }
173244
- var PRODUCT_TYPE;
173448
+ var PRODUCT_TYPE, DIFF_BUCKET;
173245
173449
  var init_store_iap_connect = __esm({
173246
173450
  "src/store-iap-connect.ts"() {
173247
173451
  init_wix_payments_contract();
173248
173452
  init_store_iap_purchases();
173249
173453
  PRODUCT_TYPE = { nonConsumable: "NON_CONSUMABLE", consumable: "CONSUMABLE" };
173454
+ DIFF_BUCKET = {
173455
+ reused: "inPlace",
173456
+ done: "inPlace",
173457
+ planned: "toCreate",
173458
+ conflict: "conflicts",
173459
+ unverified: "unverified",
173460
+ failed: "unverified",
173461
+ blocked: "blocked",
173462
+ skipped: "skipped"
173463
+ };
173250
173464
  }
173251
173465
  });
173252
173466
 
@@ -173951,13 +174165,17 @@ function firstProblem(report3) {
173951
174165
  function printConnect(out2, report3, heading) {
173952
174166
  out2.line(`himi store iap connect \u2014 ${heading}`);
173953
174167
  out2.line(` ${pad("site")}${report3.site} \xB7 bundle ${report3.bundleId}`);
173954
- const row2 = (label3, step) => out2.line(` ${pad(label3)}${step.state.padEnd(9)}${step.detail}`);
174168
+ const row2 = (label3, step) => out2.line(` ${pad(label3)}${step.state.padEnd(11)}${step.detail}`);
173955
174169
  row2("app", report3.app);
173956
174170
  row2("key", report3.credentials);
173957
174171
  row2("provider", report3.provider);
173958
174172
  for (const mapping of report3.mappings) row2("mapping", mapping);
173959
174173
  if (report3.purchasesAppId) out2.line(` ${pad("binding")}wixIap: { purchasesAppId: "${report3.purchasesAppId}" }`);
173960
174174
  }
174175
+ function printDiff(out2, diff) {
174176
+ const parts = [["in place", diff.inPlace], ["to create", diff.toCreate], ["conflicts", diff.conflicts], ["unverified", diff.unverified], ["blocked", diff.blocked], ["skipped", diff.skipped]].filter(([, labels]) => labels.length).map(([name, labels]) => `${name}: ${labels.join(", ")}`);
174177
+ out2.line(` ${pad("diff")}${parts.join(" \xB7 ") || "nothing to change"}`);
174178
+ }
173961
174179
  function printConfig(out2, config, note) {
173962
174180
  if (note) out2.line(` ${pad("config")}${note}`);
173963
174181
  if (!config) return;
@@ -174064,10 +174282,12 @@ async function connectWith(flags, deps, out2) {
174064
174282
  if (outPath) writeJson(deps, out2, outPath, { report: report3, config });
174065
174283
  const configProblem = config?.conflicts.length ? "config_conflict" : unapplied ? "config_not_applied" : void 0;
174066
174284
  const code = firstProblem(report3) ?? configProblem;
174067
- if (out2.json) out2.print({ ok: !code, ...code ? { code } : {}, dryRun, report: report3, config, ...note ? { note } : {} });
174285
+ const diff = dryRun ? connectDiff(report3) : void 0;
174286
+ if (out2.json) out2.print({ ok: !code, ...code ? { code } : {}, dryRun, report: report3, ...diff ? { diff } : {}, config, ...note ? { note } : {} });
174068
174287
  else {
174069
174288
  printConnect(out2, report3, dryRun ? "dry run (nothing was written)" : "result");
174070
174289
  printConfig(out2, config, note);
174290
+ if (diff) printDiff(out2, diff);
174071
174291
  }
174072
174292
  return code ? 1 : 0;
174073
174293
  }
@@ -174381,7 +174601,7 @@ var init_store_iap = __esm({
174381
174601
  };
174382
174602
  CredentialsError = class extends Error {
174383
174603
  };
174384
- writesPlanned = (report3) => [report3.app, report3.credentials, report3.provider, ...report3.mappings].some((step) => step.state === "planned");
174604
+ writesPlanned = (report3) => [report3.app, report3.credentials, report3.provider, ...report3.mappings].some((step) => step.state === "planned" || step.state === "unverified");
174385
174605
  COMMANDS2 = {
174386
174606
  draft: draftCommand,
174387
174607
  plan: planCommand,
@@ -200651,6 +200871,53 @@ async function createCms(opts) {
200651
200871
  }
200652
200872
  return report3;
200653
200873
  }
200874
+ var SEED_BATCH_SIZE = 100;
200875
+ var SEED_BATCH_BYTES = 2e6;
200876
+ function seedBatches(rows) {
200877
+ const batches = [];
200878
+ let current = { start: 0, rows: [] };
200879
+ let bytes2 = 0;
200880
+ rows.forEach((row2, i2) => {
200881
+ const size = Buffer.byteLength(JSON.stringify({ data: row2 }), "utf8");
200882
+ if (current.rows.length && (current.rows.length >= SEED_BATCH_SIZE || bytes2 + size > SEED_BATCH_BYTES)) {
200883
+ batches.push(current);
200884
+ current = { start: i2, rows: [] };
200885
+ bytes2 = 0;
200886
+ }
200887
+ current.rows.push(row2);
200888
+ bytes2 += size;
200889
+ });
200890
+ if (current.rows.length) batches.push(current);
200891
+ return batches;
200892
+ }
200893
+ function readBulkInsert(answer, size) {
200894
+ const res = answer ?? {};
200895
+ const state = Array.from({ length: size }, () => "unknown");
200896
+ const rejected = [];
200897
+ (Array.isArray(res.results) ? res.results : []).forEach((result, position) => {
200898
+ const meta = result?.itemMetadata;
200899
+ const index = meta?.originalIndex ?? position;
200900
+ if (!Number.isInteger(index) || index < 0 || index >= size || state[index] !== "unknown") return;
200901
+ if (meta?.success === false || meta?.success !== true && meta?.error != null) {
200902
+ state[index] = "rejected";
200903
+ rejected.push({ index, code: meta.error?.code, reason: meta.error?.description ?? meta.error?.code ?? "Wix rejected this row without saying why" });
200904
+ } else if (meta?.success === true) {
200905
+ state[index] = "landed";
200906
+ }
200907
+ });
200908
+ const totals = res.bulkActionMetadata;
200909
+ if (!state.includes("landed") && !state.includes("rejected") && totals?.totalSuccesses === size && !totals.totalFailures) {
200910
+ state.fill("landed");
200911
+ }
200912
+ return {
200913
+ landed: state.filter((s2) => s2 === "landed").length,
200914
+ rejected,
200915
+ unconfirmed: state.flatMap((s2, i2) => s2 === "unknown" ? [i2] : [])
200916
+ };
200917
+ }
200918
+ function requestWasRefused(err) {
200919
+ return err instanceof WixApiError && err.status >= 400 && err.status < 500 && err.status !== 408;
200920
+ }
200654
200921
  async function seedCms(opts) {
200655
200922
  const { app, cms, call, dryRun = false, force = false, only, dir } = opts;
200656
200923
  const prefix = namespacePrefix(app);
@@ -200697,6 +200964,7 @@ async function seedCms(opts) {
200697
200964
  report3.skipped.push({ collection: id, reason: `already has ${count2} items \u2014 seeding an already-populated collection needs --force so real content is never buried under sample rows` });
200698
200965
  continue;
200699
200966
  }
200967
+ let inserted = rows.length;
200700
200968
  if (!dryRun) {
200701
200969
  const declaredKeys = new Set(spec.fields.map((f2) => f2.key));
200702
200970
  const clean2 = rows.map((row2) => {
@@ -200711,18 +200979,59 @@ async function seedCms(opts) {
200711
200979
  reason: `ignored undeclared key(s) in seed rows: ${droppedKeys.join(", ")} \u2014 only declared fields are written (a row cannot set system keys such as _id or _owner)`
200712
200980
  });
200713
200981
  }
200714
- await mapLimit(
200715
- clean2,
200716
- 4,
200717
- (row2, i2) => (
200718
- // Sent EXACTLY ONCE. An insert carries no idempotency key, so retrying a request
200719
- // that landed but whose response was lost silently duplicates the row — and a
200720
- // duplicate is worse than a reported failure the author can re-run deliberately.
200721
- call("POST", "/wix-data/v2/items", { dataCollectionId: id, dataItem: { data: row2 } })
200722
- )
200723
- );
200982
+ let landed = 0;
200983
+ const addFailure = (failure2) => {
200984
+ (report3.failed ??= []).push(failure2);
200985
+ report3.code = "seed_rows_failed";
200986
+ report3.ok = false;
200987
+ };
200988
+ for (const { start, rows: batch } of seedBatches(clean2)) {
200989
+ let answer;
200990
+ try {
200991
+ answer = await call("POST", "/wix-data/v2/bulk/items/insert", {
200992
+ dataCollectionId: id,
200993
+ dataItems: batch.map((data) => ({ data }))
200994
+ });
200995
+ } catch (e2) {
200996
+ addFailure({
200997
+ collection: id,
200998
+ rows: batch.map((_2, i2) => start + i2),
200999
+ outcome: requestWasRefused(e2) ? "rejected" : "unconfirmed",
201000
+ reason: e2 instanceof Error ? e2.message : String(e2)
201001
+ });
201002
+ const rest = clean2.slice(start + batch.length).map((_2, i2) => start + batch.length + i2);
201003
+ if (rest.length) {
201004
+ addFailure({ collection: id, rows: rest, outcome: "not-sent", reason: "not attempted: the request before them failed" });
201005
+ }
201006
+ report3.inserted[id] = landed;
201007
+ report3.sources[id] = source;
201008
+ report3.code = "seed_request_failed";
201009
+ throw Object.assign(e2 instanceof Error ? e2 : new Error(String(e2)), { partial: report3 });
201010
+ }
201011
+ const read = readBulkInsert(answer, batch.length);
201012
+ landed += read.landed;
201013
+ const byReason = /* @__PURE__ */ new Map();
201014
+ for (const r3 of read.rejected) {
201015
+ const key3 = `${r3.code ?? ""}\0${r3.reason}`;
201016
+ const group = byReason.get(key3) ?? { code: r3.code, reason: r3.reason, rows: [] };
201017
+ group.rows.push(start + r3.index);
201018
+ byReason.set(key3, group);
201019
+ }
201020
+ for (const group of byReason.values()) {
201021
+ addFailure({ collection: id, rows: group.rows, outcome: "rejected", ...group.code ? { code: group.code } : {}, reason: group.reason });
201022
+ }
201023
+ if (read.unconfirmed.length) {
201024
+ addFailure({
201025
+ collection: id,
201026
+ rows: read.unconfirmed.map((i2) => start + i2),
201027
+ outcome: "unconfirmed",
201028
+ reason: "Wix answered without a result for these rows, so they are not assumed written"
201029
+ });
201030
+ }
201031
+ }
201032
+ inserted = landed;
200724
201033
  }
200725
- report3.inserted[id] = rows.length;
201034
+ report3.inserted[id] = inserted;
200726
201035
  report3.sources[id] = source;
200727
201036
  }
200728
201037
  if (considered === 0) {
@@ -201037,6 +201346,18 @@ async function notifyCommand(ctx) {
201037
201346
  // src/commands/cms.ts
201038
201347
  init_wix_owner();
201039
201348
  init_cli_shared();
201349
+ function runFailureEnvelope(sub, e2, app, site) {
201350
+ const partial = e2.partial;
201351
+ const seedRequestFailed = sub === "seed" && partial?.code === "seed_request_failed";
201352
+ return {
201353
+ ...seedRequestFailed ? { ok: false, code: "seed_request_failed" } : {},
201354
+ error: e2.message,
201355
+ app,
201356
+ site,
201357
+ ...partial ? { partial } : {},
201358
+ hint: "the run stopped part-way; `himi cms query --site <msid>` shows the site's actual state before you re-run"
201359
+ };
201360
+ }
201040
201361
  async function cmsCommand(ctx) {
201041
201362
  const { io: io2, pos, flags, print } = ctx;
201042
201363
  const sub = pos[1];
@@ -201098,14 +201419,7 @@ async function cmsCommand(ctx) {
201098
201419
  try {
201099
201420
  report3 = sub === "query" ? await queryCms({ ...common, all: flags.all === true }) : sub === "create" ? await createCms({ ...common, dryRun: flags["dry-run"] === true, allowDestructive: flags["allow-destructive"] === true, applyPermissions: flags["apply-permissions"] === true }) : await seedCms({ ...common, dir, dryRun: flags["dry-run"] === true, force: flags.force === true, only: str3(flags.only) });
201100
201421
  } catch (e2) {
201101
- const partial = e2.partial;
201102
- io2.error(JSON.stringify({
201103
- error: e2.message,
201104
- app,
201105
- site,
201106
- ...partial ? { partial } : {},
201107
- hint: "the run stopped part-way; `himi cms query --site <msid>` shows the site's actual state before you re-run"
201108
- }));
201422
+ io2.error(JSON.stringify(runFailureEnvelope(sub, e2, app, site)));
201109
201423
  return 1;
201110
201424
  }
201111
201425
  print({ ...report3, site });