From 43ee2813a06315d0b8c88ac290cb1a37b75a3f20 Mon Sep 17 00:00:00 2001 From: Sebastian Zell Date: Sun, 25 Jan 2026 18:55:34 +0100 Subject: [PATCH] =?UTF-8?q?Probleme=20mit=20der=20Installation=20in=20DOck?= =?UTF-8?q?er=20gel=C3=B6sst?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .abacus.donotdelete | 1 + .dockerignore | 55 + .env.docker | 62 + .env.example | 33 + .gitignore | 7 + .npmignore | 70 + .npmrc | 16 + ARCHIV-INFO.md | 123 + CHANGELOG.md | 35 + CONTRIBUTING.md | 238 ++ DOCKER-INTEGRATION.md | 92 + Dockerfile | 41 + Dockerfile.custom-nodes | 48 + GIT-COMMANDS.md | 65 + INSTALLATION.md | 101 + LICENSE | 21 + MANUELLE-INSTALLATION-CONTAINER.md | 328 ++ README.md | 102 + SCHNELLSTART-DOCKER.md | 147 + SCHNELLSTART.md | 40 + SECURITY.md | 234 ++ TROUBLESHOOTING.md | 141 + build-on-host.sh | 183 + check-installation.sh | 281 ++ create-release.sh | 89 + credentials/LibreBookingApi.credentials.ts | 65 + custom-nodes/README.md | 42 + .../LibreBookingApi.credentials.ts | 65 + custom-nodes/index.ts | 4 + .../nodes/LibreBooking/LibreBooking.node.ts | 1203 +++++++ .../nodes/LibreBooking/librebooking.svg | 28 + .../LibreBookingTrigger.node.ts | 352 ++ .../LibreBookingTrigger/librebooking.svg | 28 + custom-nodes/package.json | 35 + custom-nodes/tsconfig.json | 31 + docker-compose.example.yml | 131 + docker-compose.override.yml | 21 + docker-compose.readonly.yml | 25 + docker-compose.yml | 65 + fix-node-installation.sh | 268 ++ git-cleanup.sh | 32 + git-commit.sh | 36 + index.ts | 6 + install-docker-manual.sh | 238 ++ install-docker.sh | 454 +++ install-in-container.sh | 191 + install.ps1 | 250 ++ install.sh | 209 ++ n8n-nodes-librebooking-v1.0.0.tar.gz | Bin 0 -> 330763 bytes n8n-nodes-librebooking-v1.0.0.zip | Bin 0 -> 340132 bytes nginx.conf | 122 + nodes/LibreBooking/LibreBooking.node.ts | 1203 +++++++ nodes/LibreBooking/librebooking.svg | 28 + .../LibreBookingTrigger.node.ts | 352 ++ nodes/LibreBookingTrigger/librebooking.svg | 28 + package-lock.json | 3067 +++++++++++++++++ package.json | 90 + quick-install.sh | 71 + test/test-api.ts | 325 ++ tsconfig.json | 31 + update-dependencies.sh | 112 + update-node.sh | 61 + workflows/example-workflows.json | 265 ++ 63 files changed, 12087 insertions(+) create mode 100644 .abacus.donotdelete create mode 100644 .dockerignore create mode 100644 .env.docker create mode 100644 .env.example create mode 100644 .gitignore create mode 100644 .npmignore create mode 100644 .npmrc create mode 100644 ARCHIV-INFO.md create mode 100644 CHANGELOG.md create mode 100644 CONTRIBUTING.md create mode 100644 DOCKER-INTEGRATION.md create mode 100644 Dockerfile create mode 100644 Dockerfile.custom-nodes create mode 100644 GIT-COMMANDS.md create mode 100644 INSTALLATION.md create mode 100644 LICENSE create mode 100644 MANUELLE-INSTALLATION-CONTAINER.md create mode 100644 README.md create mode 100644 SCHNELLSTART-DOCKER.md create mode 100644 SCHNELLSTART.md create mode 100644 SECURITY.md create mode 100644 TROUBLESHOOTING.md create mode 100755 build-on-host.sh create mode 100755 check-installation.sh create mode 100755 create-release.sh create mode 100644 credentials/LibreBookingApi.credentials.ts create mode 100644 custom-nodes/README.md create mode 100644 custom-nodes/credentials/LibreBookingApi.credentials.ts create mode 100644 custom-nodes/index.ts create mode 100644 custom-nodes/nodes/LibreBooking/LibreBooking.node.ts create mode 100644 custom-nodes/nodes/LibreBooking/librebooking.svg create mode 100644 custom-nodes/nodes/LibreBookingTrigger/LibreBookingTrigger.node.ts create mode 100644 custom-nodes/nodes/LibreBookingTrigger/librebooking.svg create mode 100644 custom-nodes/package.json create mode 100644 custom-nodes/tsconfig.json create mode 100644 docker-compose.example.yml create mode 100644 docker-compose.override.yml create mode 100644 docker-compose.readonly.yml create mode 100644 docker-compose.yml create mode 100755 fix-node-installation.sh create mode 100755 git-cleanup.sh create mode 100755 git-commit.sh create mode 100644 index.ts create mode 100755 install-docker-manual.sh create mode 100755 install-docker.sh create mode 100755 install-in-container.sh create mode 100644 install.ps1 create mode 100755 install.sh create mode 100644 n8n-nodes-librebooking-v1.0.0.tar.gz create mode 100644 n8n-nodes-librebooking-v1.0.0.zip create mode 100644 nginx.conf create mode 100644 nodes/LibreBooking/LibreBooking.node.ts create mode 100644 nodes/LibreBooking/librebooking.svg create mode 100644 nodes/LibreBookingTrigger/LibreBookingTrigger.node.ts create mode 100644 nodes/LibreBookingTrigger/librebooking.svg create mode 100644 package-lock.json create mode 100644 package.json create mode 100755 quick-install.sh create mode 100644 test/test-api.ts create mode 100644 tsconfig.json create mode 100755 update-dependencies.sh create mode 100755 update-node.sh create mode 100644 workflows/example-workflows.json diff --git a/.abacus.donotdelete b/.abacus.donotdelete new file mode 100644 index 0000000..8369c20 --- /dev/null +++ b/.abacus.donotdelete @@ -0,0 +1 @@ +gAAAAABpdkLcuZ-miUqWjdB0Cd3dpyc1YEmQ8RIAGa-n_3eNbVkstw2BD1X53OMGz8gtf0FxtiCFoIcHfOQ5nT8jAV_c78JdPQ7TgTrfC2RhHeFhq5KBcmeY1CDhHwM8Y8Hn-VVzQyxAFfD89ch5n8zPcsMIVdmBH5y-r5LYVF7MvHrYVV6PfcBD0NNhn6rNJRHQThtYrhFm3Ln94HF7fvlhWwNogMHQ_6-BE7cqgjGQGMf2hzJIBl2Ljuw2ViSDHmIXixr4bMD4CRvbEr2oSAlsaDcIFNdw2sy5Jena9YW_t7qe4Qhy2J84fIF9oewlTuW-jYw3xiVvYUxKRfQNhYUU0mHqP0t14g6gPgow7gZjIBOD9ZhvZsf_Swc4XqUdRfRESziHnWh9na_mlBFeMmpFzUy9bzNkz-H_v9RmkGusKBqNPDtJkupRdX95ZEjSnh7zmmoNECCz6f2NVBq3Z47fvPA4C1QbImQuHbZkFFkrRUXr6XGRaEh0e-K23itcC1AtOd1V0MmDEecTfkw0HeYtQ3x-cWQmkaZp62l2A9l338P48lhCSSDloh_xOT851SDpkf3CBionDgKO7YSiMykTASUYJs9-s8KR2bJx_bq-Mkofa-nCqdVdivG3gocd0jShpu1Pkt7AplciUFAKIResUHzGBhpk6FhxVfzAy9mIQWBsiXrKI1sDBdKXxbE7FOLwVl2p9XIZFscL9R_v4QJVK4ANih_ysgTUIQDnM561asQcLMCRL5_k5rhfzVdB5uDibKqlM5TjMo0oI7Wj5N6qbpW3GdOKhItgYz_uOvg-2D3ix_IIYmQ62pfl5RcTEyZvKxdsbfvK5XZW5oFvgmjjoYazPYPjq2N2meEOXmU63ftGgv79g1IgjqxWXotBgeAZ9rh78J3JYvH_-9G2fBxWcHbzHfQZ4YTUrKdra4SV4RR9HBs3pPBQKHSWre9GcZz3bp7MtOg_gOeE91tftTKXcanILJmUNFyX18M3c3rZK6nWBhcdn7IRExi2wOmaVNBUSFCD_cd_PNOziO1IVsHrZPrPPRA2Jyp-LAeAjRYoa3FVibqhMWdQ9Yu-C0Q_Re5JFiMfavfZShhbAFkDsffXkUVfBxJILLS-wFt3SLyhatxfbOih-01-Q38d5XFREOTQg0ZLLEO-liGKrAs_bK6N9LvTGpAId7AI7vN9GCTq3F6GtWXfHDx9a3zPRPXdkh22oBFAwakamgr5EbCB6mGKypGiENpbfGF10KKqNKE7iDslJ7Ucacc_fSwceWub2DHPQPOU5f6YGPaPgD0sFLCQKsR7QYZRfbBLZyAirnMWfcNDAQHB8HPSB-P5EVGi7djhrvJaIGSN_JK05t4_ZhOg4NA7zXkfWtGLtu6VQrEj_Vza9UbEEO50MN3JdPB5IbJOjBVqpgdYfCuvY_NxPWkCAeQXZyVrGCqJ4TrCwW6PpSZRcrnfxyvw2GkNwR2zpq9DbXR4lXXsTL0CUzi_iE9-zX8VnRBbKNpnt_WOTjMmOig_wvTPnk43LQiWnUGGX8bJl87L4lTR6LsXLtwE-YD51aDydfpE-jbe3xNj9ZO4B0x31-GDt8WJsD-ZBhXN0QWnf2QA2pm1i6nDQkSU51FOD0NexU2vMKpmkQO1ClhjqrcBBaKbtI9V-o3bTRokqYbnGvH_LnegFJ-Yp94hfd-T-X6U2Hv1qL8AzKauHs0Sr7niFVR_-mgkZLoeT93OtXB7t61QE4v_1POBFJweMq_Nc1-4HSX7lVHqvEznpkgkg09_giV1EC8AN8w0MxiDOLVmEMRdg1Y1ybJJ3SV93g05lxSpbMAa7TW5pp6Kne8fCu9lwDFBp3kVoxouqaUOdAvp6lawkKvDvEvee1b9nbHsApvO4WzPcMAdnUMHyBSfpHRpQrXybKY8nb8yzB6QUyvtkYtgZtaJu6Vh-V2RkCsqIxBBTjUO-JE07Ix7R4M7az0q60zjKKMehijvqNsKkXlOX3IDQjk6QC6AwhwOJeaej4YlooxZFPl3pQxxhleY7-ivruJbT-mjav-vz7nunYfeRbjz7tWajvWOL-3svt2g7HSIuIhiiG9MKgJTeEKThGfXznYdvtN3fLQ_ef7B2lIxaB8ZJIqQuFNh5QY0g4rIL30B2FMbOqB7lIJeFtc-Y2enyu4oJxWm5I1bkolzPdoDGK0QWcrHyv8oS7RUhirTOESsH2bca4ynFd9I9DZfKwfCb8gl66uXDv_dmSBYVz9pQeteDrjUECO7aV2VSoqqj7zIA-1E2XTwQjwqhdXIU9ne3h3WZzhArJJstRNp6B2raJX_AGzEe2E2PC-GdT1fAMo2FB894dp2KDlJ3wr50ESzZunnSUNPIeRQez92SM9A6JufDs_JrPgrK7F3PlsYGCkZ7PsP3GFn3Dv7VE9JDRfQU3tBFBqfKGFEx6-rIeyw9CQROBNnmNYSbNJHM8Pb0Ci1dn10fy_Ais6N5O9B-9Ly0hdvADkUD1U7EpEHrWmGgtfn8V8keWRv-q8m72NnVbmvw90z5TeHc-tULIPJbLHBRbnumAOdK7XiMtYqyOauI5ZVq8QokfsfD0g_tuZOsxY4HYSIDPdpak-dJzCXbS5kY1NMYR9M9bGg7v60r7gGaJUl_vZn71p80NeKiU_08H_V589N1PLVyzT3UAb2wvPLvayz4eUEmsjqduPEGdVV1-fG6bHC9plJHpA5c9ppNrXJWav_HpramfcCekj9IXXMIitP-4Q4OBQdY8Vq7uQM9QK4mRv7hw6qCfEEaOoFDYkW7wB75y16s9KLzFQWvmRUnDrNy1uPz_r1ojWvwwq-iK6ik-YLLEhzpIrS5w2eR2OFuQ14qKdeafkt7QyYBo7W8PK7PaDt7mtU8-r6HSdAQkS1pL7LO39z5WO6PNLVTIButdLPp3DmL1j4TMV8_yZOKlft3aYrvJxrQw9IqQ0_LxY2fEASdtltR-0fKr2QRSwOPHA0PXJPaJSYIVzFiVEXOeio3FbDnq4iP2CeyIqNJlC4iik_O4Yy4ZXaemOfuiW8lG6IrSBS1iy6xLVNXc65bZAR6Yq4PbWC1iMXK3FgWL0F9ft2ajE7Ncs46XOIE_55yJPusJQi7dujB7l0KxYqYAd44QrenIFFdAUFCbp_yd8dMfaBF15fCvIBA0i78aZa1IZzPZXHlEto1g-lBwoKmBHzB7nSaAVErnz1YKW8EEMOjb_KnOOKEwFVHH8vMCxm4IazIfehwO8ZuPSluQ9a-NLVzp1yqDh8f33EaWWiGmysAcnGm3Kaj3GebcyjHaGU6slg40ZJxgoGNGV7vP7N49EYtaXMpmuVlP7fMOMNVRFUD0v7strBeVmp9n8Y5V_i91pYJj_n1zo9WUBliPkDbLmMwg5TFrPY6z6obFbvoS7XOZ5996P9G7-doCdQcP9xjOpV2oJIdMUgu_GljC_orQZZXuT9Y6egxtq1w7NytaRbDbcrPy-_zIpKcEF6NN5iVbBukar5O6a2k5YhsHV0hq-SMYDpyR4t_jl3zdkJ8UHvCxRypOrTxhxzhmTRDe7MShyJNe6W0yFCGepJp_ljnBN7zdFLS5KjRfTqcU8tTOs3WDPp21ZKG3aTDgKLcj6TDMsUBagY4btp5gXATT6SM2jI1V3x1mspe9W4pC3hY4lqtN7hpn8Fz3v_nk-kQamI3FJNnW8c5BBbctFXK5mnxMq07Npws_QBzG5mgjwub4w0aXy96yCbx8o2-4t1amiGSKtKL7sTRUDK0dOlXMjB7wHcP27HSItg8RRs_Y8_DEUCt_v4ss3N4lbtz4QjWPhMsi4dhMn8CRtbtzCsFrSfZ3PEoMIpPVfBuCNBIgd75aimV1CpLTy9Oi3cFaUgE30vuX_ItVncIUI0ORRbgoxlRAW553LF3QOMRPebnfkV_HyMRnGFwuWyVW13CTm_PbrvwuMQUJqyyjcl1I651ClblJm1vxq9duUtAMHTyfKZApyjOEUWF-rGMdbYERXHbILg21c8q05WYwFR1OV79VBw4nZNAVXP5-55IvcA1agAwHhFs0fvRPdMYaKO6iMoYXAb5YcYFlzZMCcIq3dRf8pOwiyWo11D-iUHh6RxZPAPlmVI4osqO3-1Q5LDGPV1mT0Gi4VLpjHvKO6Jpn3SZMEq9mw6OJcpXDOPLpV3WvI4RshV6OQWRYrevU8GTRs6tH-k7Dm1J_cWVboeBb5FU_r1ueF9hYXUgzs30riHc-JePWELqJs19eI5gZ4_NMabkVHErjb4Q8nHFn5uwkVb4GoKrptDdkxdJXrZ_d1iW_DIilKvd0_Ye47HD9GaOkO9ib2jlySfIIpnckpHeH-2D2lRRxX7j1fxIBQBbcTLq8UjITdojMP-WTPZGieZU2bbdgP0ZbFk59v7Fkbxl2mOAKTCDIAZDH4pRtkHQ6EaxwzyvtLVxvGYXXYVPVupfwYO5KLj74YHKrysjlQHbamfyAEq7hGovGgvFeBHMdynOw62TMMC0ot0xJOsio7nmDOvzWRKmI9xBuzgMaeTFnw5RaTRPMoQ66BnPfjP74qWp4yLYdEgU7EnVDlISlRAiHPc2oJ8IRC84Ez9dg38R_hE2gWPgWVQhmdSc18WIZkK7Un87TNgRFB1h6EB3tnMxXtZJ9pZ-heQCPz1fWZVjaUXkMeepCr6VqPFM9zIkyGgvvG11tthOUtiTjhxH7JMh7idsisdSSexlz4vHg7mz0t-wV4q3PRUXcZcij08SNAcwfC-lbnZ5S9jLpowUVy43dkRE32ML6ca8sV8mwNWeLE01VV0mRnt6ooIOcQXDlaDWFwCWKKmRyqYdQ0xyHdFHyLVHlnp9ElFxFkEYf5x8ysuY1_HWUZJ7oBfmX6MNNgGiJhY3VOZMhDsWEvAlF9aFeVvizKr2OldDvByS9XsoI3v0-vsrhGsuetTBf9cZt4zTeimZpnko34bPpAMN9BWg7OU3RXvk-XX4yY5jsieXbK1Q5CvA8ld92BI4DfzJv_ho3jPpN-Kpyu_wIoQz_C1E2T4fdoMHuqIwWh0Kr6j3Q-Y0loofvT0zCmn19FZ6c-o3qiKM_T72LUAMFjRy8TqPIjwCLlqd9IPTGdSkCm-f9qmNB5i3FY7kejd4I-r410N9G4_ZlLNhaElTYETFbtq0EOjVI1ORHOkS9gN2KGx6AU_PvQ4_EVFLnaRMMV-uF2ZCIkUfQsw9hDFE0Y14d4kFFo7uT9k4CaN-ic6k9emn9ga0p_qaPslu7C1B2jR4qI6hi6Xi7QiwoYatKDSq9lJyS3qzmaQllV1NIKOEVHVYNwBMlcGE9sdDz8RAr82wOcqkXCF58D740Ij74NYz2Z05Lwi4tAXpLK4IhEX8Ach9SXJdq3IEmIGFTjMMFWfVKiIB0Ode2014Prk2XmGYAKk58wO9DmIVwfCYZHz8Uno1uCFBIPbt2cK0zaE5rdxaE6FGaIcaqe2zP5VqDfO-9bu-X3x5pS2VTSU4DtaX2i4aBgdNwPxySeXecqRW_fh1aFaBzbhh-pMYcF3X-ZdjRqxCg93cC1BXnDWl5MaJDI4Kf6j5CHs2mYPLoLXrJzfg3u0ZgkbgpMSSZIhbwsINFEEUtiLtCdqpfADOv8iTtFpkNZymO9FhJBjq_BUryqx9PU6cYeTfFDI218XImJcdaPuTg2pqwHeaOL4SreyElVTfLUqUUNyDO22QSiWNkin3qLZM3wnTfiVIig-gWXd9W55FDObWv6kw0voSlncpFmKQ4NIQQLfCFXZuSrFL34x0D6pcisRvd1JKic0hGwwCgt_nJLqGABLgq1F6HChD5Mm-m5DEUYPVV4nwoFh411OzIcHdILcTTzdY8xmSViqZ2gYImsMN3ZwMDY4W0sZWo3EQSGmDIV2t6QK_IH90ovLQR6SkGL3YZ_yPU9F1mnAAhNqZ4dqfx1I9x5SFlbw4ZtrCufmuf2poeyGHz9EiHfXJzbe62kcLrB8uZs-6GQS3VIk_CfLMjbzbiDVumRgQafGX_hJkpD0o1S9DLern4FuT4K7GzRCG9UQ06APmWJy6SXXqpdBOLr632j9KE5AttwKm2Xuf1I8ebjnQvm9EwfOeGE5YVTcI5VxTpFAw9LaY2rBMxORjGkqct-9kjVSRpoKGXC4N-dhBPcxko599svijefu_Zri2fiMeTPSe-Ol6aKYPnVcI86shuD4M_F0nS2KL-t8pQEUJxXggmBkQYRJW0GvZYXO1Z40VrFQYi8k6pxySbx9gbBlpE2Mx3Zq7j0M4pXmB93Fyh0Rk1zuMdKp93ic5pZ2JKT_cPtuEUP2uMz4jC_nVA9rU2ZzvuDSRlCJl0OGUKbItqm43H3P4S81jCd_hFfSUc7f4FrIp9KJcwIbryUM66764innMpT1xHRVEAWDpvt4uDni5rNzsVf_7Wlu3eGsd_ZcMbpNOI1dSD-O7dIXb64KYNSPbTPLfYA9IGVWw8-IfyqZaVaC7hcEq2_ww2OiZIT8E_HIehC2ErKk3YFOvxek0D4IR7Y2OWmzML5Ju_inMs63LvSsQzlp3HjZ9cmNufxToguyOobn8kQEP1EQ3sxYVNmLRAxyfpstRFyMs2_SXquIdz0eo0MmLEZ4U0qqPlkM3D6aSHAv1kdzfJvF-ILhO-D-PV4HPt7fAJCtJhORX2bTREK1o4liT0Z_Lx9--WmzlcRbLuQ6aF94BztdqQLYLgtzh9URoKtligISbQuj4tGEaqCKJoJS2LKstNJxrGAHzprbfdLssdRBtC5x16T-1kaJwJVPLEjFiq0vZusBDa0a9_DS1zKbJoktpUuve1ncryuWZP08Ml0BDOWt0sAP6Nqiy5EGP_G9mC79mrc3FKzfqdb-RJ_I_qap9SjuW2O9iBLoo735eCM8_7GinEEq4Q1YWgS_cPQG-ckioL8BZGIvHnAEIhMDTmDB9GCBfQmegqym0AIokKPhFv_0xSB_cKYpxiGlUtAg1YfTtisB7N4MEBEMVebHRryoeTuA71hKaDbFBvz-28c0XdueWm2XhU9yHM_kNpBFV961bhGcLAB-pkmV2DnMPQ6-tmVrr1-9KJpxYTrkBH3MsC6Rp4W2oUhh_2J_KYGGLZIDTbV4C7TM0nroksIJZC0xoO5clnwDy0A_QsHGRsi2yfv_QT03DdQg4ZxbYZA4zyHxMP8v0lpYVeuoCPlnvb2cKB5iVMZghpXh8BMkjx6uFQGH7zyn7h0so2ZxnP7NLM5Y4fQ_nxC1cbuJk9aRB2A0ABFF7t9CJ8Gw6Tu4Iu99vZ1JCq6vdv5VrYpHA7rwFOQDQ606QPHFJpaaVTy6ROVscVdo7KnRTraJadR4x21KyHlWtDKZ1GGoCX7CxPyT4Zy56_-qvJTBro4zffafVe5DTxL4IypErNp7Q0Acnh6HyFzDui-3KhmF-rUclkqPHA4-0B7CXnbIO91dYmQVsJJPUCDz8PFP7so1J564vrDp5tq6YM8pCmfa7IhIU9rOr0bRGxTiB9VGHYzDJ3WV15FEgV0V2pX16pYr9MLRGBioJ1CdzC5YCFOZRlLyBNbvNxs5ve6b9kEJpwcBtfMYfF2iW56qOOpJ3NcPI9StPrRmXTPVYl6AnnLnysLcw5qch-v5-XEtZxn9ZEm1SuCwvOdvlLrBnJGT27MGcSrY488V4mFabNLV3uJRMz_MwD9yu3u2Ptgx2hWy-MUjeIeiNhIZ0USmbIiHfCTV1zDbc0__6EVbKZtZlbZUO4z2w9ZUeO1yemViq1cxLDTKFYcbVOeixHg-slGBZvFiXybA1yxVkGI7ioTbVZb6JAPGGSsn3Kr5319166kNK0j-XVxpbpdXKY2-VcCFcqVXgUrzMMN_uj5XUqwQ4rdLFE5xpz_Y-zFNE4bPumyiCep059BHDeU6D3rm1v4Uwzip3djB2wiRN_jLc4z_DXBQP2ZWxc_6Y7QgWw9ZiNDevLn6utn-69CZnltxR70SLgZew2Pok9MC8mLtMqdOSSU9LOtrqBV1a-CmI5aYqOB3iKBrDCYoFBMyjmueCntzGO0BrOIeBOM0sUtqsc4gkkeFlAO8GgiHdAFVr5Pk4CdClhAWUA7jFIvn7_eMlxHHlZfkMPOXW4pWEmiqDMX5DSMbifN9KoXkxOa2gGB8sNfeVurOy8b9JLBSaYUXUz-5VJMxQ7_YZqFsY8ADEVZor-pnb0xmeoNl7ZsesfVAJ33igXFep28g9pd410AgptePtTGrIFFa52HHkANEX-PFFKW1ZFvZW9bhtcTb4sDiAoEjUH3Ev2MOYdBF1WxrdTywwnL4MaCDK7eSJFXxDcQVaAUJxStey9guiR8atJHRopi_we6--Mpq2AuHdaEq0knQ6i5iOHCyYakNLHUqZX5suFXZmoOqTL4ULNHf4xxNGFeALAluwUEWJPcKLWbfClbI_1qXEE2CZ2u4Cn3WZ3loW03_idvi2waQjYa2mAji_lcwStzeoJAs-xUwMyWdmyuApbKFykHSmQCeA47aQYVG7Oc0I4PA1EJLgtw8C8PdDBBQC2RlhxwLe50YTdNu1UeB1USLHYNrL0XnCG93wUbabdO7bnQC0-nAOgEwUjlnLseBWWVcqh6FyhFpcZiqcD7iylZnNB8rKE8eoDB6vtUWEo3GB2blgto9xDKiuwsZ1Wa_5O_WP2sttEhYdDvfh9m3FC2pwlxJK8gpeADWJ5sJc8B-QAYVtCiM-8DaM3GeONu6b5gqnn_yINq63bxHfc1P638NDz27TACZ0oporSxIi481k_XEMiO1v0h2agHIOSAXGqnR-w0_ZgmzOBZ6csaX2B3dDFOOonGaKDpH1l9HtcK6Bur_gVB0XxVmVf671WQXyGUzAwJNGrSEyHaRPxka4N36OqLSff8M063e9KC_-sQnM3Z9zIlVuhX09pejC1FvCUwHNE2VK6kLZWzx4A1Hovr3P8WAta6SDZQvgnGYmvtls9gKJgRLqfrsj07I2HSPfSN0ZKq5M05RaMwDTdMj5uC0ZjEX161wiG9PNSLfnpt9il8zI9m9KTuK369plzgtJ0s01m9J-L3766usr_qjWLuKuuRZCOzSv47yJnL2dKruU3_0I0dibICXaVL5qQamidRbq_f-wspuB6C5oGM3H-iz0pzQP9dNAvGKKfhsiIrPDdNmwcx0DyUlFfOIgVicJ1HM_4PPZJAW9_v1J3av2h0s0fLowKWSqJ5UAwgbyHPqYBxxmYmzSmRGrmvzRKswL6GFtQxE-SxY3R5t8DlD5X30nVMRpnOQbs-0AKuL1m_-Lq5XfiON0zUpGKQD5etU_LA8PMS3Qesfrdlo2VtmIAw65srdiZcMOl_u3k-GEdeFyyqO-FRl-b7IsvgeNMFRITkfHZ4gm0Hyb8wGHB9BYy0iWPup6I5QAMp-SNv_wcwUz2R-QGTYsOCpcjxxwkf3GH0nmSMMJKlX3dDqabywyni4wj20mK9QOQqZ33FBgA4Xb2LwH90je_A15KOEmbMrP-ChnazyQX_tV2dF3_lkabmyG7UQJCA1qO2_QszIf4kI4FbfEKXkBkH9uvLeVscfsKEq7YRBkU0moNT3gt9TbHjOfmSW0EYOEBjXGyTAxb19RFT5R0rTQpG1XynzLOdh5FrQWBCaoTRRAJhRaTwm915RG5xxbn9e4_PYKwdwSxGFzvjIkW9URpl2Ru8qiu62Gw0mgfsqFh7SaJlve6m6zXswfD0QStkVSM-G82duLxRsjub-RLaHGgIAjYfC5LZOCIeNsXBYJOOdi7EhPJ4X4p3yg5FK7Qz68N5Crs5bNVm9akINfHymWVQBuWbv_zBk0THdIwxAucxsOf0LeeBfEJCRG0hoBUGzJVsU4A_6rMn6TChS5n8efdrgUV1zNM1_-ofZOao0VzGY9PwCX7Wwg3UTzJKAeHtvpulXYXZs8o-6X3wUhnX602ACQaYAGFJI2TejTKU0NINQSNjj2DV8pxGz0rVoYDyxdlG3TIfPXax3wQ0x6b67gKRb-i_uz-5wTqYCRTq1LLHZaX3pbsmNR81DkWKxdNylvDS9pIuAWrut7ENj_OvFGhIo7yGYbujE1OJki3CSpqP2wMCa0lJuAIlt7SREHDGKm8T8dt0y6zGd1V87pmlVNkmdV9slnAz4Lg24IP_uWyobSDhAtwkDzoSFZxguAj2rkMK66lTD167pYL-dxHsjlfWss4DB_JXdVh8dDfxwtwjkv4dxCqWyoRTq_LqnAERW4GGX2xPWwvQDbw8PTKQNkUG-8RydKAbk0P3O63gzkuhRlAm9AkJLb1nlKGPxw6uz_tBwPlr-ZvoRBD3uosg-rejj0LWUmIy_6OPvELmOhSok-vMBWNYm5EEQOqWDpPIPxKB3FpQKj5HMlDzOvZ54pSh_ojn6YPXdFZHi8kvuj38Tg7yUm9mK2F183gss368r9os-AYORqaWaOVaiLiKaTF_Epld8RW-nik36TweTaf0vMft3rirGk2ZMsgL6B_wWXIoq6zYxzqSEzKlKYolaFRXJUKr4QYmZUrZWIuZkdiMycvumWuPwkRUMJuI0kuFWqZMEYYKKT2cvHTVih90_XuV9lnQHRz6wDsrks6aFPVWtt1sV1rMBarifY4RBsOgFX-yD_sg03okhCeU8_bCG9VgLvWz8G86r1WWVfgh5yxqMh8S-TrE8p74wxUQI3XJol0ELQSB-UaJ2vlfoat6yMGk69EllN0gs22Yjm69xffyJwJTn2S8ifh871mNzYqVEDH_rpfD_7zZF-JZnTnJZwyyMkL70EZjeb55P6Rf5XCVlOiR_hYy6jqM11ksYUoc13oZf95NGy7382khIOisKzGpQISfcB3Wpi4mmQGoMy_Dyo5r1b14lT86MLTVT5RlThTvLEMpiVwv2PnCqcwmkVkq-RVlBG3v5T4Q4Ykl5DuN_Jj8ERiRWtaHdJOqBHIzaUp1PluJW5RFsdK47kI_ehe5XFMV-8LNzQAQRFyTKQI-QaJfCafzSKJzzjTFgsrvRSZ16WpP0srm0xyJ8xLFuF2MAEBq7UMWRdjcrj7lqxuqRWz70p3aZ7ZWCxRgPBU-nXS1FsfDffkUY58cTm6wbchEgYCVqs_yh8NOvu56_ncVc_3V3PAHRr9tlZmM0guR2Bp9jrVScZP9in_GZBDXbyUZkXl2q12LDdWUF7oDUi9R2URfHFeX48hTbwUE87cA7uAvn-y3o7GmQ4xdjnoa6UDRGpShHCFbBGHaFk7rWnqfZvhQZGJI7NXlMfcZsqziPYg0LTgUEu40GSvFsVFs5-I7vfDiiOVwIGbfB6kI3DUsVBXetHT2JkdrIB1-8N4gJ8NdgU7CZ7Rq37-YVC_zcE_rcmqWvuc36yvmCG-JzA_CeGzhvoP21f1NllqbNcgf4qsrR8MpXDOJX9UIWcxj58Y-xmaww-jwwYeCJDf28Opg06FrIUijHy9qY_c2jQkGriEOehltyJZjljdKf3yX3i_0IDtCEKuakzMo-dJGuqZ5J0gcsxX9sdNdas3wRfZrUwBCP_jS5eh2rVjPwSZbZQ94Iej-3c6TK-yzX2Dt1DTY5W6aXIKTh7P7g2b6JASEMe5au-uWiMaYrK1Sd2dLVyqpG6STTvOerWI-VeboLNIhWSQ6zP2ysu1k6AtMgxnaUIl2Ld6ZIlZPdkKASAPu8RETsXfKIxGkeVYIXFgbR-muCh5oehRvCRf_YXbv1yoFp5zCqhxs_QpOlu-sB_GJK7OwxDV44_QY0lNvYqNb81YbKN1SjZ8gn-5NoZGov8uU8NlO9B46Vh03oSRrjXEaSh5Rg2euNCRoboaGKfPh_ayC3KHQoateEc25g9iIDHTkZPNx6pxdz8qgoSKQMgHAdvDMaNFGeSTiCc4shr9aw_6vVyTLoXo-5k_mxrFJ33PN6y2LeNKc1USjaI1TFb3mgnquCfDVxrMhHH6W24IWmXIXZX9TQddfjYS4ttZ3Kck0DsucyOVHMNmckU64YGiS8cT_RxomVJvXv0DGFaqFtbCa8iXigAXCA6XAeeMakvyzboCSu5SAlhuTIeu3MXjhG1-UjPKfC7D4owTACXVBhDXqrGgIuZwZqjn43OI6gZYp0JNaCfikZCrw2pz1pTI8Ud5FRNMDvcd_QaHjGr_g0DEgNjYrBmnlJ47QsEdSHk5_8SKx6HqoDJIEBXsyJ0b7YdGfqrfuY_j7mA4uO7oEPvi6WXAUUIYFvzWXY8HmKUTt7cnVG5KeczDcP5yJXwcNgRHxAcSa85-0sxgy1HhwtsJryR70HeQGoU3ecdG3f63qVZpmupgEHtwJ_2Vu6P6sgHR2N_4kOtYZWcUImBo6snuLBizdoz-r94nPY53JXU5zxaUXvmqso_wyEIwRQ0X4iPC9WIj-LUxfPpZtStS1Ogpwool2vYK-F669nbw0-s6YJErCrOV9UGzpulaeDiUK6BC1TYgMF2KCnHN2dRl6HK7xMg6K-EX5QZqkUYnnpEPte-tfpka8xtoRsjMvyTkWzozJ1LGxhNeArmXqTY5hCiBRu9e6wMlgz9RYenmCrPxaOKBvDxIkGeavjKYqMRpk4hljoFbFb-DEfYUnhjWzPNRe1ZbvAgHby2eokZEeX9IwyKxTIhjJFQe_ufaN5-irunhE7QAAqMQ6cuQSP_QAj9CdYUXIz7cqiURAjQXkllpTNFG7V7WNXrNlO3vf6deQCJDkiCnJ70O6RNo36h8MlqUj0AFmc7nirC_CWEPP-PPbph5FzSD94ejGHljvRUSjRXtggu9BMv17fq2jDPsCF-xDnb0_e92cd-QnFB9O-IYEIRsFMDS58DnBf4pmQv-1l6WBv_f2rVOaD5nvE-k8vTsTfAP6dci53nJLkOYZCyCxGzixfwASTlorDdBoBqE_bUH4ECDEoZKKhsEJfc_7NXr_b8FQim4oyOCXQfGlfdeFqKoL83SAdraDWh468nlfPF6rDYX25l6z61hPAYx9l4r-6sm0RiwGKd7MjtttdbuTpf06OoWZR5B9LgOFLDb3pwed_jJDtf7XWWo5cslYs3Q1M2rkCpgMrudaBcH1aIpCWUnDLbkAmKwnpvj6bpfRYGxOqATtFf1xpcoPS_4JB19bLjdjbXMnDcoe1wgrQZ0bWxzBy6bviRMyFp6C701hJ0NRHAcGiIGlSk5z5uBxOXjQen-OUM-nDlpplFO_bv6WWep8sCHW_VPSzEbRNlSAYuRI3oTBMmzIF7m-QI6eO_r4NaAH-L5KJth4lK9dfOluKZGFI1tFuXK0ZAUmXUz3oT75wtt-_0KQxJhkQkGdoQgO3otlFLPVW_p1aMWFzn9Iif1-Bt1WCbIfv44eujh2AN0JUnrsJSdE-3Kpg54SKwKYghmT4nAOewvetpPfe7BuVAEsKJ85zVoctzNqg7Ap-AUQF5h3yskwyCq39eAVhNkQ2mcfRsEjBbtlethMW99OYlVwsOxah7lQJSJIBxBxJcwCTtC3ivENfsGG8pmZGqma9Wv7bogGQVpZyRbW9ilAljPBBrCIU6glbhUNxfJmjGNM1X6gbVpC7I7n8kgYp7Lqih3UCqnTQMVaRtI9jxM5fLtN3ARRvRLL-hPisniopKwumy0pRGIB0_lupkCTLit-83p7KJxggpjE55lVab-KghlaOb_sKbKdaGqEI3oWpMmo-8CmOoXpo6Ob402iZsp6Bx49eJ56YpPjHhHtWieiwj3bBL44q5g7gW14HMx7IYZRHUEUvIc_7gPI6OrjkEiAVdhdM8S5tyINnGhzgKa8_YIdMbEYaU2I8ape7s_RchcPF1_umcHy_ifWWr9EflI7yS8bwCj75pcYKL5NIb7cnxz3pNAWH8IUoayCkyDowQIxF0Qs26QB82LdJIiRLEBO8Z4YV7bevWMJg4vzjBAxaA-_hHqoT64du3l9AIaipsYAUAK8UIY6CRTD8gm46-tSPhUZJaBdDRricf3qSj28W-435y-zad8mqjO4EM2cgCFoyLwVpHqErUTKunInfpjZXCQ62nU0-boT2teOJVYckBvVajInAFdUnknUCrX9HhjPrLuW9vH1aRy4OeihYDkgOFziKw8J5v9QpvtxMfG6cGfr__SdILuhY-TIaE4eIRIYNHPkeroU34Xir8xqFIIR1EaG3p-Foi_vnuH9g51M8difQTyqFUdYd4qVS1NkhF50yswSzFhYSOpUkiSxDYx9f1s4DBacaLJn-nRCalFKxxnVMwI0L8lkhU3nzGiphUHG07eNsSd94Z6d85kX37HmDsSBmb4liIDXa6NOvnrUCVRL3F_OFgqPt1O-lfSgJD1yCeemyLChNKe8g4--rr9AHEy5cjUnZ-Yd774z8eok1xnFeJiIsYRwMkJgqUhid9RUBSFGqqANoLYN4RHpLQwfgj2-eJP3Wp_MSjk3uYCpoWyCYiAfU66VbiIJyP7J6062wCdZg4HH0ebRjvbnHpYkrAtKAhR6u2qIRT5rWNlUFpuo1HjoCbNlsLl3aBIPlXK3zPEoJPtSW_gQQ7Pv4gbC0QjjB0o3I3XM7NQMhl4aLFF4zTDcG0bGbb9A9P2Vq8SLELDgF2n2jKN-ue9BoHy-QSXOeM3pOEtlQtHCgn4BosgPwf-TVDkvvI3qA7-hJC-ZbPhGwkRj7XfmhyXhnod6zCTe8xr9m_itXbMEgMvHIlXnE6dWDEOKNbAwp-MV8rh3eThyj6PGKoqDSVmTqFlAzJoTMq2ubxktdJ-7jMX9Uxba2R7aT92Ijz-sgt6W6OggTUoeIA4Wwc9tUN0D40kOneGhVo4t8lPS778WG6ZOtepuT2tNwmKrJ8FbPuW25fcCmOBMFMB98Dx2CQzVuaMABy5VnUPGAx6cbG49MoTxtoD9oH4MfCsaIfZqsZ4epwEzHTjW-mJTk0DDziICXI1ljxIro6175e7NGsLBDkELU97g55ouOGiKrmju0T7HWURVwpHHnrOCvnrb-iJv0MX1BvxFrMkxgE1e8SQqbwsW3giM8coXeN0h1j291vOUc9yGHO0CzkQ_nnW_fCqqH0PfNXuQzktH7Au0uH2HNUucUS9FdLRhVK862b744mhKtd_K8BprWHWatKRA9-CMMTTs7QShEbVowO8S45GPNrYA7v2tNIq9r_Mh5gr0yqjpwnvoavt0apyl3vipq6t57cLGz8ShlOH9Qy2Br93hi5nn1jsICMB3Olx-PFsHutC4woDk519bZKG36DfaRZsMAXK4FlpEM_Y-TCBeUV1w3LZakbpC7SJSOo2D0Rq-sGdl-OhxFonUWcb0CqwIu13KF64FD-GTYloX1PbsBI4ro3x1dKLqoQ2IsiwyDPDGHCSrRHSqqxgexAaFLBq-lKeUm0nRmcldct3HrJ-agNRJnYqOMD7fLu02wU9EQ3Di6YvAEfbsFNF_fnPVeq7CbIQxBxMqBwGY-tmZ7V3_lcuNr5KARTNsCC21rXn7G8X-lr-9zAGbUelHCQ0ifvCzcMHO7c-2LvGnkQ6L1lmufUdbBTY4zHjpQACim06moCqjfR__gepEJoVvAvo_B6RrpSNL0nFNctjZ30GA2k-gUJlkdMHYSbiCTiMtcuKnhqeya8MARHVtfwrkR_OiKLE2-0Ci6vyxIxYbxOW-ap8W5Bfk_8ygbc6UhAyaMCDawXQkBgjXHGe3TEbbqWgsQjCkT_MrUTtndiQv7yRAm2FFdNOjG4b4MyE1Hklo5FFrFxTleDKXDC4GZ939-vTHbK4aSUEw16kqvyu3DsBcvNZRPWAkzh5FAz-56-fRSRAim-xTwyFHIFBjYNlcssSO9btj4BagWi-lh_BMHN04o9-zLFtB-CG6tL_yk931XLiHICYVmY30AQNYsJnLheSuzpFszs-LWhAqxhiWLdpPCJQmmeAUga4hHjciN2HEteXCdaQ2L9c5KMSu6ue37Den4QzcySPzOZ7v8YiBpDtVpAd2cZOIlYWZ4f5LDVQnyWJ_W2WcU3h7U3ofYa4rl8G0z1jAyzjh5Ly-poKhF6rM6Wtj9SZdFG6GKzJyPmgI3EnT5SU3C_bqhJx0ah9TGnz5hhdGoIqQwmFu63XmOwY-sezMk9AX6-t-vdsZ_uw8a7GAwZHKRvfee-Vjx-QqbZbU1w7ZCWy2zw1CScw9vbsN8mnFz-F7ne1rLgZYdjTfdoMCT9ucnu6cR-1LxikY3VUpR_pWClWWLJFdJwTysr-ybowevDweIpigvwLEMkt1yNwIj9EHUDlXE4B7jjzGfhA3IXxPg6Eclo--WdFjosC_8qn5LydaKPSf37yKYWDE0iVAVJEc9odozGr50ZGgEfVFn6IjfpgJgmklMTNYXWKLck_CFsio_Eezd_dVFqrY_3xqqBlVXLi_tDLLFCF26DDR05P3XUdVzgeToYnVd1PRLNUjnNdqq0s6LTBdeTX3XoG4QPwqMiMGu4Wk3wOlwhtvpQINzd3V7FofMZo21semW9RRKavUWzhgF4Z0PuE87BG7wREWUrICqTkeHdxxIyaaLwnQ_7u5ry5gaz3EOdme1tZnpxpfmVUcAtqaVWfGx3iSiBLB_mv8dxAbEpmjL2CIE-0AO3QJikdlw7uhuoJtTbwFyUiaUw_RfuD7wWNlmamlEwrHsBClAYZnaK28DrjmrdRkxgOJgzX5tI60ZVnJJEsCdfWOB9gA8nSURlozjGimUdN0mxRFz2Jxk3HpD1wun3ZW4vcp-fYUPXh-ClIWeRuoK0Q3_vV_qNMttAxCSNo0M3pNR5lwpE-XqgbLqzj1iDwH0gmT68m9aae8fsLxkjvOPRhFHooT8y4YXqBV_H13F7RyIy0iRX4l-qoSs8Hoj4odF-G3PWPPEGkfQqLykcmFPlsQMAbvIzF8ovhlgGwSqs6aBtf4y2g4J8QL5_jKBEy9zDxAbIDViWA0yxDtiIUiVBPtGoLWI8q9j8Hg9-dbfRXAzkKBkMFgaWqprN__Itc-uPMyVmyPDycJkKpEgKxwUmo-zuVpnwjMsh2ZHCugptrkvw0_MPOixVOLlveIuz3oqUns9Ve26QyS09NXuiDUCVndLFHzXlbs3omkgQa-FbBZL03xEMD7z-mtQYtB8A-cQZl0Hs-kbiBPB4H_T_4wyIQLPCWQke76ZdoZEe96Ncs0_hsS1L-aMxN7W3GyE6Ije2BQiCcYJkBoYDcm2AaaDel5VU5bFcxe-wrcFPbSIcOjWY_L3G3_XQ3KBM42jSOlIuYUHJ6DNpCXexOrHw9K3ESuvqoVJm2fnfEKuigfB7dPOHxXCijiDqxElvnBl10uK2Z269FdwjKXu0Hn6tHY4Tfy_xkOgn9nrB2m6RE2W-y4rHwGBh0HohTo7R_EtjaXC-6-D5VlIjTFbgZpC6q_vEVyiNhlkjpVY_CYX0-ZG3Abr8HvMMP40cG63GvQLDSFiW3aol340zkN44-oLJaWKHiA93ce8gzMXPRULcj6YCn0eBMa8Wg1Xqt4sbM1PRXVs8-hofr04dvLS4asHs9N06S9yoj41cCFOnAvTICzmRtXmCcwHKrIEmai2jyKnbNExwenDxAtYvE9E3sbbJvw9lx3kXxgXccnXz9berMIuE6heNLdFyuEMo42VM17OCMw_n9xnes-yIW2IVUXv4Pf2gBoMNiIbWrdUC8nta4yLyQRap_OQ2D7O6wnqdg7J3igxwWM8spmea5zyqeHph9g4rpMUGqKShSGryelE4RvgFwRJeQSq6ccgixsf252_tZqIjYqllHO6gDddYPf5-6-ykmLdagw7Jkw87BhE3r_Gfx_m9dhk4D7V7pbPT9fUnO9jrUbUqgp-Q5Wm7FRVhD0SvwQX3bgOJRgcqI_YAxHoPg22CX1zSKr_nWNfPwbhIPGYanOVoePT1N3zhygLCYvsXvAtyHBjgIM2LyXDbwMa2VNUBnfILtntuToZYh7zagT8Bnh61qAc8glqBvVK-7SUhU0yfNoeFlGW6SCCBoktbZ5NwxYZx14YWcdQ9biWYcAKa6lqCuz9SzMReMTB-pmt_2ESRifYTuU-ccJFjshG47tF5Wf6jTWzt4BHMeIn8wSQS96SYj4KyldPeT45umMIAtfIIBl7cn80mhieXjunlDd1HTcbxZRaAg8dF4aS6ClxSg4jik9tzCGV5_yrIiXdxiT8TimiKh1jyEoaahSq-9bTt6nIAdvzwNpC1gdS7lp0kT83u9AX13L-8HdInua4r1PCdvATILbBlReBs-X2m1w_ilIRbs8OiCVC6nuiJxDzfD5TTrdR9S6rOIT33CT-gZ_eY-rU4_oUcbvO2ECF53D_op0iGXOqHuGeHsda_QZksM_2LKpFSVK2xKf_GS2VvZ5BICHblwnGOm2N6huKum1bfktwNBdBQE2_m-YUKVSU2PQNQnuCRmQdcw8aL6SiF0TgDIwXF8nUVig-g0GCbwe1Of9W3vpI5PGsbQge8fLTLtXw3y4LK041-xLbFmuseP0AIuKwXl5REzEB_u38dsgBo38PBMmEjL3nmKvwx32jBtw0XIiVyVBBni6j2umU03s60gm40GvTk0Tsbj4wWGRr2_ir36sR4a-1JQcMwLxXcp2bOUOOwDCL26O_D2LWEgMsMZOzD3IguYnotTLN-JdqtIGeaZvhA7c9PGgLQV7XNtMA6ySpF3hc_1vJnrhjhp1QE7JOJD8dgPoEgWEFv2xJjwwD2SYU_YZL7rFx6wRINasosQU-6Qcmks2fbCS53KQWAFS-VyrSnVc0pk-uTTURY7HnkNV5DHq2qQOUMR7kKtmerFNOOmLx5nWasCoYU6f3tvsMGdK4CPzy60moDM_FgfZzQ5QU0aMjCjdnFkYurSSZ8ddEDUR3zYrOfpMJNFUcZGlJy3XMdKmBZdlnR9jjzbCrSSqFv_CDaDDDj3XemueL9FymAanKhrRMb2_41ESQp_eYTjNVhf9xo69UapCext5Zc2tVpfxJEsMlQ37Yr9Rc-jYamjW8abvYAFfa36NMsHlPH9el7-XVEP7TQFc5mSBZF1zmS-B7hntP4syldSVGLfsDPoWE_HSv5mICUEzmQAD5mZG6AvOvXtZtlwaNS7TWejh4Q2ZIYi0NFrIjYIGrU9KZqVyYPEqCCXs8NGyI5VbhsogyTl4rbWgpAFJjMCPACDRNCQpH1hY9ynTkz6vKkvJUaSNABlRaGRK9J8S9pfHOZ4PZwo022pQcSSA_Xo_qwzrJPl3emTwYb76xP3T7toW1PXBhi5L1M_STEq2lNpwY0IpMInw6RikVvCx50sQEMR6YlxE5WAfPNkJ81fwcIwbgmgOS0UZv3Rr5sQCJBIkeD6FwcLDr3cF1AQmfFPk51O6_hlbwoLtLIQO8T6sX7uvTqBJuodEOIcMdSguOzFFHzrnlIkQavgA5-X2IUWMZ1tsf6HbIOcMx2Po61rGqiypWwxQXyDwoR4vZ-s7JxeM7_TSnTOniyQjWIp8pRfyYLevmu1HCc4bk13YrtuXYEVTWalF0wUb00AN5UjrGLWyBzrVVE5Xfqt8RKHFinRHJoTw1HxyHoG3IP14RhgwmtG4tBDhJ3moqjYSMXDBhPJ3OhU-lRTZNcjPHfRX5vSKcE2KDje_LXIS37mH2o7Bg2qFSeVAuaCO4bxstJZurDhG9-ggavLExpMCUlKndblXQzGgzEAuzHfhT0VpfiCCMTyQJN0rOTZthvSb45i6b7Mrto1ZsYdSphXlDlz54g6e0QP4iR-JFg63_Say0_4EN7tKAxbUON3_zdFORuync1J_0XIx_tbhueLOCIkyOdejhUe1sq7opWd-92dxZc5b-UgEjhBlz50oO6vCpwH8ck0LvbkRsB6Poryu9o0fEm8Eex4jFcZwpLJGnFtavaPymYahJOF2oWffJ6WfmSJbgdGmA97bmr7sfefP2wJ1f6wlQ4CzcVpBjrJ6yt19XPL0zwQj9jyqcAd7KXe2VK-sfvGfLn8A_73ExGBFr_LEncMTK4aJRxeToWdNEYMYamsyychWqgxrSXulKJKYR7K237xBTXV5Vf0R2FyYY-soAoIbBm-Hu_dvOAdZ3O1ZzvwFW0QgAWyzPoi15OIBW1ZmWNKoA7aAPYDPFzZ0x1KzaiclaPdq4906SA-F4Xzbo9q4DK3F0uDvHJgI3dW3ONOHZHaMZo1_EpNA6wQ8h0j1ZYdf3doDuN1xHcskMvgfR38_U0vL_c1FB2b-oouuz70pNfV9aZ804jYDE5-9FAtfJz8S_9gZ7GqqegOqTANuJvcnVk8SBaEQjgSf80Sw7ccfeEuUa15gp0RiAg90dsdNTmHVSjMZo2U4eLUmjbKs4I-MgT46J6HW2nVYOki_7eGJ0RjXjcHPgvlQlW4RFb22TyY2xpjk1UvYOoi94XUtGU3pPWp0CLX6oMaThpTL6MGjuIPZpT5j5UCAA1TU36N3RtF6X83PGTuoz4p3aCb1WjfVFu1gX0c3JGqlL075dnPoynJ89BnB_1Pj0N9BVbjvI6_SGW8ewnAFIKWUsm3fFbzRzkGAnrGyBuBZ8PRwYPlx-ovnaJThwQP15l88zOf4EmY2saCk12QJba4ySBAyaWfv_8em8CvXG89EumPllFBy7HvqR5W9l2v6YOLJb7AHa265tDgrSk2sBqqxSwQYOR3VsVq6Mc9RuPHyI2OXad6xwwYf7S2HrbT1nxeVcevz-gC6Q-_FtqrxKIcNWPJuflx5lNHVCwf7umbiFZCqa5j8iDYCi6O3C87P-CtMbt7e_-HFrpH7t6UeAqpebR-DrCE0G0yISs-gms2EzamUXi7MgPVpanaCoyt65HdqX369WansuUt1Loxex-ohJNE0pd7ZKX0Xzr4JLU_OEou-uD_p6vhg4VEFcZAcxZnuj6zHBSCYJvM6eJWKum93o0eQqUfg4gcs08FBjW1U6cwB4c18cee-DfAy_Zexb0eRWPKz258o_s--HmIhNb8GIR4lilwcoq_aKWbUP0Pk1KRLyUpLoSKgO6oCaEhAyWf0XUlW0NphFqwi1ZzRZfcR2vSpSHAcjleApAwHzfjpurwqRrsdQnVWsP4yDGpysaCVrJupfyEZPTM3zSMHDLLR_AeWHJpyK6ipRZVJtByRXi0hjSgbiElfndb8mSUeIYFJyFRkMBbe59RtokoytcYHqeLzzvMX1y9GrxrgCpYxZJ8JGEe4ZGP8CveiU7ZVmlWpc0bTBYr2-E_Yy5IzBKFakWF8b9K77mOo-aEGVcjkbSRNXpumM1HoSvUg5lZ2vaYcyBzf9T2bRNZfrkmkvzz7OmOIkRkChHchwUeCKcnH46P4sVtRa_MxLv3g_rvPEaGOk-n1V6if9r7T4nJ1KGGV65NrUO7NMEvc4NyrPmC4gE5zIvvmk9NzFZ1BkO88SqRDtEZ1a-rjoR5N_wiS8z6__fZLljxL21gKhuQ5nWBap0LjbFWrEl1xF2LjtOi-c0UnE2y75yNctNPvsfkyXuEF3wzDijnlPPV7r9Qn6riXCqH4NNfb6f3lunLvmJr2nirNU8BdwDA5I1-as7UgGXvvFwZivmaxGCUCOt4FMio6GaioxsYhYFfFSRcfmJajANtuVmBAICHhGjTVmhzpD4ic0lTmeBv2wY0hAzQ75Ss1RLatRo9gKw21scUgjhEssXhb2p7cfqxObixssFRFnUA2EIOnKUBHkRmf7YUZhF2EdzqTEnJC6_NqMLOegHpXt9z1l-lL4KFnm8G5TJyv9zAN0hEZrB81MZ1gE1e7nLMV9D4EXYr98eyijEKuZtrfpUU8FuP9ub2ubMBBuuEyjh_nMGq_0iC-hcz3Tnh4ynzqcfuCwUsb9V2I9mLninsmImrz8Lr5-bM0mDm-4Eb1z-xaRTrYvvtlpE6C6xafHL9lV0cE572MxtFW8OrfgCyGbdJS-s3aRDY-a4yvARgG6OFuod7zOHmbLZX4-reWeuOxZ40qjHnAne6Nx2xL8dPDoO7S03sYMPfA3XrT3EETo2g4ZzIcHnwFv1Tp9xWI7Sv0IDUYPNXVOzoFX8Wdr3Z6-YVUpJTaXgS4oaFBJJYQwu09DoUR00Q7H8F_SsRRCMaECTd_OH1Xn9tDu_XJ6X-1ajn74W-OFSmf1wqoQAtH3CwYLOvRok6H-_NDgAliUt9heb8hcLR5Arg7BAA0kBcpnq0xufy2dLZ3GQhf7EhR3QprszOGArchNCn3hFn_-fHEnk6FQnIX_jCOycXDitVi9vPGUgIViMw5D3uaCbd6lBNFty1PquRGTq1wgJ9pCDRv1GdO2cougJbR5H77i_MEoji_wQRQfL4vXUJjWKOm3r-eaJVsvyx9K6LBHhJOA85l8noSH3USYpZNjXNmM4PhdG0zY3NeYZseTcM8AJR2veVpVD-2c1ZfNL3kmRMqPvKc-_RqkOG9B8_jJ14J47cC5036SPbpdNSNuX3JqDAL4XjJ_OTSJhNCakaR3tZLOWvf1zmL7XqOgLfo0QHRUboRgjmMTMexszSSUC_B9mYHgG1jq-eijRhtBVxaWHMhmYipi59qGRdq0wNjm9IaGjIuWbNKZsQnIqVC6pwCLTQIUyXfJjj8q4sd5uuOcuPwX0ANV6lJl7nTTtM-npLuTqrB0D_H453HLl5dqmIDssgqAceLLhRl-Zs_PWvE-Sr87oAXeZc3RDSZkYpK9DMK0hWJuDjjQoV9iOg8FxY3Nq6HBPqylUkPv7Vd8vZM838O9xkc72mW-uvJwEbGaSRw9g-PaW6lvwKTSX-oJL_PggmUSnKBANZp_JPcQfHVhqhtUydkCYrAy3Li3pp0h9jPUomY7K9VgzUnjP4e3Kss5cRHtzy4450xXLZcBZWrimUOga5vUQXlqslg2wmD04QPEgHQ-7kD1pxeF9RzkoAL9IEzBTi2vJMgzTpCg1qrHprEZsfnnCKsEeeS9Tzxd2j28QUqrEW__1ICsFLoLckRZXa7-QwmsOtH1FotceS7h4gM7cnxwZg-HbhwXUcrVwfXCdDMo8rerBagpuERsHFlKxe3TKQoKWZaT-cox75K5H56-UoUBe3NCN3hf9NzEK2h180WT63vIGuVWz2n5ZH44Tfuoa_VupdN-UZY2fFOGzBjsnO54dBb2T12ZudrfaMlTSaoHX-6gCscxEhJFDBQ4JwUWLQABEqAt06m9yuP8f-ltogEcXPD2Iic1hdJeNFeLwslIvrll_TxxOQgc0kcX0feHFOZXpEiHNJW6M5r6P5JESnBgHoNvDcvojwCgD2Po2zprJ0XRAQqepyTGcY4EEFS1B8pb1TxXz45wBlJ0YIbkxT-XkIWFeCxc8yvo7RWsOcCUfKPVcEs2D9vr_OgQ7ASCllwZdOaCDsXayIRmmOfzkzf1ssmrLWhEDLsXn3prVXZtfZPmuOu4Y07EakPQH5XqBEgnrQT7TggS6p1J-dxebzOhVcUSC5sxzqQ96tLtnFrPhnm_UwWgSvnoTbagoOV-mArej5rFJggzcOMQpUJtKn-Z8O_Kr_Unc7AmzzJ8BA9hfv1ksUdQsc9bO9paasOxci7CJr-TlmsBQeXB_gIq8E_l-AI3Nz4keTZgAdM6kGeSK1ggaenGcdJni-nQodP6dLwT78DFsshyW1MS4Fl5dRdk4caBp8FZ9nhPrWgI4kAz6eVsOXGHar84PtBtfZIB52ex7oUtpca1nHMo-M_alGf7W1i0e_iApOlSvjJ__TANb2FY0gmbgg8JYcGVigMw5E-zJ4WIOdVhp26rgAzyEGFCQ5VcW0aK3lPtA7iGBVNHd4gFaWpUnbXTh0_6MBR4vQ5w9xfEEyDd2bXGMj9eQWRuhHX_aN-uln9yTBWa0N9cMtT2ucP2YSnyoOyV_JV5WQRTq9QxDFL6hxE5_sg3Z90sy8Fwbxi6jAoyGC4Vm7_ajSXBup4s1qpUabHkXsR1UizyxkslshvoptvVIRZIy6BrOEBoGSvK5iv-dU-In1hwMwBk9vaxkpAmd2hypCDET4IhllNLNKgH5GEDg9pL9rG5WJIiPIaemX-pROSnO_9tEb0cz7606VRDQzPdjerbYWjLoiOH_cudws9Oa47Frbuk2uARX0zLGgtX5N5myy_tewcx6ji4YVLESqKGNwDa5oS6JIXbruji7MmXROr16SJuLO4kZ5U4EOZYDLrcXgGwf6lZCWBMmHCKyuEpFgA2jf69Fjx0uZ3CV6QY1Yo_J3r7HAZklcFSmWw3EPMg_y09zBzqFhPHy0aFyKe43XuO26j-uouRra0pR6wXTJL8wX4xio7rvw08judqy52zdyLfROQXIdlFetFVOD3XlpC_JVx1-6Ef5aYJ9VdCLN9Kl4agGHs2V2NSPNPcT8iZakMJXA5MLpPc4HU3EyFl9dia9juAfgmn7WOitehGql-WqeU-MhuqLGh0NR8EpOvctTwz9LjDNvL672dnK5p-k2aTUo0rVA8QnI15Q_cWA2S1-a5hj3sF92yhgqirr6HAqkSLjzksdzkThOJT7e1feJAE13BpBXV3GpHxZ2LljhaM_zTrDLNNaRtIf-jncJcHMCOMiiASSj0Y5otF2JM93ai5SzWCZzwWo7ifjq5bDymQrTaZx2IYPNMPC8-NSd-yNtnxIL86VF_PB0aoR1P7a8p1GAi29PN3bPxADyfm2ltOv0WUQclMo2RSsz4sCLe1bJ9HJPjVjPCBPOk1eyAvTWDBb8gQJhazA6aK0UORHCRPwTK56HxCTRdgAfvqZHTZlv1xWa3necdPA30cG7YdgLRR3eKWZK6uhtRuiav3GgaT1Kj1z1SEzEKT7M7IqzbAKRi5n3eP4P21Uadahi7HzLftseUqv0e4ZHoerorTgxh9mPImStJ-Rkfu3vA9H1Kzr9jl8HE4BhlNAf5WrhQhurlDV0nj92nt4FbEUwRz3n899EodWxF45nHL2c17QEwCuvH9SbIc24H6xe0BN5DdCVrAkQZz6_TWrrjWImSiavaTv1EWkpG28tik4ROmVtPaeFpd3dzxpbfZwjiBPbun0kjOUk6lOGcWkFEH5A3GH1ZmfK5XiB0IQnj3L3QPa60zZT73l2aj1Z45LB5_iU55w6YEXh_3EmGblnoUbtF-9ixFQBBpJqI38aZQFgFAA_6nKZSQ_6b_kGPmUk8pLsmk_xwGKuZJrwB3XU1rAfXnF5bhPypEKEYaGE4T60NYafISIxEGEGsex--BrOGyjvn_hRFSBf_3UsLVFcng2nD_ZrwD2QMoL9MuITqCbaaiqnpqhHJzW4rr6BYZ6r2zH1SPPH_m6UxvZObBhEYRvzpAcFwmug6oFNxLl19qEatw3c5aL8bQvPJd1CT0JDB4QbZ4NZAEdPyM2MbwUt9Ka8eYooh4hn8mn_Y5PdXQQmeCi22Kt3XgulIm7LMKFj0YkYttJvWkzoMzt12PYQU3kDetTfmrPu0ldzVJh8tI4hUeU2b11cywqOowD3pxZFC0FjeUZcprS9m3699NRi6ioCTR2q_d4f7JmWHuEGkg-sGNhnezsIX5KLG2v4pCv2FKXKeETYSG_4jDeyL-qlqB7nhKY2XQ3ByJ5iexhyi0kDPKGXNx15Y3abNahl_08GWSN6uwr44FDftHhUVQrId9yt17PgzTTY6UyWkFx7-i2RZ9F1EaYvNE5bKbWWG9sU1m3NEQMJWMkHoCk922vOT213aXD9MKWtHbmIFApcVbnWvwXyr9XWkG7-0bZp_ZQzWUe-YA8c6ZANrXdGitilsuPlrA-ropRkA78FO1Yw3yIutpgajshFtjYb9a5vsWWBfSri2KiZJlezT-VbKev3mhlcSPnwIL5vHD8Yf-wxkca_OBaCoe7-93LviwS4jVoqLEYEUe9-aatDRPe7Dk6dE7nO5cadaXO-seyfREDoUJeH3GrjDDt8dcOlvDHY_XDyRaDnPADuO0P-WSrDFgEO7qTC1fIueY8MkfuWH1OYpVRsT6zQX_e-fCej51tAaRRqoLsw-k-yI51BjFzU1mGx3PmiJCzc0L9eRp5ZN92F9oL1TPAutDiHFTNGZVrbkQFZkTBbxX0kfmU7ISgN0QuuET0dckk3Go6ADmwYWEF-fvfSiRsbUtnQVOd4QNjQA8Ua76Lcda8I_z0rz3ZTlEyQLOuz325pwT4bmilqE0n0hCH8UTZNYyajq1H26_NwtyVPh1VfHOsSrvX6GMH_rp8eONPrJboajJX6iFz1STw2lwTtQbYxM6NqWzh7fR4pWTdmM2llBZWk7InUy3lxsk9zeuhLKo7A73MT_SQG6cn50juMtR1Zbv7ydcOrTsWZSJ_MU2jJkDLwJ1ut5kVChGus84Ba5rNN2MxPFIpHy9F8xJBWcWo4AqDNLsgq3MqqKZrTuVHHVIS4fEX-4L-ThjfDMDGH--PAVF-d23tnecA5BhpRVc0Dl4ho_BJmTmlsP4RunSvbWbyVEEKCVb4Acr4NSWJY0r4RUJ0yagdiO1jPVCeS_Px0UAB78zWNlSW6vAZIMn45lrBntweiIJr0CMAuscXDoXgHy-TBq2AbakN_U0XHMccBhlXLIvi6hwjtAhEqbrJks2KPzraPEvRPOJ6FzzFFkEIc6Hf4k5aMFf0z4hPgvQsVwrEncKu1H-IXAB3wKe2NYT_meGkV8qyyMT-b9BhW6QN8RskA2BqlU4kmgsqIJVk_rCYIVPnMqxpBf2YquHAbBURnQWubnYfDYlCCFlVZ4bUji5SoVaDdYoDO_Fxqn9amEV86dhUOiz7IhkgoJygrfQ5ohBT2uuXgU5PdgdEaOwjGIQC6lChI66Z_P-4ae9YC2HYnv4xgfcFP5u3q4US2FL-cZAeJNNaEaNmQpbZy6TiLaCESS5HwZ0qYMpDjCXJJzZxx_Y9Dg03dU17RvQ76HjMmjT5lsxfK40g8IiJTZPq5IqdNbUI6NFYdyGTKKWILHb57K4sarOcWBFbvoSPvo2SpWB4kn_1yL7-cwmFzdAign6VE2oKsjWJZYblf-VntMBNHiEfD06vyLUlKmgwz2Jc4IfCffZGVILcOZ2XaUpdCr0N-863VKc_TT3LA3obCGgrS8hmZoenXADDTNflm6-HpHfP5boHQUhEGcDUD5i1OvNCywPB_FLqZnK33gf_YV2fT8trAnVYAh6d377z6UThxhB9o3Sd8854pnAw80uI-lTZ9DZbvubDvxC2YqUpocZUUN9wcl_GY4uHupknrN4NKDn1FCogvX1TCWXYTFuIduOJ8LJkrnF5xQqhlX-NDFLN_zgJvxxJU_8egbY0fEsR5v6ybPgfnEte_yeVbNVfRCcQqOlwaD8vjkYbu0nuLgQPchMVS4AQZ-MytarToGPwPMXvXkGGL6hHMlhf5JzbWawa068dtLh9KQmBCnaX0kUneRqcM3G9PiRcl2-rzOAY3x33eYYiEQXHTBJ3o_vy5_9YV7l2DMlogv1UWnZaVOjBKJLAN4yNCzmWiWMWkxH_FfWoiIlk0AsV50Dtg41q_Q2mwXSyeCa2ZPsIQIoN8DWmlq3VSrI2wd5bIIFTcT-t3ZbST01ysemyGJX3rq7OlRbWMzHhJ81KUGiFNoOc1Xgyrs2Foj3aHycxtYTLsqtvfcnpau00YvQgE2Nhy5jDYfj0ZZjAciW3kGA_FzznheVGOomaM7sH6D6jHsjB0bjSl4pU7doulMAhPPXq36C_i4GN5nq-z9vjUkwyLIvAYMN0SRJlliPP5zZ72ElpZnxsDkGHKC5e6IRceHv_isXAllPY2eqlPzQtAKGEzBB8bUnVAE_agGq8U_XYwLKgJ46YpLF3Pte0GonSpN0qKeJEcGJlfmIEbxo-h8sca-f9d5H7XfXTPHk9CBrxglR3GhmPS6iEtNRZrCOl97BdChIiDWRuJb7scaDOVmbapeCBBw24F8rfp2p5RwgnVBOqSmntD6XIyfUrk1SIbr7-vexGZbtdD_mBAHmxYoUHez9uM_H64kRr1AWuXbr4omtLAQrHsSQsxujQoJkjxd6aG10CLHxfqejTNmmiEQe4sut9Oeo0fKPOzTDAuM47WTNBqc79PZCBvw8uk4hTaO6apttMtOT2TCrc3WgWPmYxelWb6LkcRyzKjqMCHDTkJXJAYgjBQe7nyrFzvchtsT0AtZgV8Ro_U8aa7AvSkbd3k2_HGbP3chg5n8jgzDzaPSbReO5Jt33h0PeXMr1OrA5NxC_kEwAUQd5buKXfPE8fMyTToyXAd1GDVlD1-yuuX3pja8WzUPBJv62fGsvGWWXrQijnuz8PUID1CAoO2ZLwls9jT4xqFfJvLSvwQwdG8R8w-htXsi-h1wS1tirmp54U0qWbaSVS2v514Hm9X7GN8hVW7vAEjiwuo_iVFN5HIOqo1C8BtGut5AVhHHdakmdbmOscC1McLwe7WnoAl9D7di8GToMNCSjtd9EgVh1Pd77e1vbQplB0wMQ5iXTuBTxdrL69Vn6e3sa8WLcaQGP3rE5mwtKcW9pDRx3dcefwxVjsduqaJWyTJnLNbTJG7DYdWXHgnHmsCkFlMXEQJ0sRTdqALZ2UPGgprDJqY00r2fD3jHXhoyGDpZGF5tu-ZJUwjOrG0YoeCl_6amTyhNL7s53LuJKQBnuJr35-qNXBy-QBZ4WTBDuqUo-8jxDRn7O3rpcmEpq0qCNRPvMEP2VMjAe4mwpEJB2XC8A8lUuiYZsQ2N22f8T5nqWDsaR1tt_ol99Qtg3BL2MwREPHgYRi_QIrcIKS52tjIAj4AOZq6QViblmRQXfx0g5BUTQNjoWNCFf7aDdKt67S1cFGRlM-ekS3sM90cNKKgEpWqB3PcbDMuWsGD8kZ9zq0ZW86GOUYq2b1KcljH8dwalJQw7-IygkLvefjPbXXtrTYGOCJBB7PORVrxpQ7espp0VPspQ9xF8kGJkC4Fuu5PF-mTkRqFuTlmRSX94kHphJjcHMgmhXmtY05bRHTAptujncyby9Rl5SI1qiyjH_5bM1GgPPxzDGeF7xBCNqEqWfxJyl_nvoBLHTGR0FRvOoQZ_rCPgE2U9s86AgJhZ2SN7ru4zlFhZh9TxoUF3fS9xicQGmoFyOhkOupPxy-Nt6qwUsDNhk61iIsx2dvASFbfVvu0AJgMft2TR59fnifoDXX3c9iZ3zVLqirYP4xB_rr8XcxiYWUvwyK3kTFgvFaT8d8VfhT31NWStK2WXzuah32Ek02Hn2sWISBqBtSxgfY0lWBVulUHBXqmbdDCgptjM-n85Nxp3-iXlAIk4_gBp4xluUf_Q0hkNuj0obur8unS-ZR60baWk3ESUCbpjmv2-eqr7LV2RSfjgcTt_2FTyMQTfn-y5aYhfbYQ0LQI45ZjJhOm4s35eJAtU8nD_2VtVdZ-IArCQF7LR1F4FVskXB8EJOB6Vaud9pt-bjUpvNBadf8k0jmfXZAogTP0I8YW8AfnspYE9anICD3p-n5_P4SPqCqkkl71veWVgLAhVeTT2wIHIjckVG92p6VUPiV8McRNycSK77r1Swr9Syw08ECkwCd39eG17Habod1iY6rRMXgnaBt9D8TY466oMkGPm1KsCJyuoOKaSuBOZ8rdYHd8QLcaaemuIePezQsKt1-uCk7PPT-eiuxi9wNhWl_lOS0aa_erEYgsI0S73nWuRRnj3TjmPp4MsTpF94QB_nP9JzlLeknAYcd2j8PLxELYjurcYrDHmGaSE3GOclWIGwRjw6f6SKhSucoQtDbdTBpAdpA17WckioCRrma4SzuOJIa7YD6q9LtfBDhPpVtIEcFX8eEd9xgx9sulU6wa9IyiF4Y3LALBerlS9nPE8G4H-uetKBDO1nO_ep2ZszviH8cUjXL4IJwfeq5EBY4Aq6l8m78b2xVkl_1ePeXMRnXFPpgyfzr_139xxqTwGBch9dYFgNRueZClDcCxVTrYhFhzQjQh_AjQNowb119VWF1bf-sQDQvZgMNrGR5lD9U9Of6cl3GJcdAL6CTLFbQDeqUivFJmqYm0OjUVIZKWqfuca1tf-EzLY5TZXhXeVFHZlswl0iIfIevCgimg5tVacq4ZLpX2pK3DskT7Nnr965Gs6joZ3_4NftRn0z85vLPUrrSSjt4RysMCSz3RN3RDi8mCPdCsVTR04q3Fs90Kb8uA0PFIKyCkwDsEKIFitDVaMz063jGJ82lYPTworlBeLBzyu9YigEaPgCrHjowf7cGRrABgyPwW6x3hVakhxfFuuGtm3Cmpne4nZzm9JOCsBk9QgmDZZjQ1Y6B0Q7JD5zKJgYSSbpI3vfUngcZ0iZXy4KgB9cT5-A9LxPJLMaK_abkMWBdcCNMrtIsXWXSmhKP7lebdNHQENPnCVQQeKQjj9pDh0IrAnav-JPNFA7wT5jkdg31-kzV_ur-JEMkbmJy8gOVbqwJRZg9otZqZZVoxf5wXOm9zzI7hbhBj37q73YsUc-xOd0q5F42UJoXcCO81uBTspLd_n-jLU_X3Uov38mIyHeaDT1OoIYswXrE7Ms-2HFo22_TD5TTc52GMDVTbt7EFckAThgaO_OW5hCQU7B2nXr7_KqkocultJUQY9p1MuN6YJAX1hmBtJ4s933uSz2ATj1dovgPrLDdntyDB5oFdmaDDQpuozQTweG3BFQXUIjzZX9Wn_PU1MX_5_A6rpCjrSyMS-CvUpSGhQ3IfbnQfrlpm4SqHyqpcPDFssGIcMWQm8sF5_4LDbTHNmEI3-S6JAZeio89mEYyuZ_msUweNLFZ_hEWi-t21r1i6w2ew2PAuaYohu3B7d0zbSVMYDGglmAbVTEQvlgje1zXYH6wTqNrQxCHwz28gj-mFTXP8bBBdnnh-BpOeRcn9IyD4hUVU6KzzkQDuapEPfi3EJgymUkE-RlceXB5ZShzRW7GmYHvXX03k0gyGaKF8ibycZN8brCRaefUMdtjp1WthunWhSqGyn9v8Pts-fULclgIFiMrkBU1A_nvsQA8_V2kJhtTMBgDEQLk6FBjeXnMb8x0Vaf1LMmxwkjugnsUaCppw5geMWAs_aIGQ_G3_3rHQDNFI1zFJmM_ZVEZ12_o-d070pONOoe201KqP5a5iot_OTTtb9yfTkzu5VSM3SQOVezprs-sVvf-lY7Rr7EmVC-JXTjh0KI6W7WGJP21OPTYeFRqvYzjY_lBMvPXdskqUor_M-nXVWGsZ8OU3gJu-Tftl2OxjlXeKcr3qTjGGRcjYpWhC84nDhcxvxXkGQJuzpL7045R1oCXw7ta8C5uZcrOTCZzb4suOCs5uHHtgkqd5SO9hhue2otqZQm-fHBVOpzN7kMlQ8EEpJfmzradyA7OAs1rQqm7__f5OYoJ4J0zE93KWR1MAEK42AhGVQv4fUGZ8vbA5dPgzGrDvvrXElXKwnzjgVx20BLdzX9ezRdHBrCkEn1t76WvY88I0JWM7Ucqxd32u33Oza9BFyzcrp6Js_ESrqAbJOC5jMAXYF7sVaS-i3R6CEy-hwDzzzHmybMOQmw0yD14tbP9_jdGRjKnq2Vi5tdpsXnTiaN18bHqaVlNWQs7QxUENcr_eE967qOz0xok9t00HApEKUroIyq0HBjL7u4FfdOUTgxJCwROBvrbFhuYN9FTQ-YCk22HShQML7Mj3tCRsS2GWb2c2GdwUl5-oMYnyAc25-PywB39uHZHFVYLpesYpkegn5cAQ8HLYIEp8Ocysk6rJO9wbJuK5UE-1BHKy6xUhd896xaKHsdv-cmB3bwesJA-Tq4R2Kf6SxqdzB2r96-DXLkyYo17iAScOK3kKLDcuuaiDBzD7EKepxLdvUTb50FOolu2trzdXzymcPwqvUKnEBk75T62juzwu2F5bI4uKeCGhZ2ycuPxmfDpmtzpWdrUWAQTAgsotMV3Lg4wx0hmDU7GxGDMXRHcchecuNzo8sgzDScQ8pAj4NeBGj6ctiH3cJRvAw012fbKOiZvn_MqAzWgYmr15a5MEXCn4YKGSk-EBG-2kVVPWszgyXwAHP311uYNuQ86Ts7oF_KuQT3PPN4hNHCgLE-p1prA8jPZMBzItDcD2CZf0exOy1DJSSx8Zd96elyB0AP7RGSpYeoEPxydylZje8WCEIESH-EU_28XwWr0q_kP6q6bxlN911_Dxn9o2V6Vxci3jgiEzuGGDflvyHO6fgGx60yw_lRUFW4Rr0rLwBd-NqQxy7rqZOISiH_VM6vq_bR_Gz1VyFqMMbqNXxwTfTtagnQACqa7bM0-AG9kz5J0hY8pbB2XK_cTvFvT-AG6VN0RazlgV7rpAAVD0N1TGCVN-v9mrVxGuqrmr_8fnQbA2vYkxXD0e0TWsBYvRU-YwgC6qlC65dlFXMR87F3L1Y_p5G7tIYObg-sENUty8bkVawKFg-JALC9VqYXgqtXQonZX_wABA7jfT7PSHiw4qivAEIXmWy_nolO3LxkcGcGQuG8bV_-EFk3KEgju9hKnNs4wbTmehvKPGvyMlnSO95G0KOhKE7j8AFB-QRAukSabh8o9QuI_NFGwM7qDJKcLDcKnVCgUwjOEF5MBUtx5-mN36_w_0r0UZWKndGIPvAesMwTV64EV1mStkF5i2RXaInrqdBcyLrb7ne-4apYfD1_UFsORA3bM65UVPWY8fEPo400pRr-vXmZP6MHLvd1VmwxqCIFHkwmeZvQK-iIlzTaj8PzsuMJKa2CrmoxqDN6q5cst1AfI9CyzkhprFAPeWIxgZaDlcOtjLdGwlDNWRPN-7Qu5VHL8NdefPDaRaUvXvnzkklENtJTaU0xczZiqSMEqiXm34AOodl9gzru6AzGGWYRuG40Jx338sgyV34fTRKtnqEZ8pBOepc6978y-EpjJPGn4r6uYk714nSSNqGG6pT-rmSlZ3MVLzxJUidJSTPXC3lB3muKc7jr982ojvmhZsZ1T7cj-kvzgrmL4XXmiVs_3JMQ_VxvRlJkCr22asNzWxWqapO_iZmost2yaO8M9RuG9lxlvKd_VGXBQEWx7dRqhr-cjsFIU54OJf1UIl9vppk_eYEnQVPX9VAgFLy0MVT-3JE45Xsf_tHdWQaWqAGfSaseA_-aY49hbuvDxrdnfBiv4jBwJU88EIPEYVg2O7whC9YiK94vHVaqXMhOZ0hq9XCc7vaLiVxmrS0DBc3PpW0goLBI_IEipl5ZNz6EBbHfFlJpt6mEzzjeliivvWLvHPSu3bH2kLqnHNXlr7_phTqWsBEKrA2V7F8C_8T6HSqKblyBBHLNUxSGvFfNnQD1TyBdB6trkemWRBJWHCxX70u0MzhKeCzH-ac1AXGiyMYuTUTB5cFNx6t03GrJIBynovLwoJlX2T4PAqNDJ9fgzxwwT8l8B60hNoWQuUGXWyBbR5b5SG1qpltSk6s-VaVuVYPitctyl-p71Zkgy1gmxWh14AmtuYapJ1Etzhsu5154XmI6EWPocbh31diczEm-hLtPNrHO6mfxxHcIVYp-a_s5k5czXc09RAhaA_HOeE_ocqQXOm-k-BFfStojWzfhSROIapKJJ6vGjMa27VPB_zj8Qgrs8MI7kIEEnmTtBY6QJbnEQsfySU-ex7skYbpZT5YPV2Ch3B4T4ob4VhhElxdQC7Rn1uIPObfAcFkQQbt4500IkOix-o9SLqjAUTiOb20Ps1Qw3Tlt7DT1OMDOWokLBASnDvHLWfT_IiU1eHA2nR4ltTTOjdQsMJeuzInJinGe9iFO6PHUIfcIAbqnJlRX7xysakcxgkA0RZ9MRgayYbBmjhah25AbGZ99WhiN_djH5MP4QN0Re-Yycoahf0lt_XGal6_Yb9UuWuw5N7UuJmsHXYlADsQwcg6i07vHJ4UJ6BU0ckFxCbu5By8zErtbTWD8lfYZiURHc2zOSpY7oDV4e0dqVC-VspqiETDJcfqDHp_2NbHgN3bs38bNutPR7l05W8RmCyCTAAqhzs4pFEMFOyHbIMAymGinylGAdt97qiy0957HXLAgMBrViB7WqUPXrqpjhx_Jar_krywxxgfs1aev9hq0g1Y_bf89l_P5PqRSAVfcCX1N94mDOuLpA4hke9RIeTaSpHV3t9uDQq45zogYSSsCQpDhmlbC9ZytoqnzkCQgXfe22WQSpYYKQdpLgdD_k6n0f2-QMR8284JPkFf3Pr6oPNlzor0ib9yNW1T9-vf4NMjLWBC6ajR7Uk02iGjeHclvbUc1TtU2vLJqu1NKSefUS7K0FAJPl8FwLJaseykDy7BpivjceWdEeP9NfxleN5wfHWPR066MZjlz9JWipxmO8oFA-N4KP3YTob9kacBo8lxSj_J2QIiv6OpIv6YEHPzyNFNjrsTgmmQ7k3r9neO3zP8FLiKFWsQiZ4DAJWpx4zXkJcfIinzBLNjHT6fWElhGZgGVrCJzzkUXVzT7xgMwzKCxK_dIUBcxWRqMf1-mfOAvZ3Ru1RdRmkcehsgtDLdvXTKGlMbTsYSUw37CN4PZHd_V9oBth2CVRuYSCCD2eCOCPoTO93kNlLObx_FepNCqLAckNfyQGYfA6u7eKUSkS1LBrlLc9DhOmqOU4-PGd_6tI_Yql2fUJgCTGmpG2q6sizQIRB93n9yz8Ae11sGUtDNS1iFOibht123W7QhlIx9oypFUQ0OdEpHhDtBwGclgpK2VaxJa1o-vxxYf1GwvAkZbH32d2weebF6BQEzuyqJXKX6I-2Txk-YCrAD-PsZHRwcZJRwXi4XEOlV9Do1BeIoTKWeaMiWdLqjnbJq6oRlTvWMM7WRA7Ebt5JhboVZmLMdoppnIKnhhBILbFqmqTLPWeYqNKNTVGfl5wkFGj2oIozExq4ru5-Y5Eua0yLQ7XhTx3Kvz1AcLtdWd84g1GNCJzNI8P_sEaWeQvMCUIxu60CGPjkUD4p0oT9gW_ADdII_TRnD9UncIH0neajQ3K6nmExZzOWSmYp1kcqI3LNseC0ssbMitTidZkwMN_FLHB0HA1G-OjPPjqCzzE_3JCBcLxJKc05RYfI9hUXFlk-LbrkeNIE-sD7UJELY41_vQSxI4yTnAtNgcCbKszYmSLk45ja7_tThFXoq5838fDvcKDf9D95Em4Wfk3KT1tZk0XMYLmfeWsB8KtCXzuDf3xNkU8GTiMomHuzKurtevGFkel2c0vcHEoWGMx3YofWTDMd5nIOZxTt0PnEuxptgb_PTGzDSlfks86V_xIdNANeaevYKnR8OrDi9TUgH34T6QOaxD8Cr35flpHmBbdBWXO0Oa5rPjFFVzf-J-RuAXxRkZHKWgNL5kybAtaaYykR8pgXj5ew9pla4H2pjdD02RpxnlmibKWUuU1uSGnvLxlij64ajc2cehXC1L_I3MkFrNtyrI_voM4gV-fqn5eG4ru6-GKr0w4XciwcJbFWuUGHQeHDvqUIFTDLfhdyQMrFC3RPRVMzai_FI3OzIpJrwRKSi2_TUSjcWGR9YsOE2Myb_pyDsUW_P4Oh6KsaUQip1RjsbzArGrSR6reuHlH1teKbBVOCLkERsVXC6RAm-AY5v21UFvimEtwfxlQ3V-l27u_FuNNpz3HzpbB2j0kkPiRYK6xPW6CHSLdkdm25f9pHrdEOGr4LiHUAI9Wl2JzvrqMKxVyToQJ54Z7QA5MAllz7xkJvl-JQ_GpeejvMBELQNXkXznW6wL2avdLL1VmNewKVYJjb9Gl021FGi1_pwV-EY53PU-rnzWOLIH0n-RWZcqTEuDgMB39uY1IvgsvGKP4JVLU1xZcywKsIoXDEEf23prlckSSlU6m63y5zd_p-KeAO-Sv5BPrhBMtzJmc8GAjusUqdYw95Fyq0jSFNptp1YU_QoB8weYggSYAyv23nupGFZDS6q6t3keyfeUVtKKcVNn4EojxrS54eZ31u0t03LqTWcQwJUq5ehR9FtUuN_cPjIzsujkEiNUkNcNSuPoSNyEbRFpjEsUfVE_5dmRl7O4tCiTmlNT55B8Y2CsjPfdOxbORZNwjLW6_ai1z3-YqNuowlUEEqbK1ksTVkoLuA7hNfrxLVnWK3xEITw0e855MxkiW6sRaVoWv2bq-aXmXjcY4nDiRKxh49inn1dN_i78tS3ZaxSRMcdsDYCUyllPS1HZLb-pRZwkfXrMQfazG4fCQixSMsbeOy1Jfzk3Djmi03EfPO9wyDVVhGgWq7iWey1JlFY8sUprp6T_cYybo4CXIKvbjhXft-l_FwCtb-8EOSebeXFgHjIadktaclMROqKqL1yE_ZSLVsdqd4M8tmS9ArwIX59tKhhn0lIAB-FfOiXinzmQnKoGRaJ2fsY87mabNb3flIw2rgQuXOeLA8mQZf5jY0e-S-dpqp9hhBV9aQsTrh5S_QYpTCcSLPvCTAr0hvmCWLjGWCpVvYUonKKOjpEAi90FSXvevYjmE9t9wJQKO8hXz2LtwO_jElrKvl9o0h7Jjti5Q_uUO5vokLD8JJHH6EiIQucFE6AQVN7ixwXIY_mGe--i3xY3Tv5ca5vGJgUwPxGG4_1cFtXGVxRiwRSKNIDWzQJoALA7aKRLEgpg14f2nSXYd2uQ5Z-F9C38_yFUzVUOdcd5oCJb2xRtLY3FYtfVXzOHf6I9oAyA7-t0224mGAAUx08R-E5H0hURdQCZu6TkHuWStaeF8iecpuC7BqxFb6iGDdwSRAPWFiUzjUA0b40Hl7MrJ1-ODFzZZYJtV4d7r4WUSkEiRzcrYf1GBRrHEB-XjnMCA_DX74tYXsEewp-rAJ0qFrTQJXLTHih_efu41g6so50XPv4hV2sL8NOR4CM62QC7vlEy-prlDt5EnkPjgkTKv_VYOODsemIk8lowAxmoCHxBqY9Z-h7SsXD7tOZoUqSDaEyz6VCnLVy6xJCjIuRtVXWoLOBqpP6E1Ob6l0o6lo4pyonvniS4XXljKC2nnAp71eW0ca-rkK-_emxB_IcdUWgRgfbC297wWYKIeWg_AjaHfdnwrEaBXbbFIcDpzdKuLDfbC2jiEmLiU887hs2rqx1C438ZyfoD-Yj-jjGzXLBNZ8yt10by8BwpzWXG3tMgURQer3qFUs5t4aQnyO5jtB9QovJL3EKyZ6oiNcPJj77RX5RQCzmjxi5Ol148p4lqdhl86RRtgoZbtWNI4EfzYuR3-vGzhopjQK9TgumGoUxoNuToZedlUYJDH1xalprD-lQC3GgEerUBtXlrATUj-DCOjuSY4n_Z3phNuFdKL3kcjpe2eiLlHFkey2fujfM9jRP-Vh4cW0cW9ByLcMoa8n7FRMymaZjlyKslSM-K8fs8ZR8-XxMaOM334581gOH7ymAUgQuaEu5ZHyXAJWBGjD0tklFrarymXpiTKAcduwvy_pZtph-c7U_wRdgFZ-YxczaheliRlGHmf-N8XhGEfiWH8uLgdRd1RFGaVFe8y-7i9lrNSy1F3G8DEPr8B6CJaEHACOF2SGKBQb06SjKfdUmp4OP5nGSV49JdmXtLw5EVLmb94uVHfTn2-DL3_8YW_BCfHQK4xpCHMQb9ct1wvI8SocWc3eCz8M2aOnazPkELr46aWqPNiEd8GD_R2_mYFXbWVHk-l6-Hzdik_MukjgsJZHPhCmQpxOptIHHtdtmaZCupDJDVJ3bqtGTUpfzz92YStA0S0FlJUZBnGby4ZZSG5RHu3C-YcT-n4R7VFmDyhn-9ovHpg6PZ7OWvXxMinV0HReoKq_1faES-vuVt2lrOiK-L05v0eOh-xz5yDAx9pYyc5KnOldfeiAX8nKBEhMji-jDShiZOKWh_4_H-Xm48tHbstCwAls1dw3fcRLHoWxi-uBSvdZDXbWBhMH5to6hIxyTXqz69AnpTrPNCBTZIFBvasHHSORRl1XtfrkK-beqVQDuxfpv6jPnmrygvtfDbNBS4G2dtx0N1sCuAUqTCKXJdGbXFxqCYcxzRpnWsrtr0VeiMlAL0tqGnPn2ru2eAwGUlI3tLZwRV4AdizZEXfH2dSWbIQ9eIvTcTvvPhm4-gYjuLof5IxuPh3VsDNGVU1TPJzKbLPfZOWzqZ5fjcAIqXTIXbVzHhWo_qPuP9zrC0OktoOGY3jvELUtBgqb0G7C8HugxlbKnb8YFEgZgNJWGn3C6yD89QLmfjYNQE_T-gtVvII2UBnn_KXrSwg1b72nEg6dj2pNxZ14z31kqrb1HG3F6yQ2nVhSeOg-AuMpBzRar37uIpopMypJRfvQywdfAm6jERBjzzJWWk-fGZNWBD_lATcov6N6POQFtZuitfqI6SYdlJkIMc22ZNshXGZEKEbs7d9POixzdCqNJI_JyjQJvspayKf4HKiFuvNY7P_UXG_Lhx5YrC9eYzSx_7fpIl0Ns-VE-urIZWU3ZKzZFlagelDBmnxdPBksyieaBPDjTqVEuQsQq2V7-ZEQGkkA54P3p14WSziyb-ZI_JslydezujnQJnwY_sXx5ZMl3Q6sxtCveLecWezWHQ6i2PfzusjlEWgINS0s1vS1C6bmA9tyswDNEgKC3L29caZmFByAYSaq9WomUPSUhLdH7WgxgXbFGw7QSkgRds2y7YlpWDV-uNxx2aC4wGfJldTbB-RLz8n4mJpYoByrxfW9e71HRo6pHRk3lu6n7LnnHcWRctPiZKt-InuWLw6GCAejRD2z1EiZJrrQrrMerU1DfzSeESBzmKRuRKTqEUDwrQcgO7t_1i1cB3OfpJuMpSzgWojbl1gCTO5WtTYi3o_Mq_Zy4C-u7px18XdM9dkGvOatdNNgG61gMkPFVex85m6ufYFgJY3UggoQfbj7YR6KMfmmvsRPZOZZ2Z7YEhElQEbnPbFbJ64ZpWF6pLKbMCM0tPKIms56spUBcgO6GsWd1VbvdkvTe_-vjLL1xM24L802jAbXmBuKWYRn-v4TgTIyOJuDJ_OvEixj90TV4MRt-FO5MBxS6op2a6a1jnN_6bT2ixKt3ITTTmLU_ZeCu7mCGw8XDLYA_X9qoRhOQ_w1gXD9cK5sSyAxy7lbt0CIjzdEJML-3K9UW_A2b91leWwfqcvMC7NXUStf_I0xDcFMbzvL1GVMipAJ3ig3UziBr8WXd1POyhtFHXP2o4DRUsyA-0-6ILJRXgq3dM3I1QswMbT_9w9D3OFcJKL-RorXhCd-clRH3ZylErJxm1-eaRaHe6vS6sjZTSzShPZU5PM9wccbHAj83CpeI5Kz9g6w0SzMvFtks4nu8zWKwhNlaZZwTJg92QU-6oS4hGxQdHYKuniBCdHrAybdXb8mEEEctWTjRMZOM87Lenbtd70wkzvM1tsawtWPeIbnRKgkJHoKeRbZuhUM8dqDDoNPPBuYTiTtrLWPmtyrjJUraylgokiwkTauQHD5HaA3CiAZFRxDUHdzFBew56QPY69Lp1NSSzHEMXrtHZiS0ix3ky87ddugu48KnRK82f4NgByhGVgp6fbXjItX50cbAPXXKooyv0JSnulW2db_33AvFiICefRIt9zeG5VyjQ2K9k8Cx4FjweAX7PqfMKyyjdSfzFb-IIomPb6lVIEdP7UO_OdixkSFKaGgz1IuP89tlc3ZEHBsQlBDzqBccNHRN2-bozCGfBs7nPizn3vMH53uMDHybWl2KwavzmKu3pcy0BjFfJtS_bryQK2dm0BhdHgBNHXXXGSqjegTNmpLFadbzUHFfcIgB8MBKObxp-iIKFn6PVgt73f3alItSrqIfHqSDNxeaKFLPAgjyX9fbN6F0jam-90vzjJvf8WXc5l7TU4FkshCUCN0g9HzS9RuIQPPmf0DO5TIScrw1FHpqprRHTAIxXqDqqV71Veg628GEkbH5LdHrKpy6Jp4S-O5yMZECwWed3KdYqoCAZA81Ntny-7UK1e-s33D45UpgBf5URKuJZNXxgRb2-w6eByTB-izpKcNmZ8KfoYd36sYLYNhXrg7eWQ9IciFCkQf8v1WeTkJ3cvI-f-57G6Zr6WcboFVWq7n9-QdEoxRc6YpAPPNpuZlddBuOG8cBQpZ4aDjrUkJgfi8e5dv0UbsJyXfrLqsp0TXnWOs41x2Ug3fRPaduyvvCWhAWXJa_RB_J04KXpI0Z0TyDyrLqQkSy53U2mHF_38oQuS-t47Na3mjJqLRAry9FKwhqEnOh33sKlYmigoDlZV-vynKksFrcJ2AZf5E6W4WywcunnRrMaA_VWcpdx3Wk9114G0GdriKD05Uuw1Im9FnE-ovL7TMqccodFVneqO-qRMcGufwNzx8jhYXqxcZFyUK42K9FoGbBSfFaSf7BcBom816VnbrzDdLNbT7aDu7nRS3eXLhmCBzSNnOfvIXXtVxCa0KNPPw-k0q9veups_znSuXIupIstolwcIgBA_C2R9SyJN5scGjso1ns6W184FijugKZud_SN2GwiPj7k0SLgx8E1cB7-UcNvJXPk2Wl5KDJBqo2EIWgSkeXPKpW0E2D0R01Xlxrpy1I_1Ln7T3pFXxjkMEjGKBcTZEY-4Fyg3lN7nTUy6h-ulUQ8ueO48Ql5Fi2VnmKS6YfN56-8AkDATkcTcWt_VQZ3PTL1S8DXyyAc6IYBasPCRU7-RzwNYWCDHziOUCpMUF6BZqmlf99wBdHS5GRBSBl0iTptFlAMyjzIDETDe4wDCbOSeWXnTRlwiKvIfT3PwUAo8K9BMG-eBtDmMZhoZMqFASeZbNxDo8YBhOh1yH7QBewjvF6xcPwQXJFL6Sk6Yt7CC63m1g_yQAZv8PQQOJzM1bMhpSdQyAUC2Cc-dc2sWUkQ9zd_PclYFFIRnFFFuywNPb3jd8_wtIZySdxPgJ3l-g9_nhgzDTjbeBKWqySpabnu8If-XLqlqi6OE1HHutR1UlWdblloQKu6SDxbLDfJT0siLhmZPVjCcXmIo05fiuD1pNqQdxDBQoJn9dA3RaOVdaao1D0xVA5lFL_NucYiRFNhQu52ROEE1uM7yac1pWMNdyav6xqrtIa4cGD9vwCA6Dj2UCay7vU1rcY6NIehORL0ToVi3ImsVeCg9_1dW1OqzQoukbDJJSN61gkyEkOvGwqYFlb7CxEMmaiLC2rYI6hZFXaVBm3icl8-Ygd3ZrIJOLuzwZY1Kjj4zkhY1CCg5fN0Vn8doA68BkrJmo0s3TBjod-zSxnOiUdQJtncMEnh1AmgN3sFEJLIcx--3wtxMDsbdSjnJq0skHtGNZw8q3FY6V9UJ8aJ5y_x5fkJRpJKeBbw45qhasb_GZBsqUzwMTiuZddkyMcjdtHZvzWRfbLltv0JGFoiBtcP1p6NYQJfV9ese9fL5mx6YscpnfG8aMMZaFkMTPbm-V4OBi_mwtbUvgfpfCAKSHp7xZ9faKopZ6W3vU-mzusC8cGnbqNJoLGbbbCYvGb9WDt9GHq9_o2FwLfSm6PF0PpbT4iB5epys1uvYwDuYy3PyCsxwofMT1ffFagxDVahT0Iealrncb0mzFbegBC66UDwgc9yB22DsNGs1nsE17tFdqE7U7E18cW-o3p8OIVICFxN6GuoPYXJ_bCOrW6awLD3ilufLUTzJgwhaai4D_bZOb57ZWzMcdMnvXWHS4kqq3kSTkMYgBcb_HGc44tLcr43HhLGYqcisRtdhszaCxOatAKBezTl1KNqduq5ry3jfbj210sgoWgK12_UvggRdkFrstbmlqpiROYNKQWtcLli5-8zZWexAdtzV_XYEwIpt-daqmEMHvh81pZt59N1iA68eH2-bx-RhQLbDb1b3Ca8XitnEuXFAmeEw8jngrTJn1OtrX8JW3OFLAYwNjGRCQ3cIo0Bd460WhkAgfcpbDqXqislOAoo2EMEmJO5DvEtAymWQNR5Ssx_u_IDfbCf2cdKMvCC_ZEI4A94RDnxMFYXtlQXDXocGsFwg1NpE2d0frhmfyR6dchBfn-OYlhlN9Y43u6EXlapp8ZY5nIm9C0aARHRuT1IX3Qrx_B73aOWL3T8fhC_teYPnskInKvA2qNNh22ndIQWo-sQWbcK6xJJUcc8wzsDVNENj2ZgiN9vRACi9GamX5mth1CmjdtqNQ4hF54m0pAVC8OKgOxmM86ZgjXLmDj-xyVUMMwlzUbFR5jaiL7BzbXzCnLLTt_4kTc1QLo8jj-xyYhlGAQj_HUQJQZX81o3-X_HgEuJ26XalLfxt3qp9wnMsQf9do8eUQGH4ywBTlk3dH2mloXhLSAnWQARPOQ1yscGArq8FiUc8OglXz4E04nwnXfUVpjyxdQTfaEOic2USTRENshxJvD6ikNE6zzyPE0Pki9ZxTPy9oPoCg5IaSrQ7lF3bHdUS8i7vtRX9W5JyOXRuh1EaFhbRWRU7efkZVuQ_BmTR6Lo1OOhN5xuVw9lDUQ8m-EkWwPzgbQtttnLH9yYMd8rtN8FzVba-gXE1gLfGOsAD9QiyWyAki6MfSYhPnNkg-65R3Lz-tKgkf-LXQG01WDZXida2oNW8P7DEvPLglRVvqS2JtSCfOhNvJiLgkEnuvcbcXkXQtTgqyYRCAS2I3ux7PCB2nxoKYlFlsZBb3KnuGCneKm4OYYMhv-fkbJkjTgieBZkVrtidJby8TQnv09wIUGn-UVfEeK8LkE9vs0vUag1cEqNz-yA1HPBUh6WQtBdCtSwMZsnBV6KQSyeuybb0uXlTdE0IyQmDiMKwbf3tQpkjmKEA2YzWgAQjNto0GekyvMUTDt4_G5mu2msYf_ytgROilU_3L5mRMpxkRf7B2cZjRcNVzUkJrZySjcQ_K4lpuMt_vxGefFt8vPPFeEUPeZaEWaywSCHBMhuvXTPvvrx0cXRmXhKL-x-LgfkY2HDnclDh524JzOmtjjSqTRvo0xCvLClFmDAxByrODCUl6Ff8hlrYYgrVcL0TnOrMcFt2PHHj4HAnxik_B1Wv5IfvaT-XOhpfDAmRLWueHO3wavY8ZYRs_rc36Ujc_feDa1rech12jmzwByME2CGC1quDoI3YRSXQNd6OpGzlVViNuXH_sf9BO0co56ssGS0M5uQjpvp6uAqCrsz33nVyeN5JpILHn2geFPc8jcwdCYLkRmr5upDaMtyudGY81NxyJ1WNLOrWXth9ofmKaYFkuK9OBGNXSOYqA1uA7rcRDXONMfeyWE-OCsuqkufBJeetQBeOVG8cXJH-e5OAEh00RvpgpVbsTCCxkUqC76kemudnv6RtM2BUfugc6z9xpKFYO__IUPzT56p7cfSCCfuKNzVQIr2tXkSh0upIqeOshwwnyrRf-BIFNomTwtvTYpmkk5WsyoKAoa44TvT6BY0Ozr_PkoQl1hswL8RYUxXSb1XFl4z7CuWitz1cWp8YP7XfedRV2mrsQAgXVkBaI5JzSD8GW5GQuRns1z_UxBHsSLBfK4l0VJBKSthp3kCrzlGNj_LUWQEyW1DYc9M0RBYBRkTinMn8VTrjhn-_7uTRn1wUjMivRO41J6wGN_RlowP8qFSjnqc40E4l3rXJjdL8dL8TIWhDxj01e5GlHTIBh3zGBwiPHiXqMtj1SmURa3WMVNiGSi2Kb-6FYZUuKkN1lrKf7v7tyfi_nQkLJDdOEnpRWPRcrKF5pTKXZSXMjj6zJW8bnj6UCMEAt6q0s7Xyvcnh-NRo4cZsKkOO5fFs-JAHZ3FIvBriHgHdpGEceCQUqvbCm50ErB3F0yImIhOiffFT4moiFBvUj4PNB5VircZcaSKzu6QdCmYg4Anm8I0IaUyfq6CQEQMTEHrrk-v7E_h7fkeYIy1XiJLp4-eWKs8rQh56y9IulQ6cipoYJaBcRQFvb4l57MgA0IVa6NU1Lh1Z6iMLKIm6rrIMIcnsd88fi1oRHRk4mjq4jMSP_tw5PYJy2P_DpQM1UDubWCVyjKeZxtFXLBC8DON2tP8FciTV6safKYead_UZBLCytd8w1TLG9DCmBI_68cz3952dUI10kNwrEObHLPu-3r9PTwD4gP27qPS-9ndX5VmWXRoD7ftTsL21tUHK72bQ7eh1ggQ1NRQyCQgNOks_eyEN9MjMX6f7A8kioDIyDAc9wpE43tEl7oboMfQx1BtxrzcozvVWa0YIiKYyYULHX2ZBxqIge6-WQkzNCzN7cBZrWoPv6CK8isM8AUkeuMAOav1UwHc9LtpN_e3Tcw72pKPh2UqfUFuDDMJk5v8Z4_TT-zO2TaysSRxmtHHdHeCILBAWBnyosTujwF01vyqc-eMGBKkogvBKhJP3ecALAO7L2gjNYI0jHQPkHsc9WkHVNPF30UF0o2qCd_T6950dZ2zJ8VX69gw5MnEoXTopI0WzlNAG0xEWH_YqUBLjJpdrOSwv_Ick0MlT_KuprlsbOjpjSh0uE2Jn8F5tCEZU5jmBzZS5Z5-QuyC-Ip9OPFLWqE8o8D7yyKb0vKo66XqJ2TrQhVopCrVhdkAfbngaulLGRrZnydIwjBQqLTYdsWPW-Ui2mza_KIdcSMn0sQ7RR_M9cozpnLLA-Yv3rk4RqxEAuA8RVSfNzEAnVxyZJFyWk0-Yir98JVZ6zZO0H1Oo6NQtrM6zf7bJsAK46zkc7Q8vIo72NJyBqIns8anNtNOMmGo4PsDx6rlbK0_gKJ_XbB_dwfOyi3Uf0__o_wFLiIP9iXinYI65kbRJJVmaDorJC61X0Hcj15hk6Ac_20FF3I7Z6cWRBeAf2bXBHFkSuLN3XeXDDntD_1V32PwtJ7E5xTV_7xSMMUvn4KFJkvjvtynPJEXd1z-4b7Y2IHgGRZzyjOzfT6Ts47QyFc5nnWnzWAbsxsD65gFcUgcyGZd2xz5iIYrwNDFUpZYkh9Hh9cQ8VYZm13ChH44C_nv1itgvS_uVTck4DIZq7CTXaSpcj549NxXln387Ftie0HE_qV_ALVAQdGq0xx_EvYtli1KNgoj5LN0luHT_YyvVg9gqwLjRnUCEX9E4qH5naSMJl7i8QiBivk7lgINwQ114rSctrv2cUglIxWY5VGG-WqNaf12znrOTRw2zXjI0167jH_0XFZchQMrU8cCwEM1BkNAX-oO-zTx-vdFDfMmd6lWrceiJ23_u_ATVu_RiauAhivfCT-pie-lNFPxCwvcG79MXv3H55pFgy6BGyr6L9eTF5PpqM72TUq-YIi4gxBybZFL_8Kr4sUuvZKJ5XSLpVkBgUJDczW7uL4HIc7P-2K-gOXjyMdTKP-tz582F5bfsJlBFulDHR24b7ACmILg-7NpCpE1SFlm_nYqjNF1EUVX-jTEZrP-nULcWcBqi8S0NIuDhh27gx2wSfxa7t6vVU-unmMHUhGSkbN3HiycQUU0bU2rjcxJ6JoVkqMDxUoTL0xQg9FUItAR51zPZipaSY5lC-O58f7fXT92lfI6lb4LspJohgmy5VJNeFNDO4VWvtuCJo3_jcgMLGD_8Hr9Kqi69NmUyDsGmCNKJXVYmxjT43wWOVVtmXgW-VZiSpcZcdLwZHrxy-1xPP-6-qovoQDiScrqHaCMzbgOaXB_KQ20pReLAwUqmnD1NNy43F64c1MGib6dm79WjwOWyVbKbAfUJZGNUF0V3Ga_s5YUTVtb8yyCLBX1JUKrEAE162VQoaL5G_iEwUPsGe98ympskGCsk3WC9oU62ITD8nTZ8sA4ymNNXvSwb8WCJ5zNry0nyN5fRXd17m_ZZ_zYrlLlfn1MsuxYu5RaYW6wnupgTiTWU55ig85Bhnn-koDdO6po52L6JWFOvZoJYbXu-i-xwvkQnoar3rvva6iFrPEssGNKVRIEqpy7_LeErfDl0dQTdVno5sAeZFI_D2NZq1bpnO_DRWJ-SWzfkBhCOgypWv9iIGPH6y7WMC4Z7idoM4pXVUjTw9YJYAwVO3QZ7yiZjuouXEtOyJlqLUPQvUsWDhH6Fi1L2XMGiqYnMFHWzBoy1ffzkksbrQbaoAH620yGVmNi514nJmx48sIm8SNRp19t8brBdGaosluOLTCzXtSKSIIRuzRp54gm_6hWw4y0FgmRc9yZtcJTHHacj5oW4cwzQgvejxaItavdTEcbcekaHoOSGWaWGZCIgO1nWnR1EvicgAI1FESK3ZYrqGI5gOHqRgBZMTN0VNuY5eydjQZEiOgRWdVvCDV-0hKntgwR_E6SZylYKjtcPBsLIaGOmIX_TbrOJ3dpVT-671soPSe5ieBaT5afd3OjLZQg1AeATwpEsEenQmWnjsxnhmZS_RwqvmEEQ58VepqVYu3kOPPGgycZI3DlyUYYqAGkEUJ5dyWscc-5AGcqw1XFf0m6qI0fg3wa1NuwHPBUzBzcGFn7kvQNuit2qD3Y344D8gtrsziYr3H2HtbOlagB98p84ri1ogkdMGVcbGAZxK8KCwb-GxQC-afIaSYGmvRlGbSEXNn0bRo7eEWBP1vHf_LvjEzEbC4PasLjSHzLoRh4cEL6CuROlIUzghkNl0viGINoKd0S0dRw7bixRzvMCVz5QTrnb5YEFRGFPv68Hmtqp39e7cWfEMa6pEzbQz52h3NSvVnKA2gjfB8g8BikHz9bd_akC-areKrWxvV9OHh_9_pdKBghcOOCE1kFhwmVGt0HzYh4zacV-soVTDxKMtJRjMZpHWpnRcjj9B1oU5xgNSXqgHdiX3bbqWbssUpUXZbzojmyqRJB8SKHg_hi3nQZja1Vzan_JQw3cgDL_fpSFncJ3l5CB4UocEftjQrW6PaonJk0nyGktOT48TNpJ41Q1Yq9vjdXohT0o3yXSkUCkZEXwx422vuSY6qB8bbV_0kAgzyQKUrLANsJQL4kzylP2jBxL0qlF-GjCs-YUIWtx2uhofq0nLP4CqajVJZcxrcOg874-l2fILsTRjVcqIdG4I4QHneiDFHfNVRFR7k3g6rW9Gme8eZKMBLuASEG7a_jIrZFz8KjNxI0EC-nhtO8QClIYhDXdVcP1KLOlgZ4bgysbkiqdJT94QPsnfWPxuYWW5doWSalHa9xBEs6OU_NTkQ3T-XF1XpfoJsYGhe9T2MnAp4SY2WmcnAd7PIuIY7QpRmbOYpi4L4YxlO_8uDPYFMZ5_kZBq2cGdLlR4IzjXmI9fz27uc96SJPu1JqB_gyPgPlbPiedtGKK6AsFdo8xPfXDNbfecymO0F11YF0UVTo72Xbu4tmJcQ2Ek6Hd0EfYvhLnCIBGINeETuoOPcdGmcDt0P_zNIUEMEkkGldvzJ5j9IPqZ7koeyH4qDcLPkAM-rewnqL-vZeC1JAOi5XYR450kIORhbLY_T29LW-d7yAd7_UjSs0SFT6KgEjUmmKerLnRIvGSQhgynCfBO2Lxu9lMpkuOQycB9dg7UnUrtNQ_M-aKdmEDmFKbd2-SmngNMm2fdQSSMxDyZLd6GPuK-FtpWcIgenNLAJpZ6ttPf4xTP7lTjvWN-QjtCBZZgI2r4a00WAitEVcSdbR1sC85wnBmNJdBgqlAezCNb4VZZvQWNrd6RAvjgDhG7mfAborXQ_2D5_QcwC90pYcOP2eHQJzWjfcMahAr2DvKgg7-TuM_sNQXH6K9wmncIQHygITUdx7bQnEp12yoklTsozDrrsbWUgbxH-sqAW2nnsDbNS6bSyRzKCpTQKVWTsIeJu_hrOg9ZD9yrwZGUdTb43pGOdssF4B1toPbEBBsU3aVMxUhlLeCVz04qEQKlC4SjFj0lr_SCNkHbDMBXFRlIeUUs_Fxzb5ekp9OsYrXogKid0HOasgvgGSomRSyChlDkrPlrKM9TRPjGrD8Ihb5_OnZZoZJ_WMdR-uu5ZIbNU85PCZrb6LVHV7l39PoMLonbJZjfn9QjdMv8fJc0TxcJ2Dh42giIOEu2Q2gT42k0kbq7_AGLukogKd8QPl7845OAfF2YoPeRSMI07mbefIJyL4L1r1SITOMOSsqNPHd-W2AS1ZPThxQWfHgULH-PAzL8mubzUsSeJTsDL9COOK420ds8GaKaoL9BDYGd8KlQ5Pn5US_aFG_5wNbjDvj3quxIpbHD6F6QSOMaWy3ymKbDpn3bm3LMNjO7myBqRh3pOZSxnJZW7o2PfNmxcNnIDRyItYWtHXUAPy7v-qb25hS0c_H1yWdTrFJ1I6F38AZRYQigvmyddHxhtpsjlXtCvbQiJuz3Gs5tWlgo21m7F6_fd9S6oPmkUM4k05Nqh0NY5HMElBIBtocM334q-JDuWAQPnUv0CGWyN8hmh6u2BSi-wYI8Vun7LKMJyHONfkhUTOa_4ZDY0c_3kOnSA8aPlObVZONt2swM1HPrJIlFO1KOhio3GMp2MDI1pUYYdQbygH-YtlMMH2Q7Hq-jaRSUjMEmpT17itWBmWI29f81kj3jc3aCq0ra7iHULF3gWl5EZ7OOoAFFJF2L6irJkSc4Sq4S3Rqq4v9dVy4sjoxLc9ILlJRAL51AEz16uvZStnHagnc8-k6PplDAUu2r1ueEN2f0-Ks1kbi39a-Tm7zAtRhyJyRPd3VDxlcPeWpVvQpFDNPOnqD2Zz1_n2ozHYfkXSZgn1bk3ZchxoLVwU1_mt1wA_2sbFguBogJNNlHZ_czhZwh_B0tHgTnlQEQhkFs0vHIrkaIQ4P51eFVW_PtROnplptqbcOQhgJ3n5iS1NYwDOGWIbkWyorSWk6SRQcJKSy5-tbiiegZDKuVtKmI9Jgxaaw7oZoOeJfr8l88X2PutP1YsebbZOaRtKX1fR3_Dz61BAyd8cJaw8YZ869U3X7NbYfQA-Q5ZakgGmkdqDCReOngU1XHIvFunqFVEF2N976ovS6x4Tghmy6QOri7nI5rxlc9_bFLTiRR8VO-b4e42Av1x_ZWABkzjMkVFYX4ocVrfOkqo6vSUDWeY3XM4vyAIceZN6kuZ9t5qFb4vdKZEtUnrM0uevRq8IQajGTyWKmczXrw_6M7F6NvoXX_XopE4495__X7lfFs5TzESnUROhReivfWEUGSsHq3YRKcyIKkfUffH-Its37TYrb34Av1g5_9q-qIigs1a6xHLIB8XUUqJllY7Tvd0rY-InhEo-AirX7sS-SMpQHYA96vGFi3jWv_IOhGte70OT8MamIsmHY5vL-ixysEtV4pCjboUO-y2jPLshXUpfbwy3tydtwiPiHuC1PYkPeLXHZmFHhZkhMdPqc2glMB2-Bt66T34QXuJpzBhQw8g0IcaDfg3B5YvQeqTHUziK77o052DkDa0vi0fgKcM_JQ4FtA9Ek3mStsEQ0tlK9cXBJiVzzlyQqLrHA-IKoiU-UzojqKNCV2hQZN-soU4qF-3boabZ6Wq1pSKURPLRvy3cCuS7iCuIya2XmS7DUQhXgnaI73WsaOS14TthMCVefBTAY3P76p5YTyqJNUrKzFOBS6VFLIMkttPPjRo1HQGaDxtJ22rgPY1mA35FFIxuCLK_d3-tWk6cutVoYwwEgy3tmbCDtlebbwsEH8tZSh6Q2EeecWfM_bcyHD0aQrCqsrlQnCYeIEdDQB_F49NDWHN8W9S3TqPouTeZ2K-gKGuK6jiMF4gwJu0KPKO1MS9nZ7SJud8QBoC5xwC4kPOwEokfbVqxitUriK678KZgKBSaDVQWDekY21zktepLRGS0n8YzEPPEhuN_2Ygwf1KxZ9DmCrzEQnsnYlX0EjqPvbs2OrR3Dg9paVU8Cm--iQa_CDiyUo2LWwS7OV2ez0hCGbAV1AM9TrekrcCit8Fl9JY_jMzo-LstHuBXOshNK3P9y011S8UuU20shcaUmlS2R6vtagfCIiICAZJF9LKDBLTQWTeeeyyMQJ14ZM_BbLG5-ymcNeLx6KFn7hLefajaKAKCMQHbQ31f-YpnyxayR6rsKkK5ckCQl0NwnPeHwaYYVJ5ln2VwpqOcht8LymiDs5xR9JbqqrZVEjqtXiBYvmkyDxUJuAGggQ-OnjDBBgRQSRGb8cFZqeArtxItpGqJnZpJr_85BHwcFeaZIHPbJ9IjNqDkLUxMvehiB0eqjWmF2B5v8VBfE5_tl23M-sBqhSDwkc_GQ1WJG9wzSsJQqH_H1Gp0aZ8-9wBQ2mT-AoPvzHX2jDWb02y4Rd-0T-cZ5ofJDMapq_c_crNiC_j7ISJ2bA9aZ2NoRE1UcV89H4x0F4kVFrDYcY_dJmsSG0-YaRo3ti8UmPLMtp_TPDHViZxwYiHd0TlyxcbdSxi36vISxcwNwhMf8ZVMM0JuLYReSQT8LUgB8JHjX_R_7n1wMxlySDLBLNUrYnu_oOnkdUmWG4aTbF_SXloG5-9IqwYy2GLsqForEXkW9Txxc0OC4spKE4MN8d0Kuhkv4OIwEPIjajEfkdMG4z0fs9CD3M5wEPA1TumOCOXxxraue_uuPkaPEznqtWhZHLTXgOfoEB4v4JH4QULPgFfn1xkkYz6nqHZZ0T8SPrJR3uexUi1rJ053lk8FW7-Ipd0MPkWyGta3DykqTSwCE0U3HgdAEdW9HI6nfwZjbTsxLCaIYz4oMoFGKCzar7SEn9RF1RIYGayG5T1Dn0XIeRjENg1F7By2944YIZYa2hEfT-JyEOhNBF4YzwTr5t_5ml71DKSQdI6ZZBi-qcIFYkxG6hc22-lX83jkvlcDX0dx4rVRsPh8lB-wIzqMJ4qL-E2Gu_VD_OGCegI7TQR0hmplUhMWOSJkkPuDKbEcas2e7vf_SiurDEm3-l6OvixrGWXMQ5zK97vDX1VTnRovI6QGiCIPAN0gkB2-eOqpwUyzH7ZvnUP704vZooltGIlusQRQWo-CK_ldv4py--ZyuMm37j1EhzAhsY2poF8z_gou3ogPxDBEysvmnSuc8K4p3pmqdJYq0Kg6RYyNKK9RKDwgnkPf69Lfj3Rje3Jee2PIJ1jyB3bVYfYXqQ813v58vFxkUF0pWudOlftL2FowEPDXGZGzM2cVHa6M7CTEE0F_llzyY7Zzh4Orpf7WD4Qsrl-EW5Isr8kmw7nLEkq3DEzEh7eHPxFfdJnzD8VaiYSiNtPIoseaxBKBra6v6PdIjQOtWazjj2fsk4tVHxWuQtboLV0t0C53PdXFkmSY_VStdtpb7df72CkXotAPzZIp3cSjNMt7SHFK1brOfA5Rn1Thh_PXcsty8Fngj4fwF5QqrmcYfLNNV53dhG2_w2rXVvUrX2qIHkf1vGInQX1eBpSs1lAMX0z_rDlR6yuPvXil0wA1MKFuoX26gw_yf4LFrn4aJ4sp54Xgeccpem2GMUGBtZXKA7CRpc48IvYcPYsnYGV8ZeHbonq3cBmOTJNvcR74Fk4D9sVvhtjeNg7B6HefApjDffi3M4f86MOOZn5goVsDm-AdMTN0Xr_hpscROEoLdXrV3BxwcnC7F1GIEPfP-Mc3HAcn5djcQTjltUaYvKy86ShgT_DdOZkFdyJ5FErE_X_zX8QtRRKCcrdk9h6Kon7uJyWVtXaVAxhaYLi2PtJvGhl8w_LFtSUQVeOy_vyXh7TCdAFYeCHq6dyWfRY2dj1ZY3zYbEYv4XMdlz9TAKjfVkayREorwry3aelri__CMNiO8mJH5_OUX7AxnQCLoOhf-S1ZC2sQoTAIv9lYlichhqHxQx6ue3cR6YA6OdCQamEzeVApHPnnq_74UC8pVV0ULvqsQBbE_tdAU_8yzNU0AJJQhHqlFJjg_Rjxw6S-dK5XRDrKkS47asXnBXCK6lAJ_E_j6u7W7dkvxItW2s-HxtjRSxcXVMAq6vylPLttw0osoFWbQi7W4CxRT_YMdXBftGEBpA65kGFvpeT7DjI4JUi_KmOgl679rnhsj5Lk848ysbHVvl0bIPJ4UNC9IKHmAuFhb7m9yJnw2j112T3TGCYhNPTB8-rplYUdJACa2pBJfGhqGrxXVgIv-RPas4EwfP49D-SyATSWFZnVwRCjb2SLScrJLl7NAdd5uiRjzXTBLLRKkfCYvr8Rd_N97YUxTxC407_JYZt4v0PfBSUpbXcXSb_OdxUpvrqCII-fi8Wt1bBW0ZiSqIOBzciw_Q9YDGPGj5oO49a31CPK7ltoigpAqzjpM-wMEHihGWy5rjYNkQgM3s_Q3P3WVI2iLFWAG8ZQJTplovIqH1efr-hqXfMsca-1Z9hLQZlwWgrEPXkLZbkmfaThcLkiPjNqln7_nxR5byC0K2FY5ZJQYeF59mFknD4c_PurZ6jD6MERIXZ_alUHyMVTYRumkZ8qRJCwD6isJzVG20ZUiHOHe--T72YyUVvI181iWJRVGU4uYtGyvMIjI8Bdpai0rH7fzduHWCcIQJrLmdua5YW-_V0Ti2qNzdNMBgRAvGWd_iItsrTcy3BEkmB-XE25uyvzGEbcTRi2SE_JMylgHo5kqLotLQkUxo7XktNWiykiziK19OTk9lZcHAP-X5ATCHWhPxcqgRO2SlSde4qecPecdgf4LUs_WjeZx1zpjL8yr1bETv5zfHlQQwTqfVxOcEser-DUl7q3AMExd6WksBxLPoB6FAvJ-mGZHya5-HpUEwcX9R6kO4yOk2oFxJhI792g1RefJg9PRWQ1kCSnfYJ5E04manc1JPbNm71GAY5YVv-3y5FNsuHZ8AJHXJFyOC0D2mZwnrMlsZydjp3BNp0QTO-ZYik7r_gmlX0-AuiMgUajoTmFn4kYB04SqcBUeX_mZGIvJgwoXPWR9NNRuJ-rwCFE6PcWKAwh9lQwvc02DE5BN35_aIUX1FAmxrA7eXfuAaBSNsClfFCVyueZnysCvWXgy90z76lscUlAjB52GscgoxPlrWzcw0cF5wh77s2AifHqy-shkPS05F-4S-49P2WbHB9Yx87S426LXr0hwN9EDC8w0nSynBmDR59zZCuHTw_e_w837GvgLLsK0-4mpPpIoREDTWn65MO5WyqeRfKYD-3ssJ21YFMNJWPgoZM9Mzo6JtYfKAKq_GYgC1-pNnrKHq0redXiu3B8kYMSgbpUqpTSiPKgf44dE59UCFnYun3ZGT6QYtCfTad3DyXFuO8twnbyL5_s1WXPYQHuUO6k6CvFJg9UplQXc3v5PNgciD26rWIHImBrmtkTLgrM5MqrKAk3ssZTKbQfS_2CzHsuhmfyaHdUI3pFkRp3nUUW8IOUr99rhGgwHgyfKLeE0doZ3f9waULqgRRL1W-3-Ax4s0NouOngOsJrLHJV6Jj2K6RUYY45vfFeOPphJ_VFb_fFZ6C5yaO_IR-WXxwYBEqbx9-TC48kLuscE44RdIcR1SEXxeZgrtm1FKblFqPt4WI0WVwUw2T3C8kI5jW9trAVeQ5tEnGA3y0tKoqPiNWyGnmQfmUS5RAr9iaWDL6vXKQ-pIPCOPm6zWSKv0Uq67jAUfB5XmrMT130KehzHdeXh2IzzdBHKMHD70jWxxjCG0g7MFsCk1NGd6Vj6G1TwAb_UBxoI8cssIFWlSTFlj56KTdM9MtZ1DWaAD9EUyr6xWjtTSWXgaA_h8PdejxEl7ZKQaMqBbV8_cYtmameNb3ZEt8wp6FKFoRVfJEqwiCtKZZlOyGfnVai7_aXXGiUqK00FCTZ_0n5Qxa8SosIJ8Dx7WLV_QjR-T_RqaUs6BDIm3oB-k-yfyFbkCw2lNGDTe9rjuBCu63VKUEnRmpukH0m2pW3ilkYfB-wDb6OoGS1Go-dfRW-eXaVGNZtnFlv9MzPn1oeQWcyWvUP5_OSvV9-6oprmkC6yFJjMnFjegwzAtdIHKwpzbsyH83BRxQut3pXdY_Z8YIOnoNDOTv4PbWYCYYlZcD8CErmW_-S-brZmfZWvQiF427zLfi-4Qcm4pd630ae3L4WPheJBofSkZoQ3TKcBNFp_moIrpdX0W_g0tMvwrswrIlPAbwzhq-Nde_zpNjYHemUf2O1fDrCMq1byyxDCwzaNJNonKxE2C2AzDumxFZZPqxTwkeqjHKkm8Oxot2TZtyxwYkmQDhORWTn1hIKdv0EfWEA7Ap3bw9Tktzq_-BCxC8CRZPkCSFr-U-Yzd0Uo3zQObAirLIBvTmcij2xC9uiacNo2YGhkR3ds59QLZw4-_ffoA-MmTAPntmgdN7FSgWrcM61WDrK8Z8qwpMlUA4Xa2VErCrV3Mze-JxWrmZjNwUNQ8tEB5uaFBJ4KnWpHTkIDhIFRQohiwyjU7j3Gr9dugTCmn17bwkfJSAbffVulsrxx91zbNsvBkNhSSRxMM_6_G8Ck7p-U8HtrDjzKgCAQkSy6XDFVGVV51oUsDQvV3LGrC4Zg8RHkqcpXyLr2pVAA-kFP1hQ4g4m_CTfHhEZkBGUbg2_YaWk95mbUdrTsfPyUO_7Psh5or79ui7jvAgj5HRynbQwSmaVn4iAVR_wVdVQM_O0b3YDeOCq-DqJfTFrxCBPYpXqaWQJPt5JgLU_SmK6www3mBPUndqktZVbunGF9cvcGqzBKth7ksRCPYg3Uer1DGbNmY9ZnX97l0J1cAeNDrWZ-AzYYB_EEi-uJN-Lpp8y-f6GWuav5_xSDlQdvF7nBuTTfpANjA2AVva_ChNT8h88lvLczTmzXVY-NoQp77coPlly2rsfDrXy8jIKIbJ3ieYNZ-h37DloRboUd75Nv_yI5RTDQnH7cLEegi08EGBhXV6fvW89UNfAeZHsaOy-x7sBHyJmou_BuNn327IDUEWABt91pF_U9afT6ubdajyUyiMjLoFCE0GyOMTEALDtea9KVKk_hhoYkvuUHf62kUmA54Qz7RR05p3mtLoo50NUZ4pzyhsDMIqfO1m7OyHBDcX3O4ECbuIi34lE6r3lYH33Y2OexHhqnzZfkKIWlMrORhdI2TpEDPsI2cGhWsQ-5gZTcnx8SzGm6JzFxGUbILJVrdN9lObA4gZcFQqaeJCKdjgnps7Gk0ykg9X8LZXyt3A1h7xC9APhC8ByiY-RTMUPUpBRfxXoHOmKdzERU-4kreemHZCMo9Hk47gIaQqKHzzXXOE1dmTmC4pZSXAlsKJQY3rlNI0L_BU2EQ02oNJZAaKYQKdX23Uc5hmTSCBmGF15UOVd86Z-jJxzza9lS6hPGVR_uKwWBJ8GC-nZhfwUe6N_MFuKoio9KmFuUAOd9a-8fo-PtFus8p8TZbJoakMChJmdd3mvSbFSxXqR1W32wZdymM-qaGaog4z96_j_6L14pyFbK-mc51b7nfJxcXPYtLEyiY-dqZCRACGjrKgbD-pvaf_A8av1N0v2rZUJMwbwqDIgmNoBvTwnb4HVM-z6VHOsrMqoZMkHYOmx2e9RNI3daxsjX6d5V_mlSoIMIjOa75mYbjLkHnKcYA748C47K4CB7Eu5LjM9E17NPp184tegLmhnN66m9c_5mc3L-CGAsyCfzEXBCdW0-rJVupoBB4j-5AoYaQKM2UVK9QLEztlSXCSnRhuxJOs6XJBoHbpn2ds1mdmqgXk7qqXJUC53LQ884ak566YcfwtykKvsLyv63YaGz-ZCMxnbTVdylmgSJXqr_nh5Stpd_AztDjCGHHSvL20-t0EnKqKiZFuOvF9MEqoD0CJC5L5ydblDxcZGK0mL2CNx6Uv07bvYnmtC7x8Clu7udT8UkMKXPXtGseZdYhkIQjiY3Be7gQDIOFvUGyxKccbi-p9hqviJ6x3cNkgyFmHPEfR_-tzHZvVEvnVmCduDCOiVBfA7DhrGFTuRFzDXHvyDXh7Ie15QFAjKk55StwYYbp6j3JXJB5D9hSnUR3tRAf9y8_PhsUmXhYizJR7pEqCi1ko0zXInl2VIUg2ACxcaQyAaugbqAFbMBokYCuGyUskPiOZ4Yp7HA2cEbqelspJpLG5jnsfzzN3XVPXqGA1teYEPHxIbjS8opofut_7hVqAAv2qQ4wkg9E30HKvWcxSdgdf3oFPaeTKpFpr_exVWlSRb_7Z1MMu5jHqpzNOACCsjkPJToPxwJ_5oEgfvHB0BysyoIhLhWNiyykBBR8TTto3nmRr4NxSAbrkmjo8pxsR1U_d99mPqwg3k2KZo60AXDgpOu5Gsqy_KsiG0On8KX7f4S0q4JrGw9xT5cetYa6ZijdH2iwnZaGz5WTxYVC_6QTIcizoAuUsapJAGtKgPH83gT9lzfvYOytdyMVw4OcfujG28dJTT3kuTMnCO5SYet3AJ7C6QTWoqavFaKm0G4DJKQU7fWiboYTZK2_O5vJX80b2-TM5P_q2eF84l0B5r0fcLgOhRNW3APh5VikGuh0UwYWQsuDzOM6xT-CTPlJ4VsnYTKacoPEYn3iBlzfTcAyI1oG6CrL4vBlpPQDNjXSuNCRLDZT-oDE4qhK3f0GxyMwH9fPtru2AbIgjxzf5V1KPDJedfIOug0u_H-rG7SLblWbNookOuKZMaDX4W7eMnl9htdcecnvhYgBdqVQ0m3cBV85gmyBz_X6mEi2nzvEK-m3NEV9tITnCg45EOofmuMCR74WSdX37F3DZSwDzuDusFqlQOu19pBc205Omp6AJd27gJUMQIX8oPlvSZrGiRS-6z0qX0ZHC1ohBMau8edOw09oP1AOtiixfq-NSqxS3or-qOu1kF644iSVWiDV_2RIv65wy8cGdMTf2getLLX04FVqzpwNov70OqH_CWyMab3nLbJzhhiGhTe_qHLFQLoTWxjkkTYR6V9Os2oRMo9Sk8lfDUbT7UrZAaYCcG07Kr7V9q0K3-D7EMaf6gpdkIUTrHeO9DK7Ws9x7dZLtC_S1xQP8f5x0B5iUWksPS3ETv1qglU2RQ4uE0RAdkQjCf4fzsk5uU3SjBIfmZsSu_gGwvELsNsBZYju96lzsHx5oZv47uVOqcvelQUUWRddFHu0gnCIY9ueTm_tv031C1TWIsqkciEp4IDuIxfOVY7ZkY5DFMLley_p-5o5DCYpLinPiplUGYNI8uZ1mHzMGV-OJv26-L59qtDr6Ptf7JNAZ7NLrXsKWCNm-nw2eAs5rfjZddlaaAHwy3wn6UaMFXAvbW2Jb-gdNDtJIv8MKsOTvjKYxkrBgjtFoUzdHcLP-ryBT7Y3TjK6BECe5rRIbFC1o6B6RoXDqKGu7DSDtdbnikwhxoHQjFCPU8YN648sWlAqhlTQ9cy3LgUA65XBiD1Yss39aJrSNrF-h2N_vpUm3eA69lVOgOqx7UeHmQOhMe6AgfIFeS7MPciUXvgTvpHedfEhlNtTJsTxGr1Eu0Fp9eDbSsAGYZXgG6wQ4RXNkO5USShBSXfMAdPSE5R6GRvDd7QayqDItBI0SoOzrUHNmZrv2k0MFixGZXgO619I872nfuUvd4TEA0944PfcXbKCBEotRnDPpPCSiZRg8F2nQCn2zK9oLtCftokAAbC8L4PJouji2nsKvwC-OHP8RhXgfVm9hqe-Cx2mYJxaBiE1PcM8gxA8lZGJEX869FzZ4rUZYdHItDs8tRly6RIbtL8ArSqpIsFepW5sDPLwqDZiA7mCfmbMQaNsR_VODbowvvbE7bCLNr0tmX_H7953JM0jB0ZHXev1PmTrw4CO-qxpB7MrsoYrBGpKwvBjAIEY1OL8YFhZg0WH-DXBURfAHUXGWPMqhCeuORU2_mm0sJbXjmUY2imzgQIi6sxvl2u37fD7mfU_r7DcM2hJz65Yp9P9FAhT1dN7-lgUeVaicxM68fHzl5nygq66XW1ohe8JqCml1pntl8gvgSVsc-aS4_yqPYOn7vH_Rdq1M2kr6FPauhXsyVx7a3Pjrll0jIoLs4C0Knklr0rENrTTbvk-16FU7S7EK6Qh8AqWPwOE4avnkcN97ENcy6m1iFbMEEBGJEKAHL4-dqFu1FcYoEl9K8Z8y3XHvaHzAYwDA4nGngz9-TV9EPb6t1uGc4g0vsbJxAHM4heBOMCsoVVfNQAsOHM9DMvx46m5LMVqrFKt3s_cLaAyOX-MiEuKOCXfrkJ0KIgUWQtSLel-PRsQ8ou4lFUD1EHe2SuZ9-6NkMf4taDf5QTDI6mglbJLf6Mz6c7x8eMQOM0VT-5UwOYZF6mqdUX2-bHBSXv6PXRrTsxRKzo66XaU2Uu0-T-QNfEhweGleLbR46BNXk6MhC2IlWeDvmySU1NlU6FKoaycDBkK41s1rhCKpzcRzHQjIyXiAW7ynVv_QglVhWDXhZl1ROdan4uvy9lt0eXB-iwavGuyOcT6kODfyp198TEBoGnsBuuiHMibPhLxYETJHkcZi-sFbTbdsG2tw3m65RgNnmzD8V3ZbfaI-64odOVgQ6ADDYsj3VIattyxg4ni2OWpgxSEyPz7hfKANFQ3CMmdX1FwfjXuWZpoI1PHQcLU9B8-lT-9O4wftprhVwm32ESJS8RsC4L8rp5HdDmo054ypiwgkhNBYK4eohE3Yd07elgmrcveMUVpOI3_ftUZOagX6UEGbyt3RymJZ71OEwtSVekrkCY1iqbyR8M4_4Zonz9m5j09SBe99NLxqJrIMfzAjThfidoD_2DzyTE8FeAZYCyg9-xVjAcvQf4dBcHXejCCGHQ7LD_kQG8poRZWurwS3Epq43gfUi_blxl0G1MONmUsEBOyUI-8Q8HJtx0HaNnM8UKnI8GyvwsvkcP1WYqKNa-XDD8Yvdb_PU76UjDOHNT0sAYX3F8TnDtcngjcgLujoaCcyyvvycm2ACnIHgr4qkL0fkX8-aLTxvN33aVVvULeOfB-fX4tk3WAoxPpPAQu7S7GKtpFE4vrJf6xDAywt1kmmlxUcaF0WwOypZ44saRS0siEWnxwPYWImVTMAcirV6CZHh_NiLRphadg7QBMIWMMxnLT7CMTjxo-ptaqR9vcyzynl1TntDSeNBkoUM-0ZEVDvVPrphuc6Pcpg4G3kxmc7Tw_kVWsSIQJR9dbJZTYO9cdfntSAnxt-H1c-rshhNIi-e5FGNcKQIxb_lFwIKiSeDsNv_xr7YebGGOn_uxSxgAZwxCuVd6iFu8KrBbwDJ_oktH2CVl8ykrFWxUWsmjfLW-T3nhHu4Dk5SCAhcaUDR-8O5SxdRssk-zJNzcSTd1JJUOEcaba9fW3OaxPtgWbbBnhMzj80w3qT083IXAiHFW-I87kSvcljo0bld_jkGkcvivQly4z-w2u-N6kWofkbEzG8wCrDKOUItAiUUB-9yNvcCVtBRZ0XaaxBExulGQhwsPETa6LG23Tm4gbPRiQgvvHA8mW5Ra8dKQ-6lAhCB_mLtrcw4OioQLOlMkLNPOQJQKkab67fcq2iDLJL7mMKDUDpEKBOdYlDWa7-NCIC6g55f3H6iuR4jQ9NHHbBAVjRn-060kQ2RBXIkGSGXSv8VcwXcOWL15LWEdNR25Zv3Uj3kf-3eVEiYdGOO2WDXxtKmBAlTzTOKgljWH0sUnkdB2sfC_ZGMbqxOFWrXAXUN4iUnFdJyvp9hlMNIb-cokwIMZh1glqvrDhvwlVOUL-3NaprZ_qCYSiRgZyKJjcLOZ_nukr-9PMRirjdRuQMD9qLjE4DKSSj2Ie2Wc-H3xGrLJDArnKt_b_2ozZtL_pQ0GRh-HosGJX8gZ6pulUsmrSN6CZrjFQpN_UUAzpPJBQziRML-6KoU1iZpaIH4oCp3mFlt-o2qxsV6uAeOR230UX9HScGkRtzgbIdY6Dc3RZkKKzzjfpL4A7sQPPm2sxr1lkwoWypoFv3NYl-pArVfrxCiqohcRN98q528P09j1ug_s8zYYbYZIwpNuvJA3XFARL6I9gf507JCNZzSvvCNpNGX4IUwPfgg2hds_9sT5MZbIH96be5wFAgDs1H7Kk-oBLtRU1MLkeKJ_dGpkjAnBJtwfJcKgl-OboUr7E74ukOsIl0nmCFLs9eZX8BBGRYSVnkNbnxFpwJYNOOE3HuaZ8Q76FE7_c0xQYxk7SDK8s2aD4iWCkH_gz2dHNyCXtlL-Le4kZ4YczODhqml1-o9ccj6qnIiMZPdzuxotk7bofDnMKLoSPZNtzha4_LmZ8UF68NZRwWO-VDaIEnPZxQYRRc2adUEUAG0KhcGb1LaL-_RwaLtFhcA5K7VzgDFFL4lV9_gNo2iZ0em49Gu9Wy8Q9U7r2wa4EZpt3k9PEl7CqvJOwqZwfa3UebXjYxJStCFrAZNUq9j4BB8a3ICiYwTwMwW1jfUpjo9q1jTYD2XW-LOZgg0WK07rZbAELjKWWE1rV4n0BIvUpwUq7c5YhhQ3BjbTROgcEZaf69AyJoeYyT17YcFmdj87LzsQ0vFswcxiez4B2EhAXXppmiyL6WZm1Epep-oTenLGG_t21hV4XjuZzdzNBmKyoVZUp9QXP2d-1u5MIqCWPsfiAHdqMD8zz5RbPIOq2rX2-JkfkZBEGWQT1PPa_rIVu9Ngqy_YF1z8qzfsc3KWUaohUGS4KC1aD-fRM2NXZf7aIQL1-waGXS-gO2l20-XFNZLO3r78L3myqPGa4vxgMoMbMIL0tP7IsPj6w5L6eoPbgLGxsjILqqQe33153qM79IQ9l48WtVHNQfRtW87NEdqkSO9dgO6fDSfF-vSHoQcwFl2U8Z0Mk7ZKb-HgRH-aFmeHrpa2qM-J7k_Q5ew9Z402J6WF7InJaufHX7DfZB2IYVgQQ7hKuHmx5Wj5GRnqxnIMACPtW8GvrgD9ARq3J_xJ8aohpv7MsH6pFtsgxPYhA2wokaW77A72NNVnxtj3C1W_bW5ewLXYGbZfamwXSNidox8BK7pY3LNiVfBJ3iioE2B3V68V2MZ8B5GFMP0ggwM9OfVQP5b97cYpoyxSBAPA-wnqRtftcxNBMJvGzEfa6OT7ZpyL6aMJkEzjcaWBgZiITqcr27dQsz8fbPcVgEsfBeYcOphodf_VndEWmxpEv-c_7WmH4pEC1Iw0QaNlOKwx7Adzq5NzDbLplxlxjB0uG28jRhVPu239tENv_s-2LHqVfyzMiGLtCRv9H1Rw8GJjiNfXeVZrKsQ1CpCxL6znaRx1GR3raf2bSO4Z85ot3CEGR_MP4s86q7PZAMv5us7Q6QFdT06EzDA4wyFG3ok_olaN0ksxJLVKbphBVHRf5Ci6ebe3fZrifJcb06Q4lTO4Aqje-mL6q2Pzg8-R5h3geKIXEfzra5dszM52uYf2mFS-UU9u_sKG_OgJpCP2pz6JLEiuyMfpy384HZMW4uTnrW3XZ3Lr8lSwwcqEI5piuofXZTZgL5ZTsFjH8gVHgNXCDlxT7i6UGEsEumbRbM-xhJvltUKRuGvj57l0rRLbH0qd1DAr2st_0PMEz6LQ6kYGOlOFkkZvRaM3wAoSkgprwHsVGfaAfE8AjejRV1Rcgaa5YFYN23xuOBkgpKslnHHwPYiwCihKxPlxDX9ZnLnRY5bQZJIJiXZfp_bZVBXdXNjzkvEkGltsa8P0DicHKOSYzybGn1Ut0qu9avoHWX6b9CPuMgr-nxrvwcqRF0sG-uTMZ7n_nE-dB2EGJSIZwutyWDkTtDqPphupLJeOvVVXAwx_3wVVn8wI2y_8lg3WnnPNY2VGtnu8A3dDfRmojRygEUD7rl84M7iwh2MIYIJkNpmhUAejd8kkfZB4EVBITdGyagl_XdEoEcHD6KwFKBWn3dsNrvkJaFfLJYJ9dI1PAp251Wbkp9JZ64pTzD9OwRT7m3Y0Ws2N2EVUUL-5yDv6enFqLHYSRzn0zDOaf9NoBFg3s-ZwRpqDXtXqksv5xz7zXSNm7zPoturwelvdpi0bdGuwRv4gY1kTeaGt_TfCn7HdgmYi4n-1zqwL7YhdbwqtxQAPAvY3exd4xyPeJD4DnlXdtNNgW9FnTxNDXmCYxth5A0tan4IVVHbfJShX6PeY7EQDy9wGm2qpabtzsZW5cFw2z9BFXlC1nAupktJVO5yu50nEuejtiDIRAEeBIWTpOynFCnodPZV3lKyQ4EzaE5Z7_z_IB90bYpiGbEONRqs0h5xK5gJ-SJlzvU4Cc98zXUaUvlVN773uEbFmf2yCN92lfA-KV7cfXpYMTD3uwgdc7lhApmO2lzdglpAASGltrXbW758WJY6tMKi56D2iv9lx8WzehHOq7Bv2rv7ksYWQbUr2GqaLv_-0s5YBW7_F4xpEDQv2Qel82Biyl8sZIVC-_cxaMRwMqmX2NuXZDlo_r2tf6h3nIY6N1xvl7rwvO5DbeaDeq9w9yPihhuheXe86Ge8G6CUPz256IVSIH6cvMrRYFRtZGCG3EHNrRYZ7yb4NTf-pob5juGRnyWQ71Z0mQSmiHO17ZoJ_vCqbcOqOsBCRpnvIT_WWffft-Ax-B-wo5H6I3Ifxl-peOyqye4We3_QvTH5kC9N4XRLA_Uff79UP4RTLc9XFsO-Lpo1x_qAK1ryrB7WSRnPF1yMMwM_79NNr2J4qCF3d2_5IpI47XImcHjIjII8JVf5ebyQA6Vl4TlgBlUE_CX4Qx5C5XmoJfDza-u4aXixrCJYMvquPc6MfVjiccmb9r04U4SnRq0fWnZ8wjPKApGK1cugJi-JW-bI3c9E9oXE4Hsrd_BKUu1oTP86cR5RZmsEm3roN1L_80lw2ISW_IcSGDIDqWF4s0Hxk0wwweKXNsvltMQKmnvT4svXbcndhnD-dEhrXYkCPV89GkO8dUC6-ehsX4PknC9Ae9XArkxbgJXxiKyq1mlkM2rQfgtjLgP5iDWjq4fQlXJ8og_BYoJIucv8pyOiaAVV16Lfk11GdegL1yue1601w45DW1zyuFhN-ncAw-d-cPhNaid1xkb1WiTQAfWIREFZzPBO8HGIWHiPCNXzTall3CIgwGTbIOV40B2Cq4vqHHTZPcmvK1MblmFfWp7xDUodJQ5G_IIFVCRxwFs8h1z3WNJzBQafqSs47Vqx583gfCzaIaxS6DbS23IomfNr2ZdsvFEsd3L2Jg-GC9-YOP30QUAWsEkpc6L_HC4R-_yI5-bhN9bkBVCpXRL-CRdCOoBrYISoEdme5x_CG1U5ez2En4AUAkq6Foed6h5OWIoXZ_yxTW_VyYueYkTXK07gloU_kFZpLwDTE89xiY-Q0hjYlvRu9q9KLWshD835iKpv-8sw2yrE2w4= \ No newline at end of file diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..4874e04 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,55 @@ +# Git +.git +.gitignore + +# Node.js +node_modules +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Build-Ausgabe (wird im Container neu gebaut) +dist + +# Test-Dateien +test +*.test.ts +*.spec.ts +coverage + +# IDE und Editor +.idea +.vscode +*.swp +*.swo +*~ + +# OS-spezifische Dateien +.DS_Store +Thumbs.db + +# Dokumentation (nicht im Container benötigt) +*.md +!README.md +docs + +# Beispiel-Workflows (werden als Volume gemountet) +workflows + +# Umgebungsvariablen +.env +.env.* + +# Archive +*.tar.gz +*.zip + +# Logs +*.log +logs + +# Temporäre Dateien +tmp +temp +.tmp +.cache diff --git a/.env.docker b/.env.docker new file mode 100644 index 0000000..47bd35c --- /dev/null +++ b/.env.docker @@ -0,0 +1,62 @@ +# Docker Umgebungsvariablen für n8n mit LibreBooking Node +# Kopiere diese Datei nach .env und passe die Werte an + +# ============================================ +# n8n Basis-Konfiguration +# ============================================ + +# Host und Port +N8N_HOST=localhost +N8N_PORT=5678 +N8N_PROTOCOL=http + +# Webhook URL (für externe Webhooks) +# Für Produktion: https://your-domain.com/ +WEBHOOK_URL=http://localhost:5678/ + +# ============================================ +# Authentifizierung (für Produktion aktivieren!) +# ============================================ + +N8N_BASIC_AUTH_ACTIVE=false +N8N_BASIC_AUTH_USER=admin +N8N_BASIC_AUTH_PASSWORD=changeme_secure_password + +# ============================================ +# Zeitzone +# ============================================ + +TZ=Europe/Berlin + +# ============================================ +# Logging +# ============================================ + +# Mögliche Werte: silent, error, warn, info, debug +N8N_LOG_LEVEL=info + +# ============================================ +# PostgreSQL (optional, für Produktion empfohlen) +# Aktivieren mit: docker-compose --profile with-postgres up -d +# ============================================ + +POSTGRES_USER=n8n +POSTGRES_PASSWORD=n8n_secure_password +POSTGRES_DB=n8n + +# Wenn PostgreSQL aktiv, diese Variable in docker-compose.yml hinzufügen: +# DB_TYPE=postgresdb +# DB_POSTGRESDB_HOST=postgres +# DB_POSTGRESDB_PORT=5432 +# DB_POSTGRESDB_DATABASE=${POSTGRES_DB} +# DB_POSTGRESDB_USER=${POSTGRES_USER} +# DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD} + +# ============================================ +# LibreBooking Konfiguration (Optional) +# Diese können auch direkt in n8n als Credentials angelegt werden +# ============================================ + +# LIBREBOOKING_URL=https://booking.example.com +# LIBREBOOKING_USER=api_user +# LIBREBOOKING_PASSWORD=api_password diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..71bdef4 --- /dev/null +++ b/.env.example @@ -0,0 +1,33 @@ +# n8n LibreBooking Node - Umgebungsvariablen +# +# Kopiere diese Datei nach .env und passe die Werte an: +# cp .env.example .env +# + +# n8n Authentifizierung +# WICHTIG: Ändere diese Werte für Produktion! +N8N_BASIC_AUTH_USER=admin +N8N_BASIC_AUTH_PASSWORD=changeme + +# Webhook-URL (für Produktion anpassen) +# Beispiel: https://n8n.deine-domain.de/ +WEBHOOK_URL=http://localhost:5678/ + +# Zeitzone +TZ=Europe/Berlin + +# Log-Level (debug, info, warn, error) +N8N_LOG_LEVEL=info + +# Optional: Datenbank (Standard: SQLite) +# DB_TYPE=postgresdb +# DB_POSTGRESDB_HOST=localhost +# DB_POSTGRESDB_PORT=5432 +# DB_POSTGRESDB_DATABASE=n8n +# DB_POSTGRESDB_USER=n8n +# DB_POSTGRESDB_PASSWORD=password + +# Optional: Executions +# EXECUTIONS_DATA_SAVE_ON_ERROR=all +# EXECUTIONS_DATA_SAVE_ON_SUCCESS=all +# EXECUTIONS_DATA_SAVE_MANUAL_EXECUTIONS=true diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..80ccd10 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +node_modules/ +dist/ +.env +*.log + +# Generated PDFs +*.pdf diff --git a/.npmignore b/.npmignore new file mode 100644 index 0000000..1a02188 --- /dev/null +++ b/.npmignore @@ -0,0 +1,70 @@ +# Source files (nur dist wird veröffentlicht) +*.ts +!*.d.ts +tsconfig.json + +# Git +.git +.gitignore +.gitattributes + +# Tests +test/ +*.test.ts +*.spec.ts +coverage/ +jest.config.js + +# Docker +Dockerfile +docker-compose.yml +.dockerignore + +# Entwicklung +.eslintrc.js +.eslintrc.json +.prettierrc +.prettierrc.json +.editorconfig +.vscode/ +.idea/ + +# Dokumentation (README bleibt) +CONTRIBUTING.md +CHANGELOG.md +INSTALLATION.md +SCHNELLSTART.md +ARCHIV-INFO.md +docs/ + +# Beispiele +workflows/ +examples/ + +# Skripte +install.sh +install.ps1 + +# OS-spezifisch +.DS_Store +Thumbs.db + +# Archive +*.tar.gz +*.zip + +# Logs und temp +*.log +logs/ +tmp/ +temp/ +.tmp/ +.cache/ + +# Umgebungsvariablen +.env +.env.* +!.env.example + +# node_modules (sowieso ignoriert, aber sicherheitshalber) +node_modules/ diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..5860d70 --- /dev/null +++ b/.npmrc @@ -0,0 +1,16 @@ +# npm Configuration für LibreBooking n8n Node +# Diese Datei konfiguriert npm für dieses Projekt + +# Audit-Warnungen deaktivieren +# Die Vulnerabilities kommen von n8n-workflow Dependencies und sind +# in diesem Kontext nicht kritisch (siehe SECURITY.md) +audit=false + +# Fund-Nachrichten deaktivieren +fund=false + +# Optional: Legacy Peer Dependencies (für ältere n8n Versionen) +# legacy-peer-deps=true + +# Optional: Engine-Strict deaktivieren +# engine-strict=false diff --git a/ARCHIV-INFO.md b/ARCHIV-INFO.md new file mode 100644 index 0000000..f6070b2 --- /dev/null +++ b/ARCHIV-INFO.md @@ -0,0 +1,123 @@ +# LibreBooking n8n Node - Archiv-Information + +Dieses Archiv enthält den vollständigen LibreBooking n8n Node. + +## Archiv entpacken + +### Linux/macOS + +```bash +# .tar.gz Archiv entpacken +tar -xzf n8n-nodes-librebooking.tar.gz +cd n8n-nodes-librebooking +``` + +### Windows + +```powershell +# .zip Archiv entpacken +Expand-Archive -Path n8n-nodes-librebooking.zip -DestinationPath . +cd n8n-nodes-librebooking +``` + +Oder: Rechtsklick → "Alle extrahieren..." + +## Installation + +### Schnellste Methode (Linux/Mac) + +```bash +chmod +x install.sh +./install.sh +n8n start +``` + +### Schnellste Methode (Windows) + +```powershell +Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass +.\install.ps1 +n8n start +``` + +### Mit Docker + +```bash +docker-compose up -d +# Browser öffnen: http://localhost:5678 +``` + +## Enthaltene Dateien + +``` +n8n-nodes-librebooking/ +├── credentials/ # API-Credentials Definition +├── nodes/ # Node-Implementierungen +│ ├── LibreBooking/ # Haupt-Node +│ └── LibreBookingTrigger/ # Trigger-Node +├── custom-nodes/ # Für Docker-Integration (eigenständig) +│ ├── credentials/ +│ ├── nodes/ +│ ├── package.json +│ └── README.md +├── workflows/ # Beispiel-Workflows +├── test/ # Test-Scripts +├── Dockerfile # Docker Image Definition +├── Dockerfile.custom-nodes # Für Custom Nodes Integration +├── docker-compose.yml # Docker Compose Konfiguration +├── docker-compose.override.yml # Override für bestehende Installationen +├── docker-compose.example.yml # Vollständiges Beispiel +├── install.sh # Installations-Skript (Linux/Mac) +├── install.ps1 # Installations-Skript (Windows) +├── install-docker.sh # Docker-Integration Skript +├── nginx.conf # Reverse Proxy Beispiel +├── .env.docker # Docker Umgebungsvariablen +├── package.json # npm Paket-Definition +├── tsconfig.json # TypeScript Konfiguration +├── README.md # Hauptdokumentation +├── INSTALLATION.md # Detaillierte Installationsanleitung +├── DOCKER-INTEGRATION.md # Docker-Integration Anleitung +├── SCHNELLSTART.md # Kurzanleitung +├── SCHNELLSTART-DOCKER.md # Docker Kurzanleitung +├── CHANGELOG.md # Versionshistorie +├── CONTRIBUTING.md # Entwickler-Anleitung +└── LICENSE # MIT Lizenz +``` + +## Docker-Integration (NEU) + +Für bestehende n8n Docker-Installationen: + +```bash +# Automatisch +./install-docker.sh -p /pfad/zu/n8n + +# Oder manuell +cp -r custom-nodes /pfad/zu/n8n/ +cd /pfad/zu/n8n/custom-nodes && npm install && npm run build +docker-compose restart n8n +``` + +📖 Siehe **DOCKER-INTEGRATION.md** für ausführliche Anleitung. + +## Dokumentation + +- **README.md** - Übersicht und Schnellstart +- **INSTALLATION.md** - Detaillierte Installationsanleitung +- **DOCKER-INTEGRATION.md** - Anleitung für bestehende Docker-Installationen +- **SCHNELLSTART.md** - Ultra-Kurzanleitung für Experten +- **SCHNELLSTART-DOCKER.md** - Docker-Kurzanleitung +- **CONTRIBUTING.md** - Anleitung für Entwickler + +## Support + +Bei Fragen oder Problemen: +- GitHub Issues: https://github.com/your-org/n8n-nodes-librebooking/issues + +## Lizenz + +MIT License - siehe LICENSE Datei + +--- + +*LibreBooking n8n Node v1.0.0* diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..e651f0c --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,35 @@ +# Changelog + +Alle wichtigen Änderungen werden hier dokumentiert. + +## [1.1.0] - 2026-01-25 + +### Geändert +- ⭐ **Vereinfachte Installation**: Fokus auf "auf dem Host bauen" +- Aktualisierte Dokumentation mit funktionierender Methode +- Neue npm scripts: `docker:deploy`, `docker:copy`, `docker:restart` + +### Hinzugefügt +- `quick-install.sh` - Ultra-einfache Installation +- `update-node.sh` - Für Updates +- `git-commit.sh` - Git Commit Helper +- `git-cleanup.sh` - Cleanup alter Dateien +- `create-release.sh` - Release-Erstellung +- `GIT-COMMANDS.md` - Git-Befehlsreferenz + +### Behoben +- TypeScript Installation Problem gelöst ("tsc not found") +- Read-only Volume Problem dokumentiert und gelöst +- npm audit Vulnerabilities dokumentiert + +## [1.0.0] - 2026-01-24 + +### Hinzugefügt +- Vollständige LibreBooking API Integration +- 8 Ressourcen: Reservierung, Ressource, Zeitplan, Benutzer, Konto, Gruppe, Zubehör, Attribut +- Trigger Node für neue/geänderte Reservierungen +- Docker Support mit docker-compose.yml +- Automatische Installationsskripte +- Umfangreiche Dokumentation auf Deutsch +- Beispiel-Workflows +- Test-Skripte diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..07bd3e9 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,238 @@ +# Beitragen zum LibreBooking n8n Node + +Vielen Dank für dein Interesse, zu diesem Projekt beizutragen! 🎉 + +## Inhaltsverzeichnis + +- [Code of Conduct](#code-of-conduct) +- [Wie kann ich beitragen?](#wie-kann-ich-beitragen) +- [Entwicklungsumgebung einrichten](#entwicklungsumgebung-einrichten) +- [Code-Richtlinien](#code-richtlinien) +- [Pull Request Prozess](#pull-request-prozess) +- [Bug Reports](#bug-reports) +- [Feature Requests](#feature-requests) + +## Code of Conduct + +Dieses Projekt folgt einem [Code of Conduct](CODE_OF_CONDUCT.md). Mit deiner Teilnahme erklärst du dich einverstanden, diesen einzuhalten. + +## Wie kann ich beitragen? + +### Bugs melden + +- Überprüfe zunächst, ob der Bug bereits gemeldet wurde +- Erstelle ein Issue mit einer klaren Beschreibung +- Füge Schritte zur Reproduktion hinzu +- Gib deine Umgebung an (OS, Node.js Version, n8n Version) + +### Features vorschlagen + +- Erstelle ein Issue mit dem Label "enhancement" +- Beschreibe den Use Case +- Erkläre, warum diese Funktion nützlich wäre + +### Code beitragen + +1. Forke das Repository +2. Erstelle einen Feature-Branch +3. Implementiere deine Änderungen +4. Schreibe Tests (falls möglich) +5. Erstelle einen Pull Request + +## Entwicklungsumgebung einrichten + +### Voraussetzungen + +- Node.js 18.x oder höher +- npm 8.x oder höher +- n8n (global installiert) +- Git + +### Setup + +```bash +# Repository klonen +git clone https://github.com/DEIN-REPO/n8n-nodes-librebooking.git +cd n8n-nodes-librebooking + +# Dependencies installieren +npm install + +# Build ausführen +npm run build + +# Für Entwicklung: Watch-Modus +npm run dev +``` + +### Lokales Testen + +```bash +# Node mit n8n verlinken +npm link + +# In n8n-Verzeichnis verlinken +cd $(npm root -g)/n8n +npm link n8n-nodes-librebooking + +# n8n starten +n8n start +``` + +### Mit Docker testen + +```bash +docker-compose up --build +``` + +## Code-Richtlinien + +### TypeScript + +- Verwende strenge Typisierung (`strict: true`) +- Vermeide `any` wo möglich +- Dokumentiere komplexe Funktionen mit JSDoc + +### Formatierung + +```bash +# Code formatieren +npm run format + +# Linting prüfen +npm run lint + +# Linting mit automatischer Korrektur +npm run lintfix +``` + +### Commit Messages + +Wir folgen [Conventional Commits](https://www.conventionalcommits.org/): + +``` +feat: Neue Funktion hinzugefügt +fix: Bug behoben +docs: Dokumentation aktualisiert +style: Formatierung geändert (kein Code) +refactor: Code umstrukturiert +test: Tests hinzugefügt/geändert +chore: Build-Prozess/Tools geändert +``` + +Beispiele: +``` +feat(reservation): Check-In Operation hinzugefügt +fix(auth): Session-Token wird jetzt korrekt erneuert +docs: Installationsanleitung aktualisiert +``` + +### Projektstruktur + +``` +n8n-nodes-librebooking/ +├── credentials/ # Credential-Definitionen +│ └── LibreBookingApi.credentials.ts +├── nodes/ # Node-Definitionen +│ ├── LibreBooking/ +│ │ ├── LibreBooking.node.ts +│ │ └── librebooking.svg +│ └── LibreBookingTrigger/ +│ ├── LibreBookingTrigger.node.ts +│ └── librebooking.svg +├── test/ # Tests +├── workflows/ # Beispiel-Workflows +├── dist/ # Kompilierte Dateien (generiert) +└── package.json +``` + +## Pull Request Prozess + +1. **Branch erstellen:** + ```bash + git checkout -b feature/meine-funktion + ``` + +2. **Änderungen implementieren:** + - Halte dich an die Code-Richtlinien + - Aktualisiere die Dokumentation + - Füge Tests hinzu (falls sinnvoll) + +3. **Testen:** + ```bash + npm run lint + npm run build + # Manuell in n8n testen + ``` + +4. **Commit und Push:** + ```bash + git add . + git commit -m "feat: Meine neue Funktion" + git push origin feature/meine-funktion + ``` + +5. **Pull Request erstellen:** + - Beschreibe deine Änderungen + - Referenziere relevante Issues + - Warte auf Review + +### PR Checkliste + +- [ ] Code folgt den Richtlinien +- [ ] Linting/Formatting bestanden +- [ ] Build erfolgreich +- [ ] Dokumentation aktualisiert +- [ ] CHANGELOG.md aktualisiert +- [ ] Keine Secrets/Credentials im Code + +## Bug Reports + +### Template + +```markdown +## Beschreibung +[Klare Beschreibung des Bugs] + +## Schritte zur Reproduktion +1. ... +2. ... +3. ... + +## Erwartetes Verhalten +[Was sollte passieren?] + +## Tatsächliches Verhalten +[Was passiert stattdessen?] + +## Umgebung +- OS: [z.B. Ubuntu 22.04] +- Node.js: [z.B. 20.10.0] +- n8n: [z.B. 1.20.0] +- LibreBooking: [z.B. 2.8.5] + +## Logs/Screenshots +[Falls vorhanden] +``` + +## Feature Requests + +### Template + +```markdown +## Beschreibung +[Beschreibe die gewünschte Funktion] + +## Use Case +[Warum wird diese Funktion benötigt?] + +## Vorgeschlagene Lösung +[Falls du eine Idee hast] + +## Alternativen +[Andere Möglichkeiten, die du in Betracht gezogen hast] +``` + +--- + +Vielen Dank für deinen Beitrag! 🙏 diff --git a/DOCKER-INTEGRATION.md b/DOCKER-INTEGRATION.md new file mode 100644 index 0000000..0bb0681 --- /dev/null +++ b/DOCKER-INTEGRATION.md @@ -0,0 +1,92 @@ +# Docker Integration + +## Empfohlene Methode: Auf dem Host bauen + +Die zuverlässigste Methode für Docker-Installationen. + +### Schritt-für-Schritt + +```bash +# 1. Auf dem Host +cd /pfad/zu/n8n-nodes-librebooking +npm install +npm run build + +# 2. In Container kopieren +docker cp dist n8n:/home/node/.n8n/custom/n8n-nodes-librebooking/ +docker cp package.json n8n:/home/node/.n8n/custom/n8n-nodes-librebooking/ +docker cp node_modules n8n:/home/node/.n8n/custom/n8n-nodes-librebooking/ + +# 3. Neustarten +docker restart n8n +``` + +### Mit Skript + +```bash +./quick-install.sh n8n +``` + +### Mit npm + +```bash +npm run docker:deploy +``` + +--- + +## docker-compose.yml Beispiel + +```yaml +version: '3.8' + +services: + n8n: + image: n8nio/n8n:latest + container_name: n8n + restart: unless-stopped + ports: + - "5678:5678" + environment: + - N8N_CUSTOM_EXTENSIONS=/home/node/.n8n/custom + - N8N_COMMUNITY_NODES_ENABLED=true + - TZ=Europe/Berlin + volumes: + - n8n_data:/home/node/.n8n + # Optional: Custom Nodes Verzeichnis + # - ./custom-nodes:/home/node/.n8n/custom + +volumes: + n8n_data: +``` + +--- + +## Für Updates + +```bash +./update-node.sh n8n + +# Oder +npm run docker:deploy +``` + +--- + +## Verifikation + +```bash +# Dateien prüfen +docker exec n8n ls -la /home/node/.n8n/custom/n8n-nodes-librebooking/ + +# Sollte zeigen: +# dist/ +# package.json +# node_modules/ +``` + +--- + +## Probleme? + +Siehe [TROUBLESHOOTING.md](TROUBLESHOOTING.md) diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..fa2c457 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,41 @@ +# Dockerfile für n8n mit LibreBooking Node +# Basiert auf dem offiziellen n8n Docker Image + +FROM n8nio/n8n:latest + +# Als Root-Benutzer für Installation +USER root + +# Arbeitsverzeichnis für den Custom Node +WORKDIR /home/node/.n8n/custom + +# Kopiere Node-Dateien +COPY package*.json ./ +COPY tsconfig.json ./ +COPY index.ts ./ +COPY credentials/ ./credentials/ +COPY nodes/ ./nodes/ + +# Installiere Dependencies und baue den Node +RUN npm install && \ + npm run build && \ + chown -R node:node /home/node/.n8n + +# Zurück zum node-Benutzer +USER node + +# Arbeitsverzeichnis auf n8n Standard setzen +WORKDIR /home/node + +# n8n wird automatisch den Custom Node laden +ENV N8N_CUSTOM_EXTENSIONS="/home/node/.n8n/custom" + +# Healthcheck +HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ + CMD wget -q --spider http://localhost:5678/healthz || exit 1 + +# Standard n8n Port +EXPOSE 5678 + +# Startbefehl +CMD ["n8n", "start"] diff --git a/Dockerfile.custom-nodes b/Dockerfile.custom-nodes new file mode 100644 index 0000000..1463d62 --- /dev/null +++ b/Dockerfile.custom-nodes @@ -0,0 +1,48 @@ +# Dockerfile für Custom Nodes Integration +# Verwendet das offizielle n8n Image und fügt den LibreBooking Node hinzu +# +# Build: docker build -f Dockerfile.custom-nodes -t n8n-librebooking . +# Run: docker run -p 5678:5678 n8n-librebooking + +ARG N8N_VERSION=latest +FROM n8nio/n8n:${N8N_VERSION} + +# Wechsle zu root für Installationen +USER root + +# Erstelle Custom Nodes Verzeichnis +RUN mkdir -p /home/node/.n8n/custom/n8n-nodes-librebooking && \ + chown -R node:node /home/node/.n8n/custom + +# Arbeitsverzeichnis setzen +WORKDIR /home/node/.n8n/custom/n8n-nodes-librebooking + +# Kopiere Custom Node Dateien +COPY --chown=node:node custom-nodes/package.json . +COPY --chown=node:node custom-nodes/tsconfig.json . +COPY --chown=node:node custom-nodes/index.ts . +COPY --chown=node:node custom-nodes/credentials/ ./credentials/ +COPY --chown=node:node custom-nodes/nodes/ ./nodes/ + +# Installiere Dependencies und baue den Node +RUN npm install && npm run build + +# Wechsle zurück zum node User +USER node + +# Arbeitsverzeichnis für n8n setzen +WORKDIR /home/node + +# Umgebungsvariablen +ENV N8N_CUSTOM_EXTENSIONS=/home/node/.n8n/custom \ + N8N_COMMUNITY_NODES_ENABLED=true + +# n8n Port +EXPOSE 5678 + +# Healthcheck +HEALTHCHECK --interval=30s --timeout=10s --start-period=30s --retries=3 \ + CMD wget -qO- http://localhost:5678/healthz || exit 1 + +# Startbefehl +CMD ["n8n", "start"] diff --git a/GIT-COMMANDS.md b/GIT-COMMANDS.md new file mode 100644 index 0000000..d5599be --- /dev/null +++ b/GIT-COMMANDS.md @@ -0,0 +1,65 @@ +# Git-Befehle für LibreBooking n8n Node + +## Schnellbefehle + +```bash +# Alle Änderungen committen +git add . +git commit -m "fix: Vereinfachte Installation" + +# Push +git push origin main +``` + +## Release erstellen + +```bash +# 1. Version in package.json anpassen (z.B. 1.1.0) + +# 2. Alte Archive löschen +rm ../n8n-nodes-librebooking*.tar.gz +rm ../n8n-nodes-librebooking*.zip + +# 3. Neue Archive erstellen +git archive --format=tar.gz --prefix=n8n-nodes-librebooking/ --output=../n8n-nodes-librebooking-v1.1.0.tar.gz HEAD +git archive --format=zip --prefix=n8n-nodes-librebooking/ --output=../n8n-nodes-librebooking-v1.1.0.zip HEAD + +# 4. Tag erstellen +git tag -a v1.1.0 -m "Version 1.1.0 - Vereinfachte Installation" + +# 5. Push +git push origin main +git push origin v1.1.0 +``` + +## Mit Skripten + +```bash +# Commit +./git-commit.sh "fix: Beschreibung der Änderung" + +# Cleanup +./git-cleanup.sh + +# Release +./create-release.sh +``` + +## Nützliche Befehle + +```bash +# Status anzeigen +git status + +# Änderungen anzeigen +git diff + +# Log anzeigen +git log --oneline -10 + +# Tags anzeigen +git tag -l + +# Remote anzeigen +git remote -v +``` diff --git a/INSTALLATION.md b/INSTALLATION.md new file mode 100644 index 0000000..e225a3c --- /dev/null +++ b/INSTALLATION.md @@ -0,0 +1,101 @@ +# Installation + +## Methode 1: Auf dem Host bauen (EMPFOHLEN) ⭐ + +Die zuverlässigste Methode für Docker-Installationen. + +### Voraussetzungen + +- Node.js 18+ +- npm +- Docker + +### Installation + +```bash +# 1. Klonen +git clone https://github.com/your-org/n8n-nodes-librebooking.git +cd n8n-nodes-librebooking + +# 2. Dependencies installieren +npm install + +# 3. Bauen +npm run build + +# 4. In Container kopieren +docker cp dist n8n:/home/node/.n8n/custom/n8n-nodes-librebooking/ +docker cp package.json n8n:/home/node/.n8n/custom/n8n-nodes-librebooking/ +docker cp node_modules n8n:/home/node/.n8n/custom/n8n-nodes-librebooking/ + +# 5. Container neustarten +docker restart n8n +``` + +### Mit Skript + +```bash +./quick-install.sh n8n +``` + +### Mit npm scripts + +```bash +npm install +npm run docker:deploy +``` + +--- + +## Methode 2: Docker mit vorgebautem dist/ + +Für Read-only Volumes. + +```bash +# 1. Bauen +npm install +npm run build + +# 2. Kopieren +cp -r dist package.json node_modules /pfad/zu/custom-nodes/n8n-nodes-librebooking/ + +# 3. docker-compose.yml +volumes: + - ./custom-nodes:/home/node/.n8n/custom:ro # Read-only möglich! +``` + +--- + +## Methode 3: Native Installation (ohne Docker) + +```bash +# 1. Installieren +npm install +npm run build +npm link + +# 2. n8n starten +n8n start +``` + +--- + +## Verifikation + +Nach der Installation: + +1. Öffne n8n: http://localhost:5678 +2. Erstelle neuen Workflow +3. Suche nach "LibreBooking" +4. Wenn der Node erscheint → ✅ Installation erfolgreich + +## Deinstallation + +```bash +# Docker +docker exec n8n rm -rf /home/node/.n8n/custom/n8n-nodes-librebooking +docker restart n8n + +# Native +npm unlink -g n8n-nodes-librebooking +``` diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..840fafe --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 LibreBooking n8n Node Contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/MANUELLE-INSTALLATION-CONTAINER.md b/MANUELLE-INSTALLATION-CONTAINER.md new file mode 100644 index 0000000..559b94e --- /dev/null +++ b/MANUELLE-INSTALLATION-CONTAINER.md @@ -0,0 +1,328 @@ +# Manuelle Installation im Docker Container + +Diese Anleitung beschreibt, wie Sie den LibreBooking Node manuell im Docker Container installieren, wenn die Dateien bereits kopiert wurden, aber der Node nicht in n8n erscheint. + +--- + +## Situation + +Sie haben die Dateien in den Container kopiert (z.B. nach `/opt/n8n/custom-nodes` oder `/home/node/.n8n/custom/n8n-nodes-librebooking`), aber: + +- Der LibreBooking Node erscheint nicht in der n8n Node-Suche +- Die TypeScript-Dateien wurden nicht kompiliert +- Das `dist/` Verzeichnis fehlt oder ist leer + +--- + +## Diagnose + +### Schnell-Check mit einem Befehl + +```bash +# Prüft Dateien und Status im Container +docker exec n8n sh -c "ls -la /home/node/.n8n/custom/*/dist/ 2>/dev/null || echo 'dist/ nicht gefunden'" +``` + +### Ausführlicher Check mit Skript + +```bash +# Check-Skript in Container kopieren und ausführen +docker cp check-installation.sh n8n:/tmp/ +docker exec n8n sh /tmp/check-installation.sh +``` + +### Manuell im Container prüfen + +```bash +# In den Container einloggen +docker exec -it n8n sh + +# Prüfen, was vorhanden ist +ls -la /home/node/.n8n/custom/ +ls -la /home/node/.n8n/custom/n8n-nodes-librebooking/ + +# Umgebungsvariablen prüfen +env | grep N8N + +# Container verlassen +exit +``` + +--- + +## Lösung 1: Automatisch mit Skript (empfohlen) + +Das einfachste ist das All-in-One-Skript: + +```bash +# Auf dem Host ausführen +./fix-node-installation.sh +``` + +Oder mit spezifischem Container-Namen: + +```bash +./fix-node-installation.sh -c mein-n8n-container +``` + +### Alternative: Nur das Installations-Skript + +```bash +# Skript in Container kopieren +docker cp install-in-container.sh n8n:/tmp/ + +# Skript im Container ausführen +docker exec -it n8n sh /tmp/install-in-container.sh + +# Container neustarten +docker restart n8n +``` + +--- + +## Lösung 2: Manuelle Schritte im Container + +### Schritt 1: In den Container einloggen + +```bash +docker exec -it n8n sh +``` + +### Schritt 2: Zum Custom-Node-Verzeichnis wechseln + +```bash +# Standard-Pfad (offizielles n8n Image) +cd /home/node/.n8n/custom/n8n-nodes-librebooking + +# Oder falls an anderem Ort: +cd /opt/n8n/custom-nodes +# oder +cd /data/custom-nodes +``` + +### Schritt 3: Prüfen ob Dateien vorhanden sind + +```bash +ls -la +# Sollte zeigen: package.json, tsconfig.json, nodes/, credentials/ +``` + +### Schritt 4: Dependencies installieren + +```bash +npm install +``` + +Erwartete Ausgabe: +``` +added 50 packages in 10s +``` + +### Schritt 5: Node kompilieren + +```bash +npm run build +``` + +Erwartete Ausgabe: +``` +> n8n-nodes-librebooking@1.0.0 build +> tsc && npm run copy:icons +``` + +### Schritt 6: Prüfen ob Build erfolgreich war + +```bash +ls -la dist/ +ls -la dist/nodes/LibreBooking/ +``` + +Sollte zeigen: +- `dist/nodes/LibreBooking/LibreBooking.node.js` +- `dist/nodes/LibreBookingTrigger/LibreBookingTrigger.node.js` +- `dist/credentials/LibreBookingApi.credentials.js` + +### Schritt 7: Container verlassen und neustarten + +```bash +# Container verlassen +exit + +# Container neustarten (auf dem Host) +docker restart n8n +``` + +--- + +## Lösung 3: Direkt mit docker exec (Ein-Befehl-Lösung) + +Wenn Sie schnell zum Ziel kommen wollen: + +```bash +# Alles in einem Befehl +docker exec n8n sh -c "cd /home/node/.n8n/custom/n8n-nodes-librebooking && npm install && npm run build" + +# Container neustarten +docker restart n8n +``` + +Für anderen Pfad: + +```bash +docker exec n8n sh -c "cd /opt/n8n/custom-nodes && npm install && npm run build" +docker restart n8n +``` + +--- + +## Verifizierung + +### 1. Logs prüfen + +```bash +# Nach LibreBooking in den Logs suchen +docker logs n8n 2>&1 | grep -i "librebooking\|custom\|node" +``` + +### 2. In n8n prüfen + +1. Öffnen Sie n8n im Browser (z.B. `http://localhost:5678`) +2. Erstellen Sie einen neuen Workflow oder öffnen Sie einen bestehenden +3. Klicken Sie auf `+` um einen neuen Node hinzuzufügen +4. Suchen Sie nach "LibreBooking" +5. Es sollten zwei Nodes erscheinen: + - **LibreBooking** - Hauptnode für alle Operationen + - **LibreBooking Trigger** - Trigger für Reservierungen + +### 3. Node-Dateien im Container prüfen + +```bash +# Prüfe ob .node.js Dateien existieren +docker exec n8n find /home/node/.n8n/custom -name "*.node.js" 2>/dev/null +``` + +--- + +## Troubleshooting + +### Problem: npm nicht gefunden + +**Symptom:** +``` +sh: npm: not found +``` + +**Lösung:** +Das verwendete Docker-Image enthält kein npm. Verwenden Sie ein Image mit Node.js: + +```bash +# Prüfen Sie das Image +docker inspect n8n --format='{{.Config.Image}}' + +# Das offizielle n8n Image (n8nio/n8n) enthält npm +# Falls Sie ein minimales Image verwenden, wechseln Sie zu n8nio/n8n +``` + +### Problem: Permission denied + +**Symptom:** +``` +EACCES: permission denied +npm ERR! could not create a lockfile +``` + +**Lösung:** +n8n läuft als User `node` (UID 1000). Setzen Sie die Berechtigungen: + +```bash +# Auf dem Host (vor dem Kopieren) +sudo chown -R 1000:1000 custom-nodes/ + +# Oder im Container als root +docker exec -u root n8n chown -R node:node /home/node/.n8n/custom/ +``` + +### Problem: Build schlägt fehl + +**Symptom:** +``` +error TS2307: Cannot find module 'n8n-workflow' +``` + +**Lösung:** +```bash +# Im Container +cd /home/node/.n8n/custom/n8n-nodes-librebooking +rm -rf node_modules package-lock.json +npm install +npm run build +``` + +### Problem: Node erscheint nach Neustart immer noch nicht + +**Mögliche Ursachen:** + +1. **Falscher Pfad**: N8N_CUSTOM_EXTENSIONS zeigt nicht auf das richtige Verzeichnis + ```bash + docker exec n8n env | grep N8N_CUSTOM + # Sollte zeigen: N8N_CUSTOM_EXTENSIONS=/home/node/.n8n/custom + ``` + +2. **package.json n8n-Sektion fehlt**: Die `n8n` Konfiguration in package.json muss korrekt sein + ```bash + docker exec n8n cat /home/node/.n8n/custom/n8n-nodes-librebooking/package.json | grep -A10 '"n8n"' + ``` + +3. **Container-Cache**: Container komplett neu erstellen + ```bash + docker compose down + docker compose up -d + ``` + +4. **n8n Version zu alt**: Der Node benötigt n8n >= 1.0.0 + ```bash + docker exec n8n n8n --version + ``` + +### Problem: Fehler bei npm install (Netzwerk) + +**Symptom:** +``` +npm ERR! network request failed +``` + +**Lösung:** +```bash +# DNS prüfen +docker exec n8n cat /etc/resolv.conf + +# npm Registry prüfen +docker exec n8n npm config get registry + +# Ggf. Registry setzen +docker exec n8n npm config set registry https://registry.npmjs.org/ +``` + +--- + +## Schnellreferenz + +| Aktion | Befehl | +|--------|--------| +| Status prüfen | `docker exec n8n sh /tmp/check-installation.sh` | +| Installieren | `docker exec n8n sh -c "cd /home/node/.n8n/custom/n8n-nodes-librebooking && npm install && npm run build"` | +| Neustarten | `docker restart n8n` | +| Logs prüfen | `docker logs n8n 2>&1 \| grep -i libre` | +| Im Container | `docker exec -it n8n sh` | + +--- + +## Weiterführende Dokumentation + +- [DOCKER-INTEGRATION.md](DOCKER-INTEGRATION.md) - Vollständige Docker-Anleitung +- [TROUBLESHOOTING.md](TROUBLESHOOTING.md) - Alle Troubleshooting-Themen +- [SCHNELLSTART-DOCKER.md](SCHNELLSTART-DOCKER.md) - Docker-Schnellstart + +--- + +*Letzte Aktualisierung: Januar 2026* diff --git a/README.md b/README.md new file mode 100644 index 0000000..ef4abac --- /dev/null +++ b/README.md @@ -0,0 +1,102 @@ +# LibreBooking n8n Node + +Integration von LibreBooking in n8n für automatisierte Reservierungs- und Ressourcenverwaltung. + +## ⚡ Schnellstart (EMPFOHLEN) + +**Die einfachste Methode: Auf dem Host bauen, in Docker kopieren** + +```bash +# 1. Repository klonen +git clone https://github.com/your-org/n8n-nodes-librebooking.git +cd n8n-nodes-librebooking + +# 2. Bauen und installieren +./quick-install.sh n8n + +# Fertig! ✔ +``` + +**Oder manuell:** + +```bash +# Dependencies & Build +npm install +npm run build + +# In Container kopieren +docker cp dist n8n:/home/node/.n8n/custom/n8n-nodes-librebooking/ +docker cp package.json n8n:/home/node/.n8n/custom/n8n-nodes-librebooking/ +docker cp node_modules n8n:/home/node/.n8n/custom/n8n-nodes-librebooking/ + +# Container neustarten +docker restart n8n +``` + +## 🛠️ npm Scripts + +```bash +npm run build # Baut den Node +npm run docker:deploy # Baut, kopiert & startet Container neu +npm run docker:copy # Kopiert in Container +npm run docker:restart # Startet Container neu +``` + +## 📚 Dokumentation + +- **[INSTALLATION.md](INSTALLATION.md)** - Alle Installationsmethoden +- **[SCHNELLSTART.md](SCHNELLSTART.md)** - Ultra-kurze Anleitung +- **[TROUBLESHOOTING.md](TROUBLESHOOTING.md)** - Problemlösung +- **[DOCKER-INTEGRATION.md](DOCKER-INTEGRATION.md)** - Docker-spezifische Anleitung + +## 🔑 Credentials einrichten + +1. Öffne n8n: http://localhost:5678 +2. Gehe zu: **Einstellungen** → **Credentials** → **Add Credential** +3. Suche: **LibreBooking API** +4. Eingabe: + - **URL**: `https://deine-librebooking-url.de` + - **Benutzername**: Admin-Benutzer + - **Passwort**: Passwort + +## 🌟 Features + +### LibreBooking Node +- Reservierungen erstellen, bearbeiten, löschen +- Ressourcen und Verfügbarkeit verwalten +- Benutzer und Gruppen administrieren +- Zeitpläne und Zubehör konfigurieren + +### LibreBooking Trigger Node +- Neue Reservierungen überwachen +- Geänderte Reservierungen erfassen +- Filter nach Ressource/Zeitplan/Benutzer + +## 🔄 Updates + +```bash +# Nach Änderungen oder git pull +./update-node.sh n8n + +# Oder mit npm +npm run docker:deploy +``` + +## ❓ Problemlösung + +### tsc not found? +→ **Lösung**: Auf dem Host bauen (siehe Schnellstart) + +### Read-only Volume? +→ **Lösung**: dist/ in Container kopieren statt npm im Container + +### npm audit Vulnerabilities? +→ Sind non-critical Dependencies von n8n-workflow. Siehe [SECURITY.md](SECURITY.md) + +## 📄 Lizenz + +MIT - Siehe [LICENSE](LICENSE) + +## 🤝 Beitragen + +Beiträge sind willkommen! Siehe [CONTRIBUTING.md](CONTRIBUTING.md) diff --git a/SCHNELLSTART-DOCKER.md b/SCHNELLSTART-DOCKER.md new file mode 100644 index 0000000..7092986 --- /dev/null +++ b/SCHNELLSTART-DOCKER.md @@ -0,0 +1,147 @@ +# Docker Schnellstart - LibreBooking n8n Node + +Schnelle Befehle für erfahrene Docker-Benutzer. + +--- + +## Neue Installation + +### Option A: Mit docker-compose (empfohlen) + +```bash +# 1. Starten +cd /pfad/zu/librebooking_n8n_node +docker compose up -d + +# 2. Browser öffnen +open http://localhost:5678 +``` + +### Option B: In bestehende n8n Installation integrieren + +```bash +# 1. Custom Nodes kopieren +cp -r custom-nodes /pfad/zu/n8n/ + +# 2. Bauen +cd /pfad/zu/n8n/custom-nodes +npm install && npm run build + +# 3. docker-compose.override.yml erstellen +cat > docker-compose.override.yml << 'EOF' +version: '3.8' +services: + n8n: + volumes: + - ./custom-nodes:/home/node/.n8n/custom/n8n-nodes-librebooking:ro + environment: + - N8N_CUSTOM_EXTENSIONS=/home/node/.n8n/custom + - N8N_COMMUNITY_NODES_ENABLED=true +EOF + +# 4. Neustarten +docker compose restart n8n +``` + +--- + +## Node im Container bauen/reparieren + +### Quick-Fix (Ein Befehl) + +```bash +docker exec n8n sh -c "cd /home/node/.n8n/custom/n8n-nodes-librebooking && npm install && npm run build" && docker restart n8n +``` + +### Mit Auto-Fix Skript + +```bash +./fix-node-installation.sh +``` + +### Status prüfen + +```bash +# Check-Skript ausführen +docker cp check-installation.sh n8n:/tmp/ +docker exec n8n sh /tmp/check-installation.sh +``` + +--- + +## Häufige Befehle + +| Aktion | Befehl | +|--------|--------| +| Container starten | `docker compose up -d` | +| Container stoppen | `docker compose down` | +| Container neustarten | `docker restart n8n` | +| Logs anzeigen | `docker logs -f n8n` | +| In Container einloggen | `docker exec -it n8n sh` | +| Node bauen | `docker exec n8n sh -c "cd /home/node/.n8n/custom/n8n-nodes-librebooking && npm install && npm run build"` | +| Status prüfen | `docker exec n8n sh /tmp/check-installation.sh` | + +--- + +## Pfade im Container + +| Beschreibung | Pfad | +|--------------|------| +| n8n Home | `/home/node/.n8n` | +| Custom Nodes | `/home/node/.n8n/custom` | +| LibreBooking Node | `/home/node/.n8n/custom/n8n-nodes-librebooking` | +| Daten-Verzeichnis | `/home/node/.n8n` | + +--- + +## Umgebungsvariablen + +```yaml +environment: + - N8N_CUSTOM_EXTENSIONS=/home/node/.n8n/custom + - N8N_COMMUNITY_NODES_ENABLED=true + - N8N_LOG_LEVEL=info +``` + +--- + +## Troubleshooting + +### Node erscheint nicht + +```bash +# 1. Build prüfen +docker exec n8n ls /home/node/.n8n/custom/n8n-nodes-librebooking/dist/ + +# 2. Falls leer - neu bauen +docker exec n8n sh -c "cd /home/node/.n8n/custom/n8n-nodes-librebooking && npm install && npm run build" + +# 3. Neustarten +docker restart n8n +``` + +### Permission denied + +```bash +sudo chown -R 1000:1000 custom-nodes/ +``` + +### docker-compose: distutils Fehler (Python 3.12) + +```bash +# Lösung: Docker Compose v2 verwenden +sudo apt-get install docker-compose-plugin +docker compose up -d # Beachte: ohne Bindestrich +``` + +--- + +## Detaillierte Anleitungen + +- [DOCKER-INTEGRATION.md](DOCKER-INTEGRATION.md) - Vollständige Docker-Dokumentation +- [MANUELLE-INSTALLATION-CONTAINER.md](MANUELLE-INSTALLATION-CONTAINER.md) - Manuelle Installation +- [TROUBLESHOOTING.md](TROUBLESHOOTING.md) - Alle Probleme und Lösungen + +--- + +*Schnellstart-Guide für Docker-Profis* diff --git a/SCHNELLSTART.md b/SCHNELLSTART.md new file mode 100644 index 0000000..28b3f17 --- /dev/null +++ b/SCHNELLSTART.md @@ -0,0 +1,40 @@ +# Schnellstart + +## ⚡ Installation in 4 Zeilen + +```bash +cd /pfad/zu/n8n-nodes-librebooking +npm install +npm run build +./quick-install.sh n8n +``` + +**Oder mit npm scripts:** + +```bash +npm install +npm run docker:deploy +``` + +## 🔑 Credentials + +n8n → Einstellungen → Credentials → Add → "LibreBooking API" + +| Feld | Wert | +|------|------| +| URL | `https://deine-librebooking-url.de` | +| Benutzername | Admin-Benutzer | +| Passwort | Passwort | + +## 🔄 Updates + +```bash +git pull +./update-node.sh n8n +``` + +## ❓ Probleme? + +- **tsc not found**: Auf dem Host bauen (npm install && npm run build) +- **Read-only Volume**: `docker cp` verwenden +- Mehr: [TROUBLESHOOTING.md](TROUBLESHOOTING.md) diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..8b1cbbd --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,234 @@ +# Sicherheitshinweise - LibreBooking n8n Node + +Dieses Dokument erklärt die npm audit Vulnerabilities und wie man damit umgeht. + +## Inhaltsverzeichnis + +- [Übersicht der Vulnerabilities](#übersicht-der-vulnerabilities) +- [Warum diese Vulnerabilities existieren](#warum-diese-vulnerabilities-existieren) +- [Risikoeinschätzung](#risikoeinschätzung) +- [Empfehlungen](#empfehlungen) +- [Wie man sie beheben kann](#wie-man-sie-beheben-kann) +- [Produktionsumgebungen](#produktionsumgebungen) + +--- + +## Übersicht der Vulnerabilities + +Beim Ausführen von `npm audit` werden möglicherweise folgende Vulnerabilities angezeigt: + +### Critical: form-data + +``` +form-data <4.0.1 +Severity: critical +Prototype Pollution in form-data +https://github.com/advisories/GHSA-xxx +``` + +### Moderate: lodash + +``` +lodash <4.17.21 +Severity: moderate +Prototype Pollution in lodash +https://github.com/advisories/GHSA-xxx +``` + +--- + +## Warum diese Vulnerabilities existieren + +Diese Vulnerabilities kommen **nicht direkt aus diesem Projekt**, sondern sind **transitive Dependencies** von `n8n-workflow` und `n8n-core`. + +### Dependency-Kette: + +``` +n8n-nodes-librebooking + └── n8n-workflow (devDependency für Typen) + └── axios + └── form-data (vulnerable version) + └── lodash (vulnerable version) +``` + +### Wichtig zu verstehen: + +1. **n8n-workflow** ist nur als `devDependency` und `peerDependency` deklariert +2. In Produktion verwendet n8n seine **eigene** n8n-workflow Version +3. Die vulnerable Dependencies werden nur beim **Entwickeln** installiert +4. Diese Package werden **nicht** in das finale dist/ Verzeichnis gebündelt + +--- + +## Risikoeinschätzung + +### Für dieses Projekt: **NIEDRIGES RISIKO** + +| Aspekt | Risiko | Begründung | +|--------|--------|------------| +| Entwicklung | Niedrig | form-data/lodash werden nicht direkt verwendet | +| Produktion | Sehr niedrig | Keine transtiven Dependencies werden deployed | +| n8n Runtime | Abhängig von n8n | n8n selbst muss die Vulnerabilities beheben | + +### Warum niedriges Risiko: + +1. **form-data Vulnerability:** + - Betrifft nur das Parsen von multipart/form-data + - Dieser Node verwendet keine File-Uploads über form-data + - Die LibreBooking API verwendet JSON für alle Requests + +2. **lodash Vulnerability:** + - Betrifft `_.set()` und `_.setWith()` Funktionen + - Dieser Node verwendet keine direkten lodash Aufrufe + - Die Vulnerability erfordert Angreifer-kontrollierten Input + +--- + +## Empfehlungen + +### Für Entwickler: + +1. **Warnungen ignorieren** (wenn nicht kritisch): + ```bash + npm install --ignore-scripts + ``` + +2. **Audit bei npm install deaktivieren:** + ```bash + # Einmalig: + npm install --no-audit + + # Permanent via .npmrc: + echo "audit=false" >> .npmrc + ``` + +3. **Overrides verwenden** (in package.json): + ```json + "overrides": { + "form-data": "^4.0.1", + "lodash": "^4.17.21" + } + ``` + +### Für Produktionsumgebungen: + +1. **n8n aktuell halten:** Die n8n-Entwickler aktualisieren regelmäßig ihre Dependencies +2. **Nur vertrauenswürdige Inputs:** Keine ungeprüften Daten an die Nodes übergeben +3. **Network Isolation:** n8n Container im isolierten Netzwerk betreiben + +--- + +## Wie man sie beheben kann + +### Option 1: Overrides in package.json (empfohlen) + +Die package.json enthält bereits Overrides für bekannte Vulnerabilities: + +```json +"overrides": { + "form-data": "^4.0.1", + "lodash": "^4.17.21" +} +``` + +### Option 2: npm audit fix (begrenzt) + +```bash +# Automatische Fixes (nur kompatible Updates) +npm audit fix + +# Force Fixes (VORSICHT: kann Breaking Changes einführen) +npm audit fix --force +``` + +**Hinweis:** `npm audit fix` kann transitive Dependencies nur begrenzt beheben. + +### Option 3: Update-Skript verwenden + +```bash +./update-dependencies.sh +``` + +Das Skript: +- Führt `npm audit fix` aus +- Aktualisiert alle Dependencies +- Testet ob alles funktioniert +- Gibt einen Report + +### Option 4: Resolutions (für yarn/pnpm) + +Wenn Sie yarn statt npm verwenden: + +```json +"resolutions": { + "form-data": "^4.0.1", + "lodash": "^4.17.21" +} +``` + +--- + +## Produktionsumgebungen + +### Best Practices: + +1. **Docker Image aktuell halten:** + ```bash + docker pull n8nio/n8n:latest + ``` + +2. **Regelmäßige Updates:** + ```bash + docker compose pull + docker compose up -d + ``` + +3. **Security Scanning:** + ```bash + # Image auf Vulnerabilities prüfen + docker scan n8nio/n8n:latest + # Oder mit Trivy: + trivy image n8nio/n8n:latest + ``` + +4. **Netzwerk-Isolation:** + - n8n nicht direkt im Internet exponieren + - Reverse Proxy mit TLS verwenden + - Firewall-Regeln setzen + +5. **Zugriffskontrollen:** + - Starke Passwörter verwenden + - Basic Auth oder OAuth aktivieren + - API-Keys für LibreBooking sicher speichern + +### Sicherheits-Checkliste: + +- [ ] n8n Version aktuell? +- [ ] Docker Image aktuell? +- [ ] TLS/HTTPS aktiviert? +- [ ] Starke Passwörter? +- [ ] Netzwerk isoliert? +- [ ] Regelmäßige Backups? + +--- + +## Weiterführende Links + +- [n8n Security Best Practices](https://docs.n8n.io/hosting/security/) +- [npm audit Documentation](https://docs.npmjs.com/cli/v8/commands/npm-audit) +- [OWASP Dependency Check](https://owasp.org/www-project-dependency-check/) +- [Snyk Vulnerability Database](https://snyk.io/vuln/) + +--- + +## Meldung von Sicherheitsproblemen + +Wenn Sie eine Sicherheitslücke **direkt in diesem Projekt** (nicht in Dependencies) finden: + +1. **Nicht öffentlich melden** (kein GitHub Issue) +2. Kontaktieren Sie uns direkt per E-Mail +3. Geben Sie Zeit für einen Fix bevor öffentliche Disclosure + +--- + +*Letzte Aktualisierung: Januar 2026* diff --git a/TROUBLESHOOTING.md b/TROUBLESHOOTING.md new file mode 100644 index 0000000..c8ad009 --- /dev/null +++ b/TROUBLESHOOTING.md @@ -0,0 +1,141 @@ +# Troubleshooting + +## Inhaltsverzeichnis + +1. [tsc not found](#tsc-not-found) +2. [Read-only Volume](#read-only-volume) +3. [npm audit Vulnerabilities](#npm-audit-vulnerabilities) +4. [Node nicht sichtbar](#node-nicht-sichtbar) +5. [Authentifizierung fehlgeschlagen](#authentifizierung-fehlgeschlagen) + +--- + +## tsc not found + +**Symptom:** +``` +sh: 1: tsc: not found +npm error code 127 +``` + +**Ursache:** TypeScript ist nicht installiert (im Container oft nicht verfügbar). + +**Lösung:** Auf dem Host bauen! + +```bash +# Auf dem Host (nicht im Container) +npm install +npm run build + +# Dann in Container kopieren +docker cp dist n8n:/home/node/.n8n/custom/n8n-nodes-librebooking/ +docker cp package.json n8n:/home/node/.n8n/custom/n8n-nodes-librebooking/ +docker cp node_modules n8n:/home/node/.n8n/custom/n8n-nodes-librebooking/ +docker restart n8n +``` + +**Oder mit Skript:** +```bash +./quick-install.sh n8n +``` + +--- + +## Read-only Volume + +**Symptom:** +``` +EROFS: read-only file system +npm error EACCES: permission denied +``` + +**Ursache:** Volume ist mit `:ro` gemountet. + +**Lösung 1:** Volume ohne `:ro` mounten + +```yaml +# docker-compose.yml +volumes: + - ./custom-nodes:/home/node/.n8n/custom # Ohne :ro +``` + +**Lösung 2:** Auf dem Host bauen und kopieren + +```bash +npm install && npm run build +docker cp dist n8n:/home/node/.n8n/custom/n8n-nodes-librebooking/ +``` + +--- + +## npm audit Vulnerabilities + +**Symptom:** +``` +found 2 vulnerabilities (1 moderate, 1 critical) +``` + +**Erklärung:** Diese kommen von `n8n-workflow` und sind für dieses Projekt nicht kritisch. + +**Lösung:** Ignorieren oder `.npmrc` verwenden: + +```bash +# .npmrc bereits konfiguriert +audit=false +``` + +Siehe [SECURITY.md](SECURITY.md) für Details. + +--- + +## Node nicht sichtbar + +**Lösung:** + +1. Container neustarten: + ```bash + docker restart n8n + ``` + +2. Dateien prüfen: + ```bash + docker exec n8n ls -la /home/node/.n8n/custom/n8n-nodes-librebooking/ + ``` + +3. Environment prüfen: + ```yaml + environment: + - N8N_CUSTOM_EXTENSIONS=/home/node/.n8n/custom + ``` + +4. Logs prüfen: + ```bash + docker logs n8n | grep -i librebooking + ``` + +--- + +## Authentifizierung fehlgeschlagen + +**Symptom:** "401 Unauthorized" oder "Invalid credentials" + +**Lösung:** + +1. URL prüfen (ohne `/Web/` am Ende) +2. Benutzer muss Admin sein +3. API muss in LibreBooking aktiviert sein + +Test: +```bash +curl -X POST https://librebooking.example.com/Web/Services/Authentication/Authenticate \ + -H 'Content-Type: application/json' \ + -d '{"username": "admin", "password": "pass"}' +``` + +--- + +## Weitere Hilfe + +- [README.md](README.md) - Übersicht +- [INSTALLATION.md](INSTALLATION.md) - Installationsanleitung +- [DOCKER-INTEGRATION.md](DOCKER-INTEGRATION.md) - Docker Details diff --git a/build-on-host.sh b/build-on-host.sh new file mode 100755 index 0000000..7fa0e3c --- /dev/null +++ b/build-on-host.sh @@ -0,0 +1,183 @@ +#!/bin/bash +# ============================================================================ +# build-on-host.sh - Baut den Node auf dem Host (außerhalb des Containers) +# +# Verwendung: Wenn das Volume als read-only gemountet werden soll +# +# Dieses Skript: +# 1. Installiert Dependencies auf dem Host +# 2. Baut den Node auf dem Host +# 3. Kopiert nur die fertigen Dateien in den Container +# 4. Das Volume kann dann read-only gemountet werden +# ============================================================================ + +set -e + +# Farben +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +NC='\033[0m' + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +echo -e "${BLUE}============================================${NC}" +echo -e "${BLUE} LibreBooking Node - Build auf Host${NC}" +echo -e "${BLUE}============================================${NC}" +echo "" + +# Hilfe anzeigen +show_help() { + echo "Verwendung: $0 [OPTIONEN]" + echo "" + echo "Dieses Skript baut den Node auf dem Host, sodass er als" + echo "read-only Volume gemountet werden kann." + echo "" + echo "Optionen:" + echo " -o, --output DIR Ausgabeverzeichnis (Standard: ./dist-for-docker)" + echo " -c, --copy-to PATH Kopiert direkt zu einem Pfad (z.B. custom-nodes/)" + echo " -h, --help Diese Hilfe anzeigen" + echo "" + echo "Beispiele:" + echo " $0 # Baut in ./dist-for-docker" + echo " $0 -c ../n8n/custom-nodes/n8n-nodes-librebooking" + echo "" + echo "Danach in docker-compose.yml:" + echo " volumes:" + echo " - ./dist-for-docker:/home/node/.n8n/custom/n8n-nodes-librebooking:ro" + exit 0 +} + +OUTPUT_DIR="$SCRIPT_DIR/dist-for-docker" +COPY_TO="" + +# Parameter parsen +while [[ $# -gt 0 ]]; do + case $1 in + -o|--output) + OUTPUT_DIR="$2" + shift 2 + ;; + -c|--copy-to) + COPY_TO="$2" + shift 2 + ;; + -h|--help) + show_help + ;; + *) + echo -e "${RED}Unbekannte Option: $1${NC}" + show_help + ;; + esac +done + +log() { + echo -e "${GREEN}[INFO]${NC} $1" +} + +warn() { + echo -e "${YELLOW}[WARN]${NC} $1" +} + +error() { + echo -e "${RED}[ERROR]${NC} $1" + exit 1 +} + +# Schritt 1: Prüfe Voraussetzungen +log "Prüfe Voraussetzungen..." + +if ! command -v node &>/dev/null; then + error "Node.js ist nicht installiert!\n\n Installieren Sie Node.js 18+: https://nodejs.org/" +fi + +NODE_VERSION=$(node -v | cut -d'v' -f2 | cut -d'.' -f1) +if [ "$NODE_VERSION" -lt 18 ]; then + error "Node.js Version $NODE_VERSION ist zu alt. Mindestens v18 erforderlich." +fi + +if ! command -v npm &>/dev/null; then + error "npm ist nicht installiert!" +fi + +log "Node.js: $(node -v)" +log "npm: $(npm -v)" + +# Schritt 2: Dependencies installieren +log "Installiere Dependencies..." +cd "$SCRIPT_DIR" + +if npm install 2>&1 | tail -5; then + log "Dependencies installiert ✓" +else + error "npm install fehlgeschlagen!" +fi + +# Schritt 3: Bauen +log "Baue den Node..." + +if npm run build 2>&1 | tail -10; then + log "Build erfolgreich ✓" +else + error "npm run build fehlgeschlagen!" +fi + +# Schritt 4: Prüfe Build +if [ ! -d "$SCRIPT_DIR/dist" ]; then + error "dist/ Verzeichnis wurde nicht erstellt!" +fi + +NODE_COUNT=$(find "$SCRIPT_DIR/dist" -name "*.node.js" | wc -l) +if [ "$NODE_COUNT" -eq 0 ]; then + error "Keine .node.js Dateien im dist/ Verzeichnis!" +fi + +log "Gefunden: $NODE_COUNT Node-Datei(en)" + +# Schritt 5: Erstelle Ausgabeverzeichnis +log "Erstelle Ausgabeverzeichnis: $OUTPUT_DIR" + +mkdir -p "$OUTPUT_DIR" + +# Kopiere alle notwendigen Dateien +cp -r "$SCRIPT_DIR/dist" "$OUTPUT_DIR/" +cp "$SCRIPT_DIR/package.json" "$OUTPUT_DIR/" +cp -r "$SCRIPT_DIR/node_modules" "$OUTPUT_DIR/" 2>/dev/null || true + +# Optional: Nur essentielle Dateien für minimales Image +log "Räume auf..." +rm -rf "$OUTPUT_DIR/node_modules/.cache" 2>/dev/null || true + +# Schritt 6: Optional kopieren +if [ -n "$COPY_TO" ]; then + log "Kopiere zu: $COPY_TO" + mkdir -p "$COPY_TO" + cp -r "$OUTPUT_DIR/"* "$COPY_TO/" + log "Kopiert ✓" +fi + +echo "" +echo -e "${GREEN}============================================${NC}" +echo -e "${GREEN} Build abgeschlossen!${NC}" +echo -e "${GREEN}============================================${NC}" +echo "" +log "Ausgabe in: $OUTPUT_DIR" +echo "" +echo "Nächste Schritte:" +echo "" +echo "1. Kopieren Sie das Verzeichnis zu Ihrer n8n Installation:" +echo " cp -r $OUTPUT_DIR /pfad/zu/n8n/custom-nodes/n8n-nodes-librebooking" +echo "" +echo "2. Oder verwenden Sie es direkt in docker-compose.yml:" +echo "" +echo " services:" +echo " n8n:" +echo " volumes:" +echo " # Read-only möglich, da bereits gebaut!" +echo " - $OUTPUT_DIR:/home/node/.n8n/custom/n8n-nodes-librebooking:ro" +echo "" +echo "3. Starten Sie n8n neu:" +echo " docker compose restart n8n" +echo "" diff --git a/check-installation.sh b/check-installation.sh new file mode 100755 index 0000000..97f751c --- /dev/null +++ b/check-installation.sh @@ -0,0 +1,281 @@ +#!/bin/sh +# ============================================================================ +# check-installation.sh - Debug-Skript für LibreBooking Node Installation +# Kann sowohl im Container als auch auf dem Host ausgeführt werden +# ============================================================================ + +echo "============================================" +echo " LibreBooking Node - Installation Check" +echo "============================================" +echo "" +echo "Ausgeführt: $(date)" +echo "Hostname: $(hostname)" +echo "" + +# Status-Zähler +OK_COUNT=0 +WARN_COUNT=0 +ERROR_COUNT=0 + +ok() { + echo "[✓] $1" + OK_COUNT=$((OK_COUNT + 1)) +} + +warn() { + echo "[!] $1" + WARN_COUNT=$((WARN_COUNT + 1)) +} + +error() { + echo "[✗] $1" + ERROR_COUNT=$((ERROR_COUNT + 1)) +} + +info() { + echo "[i] $1" +} + +echo "============================================" +echo " 1. UMGEBUNG" +echo "============================================" + +# Node.js/npm prüfen +if command -v node >/dev/null 2>&1; then + ok "Node.js installiert: $(node --version)" +else + error "Node.js nicht gefunden" +fi + +if command -v npm >/dev/null 2>&1; then + ok "npm installiert: $(npm --version)" +else + error "npm nicht gefunden" +fi + +# Aktueller Benutzer +info "Aktueller Benutzer: $(whoami) (UID: $(id -u))" + +echo "" +echo "============================================" +echo " 2. UMGEBUNGSVARIABLEN" +echo "============================================" + +if [ -n "$N8N_CUSTOM_EXTENSIONS" ]; then + ok "N8N_CUSTOM_EXTENSIONS: $N8N_CUSTOM_EXTENSIONS" +else + warn "N8N_CUSTOM_EXTENSIONS nicht gesetzt" + info " Empfehlung: N8N_CUSTOM_EXTENSIONS=/home/node/.n8n/custom" +fi + +if [ "$N8N_COMMUNITY_NODES_ENABLED" = "true" ]; then + ok "N8N_COMMUNITY_NODES_ENABLED: true" +else + warn "N8N_COMMUNITY_NODES_ENABLED ist nicht 'true'" + info " Aktueller Wert: ${N8N_COMMUNITY_NODES_ENABLED:-}" +fi + +# Weitere n8n Variablen +if [ -n "$N8N_LOG_LEVEL" ]; then + info "N8N_LOG_LEVEL: $N8N_LOG_LEVEL" +fi + +echo "" +echo "============================================" +echo " 3. VERZEICHNISSE PRÜFEN" +echo "============================================" + +# Mögliche Pfade +POSSIBLE_PATHS=" +/home/node/.n8n/custom/n8n-nodes-librebooking +/home/node/.n8n/custom +/opt/n8n/custom-nodes +/data/custom-nodes +" + +FOUND_PATH="" + +for path in $POSSIBLE_PATHS; do + if [ -d "$path" ]; then + if [ -f "$path/package.json" ]; then + ok "Custom Node Verzeichnis: $path" + FOUND_PATH="$path" + break + elif [ -f "$path/n8n-nodes-librebooking/package.json" ]; then + ok "Custom Node Verzeichnis: $path/n8n-nodes-librebooking" + FOUND_PATH="$path/n8n-nodes-librebooking" + break + else + info "Verzeichnis existiert (ohne package.json): $path" + fi + fi +done + +if [ -z "$FOUND_PATH" ]; then + error "Kein Custom Node Verzeichnis mit package.json gefunden!" + info " Geprüfte Pfade:" + for path in $POSSIBLE_PATHS; do + info " - $path" + done +fi + +echo "" +echo "============================================" +echo " 4. NODE-DATEIEN PRÜFEN" +echo "============================================" + +if [ -n "$FOUND_PATH" ]; then + cd "$FOUND_PATH" 2>/dev/null || true + + # package.json + if [ -f "package.json" ]; then + ok "package.json vorhanden" + info " Name: $(grep '"name":' package.json | head -1 | cut -d'"' -f4)" + info " Version: $(grep '"version":' package.json | head -1 | cut -d'"' -f4)" + else + error "package.json fehlt" + fi + + # node_modules + if [ -d "node_modules" ]; then + MODULE_COUNT=$(ls -1 node_modules 2>/dev/null | wc -l) + ok "node_modules vorhanden ($MODULE_COUNT Pakete)" + else + error "node_modules fehlt - führen Sie 'npm install' aus" + fi + + # dist Verzeichnis + if [ -d "dist" ]; then + ok "dist/ Verzeichnis vorhanden" + + # .node.js Dateien suchen + echo "" + info "Gefundene Node-Dateien:" + NODE_FILES=$(find dist -name "*.node.js" 2>/dev/null) + if [ -n "$NODE_FILES" ]; then + echo "$NODE_FILES" | while read -r f; do + if [ -f "$f" ]; then + ok " $f ($(ls -lh "$f" | awk '{print $5}'))" + fi + done + else + error " Keine .node.js Dateien gefunden!" + fi + + # Credentials + echo "" + info "Gefundene Credential-Dateien:" + CRED_FILES=$(find dist -name "*.credentials.js" 2>/dev/null) + if [ -n "$CRED_FILES" ]; then + echo "$CRED_FILES" | while read -r f; do + if [ -f "$f" ]; then + ok " $f" + fi + done + else + error " Keine .credentials.js Dateien gefunden!" + fi + else + error "dist/ Verzeichnis fehlt - führen Sie 'npm run build' aus" + fi + + # Icons + echo "" + info "Icon-Dateien:" + find . -name "*.svg" 2>/dev/null | while read -r f; do + info " $f" + done +fi + +echo "" +echo "============================================" +echo " 5. BERECHTIGUNGEN" +echo "============================================" + +# Funktion: Prüft ob ein Verzeichnis read-only ist +check_readonly() { + local dir="$1" + local test_file="$dir/.write_test_$$" + + # Versuche eine Test-Datei zu erstellen + if touch "$test_file" 2>/dev/null; then + rm -f "$test_file" 2>/dev/null + return 0 # Schreibbar + else + return 1 # Read-only + fi +} + +if [ -n "$FOUND_PATH" ]; then + # Prüfe Schreibrechte (inkl. read-only Volume Check) + if check_readonly "$FOUND_PATH"; then + ok "Schreibrechte auf $FOUND_PATH" + else + error "KEINE Schreibrechte auf $FOUND_PATH (Read-only Volume?)" + echo "" + info " PROBLEM: Das Verzeichnis ist möglicherweise als :ro gemountet." + info " LÖSUNG 1: Volume ohne :ro mounten:" + info " - ./custom-nodes:/home/node/.n8n/custom/n8n-nodes-librebooking" + info " LÖSUNG 2: Auf dem Host bauen mit ./build-on-host.sh" + info " Siehe: TROUBLESHOOTING.md" + echo "" + fi + + # Besitzer prüfen + OWNER=$(ls -ld "$FOUND_PATH" | awk '{print $3}') + GROUP=$(ls -ld "$FOUND_PATH" | awk '{print $4}') + info "Besitzer: $OWNER:$GROUP" + + # n8n läuft als node (UID 1000) + if [ "$(id -u)" = "1000" ]; then + ok "Läuft als UID 1000 (Standard für n8n)" + else + warn "Läuft nicht als UID 1000 (aktuell: $(id -u))" + fi +fi + +echo "" +echo "============================================" +echo " ZUSAMMENFASSUNG" +echo "============================================" +echo "" +echo "Ergebnisse:" +echo " ✓ OK: $OK_COUNT" +echo " ! Warnung: $WARN_COUNT" +echo " ✗ Fehler: $ERROR_COUNT" +echo "" + +if [ "$ERROR_COUNT" -gt 0 ]; then + echo "============================================" + echo " EMPFOHLENE AKTIONEN" + echo "============================================" + echo "" + + if [ ! -d "node_modules" ] 2>/dev/null; then + echo "1. Dependencies installieren:" + echo " cd $FOUND_PATH && npm install" + echo "" + fi + + if [ ! -d "dist" ] 2>/dev/null; then + echo "2. Node bauen:" + echo " cd $FOUND_PATH && npm run build" + echo "" + fi + + echo "3. Container neustarten:" + echo " docker restart n8n" + echo "" + + exit 1 +elif [ "$WARN_COUNT" -gt 0 ]; then + echo "Status: TEILWEISE OK (Warnungen beachten)" + exit 0 +else + echo "Status: ALLES OK ✓" + echo "" + echo "Falls der Node trotzdem nicht erscheint:" + echo " 1. Starten Sie n8n neu: docker restart n8n" + echo " 2. Prüfen Sie die Logs: docker logs n8n | grep -i libre" + exit 0 +fi diff --git a/create-release.sh b/create-release.sh new file mode 100755 index 0000000..af08448 --- /dev/null +++ b/create-release.sh @@ -0,0 +1,89 @@ +#!/bin/bash +# ============================================================================ +# create-release.sh - Erstellt neue Archive und Git Tag +# ============================================================================ + +set -e + +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +RED='\033[0;31m' +NC='\033[0m' + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +PARENT_DIR="$(dirname "$SCRIPT_DIR")" + +# Version aus package.json lesen +VERSION=$(grep '"version"' "$SCRIPT_DIR/package.json" | head -1 | sed 's/.*"version": "\([^"]*\)".*/\1/') + +echo -e "${GREEN}=== Release erstellen v$VERSION ===${NC}\n" + +cd "$SCRIPT_DIR" + +# 1. Prüfe, ob alles committet ist +if [ -n "$(git status --porcelain)" ]; then + echo -e "${YELLOW}Warnung: Es gibt uncommittete Änderungen!${NC}" + git status --short + echo "" + read -p "Trotzdem fortfahren? (j/N) " -n 1 -r + echo + if [[ ! $REPLY =~ ^[Jj]$ ]]; then + exit 1 + fi +fi + +# 2. Alte Archive löschen +echo "[1/4] Lösche alte Archive..." +./git-cleanup.sh 2>/dev/null || true + +# 3. Build prüfen +echo "" +echo "[2/4] Prüfe Build..." +if [ ! -d "dist" ] || [ -z "$(find dist -name '*.node.js' 2>/dev/null)" ]; then + echo "Baue Node..." + npm install --silent + npm run build --silent +fi +echo " ✓ Build OK" + +# 4. Archive erstellen +echo "" +echo "[3/4] Erstelle Archive..." + +TAR_FILE="$PARENT_DIR/n8n-nodes-librebooking-v${VERSION}.tar.gz" +ZIP_FILE="$PARENT_DIR/n8n-nodes-librebooking-v${VERSION}.zip" + +git archive --format=tar.gz --prefix=n8n-nodes-librebooking/ --output="$TAR_FILE" HEAD +echo " ✓ $TAR_FILE" + +git archive --format=zip --prefix=n8n-nodes-librebooking/ --output="$ZIP_FILE" HEAD +echo " ✓ $ZIP_FILE" + +# 5. Git Tag (optional) +echo "" +echo "[4/4] Git Tag..." + +if git tag | grep -q "v$VERSION"; then + echo -e " ${YELLOW}Tag v$VERSION existiert bereits${NC}" +else + read -p "Git Tag v$VERSION erstellen? (j/N) " -n 1 -r + echo + if [[ $REPLY =~ ^[Jj]$ ]]; then + git tag -a "v$VERSION" -m "Version $VERSION - Vereinfachte Installation" + echo " ✓ Tag v$VERSION erstellt" + fi +fi + +echo "" +echo -e "${GREEN}============================================${NC}" +echo -e "${GREEN} Release v$VERSION erstellt!${NC}" +echo -e "${GREEN}============================================${NC}" +echo "" +echo "Archive:" +echo " $TAR_FILE" +echo " $ZIP_FILE" +echo "" +echo "Zum Pushen:" +echo " git push origin main" +echo " git push origin v$VERSION" +echo "" diff --git a/credentials/LibreBookingApi.credentials.ts b/credentials/LibreBookingApi.credentials.ts new file mode 100644 index 0000000..ca0de1c --- /dev/null +++ b/credentials/LibreBookingApi.credentials.ts @@ -0,0 +1,65 @@ +import { + IAuthenticateGeneric, + ICredentialTestRequest, + ICredentialType, + INodeProperties, +} from 'n8n-workflow'; + +/** + * LibreBooking API Credentials + * + * LibreBooking verwendet Session-basierte Authentifizierung. + * Der Node holt bei jeder Ausführung einen neuen Session-Token. + */ +export class LibreBookingApi implements ICredentialType { + name = 'libreBookingApi'; + displayName = 'LibreBooking API'; + documentationUrl = 'https://librebooking.org/docs/api'; + + properties: INodeProperties[] = [ + { + displayName: 'LibreBooking URL', + name: 'url', + type: 'string', + default: '', + placeholder: 'https://booking.example.com', + required: true, + description: 'Die Basis-URL Ihrer LibreBooking-Installation (ohne /Web/Services)', + }, + { + displayName: 'Benutzername', + name: 'username', + type: 'string', + default: '', + required: true, + description: 'Ihr LibreBooking-Benutzername oder E-Mail-Adresse', + }, + { + displayName: 'Passwort', + name: 'password', + type: 'string', + typeOptions: { + password: true, + }, + default: '', + required: true, + description: 'Ihr LibreBooking-Passwort', + }, + ]; + + // Test-Request um die Credentials zu validieren + test: ICredentialTestRequest = { + request: { + baseURL: '={{$credentials.url}}', + url: '/Web/Services/index.php/Authentication/Authenticate', + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: { + username: '={{$credentials.username}}', + password: '={{$credentials.password}}', + }, + }, + }; +} diff --git a/custom-nodes/README.md b/custom-nodes/README.md new file mode 100644 index 0000000..867cd96 --- /dev/null +++ b/custom-nodes/README.md @@ -0,0 +1,42 @@ +# LibreBooking n8n Node - Custom Nodes Version + +Diese Version ist speziell für die Integration in bestehende n8n Docker-Installationen optimiert. + +## Schnellinstallation + +### 1. Verzeichnis in n8n Custom Nodes kopieren + +```bash +cp -r custom-nodes /pfad/zu/n8n/.n8n/custom/n8n-nodes-librebooking +``` + +### 2. Dependencies installieren und bauen + +```bash +cd /pfad/zu/n8n/.n8n/custom/n8n-nodes-librebooking +npm install +npm run build +``` + +### 3. n8n neustarten + +```bash +docker-compose restart n8n +``` + +## Enthaltene Dateien + +- `credentials/` - API Credentials Definition +- `nodes/` - LibreBooking und LibreBookingTrigger Nodes +- `package.json` - Vereinfachte Package-Konfiguration +- `tsconfig.json` - TypeScript Konfiguration + +## Weitere Informationen + +Siehe die ausführliche Dokumentation: +- `DOCKER-INTEGRATION.md` - Detaillierte Docker-Anleitung +- `README.md` - Vollständige Dokumentation + +## Lizenz + +MIT License diff --git a/custom-nodes/credentials/LibreBookingApi.credentials.ts b/custom-nodes/credentials/LibreBookingApi.credentials.ts new file mode 100644 index 0000000..ca0de1c --- /dev/null +++ b/custom-nodes/credentials/LibreBookingApi.credentials.ts @@ -0,0 +1,65 @@ +import { + IAuthenticateGeneric, + ICredentialTestRequest, + ICredentialType, + INodeProperties, +} from 'n8n-workflow'; + +/** + * LibreBooking API Credentials + * + * LibreBooking verwendet Session-basierte Authentifizierung. + * Der Node holt bei jeder Ausführung einen neuen Session-Token. + */ +export class LibreBookingApi implements ICredentialType { + name = 'libreBookingApi'; + displayName = 'LibreBooking API'; + documentationUrl = 'https://librebooking.org/docs/api'; + + properties: INodeProperties[] = [ + { + displayName: 'LibreBooking URL', + name: 'url', + type: 'string', + default: '', + placeholder: 'https://booking.example.com', + required: true, + description: 'Die Basis-URL Ihrer LibreBooking-Installation (ohne /Web/Services)', + }, + { + displayName: 'Benutzername', + name: 'username', + type: 'string', + default: '', + required: true, + description: 'Ihr LibreBooking-Benutzername oder E-Mail-Adresse', + }, + { + displayName: 'Passwort', + name: 'password', + type: 'string', + typeOptions: { + password: true, + }, + default: '', + required: true, + description: 'Ihr LibreBooking-Passwort', + }, + ]; + + // Test-Request um die Credentials zu validieren + test: ICredentialTestRequest = { + request: { + baseURL: '={{$credentials.url}}', + url: '/Web/Services/index.php/Authentication/Authenticate', + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: { + username: '={{$credentials.username}}', + password: '={{$credentials.password}}', + }, + }, + }; +} diff --git a/custom-nodes/index.ts b/custom-nodes/index.ts new file mode 100644 index 0000000..13abd91 --- /dev/null +++ b/custom-nodes/index.ts @@ -0,0 +1,4 @@ +// LibreBooking n8n Node - Entry Point +export { LibreBooking } from './nodes/LibreBooking/LibreBooking.node'; +export { LibreBookingTrigger } from './nodes/LibreBookingTrigger/LibreBookingTrigger.node'; +export { LibreBookingApi } from './credentials/LibreBookingApi.credentials'; diff --git a/custom-nodes/nodes/LibreBooking/LibreBooking.node.ts b/custom-nodes/nodes/LibreBooking/LibreBooking.node.ts new file mode 100644 index 0000000..675b4ad --- /dev/null +++ b/custom-nodes/nodes/LibreBooking/LibreBooking.node.ts @@ -0,0 +1,1203 @@ +import { + IExecuteFunctions, + INodeExecutionData, + INodeType, + INodeTypeDescription, + IHttpRequestMethods, + NodeApiError, + NodeOperationError, +} from 'n8n-workflow'; + +interface LibreBookingSession { + sessionToken: string; + userId: number; + sessionExpires: string; +} + +/** + * Authentifizierung bei LibreBooking + */ +async function authenticate( + executeFunctions: IExecuteFunctions, + baseUrl: string, + username: string, + password: string, +): Promise { + try { + const response = await executeFunctions.helpers.httpRequest({ + method: 'POST', + url: `${baseUrl}/Web/Services/index.php/Authentication/Authenticate`, + headers: { 'Content-Type': 'application/json' }, + body: { username, password }, + json: true, + }); + + if (!response.isAuthenticated) { + throw new NodeOperationError( + executeFunctions.getNode(), + 'Authentifizierung fehlgeschlagen. Bitte überprüfen Sie Ihre Credentials.', + ); + } + + return { + sessionToken: response.sessionToken, + userId: response.userId, + sessionExpires: response.sessionExpires, + }; + } catch (error: any) { + throw new NodeApiError(executeFunctions.getNode(), error, { + message: 'Authentifizierung fehlgeschlagen', + description: 'Überprüfen Sie die LibreBooking URL und Ihre Zugangsdaten.', + }); + } +} + +/** + * Abmeldung von LibreBooking + */ +async function signOut( + executeFunctions: IExecuteFunctions, + baseUrl: string, + session: LibreBookingSession, +): Promise { + try { + await executeFunctions.helpers.httpRequest({ + method: 'POST', + url: `${baseUrl}/Web/Services/index.php/Authentication/SignOut`, + headers: { 'Content-Type': 'application/json' }, + body: { + userId: session.userId, + sessionToken: session.sessionToken, + }, + json: true, + }); + } catch (error) { + // Ignoriere SignOut-Fehler + } +} + +/** + * API-Request mit Session-Authentifizierung + */ +async function makeApiRequest( + executeFunctions: IExecuteFunctions, + baseUrl: string, + session: LibreBookingSession, + method: IHttpRequestMethods, + endpoint: string, + body?: any, + qs?: any, +): Promise { + const options: any = { + method, + url: `${baseUrl}/Web/Services/index.php${endpoint}`, + headers: { + 'Content-Type': 'application/json', + 'X-Booked-SessionToken': session.sessionToken, + 'X-Booked-UserId': session.userId.toString(), + }, + json: true, + }; + + if (body && Object.keys(body).length > 0) { + options.body = body; + } + + if (qs && Object.keys(qs).length > 0) { + options.qs = qs; + } + + try { + return await executeFunctions.helpers.httpRequest(options); + } catch (error: any) { + if (error.statusCode === 401) { + throw new NodeApiError(executeFunctions.getNode(), error, { + message: 'Authentifizierung abgelaufen', + description: 'Der Session-Token ist abgelaufen. Bitte erneut ausführen.', + }); + } else if (error.statusCode === 403) { + throw new NodeApiError(executeFunctions.getNode(), error, { + message: 'Zugriff verweigert', + description: 'Sie haben keine Berechtigung für diese Operation. Admin-Rechte erforderlich?', + }); + } else if (error.statusCode === 404) { + throw new NodeApiError(executeFunctions.getNode(), error, { + message: 'Nicht gefunden', + description: 'Die angeforderte Ressource wurde nicht gefunden.', + }); + } + throw new NodeApiError(executeFunctions.getNode(), error, { + message: `API-Fehler: ${error.message}`, + }); + } +} + +/** + * Hilfsfunktion: String zu Array von Zahlen + */ +function parseIdList(value: string | undefined): number[] { + if (!value || value.trim() === '') return []; + return value.split(',').map(id => parseInt(id.trim(), 10)).filter(id => !isNaN(id)); +} + +/** + * LibreBooking n8n Node + * + * Vollständige Integration für die LibreBooking API. + * Unterstützt alle wichtigen Ressourcen und Operationen. + */ +export class LibreBooking implements INodeType { + description: INodeTypeDescription = { + displayName: 'LibreBooking', + name: 'libreBooking', + icon: 'file:librebooking.svg', + group: ['transform'], + version: 1, + subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', + description: 'Verwalten Sie Reservierungen, Ressourcen, Benutzer und mehr mit LibreBooking', + defaults: { + name: 'LibreBooking', + }, + inputs: ['main'], + outputs: ['main'], + credentials: [ + { + name: 'libreBookingApi', + required: true, + }, + ], + properties: [ + // ===================================================== + // RESOURCE SELECTOR + // ===================================================== + { + displayName: 'Ressource', + name: 'resource', + type: 'options', + noDataExpression: true, + options: [ + { + name: 'Reservierung', + value: 'reservation', + description: 'Reservierungen verwalten', + }, + { + name: 'Ressource', + value: 'resource', + description: 'Ressourcen (Räume, Equipment) verwalten', + }, + { + name: 'Zeitplan', + value: 'schedule', + description: 'Zeitpläne abrufen', + }, + { + name: 'Benutzer', + value: 'user', + description: 'Benutzer verwalten (Admin-Rechte erforderlich)', + }, + { + name: 'Konto', + value: 'account', + description: 'Eigenes Konto verwalten', + }, + { + name: 'Gruppe', + value: 'group', + description: 'Benutzergruppen verwalten', + }, + { + name: 'Zubehör', + value: 'accessory', + description: 'Zubehör abrufen', + }, + { + name: 'Attribut', + value: 'attribute', + description: 'Benutzerdefinierte Attribute verwalten', + }, + ], + default: 'reservation', + }, + + // ===================================================== + // RESERVATION OPERATIONS + // ===================================================== + { + displayName: 'Operation', + name: 'operation', + type: 'options', + noDataExpression: true, + displayOptions: { + show: { + resource: ['reservation'], + }, + }, + options: [ + { name: 'Erstellen', value: 'create', description: 'Neue Reservierung erstellen', action: 'Reservierung erstellen' }, + { name: 'Abrufen', value: 'get', description: 'Reservierung abrufen', action: 'Reservierung abrufen' }, + { name: 'Alle Abrufen', value: 'getAll', description: 'Alle Reservierungen abrufen', action: 'Alle Reservierungen abrufen' }, + { name: 'Aktualisieren', value: 'update', description: 'Reservierung aktualisieren', action: 'Reservierung aktualisieren' }, + { name: 'Löschen', value: 'delete', description: 'Reservierung löschen', action: 'Reservierung löschen' }, + { name: 'Genehmigen', value: 'approve', description: 'Ausstehende Reservierung genehmigen', action: 'Reservierung genehmigen' }, + { name: 'Check-In', value: 'checkIn', description: 'In Reservierung einchecken', action: 'In Reservierung einchecken' }, + { name: 'Check-Out', value: 'checkOut', description: 'Aus Reservierung auschecken', action: 'Aus Reservierung auschecken' }, + ], + default: 'getAll', + }, + + // ===================================================== + // RESOURCE OPERATIONS + // ===================================================== + { + displayName: 'Operation', + name: 'operation', + type: 'options', + noDataExpression: true, + displayOptions: { show: { resource: ['resource'] } }, + options: [ + { name: 'Alle Abrufen', value: 'getAll', description: 'Alle Ressourcen abrufen', action: 'Alle Ressourcen abrufen' }, + { name: 'Abrufen', value: 'get', description: 'Ressource abrufen', action: 'Ressource abrufen' }, + { name: 'Verfügbarkeit Prüfen', value: 'getAvailability', description: 'Verfügbarkeit von Ressourcen prüfen', action: 'Verfügbarkeit prüfen' }, + { name: 'Gruppen Abrufen', value: 'getGroups', description: 'Ressourcen-Gruppen abrufen', action: 'Ressourcen-Gruppen abrufen' }, + { name: 'Typen Abrufen', value: 'getTypes', description: 'Ressourcen-Typen abrufen', action: 'Ressourcen-Typen abrufen' }, + { name: 'Status Abrufen', value: 'getStatuses', description: 'Verfügbare Status abrufen', action: 'Status abrufen' }, + { name: 'Erstellen', value: 'create', description: 'Neue Ressource erstellen (Admin)', action: 'Ressource erstellen' }, + { name: 'Aktualisieren', value: 'update', description: 'Ressource aktualisieren (Admin)', action: 'Ressource aktualisieren' }, + { name: 'Löschen', value: 'delete', description: 'Ressource löschen (Admin)', action: 'Ressource löschen' }, + ], + default: 'getAll', + }, + + // ===================================================== + // SCHEDULE OPERATIONS + // ===================================================== + { + displayName: 'Operation', + name: 'operation', + type: 'options', + noDataExpression: true, + displayOptions: { show: { resource: ['schedule'] } }, + options: [ + { name: 'Alle Abrufen', value: 'getAll', description: 'Alle Zeitpläne abrufen', action: 'Alle Zeitpläne abrufen' }, + { name: 'Abrufen', value: 'get', description: 'Zeitplan abrufen', action: 'Zeitplan abrufen' }, + { name: 'Slots Abrufen', value: 'getSlots', description: 'Verfügbare Slots abrufen', action: 'Slots abrufen' }, + ], + default: 'getAll', + }, + + // ===================================================== + // USER OPERATIONS + // ===================================================== + { + displayName: 'Operation', + name: 'operation', + type: 'options', + noDataExpression: true, + displayOptions: { show: { resource: ['user'] } }, + options: [ + { name: 'Alle Abrufen', value: 'getAll', description: 'Alle Benutzer abrufen', action: 'Alle Benutzer abrufen' }, + { name: 'Abrufen', value: 'get', description: 'Benutzer abrufen', action: 'Benutzer abrufen' }, + { name: 'Erstellen', value: 'create', description: 'Neuen Benutzer erstellen (Admin)', action: 'Benutzer erstellen' }, + { name: 'Aktualisieren', value: 'update', description: 'Benutzer aktualisieren (Admin)', action: 'Benutzer aktualisieren' }, + { name: 'Passwort Ändern', value: 'updatePassword', description: 'Benutzer-Passwort ändern (Admin)', action: 'Passwort ändern' }, + { name: 'Löschen', value: 'delete', description: 'Benutzer löschen (Admin)', action: 'Benutzer löschen' }, + ], + default: 'getAll', + }, + + // ===================================================== + // ACCOUNT OPERATIONS + // ===================================================== + { + displayName: 'Operation', + name: 'operation', + type: 'options', + noDataExpression: true, + displayOptions: { show: { resource: ['account'] } }, + options: [ + { name: 'Abrufen', value: 'get', description: 'Eigene Kontoinformationen abrufen', action: 'Konto abrufen' }, + { name: 'Erstellen', value: 'create', description: 'Neues Konto erstellen (Registrierung)', action: 'Konto erstellen' }, + { name: 'Aktualisieren', value: 'update', description: 'Eigenes Konto aktualisieren', action: 'Konto aktualisieren' }, + { name: 'Passwort Ändern', value: 'updatePassword', description: 'Eigenes Passwort ändern', action: 'Passwort ändern' }, + ], + default: 'get', + }, + + // ===================================================== + // GROUP OPERATIONS + // ===================================================== + { + displayName: 'Operation', + name: 'operation', + type: 'options', + noDataExpression: true, + displayOptions: { show: { resource: ['group'] } }, + options: [ + { name: 'Alle Abrufen', value: 'getAll', description: 'Alle Gruppen abrufen', action: 'Alle Gruppen abrufen' }, + { name: 'Abrufen', value: 'get', description: 'Gruppe abrufen', action: 'Gruppe abrufen' }, + { name: 'Erstellen', value: 'create', description: 'Neue Gruppe erstellen (Admin)', action: 'Gruppe erstellen' }, + { name: 'Aktualisieren', value: 'update', description: 'Gruppe aktualisieren (Admin)', action: 'Gruppe aktualisieren' }, + { name: 'Löschen', value: 'delete', description: 'Gruppe löschen (Admin)', action: 'Gruppe löschen' }, + { name: 'Rollen Ändern', value: 'changeRoles', description: 'Gruppenrollen ändern (Admin)', action: 'Rollen ändern' }, + { name: 'Berechtigungen Ändern', value: 'changePermissions', description: 'Gruppenberechtigungen ändern (Admin)', action: 'Berechtigungen ändern' }, + { name: 'Benutzer Ändern', value: 'changeUsers', description: 'Gruppenbenutzer ändern (Admin)', action: 'Benutzer ändern' }, + ], + default: 'getAll', + }, + + // ===================================================== + // ACCESSORY OPERATIONS + // ===================================================== + { + displayName: 'Operation', + name: 'operation', + type: 'options', + noDataExpression: true, + displayOptions: { show: { resource: ['accessory'] } }, + options: [ + { name: 'Alle Abrufen', value: 'getAll', description: 'Alle Zubehörteile abrufen', action: 'Alle Zubehörteile abrufen' }, + { name: 'Abrufen', value: 'get', description: 'Zubehörteil abrufen', action: 'Zubehörteil abrufen' }, + ], + default: 'getAll', + }, + + // ===================================================== + // ATTRIBUTE OPERATIONS + // ===================================================== + { + displayName: 'Operation', + name: 'operation', + type: 'options', + noDataExpression: true, + displayOptions: { show: { resource: ['attribute'] } }, + options: [ + { name: 'Abrufen', value: 'get', description: 'Attribut abrufen', action: 'Attribut abrufen' }, + { name: 'Nach Kategorie Abrufen', value: 'getByCategory', description: 'Attribute einer Kategorie abrufen', action: 'Attribute nach Kategorie abrufen' }, + { name: 'Erstellen', value: 'create', description: 'Neues Attribut erstellen (Admin)', action: 'Attribut erstellen' }, + { name: 'Aktualisieren', value: 'update', description: 'Attribut aktualisieren (Admin)', action: 'Attribut aktualisieren' }, + { name: 'Löschen', value: 'delete', description: 'Attribut löschen (Admin)', action: 'Attribut löschen' }, + ], + default: 'getByCategory', + }, + + // ===================================================== + // RESERVATION PARAMETERS + // ===================================================== + { + displayName: 'Referenznummer', + name: 'referenceNumber', + type: 'string', + required: true, + displayOptions: { show: { resource: ['reservation'], operation: ['get', 'update', 'delete', 'approve', 'checkIn', 'checkOut'] } }, + default: '', + description: 'Die eindeutige Referenznummer der Reservierung', + }, + { + displayName: 'Ressourcen-ID', + name: 'resourceId', + type: 'number', + required: true, + displayOptions: { show: { resource: ['reservation'], operation: ['create'] } }, + default: 1, + description: 'Die ID der zu reservierenden Ressource', + }, + { + displayName: 'Startzeit', + name: 'startDateTime', + type: 'dateTime', + required: true, + displayOptions: { show: { resource: ['reservation'], operation: ['create', 'update'] } }, + default: '', + description: 'Startzeitpunkt der Reservierung (ISO 8601 Format)', + }, + { + displayName: 'Endzeit', + name: 'endDateTime', + type: 'dateTime', + required: true, + displayOptions: { show: { resource: ['reservation'], operation: ['create', 'update'] } }, + default: '', + description: 'Endzeitpunkt der Reservierung (ISO 8601 Format)', + }, + { + displayName: 'Titel', + name: 'title', + type: 'string', + displayOptions: { show: { resource: ['reservation'], operation: ['create', 'update'] } }, + default: '', + description: 'Titel der Reservierung', + }, + { + displayName: 'Aktualisierungsbereich', + name: 'updateScope', + type: 'options', + displayOptions: { show: { resource: ['reservation'], operation: ['update', 'delete'] } }, + options: [ + { name: 'Nur Diese', value: 'this', description: 'Nur diese Instanz ändern' }, + { name: 'Zukünftige', value: 'future', description: 'Diese und alle zukünftigen Instanzen ändern' }, + { name: 'Alle', value: 'full', description: 'Alle Instanzen der Serie ändern' }, + ], + default: 'this', + }, + { + displayName: 'Zusätzliche Felder', + name: 'additionalFields', + type: 'collection', + placeholder: 'Feld hinzufügen', + default: {}, + displayOptions: { show: { resource: ['reservation'], operation: ['create', 'update'] } }, + options: [ + { displayName: 'Beschreibung', name: 'description', type: 'string', default: '' }, + { displayName: 'Benutzer-ID', name: 'userId', type: 'number', default: '' }, + { displayName: 'Zusätzliche Ressourcen', name: 'resources', type: 'string', default: '', description: 'Komma-getrennte Liste' }, + { displayName: 'Teilnehmer', name: 'participants', type: 'string', default: '', description: 'Komma-getrennte Benutzer-IDs' }, + { displayName: 'Eingeladene', name: 'invitees', type: 'string', default: '', description: 'Komma-getrennte Benutzer-IDs' }, + { displayName: 'Teilnahme Erlauben', name: 'allowParticipation', type: 'boolean', default: true }, + { displayName: 'Nutzungsbedingungen Akzeptiert', name: 'termsAccepted', type: 'boolean', default: true }, + ], + }, + { + displayName: 'Filter', + name: 'filters', + type: 'collection', + placeholder: 'Filter hinzufügen', + default: {}, + displayOptions: { show: { resource: ['reservation'], operation: ['getAll'] } }, + options: [ + { displayName: 'Benutzer-ID', name: 'userId', type: 'number', default: '' }, + { displayName: 'Ressourcen-ID', name: 'resourceId', type: 'number', default: '' }, + { displayName: 'Zeitplan-ID', name: 'scheduleId', type: 'number', default: '' }, + { displayName: 'Startzeit', name: 'startDateTime', type: 'dateTime', default: '' }, + { displayName: 'Endzeit', name: 'endDateTime', type: 'dateTime', default: '' }, + ], + }, + + // ===================================================== + // RESOURCE PARAMETERS + // ===================================================== + { + displayName: 'Ressourcen-ID', + name: 'resourceIdParam', + type: 'number', + required: true, + displayOptions: { show: { resource: ['resource'], operation: ['get', 'update', 'delete'] } }, + default: 1, + }, + { + displayName: 'Ressourcen-ID (Optional)', + name: 'resourceIdOptional', + type: 'number', + displayOptions: { show: { resource: ['resource'], operation: ['getAvailability'] } }, + default: '', + }, + { + displayName: 'Datum/Zeit', + name: 'availabilityDateTime', + type: 'dateTime', + displayOptions: { show: { resource: ['resource'], operation: ['getAvailability'] } }, + default: '', + }, + { + displayName: 'Ressourcen-Name', + name: 'resourceName', + type: 'string', + required: true, + displayOptions: { show: { resource: ['resource'], operation: ['create', 'update'] } }, + default: '', + }, + { + displayName: 'Zeitplan-ID', + name: 'scheduleIdForResource', + type: 'number', + required: true, + displayOptions: { show: { resource: ['resource'], operation: ['create'] } }, + default: 1, + }, + { + displayName: 'Ressourcen-Optionen', + name: 'resourceOptions', + type: 'collection', + placeholder: 'Option hinzufügen', + default: {}, + displayOptions: { show: { resource: ['resource'], operation: ['create', 'update'] } }, + options: [ + { displayName: 'Standort', name: 'location', type: 'string', default: '' }, + { displayName: 'Kontakt', name: 'contact', type: 'string', default: '' }, + { displayName: 'Beschreibung', name: 'description', type: 'string', default: '' }, + { displayName: 'Notizen', name: 'notes', type: 'string', default: '' }, + { displayName: 'Max. Teilnehmer', name: 'maxParticipants', type: 'number', default: 0 }, + { displayName: 'Genehmigung Erforderlich', name: 'requiresApproval', type: 'boolean', default: false }, + { displayName: 'Mehrtägig Erlauben', name: 'allowMultiday', type: 'boolean', default: false }, + { displayName: 'Check-In Erforderlich', name: 'requiresCheckIn', type: 'boolean', default: false }, + { displayName: 'Auto-Release Minuten', name: 'autoReleaseMinutes', type: 'number', default: 0 }, + { displayName: 'Farbe', name: 'color', type: 'string', default: '' }, + { displayName: 'Status-ID', name: 'statusId', type: 'options', options: [{ name: 'Versteckt', value: 0 }, { name: 'Verfügbar', value: 1 }, { name: 'Nicht Verfügbar', value: 2 }], default: 1 }, + ], + }, + + // ===================================================== + // SCHEDULE PARAMETERS + // ===================================================== + { + displayName: 'Zeitplan-ID', + name: 'scheduleId', + type: 'number', + required: true, + displayOptions: { show: { resource: ['schedule'], operation: ['get', 'getSlots'] } }, + default: 1, + }, + { + displayName: 'Slots-Filter', + name: 'slotsFilters', + type: 'collection', + placeholder: 'Filter hinzufügen', + default: {}, + displayOptions: { show: { resource: ['schedule'], operation: ['getSlots'] } }, + options: [ + { displayName: 'Ressourcen-ID', name: 'resourceId', type: 'number', default: '' }, + { displayName: 'Startzeit', name: 'startDateTime', type: 'dateTime', default: '' }, + { displayName: 'Endzeit', name: 'endDateTime', type: 'dateTime', default: '' }, + ], + }, + + // ===================================================== + // USER PARAMETERS + // ===================================================== + { + displayName: 'Benutzer-ID', + name: 'userId', + type: 'number', + required: true, + displayOptions: { show: { resource: ['user'], operation: ['get', 'update', 'updatePassword', 'delete'] } }, + default: 1, + }, + { + displayName: 'E-Mail', + name: 'emailAddress', + type: 'string', + required: true, + displayOptions: { show: { resource: ['user'], operation: ['create'] } }, + default: '', + }, + { + displayName: 'Benutzername', + name: 'userName', + type: 'string', + required: true, + displayOptions: { show: { resource: ['user'], operation: ['create'] } }, + default: '', + }, + { + displayName: 'Passwort', + name: 'password', + type: 'string', + typeOptions: { password: true }, + required: true, + displayOptions: { show: { resource: ['user'], operation: ['create', 'updatePassword'] } }, + default: '', + }, + { + displayName: 'Vorname', + name: 'firstName', + type: 'string', + required: true, + displayOptions: { show: { resource: ['user'], operation: ['create', 'update'] } }, + default: '', + }, + { + displayName: 'Nachname', + name: 'lastName', + type: 'string', + required: true, + displayOptions: { show: { resource: ['user'], operation: ['create', 'update'] } }, + default: '', + }, + { + displayName: 'Benutzer-Filter', + name: 'userFilters', + type: 'collection', + placeholder: 'Filter hinzufügen', + default: {}, + displayOptions: { show: { resource: ['user'], operation: ['getAll'] } }, + options: [ + { displayName: 'Benutzername', name: 'username', type: 'string', default: '' }, + { displayName: 'E-Mail', name: 'email', type: 'string', default: '' }, + { displayName: 'Vorname', name: 'firstName', type: 'string', default: '' }, + { displayName: 'Nachname', name: 'lastName', type: 'string', default: '' }, + { displayName: 'Organisation', name: 'organization', type: 'string', default: '' }, + ], + }, + { + displayName: 'Benutzer-Optionen', + name: 'userOptions', + type: 'collection', + placeholder: 'Option hinzufügen', + default: {}, + displayOptions: { show: { resource: ['user'], operation: ['create', 'update'] } }, + options: [ + { displayName: 'Zeitzone', name: 'timezone', type: 'string', default: 'Europe/Berlin' }, + { displayName: 'Sprache', name: 'language', type: 'string', default: 'de_de' }, + { displayName: 'Telefon', name: 'phone', type: 'string', default: '' }, + { displayName: 'Organisation', name: 'organization', type: 'string', default: '' }, + { displayName: 'Position', name: 'position', type: 'string', default: '' }, + { displayName: 'Gruppen', name: 'groups', type: 'string', default: '', description: 'Komma-getrennte Gruppen-IDs' }, + ], + }, + + // ===================================================== + // ACCOUNT PARAMETERS + // ===================================================== + { + displayName: 'Benutzer-ID', + name: 'accountUserId', + type: 'number', + required: true, + displayOptions: { show: { resource: ['account'], operation: ['get', 'update', 'updatePassword'] } }, + default: '', + }, + { + displayName: 'Account-Daten', + name: 'accountData', + type: 'collection', + placeholder: 'Feld hinzufügen', + default: {}, + displayOptions: { show: { resource: ['account'], operation: ['create', 'update'] } }, + options: [ + { displayName: 'E-Mail', name: 'emailAddress', type: 'string', default: '' }, + { displayName: 'Benutzername', name: 'userName', type: 'string', default: '' }, + { displayName: 'Passwort', name: 'password', type: 'string', typeOptions: { password: true }, default: '' }, + { displayName: 'Vorname', name: 'firstName', type: 'string', default: '' }, + { displayName: 'Nachname', name: 'lastName', type: 'string', default: '' }, + { displayName: 'Zeitzone', name: 'timezone', type: 'string', default: 'Europe/Berlin' }, + { displayName: 'Sprache', name: 'language', type: 'string', default: 'de_de' }, + { displayName: 'Telefon', name: 'phone', type: 'string', default: '' }, + { displayName: 'Organisation', name: 'organization', type: 'string', default: '' }, + { displayName: 'Position', name: 'position', type: 'string', default: '' }, + { displayName: 'AGB Akzeptiert', name: 'acceptTermsOfService', type: 'boolean', default: true }, + ], + }, + { + displayName: 'Passwort-Änderung', + name: 'passwordChange', + type: 'fixedCollection', + default: {}, + displayOptions: { show: { resource: ['account'], operation: ['updatePassword'] } }, + options: [ + { + name: 'passwords', + displayName: 'Passwörter', + values: [ + { displayName: 'Aktuelles Passwort', name: 'currentPassword', type: 'string', typeOptions: { password: true }, default: '' }, + { displayName: 'Neues Passwort', name: 'newPassword', type: 'string', typeOptions: { password: true }, default: '' }, + ], + }, + ], + }, + + // ===================================================== + // GROUP PARAMETERS + // ===================================================== + { + displayName: 'Gruppen-ID', + name: 'groupId', + type: 'number', + required: true, + displayOptions: { show: { resource: ['group'], operation: ['get', 'update', 'delete', 'changeRoles', 'changePermissions', 'changeUsers'] } }, + default: 1, + }, + { + displayName: 'Gruppen-Name', + name: 'groupName', + type: 'string', + required: true, + displayOptions: { show: { resource: ['group'], operation: ['create', 'update'] } }, + default: '', + }, + { + displayName: 'Standard-Gruppe', + name: 'isDefault', + type: 'boolean', + displayOptions: { show: { resource: ['group'], operation: ['create', 'update'] } }, + default: false, + }, + { + displayName: 'Rollen-IDs', + name: 'roleIds', + type: 'string', + displayOptions: { show: { resource: ['group'], operation: ['changeRoles'] } }, + default: '', + description: '1=Gruppenadmin, 2=App-Admin, 3=Ressourcen-Admin, 4=Zeitplan-Admin', + }, + { + displayName: 'Ressourcen-IDs', + name: 'permissionResourceIds', + type: 'string', + displayOptions: { show: { resource: ['group'], operation: ['changePermissions'] } }, + default: '', + }, + { + displayName: 'Benutzer-IDs', + name: 'groupUserIds', + type: 'string', + displayOptions: { show: { resource: ['group'], operation: ['changeUsers'] } }, + default: '', + }, + + // ===================================================== + // ACCESSORY PARAMETERS + // ===================================================== + { + displayName: 'Zubehör-ID', + name: 'accessoryId', + type: 'number', + required: true, + displayOptions: { show: { resource: ['accessory'], operation: ['get'] } }, + default: 1, + }, + + // ===================================================== + // ATTRIBUTE PARAMETERS + // ===================================================== + { + displayName: 'Attribut-ID', + name: 'attributeId', + type: 'number', + required: true, + displayOptions: { show: { resource: ['attribute'], operation: ['get', 'update', 'delete'] } }, + default: 1, + }, + { + displayName: 'Kategorie-ID', + name: 'categoryId', + type: 'options', + required: true, + displayOptions: { show: { resource: ['attribute'], operation: ['getByCategory', 'create'] } }, + options: [ + { name: 'Reservierung', value: 1 }, + { name: 'Benutzer', value: 2 }, + { name: 'Ressource', value: 4 }, + { name: 'Ressourcen-Typ', value: 5 }, + ], + default: 1, + }, + { + displayName: 'Attribut-Label', + name: 'attributeLabel', + type: 'string', + required: true, + displayOptions: { show: { resource: ['attribute'], operation: ['create', 'update'] } }, + default: '', + }, + { + displayName: 'Attribut-Typ', + name: 'attributeType', + type: 'options', + required: true, + displayOptions: { show: { resource: ['attribute'], operation: ['create', 'update'] } }, + options: [ + { name: 'Einzeilig', value: 1 }, + { name: 'Mehrzeilig', value: 2 }, + { name: 'Auswahlliste', value: 3 }, + { name: 'Checkbox', value: 4 }, + { name: 'Datum/Zeit', value: 5 }, + ], + default: 1, + }, + { + displayName: 'Attribut-Optionen', + name: 'attributeOptions', + type: 'collection', + placeholder: 'Option hinzufügen', + default: {}, + displayOptions: { show: { resource: ['attribute'], operation: ['create', 'update'] } }, + options: [ + { displayName: 'Erforderlich', name: 'required', type: 'boolean', default: false }, + { displayName: 'Nur Admin', name: 'adminOnly', type: 'boolean', default: false }, + { displayName: 'Privat', name: 'isPrivate', type: 'boolean', default: false }, + { displayName: 'Sortierung', name: 'sortOrder', type: 'number', default: 0 }, + { displayName: 'Regex-Validierung', name: 'regex', type: 'string', default: '' }, + { displayName: 'Mögliche Werte', name: 'possibleValues', type: 'string', default: '', description: 'Komma-getrennt' }, + ], + }, + ], + }; + + async execute(this: IExecuteFunctions): Promise { + const items = this.getInputData(); + const returnData: INodeExecutionData[] = []; + + const credentials = await this.getCredentials('libreBookingApi'); + const baseUrl = (credentials.url as string).replace(/\/$/, ''); + const username = credentials.username as string; + const pw = credentials.password as string; + + const session = await authenticate(this, baseUrl, username, pw); + + try { + for (let i = 0; i < items.length; i++) { + try { + const resource = this.getNodeParameter('resource', i) as string; + const operation = this.getNodeParameter('operation', i) as string; + let responseData: any; + + // RESERVATION + if (resource === 'reservation') { + if (operation === 'getAll') { + const filters = this.getNodeParameter('filters', i, {}) as any; + const qs: any = {}; + if (filters.userId) qs.userId = filters.userId; + if (filters.resourceId) qs.resourceId = filters.resourceId; + if (filters.scheduleId) qs.scheduleId = filters.scheduleId; + if (filters.startDateTime) qs.startDateTime = filters.startDateTime; + if (filters.endDateTime) qs.endDateTime = filters.endDateTime; + responseData = await makeApiRequest(this, baseUrl, session, 'GET', '/Reservations/', undefined, qs); + } else if (operation === 'get') { + const referenceNumber = this.getNodeParameter('referenceNumber', i) as string; + responseData = await makeApiRequest(this, baseUrl, session, 'GET', `/Reservations/${referenceNumber}`); + } else if (operation === 'create') { + const resourceId = this.getNodeParameter('resourceId', i) as number; + const startDateTime = this.getNodeParameter('startDateTime', i) as string; + const endDateTime = this.getNodeParameter('endDateTime', i) as string; + const title = this.getNodeParameter('title', i, '') as string; + const additionalFields = this.getNodeParameter('additionalFields', i, {}) as any; + const body: any = { resourceId, startDateTime: new Date(startDateTime).toISOString(), endDateTime: new Date(endDateTime).toISOString() }; + if (title) body.title = title; + if (additionalFields.description) body.description = additionalFields.description; + if (additionalFields.userId) body.userId = additionalFields.userId; + if (additionalFields.resources) body.resources = parseIdList(additionalFields.resources); + if (additionalFields.participants) body.participants = parseIdList(additionalFields.participants); + if (additionalFields.invitees) body.invitees = parseIdList(additionalFields.invitees); + if (additionalFields.allowParticipation !== undefined) body.allowParticipation = additionalFields.allowParticipation; + if (additionalFields.termsAccepted !== undefined) body.termsAccepted = additionalFields.termsAccepted; + responseData = await makeApiRequest(this, baseUrl, session, 'POST', '/Reservations/', body); + } else if (operation === 'update') { + const referenceNumber = this.getNodeParameter('referenceNumber', i) as string; + const startDateTime = this.getNodeParameter('startDateTime', i) as string; + const endDateTime = this.getNodeParameter('endDateTime', i) as string; + const title = this.getNodeParameter('title', i, '') as string; + const updateScope = this.getNodeParameter('updateScope', i, 'this') as string; + const additionalFields = this.getNodeParameter('additionalFields', i, {}) as any; + const body: any = { startDateTime: new Date(startDateTime).toISOString(), endDateTime: new Date(endDateTime).toISOString() }; + if (title) body.title = title; + if (additionalFields.description) body.description = additionalFields.description; + if (additionalFields.resourceId) body.resourceId = additionalFields.resourceId; + if (additionalFields.userId) body.userId = additionalFields.userId; + if (additionalFields.resources) body.resources = parseIdList(additionalFields.resources); + if (additionalFields.participants) body.participants = parseIdList(additionalFields.participants); + if (additionalFields.invitees) body.invitees = parseIdList(additionalFields.invitees); + responseData = await makeApiRequest(this, baseUrl, session, 'POST', `/Reservations/${referenceNumber}?updateScope=${updateScope}`, body); + } else if (operation === 'delete') { + const referenceNumber = this.getNodeParameter('referenceNumber', i) as string; + const updateScope = this.getNodeParameter('updateScope', i, 'this') as string; + responseData = await makeApiRequest(this, baseUrl, session, 'DELETE', `/Reservations/${referenceNumber}?updateScope=${updateScope}`); + } else if (operation === 'approve') { + const referenceNumber = this.getNodeParameter('referenceNumber', i) as string; + responseData = await makeApiRequest(this, baseUrl, session, 'POST', `/Reservations/${referenceNumber}/Approval`); + } else if (operation === 'checkIn') { + const referenceNumber = this.getNodeParameter('referenceNumber', i) as string; + responseData = await makeApiRequest(this, baseUrl, session, 'POST', `/Reservations/${referenceNumber}/CheckIn`); + } else if (operation === 'checkOut') { + const referenceNumber = this.getNodeParameter('referenceNumber', i) as string; + responseData = await makeApiRequest(this, baseUrl, session, 'POST', `/Reservations/${referenceNumber}/CheckOut`); + } + } + + // RESOURCE + else if (resource === 'resource') { + if (operation === 'getAll') { + responseData = await makeApiRequest(this, baseUrl, session, 'GET', '/Resources/'); + } else if (operation === 'get') { + const resourceIdParam = this.getNodeParameter('resourceIdParam', i) as number; + responseData = await makeApiRequest(this, baseUrl, session, 'GET', `/Resources/${resourceIdParam}`); + } else if (operation === 'getAvailability') { + const resourceIdOptional = this.getNodeParameter('resourceIdOptional', i, '') as number | ''; + const availabilityDateTime = this.getNodeParameter('availabilityDateTime', i, '') as string; + let endpoint = '/Resources/Availability'; + if (resourceIdOptional) endpoint = `/Resources/${resourceIdOptional}/Availability`; + const qs: any = {}; + if (availabilityDateTime) qs.dateTime = new Date(availabilityDateTime).toISOString(); + responseData = await makeApiRequest(this, baseUrl, session, 'GET', endpoint, undefined, qs); + } else if (operation === 'getGroups') { + responseData = await makeApiRequest(this, baseUrl, session, 'GET', '/Resources/Groups'); + } else if (operation === 'getTypes') { + responseData = await makeApiRequest(this, baseUrl, session, 'GET', '/Resources/Types'); + } else if (operation === 'getStatuses') { + responseData = await makeApiRequest(this, baseUrl, session, 'GET', '/Resources/Status'); + } else if (operation === 'create') { + const resourceName = this.getNodeParameter('resourceName', i) as string; + const scheduleIdForResource = this.getNodeParameter('scheduleIdForResource', i) as number; + const resourceOptions = this.getNodeParameter('resourceOptions', i, {}) as any; + const body: any = { name: resourceName, scheduleId: scheduleIdForResource }; + if (resourceOptions.location) body.location = resourceOptions.location; + if (resourceOptions.contact) body.contact = resourceOptions.contact; + if (resourceOptions.description) body.description = resourceOptions.description; + if (resourceOptions.notes) body.notes = resourceOptions.notes; + if (resourceOptions.maxParticipants) body.maxParticipants = resourceOptions.maxParticipants; + if (resourceOptions.requiresApproval !== undefined) body.requiresApproval = resourceOptions.requiresApproval; + if (resourceOptions.allowMultiday !== undefined) body.allowMultiday = resourceOptions.allowMultiday; + if (resourceOptions.requiresCheckIn !== undefined) body.requiresCheckIn = resourceOptions.requiresCheckIn; + if (resourceOptions.autoReleaseMinutes) body.autoReleaseMinutes = resourceOptions.autoReleaseMinutes; + if (resourceOptions.color) body.color = resourceOptions.color; + if (resourceOptions.statusId !== undefined) body.statusId = resourceOptions.statusId; + responseData = await makeApiRequest(this, baseUrl, session, 'POST', '/Resources/', body); + } else if (operation === 'update') { + const resourceIdParam = this.getNodeParameter('resourceIdParam', i) as number; + const resourceName = this.getNodeParameter('resourceName', i) as string; + const resourceOptions = this.getNodeParameter('resourceOptions', i, {}) as any; + const body: any = { name: resourceName }; + if (resourceOptions.location) body.location = resourceOptions.location; + if (resourceOptions.contact) body.contact = resourceOptions.contact; + if (resourceOptions.description) body.description = resourceOptions.description; + if (resourceOptions.notes) body.notes = resourceOptions.notes; + if (resourceOptions.maxParticipants) body.maxParticipants = resourceOptions.maxParticipants; + if (resourceOptions.requiresApproval !== undefined) body.requiresApproval = resourceOptions.requiresApproval; + if (resourceOptions.allowMultiday !== undefined) body.allowMultiday = resourceOptions.allowMultiday; + if (resourceOptions.requiresCheckIn !== undefined) body.requiresCheckIn = resourceOptions.requiresCheckIn; + if (resourceOptions.autoReleaseMinutes) body.autoReleaseMinutes = resourceOptions.autoReleaseMinutes; + if (resourceOptions.color) body.color = resourceOptions.color; + if (resourceOptions.statusId !== undefined) body.statusId = resourceOptions.statusId; + responseData = await makeApiRequest(this, baseUrl, session, 'POST', `/Resources/${resourceIdParam}`, body); + } else if (operation === 'delete') { + const resourceIdParam = this.getNodeParameter('resourceIdParam', i) as number; + responseData = await makeApiRequest(this, baseUrl, session, 'DELETE', `/Resources/${resourceIdParam}`); + } + } + + // SCHEDULE + else if (resource === 'schedule') { + if (operation === 'getAll') { + responseData = await makeApiRequest(this, baseUrl, session, 'GET', '/Schedules/'); + } else if (operation === 'get') { + const scheduleId = this.getNodeParameter('scheduleId', i) as number; + responseData = await makeApiRequest(this, baseUrl, session, 'GET', `/Schedules/${scheduleId}`); + } else if (operation === 'getSlots') { + const scheduleId = this.getNodeParameter('scheduleId', i) as number; + const slotsFilters = this.getNodeParameter('slotsFilters', i, {}) as any; + const qs: any = {}; + if (slotsFilters.resourceId) qs.resourceId = slotsFilters.resourceId; + if (slotsFilters.startDateTime) qs.startDateTime = new Date(slotsFilters.startDateTime).toISOString(); + if (slotsFilters.endDateTime) qs.endDateTime = new Date(slotsFilters.endDateTime).toISOString(); + responseData = await makeApiRequest(this, baseUrl, session, 'GET', `/Schedules/${scheduleId}/Slots`, undefined, qs); + } + } + + // USER + else if (resource === 'user') { + if (operation === 'getAll') { + const userFilters = this.getNodeParameter('userFilters', i, {}) as any; + const qs: any = {}; + if (userFilters.username) qs.username = userFilters.username; + if (userFilters.email) qs.email = userFilters.email; + if (userFilters.firstName) qs.firstName = userFilters.firstName; + if (userFilters.lastName) qs.lastName = userFilters.lastName; + if (userFilters.organization) qs.organization = userFilters.organization; + responseData = await makeApiRequest(this, baseUrl, session, 'GET', '/Users/', undefined, qs); + } else if (operation === 'get') { + const userId = this.getNodeParameter('userId', i) as number; + responseData = await makeApiRequest(this, baseUrl, session, 'GET', `/Users/${userId}`); + } else if (operation === 'create') { + const emailAddress = this.getNodeParameter('emailAddress', i) as string; + const userName = this.getNodeParameter('userName', i) as string; + const pw = this.getNodeParameter('password', i) as string; + const firstName = this.getNodeParameter('firstName', i) as string; + const lastName = this.getNodeParameter('lastName', i) as string; + const userOptions = this.getNodeParameter('userOptions', i, {}) as any; + const body: any = { emailAddress, userName, password: pw, firstName, lastName }; + if (userOptions.timezone) body.timezone = userOptions.timezone; + if (userOptions.language) body.language = userOptions.language; + if (userOptions.phone) body.phone = userOptions.phone; + if (userOptions.organization) body.organization = userOptions.organization; + if (userOptions.position) body.position = userOptions.position; + if (userOptions.groups) body.groups = parseIdList(userOptions.groups); + responseData = await makeApiRequest(this, baseUrl, session, 'POST', '/Users/', body); + } else if (operation === 'update') { + const userId = this.getNodeParameter('userId', i) as number; + const firstName = this.getNodeParameter('firstName', i) as string; + const lastName = this.getNodeParameter('lastName', i) as string; + const userOptions = this.getNodeParameter('userOptions', i, {}) as any; + const body: any = { firstName, lastName }; + if (userOptions.timezone) body.timezone = userOptions.timezone; + if (userOptions.language) body.language = userOptions.language; + if (userOptions.phone) body.phone = userOptions.phone; + if (userOptions.organization) body.organization = userOptions.organization; + if (userOptions.position) body.position = userOptions.position; + if (userOptions.groups) body.groups = parseIdList(userOptions.groups); + responseData = await makeApiRequest(this, baseUrl, session, 'POST', `/Users/${userId}`, body); + } else if (operation === 'updatePassword') { + const userId = this.getNodeParameter('userId', i) as number; + const pw = this.getNodeParameter('password', i) as string; + responseData = await makeApiRequest(this, baseUrl, session, 'POST', `/Users/${userId}/Password`, { password: pw }); + } else if (operation === 'delete') { + const userId = this.getNodeParameter('userId', i) as number; + responseData = await makeApiRequest(this, baseUrl, session, 'DELETE', `/Users/${userId}`); + } + } + + // ACCOUNT + else if (resource === 'account') { + if (operation === 'get') { + const accountUserId = this.getNodeParameter('accountUserId', i) as number; + responseData = await makeApiRequest(this, baseUrl, session, 'GET', `/Accounts/${accountUserId}`); + } else if (operation === 'create') { + const accountData = this.getNodeParameter('accountData', i, {}) as any; + const body: any = {}; + if (accountData.emailAddress) body.emailAddress = accountData.emailAddress; + if (accountData.userName) body.userName = accountData.userName; + if (accountData.password) body.password = accountData.password; + if (accountData.firstName) body.firstName = accountData.firstName; + if (accountData.lastName) body.lastName = accountData.lastName; + if (accountData.timezone) body.timezone = accountData.timezone; + if (accountData.language) body.language = accountData.language; + if (accountData.phone) body.phone = accountData.phone; + if (accountData.organization) body.organization = accountData.organization; + if (accountData.position) body.position = accountData.position; + if (accountData.acceptTermsOfService !== undefined) body.acceptTermsOfService = accountData.acceptTermsOfService; + responseData = await makeApiRequest(this, baseUrl, session, 'POST', '/Accounts/', body); + } else if (operation === 'update') { + const accountUserId = this.getNodeParameter('accountUserId', i) as number; + const accountData = this.getNodeParameter('accountData', i, {}) as any; + const body: any = {}; + if (accountData.emailAddress) body.emailAddress = accountData.emailAddress; + if (accountData.userName) body.userName = accountData.userName; + if (accountData.firstName) body.firstName = accountData.firstName; + if (accountData.lastName) body.lastName = accountData.lastName; + if (accountData.timezone) body.timezone = accountData.timezone; + if (accountData.language) body.language = accountData.language; + if (accountData.phone) body.phone = accountData.phone; + if (accountData.organization) body.organization = accountData.organization; + if (accountData.position) body.position = accountData.position; + responseData = await makeApiRequest(this, baseUrl, session, 'POST', `/Accounts/${accountUserId}`, body); + } else if (operation === 'updatePassword') { + const accountUserId = this.getNodeParameter('accountUserId', i) as number; + const passwordChange = this.getNodeParameter('passwordChange', i, {}) as any; + const passwords = passwordChange.passwords || {}; + responseData = await makeApiRequest(this, baseUrl, session, 'POST', `/Accounts/${accountUserId}/Password`, { + currentPassword: passwords.currentPassword, + newPassword: passwords.newPassword, + }); + } + } + + // GROUP + else if (resource === 'group') { + if (operation === 'getAll') { + responseData = await makeApiRequest(this, baseUrl, session, 'GET', '/Groups/'); + } else if (operation === 'get') { + const groupId = this.getNodeParameter('groupId', i) as number; + responseData = await makeApiRequest(this, baseUrl, session, 'GET', `/Groups/${groupId}`); + } else if (operation === 'create') { + const groupName = this.getNodeParameter('groupName', i) as string; + const isDefault = this.getNodeParameter('isDefault', i, false) as boolean; + responseData = await makeApiRequest(this, baseUrl, session, 'POST', '/Groups/', { name: groupName, isDefault }); + } else if (operation === 'update') { + const groupId = this.getNodeParameter('groupId', i) as number; + const groupName = this.getNodeParameter('groupName', i) as string; + const isDefault = this.getNodeParameter('isDefault', i, false) as boolean; + responseData = await makeApiRequest(this, baseUrl, session, 'POST', `/Groups/${groupId}`, { name: groupName, isDefault }); + } else if (operation === 'delete') { + const groupId = this.getNodeParameter('groupId', i) as number; + responseData = await makeApiRequest(this, baseUrl, session, 'DELETE', `/Groups/${groupId}`); + } else if (operation === 'changeRoles') { + const groupId = this.getNodeParameter('groupId', i) as number; + const roleIds = this.getNodeParameter('roleIds', i, '') as string; + responseData = await makeApiRequest(this, baseUrl, session, 'POST', `/Groups/${groupId}/Roles`, { roleIds: parseIdList(roleIds) }); + } else if (operation === 'changePermissions') { + const groupId = this.getNodeParameter('groupId', i) as number; + const permissionResourceIds = this.getNodeParameter('permissionResourceIds', i, '') as string; + responseData = await makeApiRequest(this, baseUrl, session, 'POST', `/Groups/${groupId}/Permissions`, { resourceIds: parseIdList(permissionResourceIds) }); + } else if (operation === 'changeUsers') { + const groupId = this.getNodeParameter('groupId', i) as number; + const groupUserIds = this.getNodeParameter('groupUserIds', i, '') as string; + responseData = await makeApiRequest(this, baseUrl, session, 'POST', `/Groups/${groupId}/Users`, { userIds: parseIdList(groupUserIds) }); + } + } + + // ACCESSORY + else if (resource === 'accessory') { + if (operation === 'getAll') { + responseData = await makeApiRequest(this, baseUrl, session, 'GET', '/Accessories/'); + } else if (operation === 'get') { + const accessoryId = this.getNodeParameter('accessoryId', i) as number; + responseData = await makeApiRequest(this, baseUrl, session, 'GET', `/Accessories/${accessoryId}`); + } + } + + // ATTRIBUTE + else if (resource === 'attribute') { + if (operation === 'get') { + const attributeId = this.getNodeParameter('attributeId', i) as number; + responseData = await makeApiRequest(this, baseUrl, session, 'GET', `/Attributes/${attributeId}`); + } else if (operation === 'getByCategory') { + const categoryId = this.getNodeParameter('categoryId', i) as number; + responseData = await makeApiRequest(this, baseUrl, session, 'GET', `/Attributes/Category/${categoryId}`); + } else if (operation === 'create') { + const attributeLabel = this.getNodeParameter('attributeLabel', i) as string; + const attributeType = this.getNodeParameter('attributeType', i) as number; + const categoryId = this.getNodeParameter('categoryId', i) as number; + const attributeOptions = this.getNodeParameter('attributeOptions', i, {}) as any; + const body: any = { label: attributeLabel, type: attributeType, categoryId }; + if (attributeOptions.required !== undefined) body.required = attributeOptions.required; + if (attributeOptions.adminOnly !== undefined) body.adminOnly = attributeOptions.adminOnly; + if (attributeOptions.isPrivate !== undefined) body.isPrivate = attributeOptions.isPrivate; + if (attributeOptions.sortOrder !== undefined) body.sortOrder = attributeOptions.sortOrder; + if (attributeOptions.regex) body.regex = attributeOptions.regex; + if (attributeOptions.possibleValues) body.possibleValues = attributeOptions.possibleValues.split(',').map((v: string) => v.trim()); + responseData = await makeApiRequest(this, baseUrl, session, 'POST', '/Attributes/', body); + } else if (operation === 'update') { + const attributeId = this.getNodeParameter('attributeId', i) as number; + const attributeLabel = this.getNodeParameter('attributeLabel', i) as string; + const attributeType = this.getNodeParameter('attributeType', i) as number; + const attributeOptions = this.getNodeParameter('attributeOptions', i, {}) as any; + const body: any = { label: attributeLabel, type: attributeType }; + if (attributeOptions.required !== undefined) body.required = attributeOptions.required; + if (attributeOptions.adminOnly !== undefined) body.adminOnly = attributeOptions.adminOnly; + if (attributeOptions.isPrivate !== undefined) body.isPrivate = attributeOptions.isPrivate; + if (attributeOptions.sortOrder !== undefined) body.sortOrder = attributeOptions.sortOrder; + if (attributeOptions.regex) body.regex = attributeOptions.regex; + if (attributeOptions.possibleValues) body.possibleValues = attributeOptions.possibleValues.split(',').map((v: string) => v.trim()); + responseData = await makeApiRequest(this, baseUrl, session, 'POST', `/Attributes/${attributeId}`, body); + } else if (operation === 'delete') { + const attributeId = this.getNodeParameter('attributeId', i) as number; + responseData = await makeApiRequest(this, baseUrl, session, 'DELETE', `/Attributes/${attributeId}`); + } + } + + // Process response + if (responseData) { + if (Array.isArray(responseData)) { + returnData.push(...responseData.map(item => ({ json: item }))); + } else if (responseData.reservations) { + returnData.push(...responseData.reservations.map((item: any) => ({ json: item }))); + } else if (responseData.resources) { + returnData.push(...responseData.resources.map((item: any) => ({ json: item }))); + } else if (responseData.schedules) { + returnData.push(...responseData.schedules.map((item: any) => ({ json: item }))); + } else if (responseData.users) { + returnData.push(...responseData.users.map((item: any) => ({ json: item }))); + } else if (responseData.groups) { + returnData.push(...responseData.groups.map((item: any) => ({ json: item }))); + } else if (responseData.accessories) { + returnData.push(...responseData.accessories.map((item: any) => ({ json: item }))); + } else if (responseData.attributes) { + returnData.push(...responseData.attributes.map((item: any) => ({ json: item }))); + } else { + returnData.push({ json: responseData }); + } + } + + } catch (error: any) { + if (this.continueOnFail()) { + returnData.push({ json: { error: error.message } }); + continue; + } + throw error; + } + } + } finally { + await signOut(this, baseUrl, session); + } + + return [returnData]; + } +} diff --git a/custom-nodes/nodes/LibreBooking/librebooking.svg b/custom-nodes/nodes/LibreBooking/librebooking.svg new file mode 100644 index 0000000..81306a9 --- /dev/null +++ b/custom-nodes/nodes/LibreBooking/librebooking.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/custom-nodes/nodes/LibreBookingTrigger/LibreBookingTrigger.node.ts b/custom-nodes/nodes/LibreBookingTrigger/LibreBookingTrigger.node.ts new file mode 100644 index 0000000..5e2e9ae --- /dev/null +++ b/custom-nodes/nodes/LibreBookingTrigger/LibreBookingTrigger.node.ts @@ -0,0 +1,352 @@ +import { + INodeType, + INodeTypeDescription, + IPollFunctions, + INodeExecutionData, + NodeApiError, + NodeOperationError, +} from 'n8n-workflow'; + +interface LibreBookingSession { + sessionToken: string; + userId: number; + sessionExpires: string; +} + +interface ReservationData { + referenceNumber: string; + startDate: string; + endDate: string; + title: string; + resourceId: number; + userId: number; + [key: string]: any; +} + +/** + * Authentifizierung bei LibreBooking + */ +async function authenticateTrigger( + pollFunctions: IPollFunctions, + baseUrl: string, + username: string, + password: string, +): Promise { + try { + const response = await pollFunctions.helpers.httpRequest({ + method: 'POST', + url: `${baseUrl}/Web/Services/index.php/Authentication/Authenticate`, + headers: { 'Content-Type': 'application/json' }, + body: { username, password }, + json: true, + }); + + if (!response.isAuthenticated) { + throw new NodeOperationError( + pollFunctions.getNode(), + 'Authentifizierung fehlgeschlagen', + ); + } + + return { + sessionToken: response.sessionToken, + userId: response.userId, + sessionExpires: response.sessionExpires, + }; + } catch (error: any) { + throw new NodeApiError(pollFunctions.getNode(), error, { + message: 'Authentifizierung fehlgeschlagen', + }); + } +} + +/** + * Abmeldung + */ +async function signOutTrigger( + pollFunctions: IPollFunctions, + baseUrl: string, + session: LibreBookingSession, +): Promise { + try { + await pollFunctions.helpers.httpRequest({ + method: 'POST', + url: `${baseUrl}/Web/Services/index.php/Authentication/SignOut`, + headers: { 'Content-Type': 'application/json' }, + body: { + userId: session.userId, + sessionToken: session.sessionToken, + }, + json: true, + }); + } catch (error) { + // Ignoriere SignOut-Fehler + } +} + +/** + * Reservierungen abrufen + */ +async function getReservations( + pollFunctions: IPollFunctions, + baseUrl: string, + session: LibreBookingSession, + startDateTime: string, + endDateTime: string, + filters: any, +): Promise { + const qs: any = { + startDateTime, + endDateTime, + }; + + if (filters.resourceId) qs.resourceId = filters.resourceId; + if (filters.scheduleId) qs.scheduleId = filters.scheduleId; + if (filters.userId) qs.userId = filters.userId; + + const response = await pollFunctions.helpers.httpRequest({ + method: 'GET', + url: `${baseUrl}/Web/Services/index.php/Reservations/`, + headers: { + 'Content-Type': 'application/json', + 'X-Booked-SessionToken': session.sessionToken, + 'X-Booked-UserId': session.userId.toString(), + }, + qs, + json: true, + }); + + return response.reservations || []; +} + +/** + * Detaillierte Reservierungsdaten abrufen + */ +async function getReservationDetails( + pollFunctions: IPollFunctions, + baseUrl: string, + session: LibreBookingSession, + referenceNumber: string, +): Promise { + const response = await pollFunctions.helpers.httpRequest({ + method: 'GET', + url: `${baseUrl}/Web/Services/index.php/Reservations/${referenceNumber}`, + headers: { + 'Content-Type': 'application/json', + 'X-Booked-SessionToken': session.sessionToken, + 'X-Booked-UserId': session.userId.toString(), + }, + json: true, + }); + + return response; +} + +/** + * Zeitfenster berechnen + */ +function getTimeWindow(timeWindow: string): { start: string; end: string } { + const now = new Date(); + const start = now.toISOString(); + + let endDate = new Date(now); + switch (timeWindow) { + case '7days': + endDate.setDate(endDate.getDate() + 7); + break; + case '14days': + endDate.setDate(endDate.getDate() + 14); + break; + case '30days': + endDate.setDate(endDate.getDate() + 30); + break; + case '90days': + endDate.setDate(endDate.getDate() + 90); + break; + default: + endDate.setDate(endDate.getDate() + 14); + } + + return { + start, + end: endDate.toISOString(), + }; +} + +/** + * Eindeutigen Schlüssel für Reservierung generieren + */ +function getReservationKey(reservation: ReservationData): string { + return `${reservation.referenceNumber}_${reservation.startDate}_${reservation.endDate}_${reservation.title || ''}`; +} + +/** + * LibreBooking Trigger Node + */ +export class LibreBookingTrigger implements INodeType { + description: INodeTypeDescription = { + displayName: 'LibreBooking Trigger', + name: 'libreBookingTrigger', + icon: 'file:librebooking.svg', + group: ['trigger'], + version: 1, + description: 'Wird bei neuen oder geänderten Reservierungen in LibreBooking ausgelöst', + subtitle: '={{$parameter["event"]}}', + defaults: { + name: 'LibreBooking Trigger', + }, + inputs: [], + outputs: ['main'], + credentials: [ + { + name: 'libreBookingApi', + required: true, + }, + ], + polling: true, + properties: [ + { + displayName: 'Event', + name: 'event', + type: 'options', + options: [ + { name: 'Neue Reservierung', value: 'newReservation', description: 'Wird bei neuen Reservierungen ausgelöst' }, + { name: 'Geänderte Reservierung', value: 'updatedReservation', description: 'Wird bei geänderten Reservierungen ausgelöst' }, + { name: 'Alle Reservierungen', value: 'allReservations', description: 'Wird bei neuen und geänderten Reservierungen ausgelöst' }, + ], + default: 'newReservation', + }, + { + displayName: 'Filter', + name: 'filters', + type: 'collection', + placeholder: 'Filter hinzufügen', + default: {}, + options: [ + { displayName: 'Ressourcen-ID', name: 'resourceId', type: 'number', default: '' }, + { displayName: 'Zeitplan-ID', name: 'scheduleId', type: 'number', default: '' }, + { displayName: 'Benutzer-ID', name: 'userId', type: 'number', default: '' }, + ], + }, + { + displayName: 'Zeitfenster', + name: 'timeWindow', + type: 'options', + options: [ + { name: 'Nächste 7 Tage', value: '7days' }, + { name: 'Nächste 14 Tage', value: '14days' }, + { name: 'Nächste 30 Tage', value: '30days' }, + { name: 'Nächste 90 Tage', value: '90days' }, + ], + default: '14days', + }, + { + displayName: 'Optionen', + name: 'options', + type: 'collection', + placeholder: 'Option hinzufügen', + default: {}, + options: [ + { displayName: 'Detaillierte Daten Abrufen', name: 'fetchDetails', type: 'boolean', default: false }, + ], + }, + ], + }; + + async poll(this: IPollFunctions): Promise { + const credentials = await this.getCredentials('libreBookingApi'); + const baseUrl = (credentials.url as string).replace(/\/$/, ''); + const username = credentials.username as string; + const password = credentials.password as string; + + const event = this.getNodeParameter('event') as string; + const filters = this.getNodeParameter('filters', {}) as any; + const timeWindow = this.getNodeParameter('timeWindow', '14days') as string; + const options = this.getNodeParameter('options', {}) as any; + + const workflowStaticData = this.getWorkflowStaticData('node'); + const previousReservations = (workflowStaticData.reservations as Record) || {}; + + let session: LibreBookingSession; + try { + session = await authenticateTrigger(this, baseUrl, username, password); + } catch (error) { + throw error; + } + + try { + const { start, end } = getTimeWindow(timeWindow); + + const reservations = await getReservations( + this, + baseUrl, + session, + start, + end, + filters, + ); + + const returnData: INodeExecutionData[] = []; + const currentReservations: Record = {}; + + for (const reservation of reservations) { + const refNumber = reservation.referenceNumber; + const reservationKey = getReservationKey(reservation); + currentReservations[refNumber] = reservationKey; + + const isNew = !previousReservations[refNumber]; + const isUpdated = previousReservations[refNumber] && previousReservations[refNumber] !== reservationKey; + + let shouldTrigger = false; + let eventType = ''; + + if (event === 'newReservation' && isNew) { + shouldTrigger = true; + eventType = 'new'; + } else if (event === 'updatedReservation' && isUpdated) { + shouldTrigger = true; + eventType = 'updated'; + } else if (event === 'allReservations' && (isNew || isUpdated)) { + shouldTrigger = true; + eventType = isNew ? 'new' : 'updated'; + } + + if (shouldTrigger) { + let reservationData = reservation; + + if (options.fetchDetails) { + try { + reservationData = await getReservationDetails( + this, + baseUrl, + session, + refNumber, + ); + } catch (error) { + reservationData = reservation; + } + } + + returnData.push({ + json: { + ...reservationData, + _eventType: eventType, + _triggeredAt: new Date().toISOString(), + }, + }); + } + } + + workflowStaticData.reservations = currentReservations; + + if (returnData.length === 0) { + return null; + } + + return [returnData]; + + } finally { + await signOutTrigger(this, baseUrl, session); + } + } +} diff --git a/custom-nodes/nodes/LibreBookingTrigger/librebooking.svg b/custom-nodes/nodes/LibreBookingTrigger/librebooking.svg new file mode 100644 index 0000000..81306a9 --- /dev/null +++ b/custom-nodes/nodes/LibreBookingTrigger/librebooking.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/custom-nodes/package.json b/custom-nodes/package.json new file mode 100644 index 0000000..17c52f3 --- /dev/null +++ b/custom-nodes/package.json @@ -0,0 +1,35 @@ +{ + "name": "n8n-nodes-librebooking", + "version": "1.0.0", + "description": "LibreBooking n8n Community Node - Custom Nodes Version für Docker Integration", + "keywords": [ + "n8n-community-node-package", + "librebooking", + "booking", + "reservation" + ], + "main": "dist/index.js", + "scripts": { + "build": "tsc && npm run copy-icons", + "copy-icons": "mkdir -p dist/nodes/LibreBooking dist/nodes/LibreBookingTrigger && cp nodes/LibreBooking/*.svg dist/nodes/LibreBooking/ && cp nodes/LibreBookingTrigger/*.svg dist/nodes/LibreBookingTrigger/", + "clean": "rm -rf dist", + "rebuild": "npm run clean && npm run build" + }, + "n8n": { + "n8nNodesApiVersion": 1, + "credentials": [ + "dist/credentials/LibreBookingApi.credentials.js" + ], + "nodes": [ + "dist/nodes/LibreBooking/LibreBooking.node.js", + "dist/nodes/LibreBookingTrigger/LibreBookingTrigger.node.js" + ] + }, + "devDependencies": { + "typescript": "^5.3.0" + }, + "peerDependencies": { + "n8n-workflow": ">=1.0.0" + }, + "license": "MIT" +} diff --git a/custom-nodes/tsconfig.json b/custom-nodes/tsconfig.json new file mode 100644 index 0000000..88c33d7 --- /dev/null +++ b/custom-nodes/tsconfig.json @@ -0,0 +1,31 @@ +{ + "compilerOptions": { + "target": "ES2019", + "module": "commonjs", + "lib": ["ES2019", "ES2020.Promise"], + "declaration": true, + "declarationMap": true, + "sourceMap": true, + "outDir": "./dist", + "rootDir": ".", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "moduleResolution": "node", + "noImplicitAny": true, + "noImplicitReturns": true, + "noUnusedLocals": false, + "noUnusedParameters": false + }, + "include": [ + "nodes/**/*.ts", + "credentials/**/*.ts" + ], + "exclude": [ + "node_modules", + "dist", + "test" + ] +} diff --git a/docker-compose.example.yml b/docker-compose.example.yml new file mode 100644 index 0000000..10e4bb4 --- /dev/null +++ b/docker-compose.example.yml @@ -0,0 +1,131 @@ +# Vollständige Docker Compose Beispiel-Konfiguration +# n8n mit LibreBooking Node - Ready to Use +# +# Verwendung: +# 1. cp docker-compose.example.yml docker-compose.yml +# 2. cp .env.docker .env +# 3. .env Datei anpassen +# 4. docker-compose up -d + +version: '3.8' + +services: + n8n: + # Verwende das vorgefertigte Image mit LibreBooking Node + build: + context: . + dockerfile: Dockerfile.custom-nodes + args: + N8N_VERSION: latest + + # Oder nutze das offizielle Image mit Volume-Mount: + # image: n8nio/n8n:latest + + container_name: n8n-librebooking + restart: unless-stopped + + ports: + - "${N8N_PORT:-5678}:5678" + + environment: + # Basis-Konfiguration + - N8N_HOST=${N8N_HOST:-localhost} + - N8N_PORT=5678 + - N8N_PROTOCOL=${N8N_PROTOCOL:-http} + - WEBHOOK_URL=${WEBHOOK_URL:-http://localhost:5678/} + + # Authentifizierung (aktivieren für Produktion!) + - N8N_BASIC_AUTH_ACTIVE=${N8N_BASIC_AUTH_ACTIVE:-false} + - N8N_BASIC_AUTH_USER=${N8N_BASIC_AUTH_USER:-admin} + - N8N_BASIC_AUTH_PASSWORD=${N8N_BASIC_AUTH_PASSWORD:-changeme} + + # Custom Nodes + - N8N_CUSTOM_EXTENSIONS=/home/node/.n8n/custom + - N8N_COMMUNITY_NODES_ENABLED=true + + # Zeitzone + - GENERIC_TIMEZONE=${TZ:-Europe/Berlin} + - TZ=${TZ:-Europe/Berlin} + + # Logging + - N8N_LOG_LEVEL=${N8N_LOG_LEVEL:-info} + + # Execution Settings + - EXECUTIONS_DATA_SAVE_ON_ERROR=all + - EXECUTIONS_DATA_SAVE_ON_SUCCESS=all + - EXECUTIONS_DATA_SAVE_MANUAL_EXECUTIONS=true + + volumes: + # Persistente n8n Daten + - n8n_data:/home/node/.n8n + + # Custom Nodes (wenn nicht im Image gebaut) + # - ./custom-nodes:/home/node/.n8n/custom/n8n-nodes-librebooking:ro + + healthcheck: + test: ["CMD", "wget", "-qO-", "http://localhost:5678/healthz"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 30s + + networks: + - n8n_network + + # Optional: PostgreSQL Datenbank für n8n + # Für Produktion empfohlen statt SQLite + postgres: + image: postgres:15-alpine + container_name: n8n-postgres + restart: unless-stopped + profiles: + - with-postgres + + environment: + - POSTGRES_USER=${POSTGRES_USER:-n8n} + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-n8n_password} + - POSTGRES_DB=${POSTGRES_DB:-n8n} + + volumes: + - postgres_data:/var/lib/postgresql/data + + healthcheck: + test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-n8n}"] + interval: 10s + timeout: 5s + retries: 5 + + networks: + - n8n_network + + # Optional: Redis für Queue Mode + redis: + image: redis:7-alpine + container_name: n8n-redis + restart: unless-stopped + profiles: + - with-redis + + volumes: + - redis_data:/data + + healthcheck: + test: ["CMD", "redis-cli", "ping"] + interval: 10s + timeout: 5s + retries: 5 + + networks: + - n8n_network + +volumes: + n8n_data: + driver: local + postgres_data: + driver: local + redis_data: + driver: local + +networks: + n8n_network: + driver: bridge diff --git a/docker-compose.override.yml b/docker-compose.override.yml new file mode 100644 index 0000000..4a4a01e --- /dev/null +++ b/docker-compose.override.yml @@ -0,0 +1,21 @@ +# Docker Compose Override für LibreBooking n8n Node +# +# WICHTIG: custom-nodes Volume NICHT als read-only (:ro) mounten! +# Der Node benötigt Schreibrechte für npm install/build. +# +# Für read-only Volumes siehe: docker-compose.readonly.yml +# und führen Sie vorher build-on-host.sh aus. + +version: '3.8' + +services: + n8n: + volumes: + # LibreBooking Custom Node + # OHNE :ro - Der Node muss beim Start gebaut werden können! + - ./custom-nodes:/home/node/.n8n/custom/n8n-nodes-librebooking + + environment: + # Custom Nodes aktivieren + - N8N_CUSTOM_EXTENSIONS=/home/node/.n8n/custom + - N8N_COMMUNITY_NODES_ENABLED=true diff --git a/docker-compose.readonly.yml b/docker-compose.readonly.yml new file mode 100644 index 0000000..dab572c --- /dev/null +++ b/docker-compose.readonly.yml @@ -0,0 +1,25 @@ +# Docker Compose Override für READ-ONLY Volume Mount +# +# VORAUSSETZUNG: Node wurde auf dem Host gebaut! +# Führen Sie zuerst aus: ./build-on-host.sh +# +# Verwendung: +# docker compose -f docker-compose.yml -f docker-compose.readonly.yml up -d +# +# Oder setzen Sie in Ihrer Umgebung: +# export COMPOSE_FILE=docker-compose.yml:docker-compose.readonly.yml + +version: '3.8' + +services: + n8n: + volumes: + # LibreBooking Custom Node - READ-ONLY + # Das dist-for-docker Verzeichnis wurde mit build-on-host.sh erstellt + # und enthält bereits alle kompilierten Dateien. + - ./dist-for-docker:/home/node/.n8n/custom/n8n-nodes-librebooking:ro + + environment: + # Custom Nodes aktivieren + - N8N_CUSTOM_EXTENSIONS=/home/node/.n8n/custom + - N8N_COMMUNITY_NODES_ENABLED=true diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..a37c5b8 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,65 @@ +# Docker Compose für n8n mit LibreBooking Node +# +# Verwendung: +# docker-compose up -d # Im Hintergrund starten +# docker-compose logs -f # Logs anzeigen +# docker-compose down # Stoppen und entfernen +# docker-compose build --no-cache # Neu bauen + +version: '3.8' + +services: + n8n: + build: + context: . + dockerfile: Dockerfile + container_name: n8n-librebooking + restart: unless-stopped + ports: + - "5678:5678" + environment: + # Basis-Konfiguration + - N8N_BASIC_AUTH_ACTIVE=true + - N8N_BASIC_AUTH_USER=${N8N_BASIC_AUTH_USER:-admin} + - N8N_BASIC_AUTH_PASSWORD=${N8N_BASIC_AUTH_PASSWORD:-changeme} + + # Webhook-URL (für Produktionsumgebung anpassen) + - WEBHOOK_URL=${WEBHOOK_URL:-http://localhost:5678/} + + # Timezone + - GENERIC_TIMEZONE=${TZ:-Europe/Berlin} + - TZ=${TZ:-Europe/Berlin} + + # Custom Extensions + - N8N_CUSTOM_EXTENSIONS=/home/node/.n8n/custom + + # Optional: Logging + - N8N_LOG_LEVEL=${N8N_LOG_LEVEL:-info} + + # Optional: Executions + - EXECUTIONS_DATA_SAVE_ON_ERROR=all + - EXECUTIONS_DATA_SAVE_ON_SUCCESS=all + - EXECUTIONS_DATA_SAVE_MANUAL_EXECUTIONS=true + volumes: + # Persistente Daten + - n8n_data:/home/node/.n8n + # Workflow-Dateien (optional) + - ./workflows:/home/node/workflows:ro + networks: + - n8n-network + healthcheck: + test: ["CMD", "wget", "-q", "--spider", "http://localhost:5678/healthz"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 30s + +volumes: + n8n_data: + driver: local + name: n8n-librebooking-data + +networks: + n8n-network: + driver: bridge + name: n8n-librebooking-network diff --git a/fix-node-installation.sh b/fix-node-installation.sh new file mode 100755 index 0000000..af8e266 --- /dev/null +++ b/fix-node-installation.sh @@ -0,0 +1,268 @@ +#!/bin/bash +# ============================================================================ +# fix-node-installation.sh - All-in-One Lösung für Node-Installation im Container +# Führt alle Schritte automatisch aus (auf dem HOST ausführen!) +# ============================================================================ + +set -e + +# Farben +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +NC='\033[0m' + +# Standard-Werte +CONTAINER_NAME="n8n" +CONTAINER_PATH="/home/node/.n8n/custom/n8n-nodes-librebooking" +SKIP_RESTART=false +VERBOSE=false + +echo -e "${BLUE}============================================${NC}" +echo -e "${BLUE} LibreBooking Node - Auto-Fix Installation${NC}" +echo -e "${BLUE}============================================${NC}" +echo "" + +# Hilfe anzeigen +show_help() { + echo "Verwendung: $0 [OPTIONEN]" + echo "" + echo "Dieses Skript installiert den LibreBooking Node automatisch im Docker Container." + echo "" + echo "Optionen:" + echo " -c, --container NAME Container-Name (Standard: n8n)" + echo " -p, --path PATH Pfad im Container (Standard: /home/node/.n8n/custom/n8n-nodes-librebooking)" + echo " -n, --no-restart Container nicht neustarten" + echo " -v, --verbose Ausführliche Ausgabe" + echo " -h, --help Diese Hilfe anzeigen" + echo "" + echo "Beispiele:" + echo " $0 # Standard-Installation" + echo " $0 -c mein-n8n # Anderer Container-Name" + echo " $0 -p /opt/n8n/custom-nodes # Anderer Pfad" + echo " $0 -n # Ohne Neustart" + exit 0 +} + +# Parameter parsen +while [[ $# -gt 0 ]]; do + case $1 in + -c|--container) + CONTAINER_NAME="$2" + shift 2 + ;; + -p|--path) + CONTAINER_PATH="$2" + shift 2 + ;; + -n|--no-restart) + SKIP_RESTART=true + shift + ;; + -v|--verbose) + VERBOSE=true + shift + ;; + -h|--help) + show_help + ;; + *) + echo -e "${RED}Unbekannte Option: $1${NC}" + show_help + ;; + esac +done + +log() { + echo -e "${GREEN}[INFO]${NC} $1" +} + +warn() { + echo -e "${YELLOW}[WARN]${NC} $1" +} + +error() { + echo -e "${RED}[ERROR]${NC} $1" + exit 1 +} + +# Funktion: Prüft ob ein Verzeichnis im Container read-only ist +check_readonly_container() { + local container="$1" + local dir="$2" + local test_file="$dir/.write_test_$$" + + # Versuche eine Test-Datei im Container zu erstellen + if docker exec "$container" touch "$test_file" 2>/dev/null; then + docker exec "$container" rm -f "$test_file" 2>/dev/null + return 0 # Schreibbar + else + return 1 # Read-only + fi +} + +print_readonly_solution() { + echo "" + echo -e "${RED}============================================${NC}" + echo -e "${RED} PROBLEM: Read-only Volume erkannt!${NC}" + echo -e "${RED}============================================${NC}" + echo "" + echo "Das custom-nodes Verzeichnis ist als read-only gemountet." + echo "npm install und npm run build benötigen Schreibrechte." + echo "" + echo "LÖSUNGEN:" + echo "" + echo "1. Volume OHNE :ro mounten (empfohlen):" + echo " In docker-compose.yml oder docker-compose.override.yml:" + echo "" + echo " volumes:" + echo " - ./custom-nodes:/home/node/.n8n/custom/n8n-nodes-librebooking" + echo " # ENTFERNEN: :ro am Ende!" + echo "" + echo "2. Auf dem Host bauen (für read-only Volumes):" + echo " ./build-on-host.sh" + echo " # Dann docker-compose.readonly.yml verwenden" + echo "" + echo "3. docker-compose.override.yml anpassen:" + echo " cp docker-compose.override.yml docker-compose.override.yml.bak" + echo " # Entfernen Sie ':ro' aus der Volume-Definition" + echo "" + echo "Siehe: TROUBLESHOOTING.md und DOCKER-INTEGRATION.md" +} + +# Schritt 1: Docker prüfen +log "Prüfe Docker..." +if ! command -v docker &>/dev/null; then + error "Docker ist nicht installiert!" +fi + +# Schritt 2: Container prüfen +log "Prüfe Container '$CONTAINER_NAME'..." +if ! docker ps --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then + # Prüfe ob Container existiert aber nicht läuft + if docker ps -a --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then + warn "Container '$CONTAINER_NAME' existiert aber läuft nicht." + log "Starte Container..." + docker start "$CONTAINER_NAME" + sleep 3 + else + error "Container '$CONTAINER_NAME' nicht gefunden! Prüfen Sie den Namen mit: docker ps -a" + fi +fi +log "Container '$CONTAINER_NAME' läuft ✓" + +# Schritt 3: Prüfe ob Pfad im Container existiert +log "Prüfe Pfad im Container: $CONTAINER_PATH" +if ! docker exec "$CONTAINER_NAME" test -d "$CONTAINER_PATH"; then + # Versuche alternative Pfade + ALTERNATIVE_PATHS=( + "/home/node/.n8n/custom/n8n-nodes-librebooking" + "/home/node/.n8n/custom" + "/opt/n8n/custom-nodes" + "/data/custom-nodes" + ) + + FOUND_PATH="" + for alt_path in "${ALTERNATIVE_PATHS[@]}"; do + if docker exec "$CONTAINER_NAME" test -f "$alt_path/package.json" 2>/dev/null; then + FOUND_PATH="$alt_path" + break + fi + done + + if [ -n "$FOUND_PATH" ]; then + warn "Angegebener Pfad nicht gefunden, verwende: $FOUND_PATH" + CONTAINER_PATH="$FOUND_PATH" + else + error "Kein Custom-Node-Verzeichnis mit package.json gefunden!\n\n Bitte stellen Sie sicher, dass die Dateien korrekt kopiert wurden.\n Beispiel: docker cp custom-nodes/. $CONTAINER_NAME:/home/node/.n8n/custom/n8n-nodes-librebooking/" + fi +fi +log "Pfad gefunden: $CONTAINER_PATH ✓" + +# Schritt 3.5: Prüfe ob Verzeichnis schreibbar ist (read-only Volume?) +log "Prüfe Schreibrechte im Container..." +if ! check_readonly_container "$CONTAINER_NAME" "$CONTAINER_PATH"; then + print_readonly_solution + exit 1 +fi +log "Schreibrechte vorhanden ✓" + +# Schritt 4: Skript in Container kopieren +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +if [ -f "$SCRIPT_DIR/install-in-container.sh" ]; then + log "Kopiere install-in-container.sh in Container..." + docker cp "$SCRIPT_DIR/install-in-container.sh" "$CONTAINER_NAME:/tmp/" +else + warn "install-in-container.sh nicht gefunden, erstelle inline..." +fi + +# Schritt 5: npm install und build im Container +log "Führe npm install aus..." +if $VERBOSE; then + docker exec -w "$CONTAINER_PATH" "$CONTAINER_NAME" npm install +else + if ! docker exec -w "$CONTAINER_PATH" "$CONTAINER_NAME" npm install 2>&1 | tail -5; then + error "npm install fehlgeschlagen!" + fi +fi +log "Dependencies installiert ✓" + +log "Führe npm run build aus..." +if $VERBOSE; then + docker exec -w "$CONTAINER_PATH" "$CONTAINER_NAME" npm run build +else + if ! docker exec -w "$CONTAINER_PATH" "$CONTAINER_NAME" npm run build 2>&1 | tail -10; then + error "npm run build fehlgeschlagen!" + fi +fi +log "Build erfolgreich ✓" + +# Schritt 6: Prüfe Ergebnis +log "Prüfe Build-Ergebnis..." +NODE_COUNT=$(docker exec "$CONTAINER_NAME" find "$CONTAINER_PATH/dist" -name "*.node.js" 2>/dev/null | wc -l) +if [ "$NODE_COUNT" -gt 0 ]; then + log "$NODE_COUNT Node-Datei(en) gefunden ✓" +else + error "Keine Node-Dateien nach Build gefunden!" +fi + +# Schritt 7: Container neustarten +if $SKIP_RESTART; then + warn "Container-Neustart übersprungen (-n Option)" + echo "" + echo -e "${YELLOW}Bitte starten Sie den Container manuell neu:${NC}" + echo " docker restart $CONTAINER_NAME" +else + log "Starte Container neu..." + docker restart "$CONTAINER_NAME" + log "Container neugestartet ✓" + + # Warte kurz auf Start + sleep 5 +fi + +# Schritt 8: Abschluss-Check (optional) +echo "" +echo -e "${GREEN}============================================${NC}" +echo -e "${GREEN} Installation abgeschlossen!${NC}" +echo -e "${GREEN}============================================${NC}" +echo "" +log "Der LibreBooking Node sollte jetzt in n8n verfügbar sein." +echo "" +echo "Nächste Schritte:" +echo " 1. Öffnen Sie n8n im Browser" +echo " 2. Erstellen Sie einen neuen Workflow" +echo " 3. Suchen Sie nach 'LibreBooking'" +echo "" +echo "Falls der Node nicht erscheint:" +echo " - Prüfen Sie die Logs: docker logs $CONTAINER_NAME 2>&1 | grep -i libre" +echo " - Führen Sie das Check-Skript aus: docker exec $CONTAINER_NAME sh /tmp/check-installation.sh" +echo "" + +# Optional: Check-Skript kopieren und ausführen +if [ -f "$SCRIPT_DIR/check-installation.sh" ]; then + docker cp "$SCRIPT_DIR/check-installation.sh" "$CONTAINER_NAME:/tmp/" + echo "Tipp: Führen Sie für einen detaillierten Status aus:" + echo " docker exec $CONTAINER_NAME sh /tmp/check-installation.sh" +fi diff --git a/git-cleanup.sh b/git-cleanup.sh new file mode 100755 index 0000000..f7184b2 --- /dev/null +++ b/git-cleanup.sh @@ -0,0 +1,32 @@ +#!/bin/bash +# ============================================================================ +# git-cleanup.sh - Löscht alte Archive und temporäre Dateien +# ============================================================================ + +set -e + +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +PARENT_DIR="$(dirname "$SCRIPT_DIR")" + +echo -e "${GREEN}=== Git Cleanup ===${NC}\n" + +# Alte Archive im übergeordneten Verzeichnis löschen +echo "Lösche alte Archive in $PARENT_DIR..." +find "$PARENT_DIR" -maxdepth 1 -name "n8n-nodes-librebooking*.tar.gz" -delete 2>/dev/null && echo " ✓ .tar.gz gelöscht" || echo " - Keine .tar.gz gefunden" +find "$PARENT_DIR" -maxdepth 1 -name "n8n-nodes-librebooking*.zip" -delete 2>/dev/null && echo " ✓ .zip gelöscht" || echo " - Keine .zip gefunden" + +# Temporäre Dateien im Projekt löschen +echo "" +echo "Lösche temporäre Dateien..." +rm -rf "$SCRIPT_DIR/dist-for-docker" 2>/dev/null && echo " ✓ dist-for-docker/ gelöscht" || true +rm -rf "$SCRIPT_DIR/.tsbuildinfo" 2>/dev/null && echo " ✓ .tsbuildinfo gelöscht" || true +find "$SCRIPT_DIR" -name "*.log" -delete 2>/dev/null && echo " ✓ .log Dateien gelöscht" || true +find "$SCRIPT_DIR" -name ".DS_Store" -delete 2>/dev/null || true + +echo "" +echo -e "${GREEN}✓ Cleanup abgeschlossen${NC}" +echo "" diff --git a/git-commit.sh b/git-commit.sh new file mode 100755 index 0000000..7f5abec --- /dev/null +++ b/git-commit.sh @@ -0,0 +1,36 @@ +#!/bin/bash +# ============================================================================ +# git-commit.sh - Committet alle Änderungen +# ============================================================================ + +set -e + +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +cd "$SCRIPT_DIR" + +MESSAGE="${1:-fix: Vereinfachte Installation - auf dem Host bauen}" + +echo -e "${GREEN}=== Git Commit ===${NC}\n" + +# Status anzeigen +echo "Geänderte Dateien:" +git status --short +echo "" + +# Alles hinzufügen +git add . + +# Commit +echo "Commit mit Nachricht: $MESSAGE" +git commit -m "$MESSAGE" + +echo "" +echo -e "${GREEN}✓ Commit erfolgreich${NC}" +echo "" +echo "Zum Pushen:" +echo " git push origin main" +echo "" diff --git a/index.ts b/index.ts new file mode 100644 index 0000000..c94c56e --- /dev/null +++ b/index.ts @@ -0,0 +1,6 @@ +// n8n-nodes-librebooking +// Entry point for the LibreBooking n8n node package + +export * from './nodes/LibreBooking/LibreBooking.node'; +export * from './nodes/LibreBookingTrigger/LibreBookingTrigger.node'; +export * from './credentials/LibreBookingApi.credentials'; diff --git a/install-docker-manual.sh b/install-docker-manual.sh new file mode 100755 index 0000000..9b57de4 --- /dev/null +++ b/install-docker-manual.sh @@ -0,0 +1,238 @@ +#!/bin/bash + +# ============================================================================= +# LibreBooking n8n Node - Manuelle Docker Installation (ohne docker-compose) +# ============================================================================= +# Diese Alternative verwendet nur "docker" Befehle für maximale Kompatibilität. +# Nutzen Sie dieses Skript wenn docker-compose Probleme macht. +# +# Verwendung: ./install-docker-manual.sh [OPTIONS] +# +# Optionen: +# -p, --port PORT n8n Port (Standard: 5678) +# -n, --name NAME Container Name (Standard: n8n-librebooking) +# -f, --force Bestehenden Container ersetzen +# -h, --help Diese Hilfe anzeigen +# +# ============================================================================= + +set -e + +# Farben für Ausgabe +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +NC='\033[0m' # No Color + +# Standardwerte +N8N_PORT=5678 +CONTAINER_NAME="n8n-librebooking" +FORCE=false +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +# Hilfsfunktionen +print_info() { + echo -e "${BLUE}[INFO]${NC} $1" +} + +print_success() { + echo -e "${GREEN}[✓]${NC} $1" +} + +print_warning() { + echo -e "${YELLOW}[!]${NC} $1" +} + +print_error() { + echo -e "${RED}[FEHLER]${NC} $1" +} + +show_help() { + echo "LibreBooking n8n Node - Manuelle Docker Installation" + echo "" + echo "Verwendung: $0 [OPTIONS]" + echo "" + echo "Optionen:" + echo " -p, --port PORT n8n Port (Standard: 5678)" + echo " -n, --name NAME Container Name (Standard: n8n-librebooking)" + echo " -f, --force Bestehenden Container ersetzen" + echo " -h, --help Diese Hilfe anzeigen" + echo "" + echo "Beispiele:" + echo " $0 # Standard-Installation" + echo " $0 -p 8080 # Anderer Port" + echo " $0 -n mein-n8n -p 9000 # Eigener Name und Port" + exit 0 +} + +# Argumente parsen +while [[ $# -gt 0 ]]; do + case $1 in + -p|--port) + N8N_PORT="$2" + shift 2 + ;; + -n|--name) + CONTAINER_NAME="$2" + shift 2 + ;; + -f|--force) + FORCE=true + shift + ;; + -h|--help) + show_help + ;; + *) + print_error "Unbekannte Option: $1" + show_help + ;; + esac +done + +echo "" +echo "=============================================" +echo " LibreBooking n8n Node - Manuelle Installation" +echo " (ohne docker-compose)" +echo "=============================================" +echo "" + +# ============================================================================= +# Voraussetzungen prüfen +# ============================================================================= + +print_info "Prüfe Voraussetzungen..." + +# Docker prüfen +if ! command -v docker &> /dev/null; then + print_error "Docker ist nicht installiert!" + echo " Bitte installieren Sie Docker: https://docs.docker.com/get-docker/" + exit 1 +fi +print_success "Docker gefunden: $(docker --version)" + +# Prüfen ob Container bereits existiert +if docker ps -a --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then + if [ "$FORCE" = true ]; then + print_warning "Bestehender Container '$CONTAINER_NAME' wird entfernt..." + docker stop "$CONTAINER_NAME" 2>/dev/null || true + docker rm "$CONTAINER_NAME" 2>/dev/null || true + else + print_error "Container '$CONTAINER_NAME' existiert bereits!" + echo " Nutzen Sie -f um ihn zu ersetzen, oder -n für einen anderen Namen." + exit 1 + fi +fi + +# ============================================================================= +# Volume und Verzeichnisse vorbereiten +# ============================================================================= + +print_info "Bereite Volumes vor..." + +# Docker Volume für n8n Daten erstellen +VOLUME_NAME="${CONTAINER_NAME}_data" +if ! docker volume ls --format '{{.Name}}' | grep -q "^${VOLUME_NAME}$"; then + docker volume create "$VOLUME_NAME" + print_success "Volume '$VOLUME_NAME' erstellt" +else + print_info "Volume '$VOLUME_NAME' existiert bereits" +fi + +# Custom Nodes Verzeichnis vorbereiten +CUSTOM_NODES_DIR="$SCRIPT_DIR/custom-nodes" +if [ ! -d "$CUSTOM_NODES_DIR" ]; then + print_error "custom-nodes Verzeichnis nicht gefunden: $CUSTOM_NODES_DIR" + exit 1 +fi + +# ============================================================================= +# Node bauen (wenn nicht bereits gebaut) +# ============================================================================= + +if [ ! -d "$CUSTOM_NODES_DIR/dist" ]; then + print_info "Baue LibreBooking Node..." + + if command -v npm &> /dev/null; then + cd "$CUSTOM_NODES_DIR" + npm install 2>/dev/null || print_warning "npm install hatte Warnungen" + npm run build 2>/dev/null || { + print_warning "Build fehlgeschlagen, versuche alternativen Ansatz..." + npx tsc 2>/dev/null || true + mkdir -p dist/nodes/LibreBooking dist/nodes/LibreBookingTrigger + cp nodes/LibreBooking/*.svg dist/nodes/LibreBooking/ 2>/dev/null || true + cp nodes/LibreBookingTrigger/*.svg dist/nodes/LibreBookingTrigger/ 2>/dev/null || true + } + cd "$SCRIPT_DIR" + print_success "Node erfolgreich gebaut" + else + print_warning "npm nicht gefunden - Node wird im Container gebaut" + fi +fi + +# ============================================================================= +# n8n Container starten +# ============================================================================= + +print_info "Starte n8n Container..." + +# Berechtigungen setzen +if [ "$(id -u)" = "0" ]; then + chown -R 1000:1000 "$CUSTOM_NODES_DIR" 2>/dev/null || true +else + sudo chown -R 1000:1000 "$CUSTOM_NODES_DIR" 2>/dev/null || print_warning "Konnte Berechtigungen nicht setzen" +fi + +# Container starten +docker run -d \ + --name "$CONTAINER_NAME" \ + --restart unless-stopped \ + -p "${N8N_PORT}:5678" \ + -v "${VOLUME_NAME}:/home/node/.n8n" \ + -v "${CUSTOM_NODES_DIR}:/home/node/.n8n/custom/n8n-nodes-librebooking:ro" \ + -e N8N_CUSTOM_EXTENSIONS=/home/node/.n8n/custom \ + -e N8N_COMMUNITY_NODES_ENABLED=true \ + -e TZ=Europe/Berlin \ + -e GENERIC_TIMEZONE=Europe/Berlin \ + n8nio/n8n:latest + +if [ $? -eq 0 ]; then + print_success "Container gestartet!" +else + print_error "Container konnte nicht gestartet werden!" + exit 1 +fi + +# Warten auf Start +print_info "Warte auf n8n Start..." +sleep 5 + +# Status prüfen +if docker ps --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then + print_success "n8n Container läuft!" +else + print_error "Container läuft nicht - prüfen Sie: docker logs $CONTAINER_NAME" + exit 1 +fi + +# ============================================================================= +# Abschluss +# ============================================================================= + +echo "" +echo "=============================================" +print_success "Installation abgeschlossen!" +echo "=============================================" +echo "" +echo "n8n ist erreichbar unter: http://localhost:${N8N_PORT}" +echo "" +echo "Nützliche Befehle:" +echo " docker logs $CONTAINER_NAME # Logs anzeigen" +echo " docker stop $CONTAINER_NAME # Container stoppen" +echo " docker start $CONTAINER_NAME # Container starten" +echo " docker restart $CONTAINER_NAME # Container neustarten" +echo " docker rm -f $CONTAINER_NAME # Container löschen" +echo "" +echo "Bei Problemen siehe: TROUBLESHOOTING.md" +echo "" diff --git a/install-docker.sh b/install-docker.sh new file mode 100755 index 0000000..fd81d55 --- /dev/null +++ b/install-docker.sh @@ -0,0 +1,454 @@ +#!/bin/bash + +# ============================================================================= +# LibreBooking n8n Node - Docker Integration Script +# ============================================================================= +# Automatische Integration des LibreBooking Nodes in bestehende n8n Docker-Installationen +# +# Verwendung: ./install-docker.sh [OPTIONS] +# +# Optionen: +# -p, --path PATH Pfad zur n8n Docker-Installation (Standard: aktuelles Verzeichnis) +# -b, --build Node im Container bauen statt vorgebaut kopieren +# -f, --force Bestehende Installation überschreiben +# -h, --help Diese Hilfe anzeigen +# +# ============================================================================= + +set -e + +# Farben für Ausgabe +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +NC='\033[0m' # No Color + +# Standardwerte +N8N_PATH="." +FORCE=false +BUILD_IN_CONTAINER=false +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +# Hilfsfunktionen +print_info() { + echo -e "${BLUE}[INFO]${NC} $1" +} + +print_success() { + echo -e "${GREEN}[✓]${NC} $1" +} + +print_warning() { + echo -e "${YELLOW}[!]${NC} $1" +} + +print_error() { + echo -e "${RED}[FEHLER]${NC} $1" +} + +show_help() { + echo "LibreBooking n8n Node - Docker Integration Script" + echo "" + echo "Verwendung: $0 [OPTIONS]" + echo "" + echo "Optionen:" + echo " -p, --path PATH Pfad zur n8n Docker-Installation" + echo " -b, --build Node im Container bauen" + echo " -f, --force Bestehende Installation überschreiben" + echo " -h, --help Diese Hilfe anzeigen" + echo "" + echo "Beispiele:" + echo " $0 # Installation im aktuellen Verzeichnis" + echo " $0 -p /opt/n8n # Installation in /opt/n8n" + echo " $0 -f -p /home/user/n8n # Installation mit Überschreiben" + exit 0 +} + +# Argumente parsen +while [[ $# -gt 0 ]]; do + case $1 in + -p|--path) + N8N_PATH="$2" + shift 2 + ;; + -b|--build) + BUILD_IN_CONTAINER=true + shift + ;; + -f|--force) + FORCE=true + shift + ;; + -h|--help) + show_help + ;; + *) + print_error "Unbekannte Option: $1" + show_help + ;; + esac +done + +echo "" +echo "=========================================" +echo " LibreBooking n8n Node - Docker Setup" +echo "=========================================" +echo "" + +# ============================================================================= +# Voraussetzungen prüfen +# ============================================================================= + +print_info "Prüfe Voraussetzungen..." + +# Docker prüfen +if ! command -v docker &> /dev/null; then + print_error "Docker ist nicht installiert!" + echo " Bitte installieren Sie Docker: https://docs.docker.com/get-docker/" + exit 1 +fi +print_success "Docker gefunden: $(docker --version)" + +# Docker Compose prüfen - v2 bevorzugen +detect_compose_command() { + # Zuerst docker compose (v2/Plugin) prüfen - bevorzugt + if docker compose version &> /dev/null 2>&1; then + COMPOSE_CMD="docker compose" + COMPOSE_VERSION="v2" + return 0 + fi + + # Dann docker-compose (v1) prüfen + if command -v docker-compose &> /dev/null; then + # Prüfen ob es tatsächlich funktioniert (distutils Problem bei Python 3.12) + if docker-compose --version &> /dev/null 2>&1; then + COMPOSE_CMD="docker-compose" + COMPOSE_VERSION="v1" + return 0 + else + # docker-compose existiert aber funktioniert nicht + print_warning "docker-compose (v1) ist installiert, funktioniert aber nicht!" + print_warning "Dies liegt wahrscheinlich am fehlenden 'distutils' Modul (Python 3.12+)" + echo "" + echo " Mögliche Lösungen:" + echo " 1. Docker Compose v2 installieren (empfohlen):" + echo " sudo apt-get update && sudo apt-get install docker-compose-plugin" + echo "" + echo " 2. distutils für Python installieren (Workaround):" + echo " sudo apt-get install python3-distutils" + echo " # Oder für neuere Systeme:" + echo " pip3 install setuptools" + echo "" + echo " Siehe TROUBLESHOOTING.md für weitere Details." + echo "" + return 1 + fi + fi + + return 1 +} + +# Compose Command ermitteln +if detect_compose_command; then + if [ "$COMPOSE_VERSION" = "v2" ]; then + print_success "Docker Compose v2 (Plugin) gefunden: $(docker compose version --short 2>/dev/null || docker compose version)" + else + print_success "docker-compose v1 gefunden: $(docker-compose --version)" + print_warning "Empfehlung: Upgrade zu Docker Compose v2 für bessere Kompatibilität" + fi +else + print_error "Docker Compose ist nicht installiert oder funktioniert nicht!" + echo "" + echo " Installation von Docker Compose v2 (empfohlen):" + echo " sudo apt-get update && sudo apt-get install docker-compose-plugin" + echo "" + echo " Oder siehe: https://docs.docker.com/compose/install/" + echo "" + echo " Alternativ: Verwenden Sie install-docker-manual.sh für Installation ohne docker-compose" + exit 1 +fi + +# Hilfsfunktion für Compose-Befehle +run_compose() { + $COMPOSE_CMD "$@" +} + +# ============================================================================= +# Funktion: Prüft ob ein Verzeichnis read-only ist +# ============================================================================= +check_readonly() { + local dir="$1" + local test_file="$dir/.write_test_$$" + + # Versuche eine Test-Datei zu erstellen + if touch "$test_file" 2>/dev/null; then + rm -f "$test_file" 2>/dev/null + return 0 # Schreibbar + else + return 1 # Read-only + fi +} + +print_readonly_warning() { + local dir="$1" + print_error "Das Verzeichnis '$dir' ist read-only!" + echo "" + echo " Das custom-nodes Verzeichnis benötigt Schreibrechte für:" + echo " - npm install (Dependencies)" + echo " - npm run build (Kompilierung)" + echo "" + echo " LÖSUNGEN:" + echo "" + echo " 1. Volume OHNE :ro mounten (empfohlen):" + echo " volumes:" + echo " - ./custom-nodes:/home/node/.n8n/custom/n8n-nodes-librebooking" + echo " # NICHT: - ./custom-nodes:/...:ro" + echo "" + echo " 2. Auf dem Host bauen (für read-only Volumes):" + echo " ./build-on-host.sh" + echo " # Dann docker-compose.readonly.yml verwenden" + echo "" + echo " 3. Berechtigungen prüfen:" + echo " ls -la $dir" + echo " sudo chown -R 1000:1000 $dir" + echo "" + echo " Siehe: TROUBLESHOOTING.md und SECURITY.md" +} + +# Zielpfad prüfen +if [ ! -d "$N8N_PATH" ]; then + print_error "Verzeichnis existiert nicht: $N8N_PATH" + exit 1 +fi + +N8N_PATH=$(cd "$N8N_PATH" && pwd) +print_info "Zielverzeichnis: $N8N_PATH" + +# docker-compose.yml prüfen +if [ ! -f "$N8N_PATH/docker-compose.yml" ] && [ ! -f "$N8N_PATH/docker-compose.yaml" ]; then + print_warning "Keine docker-compose.yml gefunden in $N8N_PATH" + echo "" + read -p "Soll eine Beispiel-Konfiguration erstellt werden? (j/n): " CREATE_EXAMPLE + if [[ "$CREATE_EXAMPLE" =~ ^[jJyY]$ ]]; then + print_info "Kopiere Beispiel-Konfiguration..." + cp "$SCRIPT_DIR/docker-compose.example.yml" "$N8N_PATH/docker-compose.yml" + cp "$SCRIPT_DIR/.env.docker" "$N8N_PATH/.env" + print_success "Beispiel-Konfiguration erstellt" + print_warning "Bitte $N8N_PATH/.env anpassen!" + else + print_error "Abbruch: Keine docker-compose.yml vorhanden" + exit 1 + fi +fi + +# ============================================================================= +# n8n Status prüfen +# ============================================================================= + +print_info "Prüfe n8n Container Status..." + +cd "$N8N_PATH" + +N8N_RUNNING=false +if $COMPOSE_CMD ps 2>/dev/null | grep -q "n8n.*Up"; then + N8N_RUNNING=true + print_success "n8n Container läuft" +else + print_warning "n8n Container läuft nicht (wird später gestartet)" +fi + +# ============================================================================= +# Custom Nodes Verzeichnis vorbereiten +# ============================================================================= + +print_info "Bereite Custom Nodes Verzeichnis vor..." + +CUSTOM_NODES_DIR="$N8N_PATH/custom-nodes" + +# Prüfen ob bereits installiert +if [ -d "$CUSTOM_NODES_DIR" ]; then + if [ "$FORCE" = true ]; then + print_warning "Bestehendes custom-nodes Verzeichnis wird überschrieben" + rm -rf "$CUSTOM_NODES_DIR" + else + print_warning "custom-nodes Verzeichnis existiert bereits" + read -p "Überschreiben? (j/n): " OVERWRITE + if [[ "$OVERWRITE" =~ ^[jJyY]$ ]]; then + rm -rf "$CUSTOM_NODES_DIR" + else + print_info "Behalte bestehendes Verzeichnis" + fi + fi +fi + +# Custom Nodes kopieren +if [ ! -d "$CUSTOM_NODES_DIR" ]; then + cp -r "$SCRIPT_DIR/custom-nodes" "$CUSTOM_NODES_DIR" + print_success "Custom Nodes kopiert nach: $CUSTOM_NODES_DIR" +fi + +# Prüfe ob Verzeichnis schreibbar ist +if ! check_readonly "$CUSTOM_NODES_DIR"; then + print_readonly_warning "$CUSTOM_NODES_DIR" + echo "" + read -p "Trotzdem fortfahren? (j/n): " CONTINUE_RO + if [[ ! "$CONTINUE_RO" =~ ^[jJyY]$ ]]; then + print_error "Abbruch wegen read-only Verzeichnis" + exit 1 + fi + print_warning "Fortsetzen trotz read-only - npm install wird fehlschlagen!" +fi + +# ============================================================================= +# Node bauen (wenn nicht bereits gebaut) +# ============================================================================= + +if [ ! -d "$CUSTOM_NODES_DIR/dist" ] || [ "$BUILD_IN_CONTAINER" = true ]; then + print_info "Baue LibreBooking Node..." + + cd "$CUSTOM_NODES_DIR" + + # Prüfen ob node/npm vorhanden + if command -v npm &> /dev/null; then + npm install 2>/dev/null || print_warning "npm install hatte Warnungen" + npm run build 2>/dev/null || { + print_warning "Build fehlgeschlagen, versuche alternativen Ansatz..." + # Manueller Build + npx tsc 2>/dev/null || true + mkdir -p dist/nodes/LibreBooking dist/nodes/LibreBookingTrigger + cp nodes/LibreBooking/*.svg dist/nodes/LibreBooking/ 2>/dev/null || true + cp nodes/LibreBookingTrigger/*.svg dist/nodes/LibreBookingTrigger/ 2>/dev/null || true + } + print_success "Node erfolgreich gebaut" + else + print_warning "npm nicht gefunden - Node wird beim Container-Start gebaut" + print_info "Erstelle Build-Skript für Container..." + cat > "$CUSTOM_NODES_DIR/build.sh" << 'BUILDEOF' +#!/bin/sh +cd /home/node/.n8n/custom/n8n-nodes-librebooking +npm install +npm run build +BUILDEOF + chmod +x "$CUSTOM_NODES_DIR/build.sh" + fi + + cd "$N8N_PATH" +fi + +# ============================================================================= +# Docker Compose Override erstellen/aktualisieren +# ============================================================================= + +print_info "Erstelle docker-compose.override.yml..." + +OVERRIDE_FILE="$N8N_PATH/docker-compose.override.yml" + +if [ -f "$OVERRIDE_FILE" ]; then + print_warning "docker-compose.override.yml existiert bereits" + + # Prüfen ob LibreBooking bereits konfiguriert + if grep -q "n8n-nodes-librebooking" "$OVERRIDE_FILE"; then + print_success "LibreBooking bereits in override.yml konfiguriert" + else + print_info "Füge LibreBooking Konfiguration hinzu..." + # Backup erstellen + cp "$OVERRIDE_FILE" "${OVERRIDE_FILE}.backup" + + # Hinzufügen (vereinfacht - für komplexe Fälle manuell anpassen) + cat >> "$OVERRIDE_FILE" << 'OVERRIDEEOF' + +# LibreBooking Node (automatisch hinzugefügt) +# Falls Konflikte auftreten, bitte manuell anpassen +# Siehe DOCKER-INTEGRATION.md für Details +OVERRIDEEOF + print_warning "Bitte $OVERRIDE_FILE manuell prüfen!" + fi +else + # Neue Override-Datei erstellen + cat > "$OVERRIDE_FILE" << 'OVERRIDEEOF' +# Docker Compose Override für LibreBooking n8n Node +# Automatisch generiert von install-docker.sh + +version: '3.8' + +services: + n8n: + volumes: + # LibreBooking Custom Node + - ./custom-nodes:/home/node/.n8n/custom/n8n-nodes-librebooking:ro + + environment: + # Custom Nodes aktivieren + - N8N_CUSTOM_EXTENSIONS=/home/node/.n8n/custom + - N8N_COMMUNITY_NODES_ENABLED=true +OVERRIDEEOF + print_success "docker-compose.override.yml erstellt" +fi + +# ============================================================================= +# Berechtigungen setzen +# ============================================================================= + +print_info "Setze Berechtigungen..." + +# n8n läuft oft als node User mit UID 1000 +if [ "$(id -u)" = "0" ]; then + chown -R 1000:1000 "$CUSTOM_NODES_DIR" 2>/dev/null || print_warning "Konnte Berechtigungen nicht setzen" +else + # Versuche mit sudo falls verfügbar + if command -v sudo &> /dev/null; then + sudo chown -R 1000:1000 "$CUSTOM_NODES_DIR" 2>/dev/null || print_warning "Konnte Berechtigungen nicht setzen (sudo fehlgeschlagen)" + fi +fi + +print_success "Berechtigungen konfiguriert" + +# ============================================================================= +# Container neustarten +# ============================================================================= + +echo "" +read -p "Soll der n8n Container jetzt neu gestartet werden? (j/n): " RESTART + +if [[ "$RESTART" =~ ^[jJyY]$ ]]; then + print_info "Starte n8n Container neu..." + + if [ "$N8N_RUNNING" = true ]; then + $COMPOSE_CMD restart n8n 2>/dev/null || $COMPOSE_CMD restart + else + $COMPOSE_CMD up -d n8n 2>/dev/null || $COMPOSE_CMD up -d + fi + + # Warten bis Container bereit + print_info "Warte auf Container-Start..." + sleep 5 + + # Status prüfen + if $COMPOSE_CMD ps | grep -q "n8n.*Up"; then + print_success "n8n Container läuft!" + else + print_warning "Container-Status unklar - bitte manuell prüfen" + fi +else + print_info "Container nicht neu gestartet" + echo " Führen Sie später aus: cd $N8N_PATH && $COMPOSE_CMD restart" +fi + +# ============================================================================= +# Abschluss +# ============================================================================= + +echo "" +echo "=========================================" +print_success "Installation abgeschlossen!" +echo "=========================================" +echo "" +echo "Nächste Schritte:" +echo "1. Öffnen Sie n8n in Ihrem Browser" +echo "2. Gehen Sie zu: Settings > Community Nodes" +echo "3. Der 'LibreBooking' Node sollte sichtbar sein" +echo "4. Erstellen Sie neue Credentials für LibreBooking" +echo "" +echo "Bei Problemen siehe: DOCKER-INTEGRATION.md" +echo "" diff --git a/install-in-container.sh b/install-in-container.sh new file mode 100755 index 0000000..ff87675 --- /dev/null +++ b/install-in-container.sh @@ -0,0 +1,191 @@ +#!/bin/sh +# ============================================================================ +# install-in-container.sh - Installiert den LibreBooking Node IM Docker Container +# Dieses Skript wird INNERHALB des Containers ausgeführt! +# ============================================================================ + +set -e + +echo "============================================" +echo " LibreBooking Node - Container Installation" +echo "============================================" +echo "" + +# Funktion: Prüft ob ein Verzeichnis read-only ist +check_readonly() { + local dir="$1" + local test_file="$dir/.write_test_$$" + + # Versuche eine Test-Datei zu erstellen + if touch "$test_file" 2>/dev/null; then + rm -f "$test_file" 2>/dev/null + return 0 # Schreibbar (exit code 0 = true) + else + return 1 # Read-only (exit code 1 = false) + fi +} + +print_readonly_error() { + local dir="$1" + echo "" + echo "============================================" + echo " FEHLER: Read-only Volume!" + echo "============================================" + echo "" + echo "Das Verzeichnis '$dir' ist read-only gemountet." + echo "npm install und npm run build benötigen Schreibrechte." + echo "" + echo "LÖSUNGEN:" + echo "" + echo "1. Volume OHNE :ro mounten:" + echo " In docker-compose.yml oder docker-compose.override.yml:" + echo "" + echo " volumes:" + echo " - ./custom-nodes:/home/node/.n8n/custom/n8n-nodes-librebooking" + echo " # NICHT:" + echo " - ./custom-nodes:/home/node/.n8n/custom/n8n-nodes-librebooking:ro" + echo "" + echo "2. Auf dem Host bauen:" + echo " Führen Sie auf dem HOST aus: ./build-on-host.sh" + echo " Dann verwenden Sie: docker-compose.readonly.yml" + echo "" + echo "Siehe: TROUBLESHOOTING.md" + exit 1 +} + +# Mögliche Pfade für custom-nodes +POSSIBLE_PATHS=" +/home/node/.n8n/custom/n8n-nodes-librebooking +/home/node/.n8n/custom +/opt/n8n/custom-nodes +/data/custom-nodes +" + +CUSTOM_NODE_PATH="" + +# Finde den custom-nodes Pfad +echo "[1/5] Suche custom-nodes Verzeichnis..." +for path in $POSSIBLE_PATHS; do + if [ -d "$path" ]; then + # Prüfe ob package.json vorhanden ist + if [ -f "$path/package.json" ]; then + CUSTOM_NODE_PATH="$path" + echo " ✓ Gefunden: $path" + break + elif [ -f "$path/n8n-nodes-librebooking/package.json" ]; then + CUSTOM_NODE_PATH="$path/n8n-nodes-librebooking" + echo " ✓ Gefunden: $CUSTOM_NODE_PATH" + break + fi + fi +done + +if [ -z "$CUSTOM_NODE_PATH" ]; then + echo " ✗ Kein custom-nodes Verzeichnis mit package.json gefunden!" + echo "" + echo " Geprüfte Pfade:" + for path in $POSSIBLE_PATHS; do + if [ -d "$path" ]; then + echo " - $path (existiert, aber keine package.json)" + else + echo " - $path (existiert nicht)" + fi + done + echo "" + echo " Bitte stellen Sie sicher, dass die Dateien korrekt kopiert wurden." + exit 1 +fi + +# Wechsle ins Verzeichnis +echo "[2/5] Wechsle ins Verzeichnis: $CUSTOM_NODE_PATH" +cd "$CUSTOM_NODE_PATH" +echo " ✓ Aktuelles Verzeichnis: $(pwd)" + +# Prüfe ob npm verfügbar ist +echo "[3/5] Prüfe npm..." +if ! command -v npm >/dev/null 2>&1; then + echo " ✗ npm ist nicht installiert!" + echo "" + echo " Im n8n Docker-Image sollte npm vorhanden sein." + echo " Falls nicht, verwenden Sie ein Image mit Node.js." + exit 1 +fi +echo " ✓ npm Version: $(npm --version)" +echo " ✓ node Version: $(node --version)" + +# Prüfe Schreibrechte (read-only Volume?) +echo "[3.5/5] Prüfe Schreibrechte..." +if ! check_readonly "$CUSTOM_NODE_PATH"; then + print_readonly_error "$CUSTOM_NODE_PATH" +fi +echo " ✓ Schreibrechte vorhanden" + +# Dependencies installieren +echo "[4/5] Installiere Dependencies..." +echo " Führe 'npm install' aus..." +if npm install 2>&1; then + echo " ✓ Dependencies installiert" +else + echo " ✗ npm install fehlgeschlagen!" + echo "" + echo " Mögliche Lösungen:" + echo " - Prüfen Sie die Berechtigungen" + echo " - Prüfen Sie die Internetverbindung" + echo " - Führen Sie 'npm cache clean --force' aus" + exit 1 +fi + +# Build ausführen +echo "[5/5] Baue den Node..." +echo " Führe 'npm run build' aus..." +if npm run build 2>&1; then + echo " ✓ Build erfolgreich" +else + echo " ✗ Build fehlgeschlagen!" + echo "" + echo " Prüfen Sie die TypeScript-Fehler in der Ausgabe oben." + exit 1 +fi + +# Prüfe Ergebnis +echo "" +echo "============================================" +echo " Prüfe Installation..." +echo "============================================" + +if [ -d "$CUSTOM_NODE_PATH/dist" ]; then + echo "✓ dist/ Verzeichnis existiert" + + # Prüfe auf .node.js Dateien + NODE_FILES=$(find "$CUSTOM_NODE_PATH/dist" -name "*.node.js" 2>/dev/null | wc -l) + if [ "$NODE_FILES" -gt 0 ]; then + echo "✓ $NODE_FILES Node-Datei(en) gefunden:" + find "$CUSTOM_NODE_PATH/dist" -name "*.node.js" -exec echo " - {}" \; + else + echo "✗ Keine .node.js Dateien im dist/ Verzeichnis gefunden!" + fi + + # Prüfe credentials + CRED_FILES=$(find "$CUSTOM_NODE_PATH/dist" -name "*.credentials.js" 2>/dev/null | wc -l) + if [ "$CRED_FILES" -gt 0 ]; then + echo "✓ $CRED_FILES Credential-Datei(en) gefunden" + fi +else + echo "✗ dist/ Verzeichnis wurde nicht erstellt!" + exit 1 +fi + +echo "" +echo "============================================" +echo " Installation abgeschlossen!" +echo "============================================" +echo "" +echo "Nächste Schritte:" +echo " 1. Verlassen Sie den Container: exit" +echo " 2. Starten Sie n8n neu: docker restart n8n" +echo " 3. Öffnen Sie n8n im Browser und suchen Sie nach 'LibreBooking'" +echo "" +echo "Falls der Node nicht erscheint:" +echo " - Prüfen Sie die Umgebungsvariable N8N_CUSTOM_EXTENSIONS" +echo " - Führen Sie ./check-installation.sh aus" +echo "" diff --git a/install.ps1 b/install.ps1 new file mode 100644 index 0000000..3fc8ca4 --- /dev/null +++ b/install.ps1 @@ -0,0 +1,250 @@ +# +# LibreBooking n8n Node - Installations-Skript für Windows (PowerShell) +# +# Verwendung: +# .\install.ps1 +# +# Optionen: +# -NoLink Überspringt npm link (nur Build) +# -Global Installiert global statt npm link +# -Help Zeigt diese Hilfe an +# + +param( + [switch]$NoLink, + [switch]$Global, + [switch]$Help +) + +# Konfiguration +$MIN_NODE_VERSION = 18 +$ErrorActionPreference = "Stop" + +# Funktionen +function Write-ColorOutput { + param( + [string]$Message, + [string]$Color = "White" + ) + Write-Host $Message -ForegroundColor $Color +} + +function Write-Header { + Write-ColorOutput "" "Blue" + Write-ColorOutput "=============================================" "Blue" + Write-ColorOutput " LibreBooking n8n Node Installer" "Blue" + Write-ColorOutput "=============================================" "Blue" + Write-ColorOutput "" "Blue" +} + +function Write-Success { + param([string]$Message) + Write-ColorOutput "✓ $Message" "Green" +} + +function Write-Warning-Msg { + param([string]$Message) + Write-ColorOutput "⚠ $Message" "Yellow" +} + +function Write-Error-Msg { + param([string]$Message) + Write-ColorOutput "✗ $Message" "Red" +} + +function Write-Info { + param([string]$Message) + Write-ColorOutput "ℹ $Message" "Cyan" +} + +function Show-Help { + Write-Host "Verwendung: .\install.ps1 [OPTIONEN]" + Write-Host "" + Write-Host "Optionen:" + Write-Host " -NoLink Überspringt npm link (nur Build)" + Write-Host " -Global Installiert global mit npm install -g" + Write-Host " -Help Zeigt diese Hilfe an" + Write-Host "" + Write-Host "Beispiele:" + Write-Host " .\install.ps1 # Standard-Installation mit npm link" + Write-Host " .\install.ps1 -NoLink # Nur Dependencies installieren und Build" + Write-Host " .\install.ps1 -Global # Globale Installation" + exit 0 +} + +function Test-Command { + param([string]$Command) + try { + $null = Get-Command $Command -ErrorAction Stop + return $true + } + catch { + return $false + } +} + +function Get-NodeVersion { + $version = (node -v) -replace 'v', '' + return [int]($version.Split('.')[0]) +} + +# Hilfe anzeigen +if ($Help) { + Show-Help +} + +# Start +Write-Header + +# 1. Node.js prüfen +Write-Host "" +Write-Info "Prüfe Voraussetzungen..." +Write-Host "" + +if (-not (Test-Command "node")) { + Write-Error-Msg "Node.js ist nicht installiert!" + Write-Host " Bitte installiere Node.js v$MIN_NODE_VERSION oder höher:" + Write-Host " https://nodejs.org/" + exit 1 +} + +$nodeVersion = Get-NodeVersion +if ($nodeVersion -lt $MIN_NODE_VERSION) { + Write-Error-Msg "Node.js Version $nodeVersion ist zu alt!" + Write-Host " Mindestens Version $MIN_NODE_VERSION benötigt." + exit 1 +} + +$nodeFullVersion = (node -v) -replace 'v', '' +Write-Success "Node.js v$nodeFullVersion gefunden" + +# 2. npm prüfen +if (-not (Test-Command "npm")) { + Write-Error-Msg "npm ist nicht installiert!" + exit 1 +} + +$npmVersion = npm -v +Write-Success "npm v$npmVersion gefunden" + +# 3. n8n prüfen (optional) +if (Test-Command "n8n") { + try { + $n8nVersion = n8n --version 2>$null + Write-Success "n8n $n8nVersion gefunden" + } + catch { + Write-Success "n8n installiert" + } +} +else { + Write-Warning-Msg "n8n ist nicht global installiert." + Write-Host " Für npm link muss n8n global installiert sein:" + Write-Host " npm install -g n8n" + Write-Host "" + + if (-not $NoLink -and -not $Global) { + $response = Read-Host "Möchtest du trotzdem fortfahren? (j/N)" + if ($response -notmatch '^[Jj]$') { + exit 1 + } + } +} + +# 4. Dependencies installieren +Write-Host "" +Write-Info "Installiere Dependencies..." + +try { + npm install + Write-Success "Dependencies installiert" +} +catch { + Write-Error-Msg "Fehler bei npm install: $_" + exit 1 +} + +# 5. TypeScript kompilieren +Write-Host "" +Write-Info "Kompiliere TypeScript..." + +try { + npm run build + Write-Success "Build erfolgreich" +} +catch { + Write-Error-Msg "Fehler beim Build: $_" + exit 1 +} + +# 6. npm link oder global install +if ($Global) { + Write-Host "" + Write-Info "Installiere global..." + + try { + npm install -g . + Write-Success "Global installiert" + } + catch { + Write-Error-Msg "Fehler bei globaler Installation: $_" + exit 1 + } +} +elseif (-not $NoLink) { + Write-Host "" + Write-Info "Verlinke mit npm link..." + + try { + npm link + Write-Success "npm link erfolgreich" + + # Versuche mit n8n zu verlinken + if (Test-Command "n8n") { + $n8nPath = Join-Path (npm root -g) "n8n" + if (Test-Path $n8nPath) { + Write-Info "Verlinke mit n8n..." + Push-Location $n8nPath + try { + npm link n8n-nodes-librebooking 2>$null + Write-Success "Mit n8n verlinkt" + } + catch { + Write-Warning-Msg "Konnte nicht automatisch mit n8n verlinken" + } + finally { + Pop-Location + } + } + } + } + catch { + Write-Error-Msg "Fehler bei npm link: $_" + exit 1 + } +} + +# Abschluss +Write-Host "" +Write-ColorOutput "=============================================" "Green" +Write-ColorOutput " Installation erfolgreich abgeschlossen!" "Green" +Write-ColorOutput "=============================================" "Green" +Write-Host "" +Write-Host "Nächste Schritte:" +Write-Host "" + +if ($NoLink) { + Write-Host " 1. Führe 'npm link' aus, um den Node zu verlinken" + Write-Host " 2. Starte n8n neu: n8n start" +} +else { + Write-Host " 1. Starte n8n neu: n8n start" + Write-Host " (oder mit Docker: docker-compose restart)" +} + +Write-Host "" +Write-Host " 2. Öffne n8n im Browser: http://localhost:5678" +Write-Host " 3. Der LibreBooking Node sollte verfügbar sein" +Write-Host "" +Write-Host "Bei Problemen siehe INSTALLATION.md oder README.md" +Write-Host "" diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..69b459c --- /dev/null +++ b/install.sh @@ -0,0 +1,209 @@ +#!/bin/bash +# +# LibreBooking n8n Node - Installations-Skript für Linux/Mac +# +# Verwendung: +# chmod +x install.sh +# ./install.sh +# +# Optionen: +# --no-link Überspringt npm link (nur Build) +# --global Installiert global statt npm link +# --help Zeigt diese Hilfe an +# + +set -e + +# Farben für Ausgabe +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +NC='\033[0m' # No Color + +# Konfiguration +MIN_NODE_VERSION=18 +REQUIRED_NPM_VERSION=8 + +# Optionen +SKIP_LINK=false +GLOBAL_INSTALL=false + +# Funktionen +print_header() { + echo -e "${BLUE}" + echo "=============================================" + echo " LibreBooking n8n Node Installer" + echo "=============================================" + echo -e "${NC}" +} + +print_success() { + echo -e "${GREEN}✓ $1${NC}" +} + +print_warning() { + echo -e "${YELLOW}⚠ $1${NC}" +} + +print_error() { + echo -e "${RED}✗ $1${NC}" +} + +print_info() { + echo -e "${BLUE}ℹ $1${NC}" +} + +show_help() { + echo "Verwendung: ./install.sh [OPTIONEN]" + echo "" + echo "Optionen:" + echo " --no-link Überspringt npm link (nur Build)" + echo " --global Installiert global mit npm install -g" + echo " --help Zeigt diese Hilfe an" + echo "" + echo "Beispiele:" + echo " ./install.sh # Standard-Installation mit npm link" + echo " ./install.sh --no-link # Nur Dependencies installieren und Build" + echo " ./install.sh --global # Globale Installation" + exit 0 +} + +check_command() { + if command -v $1 &> /dev/null; then + return 0 + else + return 1 + fi +} + +get_node_version() { + node -v | sed 's/v//' | cut -d. -f1 +} + +get_npm_version() { + npm -v | cut -d. -f1 +} + +# Parameter verarbeiten +for arg in "$@"; do + case $arg in + --no-link) + SKIP_LINK=true + ;; + --global) + GLOBAL_INSTALL=true + ;; + --help|-h) + show_help + ;; + *) + print_error "Unbekannte Option: $arg" + show_help + ;; + esac +done + +# Start +print_header + +# 1. Node.js prüfen +echo "" +print_info "Prüfe Voraussetzungen..." +echo "" + +if ! check_command node; then + print_error "Node.js ist nicht installiert!" + echo " Bitte installiere Node.js v${MIN_NODE_VERSION} oder höher:" + echo " https://nodejs.org/" + exit 1 +fi + +NODE_VERSION=$(get_node_version) +if [ "$NODE_VERSION" -lt "$MIN_NODE_VERSION" ]; then + print_error "Node.js Version $NODE_VERSION ist zu alt!" + echo " Mindestens Version ${MIN_NODE_VERSION} benötigt." + exit 1 +fi +print_success "Node.js v$(node -v | sed 's/v//') gefunden" + +# 2. npm prüfen +if ! check_command npm; then + print_error "npm ist nicht installiert!" + exit 1 +fi +print_success "npm v$(npm -v) gefunden" + +# 3. n8n prüfen (optional, aber empfohlen) +if check_command n8n; then + print_success "n8n $(n8n --version 2>/dev/null || echo 'installiert') gefunden" +else + print_warning "n8n ist nicht global installiert." + echo " Für npm link muss n8n global installiert sein:" + echo " npm install -g n8n" + echo "" + if [ "$SKIP_LINK" = false ] && [ "$GLOBAL_INSTALL" = false ]; then + read -p "Möchtest du trotzdem fortfahren? (j/N) " -n 1 -r + echo + if [[ ! $REPLY =~ ^[Jj]$ ]]; then + exit 1 + fi + fi +fi + +# 4. Dependencies installieren +echo "" +print_info "Installiere Dependencies..." +npm install +print_success "Dependencies installiert" + +# 5. TypeScript kompilieren +echo "" +print_info "Kompiliere TypeScript..." +npm run build +print_success "Build erfolgreich" + +# 6. npm link oder global install +if [ "$GLOBAL_INSTALL" = true ]; then + echo "" + print_info "Installiere global..." + npm install -g . + print_success "Global installiert" +elif [ "$SKIP_LINK" = false ]; then + echo "" + print_info "Verlinke mit npm link..." + npm link + print_success "npm link erfolgreich" + + # Prüfen ob n8n vorhanden und linken + if check_command n8n; then + N8N_PATH=$(npm root -g)/n8n + if [ -d "$N8N_PATH" ]; then + print_info "Verlinke mit n8n..." + cd "$N8N_PATH" 2>/dev/null && npm link n8n-nodes-librebooking 2>/dev/null && cd - > /dev/null + print_success "Mit n8n verlinkt" + fi + fi +fi + +# Abschluss +echo "" +echo -e "${GREEN}=============================================${NC}" +echo -e "${GREEN} Installation erfolgreich abgeschlossen!${NC}" +echo -e "${GREEN}=============================================${NC}" +echo "" +echo "Nächste Schritte:" +echo "" +if [ "$SKIP_LINK" = true ]; then + echo " 1. Führe 'npm link' aus, um den Node zu verlinken" + echo " 2. Starte n8n neu: n8n start" +else + echo " 1. Starte n8n neu: n8n start" + echo " (oder mit Docker: docker-compose restart)" +fi +echo "" +echo " 2. Öffne n8n im Browser: http://localhost:5678" +echo " 3. Der LibreBooking Node sollte verfügbar sein" +echo "" +echo "Bei Problemen siehe INSTALLATION.md oder README.md" +echo "" diff --git a/n8n-nodes-librebooking-v1.0.0.tar.gz b/n8n-nodes-librebooking-v1.0.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..e6c52bcb992e48fc65badb144902f63f3a2f80b2 GIT binary patch literal 330763 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%0DaHXd!*2Vq>0izF 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 z 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

k#08XSeo5U>r>1(@X@X-&Q7g z3E687sjqjt@@|R|5d*0lBvj2=ZH^NPxS~9G%i4+bXjAWRTmcZ2IKpNgc8pSVhMh&e z*KFLO!?hr9AiJ;hc6tP^hfRP43a1$4U@~zregj8-lbC;ixP=y}>=wD~kb$C$4m2*M z`$lu4q1f#vx$IKi)Li9K#$ z4aVOu6$u~d-oUw~rVp+=YfT8AsQOYj0U;|Q36|ZlC%OPK4y6c%OL#NZMhdaHr6%VF z28Z;eaL@=kZ0xH~3VXeHD*yW6t!B$JXbs=Y^mS=Zb8R5It^c4t@wz&-qrd?y86D}} za}bF5i@A$w60k%}w3pmq`dvzkETil|02Z4OE|Y-f!bDTbey%cSCgl#?wwnQOWPYO5ow{0H?dI6~#vA={v zF+IHKQA3)y)c9Yde*tS@4=>W|*IjWr(2#4RT(cF@?V zqwKn#6h$V5*lfZ)ps)#wM18Qmemam1y?*Yy06^1xga1Nn*pKj^@@3sH2#+xN^7_tf zq0ML+d|%9eQkTb*^XPQ_sPzoJg;efbjDGwYp)KX9u=QTsnKE8V&Bh!l_}}+b8!X7`}vil*um_MDptlr zPs<+q^S9~CXmW^x(&F1JGYDzMlUBK?X%;pj?1G=?v7BAK?D)Jqv?wNoRu#5i_#_;N zOM-=(k;GOowISqd(I*_B&UI0IIT5I%k|Ah3S&jiZUg{=XAnK0+C^YG?25md#u?ViV z1Sh?w^dj}vgfJWV3iFOdg{e!@^kT0kuAIQ`NyHqT6ZY|% z41A%I4FYeTj|23399@-@_L(Y+U%_y(*IUfRrJf1I&^rP4ou%fMX0BKRxA1A)ahHlw zjtSuNf3D(?5==Vr@ZszFvaKXbiKiumAuSElU96UPTtHWjU^rGT4WrXC02_9X2M?8w zcbd0eB5h8gMx0$oSuzt}@z-W}P|!Lku9fSWx*53@aVyHc43R~6o`v#1j&Ex;OkL`1 zj3FHoDAC{S@!*{dO6HwcBvyT#><0(U%QXb_ovP^0!AjLcy<6*6`V~2E2uVX)r=}Lf znMG=yrZb-HVPXW56{^UjKXETJtY!{d)oFq@r6D2!yG21;Ebxvc#xz;cZshZCyM+|5 zv8s+;S78ZS5e3v^uIzb@GmBKl-*iCoF5#$Bg33Xiqxm;Ch51U%0h$R?jtCTl-A5cUgfLAeLlp{Q*-x>-o)DReaglCT1oflaoM8 zdbAtKMTik!Z;QYX1x@X*Pu)-C*D>?E!=)Y6MBz4tq}{P!9E871OH+QWHXWO88$ZWf za4jFxS}l4_$C(jplxf{beydXodL2r5H#h%%Xup4~Y!39&(U28uKU39H@Jo`Cr5mT z#(jXiXtoRYF;aRxFgr5!ah!xSP>3n(;g7cS$r-MAGQN~^ON7&5Y=}&;HdHy^5SCAN zYW|YX7Al2Y<4HWuf*N&v6{V-n3<+ag2_vu@v9=q>y=z<4!q>F}wFEPnlEmA3=MYgi zgn)1~hcJ^BFfRpB$U68eDW|$RzJATGmU?}Js~4@8=csmhX(EDYM#PNtHGR9)^5Z=X z0E(;kWR!+*ZsTZ6ZT5;#tf#a&llr%|Uku9dAgMeN0z+1z-}%3KdE^^rcus1uK#|{dyQsFC zW8)d%*X0>>GMs?2MxiLT@FjubRyh)w-7~Rl0gIC{d-t^MR4zh6MzVGTxG+0 zxAtGniF_5DpnOP-CU#KZ4{*ea@7+oEMX{UQVM z*F8sDsP>uWrd6uGgFy}mrHUS8vBDelrjj}V%#@WXm4Xy#JfP!X-`FPd+W zQdI5GrlT_{AZMsAoN}$a+27IBwi-p}bGl%)>$o*W1AD%-*n)4`q^fedJ~~c%stwl;2U83io@Xj{L%oGis~!G*`kE7=^8pSMX*m@7rPuV>QS(VQX$Kb0FX}e2asL7OYy2IH*VHF z>jBh*snUMWRjRly>GoJMkv({fyprgX)9@@4+(;-dOCGCXBH>ITRRLS5n|y!r#(&3u zkzwD7rFPdqb(=#lJn+)<{e<3woK}D(k|M+V z1LkEOxBA~O%71f@1sgl#e_dWD8MDcP_|Nh>$3MnuUP$QB@TR)a0Wg=&dbFsXr{=OJ z3_87QKX6tk!r{ctg?T3J+&qIKo=i)~7ZnCwYWdKfVZJ}Wud;N%1wyyezV06WwZLwn z?{a_Cd;8;z^U&#ih*DpK49&~r{|;ggLeDj3ovl==b1N?)5BPL zGv}Xe7D&b0E+ghIs6YAO`p4BXoU~N{u@amzzI^RyeN9eq_0iG&8H^OA49~5GP8FTA z^ctOBsk6*F=|ZO1RVv0z10$uPB(Q|Mm;NYyjfdrQ!_f$o&4j8pC`bDF5AxUJk!5Bo zGb0!ocJl|2S-M`#8G3sD1H3-IKKy#AeENNM{fl;w7+VF)B1mxpQ*v#4O7DwyY}^Eu zb9PSj2&v52sjS#~!3VeP#9)fnMn)rHn|70(dvy0?uExVkOcf^wcs?KXKA!J3h~HJt zL$Il?{88^)f*qjAyHiXzw}>ILr!!WFBF74xi5^4`>TF*FuAw0zB+|amCuj+?MnK@c zpjaz|l>XnRy|G~V!88%t6vRX-VZv^Vl zxYwEI6RTkr9uX;XW{leAF^ZysM#D3j86ymKNuyhh3T-JW7Rt&;gXZUPDzxa4*_e?$1r3F#X38d|n|c)926UNHfUW3}G(wD~bSBGs zQp~CJbIKM|p-D(3^a1n_paY`?ok>WFQ!3N zzy-vOGq-wvIzPTw;Cwy5_CmOGKdyFiTz^ZpegG9?C-Vpfl_;@{CZ_%nX=}qbP^2JHCJ2#%pD=UTeOGL^HdSis#^}C~W$+CUl zy`SX#yuUbNtJO&X|1jH2Ax6p#1ecRvP@R-1GA{uXEu}jj;l{M`4(J8|r?%1m9GdaRrAL z-;E3Yu(PF|I?mzPNEF5IypWl2ENOeHbU&=aCie7LN%=`aGz;y>;Xm!jDnVEPd`0@F zH-q74w*5V}-1(?9e0CSh;()Nii*|KIaw29iZyYS}DnOXVxbF1elR)ji6WPq&E$~U% ztOJFJUvACOvYM9}EFiLCjS6R&t*(PmgGA4Hz}X4bBGQWU*Cjv}R&* zDjp}VTrw-aH?2U)TiSPE|A-$F3ecCAS^u?lvVO%zeUTG3wDx$o_#z-)RM?IF@n?db z3*z)h*8QM5x!Js>)Wjv$f{dP2r$|NOa2Y5?!XzzVmEKf=)5|oKyts&>V{xFUoSHH! zbXr8}F{|A}q3uY5RFpGugV+}2VjlzBc&oX?q;)rkc3PX{09>?|4lyc{X`coB)j@~UR&GS-AEW+yE%Y1p^Yb<1rTtvp*=5(BK%Nh7y*o2iGIwU&+2xdxZkw&-HlF)>Pn34SC*svSqkmj}L-=H@cG ztzgaIgY}3M?U81~nLDnK7RJ8dU0jvo;^Yvfkba(niNfzcxR zO;+=HP{1Mbh;xAvUd@$$z3p}l7Afob)0*FXeEU({-+T&0QWl3!SW?+Gz536~!bmrA z;$+F?&UyS$XBa>Hgf)Rzl3F`DV-$2NM*nD@qS8`9yM2DJ#1Zq9R(8AHQ8DwRfA!IFF9 zW?~d3&61!c9Tm+J_emEwv}-*+?V${bwdxXk^Pb0AW_6OA#aD;0!E>b}SNbwByC?Ma z*i7RPFt2_zPcBUR=AoBPA>ob_Npq?|XVY=8b3t@2++x}LB6clQQ@Yp|m2QvZR?QG2 zWF@6bX4!o+9+%U45zqF1-+1g4)kd1 zC8x9ODL=<1YCuRgQZQp|JOw_jEO|4W<7{$dq<$D=L17VDn}s1eO7zo*@QY(>nv6NhfZ@0$0+r#)Ttp4KoJOX!9W}D zwFQ*y(8u*Fzo!q{=gp)i1dpejXc=8{kRTcpc@`h9$5$J^-2+un z*MX32d#`X(LTf#wTl>x&GbD+&mQqm#o!$5#)c7XVpbr;pm$am+Mh zP0Fz4P5&4B_`L>Mf?1zzg3VcfAT)M@Gp3vfCSu~CY9b}v;6ZZ(TiwGjnikpOZ!b_# zw|5QDA~)W8->&y_+Mo)Of_21@E5swtOMkP!5${qz9Y{aCbtH5I)*@j$a;O+!_~~f% zqO`8g-dA+D*e}2ee15Ub{LvF;?d-1QZfUV>&V0_9OfIoAelKmKx6z5>OYNDoTr;vG z==ig@9K7F?h;~CybGko68Cr$7Een4FV-v0u0##sj0mV(V=BAf}YaNKvxD9T}u5oqF zf6lZ(NN?v=>yTm=vT&v{k)h#H zyb6<2wZ!73F{iRf@M~rHPh%I5V$Kz9v%pmdq$ z26MFqstbe;boRE5v+JjyGDj77Je_YVIWLbgjwX(58Q)hwfQD;MzW)s;|2Mb1Ffp_J zS5B@TgWZDQlcP&N11eBAx(@;lrRIXYI^I+dy#{_?yRnSY09Edn*pR z7g1#6gE>RF^80+3-oK!*#~0vzgb@5Dpur8B2b%}C(2is)iw05a+vA_v)Lw)_BsLw5 zf6b?||MJ+w(SARuxq-WZ{V6up+4PGY(fyY61}lLMKDggs(Z!v6>L$g7ZFx)y-c`+h zx3ilE2PkVidJVH9?aVrWHL}JD8~}kVZ^VIxRs{`oal$az!4?Ii*ptd54Ke)o5{|AB3dB5i@c$ge%j!m1&oRB!yvn z7Q;zHo6lgy=M%uzO&qPW8(qmFF9g}-@361bNenw;K4?P_O;f5)9IZ|otv`t0Or;mo zbVU>$kjd66gAFQsP~D#zrgFvgdEJt;VvE;p*58v{KYF-LjN*>wVQ%qy6ZPK3eeG$0 z@wBE0!X7r^d`t_3qZ zNKdJ<6+GO^MMmfLKk6VV`eo^0;JUbi$Px-fZU6Yo^iE?T!Ve`8DP#}Eo&tA=XkQ3h zTdqk0yGaInD3lSz0CXjGYEZeB7`7TIq;H|Mg3csgnG>$(nco8V7D%ddJ@)RJUCVNVa`|bMxGjO`Yy~miKT_TP9 zpXKbi)_is9NY>>Xe-2R|qaEVbY~$uqNvN0uj&30zB^_+Qg`n|vek`=ybaVZ3Ke)RZ z*u$eO0+z&!RZy4{I7|`|4~ynul8R-Ok;lTZf$qkpH#~iKaEk)+K6URTg&y9C!ugO` zap+WWxnymoud|(e$$Q4wz~I)|=^^Dh^t5}JIoP;?_4UFUsR{TcIUs_k=-8DS#S1_1 z0GwIhDk3}}1^Rk7qH4SS8Fl=`L@CNgrV^`enbfpi;9Muvk5>n$G^=1}yUt{WL|h}9oi*oxhhdIlusBUq5IS|z8n z%d;_Xt!T7Cv->N_z3{K6arad8vX?ChhN5b3l&h{>0~-fr$LskbyTGr=a?A5NYaJp6 ztJsF&%Q~i+b1XldAgYchkRvKgdtYFbK(4vp&$XSnnm5p`=E!d29vmDTJ!jAj( z@zx46NGWJym$i@7gl9nJ!Ge;S@luw1&pCQSe-wsD?0zk0s8g05o3phGR7zT>K#sf) z&#H_^iN{bdIht8o$Dodt1Y{9*=6Ye}O>;b_H+H=|H+a(^SEKl?+_q9Nur$hQNtxn3 zY)XPPSsGwk3RD!6H*P)F-BGHjG$~ordpcD?8MVmT1*zT9eYSW2*(6+L`@BlPA=WD3yU+UaE73rnTgf$G@Ax>M>^%8(1h}(J(6?Cry<yBr@1bnBpCS^a9*g0KeQ5bT=894)L)LzD z?`v8HC$eKk>!Wm)|Tt`V9}ukihGadNCz0VC*EXSA_^=$2~&J#Y7@ur zcT=}{?D^E+zc`xO=;6bXma(xlBLldkse~pK`Ci+!d1!@Ek9mfjfu1uB6eWgGpXyB; zQ5K`>tsd~F`mCverLPIuC#K~j#3jfSE5G(fR$5widerT06ul|k{ks8EKA%PUCMqdj zG}$wlC(ctS2Np~)x1*M5X<_JJ;&M7@pP(BV+FFXA+4+)wFA8ZymI#$8GldE6QIpj~ zdNXc9nQpF1CZQXdPd!zf z&PJB(llG5wOk#_g7cVOt1aNG-4qdp(Q1e7(OI9Xpw7kg0cxJD~*&a&G_&52xp^&)& z4!JZM^ZJNB4B31ZgXwbtV0oME2^4K6+)*N+ekr+Rhe7{tIhJxKmN9u3D7N!K&E1+U zjmuOloft?+xz`TqIG0}d^}Et&Uc+8Pm|3va$0T$J(IhR#=T`t%y-RZ_K{fP7cazf; zn)sB+ASEZ;W;K^a8TOG0gn`Y=c3OMUWij~=`PYUA#tie=IZlq(AdzhY-#jA76tnsC z7IhAyv{pH~FHZ_i<1?~$CRob^>`e1%u6U`isn?4q8Ax9v3S~+JKIKtZ0&>akKO+xE zVHIWFiQo$=7A98etF$u9D7O+Flb2&{tmVDMg`q}aF@c0_g|*}U!sTR4!-~v$nS1~6 zkj%^jOhId$iW}l`$&I~UyA+vqnjJqDz_sz-*=fM-CeVve}G|KN>4dL2sXhQfn%% zO*i$18C*+?Pm@DVpaI6ui`U$e0d$<+3-l<2;RzK|H|3Egb=dG%>~x;@+MDk7pdt~i z$);#qIYj~ueVo&`xSl+EkTuQP-)WH1lFP;?bH~if_l-I%F(>uS36gUD6o-KX>;ciMRy25+o?t$0%!x3MlH@zzJa? zEVEK8lIaNapH5;}VY7iQO17jD`inI^{xF5|-7v!kP|B z{~>P}%`BE%?o*%rB~x-usC(jqM~q`_v+q(Rlv3QqS98TBCwS5w-%&S5zM^7=q!K0i z)E8Wa2=8a?qgWHpso7U|z&3W-^RH&P?dijaUyAAW4H$WNipuX<)Y2swMHgbca}Zk+ z?`5y%Ksy1=XCs~}O4a+Gvn*ds-VH{*9{RM?8wv!hrRvmb0gM$OmUe36&NOjrMoZft z1$^Gkq+gk~U#*WwrfARZ^Rl@*PiDC3X%q?(TtzrjxEoGREd_4{1V&t^L#naahy)$a zFOostD^}V}CZK69nDqe_Zux@hHBycTPIC5F6Vx_j6>6U8g8Pt>MNf8SHgd+h68Njz zbOJHVx`Zq^mKgfgCP5)CdQZdV7sEVms|=g}`r9(V>YeUZxI*Dda-(bYBc?%#g7H~q zW^JOLg){Y@iUO<y;G!HSk3qu}mKqkJ+X$yI{KE+B%tc!Afbe|$x*#*zFGO1bIOJ-ZGODn)Z5(Q=h!DTZr(&tA3ziMWvUzEDb zeae@iaB-Xs(KINY0*;>=h!P%yvW0vy_#5OUTAj103t0@h-uQIy{_Q^JRB!cdx$NQ{ z#siVs$VbVcxQY>z*%EYI>&Go@92Tlahi9)xa63W;Xg4C6{kGZTvz5*-QIsH=_GsvTA9vK&bMJf%1Dk{qu2gw2Cor+xx96H+`Lj4B1 zz&tWQd`K%bkV=w5rFR_k90#j z1qy+-CsBHiv2{lh2W3gbC`$g${T+)3DlzC5w}1rpQ2dyg`-kZ)oI}x_UkT>yLrKMp z|CO_Yw|QaL_qpAt!K^z$s$>}}Qu;JUMD?woE(?psn4BuQBNNmO{7JEhs7kHe%FGKp zN3gs!l_zAlQ4z{os^UTHDr;!2DdWnhbev9^+N5gHR}snVbvB#*$WBfth#A@o7VnRs zDpZUL0bBILE~i(RTI5cY@dCp z<>G!y>uj;u46#DvBJC-SoB52|f#ZdF*pR};GY`6m8M|=75HvOicC!9qtD7i#-yD#Z zbaRxz<5zrWUgq{bHdDwZL-kRD?Q`bC4}@Mx5eM#FR!JRD{M-Hfo1 zb$cWAGIPsRu?x3#3Zk{){0Y2p_vM2Q-^z-Mv=_ub+G-@|(Ia-OCFuda;itUUyr9ua zw7_p3K`6e&JQ8B z2ZjcyXn~I4Zf4J|7W_n32g=+w5W2v(WY;sAM|#QSR^atl5lq`P1o}G!1Xm4%ZU;PvgxymCbSuMx{Y2%}68cz> ziDgpY{l*Rn`9)jZjtR*o6qup&()ww_h|C-RZA^eF|71y#jkZtkSfu3rbPsSWm`xBT z^b;TN<-s$pgDrmEei|`Td{}+ulb-^~Uadyz;U5Fj30C#@^@uywNZfs%vlMeH?UL(7 z8e*abu_M_!d6}mqt*C<}i#V~>>BjjbENhLfFW@9IxMGi-^CgH~LJ|dU*RL=S%c-XU z0X;S)(Y2d}B)A6jWatsV`(D|+xmT@^ZL`7YnP;%p51nHPW8$#Vf!J@@~kx&;2!KyILu zl0eP`Mc$q?3Kq|Yk6LzJuq4F$0oPzp`bXzUb0jvWx~voi{7YMu^L`KRpjdx%+-AZY z7F$8TX{#jTLu&h#I*+1DvhK@d$GugGvnT z7&!wb@FcjaOX3qFV+Xx)hBHwFGM_hG+U2zhhR3C3lU>)XEf644|7V9? zXa64t%Hkgb)pL+!YW(QD_Xs1?Lh3_$fc+T3$;QP%VebO5YY*t21x6S z+2(bHB#R^&&)3uNhigEKMxyV?%=CY#muv;3BL~$*c`Q&>w1OPcDZ>w>5bf07h+*T= z%ttb{^TJKlGm8{988c!6<+Tnj?ec*eg<$^GHkurfz5WX6bhdWs9~eF(gqVP-i|8Fk zFf$tnyu#A6U3RESL-v8e9wCe_pZH-HL_qsj|O9i?v%t~43aP(Yw0vm z8({c*f_V%}f~>_wplR(&Sam)BY6%sqw(g^87pt;=D;NINbd4BRmOP)3d|;$pB`@QY z;4`8wSO@V0HWR5kZ|##b@`I5km+gA17rKfln0#o81&znFMvfLH zrWbgE5k?wJ9NR2B#QDhW*2pg;0IH!;aKBl=9^8(xMjdIBk^GqX!oOnI)ZDo}vGlj( z!aGVMBpNUtmKz)glNIwnhLjUoK1w5GU`5Zi){pznaR8>lZ{D^a^jXVCXQvp<+d2b( z)s9VUvq>E{W~ZAAJcD&4C|35332zOXmvOIQIX`Y$Jm+6hxhT9b-h5X-qj7`NApMeH z6@M3kI>VMaSpG*SNSpQsNd6%WjSgv#WzsBHTfFn*4Pf!#(T`OCmV5^tkn-`CvV@-J59#NYT?Ci?UZmz zY8}Et3eFoEjdg0|bBsfvhVH5sjG!~*XWLv z0lC=+R9uJUIBH&^-}FRnz#b`x^RU!Nbq%J^FqU=-Ror90R-?G1&3x^6Tbk4X~nZJ-9@s_YmR*ZR5eod=;^q*C!zN4Mn zRz2FPdvvSwvxJ|cxW{`w!bsxPW0Mag;)bbGWRDKVmvAp{BHZ@RG49{g5$-y-2DNuG z#2QWQ&{9_Q<~QFLy+><=FMhU?IRs&+$71C>fkf|ii+rRbi~d`EjIZ(sJz0)ofS02TV0f~utCP@_0IIExX?(QMxU=3qghE@X(3O30e^;! z89XwPY_K){1X*3c1Cg$LpN74A+5J+;2#GfrTIP4Ss+s`s2kI(YDTa0r*+yVV@a;Ar z{n5kNc)2@8GrWl4Y5nGhtZt?~nxlQ+eHSIS_&QW2FD0#;|25U^&JL&9 z>C9PEKhym6;Y;_2%j-AcRankv6r}qJN>`~;uEx~iquBdUieS&#JVATE3{cKQTjgxK z=F!u3cg6KwGiCmE2SJ3S;8ghOOZDhJfPDkOaTldR&hA^ZcEjr6w~uy%8s(3VwxVoN zx8Vv^gQe+?R8wBjFazpQ5RM#eo62{%x~K$kQAE+#v`{ihG0E6?o3e1p7McrIix<8eqc_v#0z z$Y?D8lB|xa!3^xoO~x#|SnOQxKAdnQhZgvI#=I}{Vfpmn_U!h>j}hvxXF<^aHbM@X z4HQ}c)E60@B7zCpj|C=b|9Rr@YWE5y-1FDzi1Gc7pvda`xwQAbo5|T=wn6N~-9DJv z0sHHGBs4llVik0;L;9s?xygwFN?ABAsM)qUzqfYt8GbCRM3@0RNJU<+l_ z=P$Sy_XW_6q{xQQ`ntVL#q@Xu?1Y>#t>frchwS9Aos@eu_Qg=I?A{{z5P~A|z9#j; zg`VB~t|*v%z#B=ygWKs^tbR&1e;aMe;BM#Na5>Y)McJe$ZP&uoE+SbO>cMYQPV5PQ za_)cnlVfRjWt{@4pXz+q#)DJ%B87R~TJq|~*EJbIT-{1F9}UqY;+>2Gi=2{ePuy_r zPdOc#kdVxfAFrOi{+By@WdDmx;b3-S{$oQQL8+EbnFp-mcGnR;#JqGzB{I!7R6!J) zM=b2bF<=#sN6KR<_@OP?l|z3E4zR1jR4I;b#KZ1m`^fHjFBsiUmaZM@@_79Wgw)*f zqraS* z#EskrvX%*Pm3*>OXOnjs24UJLXFPUEZR5?m-hWex*`%h61uCSIA7RJOZ#C2kYlpm6 ztH=JL9kNkD=XRs94)+M43LBG8{k^V9N5f5q_y`g&d4c}NO-GAp$(b1`vD!;Bl#3f~riC*f4 zz|y(~kc1Vfby7|4C=l$O2`&GOvBnEIAlI6}K+f!FuT&H|u522gO}B+K&fhD$_pWq3 z@oDj%&Er0Ca42uT1o#sB3$)?D@Ydj7OP)d^Byrw6q|74`7M;d|{2}f|5797D4!Zzb z+TJA$sxz}_j;~8ZJ9!A2z|Bm=d0Hmi(D0~)i;6H_1fT6ZSg#imP4Bpb zlu%(&VGD$IhH=@={hfi}X;IqOcG8Pu+KYBs$r$H8*7(>q`FhlgF!j*mUJ50&YBI(T z?LmKSd3LN?>FfRa>m$ckW5h{{{RjFzta!%%<51a_3`E34<;+2|fv(6XMc_rxgU71Y zZqZSv!coy#gH^hPf&`J<3g;f4UNr?8-|Rz8gHbq}eYtkA+m9%NIO{4yAin0R-J9@V zG_TxSF|}T$dV|&fC0F@F<$`7kc}d_HV1w0Im8{uTn01K#4x%s4i>=LSr&QMFy~8t! z^u@+(2UqOIVyD)C&UCxbTT$)zmJoCi1Cjzc{^*P6&tNrhwtBk}i?9f6ln>m8E zmls8D9|v=>44FD;orPhA<&u(OKV5Lju_F1+Y@Dd5B`Ltd+0nhK+TeY{eLqo}yIG#8 zc@|oKl=BG(QTx4d25I}T2Y)HiM1p^{mLi(}9K>}08N{w=ppr!J2v)_+LcR&_wDW50 z+gW1&cs~BvuePixRDBg6tt02dUnH14ye#{d0RkyjqDlRSKZPn~J>b{x(MR-`@KC2V zUDtcbQxDFuU>j7*9faA0JMJU-3({G(=_%xFKDzpvBzm$^rNR}uQm0~;`5oKV>+Neq zYaLBRL$>^-Iy+}BC!`xWhdKD7Gnjtv$ zNkdiOP``T>TwMO8oC%353I6a&mW8%QQKzZ6YrXl4;Kh#vDB#vm$8Izr-3IhDHjYf-N;JmR6WXupw1|jZUgu1 z9<(vGX=+%D1 zCATY)+cWh(MRuOF80UEei9`s`0Xl1tBd{pAxM%N^u5BsvvEju|*31;&(+waN>{ItW z%jZ86OaTUd)~cew6uvrJ*OP) zlskcRudQ<)Miz%b2`Xe}$~>{bF(kSh<DuV^n(%Q+#d*Y%7-mIC+vvj zjtX%&bMM1-Yc_~!^-*}oyz}@5A2ic8y{ZRz?lIzx?J@7e+Dms35bvX(R^t;}E4jT! z3eZ=L@XFOug>b;^D3mD>>2Na{j!q6e@?=twE!Aa6gYU+z%_1Jlu-TKUlm5f0sK#uA zTtjLP``eRLwJ&J6X_f?Z1dr(O*yWYBHf`&5b~bGVp4su(lMu@O=}H-Xv7W3>OMe@b z^HTH#b%(TOyG4jAe{pxJ+UlV}kIWu|z7$T|pC*L{s$)uBKMF}$uwRm4*y<)-Ah1-@ zG8D&sL`LccYJe5FzyHIV-YfW*Hw`Fyt!zfX1~T44cpdlJ%{oLZQ}5HD+VE$2Td_P# zPR)3!uk0RD^_Z3Glc&ca(sEC}?rcP94@f%U6wEK150{PGSg78MM0B_Kh+%N z&;pn0DP^T>wt)aVV0`el{WU(MGa5q$JK@*dIp;}_u$75fDnA?e{%p6 z)4#XuhJlHl;s3a9z?P5|@n6>s0O-3Z-2s3C8P%^4^?_os*`fCFxE^3ZRE6fRM&(nTZzNO`*bTk=714*!cF(veLB5<{SF#iKFNn^d0!zjnQ4J z!bv8qsNzGZ9O38Od%PVPF`apM>nx##{UHEK8`dj`UwD{C92BLIqr@YySu1tYb0@)#mVpNFt5VS__()4zlkR-Wd*|C7EONDoid><3C7 z^ax>!$bas@vJjIeY62S&ra{IfwRcWOQtdC*Lg;G4T$E?k)B$Noqw)A)?}wzq0rwZ5 zMW)`ko8-?X9dGD3UBD)!y_O_4<3JX4CYydV%V3$CBz82Ip9xVkIkJ4jp!~$3d?cGn zD#m4=gAwuwzYMk-39Q||QAY*calSAw9`DJO^+Pf$fX=ty_5_2v3;9t{a--I|#;O5MG)-Y8q5i>XPk}5P2++( zKGU^wM1~paEk!kiq}^*CJj~gMES>*-Q%~!;Zah*(1<#vV5L-2IblP5}4$$l#wsolD zT{0VViv$~bm?5MEYM5bim?66Tu)yT5MtvF^D9fOq@xD^)`c!i2`Tqp$qVQDpC`>X# z)869hblRf&wasbMVW9K0ru?4^im0xWVYO2W{zAQ$g9_~`wp}}j9qb5X41?AF-=L<# zxfHO$TDa_-YYj#G3K0EIq5Or)i=^L@hIEahyfa=akU5JuGHIt$Qv5gpV z@VgTCAGl~?hACl&82=M4tiygUgFQOex^@sf8uk0zE4!_2MoU8ZjXC@zgS$&wg4k8_ ze}`5FQ-2HF7-IM~7f87&SC4@lv>-_FuVe%K{?#@zxuK6Q_3fO|kw$vUH|p$ZXd$6- zud4e~BT&CS_sf07Wvr^-b1**}sgOeY3bvHd9q00MVsajyo839f-u;dvCV{fGn^s+O)}8mM z@2Bo2y%2#MJ| z0C7fk5E|mQ3wQ3+vbJMeik%WL!5JjS8Z zt6GN-!{pTw{W&NvWFduxcMX+^zP^NN4#q-XIWYp?TJ|NdU33@O#GjN6CEnx<^7R`j+Ue9E{kn3rIfFqO zoaMTDsR^Lu5bg7iFIeQZ<`U_riLthQU#41ky%}2o^KGKtCz43b7XlIr6GT@+%aEPz z#bE8b?vth$p_jG;xwAj>>t|Yh$G9PAp#du6WJfp{PYs_v^QpV;yB0$tk9sIKbcQfF zveXQ{!L=*rSVXr?bS@H%gXFouB=T7z@88--h^K3WL(3$Mm&G6#)?SIs?|*%sBH=X< z2eDih|C-ehu1=h-5FizVsz78^HOQDu8+tZcR|xHeu&i96uuz*vnIi6=3-utu?HFU# zF>5bc>AKh5UtPHN;bD9p|vZ6*1v}NghC_5Ddh#yFxg{? zP%QbxD(;Tc87yH&l{hbnn5teRWoY|MogY_vOaeyc{*yPO|4FO=eA+j1l&!UA&8 zFVxg<_A3H-Rhl%?vE3DXi$fawr{51bvaqvhJE+MoQT27f>;-jiit%8}8BE1aLJn`E zE%V|aOk2Dxq^tPygcLS64!((DFAdk0o}Fg)$MrnGJtUCUiSu;N-;U{bg%9`ZY5E(> z1t0FkGT_cp-%1s=Sdk)#abnx*Is=Yv#4~A4Po$j~5Uxc9PUjyx*3x0Dr=gIB30UV} z{hGpYUklWnRTdYKFP<_T8kBkX)?F^+vOe}T8ai}ld2#ROOJ6csA!UfjlNn7LNCu7? znudXSh{*5H>`##1<36Ov-0YK{PE)9k>b#dmH;#r9nzzV~MYCV*%ds-vG<3FX)Sb{Q zr#d)^l^^CArnH*iwp4E{^-|_RERzYD=~ft#nL+0{H$6Y!wm+#A#?P7xC{wt>rJ+E? znX$_hM>#vw>$aA2a()mBbC(O`zU^3BT)BP=4%H6$G9YbEy6!)$-8ubbv?wxIfls&r zIq6PYb_xx^$kb>qa3^W*Nh1x)dQ)x~c)8xGm7|>+k85$uJ0b1Qi<;_Ey2B1zkT{;> zlr_Xz*~`vocI|d3^E5racZFDTdAJ)Qeua%j@ zXFA^JQau^4Obcq@=)6YDX9;Qt0zTO&G_#M+=l03#?{DcaC)KJ~-(lmjBzN|-o_)D? ziS+AE8L9_R-FY@y|3(-4eH4`49N;C*O@O#iR)&6iw+2F$_6PD=ELamaamsd+=Spg1S#U; z^33%4w(-Vt-_%bZ?c~5;vzsfEXw)5w!b#BN>J+2ePw_6J;$KCMV4-Xt&QEe*PO&+O(N=xL9$;YBbGK!Po5vEK~eL1sQiesa~_@qM}Jfxa^wSX)Q8Ftf?=`G%XG z@=E`2DB!<&1}768>wl$ynlac-h(0;Gb2DP-DL2U~gb34s0t9*q!V?Jl`X==glBndj zKg8oU9okpjk)~-^otc#+_7kC6YFurKH2zT&xJYvAzVgeGAB zQQL+717*&!8!o=9A^6hh7;la@68LE^lpMsR5j1<#v-;KcaSjma>iZd$?}qX1w9u#P z8(UO0O-Km6up70IRXZ7eT@%vqpq2jeI&_VSLWHOprn~e|G7*;hq z?z+$?w!d6N>$#7B5=zmUR+858nS77C z#lj$VXV_7dgVZ=%28o)$Hygo*0B)7Q>5NqEZdzI>cZ&WADNV7ODg3u3iw%rc6(x&w z=AhKv5!}6pb4!30PtwtBoq}1lk?Tw2$9c-fjn0nmRvvTZOZ3I{wf)Nm%t^m}W>gN) z3FOFmpy5UgA$L^UU>lrg?JG1WVm0959$?SFiBo!oQo8TB<8zOzEAQpECmPW-OF38s z80h=>B`5kXvY!_s%qatl)SHI{9(k zoz3lT-;jF7Yx-N9tvehT?x{vGpt_lr*5j*E6xvnXc=G-{r*j7khh4;yk-Og97 zJBJ!IpA=9*Oq7pJtNqFw)k#f1X}avpr$q&ac1?dw%|}74S!TOgK?yF@Q|c7w-=Cz9 zf%zj8xiQQ+I1Y}R-@7sR#{y zo=s6kjCw*3#7Hg0&~Fd;aqMG7^=A8v2_@*S?EBdeKnuO}Qtf}mq<71C6x~Mnow^=VIVycDu3-o9$|ML}QEccOxUVCiUbpS&u z|D{vLGumvsd+~9tc8n1&7SK>6HwTca<%@^C*Wrn1D)sArJsy*`pzgudZ34Z>GEEHTZA-91h9a2gKm%pS+Xq#~`ax1@eH<|pJI3)e0IF2vuc6u?h0{->M ziU+`B@;#h>S+Y1vb-mfbm3cs+grzP!qIQL`wqLLr_)LGR-{;#~fvkvddF-P^#ELS6 zbB&$c0)vH`9|boykX|8Ts#iLf)x?L}EkX{Q0#1UJ(v90oa*EA=;!S0nUa$S0f$>-P z3{EYjo%RfZ3jF{ey<4+e)f^46_{s>$$*CRfQKbs=4os#Y7vr?~O}abS0bYdSzP^?e z4w4xFlSYwgN+xA_Tf_AASxQ%$d)(p;S1=i2rH4wY6;#-6Et`stq~gN{)0QPy5)@Qx zOv}s*$_<+MYt?&~(6H^{R~v!BUBE6nHnfZ-jq^;GzUG8VG+;L5RNxKjlXn>ilL?Ix z(7FyM4iZ45yA?pU0wmLY_p#@#>83E@by}hbR)-TB&YUv^S`vfq>2i&bb~l%FV{UJq z?+OYU`}0lOfw7GOnb(YL%9bRd9=(kukj;~hM*96YhtZ-=r{7YEHk)Jt!}M=t?qLXM z)YOt3mtByAJ`lq95$#ZOofW6vJvuCq1I6+QM_En*R=}d|!zPHWhFMAkRSY)FU3Zqa z7&%!bJb{rWkZD(D9QaaqmOZhukBjZlnOmx4rT*X4 zhYNNaah$U2rY$WwfB4|sPpKJy>20ra0Xr6KlG!P%!4Yq;g}?kE3QGXUgE+aP7>@a% zHNykG5*!^;=x&D4eAg4>?Js-OIJC?QgUoz%Rq8^S_+k(TMU-%u%-Y!NudVg-oO)1} zMIL>`yIW0ZoPRb{-t#_%|TLzr%0Y4FVSvD!+@jLS}zVvi4J{>A(YBQg9C{kz}BWtzHNMLk~8ST zhC3$!=-R-{u{j(J+V&mYOao@11Yl08KwV7Tr3&Oz-(M`ofxg>FLLR5!{H8cYLO&ML zX*(Ei)!XS@_frv=9y>&cZS{Vr*$;OnMePF!=A&f_2eKMUNGtSh`eR7t-D)9VqhH;7%uYS_B)TAVNs%ToY z8i2^kc!PUSGzZKLL6*ugObzjDb^7HAlD+2`f)Yf3LO3l|Mypbr!O0m?dvUIL@TTNR zE<+TU5Z>aDKW4CS(l5hR0z-m|uOM*VW9t_ofbB`zsU&%CjaWt(jpxW;7`h#N2qwRg zs|19dNYS@QLaz+5wyvZMd3Ff{8#d$n8>fo~tL+EYzx+*CR@Pp7N9vK-L}M@% zk>Ce&OTo)#d|>4C*+J{lS6?qpeF4FMUfc^8fBpGA6Ta(rqP|wQfiYM8{3ga`AH%0k zpww4#O?S8NL(h+safd%-c2;fc7uc}U;KTpT*68Wj{uf>Q4{ApLn~{Zqo#p?HyfHDe zG5;6xrVXW}ytJHcc?A}jj-9;^6&)&6OyJf_B^d>eB0iUhoD_nKJ1*!4jS%;4`!>2L z$s?yo#GoKa+@6GU7HpoD<_1|V$U!+Z=QY^_T7RR<(BG3q5baWK=$PQag;45+=BYLu0hD>>ptwi3v0LOLsj z&2{z=H=yo@lB-|gj{n8glO&I85%5cq(IF@Gr&AYa`vxquOg%O!GxdFHQyw7U1`u3o zT+EALBa~X5iHABVjH%?hz6oEhN4Xc^F*KrqK5&;IhP)m zat}JV`XTaw%$Bu5{2Tzsl61pcT72bxA1(?v&8pyr_Xf4mc&%Nf5p-j2t-%89m?XEs zgSxG}8o3jQAgG=aAnud=_dmkszzrIHD?`nK+A%N6dU;iPb0b0fj@T!Q{@$-zL+)fS z&)vT-IiZOqaK|b7c@odOFhyL}?SJjtu28x@rs2!5gL@ufeqq)a@ntFj_<3|dKF?$N zG-@WQX>PbSleAZlwySeSAovLC`+;ISW))wuvgO9+1 zB0+~B(7}@QIi&(R{>Dn~-N^%~v~KLedEI&GfEt1E&wFp3qXRT}vJa~r<$+z_*qHf& zDnD90Slak$-|>y)DfI=G;+F`d%2MHD{*=-hGs{vTOxhA)K14g0C7pB9klM*5H3yo9 z854$#9~O%!lolH~4h32!h^n3O1UkTX~OsCX$~SQI{Yc*=dR zN~l;cD-5Tj%{Geu~KK?ViBpN!6jWJG=8` zg4jh@5D3dJ6XlYk%jUod&XEzOz)yshRTl1CsScappC#q9Em6BmDw>5UmN3OfA8vW2 zA;jm1W9ApxQ#iEt?Xcb>6Xqw3NW$Fjtb7`c3FE4ucCvbxD)kPL4wi-LOu`7YQ}^{z z--Nj>Gdhzwtt<8QQB1cTasUrn_ws@pWO3t+F~!Q*7i}TwdIc~Vj~oN=UO>+}vh~D;ln@%v2xmhyu{wvFsm2KA6Qm*urG5eFvb5~pe>CgszdF4z zj<$nXb#$_E>+5#@@CBr(nuXHr>=@ayQN+XAc=%lzgE`XBXvw80yzfuY+K}u1Y?d20 zSeVehn*iRC4l670?RsK$cca7e`Sfw1}ko)dAqsTi2 zDzBlZmk<#odtpQD8aIj6E*RZz=XmZ+rm>U-z%NOJU_EX{KNc!8(3FUgjpez7fE?K98Ve)sh|=$T=ooBY%WVIRo9O4 z@QuWb4#zu3RH3m0D^x-;H)k2Od+~yE$9>96LbPpq{{R;2e?_s>Y;+#4>@ZPHZXFaG zcv$hHO8pw<;ps>EfNc5|M!c?=y_T~d9dGuO_v=txKB#3eEj@}${#axpT}(lS!k zkeRv8nzjk?%2*Zze?gW z3Q-w*wT~d;ZdB%XibuM=KTXUb?oill2}@bXf5--75Trp&{*~HVPbr~&!H3Cb_-1>g zVP~vDP{WAc3)gm)r)PI#wn_-%ys_VBeSEpbc+ovIH8J&(EJCf_*KJ_hXuuI1h-BNK z#6WJcZ}i-qoRFBAI(lCw`?Joh>s7p{E@P6oFOfbsb9ZWr_Xj}v=>;f&5?!#f69#BD z%4?)Ravy-hmtN+Q(v0RvSzJ?9bXD4AG5+ATi#us;4yCnpo7j*o84> zl`^NB(phal!>Nu{#MxsGlI~Qs7jRt>zpwUlOsn0(DBPvHihGoDJz~+chs?b-4wrYkBrB8DLv?aV{Gxkx6Kfj-6#`afq%^mNHY=cw(c^e)qO3{M4Xe4b8%8v{ z6PCL!BCM}A?PtEGS%UcxXk*ef_u+6cd+q0V;jU$=X63D>@*A@qla6E(ac zX`=&kNF~EUA}`FKKUL*-5&$bPcZG!)7*&ii+KIp>dcu=QH<``oZ4$bsjSqCujHd@y z7#Lt1%TR_CzDMO=kt-T5v0Vce_EQl%+jR%lWuqFCunjR{=oscJ#V4{$xR!&b0@(yJ z@k@u~SB@tAxs~yTbh{8gc;{J?*!c>0ktK0P_<6u$u(*jv^$e(eJ|-(_!1uVxqW3_8 z)D_m;tryt*71=l(3^ObdzE`&XXq`kYIqoG+&jL53ugO( z6X%u|bcp-4*?4hKv)=$C>Bf+JajDuLXOu`DlENiNYfz>#*)8EIv8CtxE7Jx==dSN( zCl1j(=?~sC7y|8a7jp-MB-JzE9wL<6#@WuDpQD;xc-}_0dIqOkC#1N(o^vM+%5aB^wn`!p4)+g^4v>(L!>T7)L^PF0MmkS!%|WTOD#=O8-Svhe zl#MjzsGbStVz$!~6ry!(hCH-L(-R}~?~l-@a*Rd`t?{BP-JkcvWf>yU-p(AHLoS9I z=!h+%xMSUr5Zf>PP#*%p^&YyqR8rYud)=Shz}7uTNv-FeAt6cEWHby+gOU!JlQiG3 ztlbnhM3(q8q>j3@CywfgIkf6#n^DL2hi(kfVqym->M?g~w*$>2;ZW<>fL)JI_w7@5 zymD3-d97+YXU$h@K`D?CbmhFpAEUrh^V3E|nk{VjPvWYW7COzBdEm>~T#2cntoDS2 zYSv+GbhJp^fgcJQ0S|U39IbuX&D#66y+^Q6Nz2$#-8q4^va8AEooz9m{=yWl<8P-S9ac@Pc&Wkmq;46HUyct;5)N({@h*9yGPRb47h#>{cc*#W zlkv|!_m}5sAC&10$vklhT~6lG3S91`O;M52vfIYYwH240IdN_wY0XMv7DL0-oD?ip zmAe(4XfJ+P)BH8dA_;&AVb)boX}4ljlk0{~EiBX#iOELK zk8oa1N}LrQW=Y}=G#7DUq%?QQti@e}lkRJ%?0HpEPkOq0xh_xpMPI z*t(f)w}05zroqHX2Htpj>9ltYF`3={iv-nxdb60|msz6^jIHbeW z->q3MP%l&|aN96B%3cm@s7BEbxYqI5%5DMTV6B*;FQ1{wcIon<-^o0C;_aD2BVrg% z=UY9Lt|nS_O5-$;61PaKC#BoJb+SZ>IA3fz-hGbatfw%Y?|!Q4%ubI(pg1Ddb9TmX z_%3{8`|f^KUHr}5w?0_g!? zOlNt%^8fK3O^@Rt8VCcMx9hI9N@u__zUW}dUEuR9w|A8j*=j9DXp|cEEu9c~-Mh zIi_ns(1D1JZGp+wI)U?T?5R`p{6bni5FFLY>L$i|(tSj$e04QpJ;Ft(Ot$f)l^epv zLAdxwLz)W*-Hc3qbeRYK2bJ?~&99uon6ttf3>6+}8y1X*@JX!}cUNKD?(3f&qU{w6zujq75=P9Jd<9)Jd<+7 zzc*MQRxw-L#1S>)w0YAZwd1?Kz)~uEGJwOq@H>L#g-lYJUFKDhHkiuXiEyVgc5S0R zPX`wxAbD9oX+;ZtYo5DjJ4saJ)2q;87T}~HX*5w^%}PvhN#e*~CtNFrtT!l?miPkT zil(QJo)?oin@LJadUjORR|sx_@&W&;Kq?&I2iR~Vmh;86^wlZgT~U?w#WnT)PWw(k zi4;v*3FFhuvfB^pXQJYwT3oeXdBf+U#o23KpKGCAGhoTVxA9P{A)K7Fgy0!8n6GdZ zlA6p|ICu=Ms&qN{4~proO8^Ixgtf6H;igmFPgq@iMUF8xy;x3bc0{7u58_C0f{4$)k10#Pz2d4faw4Hjn*P7F*$K z$&BHDi}|ZhEN@k!AHjzXbmUL~7B@lkK*f~6CN?(_X7>2Esb9!=y|@)=wT=HV!&59{wJdPsM)Ug2yRee zyEZj|``_i9-F;s`+o2PC|6TZq{r?UhG11dAG5x=VkC>V18UBy(k(RRZ@{VVY<28s> z-~>p$Lhpp&fT~X1;v$3dXe3omTtFwGZs{v{o}5%1x_~e}OdNP9JciK7pU62mgxUE} zdQcp^z}IAQER^dt*JYj;olc7duI@LV9oC19pCKO8oURoO&#NXpOFSP3A#{AB7!?A* zAgNTkr=rXhPfvoxE?|kA*QM4wq+)L-Yc#H!kdqf(4;u?UyN_|YK$lj+Kt|nc1~akn zPb1e+QNgdr+qXO@U7cnMj64jey|-1YygH~jOmO3dchT)sG_)qA)O>!ks}6AXozQ6L zsM8mj84x*FnE6^WvQw9?6VO>Omftg{Z<5>VcNP3O{SSbF#Yxi<5OCgQUgK_oCOiSN zy?@^FY^j}a{s`pq0K9IY1y092w(*oh=26w+`F7BexP;YVfbf4va2t3N_Z`(VX=O2Y zj4<-zvtkX}+1M>ZyV!o!?r9E?ujSIn*#?SY3B^MEF3Fbl?0c%;ORSUE&NZv|U${{V ztAK?8<%Jd62YLd|t}}~SA%wser?m!2>XLTdLk=g{MVOZ+24^9_-`Y|kDnEi z2tf{|09v|vP<9VjTnxCCFM$vGu}w1Zbk1RHdPvVrlc!!;8SKxz@USKK!La+$2F=F zE^mggi59jpOW=SAW8f|xKrv?LB)2!ie6;jb8lMzV1?gL~UlMkE8DRj7b05-~9+J z#e=@Y%Dt?p|3yTtRp)>v&%T)>bRF9eV99$J5uAr$hU@`2#b=uzWCrpM^p5)lg0YFS z>Dl&j*S;zqDKgk?zJcZjmRmB%c*_1rkRElMKcvzrOV&AR#?<^t!8`$z%bKnm*}4x8(;iP!Vzz>YmOE|S2HZ_g+#jU`^gLG>0s7|O37Q@=wF z*h$R{*$25J%y5v-KEzGnoTg3Eun1%R9_&=xJi$qdq4d4nqw~i$8B(j6)$Jz7=7qJWy}>c5z5n%tZz%JKEx?W&_J94O zgVkEzoMwK`+SZw$)cQXZgqz_=f8Wr7Vn&)MA_mi^aMXiI}&uV!$O>nnTYN zI2&&uo4i8{0z`O)4o>;Jf`5yG6*n_ zeMR7N=-oGQHT%xU>*lV^%S^=hwKWAYfi^ts>2c%i%B!ASoA6a64E#t5*U6Wd7Q_wQ zMF<_suDT!}RH@FZV&yjj4@`>!g2E)6t<*>&2{MNnL>L`IN_2^OgQ{bff#b zwCAm%@yXrYpW`%_TOQR*j_sS=xKf48i=J-k83}Fcf@Ly;*OBOJdD+J}4oE z?GZ(t>4_)R^bM4J4$FBbl%k}1yi*8@YvIHikL?v6?;ATQ%t9Ki#`=--tL$arA)>>o3RQGKBQ;Ae+ z#zO4g9I1qa6oEgTsz1xP{&e9K`cH%_i!2pt6<}|^xb1~6zOA(dt~3uH<)z47Us!|t zsX4hzn;+BA1-4Zn#0jglj5ay>rdHZ9G`JwXQ zaororB&W9n;SMOLl>zM@FbCE##P&a(DdU7Xm~`-$0*`%|Zd;?9t-jK)M!PcDtkwnF zVQVY(j0TRpe{YlM;x*r;9WHEF;wU&dP45eWLBU;0k1V$@`Pe_iSbvS8X%gV0B;?%m znHIRAL*Kau`_xN{j*ypAjD?$Ux%88k&{$4CI-SsU{8tYst!kwVq8kG(V83Hn=QH-! zVF3Z%zH4&Q$+9wV1$zs~&)J^-&>1&KVOiXOTd&7> zv}pL7I3LM5J3HXhOV1D?;`UU@nfhcIL@@Nhd-culTg@|%q5$TBonU@ZL^RY>@X>OM z{t{iLcc3(A!_haz)gG5l`4}iBlzZRl<8qj!!AcU!r(LMn$p1n-VwZtD*2SC;1K(}3 zBf_&wBVSq^5SGvD6K|d0C2zrq3*(;Bpqac!sQW!Uo^%cmnk@I zO4cnpW(VL4!5;;5e{#;4ZUM{!&m^=C9b-lxW;UVaq;#ye;t01U6lm+iWd6I^!u-L^ zyD^?|UgW$$@O~LRZpDVy#GKnsfX--jj@#JWebc%EdFj=G2HTnNX^j_nZIgXJ$B`yI zLac!<%WLgEy81LFBWTA9XX5hbn||(f`b7%Cs_%n5>Fwg82w7j3%6=yMFQkq)(n3xo zzIWI8E3(oqr%q_Bp|Ltm>0ERsn=Q$w&PuOPp}nDLS{4z@&wgi<)+A$MVEFx5CdSt$-%c;t~8j5nW0bE+=8focL z27$Kdim;7m79ZeWB&LLIR(c`cIoIQNLSz$SSa!%ihine8Q!;Az4HhQRLgG65y1-Dx zn*$6h(Oh6gY+b=RF^ecrz#pWb9MNupr0URcxYS!1wez|KDQJIA1=+2`H)d|l?L9cn zX^}Q1BB&(G4XBLnjI=C@sUmtpQ|senLhUgKMg}up8e%qlequQJ(CCxrt_{2s90*m+ zBGrbit10O48+~=`ySKu}$+ZMuWTLB}KI*g23J(SiGhbdZNouJgpm@?ghXG{_FZ%pN zczMBAbV-|1OBV*ROqnK;yz?cdoEi_Qn$8CUO6ESsN1}7Bg(ZUL_0qbWd&=XOO#(DGqF78gBq&!-hiVmT%t{`zl{-*Pw@&mLX- z(;fe6h7e-=sVq8(^cw2zrW}rHd3i^2^W2+T$FjHu#jL}63=^0S2-Ii(Er{@xF11Ft zc1}Wcn4A>5k}YGyxeS!7&XAov(H~z-$IQ15w6pU#8VrY zE1ooWee6*C)2$F09?~EdZifN|g9X`~Ab>c|Y;!Vm8fk#6@Q}ZEMveVhY z$*sd6&W@4i&hhxFGfWmeuy4d>qI}cxN*gz9IiuMnsxnu1YgB`2$DVPZWVkxc_0 zF2FiV(u!BEUL3-#G4L3Gp@>PWxZB!>9NKM4K{htoTv5^auC@S`xuVInHoaQ)6)5-FAADHW%xd%2d0>4h+~*LU(5F6|1 zv!DL5olwZzx@Wo1kml9ehs<}72DKygJ(9G6v|_yTUhKE~nt9JrNs!VkplyT`!i*^zQ0>9jqi*c(ZFJ zW^bF-bhECO2OS+1UF>bmm+?yu;1ydes@9N#b_ThFx>IOG#JX@s7g^{=eC|bzY#bVr zWO}7j9TkCEuirv~iVo+k@lyNLrA_%Dk(+^^7lv&_L`j?$lLop1~s8C!_>eg9sXUu*2 zN{7hFkHK{rK(?PABCBQ4wI(eb7ju2hfx@K?;H0uS1WOFy5^*4DhWw4$UTO-J1QD1? zMCaPu%EDC_Cdj%%X>A6+?f4jkdH>)K9W(n$lh8ULn%-NXOyQXtz=svjF&%gB?COQb zkr3M{366A0C_Upj6^&n=75-@ft;(hX!(xSeGb_7Swc%(X1RZUj>s3>PnNv1k1O`2g&9{F9k4b<-no*eKx zhMD&1EP8ZYfKG52uEcs!?T%=zue5VV#}k6TQLH&5r0j0Yb9_*&!Prhrz=}Kv{Iafh zFbM_W;iarXjHmc>}_X0(}?jQ0*~jvq>1Nzd)Ic(a_YXmVKA1Du}lfFp4Oc zPp4c$ls^kKLT0*fl&zXoDAi^-TEtYABEEO?3Uq@Os^K;d&kf|S(>*M*cOtV07g&l@ zl20Fmu_wa95xXj<&duwFwbd0!E24CuyyA=0=Q`ClXfTZUy8+yCmMu`8XCx`1={)m+ z%<+sFK9zRpz_dI!dms9S^`q>D%e{Ln#B~IdpqW~;d##QG^`m{aGykeMK&&K2<#P?t zD%$m`E9@pI**4rQIg}DXP~*mnP+wiZy2-v&6~H4dl7b++EQvx#3Hy3K;(7~xniAL3 zY`c4AhqeJ}C6)zo&Hm@KBorIq+nOf~S;oWlx?KNytGZ0zV6ou7akqiYZr$WjW3UR5 zvepR?9*<2wx)ADPy&D-kGEMOd*bHuva(rh^&a%T-M)5HtDdXbuQbrF#p^)I^85vQP z6R*k(KKPiy!Jk|yhX9+qKMTETLZq@Q2yfW`qzlTz9>oK1I4_t2jz-kBfK8rRv%rgx z6z4hc6M-2+9KM}?&rZz9-wZM$xCuj~K%N=@IdlPi4rmV_qWyG^o4|DqlDfk%xm3JO zEMSVUO%$MXn{V!-u12*~P--%-nuDMbpe-FYpWtz}nH|o-k>7?>6AEX)54*xVQkg_B z8LvGs1=LOlg4-bPRc6l-{2jxbN4eZneilVUidr27m>FGCqq4payU-j9=(k0iqplBw0TT!qtE|)(49=AHYBv07Rh!K~#lb-FB=C-@x)1 zYov`L8@ry&t5ibd-p-mw(V6dsoooQ`1PJX0*eGv;s|i8>u&-3GQyNJAG3 z^(^~FR_@CyUq;}yz-@!?-X*61neOmxN>_5s=R{yt4*Kq7VkzQldXXmYfEoMtPgvNcc>%I5NaO*80 zZwc-jiQ!KUVgOD{1@5G!2t_E4HX*ptgPH(PdcePUcNysapWa`9LsbZt;1WMVW#dGD008M+A^(ZFt=w zqH1z@QEs=pil;Ji=nwEN_a!RfVO!Hx>%X4Kic?y;C*8N6kJH$uu0VhU;hSMZYHfD( z-FL=4pka%`r4cnMqkX5Ieyro%YA%|j6pOu&V#?N5rgtl?xly|dW#XY&zzK7pfGX| zG8eCU^O;ll;@>4pyOhsSYKnSPgbS}5y!F1f%l?OY^~5!*p0B3IAvkS5L zTn`GNZg`xG!qNhL@#3-1ZQsW1+;*YpH~#1*#asQc$&#`lXLb@7^sA(U8RA-3-?e(!HLR*b%M;; zM{1#10^rdhO7zuCG@66R(7D`_fwQjh98*t#GB6^tdFKq~+z+Bm^V}$YX!)dPLQfKA zrTS(8Gu}GfXBmicq{Ac>tDN@eCpG_zm1}f@_+IHQTd?;=q|MK=~o7;Qg{nGU)fS6J_ zAeRe=7Yr6O&Si*P7r4}?zv0$HGt-&d9{?Lx$B&H-Qp{1zmJOU`C{)%5-+zt}jzErp zN7<%fWR6J>$oz~RNhLxdS4&i$11PaALM*bB=%wizB8~WDg-9V-2;?B()&(n@YY*gy z2oY85N@Z!7WdP{hp^GG&69B~yWo=2$jQ=GOOx2XgmqJ0xH=-mb2QSo2MW^wV_0^h_ z%`AvWX{Fi47NK;}lw*Q=$Pn8~Yi(g(p`@<4xzWx^Im+Qxe(YLbA2<=MrG<6Hkl4Za zd6dDmz)(dknZ1EbTLaxb|7C)bG)JpzFVOqZr(@nBLAtnS%i}n~1lElW9~mj{iak0s zQadXqDp%U>datm(Q|`(AN&M-?&o)cPozwRY9u$->onFJuh4pc{!0gQX2++%5BvqQs zEOSG`#IW88!Vm}2Yg`OUS|XIbBpPJpn0T9KYnvww1$`WcqifeJMfCF0*J~Ko!`EtL z4Dqx#J?ZMY*_GFUca3Cj~at*Ui6Mqb*Q zy4HpSZn$AmF*tf=LROYyQfgu%dCOO_$9AvS=$3ClrH{pc89vjLeqRzM{c%eQ>&lS$ zg-tnzh+UnZ3doz`jH zA}4C@QRBHXtmph*qIIdYN9vcqjz-mp19lz5R!JpoSYOREGbA}Z1gXt|GKmH|Vcd|U zVS%qe!fPW-n9~uS3-Zbln&MW$q5+#Ge3r0_>|-Hld_f0J0s{-7*;O39MH- z(GfvC0wvCov}_yvKUT`Vd-Ix(tH9vs4DGAMs-^mlzxIrj|EeoSSG4ec3^xcqpcRv1 z8}K1_qeMN%Xo6738gg5%;CXg-+neB2!=pi~eXYpEyk@khQnb#9?L=lLht)$8{hjb(+*Y0nmxPey=rr`M}+RBhw6fXB@Akj>}(-qxQRmh6Wu_ zP|RSi7V3(qh)H!0@=5Yqy6_smJj85f^FiP0@jw5Lpdq37WyB_!Ht=+`{@t4VY>y1Xr>aPesjDci+C< ziI>0qi`O>DLs`j=k4XMXNFn2L+z=GXJh2^1ejLp55wMON;Ks2rf?ulP?)Lt^_4aZM zP0)Zir|8!j?i=$9C-mbk@pTDCJwwH_=J7}z!K7rue7!@Z{6Rf1ffvQ;FhXnu52Otp zh)RCOu8%8Qy2_@sSm(0%yAZ=i%kouEOzBEj-1{TR^*SRFwV9NLfS)Q}@z`QBJ-eCG zW95G&E~p_Sq%nXPel)PNp_geDVQKd^BFDSlM#%vA5V7aoH5I4U_e%}KTef)5xWUiU zj|>Sll<$S3wgpOR4(mZccW!Q&orX)22r30HoQ}Z73V|fAk3Ciogm5~V%^@iyX+Fll z9dizWGK`N>HJW5X8NRm@moJ`#MzqtbWiK;m>3vxN7Oy<(7`l;d4;5|3A_}=z4ajX| z45$J;L>{Q#c7qNs0lzOn;x@fF*zPHr%lkpiK^gk7clfGHMsDUSvU&FBLdNnb`aV6k zI8mIF*Ypv~WW4=$;Z=Qe1$}uLdIN-~-9P6ea8ta+UsLvt(N0?3q2fS1^)bR~-#vezt zLo1C-vItF8$5Wj8E`DYsLl&iC2+)m+M}nm(zX*7?uaT3JHB8$AP9`X<3Hgqp^0zOe ziCWY3GWgl@hWHyOp;%8!_MDa8_I~9olLY|&;{+IRrwF{ODL8TkJhAv=_7dX^CVD4u z7}YP!AP)vGW*wBf_}qD@yhhd+m;X6fc>P9t=5jqaK&8Cv?XN7sUvbMe`zP*~B^3iX z54IKjjGa!ErwsjPB>18?`s4>sfDMOwMg(u#vCl zbSyVx6PvO#>SC#L6gaK6;k-IU-HsfmAR0x!59cXGPJ!K@elW({3W>v{T%En8DCtqb z<@pFDZKwUHgcnH5GpMO@i>V#QYHBr|7|FHa+w~U<5?h^=d5X$j^H$aq8DSI_e65qa z7QUFgUmsKD=l2Zw>#wfW)E#%djBDtI1bQ&!moe0K1ZqCGxVmE5{n{JNM5^HV)_XQt zgjRmM{!Cgz!6o`aDZH48F){1Trry_wKxj5ePb`(sPdQZ@_1a7(8yJi+o5f5@H0QT0 zE>&v3dn($Qv==++kh(@AZqc=1ANm7dH8pG3eFcaqi4S_4L(exFqh6-OgAGTi=5h{ zm3I@F$^+bzA`Q+gA9f9)q{|*e@T>O5YqF<%0`Q4bLRQ$n?I6ezf-Zo>ks-g zR4;tYL=xCDWk3O84f6ooF|*YB5wYH`($_wYahuc3n1isnRUn!BEZ#%l)G9LAX5*xa zy|}YhAXkdE%O`~P0i8g?8@))?*n24H(hS9q+r0IxHJdLHYRc|DSnn_KxqiI-Ta81r zbaC8?=nFlv3VGsd!!@uRkJ}cly%obB2APJ*eK49xXS|i$rB6=T7&G6eG1stXAU&BP z@sHm;T&YPM^Q#<_80ziXEhx2GY_<~;N^J37+>NgTQ#eg}q}(~|yIn3@UM^-^$3%Pi zDK2vs#F{+veaR4lmDB*e!Pz(YMqY0MAK-X9zsq8FM&QzN_4c@!JjdBa<#1rOS;iOF zF=Izo=0tn>uBM6@dbKNhFIn*3V!%66>Vn(**q}25iaG+qXl~*s+VdV9QoT%cCI>f) zL7QwfB_%~gB_**|`AfPyvd()EJO!Yd`|zMGYOPv*dMdiTp)t?Efp%Geys^Xml`?Ob z{H&uop8CNrGURZfxT`gFo6}t8wAOyso6(QIVw#cyPe@3_y{-n#XN~M&^w9dKh5PNv$!M6jKt#=)GLj(=Pea2Q9El2TD~Xlnx?*mqRXtOvs$NKTn&br zsU3HuAkThWu3lc+?i56GR(P82DWn<W%;M00F`-je_%eY$#HF?MO4om-rgIU&Acj6al-&A)&W_1ngOIC5(Yida z2ZmknOdOYR0vh}S#I1C%@2?fdYz?wA&Pom$iLPV&{=nsd%(lN3%SYMu0sLyorC+8F z3(tuKgb|=k?J;o?J!c&x(%?Jhkh^rI82rjzt01!Gh8Rf%j|Roa%=OqkJooGWcs%dmbWR1G7!Qw3p0Ray<3OjwQD!N?C)l) z?c`PuPvf!3=3q(-Yt8uz%k}l) z(4-cinUDzR8H0Kbhlivj6(&8muZ7HHpk|mZD(XGiDn&^k9rHVi|7kRkOuOe_`Kq`B6E3yQ4kr?e3d`Z!mm!H=)6p{9G8?5hd7_ z@7VJ}PWw)>)2?`1q+{e4+bB5xqr|M2*ZS{Sgb6vi^~QoF_upHyR?9$1w^?FZ+Q)CR zckxdciY;viL8@wH3L-Spj(Fa{M&y@osR3$cOgC1v>+=R+H2EDyC1|AZNDFas>+fw3 z*vLNxJWt@wJ!gk^R|%X*6(fh8g)jWPLGx!7z!7XN^V#$ydtYVa4}teTx$x(Z!KxI0PJOaG)Jnc zSNOD)Sx@FF^EU?-g-zdgttO#>2Egf6wMPqF5#mKX0C%Rqx=?%mzZnSm?E1V@p>yWi zHNlMaf{~LJPqAx|lW+3hz}_6ZLgaCnMff`5u0TF0YbHp0S`D^dQ4oKugXZ@8$M}Ps z((xFEOswo;EPd{rI9s7+M;0sXl&>g19HMG%1;#XX)KUkl4av)ZWvAZlgsNwI+!XXB znAo&?(@8F6`BfSc;pvvYvnuy-06OAR>}LsY`l>ZZD2}IF!37g;CxCTa|D2$2J%-o9 zRc*2Qc%4K5*OGbIe(K*}oaMo{sMyR}cxANecC)@}7`1p9tW0iee1n^!_9%lBNK>B^ zC{p4*on+Po9thBBuspr|xP-{8yE<-bJN^C0fG%&cw>0IKf4Ue3OjjE1rP4{~us1xJ zSWr9s1I(m{W(s?i+x%%_n#b9BuW_UK{Lxh!%`xze!WZIMg^4wGm4g`-l^n%mh0bLv z@3lq!yp_k&(tSdmI6Iwn{+Zq@cy46c=o9YBY34FEDP%Jt_2DkV&b+eiQa82)T+<}4 z2U>62>mJv9hb_3u6{2NXyr132af`9jj`!#l>xy_0dV{?)jKD#W5m2B26Cq?Z@6ZGz zlK%|wjThlpWf?14fH-$_hX#l6V$RrCC3cxtDPy9m0$0!K?{+Y5nW$he|Vt1F1b0KdSY%y|&$^(~F%ygH3UU z@5?6`FeG7C3P4%K_U%L0a(b&aK(58$89fi4w_b}uG)Dn8%MfUWUxyCE7Ap|IOL}MA zYo>n$^I-Cd&cTgp7uYuj9UXk?#*CPgm~X%?fHCk3K9fkd@NZ5>#(!~%GcnWucTPtJ z7N-BWUA|h?Q(8$4<9DXJwVF{rqWC%78{pyqMJs~Ipr4#GS`sDQ0J`R(Vr_v)Uq3^J z6f;&9Pd1+&W&3N8@GzdzK*}1%#&L#HwzSOJaD|?5K3ZBhz@g(-JA!~=^JlHS{nTrA z*R|(1%X0=42mo0h{_f7k$?0mt=rS+>(D<7oyT{=@!hEhD#?Kz=DA_7?s0Itam`=!t z_QCs-ZDv)A-4h0Yffzs4oMoL5f){8H0eC=3Cfy}&AGiU0?6XAEL5VYy_e$_v0N^Kr zV?Bwv)NCTP%;*Dx3Cauk4Q$Bhr{B~{HD;IWhUnomZr8G&G$Y7*9PDW~%ByHO$p{>l zn*W>XX!)GX>Y)ig>JXqvfd}TkE#oZ$`8TYZ!34vf}`EnPZHX}m;Ov+mV+vLM)HNXz!&MgQ1?L2 zvp@o7UEELt=5Jo}6ZA%$cos?aT3BL+1tt&wbd?Kmnk?PHCxCerR{Ic!VVo6Ecnri7 zXFUocp-h`2?`?mdr^VEUe|U}1<@wmz5h5a3H$oYKBIZ2C{Ioa`QPh4uXLXYJ^`>oR z=QxOmNdw*VsrCBo4#959Er+7ABB?P#u1I`ubJLP5ymazETVU#J}_x(8SBh8;ARq|+2l5t#} zdKcS!i?-gEA2g-F_bpss39bpHB*s2ETA93Fi(A_Yw6rued-*)~$yOUpSwvk9LncTe zi~N>AL7z!W=eex$mkf&^=!LjhA#PA*@?>ieAHXuxTXJa2%&fXr zxiTrMEQP6tu`ma_a}l)&3fuSrjomcWRd$-IW;{|o!YVxDq>E@jpj9VtT4y&73Th4_ zA`T9q$X$)6Ee|%2$s97|_=-84gyiLY8-jx%G^x*)Bh}~fYqdj4>2q)f+=_G#GzQFp z663K8II1pW=%!;6pbO0*7hJoWP?F}rC;Px$#)5I{U={meG~B4BLxj@;3-M-C=;;ZX zQE8UyQ2sU$An)SF!I0GrXeaeRo}2T*my_!Ei@{>&7@0(9GscXcH6nkKG(Gtrix(3L z;usf-5N%{2kg7B(6HnhQhb6>xJINdQLpBj8GHULW5FwejwyZNEF-v>U@A&FmL~sQY}E4wMnl-t{MRlh|iWb;>mj zFZe!y+Xp3=UC^->n48An7kO64%qWGI`1NhK$^la3-*gJozvvVe7N-CH87$1q^#3u@ z$^)&eJer{6eG5~D@opJ~g(*q^0&0ST5MNe?;VV8QQV?>7EP&Zhpg;oVMh!$%(2vhu zz`cTy_2xA~0>%=FMFJKUIV2sH5%eaH9F^O}EkMjPt*U1V@zL=4lHJ&8Hk+d*^4#6p zS<&%d;dBZdC@8LJSx5wnU@ty!|3xW*T>C$EJ>De zBg5{^#_Ju)r~BtKQV(H3G@M42@XcI?;v6)oaiLxzD2(O{QHmhePX@lW-+}vMIy5Y{ zS;-5m9<&7+ln^Sq07Zp&+Y?n&g1cEPMPLFjpjo^;>`Tyhf9_4g-WW^MR+*DgjG}Qt zz_V7yR11kZt9#}C5A}ejBpz_pDlyINt9AfN=#u}}y?DF0j=1Oa#{qsaIfr<9Rq@Y%^P0ZC5oa<<@PlCNWSw}$WgZcO#<#HbxuIUMDn zwDWh3SiCI3wqOPSLi%MpPqS%n)qrQ9dsi1t%%xby?058%@Q(n0w$k`7@!sQu>xScR z=w~f4;}}68%>R#v-_ZUqZ=@ew{GY#sV$=d15k*+FHba=VN$M5h;P-^cQ_EQVL-gkPNsv`3hXXzyf%yG}=$VguqJ4H4^)MtY##*IOqV_HWP95NU%!5U!&^ZGz z2Gw;+1JHtwPt_d?azOaM)*Rkeg(W_L@`a06#hRQ?t3vKA%jH%bjOr2 z!uos(5w4bypwdIN;Qqjn0Y4uN?d}%@g`J`{8-rj*dj*UL5SwQyBbDPWiBnZe63Ihj zc~Imt)f3(0efr!Bt)$4uuO+wf`7_+9Pj&Qh0akILyHZ+eFkhL?n_QVwM*4eaNfH*p zykySQ7lQE5`k*Z&y%^KKlorXxybLbcD09v4$cax*kB?WcH9DT+6@Rm!*&T9bdL6o=MgB#JuJ|v61U!*Skl?6b?aTX_0$ceuHs# zP_EF~!qG0vuI?Tg-I+=0kSf-!@P7gANfbo?kjqHbQdU=Qs;;x!+@6`~biLg!bo~+( z`X&pWDm}geveJ*f0*V6Hy9>NWwFaIv?KQ$Cz}F3x9uw>Au#*j(ukjCRtGGhZREx&N zUqYr&#|@biy<_pIKwmsro$@xHd)(#Riu|%{awa)-RkZL9&#kR>DahOqu_%5P85CjO zk}MBm_E<}ELCRSg0Zlcg`D8XZZa@1&e>U7E0oJXn2d_K(cdOBEu_X^PSLW{gZMAIi zvShdKEkf*i+#ELf1eU(#idmK$OGR^IggZ~g`EjcqOex1O>0WHVOTp1ES!j#$XT}Qd zgI@R{Kf|rCDso}mzHB5k^W@^Bq`7U$k|L#G!vto9T^(c2B_mF);SXD{F}l^%&i!L> zO0KK%?au64vsIPZZ$Q;kv_?ASxki)EYzj@WXA9buPL&7Wqq)@N{M4&Th1@Hfu9a<> zxnCM=ZEuf(kt(ZZZukm_)Jl|q7Ik)>NPx?kJa49CmNwoPmRXikfrEWvWTTX11Ka7T zPIkxN{&Nr8?~GcT-)AiZU(?+>{L`zVPB|QQyMt{$JYGX8_WcVuDh#|F_+uQp3g&Uj&-heZFc)_0a@Ac&8o=nfdGrZ^USCM zHYjs$Pg;}3jkXFoUW&C-_NMlN^7K(7LJtoh4-fVcV$S7sJJ$~w+>@h|64qK=JwE$^ zfC-Z;s>;A}dP|MtfcB5Ok4CdgVz`-k54S!Waeo&1i~V^VcG%P@_ZQo%fhK+&XTTVv zcz2wk<;GIog2^ef^LGa8lcJMO8=8{OJFQ!Wj(nr0me z_^(xF22NNEc<-MRWx6g)P3hKj-Tcz1OH?o(=#|Wk=doSCuL-gDW_4Bw|0|p~?90B~ zY@weU>2BRAQ6C$Nz;r#M&_@uVj6dG|RSE zO$A!iW0VA(mxT>sttfk_K=@A{NsUuT<-aoc z+)v7F*tXDc@N^PPMl;mFBpNWn)JwtqdjdM}1}n}`Lan0QzjI35yVd*iDIrYlTUnrx z>PWb>XrVr@f&#i47P`6?8auXzry0Ff#+{+88`?u6Lnz4p7GA;#B6ay z8qt)+K*5f921ME;blYN8(eJe@I$kY;7w3tEGr@P$L-)KzpQ)l zn}^2$iJeH+!{sXdJh8WP&WmM_qlpXndBX_3C1KmEFrIt4Q$AF%cUnbVQ|V9zYjw%K z(Ov`-J0UkyOFb$9cjVK3fcoDGBTh8-*iHLHy+YwA*}@&K8(qjiYZ&pJh85N6N)j;Gk@9Quz@Wb}@p zl)d=0!MNm0m-#L_$G7QhfBa7dGLQw|D$Jr~P_g^E`)0%=)1&2$7hf+Gb&26f%~!pr zvzhGXFCdTpF*4NR(JD_;XB!}7Vee{cS)pJahtF4Y=;W;^=|#T-=?#)K=s0W z8X%2zIb|A{Nn^Qo4bU+dm6+5@L1{g)c6OIzM*G$9N=z%Serg`9OYe)vJ32meueBH? zE}zN)PJ3R^5qjrO&&RTbtRgYbUIIHCUArbW4wn2ipKHwTrfsER>5LxXmb;HCv=viz z>3XXYQ%xqL#fu!}7nP`pOgffzI_%Y{t?A(T?NkVc$}~B!91h0gtkgX7)jX5+ZzG?~ zT8H=NO2PGJBo8$&BIwZE)mPe1Vo6^nIqv^c3V8`{^9Rk_VO9No9{<$7-XVw`m83sE$VNIU^X4Y2Q7S!Uvm+vdJ&* za;E0Y-N1V=szD}WiZ6R>-r35j!KiBWm-+q3boNT)ORs&qy+!ibZ%^tfw87&^MXpC%i6 zS2b0!QJrI~gE^>djN#YCoorcLS140~JIa@dzuM-J!9v@pCwi&qT5<5R`Yu@D;6I_G zb^_j2H3!oZ9Y$CC@vkv>0{+j;W6FO}oYdyrlrSfz#oD!#2A^5{B(>=Ej0{PnLa>1G zl4G#*LP&kV@b+j$(|zcd`!HFPdF67AD-F;m$o0333%huHum6g?-wSAN_-MnL($}un z)9Pxa+%9$3d9iA#gFhO$;F1(&8^V)?1|^B)pbABC1(WawkTngdM!7qs+Mti5v(Doj zN^E_)hBGXW)Vf}Rs(HaOsUT8c$!}=t4zic)xRYgUEP=d7M@w#wjEF8QE_!a%L)AMI zCqmRWHyDg%hCDCG)-(-&q^sAGVC1U*nNCs0HYiW_@DNMDN%z&>iJ(5t zy+ED!Id?txyam+TT*|nm%u(xM*@gbT81{LEdLU^x==n#}7#o90kWrFkcL^emOD6EI z5WX^zpt&NM9SDsOTi(%vab!s#JX8^vi`T}Xl3+P*s8?kRtq}C0@5qo#gv}T$e(4ix)}SiXKLnTDKJn@ix&4HK{55=K6Z0J@aqg z8s`6}w}yq8{=Z!m&&0~|AG;kyv%{(@FSmGJJDLIv8|njme;Hw5@E_$0DEN~MF!Ku& z2>S!#VkrNBfG7(t^gKByZ~keQlpJCa;-h=^8VWsOlJPRRU{T7&{1GDhpvCZJ>4@9^IyTWDrbJDK9&$N%x z;%ewQz4Z>*KiMVu1?kUhT}n$kMyndFT1_l`H}cZob+uq<7|7pbRrfcywTsGCBFLGI zkZ6JLSf9a+?w*6|gA}JTh;%9d_hlC1eoQX%FT9k1#xXoS8Qdnmez~@86T9c~b%bl2 zFMJF>)mRNR83zf(Xo=xwHGOB_6|Vv3gp2iHPs%~TLc>y=s7_>COHhJ8__;OIn%mMRjO_vT*r8m>R-y#Z zybaVaGJKfXnLq)NFlxa@$TTFd-agQHaZK5YI5w96jUpAVM0VQe7ShsoV3nd(IvSQW z)ZT_Ids$@g7ax4gwO1D`i+YsY(|bJMJ3;RTpMRlJk5;|)&_X~lu2lO%ui86Yi&DL^ zzD7{7#<{17Jep6cA>?VwC?i_rHNA$&;6>oBH1%`DmQ%3ppA;NgY^m&k)ru%`%5SeO z-TH9d^FIR%L8J=#=>=ZxIa^$BmR9$$4{9VdZ!CM3;lj~>PK3V3lo=DJh#JSC$BcM2 z_|f926XYVsB^4!9pI;sM$akQ28X0xDC5R{)by+n;Rblp?^*&ecz;$0wb3i~-;?+>s z9zy4yx!m~i`~VO7V667MgAO6s_P|ij*sSwbfq9Qo! zA$7TvQe8=o*Y*=X+4`&ghR186<8k@aM|0NEU7v^w&w%n_SbbhK-L;9;2IlVFLSKZL z`>pHZ-@4uQUfb@XjYgl7@AzA~SRR~rbM-b61F&4>)ahJ@WgyBcnN=57?(j$F$0!9| zU#`~Z>^`~-YDHU)c3!31*3^aVVA~yiX4;`3WBDOcCZbFrpo^K&G|z`}UGi5C;K3NF4=;}&c$#|@&?B1#5yjxZSr`mmFb+YNQyIcwOy$m{P>gsAj zpKiyXOT!$3S3a$01!6&T@*^OSpS0SWfD_{F>ZheOJU+iFcq?xbqHsThCar?|_V_bH zgk#1Kf*{wdc`M2cCyY*ATfURMiGi9!6f(+MR7bZ?jsW>XxoLE8aged=-HOTAgNIj# zNtF-9>giS&vzA_^*U<2jUe6uDR-k%ZmP|8mCnqS21s;g!1T5%uCt!G)Y1`5eO%Du3 zn1O5fJHt7Qyi!J62e`aSAMl->T(9^7H#?5;dw_Gql0Z;w3Ngg7BAu_{5iBYpc4oQk zZYsj6sv3-PEgm0&;sR_{x>rhQ)8rJUgOV}KgrjzV1w<*vMJ>V=b((Pz%{hG=mA^7J zfLY4{%oQj z`Uetn3f!gvZlx_oM>#w7Wget_T2mm?g@L71Mntm-s{XV|R=j2v!b6}?4s@~S*AHjq ztyczST+)17NYB1jS(1%M^27AY zRKYt+5Y}2hxhkc5ipl^ub*^e^IE9^ZX9##)>6DDqN+cUkg{+ipo>i_LTHFm@-GyCe5`{Hs8CB5EpL$Ln9Q_TYIos zm~vA%y5v4)Ke6#xD!ocu$HNrC#n$l=2f-}#+OjA@?eX_w*0P0Wi{Z~lMhnlCnM>_i zg~{>pF=%qQeG~0*;RrGt@Yg!q>_`cj=nOPe)Q`t%t6FqELQ+{+O z3vdo=oLk)izq5@KrCT+9rkdX>&kOSByVwP3ljh$@E6a#r@D-95&`*DSWdEST>=q(; zCjd4;$-h#$I7g^vee;hxTpj6V?qb*ra5M-;3d&Rgx)efO=d#g+4C?U z$bdtYOWfsmJ?JIdu~I%CSreUyw#FHX9Cwty4me!F-f`hfvdBt?Q4hG;S5dj>nKD(y zE?Q%P?oEur0l_Wpv;J(l($UmvP@Ycft>&Y{M;OtpF|7n&YmFDP;k5RWwFLRrAprk8>Lr`1MVhQ#X49fR7C{SZOYlv#d#U31mn@|#y zjSW!HjSVSGQtCP%rRX!btgD}mQhNg58C;wh^>cMmFxp#qE{WMw<2%JEt8Jj9ZV}7A zS-+?TO2V@oo(}Yqbo=qb;=Z;&Oq&T8SXdW|J5g}2&%xz+pk@%c%<13ECLW$rQd)1! zcqZp#?wnBean7gtq}bt>IP}pSeRb9HcA)Ssl=_kHckR%*C9Cx#{pAp1XJ2~0YsuNb z`Se&L0{UQ{n(0&eGvy=Ca}M}e3%n$0=2^}T!ZL_Q8f#&Y?Wd{@*l9-OTfeATBwXfe zrZ?Izeko{~f5c?dnZt8M`VhB|i9X8>zb6+92zsjwogp_$QM)5&2P9s=%sBM0oxNP) z?N2)2Sj3HJsv@5QgrwwlpU(j96SHirs^u56@7`Z-_?H+%i^FFNgT)Rkp6*$k#l9JHhGOZ z*JE8rV*(X^5+_%cNy++*0WbiS785U$c*yzF0WJCR{JO5~@Es6=*N#t-kQUcX=H#mM zK3tf(3Et;;R8nM?6{9u(Tu+VhL^k#{cDF&=+PZwf1Y<*H42-pcQm0zLP`4^l=x@^_ za%-fTH>|k0E{gg$@Cer%R9+3oUh7xyL6WIQ5qhWL8keTj(KfGmU{z?8pvYXyNbiI% z#IvGVh>dSxA4{VhM7abyUjfO8PqYtn&NdBd^e=s%9Xk-NzEmR5h+KFMg$6#%} zCb`2`2C+{DI_1*3&RmLghwSO!ZtnE=hwMBWK^YlF1n+1t-z_qUcfWdw^M#pJz!B!5MuJR!Q6oM4EMuD-zRaycZF$Cs;57GPx|@XdGWJ z-$VZrJYHY5da^oJ-b0o_bMh6?oSsiA)1(lno<#E5C}wK9q^g4Q5;o7u24#Na0g$)5S5w7>rw4Yep zp{_9->y+EQ>aX>-1_2fE-U~F_?gpl>TzX3N*hCz$WE_DR?6IRRnkI7QK(lG>j_7x7 zX>Fvv=eKuM-4vv18b1$6I@0 zkVlle>yjo1GaJ_Y+Aw5Xly{6xzNlWPnCo~_JJ#^bjV}qF`@{+)Iw+k1V&+cI&0FA+ z*m?NGf{DAmS{%Xf#`3rbmc)N04y)hY{JylAbyB5uRxOZiE?F`B-JsF0-+l!jVB=Q- zZ4W||IES-eBNWlcNFK5k(L${R|G$9lz6@S;9K_B7#7>BafPui1oo?shTGeAzLNbO0TKk!_B;uJ;$T4D_+ZZ(qW{f0W%-wzVwqX~ z+oc37?Ck%sk|1r;3RwYVq?apwoW!CGLrs!W2jxo8N+xkb0Ub2{OfV20McaIo8Q%GU zAUaLi$^mYfLwv)ysk@EM=bQ(zbH}s4xJJV^-XsV}Kd^?jo zK!RHo1lq%@Y|*BwJG4AHh7PszH<;okqW;mJQKe)3W{|;t${gk5GrD5D@2$e$a8@;g zzG_lk1`|hajq(;%xWAVk&v@cf;LicO*K#8OW?dJx%vI=nFi9(!W$()e@#ZH;&#??E zHcP2m*@bRUMLXwSnIDC%+nG4F=HD$Vz9r9!yUjhS0m*N5tv+uP*}!JL`Xr`4*N>yq z;2$5?)2T8~;r&oNFYW!cBnZ3LVqo0R#~Lya#+CUZWyBKZDkf$*0|_T0>R1E=Tlv zQaec@0_x~!ZSHrK*FSW4g)ToLY|ql?TInM$^YJmmHi3HrTidWd6r%1`esM0$^-*QE zgfLN?)U!umXk_R{t+Vd|L}F+QLV!x_)9cax4mg1~k$pdwEp*CdS60y;5;E~Jv9Vhk zrr&dZHh(ZbGj-+U`{anl=+Z24&s_9!mJX&*9gxH_bBoI659!8EFmb2EvAE~zXqa-J zM3AW(&M+b7y2n<&aJa^*4rr@q4tv?sd?!Dx=HE8tGli22^>))6x^lwhx?!KRx4zjX zH?K@X{NI0=cUP{>>L{!0zO(7+I&_HZ zCg_%3{*`%#Q6@StWXmMF1t}PbaZ(H_DVb`*ItqwbQM?h{L9-yBR>CA8OR?&PaT~!D z3JgRADcR^TyaKLc0mhW%xV?SX z3SNGI>w6Gx`LI)s^?03yv}pQ(LDzUY`)<_XJV=JX3_o)~rIe5jP6GY_D98YKpHfTL zjfSeisfWC3-b3hxp?gvLaLwV301Tp&RcmU!Z~M8g@rJbW>1N=V`L@|eQt^X)V7F0? z_qe$C7SdzgKE45^t|uZ1_PnXU^23bC@v7%ssUP>i%%9=EdGC1_KW4qoT;Ox`{tE5( z&FOw|YGbS2;qdLQIo|`j_FOE$ubdh-qRZa_JU>ZT)2G1Rc)51^)R~rJf2chC`L57M zIhn7V2Nr%Itn~xRQ%}xb!#UuP!WSfBF;w?N_8%OFs)b!DSQD+KxlGe#4)VloQy z=SWq3UPCQPUWRzDjZE#T{1Q7aL+@8N$5fyh2WmV4lx(m20spOT;E~{e8t(MqH(>6G zpn?A1;g=>35Y9u~v2F=3{C=-j!E7MG+zd0z4G-2|{W9>F0t5Px0A|2|h#P8AA5C}w z`3`1{5D=}OQQY6zzsH8{Zub{^UFHQb$s5MRY*2{;8y;F8vg&E9Bhwekmi2ec_Wj!n zCM1kjR;YwPs{5-mb=QfUAr2GED2{7P>j=Uf-yL^dcGNOU4*E>%iH=XUymbV^0^2wVf5MaB%o zH$YfShRg_n6n%3vn{1v%CY$w^a#C)qcj(L;W#-bt0A81UWLAeua+dY6uTCQfOCnE( zkE(Csy6|&~UEyDD8iC@juL2otwu`9htNhBLK?Drs!8Y(Z4RYHw4}5t+=>X zS_@j~gERGwZdt^tM{b5RhHx$ECXC?YgyqJ#;{v_!01wnnd=UD=aU5f4aL5CLe-8s` z2Aw>#+}c>ASu>qHaO0>wwot<}R6h?tS!a9OT(-eyeMO}gPvG?RQj?Rb32SAgHy9jc zehQUlei*MBk?E3X@uzGIzO)#Ayl8&*xqY(Nk8EKN;lemDvgN}+0U9Bx{kzBo41Su7 zCv$kT?g+YxT}5(w)_(gVNOKW_n{~{nI%Q7c{Np=|z$+v5d{47iBP%T`9Np+Y6Sm!N zTCZlR<<@1YZR?AiAZB&3KdO>x(p0+1Yr(iTXmyX)lWAZ`y#SMfC5cx)@~9yPq&12N z#sy>RHl0AEIt7S#b_-^97s}qsfQuepHPS9LmESGE~wZyp{8vG6R22iQf4*s2WgUbc^*k&-0+GRw6#*(@9JkVPx%={!1(59@?of zK2ilgqQC;O9stAH&eZDwAlKE3NW0oFxRf@)OJg`p9c-NF-Y%TmwUs<=(?}PF&p^Ar zE3Ug;Y0CW#vo4V^#@OIE@&tc6TK9NGcjfKk6U4@OEMV)TDiqgmS*LGN&L{NiauUUP z6}3=?Huv@-k5{giV=d$^ktoKIWDY+ZdE=E*wtcVuu&hDN%ByuTn`PzW^>AWB(Gu`5u1*rnNRuooArnmN43{RcT1Rt<=pJR1s6ZOex&r%5 z;uwc3Y7cv2K+)6SoMWjlE2rl9`$+75movK%^zk_+Ye5U3_1Qf2_PnzOYiX0dM8oKt?ZADK)!oJ4p)5bETm$T2#)%!G;(S2FtJ62Pd zGVHoi+FbKB7(cbTP?JjtxJ&(^PU&td`1Y}E4=Ds5q|51bzR~tcC!N`IJZy3<`oyBYU+t1iP4<+bREIYi<_gy zoT8RTVW+RgkjS>KQnK(5D7tlK(zS;_OMP#`{8uculK3F+4teQ*1@64JUcC&xx;1CE z3C7ExEvzMP;>S`JHTbTiuEvS;EHC3pf3W7jId3jQI5E;CVc%uZ>Trwt7^&n!qUF>H zr0dbhSUe_E<5*lRG^B%rAJx2G^K8ghXkJUN2rC=z&w9S|t>w8)XJ*LjaNtc}STo&gks}){nU1u2`_lJ{Wv4rq(ylsA^ zb$`fRl~d3ydDj{pm_N>-iRVY%Zio2!0DGD?yUup%0WwvnXs0)IH9L4}m&VmQzxxv9 z(0HFmC&D709%)zKpCTa0zn9NTN*0}EWLnppU*7i!Lr0=`KW?_#)U|Pu;>U;9*#GjV z9&Uw=!hGC+X~5vUs@G#R&Bq^RpP##fS5)BfBsqMc&?xBT1$#nSNiIoeOVCJ%^$vR4 z;W#Tflg;|fyu$V5;=2+ZrNt0spF7s(0wtXnO6>W_+9|attIZ>}E;)1*$y8S^q-#ft zH-0pG_-QWvDRW${F-4`hkltZ*aC< zo?zkdtgIlzm)3bLNlNbd$h_>5sztw}ogX;Rx$Vg}onSbIHeBp%2=wuZ!+rD}gUi?( zpQjdYoCB(%LfR7I;m=@kI!O!gR#8E&WP6XsB~ihGg=Mh>r6M1pgt8>>%q-?y`ibWW ztS!m$1Y@Hznccz9PDbtYei&b{<%_7%$#9$K**^|q!}oc7U7aCUok*M%i;0Txa5IgY zJMZv=e&?Vo?^C?I1@R(+U$%R z#TAQXMKd#{3cearZKkk#vGUw0WzZTY;U%81-{!78o(?iHJ8Q{ydj(XSVR{8Gb)49w z9F6 z*wGr&p2w`XENKeVE5WY}L_odkPcEUFHCWUs<_m{MiS%)>sNcYh;czwV4x~ z&x>YfY+*ssaVr+jbzW4N$T1>I;V+5bWLAgjgybQrf0s;BkMTBqxgf#| z!)HlQz8F+~2EsnjbV7!ho_}h1vvT$#i%C2&&wrXZM~qyK5+#LZlXSF<)NPkvs-p=6 zca-g(in_vWh-^yuO+I;OU4BBC-W^J0=rqoHvB9fFz8g&`mCZ*_zp0kmu9@7vfcgrU zdRcMSCkm$rO)%gn8jw^6fz~IiTG&~M3{-G~3$z#ivtp<~gn%cKuCmu>L`vd^o1hP) zn+-WB??b(U=U+U=?^ZFHB4kCn#{uZ9YJ?e^;O!HzdPiHUaAv{sp&7+FDW5TFAeNnb zYEQL-R=Cp`7l33>VYOOCYL4YnE#|-B8R?Iq0rjC9QO#~WT)0b;wD;<<;jY!mx{p# zh|TSHtW4rRst=a(1uF;CxGzDS+y5-P*DAhnTFI*ic)tAh4{)}(Yv@)c?!o}Y!^tGPv z`ty2}rQ_gxk-)V@3jPaZoans#Z>ApGzichb#`@n{dJODr|GBfQnx}lyDk|Trr$2!) zx~u;R2)e3zd3YZ!^h%c`s23>)EU9$hL_n3_jZkVdW8M6@@s)I@^oFL40J2(W8KiO4 zpK4ZnaVe`zX~RX?C0=G0TuUw``e|duQkAyN-EWt5fy!!^uTrLNv!2gv&)LTu#~asM zv8b>GbL{aab!X@6!u?~8#_)wd44$tA6BU-{u?u1tY=&J9?}s8U&+nOC!c};O9j399 zbbN&XYGCv}rrCe?N=X2UXGh&WI$*PH)}OOYgf}jQD>|Epn_X&%KOyI44k@jMg*SLj za6Y6lW^JCGtSuJ*9HpBcTWrL)UbqQt3@6WY0m$@3!+__)TQ5Xnr%c z6v5OL6HPRfNF)GzxmDg6T$eT9Z1U}=hh(bQ#s@_WdBaPxh+GGzxSTd+bR~K=Q|#x4 zGv|ea&fr*B-geIwck=*E!Y-V*gq|JH*XdXDM9ulJ3jBq;4%*VxT1VcVpS_{pbLBg~ z0H;A{yvSDqnsSPMTe(&a+~W^Ahf#JN$v`$@U0E^d6Qgt-@oDm)DvC`l3t`Ki38KXc zKUVb<7KCZ?+$<9FgvD$C27eoNZA*)HQL0w?hiUrNeqgOj3;p=&Nm|nW8gDwk(e8nK zMgmZZXi`_Fy6gbqeBt{Sjzz_0$B7m}7r>bwVL5s$jt(_0fd1r{!FiPyVHG1b6=A6K ziL8w1A;d0>34H;;L&|ztFlTyzdG)E+WKBB7C0~RCTe*o-8Q)3VCV6q{C}Ty>o0dt#>d5OPUS1ovSM0ZwxmTY~^5k_NBq-V#GC@X>zLUN&3qbYA)w zL+ULUW@nD>(f7{kwUzu^5$iKZt3IMmK(C_4-jbgD4^a2h;dK7oiN32VLT7nI?>ODv z?jwGKh=ba1kN5Y1!O-rBkzeb&mnqOx>^oJgKr3QKtt+Dx-XBesr|9f~!HUBCD7vZm zNXBU~-5d-xtXNMiW7LQ1HE@}@R+(*Z4GqbX^&)9Xz#sqygydkIcvSYzk?pRjXZlQr zq2HO>H`?Hp-~7UA@9@+8-k-C^`;%P*PcKF7E4!KORL*Iv8$M3+W=0{4^8h+D^kUM} zD_;)AIO2n-Z^GAdx^tGQQYd?S41;CLi8Tt2HPN3hA=uIP@U<%4B1d zu+KQc@Qrh)FC3`>8LZMOM%WwF%hQ@ZOcO(tK~hQ6WqWNh=*sZJ2^8&O>yzk1tmC@t zCWO+4Tu%F+mU&LgVz{hnM>}2ggTJMQe!%L;?9@*tcTVyEvt(Htv=4LLX*vOmo#`il zm380w*ujsz6qu+PF6a zXzG@rv`x)tNVMJ}Xy*3?uYskI9-Dn;{$21ZI-J)YJh7LWKzC!{Kh13Unn+Ka+m!%L z?@m%KZzp*VR!3yTH&WuHKN1DKh`&l~)(LM$f}rDxzU1h%Ixw=|y$ibmj68(#P&W3C zOaK_$!1~PCeR~QVA5;~hy=iy?y*Pd5poWuntL0*RAbvf*KsY0d@&Bf$|FD}d3ETu z+HuGZYU98ad|?Kz{_T!To%OjHC@uKv`KXIo)ad&9VHff0pqbpYgIpx5D6j~E7ovV@ z*6C?ZC74Kh@pxk3wRv4ld*r^q>;cI~N(nnR!>^Ir3~kPy$!Ax-w;D1C(^Co>|3$CG zwb-8fwOIXbbGUa?!Cbr=s|dOvBvcAyrtssO!yZd8Lw2Ad)F3VL608W_&rVF}0tndd zx6w3&Gv-GUPR^i84#_8ak*$&~6FQw6Se!< z{$Tk47n+L&1|3-JnuTjFo>AnRZA(3YGoe`lB80!c4xW`EnIidL5!ZaoQMg^G zy&&PdjEnp7dTQh)sHw|H2ksX=HywjWH<#kV(gQ0Uz@< z@SB({Z1i6ov-sB9YB`d*KA5btvn|J26`One4+pFdQaYb0BS$!?oo6Ag&`r18%(&J4 z1^9GU_f0k_!FylF>XIsTx?KELQf)aQHq%fc-7jr;+sUu7UEWqBTwasm*LGM(KJACr zUHntj+}p(`HtoT>BPuSuM^>lGxmC*#RUIMSA*Z|| zt&$2zM;2{C7x~N6H2jWd$Ekt2AJ>~#?aIy*ITl-|L$waY6+AZM%&-X_b8rX5c19vP zM9T27val!-k-?=c=rX6g5T*@Yh3=w`Y5^`~{g0s{K?zVHF;?fG zS;lwfJUB958eZ58RtvB+XJJ9#lpp3XKV$rPEY+&HgQ^2*``TkXT@X5~l0GMTsWidc zm>t}4&xF-C6fes(Af-Y>d3%z53Bkk!Yf6i9C8T4=mlzEZ1p;h%MPth`Wd?;oVNlf2h=KP0^u1+9mg)4OnzZ~P%mRxg( z)K)o*Ibhz-GL1@^VTwd$ea*BC4?&(mYU;)^e!^}^W}0p*PR4TLEXWyV)F7yVO#7~M zo~ah&kPnu@r|7Pp@SDn-$Q$Pi5q~#)*81_SgYn{BFggh$rXk@dXp0J`Ygc6iW)*Ed zi&^VP^Uc&*n$@jScO5(X@{#G5>n0zF*>0}rMHj2jPw-E9dANUrBOK`5RAwL=_s4V_>=s{-P3;byq9JA!T=GQ0 zfu)u)Cp;iWv>aUIHEU<{+y1=2aP|EVY}5BU*-ZapG6 zOyLC{`4}(;6STe7@K-wF38aX{5TpcC;C()Er`e1RU?EX-wsmxPE$TyR2FmiSW3 zd4^S<2G?lrS+`SJBOJS6jEbAiLR@Gler;=~wU;U1pW3SLJ#aqDH*Q6~|A5+FJ|M{H zb)Mt&DnG{-M^4h~4lU-cDh-r=a{CTh;iwT-4hlHc%LVtaJieY_iDWP4#Og%AUmkKC ze;IxGOevg2p&D+KN4B}fK zFe>O1brYY2_dn6Iu+Xrmq{dsE=^IdyS<0h@H4nKg6$w$`%A?7fjz1oiGvVqoKA1zA zE3ntv>mn`=!O(JOFF4f|1GDh3(0JZm_0RLnZTG{_qgKFH&}{3R#{`0blX|Y2+#bC% z(&T`0CsHh${ITAsw}{R~gY!~W zLj(xmcb&P0F`I*ic%MNC6q{0T-g8a(eP<+pn5jm1jyBb@O`uVc-WVQJ4UST8ikUb8 ze(zLYF!Yy1-LFFEDN;|2m+>++*CVlJ0G#&o`6+{$NH*-Tkr7Nyfbk zzjv*jvtsH$`CJftWjpn;6GhI`{|gN@>Na0#XKN_B$I)`FTy1QY$CMh6`MTi6AayD_O_O&8H&-S|=z;Y6@pL~J3(8UIqm zbk2|T&v$}s@dPKb~aaFrCkw26G9|8!}L6t~Qq$k>9&R0HZFB!j!ln1|lp7Dt7WgU7>` zkxPrK(gQb?<64xi>PaDPZ&)StUX+;I*eEC9o27zG^7HlSKX{;{^b$&RK zf36~~&P<&!!<=owtoo@d50Dn7#{Q`PU&Xj0*g)IN88L5E)!#9ymp^;R}EblpY~9BN%3v|FJ`fx>vc*&)bQ!(U+C3E z=BeR(iV3~=uD_T60O{EgzvmwyEr&X1(f%(W9Xxt#@D8v@XO=~@pz^}h&$rsV@8|?l zD6Kz^i}`Hf&DNjf9=sYs3X*9vMP+)o(PTqgvFQlfR~?k1juQH85J~^=>Ecsdg1_!m zcWT2b=&Fn~b1~9Evak|*i;rQk1CtA&70GiZ(b*v}`&r8KOJo<<+#oB0vzyktqitng z>Gr$J1DBRB+Od=Yvp`C)!VBqC?do-k~f__L!-E5mIjTLiyNxzR!tsW(a={c$(V5cl>?8dpoqf%910_ zIq8J`sS>61*0p7#`%>}!i7p5E*!pkc{~wYnMz;SXRsEKO^a#SY9}zrcp?PcFNBS_N z-EVUxOV{9I8_mRJr1dHAKc6+qiGt`P7^XQG)jckB*{+aJT;Q8Z0rT$0ngbIl`g!B- zD$9N|B|6EQGh|dWcD*#=Co{1EEU;(r45>rdI5`Y3PRbu6;#XfFp|w_Y9ePGzCFx!P zjh0&cSjYKl$h%Y0dC)Ew@?NPeiS)kVvouIcB5J)R*8G|U^+O|aMH!9K(9;x)R1a^n zyX6K=u7e3RbQBg{+=QA+sD`hMnZ0imrfR0=$}jR0M_4n9Mk)+L(#Ma$ETr~1|I$({ z|1%QBO#gp$lv&FldW4Z%UXhq<1BUSMn*azC&vl{Sxxe@XWQVF{3Jo{?t+rF-T4i~6 zMm_1aWSEbK=kG_K>BqMQO=cMytDfj*oI3%eD+|T1>2XufE;|(7*ZL*YvE!%5oQrl3 z+iA-zlYEAEoT0%y-0k(nqtw38F@m>rSNoT4F4B19(0$>4K%MFKSDv0YH^P(=brB*^7(K~z{OBuP+`>;BXblFgL+rF-P_ z>4Ij#0EmWQ%A`nP5<|>lt8h$tmq|;mz9nab%=RK1*y?$ODNcLj=dPFw1`0=JRGHjrqyCzs{R>Bk-(n{v;tzw)Bk-4 zP`RXdy~Ri;*Lm``)54Z;s9CyKaAVXN*;DSd*95DS#md_kP+D;9-*^ej|BRO~G5n{Y zn=t*4SpP9}c}4!QD)gg#nFs{aZM2_4H+cD_ZA^o(gr=yyK1V!FpkOJyvK+Y`Y!{?n z7uFf-o(5+tLi?u7n?p@{JVCAfF3l6A>3J&Zkb9O%bP`7FdT9YmW->S|uu^T&|p!M(gm5PG;|$ zIrV`!3Ud`2Lxv?lbvOQyz{ZxEM2DBk^j-LN?4e*sbx8ECiy&TSp=)$1xC>TD6+}>o zQO$^}1TzC9C=|gKWmBjr%Ep*cEk&QbAiH95E*q_C$P0 zI;?au5yOsAhFcazDFu=(h_?^*Un6gbw*CF6$9I0^tpTeAzA@e$G2gd0+PZ34dier^ zMlbgNHzE9QyU{DV+nEs1smmE!nix6JDLETD{jUUxzXoO|bZQpH|25gf#7ZY_Vqs?P zM8LqvPA6n*ZR?<9XJGWtX~HHh7DgtDVuEyn7EX@xCJsWjf9-5-Ol+J8*y$u}{t>U8 z?SDy^z|_Fn(d1tx{(pVQ8#w%RB>1O3@(w1(7Di6C4g?G=|5cRpUmM5&RfGRktRulc zHWQtajDe#S0R!uQ4H1g}n<4tY@2He@ovmfA<%~1xd%8evu}G7>o#&#W(Osk~Z}$g6 ziHw2@*-RMGb}td0ii(K$NhEg&91#SZNH&SX+fKb76;}y`ZEY)OND69!p>=tpMVHK? zp_t?J?atPb<30ED_u!L5hp}cVY>>Q;+o&G1r{_U{F$I2c{eDS%ou4yjav> zFBU*cfC4mN>k}+B)pso9!IczuJi*eI3Xa+MDU;d3U#Ma&^*5a@upRkyn0cpVQ&7R~ z=xaJ*VpzOf!b z3>h2C;HQq2-aoWRO2umeh9E`EgaO!rP_uco+BHHM-86rk;(rv@aTIEqViL@!`bqD| z#2%VejJY^BY-NE&tTW&zkHyi?ToJiyjS+bvC|=wF)GDBEaRl;TC$LVbq5o#=8yZtA zIgztkkbop=|MMFW-g-eCf-Il*i=Q<5OkZ6kl|DJpZgKg^#+R$C2oV?NkB(>vRkK~y zbvV6ypcqzuKfP^KdI_c*HYE1~1T2|)DpM~MH!i1m5hA*D9j$`uL;Qq7CFrgPERCnX zFqZv44TEI0U&+T%W9lb_CD1R85@Bi!=eItv8b_Kfj*JSk00A{}rtuEO>)(Mu1dF^B zPa7SkPX_ge>E&uAJhT?)J_NEzikJu^yn{rbhIuP+KR*)VNOF+pA1vzPPsSEcI%hV~ zZ~tuChPiKmgfHB|mgGmG+dC5`2fEMh1`Auffi2DjM~q7L+y$NMlL@CV;{@7YGV;L| zJ4WkOTMhuGIdS5)$qLruvwX3V~Zju*p_NDTf-^Sek$`^XJN40N+-tNN2kfdZHjfQg}T z)32_Q#y2gDF2iQi(eW~g511K!g6qdF#CRQw-1QO_$>6MmvuRlb1Rx6a5t3&cH!9#x ztd8|E!hBh99@5!rTSU-}<|h*ksUULTHA#uuzfi{(;_7U_zuOtb)^z1g?Y}?|7qWoS zSYZvXV8(pQFMpeG4aFQk%{0>A=45X@*?lowaeyNQ7fx@XzJlRu1jD}wYxa`V!oG@e zm&+6GNXmaSJ0c62M{&gjhW_4(8<%s|Aq&HdEjD{6J464Ti?EUkeMYy5VIcP27v? z7l+SaqSJk(4+Ca7c(lvmPQYCg5JTIP$g(NNFC-) zB9Q_kE1DtxE|E-u9-|@>-a0g;dyhosOP~JipCTMI5Siw(io)?>z;s$pSZYP2xmwTp zMK9h4g)-9m_2+```YTZ^7S5k8$gORxJHV!sD z(Mn7H0;p?h0{Id5Cg*xzF06%irO3PwN@hUx6I9U}b;=+?Ruw7sZoeLqUf{p%!&XWn z6Jl6*;N&{>@NvTbF>rErZnxQeKUffy7zk&GC$px9aK`*~58onWXo~{$lPrE%#q3dH zR8A8|X8k80K;P5*@ozE-7}Y2lDKns7Fmrx@K$#TRG&;jMNh+E0Ke_!|mL;aq>p8p3 zQoY3~WbEk8ohi3a3BP1%=H3g9@fC2<6 zp#jW0?sud{?g+kf@6NWZa@y6-z|A)$h-CQxxe(z|!`(F(4;|mmCeG|#Ue9avmDX%{ zCdDIR3$u@r3A@d~uGTRa}dae;MPT0mH_J8V`vKlvKG>Z4+ zk*^os{@eH`e=%P|^zZ)FLHKUD+)|H63G2L-GB{nziK!*}WOG92yopP# z)blfVi>FZa5cQW6dHdt`;_ndq@MQGG)l{*@MDwH`BKmyF7?M9HNdKPB#gkFo!awBa z7g+L#?e|}pC+q(gtM0#LqyIyu_zyw+AM#c)2Lt#28FBr;IVLL`^M6px&FR0`3DMW6=)3n2Fd7J+*bF8p^So&@FzIta|;ybvizfd529h=e1;e|sUHI_dIv~UUf0%xZ|6%$uvNHUq z>8E3kqJ}a`K7KWGLy{?@ZEv(Dh$exeral}^0Emc6#n4Pw{zio2-J%+ypD!W_jT(`( zFuFkWreE(~-_inK4Zot#@aI}lb&1)gk9j=A=2ghml#eVQUa3W>fs4!Ww%wK2SB`UL zsyp5H=69<5bgTYwxs@CP{c+yH30ynl5XwkVUB}E8e;OP}S5T*(XPj$$LvDp+D#rUg z2hUba41Cb8tlNR;`9rgsEWCi^mjw$QGi2XAmZX{|{amfLr8}7vE*TiGrmzsWw@`NQ z@cioL1uT&FSU{j`)v|K_ZTDie1(D3Y>`F2qd~~thovHV}t%KEaVCV&1M!a^+?IB(UUIOG7R7hB7Ah z*gFR==Gqh^Vm*FYo>f3}@1jdUqC{duC_Vv-*0TtzSDd_P7-+RAnSc^q=$EHHW&wr}@!GMjwRo z*~Q6K|6lBV2V7Ij@-W!JUQq0Zh*Bh>cR}f(G^vUp1acseki--^iUsUlY}gC-ieRs( z*n4l-6??Cs-|i{NNyUQqz5n}ee)mdp&hG5&?Ck8!?CfmhGvw3e)=v&{n>M>|A6qcG zVD`Ia<1BafY15YsXA_M$4y7 zXT%Npl5uxh>oAVRRp)Heq3zf7zjcs3t}5Jb&Y2a@E$4pPyt{2Ut3lS7DHG>wbJ`6% z1kjw(?^@#Nbkm^&mzi26c+AN8PXGMkY1<Ks^jh{-D&qbUU}DY zyOZdE=h_nmU;9-R>igQX>0SEH?0e4M;qM*q4B5$JUOpCFP_N&akKd{W1s-xuVR z)y}SeQLMgSaDxIc>bZNCOq}wtV(h+#tzNGT={ichT6=r}T`y_v^x%TgfC4LKFoLyz z6khZ}s{4X$+oz4`oz`DFOO{#)OZ9)a-qDU7*E;W9 zA)R+Tp7U|n`y`~AGyeYQxfAy_)_XnfbnE%un}qG(H+QdlX2w~!gLhaH3jEIm^}kwY zOv$o!dgG3MUU;}q#9F=n9N^&1_ zgq*`LHY0a(-{-cR!))$z#;@N$@p(Kx@5k%;d|t4s&y085B-hwOlR(jcwBY%Ph~*`g z{Ur%k`BGn2pT2{Nb-z);hj5Sdo#aIx$aI|>EzKi&^`OP{bD}Ev2&^VG<@L{<#_#-o z(`KyDek=ca=d|^};f#VuHIf|9W`Kn7LpShmixU-ds%CVNlXLd!hs|M=rjQ3VLwpla z(tdwMXii!)%Whzl;Wf)CDZ86h#FN>zK1s3^iibr=9F zChlAAd3ho_VOnfA&V*iclf=Ry%h`gVg>HrB>tqjkmmtiCc6GG5cr9-qL2iF)v#LnI zLTxH(e3!?*x(&NqDt!@(%e1U+-2m%INp9|dn8!};p@noxaaoVVXrn(E1%PAdXOHFc z2{GJbF1sm;AIG!bdyG>I45?$<(Ns#B9OfcPyGIh3?!@qrfA27Kz6SX!@Zb@l@4icj z1MdM^5$pQ|$6%C75Z&#Re}@RYzug&Fg=b8A_jh}gV10|ZIv*2>YGU@W1_XSWn$6SX ztvgqjzxhkS?D5S2t+m?gy)_biHkNl)X()-vDNdhb7?P>dvoLqmcKE zN5f0q_tO+g&;h~g?Vmj^*e~rh4i9G|5>h`4^k98?{u4=)qCerO^U8jQXGe?wll7)O z0h}#C2QJAAiv&uS8%1&ll7}6(DJD&ZOY% zYoh%Q?uI|?$oZFTru6G)8xh8+3#0J4v3{|Z=57tR%?*)s*L(d5_b_Br5optUIa$J*8{txILx zT<@(vQ!o{hvH!)@(kN=hGMo13{-DViZGxc~*x+zz0c}1F{~UV}7GSZLy8V}st+(B) z@-kmNZ-6siGtRUT+26$MZ#S15%7OS+K4D$XUUNIzyk&W`kx7@2M*>e=8ratL;YMC; zAS}z+gO{rZms-68YTZfDmX?xf(HAZktZo~BG#!7yB1EZ?P&V=cdia z^8ChO)^v9^dxzsz)Ae`OrRfKuU)gNPi6oojQ0jDjjcy*do5t9Y6`Kg-wR;YxIzHz# zcDX8<-SBG2H(BT3&6T>X@*WNJ9F@2to5zZKAHh2rLlKwI5$PJ*htx^t#s>bt6?(v_ z`8YC1*ow?=7PR>18mP(iT!EL~@ogsUy7-?6n9U^{(;l)jIAY` zPMug4p2m$Iy&J#U6ZDT%HVF562{?O)F0$Q*RN2+k3VtY+!kx$KK1` z=J347hma8{b zd0gn?N{bARgJdE;C zS|0nNDoy*(d#HH`v0)QB?QtKaamX}Xdbg%ILRrg)LWt5`{8ZYF@Tr)@boxN#0(ajH zY@PAlyT?zNYrBqbR4uRY3!&Fc>r&g?oH&(&l`FN&EAYFQx29B0dBv2J6 z1Aj9aGvUT$N}@D1&rPW(R8R}ho$FYya|o5-p1sh1{!54$@BN*txM0zOak89op^by~ zDjkCh3T#(}42QEKMQgl*%t+Q7LoO*Z|~V0mmYbz%^4FO{?GBbSIa+;Km;w#c>dIV07k=k~AX zuxD=H+en3x?Rg++WXy~ppw0ZjgvzqN1Nto^sIYA@p`aiUCL3(6NH*_U*tiUz4wP`T z(MlrXEuisMThNicu!ne&Qg)`!^?JOc)pUo>v6FB>^}J5P7iwqpq5N?LdZo5lCgikK z@)fQ&)!6qkWIWKeuv{Cn>YiF3?01ND8`NlTSyRi3XATyl1O^;a!c+@*dw&AR(_3y9 zaaWI~7oB?6M!cFdCYVeYSwGhD2gPi+YUIu?>{=8oL zJAV|f-{@&4(PJxd{1c?ySu>D8S6w|@QXU-qcVTJz_M*-w3#lf&gn3ZNYx*-roap@_^5+<81`>^Z+gM_K ze5)@!4ArAxfcXotl7((5bnlY5Y*vf=>rbV;tamG4J%kj0^kCbXxlIE}=fAb4%z5-9 zdt++(4VkUC?qZ+FIQ7O=&zqA?E-=quT#H#zF~uNS`6e0T)e)3YKXmzCd@y;eHX_Oe zpl&)15S*&cYD|9U5A_Lj$THa+E18WE6Fj)Uy#{ls8Bv9K3^-U(+sr!xpn?(=gOq8f zxtNTN>jkng0Y_S|I-sOugjfS%VDo`> z&vNaidy*H|aVCdw_5P6>ya4+-le3qfOmDSPW|rBPzwt7)s_jvM_0yIK&DoAb%(ASP zvuX#1+e~JARvs`d$l_7PlXTs~i&R!bXqZ3#-o*lDqwG}EH=Q<1#mg_#Qz*61_IT@- zzpaESbRA*ToTB*we!9fZxE)z_HXN#Hte|SdvAM*QB({zl+@1T_S%qv$58Bedv$i(& z<)dZh!(x-qckDz?`i0MmYg;Vu+kSzjI}1`FN+EB$dc%09!0${?;P~~0>Yhin^z`Nn z0x(D5B@wZz<5~qd!uGHDe~(WpG_T#qKJ&<8*ac*U=D%!J{JOtmN+Jd7I`QkUi*?%) z(tB;VAjP0pe#Di7Si~rZjN>yIMg@g9f3j}svbKM05x$~Us2OK*>a#0w1Dk#Hv?$gS zYSqN8sU>S@6?0SNmJ#vfn3@&j=X5pDzeSk3(P1wO0Ctm(v)33*ub|FoF386)ax6yi6xxZCo+JJ|0G%`v~z zKSR0O^!B@bDp`JkIvI~G(@P_}+>Rb$d0I}1HBiVZo+f3-v1~z`O#h@s{L#^H`a~6e zk!oGtaC-Q?JNycpDqwSTOxS?GhaNU&%BcT(`YedcwMKV>}g0;?vU{HIpK z3n7mEFMN?oTb6lV`?Z<83LRZ@qAiECAO_SEe;;q6VBsqQa3MGBjny*ebyU|3uz)&s zNq%qrDN2Pz2@ZLsq`x>wO)_3uwzNODf>p)&q{+GSh?aQO<@@h_^c;??&oOFS7}@O-MZ?R8i~s42^{N zc;6-i?WS@^0Ar>$Zcqzc0&Hg`zTZ?rReS?d(O%WuRy?SNVpZ+^vtZa*>oHZ&VD)41 zrc0`Ytn6Ny-^y&g$Z{*CX~nWLl8M`jR#rIbUQ7D{bs8PdS`J|AR=LeN4K|o)9W;;} zOBJu%`;oI>aqv2H5Ov?g(uX07F_X!~9eY}ICiGCIANo3y;oTt0c$0Uq8cyaf zJP130EkrV8y7M-PMJ1Bwm6w2#__o^+<05L%U1gtG6k*E1QNf1Fl{#gawnMCHEjrh+ zy{*r$4|9+o%7Zo@Im~ue?Z(rmn&k3UM)EZ@74H|6m7Gn8c1{fF z;f1@Kjul-%0l+`ssg}ViaN}s76IXVTl_1Hc%#x?f`kh*dBHp~Y zKZFk;=GWZg3BIb04DHAjjZO__fpQuGtM68fo}`RRj;C|W`MG{Cg(~{4Z6{Gu_-P@J zTtg6sma9LrJpiG!nX(Cgi8igO7V}g4&4Fp(FK^Lr66j_Y;bs|u!# z+NKAF1$(g|ZjSqg^hDlHMXfGmJ@y|cP5;dW4=kG<=IHbBa4I7)cHi1tkyDs043j^b zOu1O$Un?jS_BodI%bQAm4|EUCum6xW7JBdcxelw0D!YNcS1{h>&M=uHnw3J6Ek;y> z7w4D`Ee1O5wJaNwO`X*mItTC6Cy~ayOoUKicJAIR+cFBT^5ics^POB5e%oI$aweh| zoHYD!YeRiCssrk{>67uyq?23Ta=zYO4OEm;P-(^kf_6`Yzmt(nYj41THn)~>ri?SS zeY<{LqMQR(hbL>$_C7!hho1_9=W4+rkmDDHrX_SFkS~NlHfp+jjz?<=3i_*@Gfe5= zWsB@g(<4+K&t>ElCCY>O`XHW_#43>UM9Fa+uiWv5*Jw?^ynH~c8^Ob3JgG-*Fs6(m z$TgE#H2NUsH^BeyS8uv88l;N6G=@kLBq!X=~+?o3huhWx0 z2MM;*D$-XlCnM#4Muy&5J@1-Ayxz@5@AW|}NbLT5Z!_f0*YM3E-mkX3lH(32SFbMk zrrhjzUEqDG_ABSZ*w4qA13aX2LN)HHS7nq-mmn%d!&^sgY-L6Gan0V^!*V>azjV1K zW^6CF0oQ04Q*K@7V`~)3I8pWyN43N8Wkw@8D&?V?O_!NK)moC%~!#BqrAdvq7m(4%03@W zq1zr#r?BLy&wa%^DMEYezg?HC<}!L#kZO>kb4`S-9++1^YO^VF0CMxTU!&FUHJN7W zNQ9MUztj01hCABHqp^GcUDx^0hXTiDR$>N?$5VLi0Tq;+*6tm_$1w=VX%2Se?~`g& zYk|p!0?|9G;R=V+??4ErrNKlP84fi61_xUoMo`50OxxtE{oR6KTxD zP+Uo>tfdX3g2%^y>HS(iQz3x_^YQLCtXAN(*u~bGcOK0MIcqa=IANw^l!<0zQ5fOO ze1esMR)2c+K<#pP6e?b`54_{`xqOV$({}DYsSljAG-aUkGs~rtwoy^p2>{<(l6^b3 z^e5koIN!nJ^N5iJNuWD)R_IZMkgzo4bPn+=)O1y}demo%_ns4s#Z}Rc7{kd}@tsOa zEN40fAWUw%7rFPSOk0)&*x4-+HP|JSGh99sfoZWxFNM$KnNbF=4_du zhWD-KE6h?FH3v}jX1J~P`OaNU24}oJwDa!owSc9C0ZVQE)^!!m7gyeUCA=?c!#e>x zGEUr0fw6?fh14y2)KB2|=_{Cd8BEh3dCwG}DDJ~xuJfq*J}ArbuZ<~ibu1ERvp*;? z;)X!(2JCiR0{6@E$EsP#3osgyCIXF%DX#>sKIw(f`o(-QYE=5A_*3H=Uaw5z%La3+ zW{p;NbRa$SDHuqTov}|m$KLa$<5P!XTuDQ`^Wj{iIuJKaDl8b^c2(P0?hUu$dLU88 zK6TzIKuPLkvrN|mABXZkTI>8;#b?Fpd)49&zF=~^xBp_0+V`E=l`oAZ`p1W^y1m+L zQzbzggCBqV)Wz9gM(^OoX?jzc9sCjj@HT_zE7HwRT#O5)aLeCf+~`O3!52dJ%O(^m ziJxJkhGv}Q$`z#$B^f<988*daT0z<6{;8S`D`NeATX=P69q@ChVX#{6O z8_2ZNxsI64O->7n|BP?hb?4Xu!63%L9ODx!=fAOAisqtT>V&T!V+JrTU|ro4@UE@} zu_!{V8m^XvbfQw)z;YnB)2IbqD|wU(gXaF6E}^O|S8-6`w;HI>Idq_!thQ*qU9-I% zwDYIdBiG|}EE)^rF*Jclz3rE|4*S6Yi*xZUMNQ&e{mxB8QUj_8!&!Tm?I)pH&_@|d zGAEtdgW+p`G%oWOsF=09*i*L0l_Rt>Ws+k7gxsZ=ZoK2K->qGds@?b^al2%g} zOaj)ZgxPKUy=s8l*_pf3CRL54yI0*_lKoMfI_7G7OvbQZkwjS4)g!Kl{DSja7khSQ z8-HskJHD5pyTT4NvF;;oX2)AiT~`mG=6)aqS@Q#{$=acSDGQz0q{xKT<#fqgNFQtN zNW;Uyx7LZl1i*3(8yjt%6FR|9y90Kpe}GnLsIi{e)#g3Yk1Zh=jLLXf?-T{WAR&QX zxGaqu%}$c{Aa4bQ4meY+e@U6&vrw-%;SYIP}k zJNy|?lob5nc*2BP+Yfl+PX7`ZGTT!A0iAmzjvTzfpLi2$*Qnn4D&JPSAFt+Lxxcdd zp>rFQ={AzxKbXUSIm0p%YImoHF83RzLRE1&0Xe4KN^IfJ_d4AStw5;5m37iH!pCEA zld7Rw%@`yY81k$4@%Su5{?lWiyc@NrpX#kIu0`1+4T#X`!%G&FPfABcQEAF)A@0^X z-8aMuy|)5+>zfve|J8SO8TeNZ{iL`5BXZS%^imfHv3oU#L&5z5VaohhNA_as+?6vK zRfaFgqFJD1bVmX4ByBomn%TB%9HqKHscKddZh{}SVeDmGJ4280$tD8g;uuZp9x5%%Rwh_~ z@%%h1Q`UMN;*;C~9i3zEL7;BQQ`#5KId^(sXm=i$_#2L{SW7!ao_n#+mdU*(c>1~r zmbn<6FD_*L1?fjOMr+1n`P^7DR4oSfrz$^E@&N@|*Emam8WF7&E4+&}W}IY^ni^pe zG`253QGV4!pfs0v{wPV^AEWP>V9p!Gmw0&%j;*O1Nn$$Eg%QP`38BIG&AXO`Lwro zI*jSc#TkyFzWkf4M89){G0%RYHVO$#Y4yKWr|qdzwYR-g6LhhvniJ8xL$bAOqT$Ui zKrebUY|d$5tr~G-6GS!S)zaeRTEJ}|f!>X>Jjqt#6z#}|HaURC6=p40wr@_JsO_`X zmK!ib0?WPZkS6le9esn1#mFRgFNoE?tI(0)2*s*)SG(&4CZBrDuiXv=NOg*R9Ea;0 zEHUo8C2+JtB-git7pjLNJ5id3+{&|!Cv_ir!x`JJwiBsU9h_^k`T2!$edFl_pP8_* zpBzDm^_U=6c0S9EOwwLZ$83^`&=G`oZSXYcO+p?B=4_t9b(N>d;cxpjYPc7GZZXa{ zzN>1Lf}bu?E7afk`!he86m!EO`Zq^ifN#@HLxZ#5?|xroiKleT9Hw zygOMhq#6G`?N}T=su9j28@-RLta#qz398?joSAL6rOOY|S6nx9lPZrOy!qhk@r(*z zMoiwW&8OgKz8m(F>&$c1!+Uj|!wK^uY3riS4h|F+8z_o$aWlD_fWEbyy4X+lumL7! zRjt7fOS7~A?XFe?r&N!unFOet-#0&I(qaj%mlLdWML6~Ri~I_<+ZJ-8<3}lTrvvSG z(QhE#s;YU$2C;)~T;5;Dkh`Y9CTa4oN-hj`LV2x@gO`)+kTZ&@_HPb4XEVPnYkL0% zfXBu_w~0?_wR?oqr@sxiH!*n^_@JP?b9KG<^Ej;Bcv1f6?7?J6ec|uHj#quamv!Oe zQ)Qa)*3Yn~wL)R{r`1NK_f}khrRAyWPV4bpT4fYDJDn$tqX0PbS9o{aUSW(HuY8}+ zGA6*vmw#MN*(x(BWn_j-ZJe`aZXzfj9xqk&+v}oGw{PtvKUEgQ@K3K+OcD$5YLhdcL4zYEd7;_>|CFjHK&=L`T9g_(PW<2&emUcrT}oz zwZNi=AL{Q4qXk(|YXjSn8+YzKasjrSX0>)5|4I^KeMT||tuL4l`UA{o=>DVr@o%>pSloqWXJ-05Orc;=4qO*HwyLf^99ER4@id_! z-d429p(e#7g$obWl_V^t(-u7jl(7{-8n)KYTjH+|3e3HtIL(d5btwBk#%%{$(8i2+ z@}z}5B*z^teS1MGe@-BLP8`T-Eh4kltJXZtO$oYR!)KXk2Gi#K7wV-LCPo($DC6kK zvG>9@aq?@EbLx5TKTEsd#ruxets2bA+hJrE1sojmt%6nt5LT9TkMZayl4cw`Mid2@ zET$o4LjtassJQlqSG`vQJ3PEzfc2bRVYL;3)1KS%vzh0Umq+Kh<5<{a0xi_$7)5Gp ztd2w9W~<%N6P`(33; z!yfm=<9IV?sXD`(a`94)b(wLSGNd1-yptga9YFJbMixVr-&~(1QlVtKeWI$eG)-y&!*=X^O0ALI3K#Df@b5 zd)^xW`&d`xlLJG1@VTbXO?QAYZp7lJ2~qm|YSQi%4&2+{Q|()Q7-U}MBkFQ0XZO^g z51JcPTjf?nM$}G+zVC>DThUf*K{XbcHZ`y{zW;s)ZVSiHo9#oU9OEThNt(~7+WZ^t zBz?3~)8z(kkB!6F?XS{#b6Z*a8NdfWXemZZ@SFr0prAjBb<{#x3a&qw-mbyKzg~wk z##`4{c1^lTluNiLe)aQi$=}h}q{1i%YEaR&1$fD9lAZka7ESKrIt|)|@Ok8wrnjF@N>NxckD)fkKrpZIA%f`Q64bN#UZo)%`3R$a2_FFq8vz!`+ zjZKT*>W|C)3;N=Ddsc!)c{CUR_W_#;_?}KlE8vDu`mLP+@_P6xQ!k6xZZ4PpjB=&d zAoiSjr&D8kgM)K6mAG&pB}es1(8rRH?U$o)uJuGmBd5Wmx2KCIeThD_1Lrd2^xVSM zCDG7&817A-K4;vBaJm`x;EUr&>u($ZKWMS?LQ#T1oiA@Y$*gN0^VhiIAJ!?DRw)y2 z;w{GmV}`pKdGluh?iO<7mg2Bvfa~I_%Ic2qGlu4VMlwl5pY1Umc1(LB`u{M!P^Rmv zG1PMFvAc5OL{-5)!y>%?_@HWYF=1wEoX~JQu!S?S?>u!;mhd~=yIx8?kr>17@m_pv zn>Y+Dyy6%AZltXr-ac%J9^~s$0|P95(GfJ+x~})sh?3hw2bHalWT{GA&{zW$4y)Gf zpo0w7cnaOFW@3$;PIIdb?tY_cEksbW9TcUF*fijcE8;f^jnGv|AfajgcR=ZpFl`tE zG9bK8-t}C%6;cq})dR4gaz`&ukheBhRy5eX*~SRp_;Z1nlV@cnEM~GvGHDBbBYZna zi{q=-#IMw(2;%SXpw(m-@a3QGF;}mw@uh*VGk(VS>c-)97ZOiZJ1_xQ{YmDj2spK$WCUjk#nY4NP_v3t?766W{_$gP-#mqnrnJ}? zz(pk!`6#pHKGKN?0wbL_b3v5xLfmXPmj=b^PZQf}PBsAZObcx8VkrPsqm4TH!!mi> z{O5^?Q?l`@qdv>>k#w!nDKz<;W+eLnb^f3b*Vx!w z8|6BN48hU74|m&4xh%D87Yt6+Dt&K?0tz+ z)#C#XRCy=^^9C!wWi9P7Hqk52cDXhq(08_cH11F!X~bEH|Ixg)Wb|c`#!Qd>8sh8q zxfbqmmwqjjH4V~G@DGyzgfo;-5zh=NCR{F0>>D%Ymo;Vj%pyJ3+kKUW#NN$T`TJ4~ zrA_M$Mq8lvcd#CR;4>mvYJ_W)WIZ01DHUXcY6;s`8K>cgT`i}ltM#u(@moGI0vGC$ zt_R(vQ9nh$>2ArG7ZqSzJ}L(j`!m3IJoBty*n}!LMO{?buJ;DJ&VWiZcVo+nPX0Vm z$n3HF?mzo%^qMLV*7Y%&J6!yd-AxkT+|Ds|L_b=C7tJ}U+rs+cZVK0g@bKg}y_T^$G+?lZZMmr!&YBm8o5W7399Y@~o^7i!m9eyi{Q8!q}wm2c-BGs8NXvT+Je(~J>qV;me= zb4_I-VtJ<{y218WT*zPaOrWR5aygD#Yv1l6`O!nVX&K;~v+Qf*N1F}Sqr>*OxR~Rc zo3x3Bnpn7~&Q8=wB0&$_D2m017-~eb}5m1h(${K7HI~k)g+E%==$;jtcFm`g! zj2Dvk1s(iwNc20PtlVaKO1E6*-VIE1+tls2)$~4ow@;a^99QZrn{0HQY(lfR;Xa#m zCtyZX0eB(;BmZm&4CSG+?;&W7TvIV#8IG_-)7p@$l2uK=y#|i}z1$&cE~9~M-$0`7 zhGUuOo@cORvDf|^!>I>ooS_Z@Mp*0pa_(Asd? z$He(H`b9E-6mGi>rnxjZYhTxKIc{H1HL(9X>Y<0%ueXeCWzj+_@Z!c%FzPEehBnY) z{ARuMsBaV={sUoYY3=2)n!Y7Wie@Dt2bH%6K523c8t?J0BubM=ooVac#aU`jZabKw zPG;+RB)PE3tm5f%(1Tu;4f+6TADskOyx1^Q9B^-=dvIJt61S&5@MH7)l6s_Uxv{Dt zR8cLP=vKZTn>*4QDbdNw1{pa$Pc`vt{sDuDBDMLz{sq^;GX+}EB>rUDO@e;R6dfiEMhJg4TAL zLFIE4tOAstq}w6Cwe`559`jfnyS2KRY*g;|LF*jVBfMP3stLHoWLj0~5|`?aO1=LI#+lR3$m$;AvZQy%vv>!Kv5rl- z%UgfGIzO~2F4VHz)eBm(RemwEx+9`-3J)tWVbpy)b)wVhoT&xVo%ck0eUlFKhbe1~ z_(Na7)M2ygma{L!7p7%4&$3&3UO_gB3GS!n=k;my-2$PZ4Bz7aHWG#lXu=7bTyD>|wdPU_?QwK*TVcs+0&Uc2~c-sIb%5ay92Ct@#av*|f`43u;_wR7D#2BsjG+q<^3Dpnav*Kjd4b-6_*4P@xJFsRO7ri=RC__RZ~q&M z9-sP}oO06&&^ZEUR$iKl+)Yajz`EPaoBr&<6zvYbuxbS+)0*4foiA{w%rL)q@3wE+ z04C^NriIo#M~PlVxxzw{zXW|Zs##+93m{S6DpED4AJY5gK*_uaL;Ohf2fD0DMfPsT zpReQb5wL0JGX-FSOn%Dk9>n8upI&?bDD48?O|ATI(8@x8o)M>^lJch85SAYXiS)BB z6BXMl;@cCDg?5Dh_Hz^coGdSoW2mmU4#qv~hA|F;ODYauYzOs`Xjvl1zJh)Sx#{e< zzAx~4=Zz1pY+pRGAVVJ+itla*xUH1=)RQ^k!MJaC))O612IYL-x&KOAeM4g7&^IyU zr!^cahV*C#A091YmXi393D}GD{vG{qvkhNMvdE^rhROyY2GL>YNnbVJJ<+&l9FvNK z3@Dx6`qPBaACsy?snU<)V!3EBs9|FBR#90q*{deJE<-t<7nX8^(8 z%bSaeYeiX7^E>s)esNkPDsKF(JbOE1=iCh?}$w`%9`_0`h(193D!)0%ium7 z+E81k@OzX7#=;LXU_z2&;#x_xV&0RErsbC%J`U2d-*o$SZUINT;Q~x) zIM~)-9tlbW7TUKb=SR=O9%vksS+Z14+ydIF^4VjM@5q=f3(s7GwTM?V8}7!_X*s~QpZ0M zO%gde`i_p$RVtw^Etg##;tzf_P`z7Cwz=UPgWJuvc?S}(m^wTO<+MV8l@CH!$`uMe z7u~+VW}oXs$#g+@bpMRA zKJfeM_GKjxAQ^W~&C|0h(@WLC=On^yTkF%hKO(Q`;XG99(fs?B>P&(%^6N~dzf$R1 z_W;%F@}M|1nRm}yjq7?21h?Y$2fNFC73UtSV)?NCu`qP<2pV+T898R&q#U$$RHl~P zo?2*xaKgl>0Lm&b2KG}m3qLtK!>lk$&4kcP)a09ChRlz|#9iV)-I2=-SZdjvUwjqC zK4#LVWGU4S-xWF9fcD2)HL8_q{7Sp6+8B-h?&}n`VbU@k9?3+#1Jh@|%>O0`>O~s) z%F$P%QDC|FV@75Tu9OWnE7V^B&1_{!03WfMw^Rq$<=eFV8sU}gP{Rl3st@|W0T zk8|y=yn07q1PsgP*>T5+G>mpmZh5=nbw%xLNPqa3X55gt!;W5OGc62CsLw^}V5aUd zIe_j9IY2sbttz4>hBx4v+tadui-9Q4^E_#_;gISW^t;7Ry0v5a$I4G+TSA1$_=M?!WH1EyqCFD9gG<0fZb2W;ZKZblCL+dsfwaSN%sk zo-OxW&s`hD0QYc+@0I!fALt49V!Kfa-Uuy(i;O^d$iTC>4n07^*SbooBA1Cc4=5gU z7%;bcQKzA04qiz=p!hapuKXtU{h9l*G*zGsLu+wRokfjk%b{>OgKQ+t1>~g% zd^AMe*^o(wlqz_V%7zFDRbOxmn*ow;X$~E#9H&xE{>>Q+R)t8lAgiIg-+*=aApWK= zX?KoVNr|uH*L=tlmdVW}T5q$d=K8cR;)K^P2Gs7>0k-|CLUT7cxd_`U?lGD!Q$ao6 zyaFl;!B;M{(edm3`%USXjw=0UPPqz-8SpU1J{U27aX|mP2xs?j#wd${)P_^o9C=CCu zb%IOlb|v#uP+Nm=%I=>ILsJC98tIEbebixMs<*nzpZ0nNbYrU7yUR}}Vcsx`Z*kqQ zPic8)w>_s{emlh7dypSX%Kq%&7IYG|1LiI4k+24Z43zY9%-7NaDQGHv1 zXfUN_eH!c0m9V)lAjCtw4kfH?kCmXUm^%*?a}N0foK1sHU#r<8yNlNQj5Bomc$58j zR^KQN+FQOhx80joNv^b-COg>hdW@gE4X&%a`^ViQKNcCcA8~0rJu1Zai*O$&h>FT@NkhoC0^erZuEN;hsZJ}JWapP!a*{>jbQZ_UUv;u(~ zISMvqK|i#X_WUb$dZy|O{a8>_Wy`Dwc9HeDB|`!COE?Xp40d`!L}swmxU`mganswn z*#HJQ*1Dr)3MR49xK2O$^&y$!G!|3Uo&Jq@-~DTQ%AvedPQ4`e#PHI*ApA&=jipG;M77xI?LB6>azN5c$k;&+?L7g`gt?&7BwrYQg=z1vG$?Jmt; z$V9fnG8F`PqJnFM{WhPpG&rd?_*(z*OrM=^QX%JX*(mMLvihqo!@i_&5-${{vq7jn z1Utw4kp?c$|B$6_;e3v%+M*);NfFAlfEjIRS55WKJri3TCXKTG9)+--4Y?j~ zbl?rudG*P@#1*$fd{#iUsV8MDDd0{rwrks0qGtX`#)x13v z)mL_~_YcEqr)j5?47=0qlE8kVbAQBf2Ajd6B_=W!C%k{T$h z_bu;r^{MpK`=#5`tIE4lUSZF`9+Pjng-o<*#Vf{GJ4q z+K)uA6a)zzr4b{lUWns}bRQcX46DBKrz|j@T_1P)7;Zm3DOf`+z@uci z0P4#@FN(gScmgI=6|x6nk%7v7JIQS8PU(`x#G9Tj8r?N`h46C!!?)4fGlWVlkm(F| zVx^~j^`2w{Mfr9h`WA6^E!Hg#76dIp1obC62{{||nJ4=mFvw?2l{0q9eAu|YliFg? z=Hi8*@sO-F2W6ERa&w0Q3Rb#rX*_f|x%o+_3mLk^Cq6agWAR^r|G`%;Cj_$4uUGoW zx9r#p>J-%n5xwG9zQP&s&^dUbNV{a}nQxY#r|m8|j^99~RvZVNwfd(lD>MmxP{|}g zQsGR*t{A;e_(_2nWwE_Gc^0^wweL>v2Y2jL*vOZa59cdK=^4bqetyYZ9^E^so~g-T zrQJ3Ne$KvLORlZ2y`!j{+ZtyFjt_oUh}Ph1>aGXE84R7I!$S{k142D0?f3_1d9Y7o ztbkmfW>B}>npV3>Pi7kTd&q(vxVsk|9!JXS_TWb|4wigcjda;UCb#Tpf>bV>&XLT3 zcLDxzy4;lTE7s$BT|fpjWY@qG7-Zn7BI_gf2V}o{V0ZiusZD7T=YNZEO!a)yBfJ!p z9?@SWP8k$5d)pE=7eXSeN#4MK(;YlyMpAmx>lhx09SVOCM=M1WUo<#vq2W^?&^SWC{&YQ?mEFFk zW)uBa=i0Gas+2T{+WDk{>? zHC%|N1DG&Sw@HtsSyhl28;`R8vSPaHwiTtl*jRszJ8AECoK-`1&~7(DKAst(9DMoe zO!`;F64bcPc)hNemUpQ^;0$QJ7n-a;h~g!Bf}TF?vaCXrOMjm+Bx*~bN&u+veBJm1O4 z-+xB2FR{x(!SbisiROnzX9TWXTwuAevyjMQ4!ir#YBK7KQN{%=NjCX9C1KsS9`B(?G;X1q?gQUZ<1@a9Z~21`NB}!smCAmSBTq zZLFoJwc7q+J`DD!iKJ7E9I!TVtcIkEMDTXEj=9jv0iO-y_l;@u>-F~5ST0aMQf zZ}Ip)zx$OFi_PMB^Xb0F(8tZ6k3NV$Q`)pU|6V=*&6^anT7Ynt@H6=H|3sWZEmR&D z-T&@(**53?sCdLJES7NB!d=i*?CgNdD}%G?o!3`ZhvL<*2i`NfeBVBVneosmrhKpM4biDO-o$z_v2?2ErOoN~6l`mXpYcNAW^dKn4Tcq;qM z?&ejK`!>H@JU>WQ#RogwWdGtIaE7NMBC72_$Ll=V?rox)Uw=FMG&^*S^%fYZc>`|- zhvwcob6extM!~Lo+t7!22^?INyRz!PCPwSi>z6p}&#Z{nf2%0IaQL6-m5VxiUu>Hz zvTw3Hd-xyhrs$X5l(rAqH*TGoa5ORsVKw{~dn??2Xn2M_hAagaG$<&*dU<(m>Rkt6 zxbJ?tRl@ft`4aofUpZ$RBLtS1Wv|(Pe-Ihz@$uPj&E?44mm#0TIhmgsEG>yW&iWwD zWDj{ZX(JqRO*!+{eXHjxlad2xCYoMylMryi}Oe@>2fV(}+)<_bXse=N1Oz zT2s$feO1x;9kI~5*eP4Tg|aQoKNnhd>FaB6Z@m{1|53uzO=~P?y{p5XMa8olpyA0QT(@`CkCb(RnPh0yveoN{Jt!%qjoR zJ9$LzYiQS8Oj@`N3Zbq{{ADDf4I+Kk0_Tx#p~x+|^Oqtv zm!ae~?YD1b|1eE&`!@sV*cRZt+cP5OG-9LJ?>lbeKmNg8Yj;0lM8){6o1AON(?ld} zo8&v&lGsPOB8sW0tdH?Pm_6%Xzo(8Np@!Hw0;Opd#eeUs zq;#)M+ZKW7Uy|K*tfqpt2$6m+sikCJqG(MT9mz3E0;Kab@oMHlGBf&taRV^n${9}~ z_pJ6Hb*jho`<&*|I2qneRpAe`Fn35;d0o>yK*9o)erxVA%8k}yH@{Y-gy4Z$jn!E( z`JPVqK{KK3X6wkO&LLT~JT#SJA$H8EZwMEh{wX@hUt8`K;CqP*5QJ zuW7@jffVHri*wPm@|}ly09wWIh(Y`r?{_qbFIgKWIHXb~v^aABeWpSAOu#ft zAX1YwwJe+(XBaCy5f^-UuFqd`W&L6-bN&g8Tk?+bjLKMwK&( zp2sHt1eruV=^vxAS*Z`IP|mHd?le{Ew%!RVe&`q0WP_v0D;Qo!yrv4Fq5H?D90!51 z`Xsx;H6twQ8B&nLdROr{Ls_3q@wlrdU z@S02&FM0jb*obMY#@d_!CU&?4Nij#47I2(Pi4}D@%uMl(iw%mAXW8Z-7oYnnC`b63 z5+x^?f!Hd6HJMGYl{zn9P@Iqcjnoc1e?bXdZtxsA~zUXvert6xxB z*J(Uk=aa=E!#3R>&cp-j{N%HKF_gfUhL+?VnvG)bF=2Sw-cfsyV7uN3jv)C{s=Tac z^!2f-QE<@&-F>vLvYw}}MKQ#JgGHQiz-}Tm!TrwjX8%W~7FvwZ-$R zd<`a+9gRs4e?&SwUUTen9&Pe9{WZA5#rc7w2 z3h4sZYnubs$tKw;fPzrQB+E3XDqe^x__824O2u*f8I8jBmJW~;T0k}swt=>ssHL?} zec9{(7Fi(nh{yF-Q^V7n`jVF9gH2K{-WwfC;p?=IhXPLxXkKbyF{CoY-ML$hmYE7ge6%4~+2 zApWfp>CCgN^hvwjQt_V|ExGzFm`WL5Bzd1ohPB3swfxO%VvTT4*#}CNDk*$~y*{gVXXB5L~pXmbQA!I8LJYZryY8*ZgVZo2v4L_W5Ca z)}_4FGnSA_E|=xo-16!}K{$#eX5wbO1=>Xk!pq>as~l@6WHvE04S_@&g&9eokBqpJ z6Yp24!jjAj;AyqOmOO%0zNk?7WD#Ls(qGkDS$#jJ4YZ4y#0Q13Lk!~w>~aabS+h|;w z(}cC%jKkW-4lIzU4Yvt{}K$`ge<&v7uz8}(t-NF300fIK0bEa@*9S&|l?qB7&| zs|{c^;#+^t&k?w?qjZ2k1;Uvd`FnQpXwqVsxFf!(_(J(Gg7#hbkt+-Krjl80ELXz8#XzxqrD;QzUzu zFQTVAS_7K7JT_Q2o8;%VU=J02PtJ-%F$t;9l#NFDLqGV`WN@z0`W>#%2U>pZ4f1*i z`l{U!K~e8WGqnWI1Cf1pH7W*aza$VsMjzRysl@)f&B}#82fx2pvj>!J0~e%kyLyZ3 zxs^0+u}1~hw7@cIPJc0@hg!)M9LZ+F_{4P)-VqrUlz483+W8j$^6xr!N|vS&j=d2* z!mYv-BYHNE`BIswwP)|FHT9aYCoJMe`Mvaghz00^@md4vf3{) zlfssBJpgpFbFT>v_?FS$ zuEtpNMN4?g*slZY5F9(i$7Z}K!lW;qOd~r{MA{~Opv12*;FcaEVv-cEDKivrt$se~ zOgq%1MV>5?7*N%x3Ll-Gl_R9(45!KzMvrNg=buK~rj7pF_hgWK)U?ZvG7BG4;#*sK zrD8#l5ovPSXAq=%9{qSH#9IWu;CnqKP7c_%UNaiT|fLg;YtJIpB^M8?VLR{ zycc=T(C6}bIZN0BACHG_#}6<6XdLg62di7TEF+Jz(?C_sFka$>?D=l)gBQ;XP%`CH zRF_(e=h<|&S{xnNfub}#!HtLp!U!nVWGwXOge?toKfOXj9GdBU364AL2x*kEN!T~5 z6rjDPYgcH(H!3D6LR*K)RG5_N>ahYbmKEaITALFm!*)gq!#32DQIdH z*ZfQmL)u&%8Iw$IVzuTF_ZtJ+NvIn%HWiITKS2x*ITL>KuK)z;#A3sRaEejq{4!cg zy1QSZV5Ndv@hr?8xDOv@=dDI(**u09`O<)?sgfBPG0V3tPHg&J<& zxxx6={U~T=71bxiRW{W&E8~Rs*S(G(s&gTJ#$I}#0w z@{C4N(WUr8>7DENkezo8z05#AMV1U_-H*`>*Sp-7XFTjiWD$wo*y{|c4Dm69W-X;k zI7u=sHFeUPrhcHCw?R*SrJi>6NsCiqx~L{m5I*@xsl>jG$ta`yrF#ULr&7|(M||F@gb!MoZ>pM2k|RZ`BJnH5|LBA++hWc9I9^l* zD7~0wBYw&`dmF6kaewHyfBj-YlP&)iEa_1sXJm2w6^+p;NRdp{j&{1kFu%5j{!U^* z{x5+I1v>qkY8q!_qhvh=k|b);wc%&4b((cNabVAdydw(#unnkNH-~^FVH=l`0o4(X z7k4#sjyE95E<=w(@Aw$w6ziE;q%yyg?U}Rj-~E(l6meUBFkk(-`4&~i(HtCYF9W45 z)e@p*cP_<&-TJEQhF-rnGTK5X8}TjFd3m5^on8bz;Aq-V3C)DsvO{KBIPD1IES%GoJdF zOk^7vbx(&GvlW?#(t-TZNfz5So~7wKsb;xm(sH(sX2+iMRypvq8%yL-n#&(i3KuFI zQS=zbLF^uO2BMl%i`{baiE#mx%y+m!!$e9Y+$-P`y*fwAvl?W;8s?~~;+u#4yr4rP90q=K*^nVvdkPcDN~)9z{o-sJ4v3A!UzS%jnEL>UJTh3g3`I2 z$|kieveB>2$|e#%at(ktVLR9aVa;CAc(OZ&L*zr=M^&#;uCy6V_szp{FG~dOD0P-g zpXO}rdvx(?Z(;s(Td=hmk0q81v3#m-@R1>&H>KCh)1^E{yts?>8K#m+w<=5e%y=j1 zWmxd()qf%q+RZKaz;1Xb%V&#K)~m$m`nA%`eaRIW_oz$>u@m)7DbNXRlL?I_k0}@H zk{zOUIt`L&H*BVKUT}9(!H|A2K7F%}5y4-Z0W8Wp(e{tH=91vYZGr+y{fxH=>Kyy- zRm6JJZBTdTFPiAz5E^oQn2BO6nN5gJoa)sgO-yqq2}4)BucV&S?c`+MM|o<8u^;kU z1j#ZAgf-!DOGeTZ75Uag(@ykg!^O{(tJ_S^%w@u-%rz9aX3XrT^ScV@al=F4F4+X0!JYgi+qmk;dIkD%{qtM>W7|H;3?j9fv={QHqI*n zm(EoFo|LPrqDHKA=G52*CV$#bI4+<7l*T1V&%E=eOYudzsI=vtl65L3+=TepjK!Y4 zKAeuFU^+fardPIJPsyhoB5<0*XT&@+QdXGFRI2} z@fxbpsEJ9?7^)eH{TK5m<~qexX)NAFbM$PJ^VSh16)lO!x<#DmX>7w>2F`e#K~1v* zzJ_%E?F`P%$5V@wE2lw(r@G3fUg;qP&7Q2oEA5g3D-+GTwwrzBN~8#<{xdpn;t!5l z9O*gckxXo3nO9~`7{1uac2UI?CdH)Su@6$x3)50W{dO8#+WHOGD`xJAd|WXC$p^TA zD#Df)g=qamMkh+wo$Fe}_=iKB=NO>U;=d{2Q5Yu7O27#hGy9J!u3&PSMy59cI3XLC z&}?(AY5}lx6*-=_&}8mzVZwO42^hAEeylny-Dqx)aOH_<_RRaLKOwTFH(!l@r{eO! zLD^dRSDpzs+>M|?a0a@Kf#a)38Rc?@&CpX^OE(HLN22DxEC~rze8u{6E}-#mADpMH zgjUTIa;K8dAJJqMO@U9srFpaz)A6Kq)qf0&ff77ntAKhlTGiY2g0(FvXv@zME4KQz zD|Ou@e;iyfuIk}ynj|Fa*k~7085>9MR-39PuLg@6(});45^`__LPQ-z>s@OLg?^Eu z?PN188`sy{F*p+EADwHWKK^TJ_~j;(VT9}3(%=fY!`Aov_ZQo4j!@$oXAFjs zod4Q~-w*kGmyto$ZJF?l;9wAuBuFctT)qOKHInGS#4g8W zcMw*30A{b0ige!q4X_}P@dx#;YYs3E|KyfT6QH+Vx>-n5v5%4S)dXxj*1wm~?Sg!6 zNT~|hDV0wu2tMMfCVav+vZc?g2~eSx-b$w-Z|Pp20Y6Eacu_6`jVahSq>+B&4gfPD z8kw33Pif#RqQXmBE1*;LILey56=^<63rj&k2$o?W(XJz}Oe*I9ZtmR#IX->D8m{R@ zr;)Vm9&SY|nqwICo^hMXot9=IOGtoD+QwsBTXv=@< z74svsuoq-BN5IWL7R1=v+B{Tw_%Q;`rY7C&8keH1-_MtFX1c?wNiAZvVDiAc{zOH* z&+Zp*seE-<2pYW;hngk|N{1Z3ogM`4`K9!9k(9B)GpE zmXCw6C_zun;$tl;+AXso(%2vHG~BL~G}iAk)#e11i|cnxSSfD%51Y$R-OPB%(o0Pl zsM`8)7~GL(!c|YWj~u3nkib@|n8j(5=*W*{OZW=|n6^b?8y&{&Udx8}$2Eyx=r@Z; zHkq+|L0kE+3(Tov0RC6CWV))sQT<0HKc6xuPqFSSN97o^O*~b22TkwEAfNl(6$t-j zM*V}+r^S9DY9tWN2gYMW#WC_m=W=Uqo9I5L*ELh~6Ew6~8jbET?jalkO5)><9Bbo8Z;U^b-$97CjnzMg?C; zUpL1N5}va55r9>u(bbyn&yiGjxg|s3VCHz@ewB1o7B4^(Uc63Y0yKi%cYo*ViAyiz zQ=wvveOnx>ARHqC9yHFbz};%d-2*In2&)-lZC5WjAcmX;&aD#Bbm={b2GW^>l;apM zEse3e!HW&21Cz}3ygC||E~HA%h=4}eS%i?AqLlKqpfnwX;V>ugUwnv$vxV|nY_mA4 z@T7`dTDWRY{W?hYgjxvJ zOu$7lR|Bn9Y;lh{<}@}0gMe&MDIE24hG8s~_*zmNWzJu6=SExEn^@+Wse4E`i+H9U z!NU{enpBq~>MjjV)QG_N3h}u0PS=4 zV0WFrglGH3d&7;wP-&BsGO~Hc8i>Jgg={kB7On~;@E+~(-_bX&dTXWv#nj**-f`j= zbYUd0&C*`#ZXk-<2?B7UF8~;(3%##8{w++hOWsXCFE$dW4joD491 zmSN75(gh*W2`lcxh3Q@LR{>v8VwfEjU`n()o_eBrV%Q(Cf(=G0M_QX}qWh=aT>`Dl z1}(SEdCWfaq5%aQOQt;?*jjnlb@D*QNt-HX!d5`@OD*Hi$&L2WbUDyV21HxIp2X83 z%Px}Wm11>X#=m{)B7y`6kxDjO)fRgD$-6|VG<{{tCnMAO1OUfEI1D8&rpwJd=?2Pv zLkH&h{Em4p4Qb$65$gpqc@aooi&%-=2TYD68ql607_2;>UkY2wX5qLj9e(^(!O1Al zGHUD+{^b@FA_pgLn9G0E*A96o<8e2S!-Y|i2u84f zO)s!kHu^s5!f4H=euN@<6Fd2+n13PLnNcJ*eYSR%Zg!oWj~cY_h6XvI$;WFrG=bME zA3CwB%R*Sy1$P!OS@Nk-ra+8DnZ`%8d~5IuTD|xVF_zb{!P1n=CZu+E755fVRn+8r z`DQ7!L;3rf`ri_`{@ru4)yrrkGNw=X?d4v@U*O2WIaIE{|A;EVTQpe;j49Gn{yP=B zJ-`9TW0WUJH<22aLk7(*g7z2fpjmF@)xx@@==fiYxja;e|M07&*jsV}B}AjKXy9S9 z&H9p{`qnaYvy#)Qq6y8gx?;RFlXUW3Vkz?U8)`b13ZZ`2d#=%pQvRTxbby_*g`@R{!^{yLa*BvCk5jXJ(w;4jfIzu zlH+#(WT{Ub${#sYlb!lDCH>mPxPeL86riqh$+Ja|?CS3C#dRRwE_^7)jffku@nKUU z=8g?rYe)LU+lC_|HE}L3`_hCBU2Pq{z0CBmg z#*^WW{J1X51fSilGM;H+g(D;BKl-YY?%_{k`Vz!bcCQ#FeUYCi_ba-b!(aZ5U=!sZ5z$-m|BYlFUY~Qm~xJTcOfkehZz&| znYi?hpGSy6y6@DPOnjcYog3myi3(IJ|}u& zZTUiuG&pj{T~byg<uM#{H75dJhiu)RL{Rp{{=4)u`pn($btrN#aMr zAs_rg^4SAxo+Za#R{22NjD&APpl;k4#MM=cUa-lR3h5rJ(QE$94^C(Maf8m*kn`x| zsQ0M1PV;k4WqKUNl42%(#o-pID#@q;9rc;w=MI>QPc;rS-_R$@XKjs-tm*D%ihfkh zh^YP+TdRu|Cq0N2@M;dAtmA8q;RL1BWMz-UB{N_U5l0lc5A=U=UG|Wd8$A!GUK##s zefDrqxi2!pHgZ`kGfxQH$Ry5b7;dXrI7mM|#gXjckv1|M%`6?mQrI(~E`IPwYADx4 z%2k7;ICO4pOUz%ukDv70V)#Fu72>In{C|qvvJzHMcusPf*ci)q1M^hQm!u;$cgqZ2D;km@km1vG)wr6+x+j; z-7C&VH*zF@3@k4eizCT%CKz7%l^8u|ozetr6hDmb&Ko<^;3@CGn#V9zbuhk)7t*fJ z1%C;s3v!~67nk{~qn}&s4i~LWij5I0c-P|pmicY7M)6@x1Yk`=ChO)#nH2C)L4XqH z;l)Ru*d8U)PCc&YB0SQEq$hmcVA!j|J3hdsNCA>^ih&Hdua*3jkzP$r&reiH&gZ;* z+_48?fG;~zqjH>{Ik-zFn!CcLs!040cX8DjjNs`hSj*0TP(rnL8Y1-g%T^(U^#~a@ z2KT~>(yK`iJY|*>0Yz0`JZ{1@nZAv5g`FktnG!52zz~_t`x--D(rcFD;Bdkv&s-6M zd_ckUrj%hsMh(x-%!cf7ETpxwzbsk5VB$QPPP(w$!aBvl`k%L$X@BhQsB9_fpnN)H z)iQMP<1E)Ftf2tBhmrfh?Qj zWJcALr*7w@;|jvSx44NTzox3H6z63-;kt5JI5~eRqRrOj#a`NDmsnNAxbT^9S5At2 zhT^A5k=L8s=rG~?astdc)E3S&E-=Y<5RNW&T6b zT-JX|+e&WY++g8=@NBFnCPbV^h9{6EULuUFuyqUT*;#@@$+i{_l35J56bK2-x%;*G z@TsmEbT+_rRa9uHJWN+-!d#2A?#Gsj5v_r{Z=>@nA5_wQwf3!`UAKO(?#O_wGzK-fH_iWOVCk z8Punv{6)H|=+qqSsReZ6zg1C zxUJg4jF=#BS~L|z7MbY$RqG~6FHdqkb?EpcE5@z?+y=_2F=k~h5>D&o7ou|TYsyd0 zX?(ew9RajEVG7w-DFYq&`qytN8Bi3tEAhm2&wyBD^USrzT=;xuUI)omyVhH86ZFsR zjRUtL6-2Tudnv!b74REnx%gfM77J|Lfw{H{*HQ5phibc-jq#st1BBa}sY9i{Pg!EX zd@0AbDSYz-8++tppB&GW$vT|t7ZZR**s9M;DMhc;&1&xq4@vdqf@|k@5fp#zMF$ws z^PVFr{eNyEj+B#=SqdK7qY%Mu6q=f1U)8VmQpiuLu;(2>65}x<&pE7bz&cT)UG+Lk z&pv^%8y6QgR?rI-q-fT!x~`~#_1vb@(&?JurL-JYsU@eRozjYEy9w|uqj(Hp`kvP>9(1b#ceAC6_md92Q+ls ze9GH-#o0=L#K~urq@#tM^jvo8JG0GF3mOp92&7=o!6X2xfHa9pQ}=I@v@{=;S=#U& zkT5T%H)HD0wuK6}LVUGnzkk^0HzWwMnaxUwNj$xYjb%7JIz6HNbMuw;$o%P<6jhj2 zNKag>4Q4BpOx@?I#n*7JoO*p|J8f~2{>T9cffVrlJ0{$KN6I5_&k z+$lq~*Gly0l~GG`eWmvnn+Wv(GH%t~nX`P}oE^6v0WC=K>ed zgg7^ACrOfGx8IwkWVx1T*k9I_zkl`{!SYu`DEUdUu34D#^3Ag&zFYMgLK@M&{F`5_ zKJ`tl4;jN;iwqZM#_x9aD7NWWN_viTs%{S2GJOPwQabx-p9)((yYJ0;$YgzCkCRAa3y~$T+eYWyr3<#Mq-TCiP zDqGx@eC^|`3NC6rvH(p!^A_-$nm)$cItY*XY(kO?e65H2qGF8>hOxPl<>j~0(*8+& z#6#x|svU;VE2a_onL7abx6D)T`yw;V*ooC-Bj4ot&`V1RsZk{{wj#&Wbad40XBrYH zkBhRHX+9A}gE4q=%aE{*-Tw300BZSyhCckC8^L>tiHT=@$;np_Uq!gz`PkEVk{kI| zlwJS0JeBLg3`lW-q19YpI`fW#$Sbd~HM0DHz3%c*=siRoav_$Unxp7m4{PuvpCX0! zy{Y=^D61mytA^ma!IK*HEA@N|ZQl(N<=;NqZ~CxbQ7(_Jc>XquU@1wq(gl&SipJM(KG?dEt_*tL<}U7nSEok)m1Q$SnOQ+;=W?eaNaQ^BIQ z%f_?08L|MIgNRyb?hbVtX*+TH(S*sR8glL`1_ItMJ=$o>0Aws>fvYuLNRi4gk3>Z4IXRFPlHlPL{V`ghGgAGrja*+l+I{p zAU~g@mL&7?w|p1CLTn|gkvX~|(Xy^2X}W1O1V|$JA~wlq>JdZHod99#&NrFMIrmdB zE~yg|Fp_?xoyKPeBf69IO4EBzVykLFF_*cZrtc;As;rwLk*|&3Gv>u7tFkq9)Yt#s z?F#+4g7-2p^iBEN_ull6q0Dc3?_V%4K?`{{oCiE_Y^}RVdTTaLc^h*}K3}Ql&;|4Pxl>oL zd{et62JW?MI0lnG)3U69U4CS4(|Pm8G^1qyLSaHDe#@_O^|jZg6urN3i;QhXnD}k0 z=l{d%#8lx%ny5Wx$sB=E*?iac2d;lC(_o`yMDp-DCubX_L3TX^VDTO;x}c_F*oeWp zxkc<(YInQ7#>D;h-`DP{3I{#H%cj89(wtkslFg^qjJM1DO zcU=WOftb;KKF2YlyGN5==xBJV&VxRUALL`-8M~3 zUfxktba*0jB-%>JgRN}BQ|Z)(IsVO56GCDOq6}f15TbgW6XyUbjYk7pzut_|L{K1_{MPVoZJJO=J7ri<@zs zk+_qaLv-HLKh5I$tCuk@x$D(u3heF%$4_EhYr^MAW67#JC-ZdL+N71G!Yn4D5&^G7DtZ*Y;-BvVAh} z-VN-kRN0*M`VY}>ue!&H_$=n$_n;BZTDL#6Ee8l%{cDCKqo&&NN z?cj3;YtfR|5^0$1Qma(Jy@jqDUF#n)HbpmLEoo1(UQJ0e2(zw($>VRuF{OaEI0ohi znZ9e9u&YMjHYjAXZ~=xpC)aOn+w+TXdxXQOpW7GS*-s3i>$|N#qkkXc@ve(hk-CJ% zgV8D-(`^eh6`6SZ-dz3g>~76ak9dIP1m%H4qAXBdzHNz9M2j}~I?gqY_xkFUZ;DZ0 zuGc*y{|m#vl>S?PzA->2c;8!wJD4AKZv0Rt*Vi(;WU(~AR8UItbtPuSa-=QA%JJp4Rv>|LCin+@!^XDEgI7i38_W0neMOS6f1+ zf}(jv>Y{(2Pl&0dT(F^_^&$=he~XY@ZI%ZWmwiQpM2)_m{i3~PL>^p@#x;tr&I}GW zoHhBkZ4gJRJk%}ho;RbOR!4~WwjA0T7{~K(tHgNrZ^(!vR+@hJ+Gt}mWP55G^j;-n z3_ZSeeyqNB>Ag@$X2f=}B^RXxyx^LhAs=}TNo#giQc8hmOzs49)ru^{ElrViF}8+9 zztriiOFCZSF~omK%Qin9bV1ehCfN>sYec|Je)=%a&ObWx=BcJOxW#qk#h7&=G9NXh zWg?pAN*jniW1ekinw3VKAK9~1JIsm90Y){o4(2}nK<_11>3gf*iksZ-gurOlTfY9{ zCd)4nUiTX1U%#RWxQzgdRHW%RS7d0cG@JEgQ4G5NnOIi>F)3NHkGSDP4*_+bMjE4j z9#$1=%CzSj-c@mxCvyZ-xC}jMzg#0z>#ULqF=Y+^Db^36zAf}X-5fx*?^dL{r+3e+ z{cDaRo1vm+Up3KokDte&Wi%tU>a`3R7YfKDqdhuiBTNfRHI8)q=^cm)lnbjYpau5b z(Ei^nlX3wY^#p1B#6}3b{URLWOfNol; znuk6o6G%-FCRd{hPxbn-P)Cc6&7`F~RGp$%se!x+O17hs9Ec`DWrsM?l7C^@$j}qRNB)1d|Uxd7; zHHfIGj1|731DH##63sAyq{R3OG$&D4K|#RgZlK}TUQ`XsiI=g2UW-psd(;k(3}6Et zvJU@(Pjwa5(do*UaxvCBd7#$W%YBdF29x;dffy^%cRCUpLcL6V~frhkw4Fw(-aJ%bGcme?y36o zUo=M2KMlH;3g-TmybyYKgJH2e(W8HeR}WFUH8*_g;o$BpUg8_&>z!iGtJh*^$>z83 z&M0sPYWQ+c&o(veFIlol`{zm~Oe(vx{IAlPwx4p`MceDuP57{z9KWMGn5ULGe{|wQ znq>_$Bg&zwZdiW!T40zfpkRtN;BnD=aQ=m>7FkW^iTgU2%ACK(e->7Y3Nu9$xfpHy zC%m|L$M%x&)0}}DiFf?|r`unjEV+|vB+^Aw?0iKf#ok!F(CZkvjNDx_zNEda(5FpW zQYzdK)h&|Y`2v5S&oSe_I9VvK;>5xPT}*!#QZj z+XqK^C*hK6)xySHK$)KgOp1;2(*^A-lf}C7#=fc1T%L15OsEWr=W$IP(c$c z!tlUuEvk(BaA7X{b60dz7iKdzz zurSa;hZyW7;wum=co)S-=URIXfUj0>K}QY(5Lvk#gMB?GQIxRL;_J-<;{AI=|JlDX zIQ(jN`x-TTfpEWV?0{J&aa=?RLg-p@6|etz!~xxxN{i@6CE0~p z#6UFlXNfg1KAqc@X$@^|{F-T=e~Er_uJZ@Jd}aZ?-myrJ$33vcZU=D=KFkXzIz9vH zLJn_>S~~Hfu>-aPr+vl}{p6wa+;PopPho-7l2)6k;dEl{BwBhwkMmMQ#-GKonGDqs z1(UeH(FlZ|blFSW=Ca9lC$yzg{5HCOKOB=lf`O%57FcI7=DbZDO*w1Eu^!t>K-G1j zB%qsW#;KZ`APKelI{p&|Zu1ynuA9NK7dIx8F^zSi592rZZ_)xSN_W3?%*<=pRoqaA z&rDvAmrQO;0&zQ+Sc@HvrUQ(F^#18Bp}I3emS2-cS}SbO46n_DVyOuKQjiy zEZi-jwK1XaS65X=$kZ+4@o1jPb^i++O1>NtmwzUEtrIx>+rB{ynZ7SJAK>b$VrgX{ z0S!>puZ>6vtUqy{c;h={CT>AXA6#x@XCfh3a^IlUQFOiOnMpGlv7;Vu;6u>)Y>&t1 zM~JrA8WwzMX}kN=9^d{fB7xZc@3fh$R#dHef0o6HY@5@x`d{rRNYi-zFCJZkv@A%aWs_WTeSs zk&i@-Uh%#ls;v6Rpp@DwId?PPzT(8zUQsumCu5suu}OOqaeB>sQ5be~@Z+I9Q=jpo zT%P>-o)hs?iV4&coN<*iE@_OhM^*ZUoa#M|!zZKlxv0I^3t^O`dUXtVkHiG7`zy1d z3+=_2xhr-toAR2IM%v@S+m!ehJ*-Kn^7rc+sv3v~$zPw;Kj+|gpBR0y zZ(4FG)GPf)HB*KHn~+!bF+0rr#Nx8L%=Nbv*wW*R1KrD{efd{6>RpJsA$>`dZpDG9 z%yoe#A#m&3cu3#TH>!%2TW<+oy1rdq%oO-9P;vVCmJp)&AL9} zmQ-SxxODWDTjyD`J%p}bRhau^Nq>LhXZ2LAWJa_#ytR%>IA)|?+>o;st4I7a9FwQ# zt_IC;&$#x3a0?lCnCp6+$1ncLD|I`o+!Icb+U;mP*7#X5Ewpu&A|u4~$Jd;4`(*7J zq^EwjUAW|qT5Wag-Hgc5DIb>@m)c^Qy{$T=ldMyt!-v_X&lX4jA)Jv(*)5q}g|CA! z`*pv{J&zV<+VFQ@FFY6J$bL=y6epk6GR5lt(CQiAl92qaoN`cFUraic^KBpHzvFfjjNloy z%v%#OG8hH%fS$yBca_08cn`btx#`LC;>k70?cK4l2Gffy1}gEo6DlN(f5b>IPn6C3TJ6Drf%qMzI zc2>dQQrLGu)DJBhhMx^;a}lrhe*+z2V{_GWXfpmSrpsn#-!CjceU_vT$3Fdk6rT?F z!^9Iz-c(S}gStxXag6^K=0pEc{Xf;`R?X3pq0!s~7Gxzsf}=fpW1U(^S5I>9PCv;# zA5ur2FRWh*<(m?I=3$NqtK;)S@5`f*BC)p3n%E54>fjSYJzIM?zveTac4}Nf!G1+k zYik1UGjX)RuFBdjhHo06wl-mh=K>-q|NBa=S+gs!)yXK?d0Myo?|bN_(0t(02aX`w z&r^w>G%KP6E3Z6mwumg zc7DCd8t}UF;N!$exzl`-W$zZ19;SPfmfNGShA+)6g_xaRj^6Y@cI)#4NkD9${|OJi zk37>0%#A$xVaa-#QE$&kn?~NO$ky7t z@XBf|uM^mP*_}M{VA3!TI^)k>YRP|pyy1D9%-w3p&91$P13m6>#>?F&8um}GZ^H0B zDQdUtU*8U4tKggy9gt?LFm5TLxp2$yPrJJLw`A(PIh9g+{Rwn&b2eF<@$UDHg}T^Q z;=PZWVLw@akt*N3O6Sx|3nX2swqCO%E>*sIODxq^-?p%Wy|tmYi+w0{kpX(IiWa%m z8Brt{H0h5N6Pr6DJAF5_hJM>h60_LievlK;J8i8A{7|w6M`*0O}-?sJ)7TV#45xgS$~{)XHRs&I^VlUR_KZ#An#5`++|hg zt(`WbGG7j8qGB$$^E%o&&pHZ2VzqmsKG@ActW(_Jd~8jm2}*Xzd#6vZeD{QAOB;hT@3f6zA%<;x?3tX z+ka9h(XohnkSPI<-p+0+5fp|+@{qPyZS30%NcWX7|RcFgd z-9kABNuO}D4?a%)!7T`=VCSx-Xku7R9{=;1-aO#wF-nR5>#6sB3XMYq*yZS|`>%UG zX{cgaJ^%Pg)rDV}bHB9fTZ8KdyM=PWfzr9};vziBE_uB z;Q25#L=9E@;lJO##vfnzc-$11BVP`DcX=B4Ngdh{jIdhK@G^P=Y7XM5_N3EV^P3U} z?QdD$u69=*dPn0~7|b4@tuQx4@85c?4l)+9TuINIfjgK+?AF=mEqaB3Fe$4UN@l-o zMneA=07pQ$ztcHE$YzIgb}fE9FVuz&a-y{kceO8wc0Qva{?vc!>iDx*;O z%qEBnz8mBSFq`?b|F;9aDkIZ5<%)){zzW$@wGN>RZ|cq=QbZiWkU&=}#MSpWC^4=u zA4y^Tv2NO)C8Vs#cEn9@wHu!AqGgmOcy5JrwSSqZ&#L7#i>(Ccm%Asmgny!BS<8uUo#8jNnR1ducS#dz>IL-`850Qy zwe85aCNuguZU2A&sn)_^%)IF;ZVKJW7`Md#_030HN&df%<@K$tN1LDH|4;F}2D#NR zJ_aQjU+AJW$ZICf8juE^od(g2{^myg&)OHfeBt7@IF>`#h3otn#5G{PG}MK0d){+% zqbfdZuDucsCvYo;zB(*lBVm$wC>sWWRkdq7Hj9V$>;<9P=AjQ$m* z>@X&uRLx0>uV>hiAc}^rYK*tzwiljljjgchT&i8usvg@p4YJk8P886|0V;5;V^LwI zGC7TtG=TbRY@}Jv*p4QM?n&GScMKmstUauT$-+xtUQeo^hAp>7FA6{m`IHj~^2(t} zW!*n-{@(3VtyvCeK-<=NR;n7zKl&J`KHQp6(7j0$%qjuH0R75;aCLo{cGMi~Gr#_5YEH;i4aty5UR(glUYP||6|e=i?L}I{TV%I0_&R+M`>g!JHnyl6}FutN!5V6yEMI9O8u1|jdC1q*k5vS;ic7(KOLFn7;~$ZBdY?Y&iyCUus7mt}o*BNgqk z_KCF1g&!vN83^w#-I?FjOUqF>wsY;9#i+;a8_Ec$Wux+&FZG6)C6;D8j?+=?CH}K z-sp{BEEQmZhLZMIB+#XRr*8z~seri}d{0>OH=Oy_Gkt{om-Tz7wwLq_(T<%FJvAL% z3NE${rdHk=J`K!qWrABvm6+Z6&v!OhafjPnrapvt-Umb1?!w7?;reD2fW5r}-3X%S z`8U5!nFsK3N0KZU(T><4*|DqDDx0DpR*Z=?CHDxXDoi|OcqVq>$^CCgZ9>m#PGs9p z3GT>Na-1O`L2MdtLUAbvA1S=2Y6$-9SRrsx+6oBLx8j2p4T8HxL8FGpZUS+Vp$eGQ zW;7IjV@*;N^~%&zO>lzIj85@=DCE>NF&|wQM;q2&Njir1&{A4Lf>lw zVgEQBibE1ZL8iotu8{8|fEva`iw{$*oo&{R>}X~=>k{Y~E|*@Qd#0B_P$50p{N{dL zqCY;Z?%`3lZwy<9yW5%yL(4T1ha$GMGfCZv)8reh0H}yR#DsQ1(z9nn*3Rn5JYw8) z9Fw#z;T#VBNKnHafnFfsUI#aC$8#IFhs5p}at~R9dkW6<9e4*_2KEq_RQ;CR7EA zSvZbFD_SR%MoA98P(iXm7~Ff>GRWw%5C8y%_S~GKp{AC@mdRX@DaEZ%kT3EeS*8bs zW$wtDv_yYeSI3aO9kmR8IlTFGh67M?aPw=xG*+XeX}y}2UyxcwtE?p(wCiO+;0dCM zOH41+LBSCIx-dowO0fW&SvK8c()}LO+pLn5rTHNiPAC=cm#%+mveTOHjChQp$KY-0 z$uQ;p#epck#Z5tlQPRHzUw1*54C-0lRx((CrZ#ll;!#R~fUbw-9rU`#I|oL8zuO(O zJI|_%2}k6dS|MVxOTkOGgX-;og}Bv|LZQlJjh3`wUS-TLEup>e?jJBoHZz08%3e|! z(B=fp0L7-17WZIaeW6Pxw$elZs6q(7?E6ZkBI21uneTOmwQt=}v z7PiErT9u43h}yqsTyDRIh}gqKfaJBFfZwWP-X{*}R0&i#M~Z+Yi^~`T*gXM|okkKY ziVRaal1L^gZZ{%%mJXxvjT8eR zC_-g(vH!SHEk8@&XP<2Sq@gnoo2Cmn0z7_J^#E59z2i;?JQPGA1)&jH1@UY_6SK{)7Y`SY8%1v!h}( z1S5Ypi>Vx5l~pn@7sMs#|K0KO?(k8TV#3#19JuBOr}-{JB3trtTBh2isFu$okX;h4 z-kGV&LRGc2@Gn{754}ocfD*4VmHQ+|9S|8WWmasRldQExN3t0E3!?keBIL@HMlyKm zfT@iY^pJB8!gi<`V97Fc!LfeXYYz-L!e@pdsky}_yu-9|Q_I?t9XdC`U6S@YgM1=g z=sraSD!i5K7|IUIaxMTfqWh{PQ5ddtN*Og#fCmV^iCVq@z}-kZ%g^$?RQa%aEF|$+ z^^Y#|%c#wdL4hj;;S(}dK7n5-dkSyBjPl##iGRVDv2dm3RGXwV*lB#nTcl>TAkT*N zOOk6?9mg4&C^2giq?U6N{f3uN#ZoSs0uDTM{=QZg;Ok|%qaD@*eS9z}RxYpD=Jrt>aygFc@c%%59Y_PA8U+x&~Lg;4+7@ z@_}#7X4F?;fm9aU2JsNDfG7h~yA{Dgpknmpu;WHchq%t@?L;*&v84XgwZRv`q#hT< z+Z8@C1sCBYQqZ}OGZQnS@;0m9M}I75#G6q~jc#7A2`E(Vpt_0B{XuD}XI4eo!TsqeLSjp1JVz}PO2 zz~r8qQ2Z=7RsbxGhL=Drb7b-wT+u7BeLEE~9P+bm<-)JSx0IaiS)lPm0=lE_P0N)3rKE1|8vR!Xj`Bi20yC_&!G(WZzK zco1heJ!fj7{?WOXICU{hzo2CA<}LEof}4#b@?BRo$2WO&P+i1DOk-q^<}vlQW~L|Q zI0--j0$R*@*#iv`Ff!TJDOghzLM)$#X!S-cEYD(v=bu3{PmyKeLp!2uH)kTc;?QKLW*E4J~g&X(k`9rW1 zpzN8bou%6%>3P9-d^bJ!-la0M^NI&SZh`o_ja zMMURo7C7V4I@|Tx$V6^)_Z%Fe9&6vge+q-W<<2>%5j<*>Arp7HII%QYgkQvNHR8(l z9HvYg!IGkW8kv4UB*EG(2_;zlCz=ge<5(->+7uq1Dy2n>Up85o9CBU~X6 zQp&P4X{97Y#XG4Ce1?09+U5Nfr4_rl>yS#6OqgB66(olKVh$m#r#zxITFxyJru$uN{Em1B3!(DzIN* zCvcCPcY9PNaSSQYLKn7`zF?R4H?uR|!EzA|GN2Pbc-%26IroIQEt0 zU<(qiXK4r~Qcte3I&xtymqhQ6U5_T;RLIruTw?yHQvG|3h8NU}@Hm86kmqC4`4ryw zw-Q@&a`P)Q_57Gw?#iYZG%fQ66CX zqqZ*F@Ll|r3H#2s1b}aXkb;NrGwS%JKic$=UmHiU^M62f3PRnTNxScxkr(PLD-?J6 zxu8q3=>lEE?{TMOmQpIImO+wTB9*+smcClI#$E`E6~uZDYngJnNPxGG2_sMGnIgL0SjV#j=!_|-#p zmsuenlw1p$l2}Q(NraYQ6dZ8MVh|@X)%z4nK`1%2l}!3`RQw_#T>?+O^pj+6A`Oxi zk@}~aDNj^+&>-GrleJzR3}}{j1d}MZ91!Vc?<{#00pO5iQJ-1P1%9<*nx9LLVjh?& z$&1S(Ldf@^mT=ecVn)GdnFVL2Z?AStk04C##I#-FwEYkQL;}{%*y^L-s zy-%SbyM5B0Nu}ss1$+$`&q~*>BHXpWoC!NdE^<2+e!fUiopSpc+bEX{l&1IZD+f)) zpXt_k#?6p&eVicw^WXpYr`Y^@_^^=M9zNts(~N>CCXDz?LCHc?1yN;5sOSJJksbh` zi}#CJUJ5^-ka%Y3Ct>T1$gn=|A}ab4wDlCroZc_KCj+5njH>swY2L+O^--c<^6KTnvd(!Yc-pm8z6G$l=}81?C8)E>hL#-AC*v%)IM5 z&PuVMc3rQoRo7NNRC`l3Ex13bWSKs5a0|vnF&q<2yckOO z1BR>sUpxaUZrsy7 z9-Vyi)PnW?fVvg%_x;yp>K9DgqyfhOY`|odW2~(TyxUq8cq6qcdazCVjtwe~Up}D0 z1}1bRlt{g+S@ii72O5{jR*F&&RH2b~N|%7UHd3?J#N2OSYy@Xyuktv}h(ViOHYOmm zxxSVp5AS{oq~<|tpM}U>JI`L9{O)D*sp?#>!!K2>@GDUj4O5-{ z$^>R}V?Fl;q1R!9G;J8^?{n#j5Uum6W?@->{~_zU++ePvfSz%UFci?$-H&6uSM#QD zAoPOBzd{#LBIc<6GF4%?`-kL)Pj~zuuz?QtpS7CLfQ$mirzt6tTcwFrss@JYL}cewqhF zAHviXgpw{Q<7q_Z_-yNb?MJ9Hhkc5tQ?l$JtgG|IO0|bSElm*aLXeM~YG3}tYl?nN zgQ#LERG30$RHSBrJAJB#BB*Hs=ICQ(_@A9MH3z9J6<~Y@B=zI^_SPgoaPfXt+R=B6J00_01@$Iv z7e@Xqu!^K?*=fISCpc~=gXyRfSK)MX)SaD=^TqdSD|ol%Fw+wgOPv6p0I!E(-+})_ z?a62Y|M>WCm42^wK{oKISp~{T3g<+^=!)|N{gfRc3q}JkSXAQh29B6e&Y zD#VWlXdXWBhVW+DF*DZwKcd?o>p|sO&wm5^?&qsx4*ds`U(evbuWzh9UeNzf@ziQ% zSJChV=w@^)CLxeWaT!Kvte3yoCre^^pWp!TK|PvS5tmUo5)TW*3!8sb@%zI+d!Kyj zX0qU2X({HlqM2`N5>$<(~8y|{{z4JV`8 zb%|acy-C$~fY>E+N%-1xhx7x~L+Ss3gZ3iviAot>n1C50_xi=;-sftO{aP3mAL zYBH${DcxIt2u$4E=7cb4JW@28LoOk%K@n6tTTYucsdL(ZJ<%C{xxPlWCSinv`OJo( zA$JhU9v97gNsrT{=AEJ28BS-{mt9CyGntls8>^epd0oY>{c@xE%Z;7-mu@G*ILH0S z_s6q43b|nRRh8*Q_ng|&gzls2oB18Yg_b~`nDPug)lI$wdhkH}>F@r*zUU)kC|19S zdV|cOiftGSJ)U{f`q2&R9Bo7)@%{`O49mDos`iz)Nr8=*?ACgt(Aq2Cc%mAryr0~W z;^?vWH7C=(*k~w+eh*mE^hP}!TAKgK(tXS8*`VO?QvLf%N&oiRu zt4ijDvGkzGe+N^GwsEn60fslz=jM`pRe9jX#^1}BU{?dtqZ^#^^De553m58OmrzTt$(1mP6K)OZkv z2@yCjjr>X)r<62kk$E_P~9QCwIrg-_k;;OuVC+41ufgu}s-aDlz@S zTRC;`Lr;idn8Z}TGoQj7N7N)Me6{*=%?+iCuPwZLa><;Q0U@HEPX-q}hA%KYGmjmP zgilV+Nhq#WUn$k|XgZm2GF3;PU(sf6h2*S(ZO(Y^*~NS_?f8ScAF1W)_r%Bh5|4+0 zQf(=HnOR+rjIn4R@4^`ai#08p7K^!t?Zu)#VTWHrOYztRvO|SMIv+80=8B5l<~2+z zj(IZz>Wb(o45cdUg=Zz``#2d~bS~M8)Q=G-RqO@`lp-p6g{;ao;K8y|J;!G6_`T_5 zsBbfIvB<`muufO%Ll5Fv|sg){Yvx;rUgDyAD zv~Gvtl?M}J(BGnR>7Z0aKFSu!v47b4i#TYu2_qX@*BH5i0r|_U3%jaq#!yis9#;iB zqNWaLu)}g~*Jr!R_rNr|GZ*77<4Ev?%g)Gz%G#IKqhX&+_nT~fmxiWyTBk>r6`b3j z>$Je|YkB2v1Ctd2Rh^9AY&AUpZ+Cv-rW5# zP`<<~wjJr#%Y7&cmJ`rO?Qe`s0OF=GbhhL+(TUx0-qD}p9mb7fSW9Hb-szi2@y>bY z(j$MkxxXMqwiTzX18C|yv>cI^erR2XhnMZR19rj%Qp*eWM;uI?_b5(06%R4f!#_*; zjC3ctXtm%tN7%R?uvG1dPop;`^b&KQE4wE-6hMX1#DNXS^ZONx#a%k0VFR|H6Htgb zqyWTCDNqd;x0s1%2-OZT0L9(^7Ohi&d;v%-_Pk;FLas!$rHGz`_PRh56 z5fdu+5;wrx@pLqTKg|NP%7ls_xG*a_`W9eYtV&Il3gt86=vld07`AgO4Gd+pQo|y; zL|bAzeX6IS9B@h&*VWhQIQxpsuXH<1qsEykgK-zXXX?~yAXQ~%P^NJ!6 zZ<&LUM<@4Iud|x9dZ^<)sqlw|j-{LX4L?tyO+h!9c;h6-?h*NGN0%=vo^DOsYJ9|ZQOav&oP`rut01gh4)By z#Wx+sUrAd3I>-;@%?G`&Fvb^0tBlu0cbNQrr88J$$2 zRdI3Rt&3Wc6mT~r?>FQ?60e)!YgFhW(_%nb%-?e(@6F51wmbCR1S3>4rTg!#HyH9( z`feJ)e%hK$qVU=qVse8BT6$-_r4FaVBDMHocdwFFQGc2)r&Y23^oSf1Q`J3FMnkv%`N%@rhPh-RN{zy2`rdrTb61DV=`+$5e8bvp7m3u#MmMS4jX z;m378Uu69BIQM-6zo$*jecvPwRT5GAD<3ZMF7-1WE!J)Byww+5>Fq6~Z+|}_{ZXw_ zbz2=E;pqhkKYg^ew?=@6L^W8N^rcDXkuP1{`|U5CeC`g@Da)8imB7`F9qUDG3c7mn zsvV+Nqh77}=8?UAkqggOM2xwvgN8g927OUE@!yb%4A+Bvp!o$j32#|%5s<@gfa4tE z!qY7wcCZt^(G3AXbvmlyb}`jH|M4FTe-X)kNTqGP!84iBz7R04#LgUxvydX2NIL~o zl968whDllCs67pFPB$4Ua>^3Ot=`B7SsTBl@l=+S;0bT>cc_!r_|j^cL>up5n!cYv z`^?WQ!rR5dYfGHRoKJuMd-02LcvDS6kkl*7;`{H7Vjzbh*IVf)!)aXkJuv5SLp=F@ z+037dJ@UOOaS8RsSd4|uslTFOAAT*lydRckl9r8-x31rl{Q$o_Uw^c=DmK>EUg@uf zal1YAW+hvbAUl9T4;xsw$EdJZ`B8AxzptF{Qyr>aWb2Ir5;%#?LIWfCMqN^|0SBiPM;lFsIm z*XsqW%-khAQDgL%3~>~*pWXe4)QlYOfKp;@U8@_bn@f5gzAv1IjYd{= zp>)jmo&x^8X#8=gbo=Wpo6$&uV#hjalK70jM%nEskZUXFw4!kMcy znE*~f^x}jAx!mGwRq(yuB?Ao8#aC**l|2k#L-jF#Rf|aGZRb0X3*=ztIF(tf39|-h z$;Ib(glM9%wCxfVBp9{lx=po$Q)*eB|2zX!idtKZ^hhqUE0Y=V!zHTSWNtDTyYblV z0F}IvHyw$}lUjYVwy{?G^_n>G`o5~xGO)!}D-{8jS)yfC*W;ik>LgWcA9Y!B31kJB zBbIm_c!u{p=%m|0tQC^4GxOw4pYQJ)YeGB~b@{$M^tx9Kx+aKZ z+y?CatCYal28g`%)Mkw3WguGKo64}HvpFT}s3q4$NoRyW+ zC`P|xY(+lcdp<}ytMhJ?0h;7j>+8S5GNeg}PsY*QCBsZAA1d9ln>6i8e{!I7@+9{- zgr$sOBUA)(v;j<#Y-pP$G6bge>ev~i%L1)o+^jk#A&%8WSvd3yU0yfSidMS@mWJgHBt1+U+l0nht1(q!V0Wnd)_KZygicO{V z4yJ_%LqaLN)>Rl0SV;_<5e=r(x>qp>nqeqm5gN-XLiO;QX+H`sFL^}KhYq$~WpizV zOq!vfRJ`}~-RYL8-jMP=B)4PPhxXn<6!tK=Wl2mbrdM@}0Ff;8wMvDir}@=&6fgB)0O4dlKTMGcq@6 z8c1Ts-5^U4d3Xqv{-5kUi*_+GSc^aL34A-?O$tLTi045~8HWIcAi)JY z!pmiu5=4zAnge(pby{_%efK1oOk%RnF<_h2l%Nnw;0^4|X|gfAOR;kt^j7`3r_87WW1`j^%Elj<7p$idx@1JWCz z5$vz4Z?bP;ycnE~fKlYx*!Gj@#5C1S9R{Q;f%B6c1!lVNWt;%46VHko>R7P9SE-@D zlQa6=HIX;TH|NYtx&!wRj(6y|O5gLZ)1yOr38+i)4?$v|iFcks0;pOb-X*}}7Mg+n zTAqgB3Aki4scKHv6ZyUH*<~V8TB!+*kk&2c)ttvl&oxI{LApALLSVPx(sSAHt?R*X zTSJ@yaW6!fc8Xx#^$MYFW7@-;4x&Kp@jEenbdruuV?A1O*sip+gJ8^DujwF!s}g~N ztUnr;!5c#X!2zLd?7Vy_ycaC79+>ODo{0u~F5zHbRpc+r7BDOo@xveRJWA*kA{5&s zy8EH;6B7ex(QpVG6Hc-(1jo^ouB!$sL7=u0^A>}Pwfyg<2){(f$1cn?$>o{~1%8Zl zeb@J3Q~K_+$Q#2kq_ugXazW$?HPa!SzHSFtJ4#yH8hLMFfMrf#(vVym0u6@n!#3(N z=x^bU#6vW0wzEHk{F@*YarKjFJka^@4*?BD+uqW;A62d1s&TO<=f9=szyzvH5WXnp zo?CdpsSo$P@qpP8(K>@HFe$366iWfopk_cV;AgJDLItqO?5ej_cIZ!w%YIR2@A^K6 zx7MHj@B>;dYg`Cr(QXGOP3!*W3b*o)?y1%!P5Bw?n1lbcUSHeD;Q!ShZ#-GxzkG_v zIBy(hJDl7S9)_rNmj$ZbOQJ)e?-AWE4IK_(%Hm$zsgr?6-4u}8^D>@ zL#2sM?)$I^!jMso-}>DI-(d2~5bX@H zYrszN-4lB8oX|yXcv46C)Dw@B2*=n}i;<)APAHF=;Z^FC%qwRy!o&BTd;u+*SI)-(< z533srJvkOwp)6{@*~Y>Sn=OQ3JlT4-f3Sb@yH#g*|KteE+&ylIE%9=zb+W&Gda%_J zFHc(-rxU8*fntyLk9J#7OY^XKbW(*{;hg{p_~=Bm_qGlWuqp@Pt&dySKCylL@^`KM z=X)n&@AzP+2``^Dp=IdO$5lb6why-U4_C#`*5TIkCgnPYQd$ls_{J9FfY@O(=XZ!8us@Q7nw{bvrTgQj14h|>eIHp1%-%*oG!J!t`j6f3n z`?THE1&W>K)&Z2&#?077mAJY%%Ks@p)mpK8n)FErmwwiWc~DR50=S{ z_<035*pR`D6Gs5c7}gYnvv^|)%`(Q@uyKmPRtR}!bwrtg|6@Q6P;CNIk=`MiV@kq` zvTl;a`)~X%5tt!tv-_;T8glkEhPR_d&R&JKRh%+3vf5`w^CmbKUj(Pmw#`+Vb|Jiu7f$_gKH`W&Mzdp&6Gj5q1^vijmOc4lV>j9jlMPwv3 z9|n3k5_Ee z0mWGMr|L}0a5%**4wa$!5cD|p-vAR`l`m2>t%h+FIw~!p_q;{}lt%u5!$gvsXh2_v zejK|ob&WvLNV{UNR!jPk7@p9S+~KAv-XSM8-F$2;;?JEn$aGaVvDIFpEr-1 zEol15{$cZ*<0A~)bn;EZwc?1SgK+ZAtna!ODJ(SKz!ssvu0Ms#)upB;u_{WLS!!y= z!84-&Zn)@=m}_HNnvUL{HnaKL=JqKb`E814^}4l#`5Mn(q@v;I*y5!_Vw=2WJr_s{V zu|H2^re(v#(skDjIB%DCcmY31K%4a1G+j@iSUZLAcM2oL+`Zm_oyd|)>!zt8K*RLWUT}op}C0`IVdOaam zXwK^x!>osqQum?&C}=}aQ@H1agwDk*j$;msF(7tX9gsu&{;a~(IDYP9^`FdBt(C}V zAF+;k_kWMpA7$ddK3acVU+{mQ;(1^KfzoMeDXUC9pyvDhgwR*ROOm-!1%~`0D+G}1 zLf4{%j2(0QBV&y^4;*PQqXI~NsLJ4hXidku5YimXR2w*3t><*&ecf!~@%eP!0PC#7eu6E zypJXVMfbm8Hc}}IFj0d-@s#ibgqDxq2PSm8^d)zI<$AHR-@0Eb93uj-(Mcf>Ne6Gf zfW4+BK26(aDKkv#FPP5v$zoZCy=NX3DL5YL*3yD}+;N2ql)O0yUcYo|&!Osx~Vmiebmb4JZsrPuo&J&-ZOx;v z@5P16RXSJGDkDKqROaSy>9&?H4cwii>#)j0pTG8JMSa z`iocXA_;+(|0cWCLJ2#T0T5MdqigK)5rb9CrM z?u#k~F6(m>^?N+kTHZb9W7jeJ{I5S=uRqc8pEl|I-`IS-(Eogr=RwxpOSr{0KaRs; zebWoTK`^{b$VUM$(WK*)7)V#2NNc=FlZ2R=h2@evX<1Z}jBZMm_^R?C>pLaCP?QZi zg~$hv9loTW8|0$cKlsI^FRuJTxl${p*flDe7_Y5bQv7AsXGsqj$f9*SuKdEaaSRfq z;4V8@KvE*;F1d_Qn1gdPSWaO*<4M{OZxXoI`7e~~3~lryYk+R}mC9Z@o>e9x74 zq5GBTEr*WEP_hE z0F!&6Q(OotQrt|V9%1Vnqk=chv;|`0QI(Ga{;EijiL?jzUUXafHTp;O6@3xV3Xp~CX0-sF&0R5@H zsY|=Kt4Tal2DDv}B>AB8Y#3+Apjpdpe zYR8A6*UM}k;N!>BH}0D+AHROQDcrE6=1hmW1K2#`S8v`gwcJl?p#tU5TPd?ZQN89x zxJ_w=8h*DkR+Sp`39Zl#R~Jr>M(`!hf0E}x3QgE>Cc$Jwmlfmnd=iGT5L`aHelLu? zT5GR)AREvdU*;+|GG@BH(NJ^(rvgN2jLmbjzrA-N?0tDOjmSZJ2rPNR9)CA}AFt#B;PDuq#s1~1LY1S09-aV&OlLS`5yApZBsrY-bxi^l<%E) z`l7ucv%JJ9%AbD1C9@Zd;n0rpTK#m4@#QXZ)<_r1vdO1#OK9Pwt*glI!U&k9!XX;A zSS5^+eLfc`ZJ;1nd>93o^92$bO0sY+p|?w15NZ8{2NT*mKU_R=XGjz@<>j8y}%+aG9H-Q_!7&5^s!XR^vB1@VX zR#RpN9yR1`_ViMESeH(Mw&_{_>R;9k!=5Fw?D>m#=9vG*JD!py+vcc9oXKqTi{=*I zvo%ap|DHb%e4wP{2-s#29~MvKbSQv~Y@9o(N}@27LzDp%I?hgskl{+Xpy@u{-(kb1 zw9oHn^(0dv2Lh>{JbIM*u7{hB?RJxbj*1GO->U)-@Kv!5yZyMmoU0ooHZ0XmM0_1Y z$?F)n#!mR=HL9UsCuKG5kBhACbgZjFg8{^fLVz{Z%gn5m2$h+MOH*|tj~qZ~x~wdD za!iYF-ipgFTOfqTC<<75Yz}E*?l@ZGysqPrguQ^1HkGP<5=SUTfdwc}mQ05&;; zgAhY@eT$5fh4+FIqTf$cusPfUT3tcsmT|jL&5_Bk>1LCxC5FLO;+GB`Ux5O>%)Efp zdxEYw>RvQIwB;nNz&N*nb_w?yucx4EK#PA4wap>t9yiz|lYy3|I}U zN4Ul8zI!V;ezj%tKE58Q8bept7kM{TmM@W1kxA1yp=u$$8xQbD?Ru@c@$2fE5zHA{ z!UUC(wLn6|KclV#$#pyGMo?q}jR=IDaqJ~;6>CDUS@9$a7*>N^3fNVB24>N8#2O1O z;_cKLY2&n+2Un#17K#;d-1yD4I`HU-*%C&5;AYv_SQP?IB&E^bIk0X9%rdsU6eBI!> zZTWq4h1p;%I2PL*!rUczeW{gz($bE?k7fIiA&6+L z7LB!1O9#P1Zcr8z+hr6V62v%_a8`|c^ib2LPZ2PToC$k-1g9#It(4@X;;)Q}BRs_C zOHVHoW~rQ%Ti3UR;;ku4xdCwif>hWX>HU7U>=a2hwh1S*FX{-TE@{lR@`i7dmFrOA zWak7vd4^_N$6W7<*`}2&V^Qk%vKI_5nWAY74dU0XI4lMc4t;k76GC@N98xX=tx4Q# z?2SgS_OV~Wf~3mIO<%F;2mD!0-XtVO8ObbZos*)U45TzMt5#M_e2P8`$1r=H4b;qOwbhVL^9HY=HQcuQYoAh>Ge@j+jddl}ySBOZ$ZHnV|^)+if- zG0Eg$x#HZy|3D%?9nAvz;7k@l;{ho|I`JI8 ze~#yGL}&vGSddTtRBPlxzW?m>XS)3V7jy6b>l=@rWbi*W)}AcymfN?)-Rfr%ysL-7`d2dxO;wHxtkypqS)(jK5spjuH9lQ}>i zQqf=ZRRUG10x^k%vQmXHUZBW~pETBp^<-ewP!3TyDj4kTy$T`%w>Q(9b)K#fj91= z=V-Fz7-8zzVi2T8;Ok=UJIxJj#v3o{6TzYjEL4uKOm?1Hz5%h?}>9dBsp5{M8z50a0A(z(;zKXO~mm&YFr(`gGM zGcYuieZ$2 zvcPA>?25_-!%j5>g{NNT^dlej<`>@h_Cnl*dOILIaEd?dO9kMIix6T;ui4{%L$jW1ZV{S8s;~|`SKxg2{ zKMNumVV(@>F!TZWQ^}MDp5e{S4Q!P(1;atc1Z}v?dOZivL>XL0lRF~YeV=?09B52K z9vp+P!?JJOut644<)Z|X#EFwzG=4A#G>u^(Dk#6ws4hE^f9Z7-v@WAjo{kh$EtSKb zTTJfECe?IdPInMSzSMoXl4Yo!pfO2WBM+qx-_+3Et{8!EmK$kg&=goaI}jCATS8JB zPn&cIe1)PEhXkDMGk5?DmTAHid)f-r8nus!+AGq>3dFwSU&7{-E*C!$*;iyACS1jJ z{BuJ8CF8N&=m-h6TL=@JNtlb`Vdf&UfTH4Gq}BjJ0Tu@7`8!)8;7G)0Z`ybZH&_wq zBJNu%ld=f4c^y(2VC@Jw5m#L-+8QDgxHd5PpH%I#hg>l8%HEiiySZb8(wX7zD49i_ zq*jP{RfC!+7Ag+L{b5 zNWPNhxaVhHtn9nc29mbiZ@7*VFNslRl#$ainPlpOuS0sMy-*pITn9sS+-`{Tx7BA= z!B?|leZ9K2`6`to)aUiJYJIJ`_KF1t^|oGJmoH74tn*aAtUlr@QLS48=F#`Z@gRiJ zK4;TakP-);6@f@(bpiL97;_H*Y3chncYhqm6ggCFKRE_Uo`k_dA(Hrlj3lYe(&e~; zw3Wte(IIqHS9(*9L$crVK?d^TgfkiUzc4dfY^8lDSzk6YCv5`e55}Zt_xMKsZAdo- zR8o4`P^h6IX`h5!R6+gi-z@aY*{51FDaOxJ#~lCf$LsZaM*q9Mxw*i9{v;2u)&#UN z4AD6n^)5FYWle{X)?wi?`rR8p>hT4>yv1W!K{I3y5ODON;d4$%w-!1?&tLfdM0jcC zslayyU%ak*&rS}0tzHF!T3cRqkm=|ZDL2pC{s@tWyGrv06gMpuT7C`eFiMR>4-HlQ z+A^On=ci-oHPL&;H1)ZUaRTwgR9G{)(20ugx(;)(V=xS4g1RyM<9k-A$Q$RyT8ev_7IHzHF1^kGPiTOxI*fOO&j-`|bZ^9q|Rz$c;%a9(4 zUvdir0jp4jmFE=ra@i4?Fv$V~mSv+nnYlR2jQFpjvP~gd3(EG)K+vLcO70H@>D0}( zsO-Rm7AC<1YA~YJUD=ud`*AH(X~DTSjk*J=BZD^K>;18r=6ISEC4$$>jv8TU1%<;) zzh%c(hKVj6SDBv%b$_Q|Ad3UIaydp6RZiRnPG=fhrSL0zQe>s&Ga?hro(`EPKNmDM zDhQ{jsQY1SX!!Hp4`aW0Xms}Sk!cUZB-2-XBkR|pKPzZ%W!0@e71pf3me+hl!7g>e zl5tF{DIZ3ireqXfgySTH1gw*8V)2PA0Ip zpGVdifW9=WcPqq#Y6t*kJ zL(FRYTr#7zl@@e?KwH8Lg~;tvw@-fLk^4G{FgpI^trJ32EJNf7q+8+~3LTlR^Q4)(y?zZtESCHgd44a^KO}uBd zTHS-?;Yd#O!-~{i%8A#PfT98c z0YL&aIdJKWAmv4uLjnQy;sF6+0^tH#+Bv%z+St&U*c)4$I?>r0+PNCq&^ueGsz3pO zFq61h{-1XBfC2ggdIkan^uMD;b6e?<6TSCU8CRwrcnsl4?_@=W}jXgcPG+=E; zy$7|+xN7)IMlj4%3L>Xv=phOKU8e`(z(uOx8#ac50tOb}zl(IRU_tU0+#6vvsmJ<= z?w5$s7;?Z43AE`6bP`X71cnfl;T%e-gVI6yC%hg$+>Z=zRv8FI$4t&g&GYYV(D1^y zR2kv-1B*?#;SZd}*PXbIxClptJya0A=rdWn{|#E1B5e31HBX>2K0GipSvcoY2`8|R z44TAxF_ddosaiwx9%{@9nCrf9pYw*b`_@ee@`cEvO)%R%k3X6(LMmDaZ|KsjCc+U3 zogekCjhk^?3@@M6AOio7uRBeOfl{Dnd8D_)0cFHc{0P438Mb;a!#GhYnnWACQkzwD z!!Tx;j|8E&mdNmM+KUMo?;u!$n$(C7)kzZJWJ$9&-@JiLzj0fz+|d!nYhQqszo^M_ z-{TvQtIEw^iQ!=!#KUQ>jor7JhNdO^t7{v1j_6nO*uz=BaK)q1?CCew96pq<@!WGDUf2L-#WObH8zuOFZD;p^=$g z#@z{=2uBf}@&!>0-6&L-6v#w4r|CVJ>7j!&%nj^08uODdYZ~wn-Ry_$tL|x`+bRBR zeyc4ui?DQr2`8x#Es6?x_Ve%8tzRnCjz{)>Zz@!2Xzue`>IBlPaIXxsF6U*RGaoLG zxhdCv7)KiO*`(5mz9CH$q5hZN^pTcvZbQ|{sicn2`>;)II3Gg|je-2^ZR8gR`3Lo5 zGb9=k*`JDa2-&WW42txYNmJ;7NQ1V9E?7%Ecn5FXHZr(g%5eiJ%BEs*#3O%hmo10w|MutZ!hi-rw$ z1v3+Btp#6fLTxd{$84GD4ecgYVju3(W=D-WyP^qZlB3|s<07W zq9_ZRhObZ7OU-evl0|dr7fWMBX%m>lTa4B(={V2sC4mOF5!O(ah$G4A? z;$(2|4oAwNrZk;xc5X@dJGSipSiE;cJZ->L_!iQA7=!T&V)vC)2s8Leg;sH=TaTW) z_VRG9rO;SCxP`z~yO@Elb<$u~UO#?a)EffjZ1Oip+=x=!BIv^03q|pnE2s!peG3c;(@o4JC%jpsXP)%m+U*p8u^J1^iEuYxs`Usc`Be}pNIRuW`ld!3WFxLgNf?I9c6rJgz#nH) z-2aMu6rEpfb{6OvT?ALG-9vLWxQ+ifHuTe*@;)i`Xo+GR2~b2wmOIuwXPfJ3Xj|*Y z6%Gx7U=2HgT0XbOJ`r{QiYTS5**P(i8PfDubtAn}q1pf&Px66A4CSXA8Ui$;Hfo*9 z@S5Nw+DLEEb$n^2mz}72QMH*|h+fAKq^77b{b-K_AtjMKh7645(D?N2Yk19)pPsCkgW(t(j`j2-A}!WM z=mIO9Ol~Q7l@lVYMUgZ=P zX;MY0N@5Agxa33_m3APl{Y7<1U)4zny}*X%iW@Mc66V4jMBFI-pWZ`7?G2KrGv=TR z9YNcvzY$v^vt?K@7}VrZrB#z9KB3ZhnF!LBx=2;YT2!DT8NC!V=M=a~Ej_SfDBwZC z;6>DX+li$PdgjT&-QO9AOiv*8#2qSXGbU$;6{i2(hwq9ByWd(>OcqD@g=s_MQc>S! z>h8Mf<&hTATA_8jOdil~y|d-WgVX9mk!aLWYQy5>=(R83I)%|dJvYyV6o17e` zsRpW1XR{Ynh>`fXTDaZ z^wsH<^th`08d(cn&q%N5o_%v}me{GtJsQb)*qRheVQnPs=9A6qV<7fRzgm)8(?kVt z=o6v``yf^BALa_UXI0sgKK^zU&YM~fJZZ*-6$kjdXD!O?me8{M0vIWzaI-Rj4wn*Z zOhue50cJa8rON@cU|4Mnv|Mc{HRHsuGPE&svp@Q z>|fMySerQj>+)2wW@jWVF1+C2nMWDeQk2Y@Dr zZm$zSrBMR&94LYx>7hN7B)4ML@FZ(WS&Uh!HKH7-3d`ZMcSTS@^`u9>pJ$`bDx2KM zO^KhqXHat*g zggpo~4$e10o!P&Zr}Vsnr|O}GY?i+H8p3jvS9Qe5U|LBRtVolMF@x0k4`8X$^(x0m z%4kxWfYOJp@0trxgx?{c^dXZxI-$p3Xd^($@EGW2j_YiKS{DI#j^3uPeqQW}(JzF; z|D$}U^HrtT#({teXMuoF{!>0GO7f~gGNQ^7^71N@a^mz3CT9OX(G&e;+{`YULqEpPM#MAnDLXV-(}HilQH0l0YyF)0aY7>g5th2ehi zMc+d$>7m$gxCQr?mn&2QNBsgAgZR8<=};HhUDUC^3IuiKWMDHi247?H{8BZJSL7|# zJFFBobpPIs!=D;Q>;GZXHm}8gm-Wg|Q=8}Nd9^yHMxmjUP=vuVZX%3EpQ&hNkL~1+ z%Vq|qeYQetmqb0uL7AW^)FAy_Qdn=!xxSwG(z?7-R7(5}om0_$y@a5lNP@i3Ly8Q0 zD3v6$s6gCYi_5Y%8#i2@MVmur4c2#~Rsf2ZFNqz^1*_DDVLgqozboih$jxP&M+Tlr z?${gNIje(3R7!?w`x|y7cU5tVhHx;}RV3#o*0X{y)Y0;g7h@r)Wg5_#UJtsL0a z?9@+;Bujtn1@29TI^i7L$LY3YDjEZnk_=yX^z!Q>w|?V-Y|0}B*z?kHicC6BnOvyz zXMc9@i16jpTX3CV?`L*bQR6~bI*R0$bOShp`7&W=>IxHCR3Z*Sa6)9mXt*dfFoLGM z1UMiU*u|Y+qt-;izJ;x2ZLB+zNnzlzR2`? zYH9qe$?}o){^zpskGWjt)}MZY0@62g3ZJyg`Qez2@V1`DKO73SqT{{&*9yHeOhSn2 z(j+(W?kS1v&X?evDQPZq8o@G{>L=0R-B=h3=ZXFJe{@M!`GZ#yDL6||nO}3*q5l+k z9sHdJOqg?kEK7Rnt@Dm)vm7PtHaYm9yIAQs~{Mc+eQ#>HkgfPn2T{W-b>!_HJ(?&1m6K=$Sq$y)jVj8O{ie z%8xrkaMJWmw=MLZMyWUC^KHAp!jeM|YQn?*01&pIVJ@85N5SvgvE!a~?f~-79y5O7H z!W+>Uj0u;9Ks&*rpVi(H&&Q<*5`hzpudf=4)gt4Baper$mQaW!iABg#Rw$EOcxf`@ zU+->^rL={Fyuz?q91?aJ+F3b?8eRJxP2-*QkZ3x`9x8xVMESj)s$eZ&7WR8^)m~&e zTt?|&VrYT38TrCxA&!+l13!}MZWodIVVSO$b-zr!AZe_;wqaQZ|1n4Kgzm)X>e&?J zyZ4!s`S;9wM`Y}7g(fV;usSO_G4#*6A;v(aIv`>wovxGOt?SnNY3bgV*=0^dQG-ff z&rIF7^&q7I*-88!aKBiQouz9j<@)=LCR7onYLbL@2TR~Gfqd@m&3{wK9*g?Yw~Bfb zSPyg6ilE$C%9NP7Y)>%|L4R31ek`dS1F{JH_V2{L=tVPk??Pq4UqO00FQ=}n&pobA zpeQxUuiu5ND9uyD56+d(HE(5V{Inl~o36z5#U(mqdQtZR=Yldz$UlLSI4dwhw6I0p=vyGsZ zqVew3CrDc?*PPqgevFNyV}=CwD8NoX{=-_4z`tlINjN)5&P`?`Q7^N1%hy&Rfc5#6 zAxp=`5`u>Y+l{!6c6Z={4_56)Ij)vpC>ca;B#e=v#wPRB^2g$uvqr|n-+BkfQhHuo zFxiwWvfm@c8e8bkA*?_uPFt2V<#WC!`*~&_Lu%{6{WmL7ZueO_yRP3oTr3KX9vYq73=5u3-vLXq>svjMEHba1n}%F)I@)z7_nItDtU_x|ewQ zRRUPkx}9-}v1N?Ii<8Eqd;=FQ8`>&>PLnJj(i(11yl|6lY8 z6o@bP#-7tc1ax@r{FZDCWk7yOEKX#-_TM9!t2_}NNa(Zkr5XvBw6a=-c!<8MsO|taocSWHhLoi$J?)-kghTHGE zO(zS{RL*u;*g$e})5xnNLbeq6`?8)A-LgJhx32Y%YJ(cw5LI$n2?MD7z@oDMNOC%; zX-pN$)jL8JCoS3oK1XYekzY=x<4^r02PY@AU&|Oho!={yv@N(AY#+qoct+QHD{w?% znDBMMMc8;kOA|E86jRm&Y(QQYhDDE|Yc?F7ZU?OAXGPH}6kLG9__1DscL$hLbiFv= zG&@Y+$Ue7nZ&Ees6sbT`jnSjGP={@(*}tIlw;js*C6i3J%O(;nN8X`nOKerV>=6md zU{zMVN;P1PqQP?Uu)&1z3ur1Rx8(#NMaC!YgWyNUue2|}%Nj8@sJFJ^T%bs8Xls-s zFOD=kXZ#W&3Fnr?P4!kT#|hk(4i}y;Vvx#|*qO<1@6js3G}Gas8gH6vQKFZ}23j0c zwB$E}1hvt#hxH`?`+zn>=mQq` z{6+eVzoJuH@tD2C9RSI5n9~$0iuZa(`4OCdG)s<>)`X$&z<@IxIZw9}d4mudqBaaL z-&1w=z@mTbqtB9EL`EcrE)-;FlW&zV#;`DOGrg-wNsy?fxJ*O=5pH+C8qaW>enX$Cl@-b&H#G~Ww--4aZ^r0iVT>~39Dcocw{~}S zU2{#k{*K07f5TOUujDY``4Y@twp2Z91V_Lu@kD(DdQVS=Ea{@ePul}~Ma`drn8BQh z)t0_A&@Y79^KnCzTRXHuy4i8yYK3y(p3m7?NP=yH?I96@?+rm!pM0~Z!k>Y{Yp!m@ z{f!mbfMV7ioF#jn6$aTw2;ey0^Cm!oR{)`X`8?js%I~r79VsvQ8#Rfth^J>8^8@PJ z!fwDH#ohd+K1x|xDl^0>HN<)$FTDw-q|e{Giqh&J-6;X%>=a+24#kC}-bzekIsMb@goDvZjM3M4z1PO;qrNX7S7ZKti~dDX;{*jYQ#nqNlD`9B zt@@fwA|s5%3ok!!fJ75mU+X6Vf94+FkDI>bJ_J)iuRsE?OalK6F!lLKH}mHXK;f2Q z;s#phhE0Y0s!DRM*txB>UkgN72|jnh8Q2Wf5PK6EkwxN9il^Olq1ve-1FP@Skn<}L zqC;_lC@Wb3$4#SdB@BC?(}`V1(nT&l!*G_ERY_2uz9R=Qi4k-ioMIlwxZ1_aZ6ZUXv1AKn3ytMbI<_K6@SkNlWuj_5>f9uQw7U<~adR_gAW5_t zcM~$HaahU+a|*xSF`y7ngq9CWd?ca*Hq+f=ammG)N##U>#)M>%YD+xDkJhac1SQvk zT2Lbf#jHyB`-Hji+s)Qe;gSey)YId$?u!or=HORA85Y(pRZfS^IVXBN=;a*-O0iRE zCD-J-9@&>~auQ75Wi?%IsnawYdz?`4#icnOQ)-xO$<}=Jwsv`H z4Cpiij&3IXVrznLyi|r@=m&0#VwgEQdOtn!3@H}+=gxD)^z0xIE!QfsOV?^BVDSrw zdE&~+4r2Ap7yD1QxKn^D#mP2B@p<0wFT91=3U@1K3!e6_riU7PEztZ3ScNbQNEqro&5$`Ozd`f{7nILX1FRu;7r2+T7~EuhfjiIR+)&4}-tXMdo32g# z=8WG2W|MhV~jj{FHF|_W(FE&np51LU-l}F|EFP;~}<@mv{n~SaXfaiHQt^ou@ zFn&ut!wE_7*KHndH+d@_M~#1ZI~i-U0^3R}vTfd(!c!nHJlc7Dw~xdEubk;g>14kz zM-ONv`*UAZPnbTK;hND*tuKx1~+#%mOQxdWgcv4Wlxan zm#Qd7?BJfhle74@5w}=t+j*7j&)61y+76grE+Hfo7E%#aoWOt1sDjn%z;a0CAuLzh zdjuC%En)C#QE_WiaY1)(AAeEGV+J7=k)Kcx4;;eitK9F=+Dez9XD zqH`XS@*vZ0TmI4ad_*8!anbn1d6@~_A-W)sEIF~%{V*#S#WQCPGYuzcn?n6_^R-3_ zN(iaTTgYe74LISzPY`WyVL4T<2NGs%x2=qGm81H7*AAZ$JB6o`56S26b#YmY-MR#I zCNRLGdbTORAw`}A$Ec&EfE?p!c3g~5K&Z6OHbo;V_VapV22!Ub9l+jlOF1*no(88U znd#EeFItOSm4K>vb0qUw2B4g6WsY2`s$69bkK9{t^P02_cdiP}cavW@WkoKPL010r z{C5MuELn(o{37_38`5qgfTti7(qsb(!HCl{HDb$~aP);m)UGW~Q0F}QiCqjS7So(r zWIeSA$8^f7nrwp#lI>Zfi&xc*$D829v|QnBav=|V;pshKm)6rDQC+PWLvDuuypfT8$`-tDsGD;x=9lbuN5=@;h=@@gx!_2 z1>w3wdLt-%=Q>Wi@NXJ|r*}7OVtbpaAZ1v!I#gL%jO%ufi2rwKCPppeWjp;{MvP{e z(~CFtwuW4 zK+OpH60OM0Vo2b4Sd#dp?}T6dx>IfHlymd7#d&E7c~Lirhb=s%zzxG!rF(3oMb+uBr=3WmFyq)m=;3 z;p_X<)qJ%mF@n+om^hR1p~hPc=(2OIV4=Nv4AFp4AI4ez=+8Q&u7%@cmb2465mj4*^t&QIquiFSFi7Sb@+eM@OAImQqAb?Sd`iM~I`eJL6Hh%1^Fj{Eea7hOLB{ z@+-+vnBJ6+0qE`9s0FJ;9v3=QOJA7R6giSfaQse+Wao4iNB84YC-u_&=?lf%v(;$O zXV4T6dlyRn`G(!Oha{yqP~6nD9OxX(u{5By1fgJ_gwcOHdxeh|coR#xo(J#u4hpd^ zX@4Gk=AXJHG|n0QWL=~qW=PuMXzz(NNvY>)`2AWDwB?NVCjdh6-zpk5kdH9Vk(s2t0ZXsptarsE zoHBV&rzSc}d?J7%q^z4QTp{g{4_J!I1@y&5*WkK(5J-^;ReNuCyG)6o3R8cl zw=!&pzH#~ z7Ffel=_E3N-{_r;N9b#cYS@bF+AOdjE`o?%gxMJks2Q40SC&0KCEfMc>m2WAv6tmO z571}vAN_z;dnuj20DFb7&s1KkEJxHFoh#6EO!f3?`kB>oP+r0tiO_y(LkKLo*z(ty z?|B*D!Cq;7EXYC7fev#Fd53ageN6X-OrC+yEM?$kN@OJiH*pTwqsH zn~MrDfk3cOsBm-}>;y=Ur;asztq^)LGV*#w^82>39I*2cf>%S&d6MoEj#iU=JvV0& zR}+n{bLAa$-8BZ1C0>h~Ns}1$jTCz@t2>Q%&%5-VHCcS_aZ)DM8kCZhcJ<3&c58qe zFHv{%NNDJ1vM5AzOe-Z3`P2=UCAxcAoW!XwZL)qk#c1iB=wUb_NivqCfdI=EIbKX( zNqO9?jQ~Yz@Zg3L_!2hNsDR8b+oxt$-ZyzleGttD*ra8S;`Kt}^e^h4SD>1nr>TJo zMF~z)F~a<%eBS2n?c~=NfGn~9465(sY$Tj*Z;Z#s^@sHR-B-%D91Juc(=?cH8#0Lt5ipMk4& zKHKJfkgx<34-v&T5qNTC@*|lK(WHWJn>u`3Higo!&WeQcg;*Gzlgdh5$(w=z!$pLo z=0q~O&MusY5cbL6WQn>7Wmel!wfCU#qG@M??+y_#SL}hQGgqklw)Sz+lW-N875#bG zi9=v`vtL@SOA>zu`=ZvDD+?rTeQTkzC;2}*pUa=bKxX+dbHPbpUG0PzC6SjLGKV4$ zQ!TXB9zGtWUCoqY)k}6F#xlWE*M!4h?UX#yLM>5v6?7Q+2HX)Swmd_PLV_d9bXGIg zn(C@b9nz=9wzW+HLR)090avp>t}hQ>UbXKp75pZMj^#eNA7uP?ry$ArSxW*?n-&U} zrs#(Ds72x}qf&N^MT2twKw%-e?!QPEb{EGY#p1J(K!sOrYtxbj&7^hTlkzz-sbdMP zPr?TXto|Si9DkGwLaHa0aISDRYv)d9Dt6Z#KjaX%J#%IsK1=dazQR}fsCXH_PAXkW2@GK1LloQj*3B6 zc2wEOk7Gt;o8Y7W8P}3(Qzf~$yvu>dOJ}}Q$(Bu$gN&WL_E-&FxMILexvqY0&X^Ca z4p%Q&yECu)CcSY0r>=ql;!`9r z;Wx9?sD-98ln(}T33UnO^n5+nD}iN%Bp0l>sK3hW4kXQ&2yu8p2BbSrV`(59!h6gj zSGP-k;BU&SWa(EGBIo%A02{%Eo*eEroj125#84JZGF{HCOg}GbE5%(8V&i|K{z(jo+ z&BkB@{a>)#;kzT&!5T;A-%t9IKQmk7)`zg*t=UaEHy3rBY6NTGd^egyJ`pAfj%|pk zlxyI=tf09+)6jg?0*cdKmeKv-PGvw|W$zbP##$M3UK#KaZPWBpqc$63eN77&=~vw$ zI+)i2YHpy&V`A{9THH$@ROn1)jamWnPXv$QIzR&77k~iC+8HA55GVE^I!P>8mrZj+4XQ&i_ULc0q;+ct%jJf zqL%a&9jBgZ$y8nW=_U7D}RY8AK4<(2b z#?U!S`jn)M(2@|nzf-(bst|d#)t}h_NuwdesCeBE{?bj6Z2{DL+i!k@vwhy37-2}^ z3q|H>;}oBdu)Oui8L8CBUzi!jhy=d^u7^C(lz*QL2Egl`;0s-|YezYYR6gvKE|a}n zo7caRs*`*$Q-P)x)ME#|t`Tq=AB0Ze-O9iqFxSgqcb}x%K*Caq-!qn?OH9dEd~tyK z{0Xm^W9>3|_`e%thuCnQgQb-l-N&UTZ&I(dJl|m~W>&Vxic-EgSA^?@M-Nja^5wKM z>=q@UD5w{p!l`|`Vl(3GnexB&fdLF6D-PLB32fDNbC!ZDqN&+rRT> zt)p*&YvA9jDm8Ng>L0%)vZ=!x{ISe7Ukn>2+kdi?NnnwJIhcIdnZnJne#~8d3E7tn z+0<*BXs3zHo2|wN+dK0@HeiEI9rb{&DE$FN{2Ba62t}dUP=oawR4CEyIq({>b_>Ebk%NU^1TgvTeB zM|a&ybFbI`mT#xHR*;#9;#u6&cwSF6k#S88vpoozh4*l7%fn zoSo8aq8<)6_rGhqUe?B5??1a&V|_As9}S|V4d@e9y!;PINP8TnL-%WF)?Vxqh#^)7 zP>zzJD$~J(e9-ts76VBT2wNvO8V;Z;YazL3fbdsFz^M}hdJsXhD%OZSp_NiJZCgUH zGk@ne4wI=k{;*n-^nAX0>JDsyJ-aHpn1;$Pu~~NHI=Tk%wpUJ& zu7%!S8eHDouDOl^wSBcl7&x{JE0ZrjXPAkGpQ9&q6LEdb8=9dt-N0(HnFpELzGqkW z%LPVaB#HYPG-tL;&ftwIPw@Ioq}eGIEb1Ll z@R~iSSWOm!tovcbU1^WdEmrIXp9B!-@R?932*&hOd8^OQk2_4I#SV6)7f4us`S5Go zyZiVmrR=H*WL8*htw=UCjQQ?HNJ_xs_u^G0p@Ot2OE@;in=b3N#Ew?vrb$YVXiy!a z{-wh|6#g&CJzXshH>vShsmxBK2}GhnI$AX!iNFMn-Muv0cAf!Ev~CEbFA~9}3t3de zR2_w_I*ddHV`xSyq)JNIp76{OPuQ$m%#LxdK*d`=EWR96a(gfC7m0O7Le1wLou}+a zD9t(5K}sNiGT?u`mBlexgp%FJ&^P4xXB|pP5a`A1KqWBwRCeJ&Rj#@|@i;3JgZ6H1 zp~^4~CqY1X8I$asIFtQ2!>4xKN2wk4L(aj7z)|5uIXT4E-A{68iUSD6CDC4gVj)cm2yzD z$W9a)%e;E7eaWI)RJE6=F2(ZE$8rCsx?E$CUG?E|T0$*H)~N{33uG!DQTW^=<%AYz zg-Kgso<^&k<2a=(SxyJ#ZBTZWB_=P?$!M@)Cp>UHAO`2jQou83H@ta*XYMbQl{&s? z39BODj>LVwhLH|JHzP`&p3-7fZ&Ev{aJa$u9;*v;7gDjQoMGvNttgpJ7nF@6`~1|x5RBNh(;mYRzn>1D zDZ|T|pOv4pZH%)lY0dOKh==>Yl|zmND4pi#&QG~poBfy2**^E~!L6n{Kiu;+z7)j- zUX7Jh^@WL=Kr1su2Shfp$y0$(d>2S=(mRo{cbSURrn0niFQ@>%zv|GUZ4BOm`j;(O zodW_)PBi~YFP8unt!*2YoN{UnhOGS1X38I5)dYnlU! z{slGoXmI%|&^na1%@qTsFdGbtZkPAd>o*yBrMzBVu&2*o2Mrov1BkT&VoSmO4AS9J zw0+9XFWvUJj2w&lH>V0<1#v8{&Cq@D%34g66p!NODHNCvU?Tc?W~3W?y*4HvW77Lw=gC+*?*N zW}s}_D^N%lrDe8*6qsV(s6xGm_h&TgTF++=xTXpo)=Eb~m#lOm+l^PiOh-;5}io^!Ks z`&a70=(*lDm7lJP0sc9BLeXZ1%EDE_rJb@avu?~`_xy&U#gUI7E^4Ezn>t7{abP%g z)-X8w^;&#sC-G`zxb>25JkUGR(sV+`8A-GWzlB_o>n5{q_F=UGNY#7x?a^LV_ zbC)mj$W)7baD$f0VlffsDuz48vGJ~j0cPEH6_$mYA|&5ESP`xm^m9coKLo;xE- z*BY)fDb}?R!~1Jeu4;s&e$4mJq16~{odb58)iZx5#zcol-6N{_Yj#ps7JtH{ zG=toR^dCx4Qzql(x9@S1BOdi+4O1$55$Ybg^s&7*+hm=&=r}eXbde?ln z(Je-d9o!Zb`a~h}k`kpETChiIub`BZ{SIAv%$DPFfi#!7-7eo|tE}K=N}Um!($%Oc z%%!;#LA!?-5*$1O%T%cCs;FLbgk@2}3y|{XIe4jv1IgAkKycA*yF$5wpH0j85f{l` z;bxs!8^4VkE zZ(>;`d?3X)8fJMC@(JicN-HjSI?kf-)zxcNri&t0{Bj~2EWPH+he5Mwm&o!)+JDaX z`xrfZAj$mmB8&eS38C>I{i33yDc){^14VA{w9HknVBkvh$a>>*Ufz4L(@N$VpedAY z&;_3sT9m1}-r8FlAE=LM+Yy}#VyIj7fvZ@=EtP@b_Mo;rv}L{=RUhvd7I*gK7!v-z zjzYI7Ycu@H_OD(8@+9!ysUgu;%$RT0ipQS8Tn1iJo9j$$FIMnW>`HF$+ig(2$F|;t zVXv2NS(9#sYG34ckrRu~t_-vEb;ilp?k8@$yB#&m(0QO za}UF=(SJe|bd$Jy0qKlti`W@H?l*W^-t!et$Ah;F469MJNN~a#q7Qe@&%SW{GW4$+ zBRALV;q?^f5o@BnrYCQUSVy8(oV(=v#^1Sh?qU$D;#72^Q4lRx+& zY4)T&fMf0iS!r{X z%RZ_~#0K#E2W@fhUX^)Zwhl+cd>u zZ9XMZT1Ca{IU5vPOQeaHO{kk9oy0g*4pN*uK1$(z&dA=22v&Gcw=5~BCp4*O|A zSrPWr=j05hvj}%wUN}z16f*D57){ySt?1geIt{edQWQZa^8bBw=vjHTQn zb!!&4i$8VIvr*MWT)iy7$(~l?mmjoU#IFpexfs_%TZE^@F?DSWHE}GX+xLv0L2Ri%62^e_&MO{n5` z!f8!vZ^8~Y7l1^NxRjs80YSO@8`L7c!6UGTlDrsnul^)J8oSF_q!cF(OVVGVe zK42Rm*dy+#NbAf3?ED=i5-6M;*oF%@uOB6^1)sta9fnK_?m5P!6y|KUa3|ZyhdjcB z3=z_S1YUN6!g{jO6z6^{tQQEzM7UxSh^1ISD{`nQJ`@C8N?T}y;o^&BH(a=3FBIwx zH}sq{H8dZ8lP`tDQk4YjLvoH@)+5{Z#&3>BD9FF?eitKFZR`7YK2CzEzA$cZi+^x2 zjAZv9Z)0#^ag14iVDZ&;nV0e9LVx2PK>7JKF$S5&%24OFne05(`F#1aag{x6y)Wm@ z`^^Vvq0u@h9G6rXF3#_;=es|A-(FzP+g{0>a8;ru3W?wJMdeAe^Mf*;IpK4M>+1R7 z+S^P%YW$Ab?s*2+E_gh_>W!JrQ+$$AMESt$Ip%}+ZY$2O1tv6`DUVf zOF zKo)(TpG>Q{rGG2_^VEWm>~-WcW%7KhAQ!qR|NT4xjlz2%LQFYAi)1(=hof5BAbK%m+R{sb(tjxTdQWP+^(Q$+B~}|tL^g#S24vdo=0(i1UBb(Wv>CkdK8r=x z6zHH6#SB#;2&AI95V#JleR{X$g{8I1s&ztVzVhZYQXKo;l%O?ZyKzYg*$N_i^XFP- zMF;Y>nlbbglS-qjfY7q((r-Ivq+f$Ly8dCf?hNpKJm)-<`!4g^x1V^26!$}Gj&Q$f zgxsZiO6;9xuEl;bF^z1Dv}VbJH@`vEDGoMEJ9#eu2-|`p)j{bYM<2bCEKXq;7DrKq zM2XDw4DUwMuF^6Vd{^JQDumI}6d})`3VGg=2(1!sypANX;2^~uU0eHnw$Nc{e$b-n zbGvI~6u~$J7Z)L$jr(o@3NlecFh@|0|M?G&hbpJ13m<2K{u?c(G&DkuphmR#UKw2or$BSxH|zJ(^s6wpgs z2JeuuN{jo-F{LjGB4At;|J1F`qV#M-CTE}>MnM5F)mJGQ zS;cNhf}NW~jh8);kznuFfN@CKyo!gpGUWvuY;<505g6*IZ%uxUtgW1c`F2C)#F)|Y zu5S(wsioe!JIp9oT(1k8>9&j2?g8Ewz{_jJ(|?x0T4j>Iqa@}x8VK;AeC^;xY@C9y zP+j;duGws8ULW$q!U`= z_{N$Cz-qTj#oH3H6A(`Eg38BS5w4`JAE_e5ZiOl`RyAyw?DGt2iOPPCs@Gx=j>&8W z6(462zJnkTxOLIkme(-4N%G2?Z-v>FP?T!nI`bZ7_*Cu(q4#S%mba~fJEqf{IfaEElsK7o#BTXgtO+vkTqD~hZ0IF4|>#W2z8c?I%6;!I}QN*ymZa) z7PdJ~Dv6(AXEPN2wza70s!>ma#H9{c%zwQGN1d}?Tm14GooNK(HUZ93Ju1vVh-<&8 zJ?%LvA9`JS_XLh}gi6?FHVL&UZ=)#FQ!XZ(OU6y|)is}in`8A{^xzUHTPBp@K@0Vv;3pa&c9Z(E@tuFyvErNEg1doi8<6qz0 z9$%F!Y~*K^l4SSb8bD14wHT`W8r z{|$PB1Zff0eY6a)-;h$(0Uhf1cA7{^g`75Jrj-$~)`5k&SD`wFkT8j&6|Kwk5iD`^ z@h`-K<_3hh-?|q8t2o|fo&IWt7$PVVPSWB&qe_a-qW+>lU_)j|zxwj?aKCZAG310} z^e}dQ@>G(Vg*oi)Ir@2ZabNbpl3S*;B{sNHQ~lH%)75V%1)Ju}v{Vy#3VFMH+jt=)O(q7RfVXA*aw{MmKq|7xX49 z^zv5TXT@}ZjS)sw?o81Cc}(wY9-P{d>$WWnw;1MRtKQL5RQprnbErx2HaCi4Tq?)* z=2(LYlvO+|2o2yu00##?3?l0HC+iS@JHrcTD-?qmIS%11)uft`HHk;rX1IL3M`rIl z`SyS{W}>(^4a^Vi;f2u&upV97sA|V2ua9)$K^W;A7dS%LVg%p7xXsyyk$+x662#Lv z&)gOF&8}bAt@|C(+d>4AsMK}z6tP=3Xl1Ak<5Hk1Q9&0r`{(SBwH))ck9X1wNyZj6 za;hV3$#eZ#Xfz5UDMK{;X-GrqK}`J9OzJ%<`ZwO8nobY*kznibEs9}ag~#Z-sWS)w z7b?Ymx~iFxGrY~V9WPOmMJs7PSzXC(m}`TexcQ@nOp_T{ypFs*vu<$G zOBo%zX%S_kZqwS)%niF9KUlbdqlvT(>SF)mY7_W-8~f6d>eDvmgy@0CKJI%@F(sPE zJ!HqYGS$NBe4Q$B_^*6|_GU83CXk!W-|t_$+Av~L@s|-rk<&qo=-VqTBi7rO_){bFx@dA`1AHTKl`Hl{A8OqI@Ld568P|>h zSS5TZu>foysbjIynkIHXOHix=u<4VF>@Eegt3Z*?su=t~%JbSWMyU8*E&W2?#(8|| z{kHQo%<*F^YpR#MNRdtul8Q{sq)ry;>T6_|G{~el`MWY;`y{AESgw{0Z28GYs?}X< zOLy94SCa~b&fyKiy`HB&V3r|lOTa`#2=t*lua8IIrx@ItWB(_n0nJAP|QZE{0-uU6)x;;%6+j zkoU)V_+q&-?=A+)x%(7xrL!$xiahgE;IaV}TKK_n7Oa2|UT}kq)VMryWMC*O)nruDHayYmCB#!o-gIR@$*} z+oqyjvx_B;IGdwWKUkd4Ru=D&4h0-SxCUVqv3Mks%@^sWY3#SH3GZ7xDe5&Ww|9iN z&^eu;=f)A3G;78vY8Yi+;lRq0syU9C^D1WU?08a*+5J6KN3mz_2374yTBI(@7YFmnq#}E6Y zkhgrfE#4TH;vmZPpf3jbxgOTH&$y*Kl*j0(D+9w&%UpAbhq?nT>}B2m1M>@{_3s|vpLP%+Led_ zoG3Ep*4)c@HO}C$*t_8~|AWLeT$`2Pc407)5Yes^G}+8? zy6+6$y^4y)$e?QKO}_q|Z==?uhN?tN$!0k^eztk%bj z*dx^LTI|WLq=V^Xl}cvQh7&+#?b{hGw{;=!uk3NXeH$a)dU=G_HvYIp*gh#TT)^%X zusGp!Ay4tyxav|_dtq~;eOK1Rw)N(0rg$GRQ{?GDm$#{i#_Nj;!h^Naz|^OkGh+Cm zajKZUV?qqMVVxtj-XM=mLHyb(UzhLql87Z>K2mXbr*yfNCMP7y&G$0!!y)TKtjeZO z>0HBoDJUM7q}_K9|2%lfX7}^%dR#S`j7~{8NoF6bSy-jxb~7B^M}d!+mUpEg0A{w> zuI3p$3=;?xk%#`O%{Ap+IJ zdO6RUqh*`pl`~z_(L!`!AQpko#Dz3CcavjwEYUp^;wmCjLlDH?)e>?c6O(%VS56^x zKa;4!%j!ncc*WC&Bt>7}jrr*AD+tNRHJQGZwZT22-zn>&@7XN+9A^OCd32CA!(pts zvNfXWfM+15?3Y;X#K8)pJvMVJ9++`@i_Q6J=F_-Pbk{3D~4@4Nq%L&|nn{C7PsIe|qP@ zudD-#8t<~U`Ib6yW(D9Z!796Y6dXy%s`RjURI+MDlccyiKF*5{Ckkh zCVsl4)=CQ!P;%!Q9d8WY{&K4j~3d`u5|zZ`7$ zCgF9XpZ{^hi09Ki&LxWM6v?HJJ8m*;D+PmuY{UL9ddiEG&E8OaOODlC^KCOd6Cy2*Z`uA85Bx6igdhkEm3{PGKC=2W9+ih)h}3hzRe zth=#QsPmO=;Hff?0sRIofeYK#sGn1$Tpt#Zk71@;F8ffwJf>w!oLZsGC@g5m2vzAH z=AtsqED(!U6c+o!;2b$(X76Uj(T5HDvN|9-8}5L%7H4z1Yqr9#{7YN-TvsA9Zcj`D zy(V$ab$M;`dHOwKa@U577Tz&x39en}c%|)}&T!nA-Dli?xT#yL3KFqO%qCJ@iK^>D z=4o)^>gA;MIwn;!H7b8RhnzWo$WXJk8+CTxCrnr3?ezYv%8foLdhGws$>jL`z>Ru% zJp3CK&+$K0@r-Q$UBzqJZMC8J=IJraLM88i1EPbnZfdbcp-ME~p^D&HlkA|C^0)lr zoe_vc;*m%ay*Hc-8A@|M!VEjPzvW<&L@|}-@qvHLTJ?9q&0IX*y+0ifWiXv@p34MI z#;HvK+eWiXnPe=USEr<6AXKrLIs9BNo}WD7VSZew()<2A_c9l^KF#K&+4+9D{6=?z z?&R&v&!#0IWkd8^9BF{gRLKB)6LOpoG zD!ciy{Z(4?>#M6z`2P`>D4?Vl8y;u$1CFQ99`7e^hC@5X5A)FL_{q+F|iiH zp)%*RD|)1HsVd^+C&4Dxq?k0HgOe|U?GwlG{|~#_ieRaa^BLZoZYZIpmzp07fqo_# z4($8blwY4MjI=h&Kw$GX$Y+NTZOoPKQ(65Nc^&!YMNyQUEr>pv5csnwK!LOiS;B$p z@?&lmO9ouFRnXJRtWNi{R(*A9b3nYMG_=BqojR9xvF_Yt-OmC|`of|xF93Gr!R)u5 z;6HmvFelbRIb#!>4z<@b$i%8?7fJW==QXtcg)yNEfanE)_BF@>JTg7q8mqDsK6f>i zyQa*4v9qkiL&aGl(5H z;Xh#&axMSYB)y$9>#bUu{n-W4b)Vxi-Q;mz?VEYWShk*;WX7DG1@JZ3SJ^j3?Zb2P zJqa-}%y&KgvNq9o@&#Qmfe?6PBmRC4OCk>|RsnD^PL#5lejhwttjx3fc{n-wWP&K3 zeJ%CVaiFC+6Qc>w@d0RrD1s5T>Dzr`ThLbA6?Aj6~>u8ZmvlF z>o|0$A8gZ<7!3ybm|s@%Ma~#8U#R(Ei%h{AOIW%Na*cU@)RiOmJGtq0`*ZKh;iH|< zg{M|ti0(u)yv*Ls>~Z|Gkk>#`;9@&^sjTavNVoJlE=f3>u^f{c{l_-VkENH(ISqYS~$X@@%q#R-FiVat}FXe|@B~qrL|1l-2Ia*RybZqM6m8(fa=C zlkKIVArX-0%x_|&qMF(9c-}ZE9VO}8p(>(o5cQUhM(}_;a*x-F%Kmjwnniq!0lRB+o(DUm{S#9)%Qy z&ZyE50JaUb4-Y&|dXs~;IbBrE1LnfsR>9_|k^$3OlU*Db>-m~{iPWsH$mU3T6_Gz; zOkD1WEjrMBJPs_BZeo4;j+#Y9RT|B1qn<#R^{P{jO=WW5#NQcox!OIK{e{8aZ+1A-%^+sTgE&l@cY$F z+LfevU?*c_@5;61o0)itLIF%N>&&Z`5=cqS;YRLXG0hwMo{GbP%Qh&c0B z$_xy!!vrbQpxkWk zaZ?nYr=tOvjyAl1quweMqu6fd>1ua-f4Q1rmNqQ&hnvLKQ60-(w5IL2TV)W*iL9cK zANBH;DyR%ViWr`6`$c6|T~wFmp|FHBmfr2`d_T@-{d6w0t@APy^FsrI9o~G^CPi~+ zxJzk;W{%SU*wc2eqN#WuzNX1f0<9ryj712?HLM_emawRLX|njTtjjYTv(uZ^S~_sP zIZ|H|z4^!QNr=RZvF?d$c~f-T9V1M7;t#3b7jikV9D6Tg4lIa&+XP43~bOR@Fj%vQTb6;gKX9xvte;W2J z$JkQ|p_dtF%uxnb!)2LqqE7iWK8DYfqbn*L=I1am2NAbjVujB=xd9w$8Z(VxmM?2w z(NR-Rpx>MBTo=W2D>eb;OVCXUz3!> zMXFB(?z_2^DkIF41TaR*LrZF$N>LUKZh z^CrieKF-0y%}y9#;SR`{H5jhgwzq&-eQbZ;(^sbnX6d$T`0)BWbvKGfM$ztmk%7+d zHB>D_^P+$^e^R~jku}R`b&WaB`9PV4a)6Pg?YZYQm4o(VAI#4b6~s{^a_@v7OfZ=M ziMS5osooKt%}o)Yq&PcrxDChs6>7{iy?K*P%{^=rP^90;1(`6g?Hg~ekg?AyS8h1G z5FlJDvbyzgGr;6nY>u= zAGjNB2e{6OpFIVXd0le*({1I3Duq{5Y|)VQ3k> z@0?HkLUH~n+f6F-7j#gmnNQ8?F#=jwWs_264FAYQsakP^#9NaRV`?c;7)xE_6xE`Y z6?%21I=9-oTx>h{K<8N%Z|9=Y-lA)(Evn58!U$dF621v>a7q04i|oN_W-&D?E$=fc zI7aTE28#P)`14IA@7D?$BSj!zVn|xso0*Fo_jf{=sw7$U9d`Hf)^6wLG49mejy(z@ z>U{Sb&ghAt^#4@tO#id37g+!M&I`>do0ePj@IJ3%tuvSsDIay0Tjhd3q_a0?U5*3ihw1j}9*p-P@WTp>k3z;aQ9~#v& zh*3cxR-ZNi}4=Ldo)j>`|*F z4yC`4nzPzxN9vO#iS4i=9kYX-a?WI!lnoIaTW*zNwvb=2ACyH9KRRz{AAmEm=bEW>9xQ5b4o&m#R5r>7qZ46Ia%TcriK1^v7hFj>AV12P^P3O zWkxb{rb#`tAbUcdS|&==N@>hj*%u@lXD_3ryq(&!X4@Yr7c2*JUO(%vG&>j^cG9p| zND*<(5tQ0n`rp*?EVDe=EM{lnO#d;$A^RjB|GqnZEZuZ6nEYnxZ(9J#sws20aEw4i z)yz6iMwg2z2@~U3eBC63lHOf~g;H4ffG+gsE(g9jz-5 z&ENVATI3bLmbgTxMHfK_#rXxy<%oxcncy zWx!`*Wn^IeziukR!uH?uQ5`6CmE{&(qnc*cre)(tWW72OVn&pH7*h??U^_)7B9Y@` zRe4-UbMWw^>M5~v0+}V`h^b`BhzV$(i1o<{?obnBW9@}P^Ai^Dy4R!F_LtB(t=AQ| z+1H#$AG4pJ<`r$Lm{n}2DTdX9O)P*vf03yFfQ*QV$Y82H=+Eu|Q1zBpZi@-?!Y|)G z`i7lviJp4E@iOB(%g*6w0H6z;+TZecnR+Ys(&$h--)e0Pm@R^|%IY9V_(rUIsi>mu5x=L{_6|6!pej<_zP*mbyZL;-2{_jFUTNR!HBSM z?yju8xWW%;Q))p~d~LB|XtB9PDR=FyBZtoXl?xM@J--K~qKTspW8$oRwgzo=)&*Fx z=2EusK5)i)-_AVG(_#D9*Zd!x0?&5@$QK$U)c$M}eT0^my{MlS~m!fW_$4SROdLPCQ7Kka@t(DhFs zz*BES>D-Bg*HRp%b*T~FU1@5-OaB}mH9dN0A2~W)96zIRAK{yvIbc?At>3HZ$^ziQ z?dLYA4}tJ$C)`M%aCjI8{qFecaQ~{}FPAdSnf3Sj2W{=n*Xs8Vvu8Y*&>n#};iXi# zYyapSROkV)w|1#qgzPpy4Rtn2J&QG2rKwD0)dsOumN)buG#t`26EgY^L$>4j6=O8{j7j6y9QB?HfaLz}x!!<%X z#?fP?r(+HClS*cHOK}Ib9BJM;=i~PO26o~$VE9UT$l1Z#R5qF1@E`xop zK765(^HxRVkiMvq>O)d_NEY&>0HCws5oi4Fi8zgx7b|UEz6xrNHjaj8=yHiPH>vOV z2nz)x#zy}cB(Y0XOLBT#Ty%6?qEFx#=Qk*K_iB$0YJi75f>|#m1jILpHIv;>>y08e zOgJ?}O?^;q{K@>RvTWH`wz(o5aO6MkjX-vf=0I7pUvwhMOc^FxU|`%B!j>RR;jbx% z>w-WeIE9XDi$VP5$Pf}1_Fk!*3yOw1y~2!Ve4?OG*-(nD_r$IjjKko5Pqr4rrq9OB z;_YDkkmz9KV7%)aGm46{NmFp=EYv*}60;e*)Z0SCD9-H$fmqvFF1tjFaue`Ll4wd?REvAtmhr0EQ4etNPxFM~7a=LkFzMY zNJT&*lV%Ljtv2>I>XQHXmq&fM19zUClQF$XDnavyf{(QS~A|_J0veE6$97rXflVMvG2~>o5u;76R9Zl zNHsfBb(@PlFdsK%q8^V^rd|v-NdZ3(!&dpL@RU)KlYRWwi-R%=&~qS+&W`)_g~umd z8!Xv=TgbSo)q{~YnnI+eL6%#~O(zpNd>%`Zp3ggquZgK@*BIYIRW9K)jxP?FfQqHr zr#I`Q?$ku46-B4)Lu1pmy)rg|Q@XLO1>GWPKa}SCwOjxb?J5N=kFfUAN?RG*h=?@$ z^@rupxRj@T#oc|g`NVi{;_G2^6xnSqig)aAk(kK&AIXtvLVltG_er@^j@zry?s$%_ zg-qWads=SlszPjqb{@bRn<-M^RvsIrxdF!=exHSBFvJ~W0*91t+h34Q;XPimMg<1a41 zSi9b-)BRR zdws+xmymGMdc=O>zWurMem1E_O14an3)9FSGH~G-ALl6U@{cJFnK)cuhC6}dny9uD znaZl!;xb8P2}OG#WI5Fyr9D~o0Bn%trd3JcH&FrbP ztb$_;2Es96R91mI!^7qE?#G>}<9cn^m5S#T`g?cPxJF=ipQMyl{rv;}aai46X1V$H zi4Zgz+xz)Ldom|iS@VT$+YdGpn}v+S(o)KCWQXE{1{C5mK}I7|Yi{FVxpdGLfo9Lf z;FMXo4C#|SJ{vS-w(yRPl97&cD8iBQ`1F81v1-|q);n2gF$J}|-f)al+^0GQ_aH}) z9mZLG{=B$1#lno`Kv6S<(zf)2(kid0S~j122R?M8xkO9lV!8n{>@fy!z6{1$a*v2R z?st;rK|GGD92Oa)NYm{B6Qc)RJrK5}-GI5~TU-ykKm@-$r0dB&XsaHkVKLHGj$}%U z7UE}YvTsFZ?sM*PHEzbp=g$5pjSAZ*>+W)OHs)ZZ7?jt5X4@#srR`}h_Zo(GwTmaS z?e#_6P?Al^vb`tqE~A08)?uGu6G9yvc|B+N=H_hjg24PxLbRSz z_zv2XyQ8bv@SQ@VrE9O??Ttx zWxMb=NZS1Y&NtyUXN(KqsDv}o3j^cv9fGC{hcjmN{bkN^PZ)WJBnNl&S#3NdGwYrJ z?fEx&qE6nf*vG6Tf~<2MWnIi22{X>PTY>U}k&jHQ+>l`vQwqt*0hv;`uw518k*f5D(n@;Pi<*gu&dyJeddIID<2FiW%arL}s%vLA zns+}H#w0S|dOMWH#A-DqLV>n4<6PEfZdJW;SeT@bVZ~EUnAXGU#@mOCtv2DCDK)$* z<4#rcdDJ@0$B`2it=I(y+_QPjcVN$AH<$i8FgK$K3DeGfhC-||{upbi?F2E1?6+mv z71m*=Z3CWac^&an0(H9Z9lfW2&tfwMi-JSy9{u(--br)r`LY8hcNH^a2B&F8d0{N7 zz0B*j*sajzBSR)=!}GLwSM61_C(B_E$B3@s!(jv%|1A>)9G?0$53bw?_RVZ&Ys>A5eBtz zkj!dPqLud*a1+}Z6*|s!B)#*lNoSh85HnHYv35zF}j!TA4XfF25s*|ADPq<>J@9-=Rw7 z1O3AoH_t!@8_AE(^XgRX{rTzf-AUGjq%>Nx`?d6yb`!BT-_eNq$NYG6#ybck^2I=J!|# zhU*$#q9f=>_cVW#(BLb6c6ck4DP3yx`U_%{a3F2#S`4A#VGrSx6?Z)SBOY$OzO$indjGbDhs`(|Z+y|K7*pio!znk- zU9#yfhZcurt^Pc#9jXmq)rd~3oq53J6s6@f!8PqM?I6EdHN+z%c+vG-yHnf27RO*; zNl8g6>gb0x`q>T`;h!ySe2^DF_8KdJkLQS)%g^V_kF)btqwLk*CBIrn=?DWV?Af-X zbg}e-Kz9!xnM6dPSr3OU;X7o+*&LhMeo22ZAX!3G&!O^D67n5DiKvg@nfZK`IHTH3 z7n`lQil(e^itaD2*+;0Rv$u!Ej{>5K0#xtC1|j5sXg5d*YDg4+!^x5tW_(?7A^hgH;C^vsA3-M##K9w$c)1{8&3KuJ= zl=!kFMl*;T{a+-8EWUtL2REx^38kRMR3XQU5L)kua*cnohs7<6|tnK#Vfx2H$-YHw#|2g!1LK+7%zMY)%m|x7!XGmcr&?0+|f(seX$S*a0!bz z+VSSrtefV0hSvbk?mNJEIKJ7$mNstwP1T6;-&KuR7#RPrRUHAO=4t( zf944Z(bLBsVNc=evi?l2-8B8S$o}cLWU(dGL931ON0ZaTQU%IW=Y#uj{p#V+1J)IX^LCxE- zyS+LA2p@j54v5ik@w2mUnLOn=Fy6nu36H2WSt~|=iME3Hl;UP%U}0u-6zwtc)4~Xk zkT~evHKG^)AOp{S`|tYr-gVjMY00S&Jkj1A_KpZ=p=xBxxQt!ffrEq&-TQOm0KhH-521|fvHXTDg+3uRGjwJgZD~9}Da|D!&)Seab#3 zQ2GF4vr+kMF<-cTeSwxGU$I2V2PQ_W_m3e}B*?lX10aq6CEz`&CckVUK^2XK0trS8 zY{GmhsY6(Eb&Xg`m7cZ28&wLsOsJP0GR@h%xVtL#jhI|{;yiR4Z~sQYpYBj!GU4Ev zf?qNH$2+=tpvQ+O575Uz_Wxn~k-<+j0*V6!`_DG|`|+w8EP2Bt4%zuIX8&*7*KSY~ zCQL#{AptmrpM#vg5SUq&wn)>T`rhr+nI8{;8KC$-F@i>O#7A+uA`IprA6y?`jGbPt z`cWeLXK|nu*t37p=9rPAQC%JIqlOp0pq$g^pHIMEw|?EeeZf8o<{@PSndHIWQi6Cz ztJQZ!6!`03=TN;7l@4S^63>rx8iKsRmBo4p-9W?)y6Caac=83>C|%LEha7tOrG|A5 zFeKum7pN9YE%KbDEmMtE+?LgssZ|;(5X%&*m9Um;D^JUJRnRJ|meGDGd|vs4pH|27 zvvAJY9S(*fkjP}S|J%uVZ-_U?zb-8HX6L$r+lM=--^QQU#r@YCe@C3VvycYLf_LV6;@ulEze5X>!WzZUJ=ARpDxLNvkhp0&ZA)tFA%oR2$(lIw{WQ@BDeUFkr~I~YHL zaL%)yL2PET3Cg$G;<9J^Br68i9n>lD^90NTI|?Ch**92E5SDqSnJF&A4nj9dWe>U5 z6C95Y-qIN)hl@FWW-{l$h%8s4<=~E!Ydu4QEaQ9ZdkquPm-A;UsXt2${sEBn5S-a@ z2>j6AuDevy2Ag4kUfOx3e2FqRX^h|zxy}gO*I{)-!z{J>?b1rE-gW@X=j=5kBt+_d zgyFG8S~K(h%4rl2&-M8(%Y(t^9A+*Lq>v@x=Z9Vu4b3d)Z2$b)$k~AbTB+(RrX{qS z!(eM9=Lxx+vyqf?Z>_5$GqUTz=X{-OH%qs9PWkf#W$RHcFl{pd=Ct?up~BZ&UGxHP z@iA>A-SE@n*2Rra2eUQno7RGHO-8k#%BcUo%A{CyLo<32}*>pX|c?JP&TH>MJ4VF6LqjyTVhl+?7RmzBXO z)a$&WL8){?HKoG~SH`Bxvzg(U99B0uz78BV{gL(VujW#ao~2cZ`JOqKQ|NJ2S!v&X zcsw#hqv%?f!Bzi)=pFo%F<-Y#m$@|*#`im?$4UoidFz%Kx$W!l{S(fd8q}j3(h+t% zXnRo6$RKBMO=w!!H$RU(CT_3OW=oDU-^+HF!=dR$P7nKZ9Cs+rOsI>i(&@wJ1JRgUJHsJCSuEGox|l?S22+oi%o7GcT-u(7Xt7 z(_Eh#v{I4|?h+;Y7ZQA(}TI)3YUrnc_AXi(J4Ph5AJLG>g~B%@GrK|*Ks1}$b}kt zT$4!Pv6`Mb8zx*~m?()WD8F+vT#UNRE5fy*CrQ}N-zW#h+;)h{LZhkiC)VzeoVu6l zK+rA*z1X}T$eqa3{df1u-J!1*Ms@SjU8rc`% z(IaZam7B>C{&!4}$|jPk0Rh}X*C#{^cikra}&oD}VA&Dp{&@lTjMvV{~G85GXQyes`v&U2g=;a}?|L(N$a zSy?lBsZiD!H~^a2>LDSJXBS0i_*_rcfZOW>R}0id+(=w6!iQu@NohHigQN6}wW&#G zB~MQ>#=VoFtro9WjxfgImG0A-yN3vhr<;rl2F4-CM&ECT@xX;y>*v5S1@RDJ z6k`^{n^*qP&enEDjkr+r-qO(_&-*65R_J1uPoiZGxf3h<2E9h@@fA=ax59SSTLI%WGy3<+1X(-R<+^;xg7NfxX%( zag3QJ05)7sG7O1t)7{vRvzheiqYt>PKl(59_@~l$GNNo~x^$?c*&B z`knc@p_=&Es{oP(xlz?KLsZe_@IJ5T*C<;`s|}&5m0I7^aCkINdTlPEJpAGb?&1uV zsknrV5^C)pBao(hdP2TG_Uqf&Rt^|EPuR{-fck?A57?;0CEcs+m}u8*sZd;#)8f{V z)a>e)Mz0gB^Z`IX=)n!}GTslT1MBp;ak&6u;7Vp%0-P`6zxJF<_eC#%k6OhHwbq49LN?cs4lI)&POVsrT# zOza$3qhPww;ydXgCb z={iyH&Y>CLy|41Sw%4X}Dv9c~JYE7ESTKWeJkGNoA6QFIQ?`pE2pL-}tY)rX7(1yeG$AS&smPI%aD zSm0oSM8_o=s<>%syUPj=)*FVyViUFBWfHr2Iw{p;mCui^?&@mS!C?cg98+dKbO&4^ zUvwSIu<=1%j>?=@;p>^_F(BpOp8Q=vDy{8oRCjXlWW2p+kVW*r(ZCu5TPr^F8a>iL z6kB{iR|q!YD5=6%VcOHXmPuEY%bZU*+BAN2X$d{wxyQbaVh*6*@)y3{7g<$Z^un9S zw#W;eTJY}Wgxp$SefolfAn;UGsI{{*_3G^{Bz;AO+Y*ndT%jZ!q%Jf*M={Rwh_vgYXbuELoma z94VkV2$d80IWaAzVZ?t2V23DAzPaF)D2e50z@;T2*ST-RcXH@}Do;hRVPw_udOpv$ zZ*{ma>eaB-wtD^e`xcY9J>j-8lbhvgYZ)>1{N6$QYQa8=$&Ar>AXUW#0sW{2cWS>WCN=CQ8DTjNm5kn{m+^-+%sgeYNvM!Ql+%?Mo)of!XcqrbrobIYtr+ZUzJ19Z`&Bx-*1d%dYT< z{VKEMMwqECvTY9IJNe5mB@8xLfp(E#1jwytWhdjgkE1;?P1H6q>snBh%Eat?Z-OIY z2qJTFItD{KAt!kQQd5ITxc^>?uDO<6SsSAJK%ucNNNTQ!Po52kas$A@2OU8@5NOMO zj~O2bqU|Z45E#Qf!mHL5HB|2=5T$G<6v=F3r?I+8`u7L%8n|#htVK%qHvc(Lel#_p z74HRIp9fx8X*HbUB{hr#5lrR|xnij$_Bys_DC^rwR>gN0P@a`U3i(4RW+l^4Po!%f zpYi5v#Lrr+?(CIc>O-*TtK%Foh*z1`zP|e24X^{ghj*n?w zF;hM@n}5>hzV5BF7D$(ruO8o9Xmz}KqNU1Vtw`pwQj~aM>9W8l9VuD?6eAHSYE~jI z$Dfaob+CBhBx^IKK&HcXI+)wOdju}r5s!}B$RR+*T5=DYj0+QbmULAu@R`#YrdK~7vx@1T`kCo9gr(DPYy~W z1~re(j3rVaGT|mAG!M`QDm31_v3K^s-CQJK3%UuN zT`+)6eIB(&9GHs85sc<>9~+39;IA9(U3-u>vpSq=?slzNN5L>Kt_V;!NcU6)gnJ>1 z%wS*3AIsKm<=9bOm>!dh+ZEH&?nXOO2@-v@p}|4HpwRPgjXL$)O&V zEuas2WqvevKIq{6MlU_~*C39;NHuhfdGuqZA!qj9z#o89Z~W+q0Qw5R0iGhm*b&?Id=g_nITT4FR$EbXhnDPfQZ4~fs zUPJF~eOb?Ike{C_&Sy%a+tF>tn|-R=gU_}oJ3TbK54m;NZ=-)x>0XP=Coeyk&AeU%Myh#4#7U>3unr1qpaFXyL4oLn>k5+`))P{KhZc!L z4#E9Fn7@-S78h;7ShXq%55+71^gw`-nVO5rJgA&ftJ~e@J2hIZ``G@)J^7q5GM&lh za56pdhQ|+fCMp-k5AgMEEJ2m=a{(am5v+eri8v&CgCGj&U(=1aemiH{=0W|&#S;b( z*5_hpWaZY?CeFndMvuMjh8jdVhyX!dAcNmrfig-ghzyD?LL$5&8R`*x3bg<3dyK7S ze<2DqV|G>VrI_OPeObeW$LaJwCfp_Psq2O#pdzJZ{JJ4)J&6B>!RAB3>S4?kMzF&^ zeB_{kiPO28Fq+K?e&USunLIp1Ol{R8c(nf^@Xo$#o_{x)wcI7LbHlq2erhHDal#NCH&DTHT)&n2`L8)JPw&iHVGUqDb~?}@Mr$Kaek zHay5PI#3AFA343gkbRZ{?K=g>Kvan0DNj~fn6^&;wM$C{79J9tC%kEkX zSls#Qo!nL5`TbeXl4MSWZivbzT^*|}!l}xK3+CtchK{+5wk*r7`HRw|auzzQafb|e zgh+x6$ub}`FX#<2N$&ueYVJ_nrb3P4hrBuLIt(uoO(=3tN8KEWN-{PqN?U6Pp;Duk zN@1t=h|zN{6p!=;Ns-sVpK)G_#tKAjsJLPs0Gs` z+Haq2_2fOe&bw|Iw(^)%vC{fn z;T;TCYgkNJp&>7p-5v^%JsQmW6{ipI%@$qYih%rPzmk!P0CC%DJ+t^ex~Dm!p#>+O zhCj7{Ty>Edvkx1dP_3ZdfV_vaRbeQXC=s-Y3%P{yr~1593l#RB=6GcTZ+q$aJ1^=N zF&Uu=TE-x<&QH%blf<;ARROFaCY?Q&?@xqOBFVYYIf*c zH=X&oZaolOJ>F9^N4YVXcY-&y`^r2DAcPhCg#bf9yuX*@*EzHK|75Q@WJuJHQ0v=d zP;|7>oG1zne!nk)f!PBxR;S9sWIl(x;E~q(y(dqpzgsRi^3_-^EU(`wtK*&b)CIGshw@;`Eh_R5npo9Ank^_BL!bjBDwF4n%ZeohdG|H;D`nf$kOF?u zRzz^eK0p)Xk?|0xI(WeXxDBI`?>?x7~S9}-1uC7DCGv?k~Sb{0?N2O0~^Q5_KXD= z&tR0|@-Pk6KL)=?)iUl8%KCZrnL0CDJe)Q*s;Gwp9MNE`4EZk8>dbn14CM$ASo>BDGm8bb5|sEw=eiug79j{~T3PN>VK@ zAtozcsIa+Qxn67G_4=e<4oLofe*RQ~EmJn*t!bav)=`E*pjxfcXs2X>X-)}TcpG1^ zx5*$AhyeDWv$ko|JD!ocG@fKRy^=I5K0YnfWUO_nR%v&t{(eCUk6Tl5UG-zywp5Ks zjJfZROhfj>^F$Y;K zLvaDX36~gABq*zvP=+8|b5QjFkCgh0zKQ^7V3;Vs)i2jV6%4O1tgx9`_N>dP${Ur# zzH#o~n4A!dzdt0v+8aF02TatC(th`)+G59jj9+F9R)o03-0|o8vp0|5+es?9u3wP%mpT~v?%Kss2 zc5(5M&q!|lb}CL)N-fEWZ>&VYTKVh3A>TPvod&o&QAA!2|&nxc|1vlAn)@M6gIdz9h*7?2MBB>#v4gz zSK|fG^=3Mu?ZR4HEZzcVXn1h3B&<@>#%PrxYyuRvX;ry3iJk{|(A_l|L)}LLOFD4e z#)b;{#+pe=B(ELhJisi-{1%2gH~lq4DCMq(Im$MECx0}W>doVYNqib~NNf^b2!6K$ zsplgWo-AYmWFf2>+a*!p;UE`|fh>c)5b6XqSkA?j21i|sN=Hz+JpMv!`^+LjkIsFD zl2R`f7$~bk6MbAZsI?xkYu&|mTbR`B@M`jEHWnBW~m=tkUV_u z8{DfSh=)RKCH2XpGE2~?i*Bu1m-Q2!uhDg`!}>0N<`3X3)h0w^l`?aa#c*S_?ZG-L zP3xg>Q-ZuwHnBczh1;H5_N_nPlR@hmf$E5@fZd&0 zr8;G3AN5$Ua_WS~V~$L+%}`BJabZBzmXiU!e^=@=9?D4rh5cU?aw|Kla)mZ2mnrYGRD}XQ&70SNUFG9V%qiAhYm+UACkV!B@DP0x?E{> z`-nx~UE^R9akGf-ax-kKj*hx1tBlGBuFz>_#jMQ4{z6y^$g3S=&|XbfT5_st1xcuE zy7#ZY6{^o)kXF%~IW`b09E6dko?ulLgLfo-Q7j%Vwt=^xjC^u0E1gWX8vEv% z)jzP~YS#Bm=L~~_W)^g7N{do}9i(qyOLsf#vRdX;ao{R6bFT6s;@9YFGB~c1RT{RW z4eSs0=oS0k>ulQ1>f8K$9X=Ms1|KQMIJ*>VnA}4h&?UoV6BehO?eZ#kA8qsCU|KZ$wj+7sZ8f)L`gd=r;P1_tiH7VY&(q#LukA*$V)+4*U4SQEx#T^V9%X5MfK}>OS zJ*fTX7gh0hECv+OWAu%n&rVZ=qJ|`^M3avJM~>_4OzzJ_X*x53hKNWXI6B?bR3%kbXSo5iyu~0z0G>9R!F;+R>EiAt zF6swPy?);#23!yIagMhr_fR)_7SLcRcq?tl`YX;SIx3{W=o=4@0d>w;GTowV5GbDb z2CTRn$ami`HL~}LzD0M;!1IBmT3!B6VGku9#-+?Fkm4`p-9t~L8($-&_fLD$@GG#0l%JN`d+ zl+dENDAelNA>7AK7Y~BiNk$&y`&I1T>3NHJcB{hI{(6jD*)paz%GFniY)-6P!3XLD|qZl_fMmVPNW0$a}W9c=w58@1MZh6jSNLJ$<*g zyZO1a>m6XPH?zl@Qc2qpufgXvPH(HIeBA z^m{H*z5Rq&1JecZkrZ&vtKPboTj4-d=V}!~lQz@^iVA>>QUYDDMVFH{JkIk6X0lmx z2ZdGti}eFA3S)=80fG5&!$sQ)7`gfdXQbfQW0`I<2j#FS?Y8@rEIfpnqdOQ7SnHwkj6Y5w*@YX z5k1qsGoI4NER^jb>@?PkDO&$3xuK-wS;f_aDm9tRY<8cU#$4Spx@Eb!=e(BznH;|U zO~ZF>-;F?*in_GcsPfAb?oQ`m^SPf$Iz9LIL2paC-w!IISZcqi>vG`TGAbFDNTx57 zO6Z)A5jhvo3sJj_ODP_~=xAbx2e(bPaiYd}k))IGZ>$KB-&+x$aReHzYEgnvWXvdz zDM_F~ZWBOAad{R9ukQ(^Vf^S8MiQ_nWJu2eYC${N{#T%45A;0G;lDzo#u14>q=#RO>yg8$cqcKUFnllOe9WeF*+VMBT9FKBgt0UO z4t#zrR(RpqR%j-e0q5g?yg%X*-*93;|EL<@bK;SL zJ;)ef-Toa@)IbVR60^ksM9$9^~C-{`U3gCeWRK|Q=vu)3Wi2`!~~A(WJe z7D0V!>#ZkKPn?Ib6d$G8(W*IL&svgFvzy31FpcN}#h=F`O}H$@;X>@rg6R zn)7iANn$6uy(!&Goi%`+$8y~wWUf{03&XXWMS&u*4}8?|%YxrWAlxe9ZvrjU%~-FO zxX_rCZ>DC#=FYCGX$j$Fq3=7k3dMYP)i8QxuM9lFUw?ZUY~2b@4)i6IjIG|9@iqc1&}Q4O85#F-YXNIzq&1Q_s+c;pKog_)=&GX$zn2! zESQwQ1L?&JSBEvJINGfnCTv@cPSvUIJ#xsHb>1+l35l@!NKHOL4m}!oSbUHJbsU#@@lAUxF%wZ zhTI!}Zh!|)yRWP)K2GR9J@A+0?!YH=vMTj_6x+Dxms%R0*!eNvEmuEaTTgyv82upV z;e-k$Zwf<1$Rrrz*;0{c?;l&tM8y<*Yi%~&JLN!zQO(ShRw`<$;?i)huX#JKwXGkQ z7B%pe7d$bMX4| zUL|$1)%04Z?$8E+UaQW)v1e^o$jLG`2pLD&(^h076QIr4MJrbQKDU+iemUGH`<)=n zg~$v!rOqu|#A>Waect*j)!EAUMigTOt$ zc1}`r0c(Es%tk)c3Z&|6wYIuLAHxXBfgKNn`XB?T&6WX8VHz3joF_P@E-o&uRWo(<1aLcE$600JsQ|@=<{M+hC#EEY7IFp5ZJ(OhdP|%f zA7^aQ>FzvOnd%PN7fpS}>3$X&FB|{5v{bz>5Nm^Zk&9dVlGSCG+GzXgRfsNT_}zU` z*I~p&JEql*&uJ&H%<AW6=S3ZVyBb4K_nk;8-Z;7Tc_-JeeFAZ4XxDlfF(|3 zmVkLo5xu9RFK#*=-?Rr6!^t!fR?r|)@l-ai0f#L<5A?>*u^OLIGOum`i+^3jJ5EYx z^3Fz3O3*|jY(J1EMyAPF2^$tn za0?*M-3yzaEgXWu3S1DF3n0pCaV_9bkqj1%>J6;W{q`ZC48Bb^kJ-Nm)ZyxKtCw9v z6&a`iLq)%-#lr6XgPUWR+9J`GZdikmLKw#vcuS@tMp{o-Wc!5C;0HKms|orK zd6e}ZN>D5uEdOf>it*n&#+`6jYbcMkGB>%o)^AGrhvQk3iV46$jbNbMe+vwtN1`iI zf8s5%%jm-LAR_fY0nEWZL?+> zG{ia0efNI)ypHW8wY=tLw5(RY%CHSW6r?Fq9V+DK?HziAK}p}0vxjg)ec|Nu>r`pCEil_1lbz!Who>7K5fO*# z;G)IFgRBl!bcV;=mt$G(`{3+z*Tl|?_IxD03I^kd_pf)pwFkTC##nGx>-V1`F2w|6 z{$x759ApJ~7%4cg2I4s7pThpIGn6*W!sHa|>KhKONY(3%U27c_M?0%`N9s z67*>P$%o_6uN<1$VbU~RcrjqQa4#AU=tyYbhcTWPxb#>T;)8!eBA3t-MLo}Oo#DjunW(Cs)v#R3N_?n{vXO6;Bja!34n ze0zm-6_nHwG+S|8dN?EUv`~}+sOEa$!s=(pHKAosCCJa0QwX}bl_5F$MVK3`24|&^ zd;TXN=kDRG24ZspJu^WfB9n<9S-Y+AdM8!Q~Hd$65yi9jq4SYx-C>I{%}aHkV(v zed1G^OiFb;PO6I3jZ|mwz#xVowF&fCNL@%>i3XP-7MX0qsnjo7P14WP*o@eR-}2v| z5Vm4F@&TWG?@E*G#H5O2sll~L_$g~^QnD$m54_k$42me~aGIaaVjNhp zdUOLh)4D?y#}Ei9FH(P@8U#RUPE^X3))AD^FOfdYZNaSO5XNi9u;yf=wvlFBFRKRG ztwUEy&Y1o%3lTorsUqq-K`;+@Up_vQ4xuRovexX}ADOvdH5;FW(2DP}}``}LWgvZtKlFPGHWRSj~ab@BT z2Cy$|`YVqSPOyNuWV~C5gpVF2$B>>W2UDn4_AIMg+PtHpoHFs1Jw2*L9vwjhs36%A zv6;wo2LV}U) zx-$e9$iuT}z+mIJ?k5cB>d*dwl?#VhQZ3IVuSVIjc7WftwkOvq3u)>oX(_nlb9-v_ zUQ>&Xwu|IHuo{Uour57~ueW<0Fm-Bi8*N89-G{QB!N-Wivs|34xiUWh)roLbvtg>A zLMacyDPfR~;8%&Wbaa=D_45FwDXN7B3`ToF0EGy)W;eUh)!RMIWVWwy?9u!;a$9cU zi=VHSYXu$^l37a1iAhS5D?c^bk1zIfeDxX*L?zP}G}4>}3Oc+hPJJDn^;mW5Z!cTe z>?Ngyi`U}2sK<$}UP@-qr5n>-O2p5Ac}U08a{l}5gFIoJA?F(7*oCZuB){U=wQRMm z%_CT(QqXg_*MG(^Su$4cjqKUvF zB2WkBI}0&sgKXoT&>651HMInhjy>o-My4)#H6zK73a6saK+l7#>vpQ3Iu7e!pN763 zxOZcnb#$!AW((QRUp?JEjV4Frv;NiiBC5h0_h@dLUKK4!-f*ich(AEqWnIyw&oNO2=H@b$R@<#KkDc%nYTvyD>^-CYZCS z`ik$S(b}(_t|hf=X-V}|bA}Et9m>&Zcw?yR--t)oTSkwJEzHc4s58KKB7G@P7l@ce z>B*G`{_^aXN3iZ3*RL(FBNb~BGip=|Hb|EbeD{sUAFYlwBvn~6pdbQyZ2#rl%oX37 z4a8wP)(q6f)Zsas!IRbJsd$~!=rNIiZslOejRvP} z=iT9T_M>|oD6GS{a#%cMuhB?aT4#5|DW0l@*VjZ!yOpU5XaKCfPcMd4r4}38N1Ik# zTkQ@Tb~y5l;z>qRrqSlMG9!P%>@;m|PpY$adV%aVw#yNxZwEz}hNAnL6W>6lRE2Zy z@>qOvQ?B^@!`zs3w8jnlKttdC0k5usPDQK_k||l^01V~v0O_nk>k{_ofWJ1JYoot}f#@axrv;BDWiJ1#7A$s|B7;<^`93*G&oaE)3xm9>5RKF>-~cnn>%bG-1}V$SK-0f_peE z!h;$3Sm9v;fzpm3wXv)?PPHi*+0?*Ax5V|`l-aN_@gXAY*GKtpK+)SY=H5{SzW&wM zT$#JH-Fn$n(Oig4Rp$Ajh>G=L(V=~gOO~}H^=h|A!TI(Gp>|^T7>156IxSYt)M_t) zbr=L(JzG=&Bi)?(m<=X3W|S(rIwy*&oxa*=YK?ZAiHT;WcrUu{qpfre+1!u;L2es1 zmTaESf&d#GRDj8EfUkH}D#$fJsX>s`{w+-Bx1H{_VzL{YyB{L!lGxwq_mKC;Z>PPt zs|}};1Mt$1_O2s`b->Mb{I zf&GNC3R}yXh{>|=CMKp<+o|#K!)TL_xj0u4+JRn;SX1}ENSm*&L+E)KSlIC?eh}ld z=iGjJ3srv(=({z!h9c+=B*<#8t%fUNwIOsSJXtmMP zj9!kT+3%r6g~`rr_OCpSo*r|%0bhyw$ddF+9F?lujnmE3Ih>l58KGl))3k6}iX1-n ztK-0((ls?{Mz0=N;qtmZKDs+OU>_wJnfkcilg1_sj9D{=1@1hlM%X-j?i)9F@8H@e z;0;}A=yL!@;SWJ`)mlldGX{55l5cMioTiWjWiPip-wmY7f9kyv@I2xy6~K7R0OI%# zBc41$#{M9MEo#NNoUUky-yRfz0pr`fOivt?CS3eo513svm_?(|H|wet;fdjb*cqd{ z$H52Ma^AX!x4dG4006%clskKw)CSE8f!9v|`v>E6YPj8;8`OlnxJ;$gTO~H@c2N_9 z?HzUFBru2*6Z?WG3O^%NjGVbsDBnvGgGvfIH8g~Pd*hJA^nLLo6<&UkyB+fOb7~7T zPxsh&7ZimnKO7hz78q)Qu5q{ZW5mMIA<>(GhKzu@R^%G}T>B7t|Mqb~JaT-(si=Ld z$sEfv$rM=flaKH{fHb6-H^N+=kH>q^qz})&pR4aa^sDb43}0_BTW}cp+J-R`N1sQt zQwtgpny_%E*Lv**x6Ad~!eeuHb8&Z;m35nql`Yeb9c4c2$+~`1j8q|C!gPBIY@4c0b3!Z=CFCAM3H_ghRG^e2Sx#=cUONl3>UDGP| z8-4?nvmE#h0^s_IIu!TAMQ_%Zv^?Ni2b91! zcURK9m)ipgFS+&2N8n)o%tS#MaHAVfC#JL2%H(4dyRBtYhR69%Xr}2%_Z%dAT!^3( zP;%W@g@MyOXGx<@O{`AlrKlceW|rfdJrtVY1wm8Hu|Zp&#$X?U7!y)Vl!b-~brYjMA*B8(N};G~fITXeUg5(ATAKGEJ98?7bli z9Jb7#dQRg(Ff2FNE<<&`?T4BXfBN|e6E;kVy+N-4J!pp{uqW5Q__fLPH5xM44biYF z3~`zXLp-gaHw&~dIilz)haK)}q^o3V^X5lqb93-r!*lGn2Sx>Q`x8j~c5Mb*kNBds z&Sov9j<&S3l@*9K)>c*u>gum}H0zt4`IrzJP!L4WVk6NA;^@yg0H{VTW!*H*PS$I+HcGAhXu`ntL63N8WXAkXYe(T6>`5n31JL9QV*GS|~wkM6_Dq z>%E>7D0IJ#JPAn1yLdN>}w*@x^ExzctA2>8|zOPl- zO&ox64!n=Dd;AiAzhm^h8#8?8C^d@f>0f|YV6dKoKB?y!rq>5{0Ac+<4J?1KM4wl0NFA3Uzv7th|7>$0tVdfd!J8%wuf%=N8m;b?XVEa$YfsvE#e?9fe z$i%|*e_IYUsy;HyrZ~SmeQis~HC0_h0{5}N`jav@JoPc5g-9#jnn;{h=Mz=q4q^UD ztBaCR!QKUl%j4S*aYAA1rA7SCu+-YM<(wlXp;0tD%^J*B6n$5ZpMZhWs(w#AUb$zV z@4b9`XT5#5f&l5kwEvO<#KhJY0VfWS{x4J=%DFn-B*2j2q;K^yen#{i}1Jwgr?L`{pKIivd~9>NKC7rBL_*}HT+46EnIi#UNi#>%|*oDu|nSP!I}Sx^Jb=-L$@B( z-y7*LrR8)n$b*jFR{g=^AVoUJMTrpcyh(WFkFzj2WMw%@3`do0zA-P)^7f(Lf9bNV z9YwOxB|gskGxK zt@JAM04HW?z+z(_9O@4W^(z~y)y&>Tb^Ch4WXoH+c+3>!`5`3IYjT%UcR6)^W@T^5 zS@2uYtEWPCIDb$bc_-?9A z2_Me)er$E=*&V^rN*8YNjMXOtfsJ9=uQ!$f8tt)-WQ%953c7Fb!vTYT5$q@t_}wIK3&27$QzAuWAXK>>@gl7x=`PBz%F8WXhn{PAc6aIUe9^> zBOuRX^E!0xBF4?LM44Rtz4iKcqqoUnjywuJ%@ta+&(&7o7WIP2!D9;gL{WQcQ{K$E zxy{YnRwYX3zSANi>WZ3Tfga1HpGws#osi#rK+A!fhpkPCdA?QK z)7d~XWxFEu1ADoc?Y>ac3C$Hmt&u7BNwTRGR?C2Cfq-^l>77suZ$w>ef$9Q3)B;xS z$q-Qpq6iDS9!``(jI=K?V|<7vS8w{{DM3pb7JacoIRdH{mO=nP(3KHAR|xa@EM6;I zNe(@?=csB>1e6EbqA9_PkM&=PpfVV*QBgF8=MwC^WPI5Hyoy+>d4fk26 z8J^LuKRM>PX)(GnwudxFi?Et}Z(k)Ioyo@ob0;jh>#tZf7&n;sao~dAEoZcP>N@xF zf!(Ulk<`k$uT5?!$z^Pa!D|Gg$7tgrQ>_uGQjtN236+g0>9helH~TWK`8KX22KKKy z+4pu|8wF#8FZ)lJUMh3B^(nVZ+=Bx;zd6b*c0tK|e@#xY@@@L8N$P6CZ*m{t@1(4LU1BQtqdb8qCV?6K zgBE$?r+we=o~pVL_Gf$8@2=MkZ=Ki8h8Ns$I7PazD3Iw)PF8Qe;X=Dbp#Zts*q8T9 zc85@bf)ol1l>0>>=EdVzS%yBK9^@B(RIcBm%AL=ID^V&u4{_PJ7S(FRK58z|Zs(vC zJt;o`C>#*HRzv0V%YhfO8ghiJNM-aFkM)iFYdObX-J!JfxR89J1GM7-u*g|@tuDr+ z6o2=9{DZCbN|G_I1wO!52)|KZw*(hsN=?b#JaC@Ib**Id&uiu#k)Qg297@`TI+wf> zne$(vUGn#8?~J2K`@NruhXiH&g(G4KJ9M(OUW&LhxNJMOH3`g0?-sOkh{I#c{YUD= z(ZN$DH`otv(L{Ug(rTKbd%fI)PYuMNjjLjyHq93JbB;L*Z&5Zps3xG5Kn9^>9h})5 zv#ccPCBtvB7PZC3Z(mWHeZH7=@z$SyVyP-3GID&ldXGEz3LoNs6L){H39^ zPSp29E-t~}GqRtQN&No01*;Ld8uMf2a&b-j;@U1JRSK8)2MEe#Qn`Gj0RhQ%>(2l< zX4(YNiQ>2B^9-iQC$Le9?Ue8xiA)(XsbZ5%LCWMviJ2l)6@jYq^wkBjHtmRsuqBj0 zvly8pytmi8c!|&3EfaxM^vj;RF7W+h_F)uDM|%?FbXkxY_hiTVcQ{u&qrRvQ{a}s!SZw&V$YI;DO+cm3LXhgjyTr>$hf2JYcq(()S60{6 z4Uc^(!x!W6^FCa>4DvIku(&HaO71nVyl7kk9$eIpvhVr*&WzIOorbeXu@_&__tNP0 zeV||1Pi{17K5}e$y|pyPi2@&@*gGU@n$PcJ^Td!z777B1hJRI7d@w=-&@K%rg9*}O zyn!#e@rY6N4VQUqUTEoU)Iqt%pl#mB7-$#Q4Bu&OuG8ItB86nI5?Tcf5anGBoBIGm zmtIq-J@0Lh?zC?xIl=Ia+Ux2-YNZH4)91ZK`<>{(W&WUTOgg@uLpI=`4ZnSiCl)hm zEL#aDFC@lWtbXcAaoqltx>!&2%7qzkf~VBvb%kQ^H?v>uJaykp_rW_h)$nZnjK$tp z)Yj0lS<4?S#0jt6U>vtr>l})6ijghZ-?hEDwN(nw1L0$ zvNyGNokb5>l&wgManm#Lh1=EX=wnW&pZa?vD`63pH=b(*NE1DiIP2HgR#YRmKxi7C zF^?!Q?kK~!<5V4vP#ecIsx`=Ko;-I3d3gsBrDGLTxCy)`_(Owk!`hnIEhkcz2okWnX2l`jb$Fo-VfK~k!q`a z&6eH_H`DhxHoDvf*RZ9ngTuwe(%Dte(W~l8uQh|SHcg+#myOo+_&M*^rPi3BHBz>Z zu<98nE0A^&b!Zu41B5Pz3ovzBE59|rXLDaep^z#$Zj~#m3hlQ3FX>#R8Gn*}C2T{x z$UQby97BxeQG}07cf;JK$z0FLpJ`7o-8qLB@YNB&qsG-WH}?C7f>1T>+5A5ksRZ

pHhOcbe!vr&L%YXr5aFE`!Ck7y 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

s&Q0G7ICS)_vsrK{S%DG(iz;!dw{=N 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

LuAA45qyk*u^VYqWb$De3!Y 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 literal 0 HcmV?d00001 diff --git a/nginx.conf b/nginx.conf new file mode 100644 index 0000000..6251781 --- /dev/null +++ b/nginx.conf @@ -0,0 +1,122 @@ +# Nginx Reverse Proxy Konfiguration für n8n mit LibreBooking +# Beispielkonfiguration für HTTPS Zugang +# +# Verwendung: +# 1. Diese Datei nach /etc/nginx/sites-available/n8n kopieren +# 2. ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/ +# 3. SSL-Zertifikate einrichten (z.B. mit Certbot) +# 4. nginx -t && systemctl reload nginx + +# Upstream für n8n +upstream n8n_backend { + server 127.0.0.1:5678; + keepalive 32; +} + +# HTTP -> HTTPS Redirect +server { + listen 80; + listen [::]:80; + server_name n8n.example.com; + + # ACME Challenge für Let's Encrypt + location /.well-known/acme-challenge/ { + root /var/www/certbot; + } + + location / { + return 301 https://$host$request_uri; + } +} + +# HTTPS Server +server { + listen 443 ssl http2; + listen [::]:443 ssl http2; + server_name n8n.example.com; + + # SSL-Zertifikate (Let's Encrypt Beispiel) + ssl_certificate /etc/letsencrypt/live/n8n.example.com/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/n8n.example.com/privkey.pem; + + # SSL-Einstellungen (moderne Konfiguration) + ssl_protocols TLSv1.2 TLSv1.3; + ssl_prefer_server_ciphers off; + ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384; + + # HSTS + add_header Strict-Transport-Security "max-age=63072000" always; + + # Logging + access_log /var/log/nginx/n8n_access.log; + error_log /var/log/nginx/n8n_error.log; + + # Proxy-Einstellungen + location / { + proxy_pass http://n8n_backend; + proxy_http_version 1.1; + + # WebSocket Support (wichtig für n8n Editor) + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + + # Standard Proxy Headers + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header X-Forwarded-Host $host; + proxy_set_header X-Forwarded-Port $server_port; + + # Timeouts (erhöht für lange Workflow-Ausführungen) + proxy_connect_timeout 60s; + proxy_send_timeout 300s; + proxy_read_timeout 300s; + + # Buffer-Einstellungen + proxy_buffering off; + proxy_buffer_size 4k; + + # Client-Upload Limit (anpassen nach Bedarf) + client_max_body_size 50M; + } + + # Webhook-spezifische Einstellungen + location /webhook/ { + proxy_pass http://n8n_backend; + proxy_http_version 1.1; + + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + + # Erhöhte Timeouts für Webhooks + proxy_connect_timeout 60s; + proxy_send_timeout 600s; + proxy_read_timeout 600s; + + proxy_buffering off; + client_max_body_size 100M; + } + + # Health Check Endpoint + location /healthz { + proxy_pass http://n8n_backend/healthz; + proxy_http_version 1.1; + proxy_set_header Host $host; + access_log off; + } +} + +# Optional: Monitoring/Metrics Server Block +# server { +# listen 127.0.0.1:9090; +# server_name localhost; +# +# location /nginx_status { +# stub_status on; +# allow 127.0.0.1; +# deny all; +# } +# } diff --git a/nodes/LibreBooking/LibreBooking.node.ts b/nodes/LibreBooking/LibreBooking.node.ts new file mode 100644 index 0000000..675b4ad --- /dev/null +++ b/nodes/LibreBooking/LibreBooking.node.ts @@ -0,0 +1,1203 @@ +import { + IExecuteFunctions, + INodeExecutionData, + INodeType, + INodeTypeDescription, + IHttpRequestMethods, + NodeApiError, + NodeOperationError, +} from 'n8n-workflow'; + +interface LibreBookingSession { + sessionToken: string; + userId: number; + sessionExpires: string; +} + +/** + * Authentifizierung bei LibreBooking + */ +async function authenticate( + executeFunctions: IExecuteFunctions, + baseUrl: string, + username: string, + password: string, +): Promise { + try { + const response = await executeFunctions.helpers.httpRequest({ + method: 'POST', + url: `${baseUrl}/Web/Services/index.php/Authentication/Authenticate`, + headers: { 'Content-Type': 'application/json' }, + body: { username, password }, + json: true, + }); + + if (!response.isAuthenticated) { + throw new NodeOperationError( + executeFunctions.getNode(), + 'Authentifizierung fehlgeschlagen. Bitte überprüfen Sie Ihre Credentials.', + ); + } + + return { + sessionToken: response.sessionToken, + userId: response.userId, + sessionExpires: response.sessionExpires, + }; + } catch (error: any) { + throw new NodeApiError(executeFunctions.getNode(), error, { + message: 'Authentifizierung fehlgeschlagen', + description: 'Überprüfen Sie die LibreBooking URL und Ihre Zugangsdaten.', + }); + } +} + +/** + * Abmeldung von LibreBooking + */ +async function signOut( + executeFunctions: IExecuteFunctions, + baseUrl: string, + session: LibreBookingSession, +): Promise { + try { + await executeFunctions.helpers.httpRequest({ + method: 'POST', + url: `${baseUrl}/Web/Services/index.php/Authentication/SignOut`, + headers: { 'Content-Type': 'application/json' }, + body: { + userId: session.userId, + sessionToken: session.sessionToken, + }, + json: true, + }); + } catch (error) { + // Ignoriere SignOut-Fehler + } +} + +/** + * API-Request mit Session-Authentifizierung + */ +async function makeApiRequest( + executeFunctions: IExecuteFunctions, + baseUrl: string, + session: LibreBookingSession, + method: IHttpRequestMethods, + endpoint: string, + body?: any, + qs?: any, +): Promise { + const options: any = { + method, + url: `${baseUrl}/Web/Services/index.php${endpoint}`, + headers: { + 'Content-Type': 'application/json', + 'X-Booked-SessionToken': session.sessionToken, + 'X-Booked-UserId': session.userId.toString(), + }, + json: true, + }; + + if (body && Object.keys(body).length > 0) { + options.body = body; + } + + if (qs && Object.keys(qs).length > 0) { + options.qs = qs; + } + + try { + return await executeFunctions.helpers.httpRequest(options); + } catch (error: any) { + if (error.statusCode === 401) { + throw new NodeApiError(executeFunctions.getNode(), error, { + message: 'Authentifizierung abgelaufen', + description: 'Der Session-Token ist abgelaufen. Bitte erneut ausführen.', + }); + } else if (error.statusCode === 403) { + throw new NodeApiError(executeFunctions.getNode(), error, { + message: 'Zugriff verweigert', + description: 'Sie haben keine Berechtigung für diese Operation. Admin-Rechte erforderlich?', + }); + } else if (error.statusCode === 404) { + throw new NodeApiError(executeFunctions.getNode(), error, { + message: 'Nicht gefunden', + description: 'Die angeforderte Ressource wurde nicht gefunden.', + }); + } + throw new NodeApiError(executeFunctions.getNode(), error, { + message: `API-Fehler: ${error.message}`, + }); + } +} + +/** + * Hilfsfunktion: String zu Array von Zahlen + */ +function parseIdList(value: string | undefined): number[] { + if (!value || value.trim() === '') return []; + return value.split(',').map(id => parseInt(id.trim(), 10)).filter(id => !isNaN(id)); +} + +/** + * LibreBooking n8n Node + * + * Vollständige Integration für die LibreBooking API. + * Unterstützt alle wichtigen Ressourcen und Operationen. + */ +export class LibreBooking implements INodeType { + description: INodeTypeDescription = { + displayName: 'LibreBooking', + name: 'libreBooking', + icon: 'file:librebooking.svg', + group: ['transform'], + version: 1, + subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', + description: 'Verwalten Sie Reservierungen, Ressourcen, Benutzer und mehr mit LibreBooking', + defaults: { + name: 'LibreBooking', + }, + inputs: ['main'], + outputs: ['main'], + credentials: [ + { + name: 'libreBookingApi', + required: true, + }, + ], + properties: [ + // ===================================================== + // RESOURCE SELECTOR + // ===================================================== + { + displayName: 'Ressource', + name: 'resource', + type: 'options', + noDataExpression: true, + options: [ + { + name: 'Reservierung', + value: 'reservation', + description: 'Reservierungen verwalten', + }, + { + name: 'Ressource', + value: 'resource', + description: 'Ressourcen (Räume, Equipment) verwalten', + }, + { + name: 'Zeitplan', + value: 'schedule', + description: 'Zeitpläne abrufen', + }, + { + name: 'Benutzer', + value: 'user', + description: 'Benutzer verwalten (Admin-Rechte erforderlich)', + }, + { + name: 'Konto', + value: 'account', + description: 'Eigenes Konto verwalten', + }, + { + name: 'Gruppe', + value: 'group', + description: 'Benutzergruppen verwalten', + }, + { + name: 'Zubehör', + value: 'accessory', + description: 'Zubehör abrufen', + }, + { + name: 'Attribut', + value: 'attribute', + description: 'Benutzerdefinierte Attribute verwalten', + }, + ], + default: 'reservation', + }, + + // ===================================================== + // RESERVATION OPERATIONS + // ===================================================== + { + displayName: 'Operation', + name: 'operation', + type: 'options', + noDataExpression: true, + displayOptions: { + show: { + resource: ['reservation'], + }, + }, + options: [ + { name: 'Erstellen', value: 'create', description: 'Neue Reservierung erstellen', action: 'Reservierung erstellen' }, + { name: 'Abrufen', value: 'get', description: 'Reservierung abrufen', action: 'Reservierung abrufen' }, + { name: 'Alle Abrufen', value: 'getAll', description: 'Alle Reservierungen abrufen', action: 'Alle Reservierungen abrufen' }, + { name: 'Aktualisieren', value: 'update', description: 'Reservierung aktualisieren', action: 'Reservierung aktualisieren' }, + { name: 'Löschen', value: 'delete', description: 'Reservierung löschen', action: 'Reservierung löschen' }, + { name: 'Genehmigen', value: 'approve', description: 'Ausstehende Reservierung genehmigen', action: 'Reservierung genehmigen' }, + { name: 'Check-In', value: 'checkIn', description: 'In Reservierung einchecken', action: 'In Reservierung einchecken' }, + { name: 'Check-Out', value: 'checkOut', description: 'Aus Reservierung auschecken', action: 'Aus Reservierung auschecken' }, + ], + default: 'getAll', + }, + + // ===================================================== + // RESOURCE OPERATIONS + // ===================================================== + { + displayName: 'Operation', + name: 'operation', + type: 'options', + noDataExpression: true, + displayOptions: { show: { resource: ['resource'] } }, + options: [ + { name: 'Alle Abrufen', value: 'getAll', description: 'Alle Ressourcen abrufen', action: 'Alle Ressourcen abrufen' }, + { name: 'Abrufen', value: 'get', description: 'Ressource abrufen', action: 'Ressource abrufen' }, + { name: 'Verfügbarkeit Prüfen', value: 'getAvailability', description: 'Verfügbarkeit von Ressourcen prüfen', action: 'Verfügbarkeit prüfen' }, + { name: 'Gruppen Abrufen', value: 'getGroups', description: 'Ressourcen-Gruppen abrufen', action: 'Ressourcen-Gruppen abrufen' }, + { name: 'Typen Abrufen', value: 'getTypes', description: 'Ressourcen-Typen abrufen', action: 'Ressourcen-Typen abrufen' }, + { name: 'Status Abrufen', value: 'getStatuses', description: 'Verfügbare Status abrufen', action: 'Status abrufen' }, + { name: 'Erstellen', value: 'create', description: 'Neue Ressource erstellen (Admin)', action: 'Ressource erstellen' }, + { name: 'Aktualisieren', value: 'update', description: 'Ressource aktualisieren (Admin)', action: 'Ressource aktualisieren' }, + { name: 'Löschen', value: 'delete', description: 'Ressource löschen (Admin)', action: 'Ressource löschen' }, + ], + default: 'getAll', + }, + + // ===================================================== + // SCHEDULE OPERATIONS + // ===================================================== + { + displayName: 'Operation', + name: 'operation', + type: 'options', + noDataExpression: true, + displayOptions: { show: { resource: ['schedule'] } }, + options: [ + { name: 'Alle Abrufen', value: 'getAll', description: 'Alle Zeitpläne abrufen', action: 'Alle Zeitpläne abrufen' }, + { name: 'Abrufen', value: 'get', description: 'Zeitplan abrufen', action: 'Zeitplan abrufen' }, + { name: 'Slots Abrufen', value: 'getSlots', description: 'Verfügbare Slots abrufen', action: 'Slots abrufen' }, + ], + default: 'getAll', + }, + + // ===================================================== + // USER OPERATIONS + // ===================================================== + { + displayName: 'Operation', + name: 'operation', + type: 'options', + noDataExpression: true, + displayOptions: { show: { resource: ['user'] } }, + options: [ + { name: 'Alle Abrufen', value: 'getAll', description: 'Alle Benutzer abrufen', action: 'Alle Benutzer abrufen' }, + { name: 'Abrufen', value: 'get', description: 'Benutzer abrufen', action: 'Benutzer abrufen' }, + { name: 'Erstellen', value: 'create', description: 'Neuen Benutzer erstellen (Admin)', action: 'Benutzer erstellen' }, + { name: 'Aktualisieren', value: 'update', description: 'Benutzer aktualisieren (Admin)', action: 'Benutzer aktualisieren' }, + { name: 'Passwort Ändern', value: 'updatePassword', description: 'Benutzer-Passwort ändern (Admin)', action: 'Passwort ändern' }, + { name: 'Löschen', value: 'delete', description: 'Benutzer löschen (Admin)', action: 'Benutzer löschen' }, + ], + default: 'getAll', + }, + + // ===================================================== + // ACCOUNT OPERATIONS + // ===================================================== + { + displayName: 'Operation', + name: 'operation', + type: 'options', + noDataExpression: true, + displayOptions: { show: { resource: ['account'] } }, + options: [ + { name: 'Abrufen', value: 'get', description: 'Eigene Kontoinformationen abrufen', action: 'Konto abrufen' }, + { name: 'Erstellen', value: 'create', description: 'Neues Konto erstellen (Registrierung)', action: 'Konto erstellen' }, + { name: 'Aktualisieren', value: 'update', description: 'Eigenes Konto aktualisieren', action: 'Konto aktualisieren' }, + { name: 'Passwort Ändern', value: 'updatePassword', description: 'Eigenes Passwort ändern', action: 'Passwort ändern' }, + ], + default: 'get', + }, + + // ===================================================== + // GROUP OPERATIONS + // ===================================================== + { + displayName: 'Operation', + name: 'operation', + type: 'options', + noDataExpression: true, + displayOptions: { show: { resource: ['group'] } }, + options: [ + { name: 'Alle Abrufen', value: 'getAll', description: 'Alle Gruppen abrufen', action: 'Alle Gruppen abrufen' }, + { name: 'Abrufen', value: 'get', description: 'Gruppe abrufen', action: 'Gruppe abrufen' }, + { name: 'Erstellen', value: 'create', description: 'Neue Gruppe erstellen (Admin)', action: 'Gruppe erstellen' }, + { name: 'Aktualisieren', value: 'update', description: 'Gruppe aktualisieren (Admin)', action: 'Gruppe aktualisieren' }, + { name: 'Löschen', value: 'delete', description: 'Gruppe löschen (Admin)', action: 'Gruppe löschen' }, + { name: 'Rollen Ändern', value: 'changeRoles', description: 'Gruppenrollen ändern (Admin)', action: 'Rollen ändern' }, + { name: 'Berechtigungen Ändern', value: 'changePermissions', description: 'Gruppenberechtigungen ändern (Admin)', action: 'Berechtigungen ändern' }, + { name: 'Benutzer Ändern', value: 'changeUsers', description: 'Gruppenbenutzer ändern (Admin)', action: 'Benutzer ändern' }, + ], + default: 'getAll', + }, + + // ===================================================== + // ACCESSORY OPERATIONS + // ===================================================== + { + displayName: 'Operation', + name: 'operation', + type: 'options', + noDataExpression: true, + displayOptions: { show: { resource: ['accessory'] } }, + options: [ + { name: 'Alle Abrufen', value: 'getAll', description: 'Alle Zubehörteile abrufen', action: 'Alle Zubehörteile abrufen' }, + { name: 'Abrufen', value: 'get', description: 'Zubehörteil abrufen', action: 'Zubehörteil abrufen' }, + ], + default: 'getAll', + }, + + // ===================================================== + // ATTRIBUTE OPERATIONS + // ===================================================== + { + displayName: 'Operation', + name: 'operation', + type: 'options', + noDataExpression: true, + displayOptions: { show: { resource: ['attribute'] } }, + options: [ + { name: 'Abrufen', value: 'get', description: 'Attribut abrufen', action: 'Attribut abrufen' }, + { name: 'Nach Kategorie Abrufen', value: 'getByCategory', description: 'Attribute einer Kategorie abrufen', action: 'Attribute nach Kategorie abrufen' }, + { name: 'Erstellen', value: 'create', description: 'Neues Attribut erstellen (Admin)', action: 'Attribut erstellen' }, + { name: 'Aktualisieren', value: 'update', description: 'Attribut aktualisieren (Admin)', action: 'Attribut aktualisieren' }, + { name: 'Löschen', value: 'delete', description: 'Attribut löschen (Admin)', action: 'Attribut löschen' }, + ], + default: 'getByCategory', + }, + + // ===================================================== + // RESERVATION PARAMETERS + // ===================================================== + { + displayName: 'Referenznummer', + name: 'referenceNumber', + type: 'string', + required: true, + displayOptions: { show: { resource: ['reservation'], operation: ['get', 'update', 'delete', 'approve', 'checkIn', 'checkOut'] } }, + default: '', + description: 'Die eindeutige Referenznummer der Reservierung', + }, + { + displayName: 'Ressourcen-ID', + name: 'resourceId', + type: 'number', + required: true, + displayOptions: { show: { resource: ['reservation'], operation: ['create'] } }, + default: 1, + description: 'Die ID der zu reservierenden Ressource', + }, + { + displayName: 'Startzeit', + name: 'startDateTime', + type: 'dateTime', + required: true, + displayOptions: { show: { resource: ['reservation'], operation: ['create', 'update'] } }, + default: '', + description: 'Startzeitpunkt der Reservierung (ISO 8601 Format)', + }, + { + displayName: 'Endzeit', + name: 'endDateTime', + type: 'dateTime', + required: true, + displayOptions: { show: { resource: ['reservation'], operation: ['create', 'update'] } }, + default: '', + description: 'Endzeitpunkt der Reservierung (ISO 8601 Format)', + }, + { + displayName: 'Titel', + name: 'title', + type: 'string', + displayOptions: { show: { resource: ['reservation'], operation: ['create', 'update'] } }, + default: '', + description: 'Titel der Reservierung', + }, + { + displayName: 'Aktualisierungsbereich', + name: 'updateScope', + type: 'options', + displayOptions: { show: { resource: ['reservation'], operation: ['update', 'delete'] } }, + options: [ + { name: 'Nur Diese', value: 'this', description: 'Nur diese Instanz ändern' }, + { name: 'Zukünftige', value: 'future', description: 'Diese und alle zukünftigen Instanzen ändern' }, + { name: 'Alle', value: 'full', description: 'Alle Instanzen der Serie ändern' }, + ], + default: 'this', + }, + { + displayName: 'Zusätzliche Felder', + name: 'additionalFields', + type: 'collection', + placeholder: 'Feld hinzufügen', + default: {}, + displayOptions: { show: { resource: ['reservation'], operation: ['create', 'update'] } }, + options: [ + { displayName: 'Beschreibung', name: 'description', type: 'string', default: '' }, + { displayName: 'Benutzer-ID', name: 'userId', type: 'number', default: '' }, + { displayName: 'Zusätzliche Ressourcen', name: 'resources', type: 'string', default: '', description: 'Komma-getrennte Liste' }, + { displayName: 'Teilnehmer', name: 'participants', type: 'string', default: '', description: 'Komma-getrennte Benutzer-IDs' }, + { displayName: 'Eingeladene', name: 'invitees', type: 'string', default: '', description: 'Komma-getrennte Benutzer-IDs' }, + { displayName: 'Teilnahme Erlauben', name: 'allowParticipation', type: 'boolean', default: true }, + { displayName: 'Nutzungsbedingungen Akzeptiert', name: 'termsAccepted', type: 'boolean', default: true }, + ], + }, + { + displayName: 'Filter', + name: 'filters', + type: 'collection', + placeholder: 'Filter hinzufügen', + default: {}, + displayOptions: { show: { resource: ['reservation'], operation: ['getAll'] } }, + options: [ + { displayName: 'Benutzer-ID', name: 'userId', type: 'number', default: '' }, + { displayName: 'Ressourcen-ID', name: 'resourceId', type: 'number', default: '' }, + { displayName: 'Zeitplan-ID', name: 'scheduleId', type: 'number', default: '' }, + { displayName: 'Startzeit', name: 'startDateTime', type: 'dateTime', default: '' }, + { displayName: 'Endzeit', name: 'endDateTime', type: 'dateTime', default: '' }, + ], + }, + + // ===================================================== + // RESOURCE PARAMETERS + // ===================================================== + { + displayName: 'Ressourcen-ID', + name: 'resourceIdParam', + type: 'number', + required: true, + displayOptions: { show: { resource: ['resource'], operation: ['get', 'update', 'delete'] } }, + default: 1, + }, + { + displayName: 'Ressourcen-ID (Optional)', + name: 'resourceIdOptional', + type: 'number', + displayOptions: { show: { resource: ['resource'], operation: ['getAvailability'] } }, + default: '', + }, + { + displayName: 'Datum/Zeit', + name: 'availabilityDateTime', + type: 'dateTime', + displayOptions: { show: { resource: ['resource'], operation: ['getAvailability'] } }, + default: '', + }, + { + displayName: 'Ressourcen-Name', + name: 'resourceName', + type: 'string', + required: true, + displayOptions: { show: { resource: ['resource'], operation: ['create', 'update'] } }, + default: '', + }, + { + displayName: 'Zeitplan-ID', + name: 'scheduleIdForResource', + type: 'number', + required: true, + displayOptions: { show: { resource: ['resource'], operation: ['create'] } }, + default: 1, + }, + { + displayName: 'Ressourcen-Optionen', + name: 'resourceOptions', + type: 'collection', + placeholder: 'Option hinzufügen', + default: {}, + displayOptions: { show: { resource: ['resource'], operation: ['create', 'update'] } }, + options: [ + { displayName: 'Standort', name: 'location', type: 'string', default: '' }, + { displayName: 'Kontakt', name: 'contact', type: 'string', default: '' }, + { displayName: 'Beschreibung', name: 'description', type: 'string', default: '' }, + { displayName: 'Notizen', name: 'notes', type: 'string', default: '' }, + { displayName: 'Max. Teilnehmer', name: 'maxParticipants', type: 'number', default: 0 }, + { displayName: 'Genehmigung Erforderlich', name: 'requiresApproval', type: 'boolean', default: false }, + { displayName: 'Mehrtägig Erlauben', name: 'allowMultiday', type: 'boolean', default: false }, + { displayName: 'Check-In Erforderlich', name: 'requiresCheckIn', type: 'boolean', default: false }, + { displayName: 'Auto-Release Minuten', name: 'autoReleaseMinutes', type: 'number', default: 0 }, + { displayName: 'Farbe', name: 'color', type: 'string', default: '' }, + { displayName: 'Status-ID', name: 'statusId', type: 'options', options: [{ name: 'Versteckt', value: 0 }, { name: 'Verfügbar', value: 1 }, { name: 'Nicht Verfügbar', value: 2 }], default: 1 }, + ], + }, + + // ===================================================== + // SCHEDULE PARAMETERS + // ===================================================== + { + displayName: 'Zeitplan-ID', + name: 'scheduleId', + type: 'number', + required: true, + displayOptions: { show: { resource: ['schedule'], operation: ['get', 'getSlots'] } }, + default: 1, + }, + { + displayName: 'Slots-Filter', + name: 'slotsFilters', + type: 'collection', + placeholder: 'Filter hinzufügen', + default: {}, + displayOptions: { show: { resource: ['schedule'], operation: ['getSlots'] } }, + options: [ + { displayName: 'Ressourcen-ID', name: 'resourceId', type: 'number', default: '' }, + { displayName: 'Startzeit', name: 'startDateTime', type: 'dateTime', default: '' }, + { displayName: 'Endzeit', name: 'endDateTime', type: 'dateTime', default: '' }, + ], + }, + + // ===================================================== + // USER PARAMETERS + // ===================================================== + { + displayName: 'Benutzer-ID', + name: 'userId', + type: 'number', + required: true, + displayOptions: { show: { resource: ['user'], operation: ['get', 'update', 'updatePassword', 'delete'] } }, + default: 1, + }, + { + displayName: 'E-Mail', + name: 'emailAddress', + type: 'string', + required: true, + displayOptions: { show: { resource: ['user'], operation: ['create'] } }, + default: '', + }, + { + displayName: 'Benutzername', + name: 'userName', + type: 'string', + required: true, + displayOptions: { show: { resource: ['user'], operation: ['create'] } }, + default: '', + }, + { + displayName: 'Passwort', + name: 'password', + type: 'string', + typeOptions: { password: true }, + required: true, + displayOptions: { show: { resource: ['user'], operation: ['create', 'updatePassword'] } }, + default: '', + }, + { + displayName: 'Vorname', + name: 'firstName', + type: 'string', + required: true, + displayOptions: { show: { resource: ['user'], operation: ['create', 'update'] } }, + default: '', + }, + { + displayName: 'Nachname', + name: 'lastName', + type: 'string', + required: true, + displayOptions: { show: { resource: ['user'], operation: ['create', 'update'] } }, + default: '', + }, + { + displayName: 'Benutzer-Filter', + name: 'userFilters', + type: 'collection', + placeholder: 'Filter hinzufügen', + default: {}, + displayOptions: { show: { resource: ['user'], operation: ['getAll'] } }, + options: [ + { displayName: 'Benutzername', name: 'username', type: 'string', default: '' }, + { displayName: 'E-Mail', name: 'email', type: 'string', default: '' }, + { displayName: 'Vorname', name: 'firstName', type: 'string', default: '' }, + { displayName: 'Nachname', name: 'lastName', type: 'string', default: '' }, + { displayName: 'Organisation', name: 'organization', type: 'string', default: '' }, + ], + }, + { + displayName: 'Benutzer-Optionen', + name: 'userOptions', + type: 'collection', + placeholder: 'Option hinzufügen', + default: {}, + displayOptions: { show: { resource: ['user'], operation: ['create', 'update'] } }, + options: [ + { displayName: 'Zeitzone', name: 'timezone', type: 'string', default: 'Europe/Berlin' }, + { displayName: 'Sprache', name: 'language', type: 'string', default: 'de_de' }, + { displayName: 'Telefon', name: 'phone', type: 'string', default: '' }, + { displayName: 'Organisation', name: 'organization', type: 'string', default: '' }, + { displayName: 'Position', name: 'position', type: 'string', default: '' }, + { displayName: 'Gruppen', name: 'groups', type: 'string', default: '', description: 'Komma-getrennte Gruppen-IDs' }, + ], + }, + + // ===================================================== + // ACCOUNT PARAMETERS + // ===================================================== + { + displayName: 'Benutzer-ID', + name: 'accountUserId', + type: 'number', + required: true, + displayOptions: { show: { resource: ['account'], operation: ['get', 'update', 'updatePassword'] } }, + default: '', + }, + { + displayName: 'Account-Daten', + name: 'accountData', + type: 'collection', + placeholder: 'Feld hinzufügen', + default: {}, + displayOptions: { show: { resource: ['account'], operation: ['create', 'update'] } }, + options: [ + { displayName: 'E-Mail', name: 'emailAddress', type: 'string', default: '' }, + { displayName: 'Benutzername', name: 'userName', type: 'string', default: '' }, + { displayName: 'Passwort', name: 'password', type: 'string', typeOptions: { password: true }, default: '' }, + { displayName: 'Vorname', name: 'firstName', type: 'string', default: '' }, + { displayName: 'Nachname', name: 'lastName', type: 'string', default: '' }, + { displayName: 'Zeitzone', name: 'timezone', type: 'string', default: 'Europe/Berlin' }, + { displayName: 'Sprache', name: 'language', type: 'string', default: 'de_de' }, + { displayName: 'Telefon', name: 'phone', type: 'string', default: '' }, + { displayName: 'Organisation', name: 'organization', type: 'string', default: '' }, + { displayName: 'Position', name: 'position', type: 'string', default: '' }, + { displayName: 'AGB Akzeptiert', name: 'acceptTermsOfService', type: 'boolean', default: true }, + ], + }, + { + displayName: 'Passwort-Änderung', + name: 'passwordChange', + type: 'fixedCollection', + default: {}, + displayOptions: { show: { resource: ['account'], operation: ['updatePassword'] } }, + options: [ + { + name: 'passwords', + displayName: 'Passwörter', + values: [ + { displayName: 'Aktuelles Passwort', name: 'currentPassword', type: 'string', typeOptions: { password: true }, default: '' }, + { displayName: 'Neues Passwort', name: 'newPassword', type: 'string', typeOptions: { password: true }, default: '' }, + ], + }, + ], + }, + + // ===================================================== + // GROUP PARAMETERS + // ===================================================== + { + displayName: 'Gruppen-ID', + name: 'groupId', + type: 'number', + required: true, + displayOptions: { show: { resource: ['group'], operation: ['get', 'update', 'delete', 'changeRoles', 'changePermissions', 'changeUsers'] } }, + default: 1, + }, + { + displayName: 'Gruppen-Name', + name: 'groupName', + type: 'string', + required: true, + displayOptions: { show: { resource: ['group'], operation: ['create', 'update'] } }, + default: '', + }, + { + displayName: 'Standard-Gruppe', + name: 'isDefault', + type: 'boolean', + displayOptions: { show: { resource: ['group'], operation: ['create', 'update'] } }, + default: false, + }, + { + displayName: 'Rollen-IDs', + name: 'roleIds', + type: 'string', + displayOptions: { show: { resource: ['group'], operation: ['changeRoles'] } }, + default: '', + description: '1=Gruppenadmin, 2=App-Admin, 3=Ressourcen-Admin, 4=Zeitplan-Admin', + }, + { + displayName: 'Ressourcen-IDs', + name: 'permissionResourceIds', + type: 'string', + displayOptions: { show: { resource: ['group'], operation: ['changePermissions'] } }, + default: '', + }, + { + displayName: 'Benutzer-IDs', + name: 'groupUserIds', + type: 'string', + displayOptions: { show: { resource: ['group'], operation: ['changeUsers'] } }, + default: '', + }, + + // ===================================================== + // ACCESSORY PARAMETERS + // ===================================================== + { + displayName: 'Zubehör-ID', + name: 'accessoryId', + type: 'number', + required: true, + displayOptions: { show: { resource: ['accessory'], operation: ['get'] } }, + default: 1, + }, + + // ===================================================== + // ATTRIBUTE PARAMETERS + // ===================================================== + { + displayName: 'Attribut-ID', + name: 'attributeId', + type: 'number', + required: true, + displayOptions: { show: { resource: ['attribute'], operation: ['get', 'update', 'delete'] } }, + default: 1, + }, + { + displayName: 'Kategorie-ID', + name: 'categoryId', + type: 'options', + required: true, + displayOptions: { show: { resource: ['attribute'], operation: ['getByCategory', 'create'] } }, + options: [ + { name: 'Reservierung', value: 1 }, + { name: 'Benutzer', value: 2 }, + { name: 'Ressource', value: 4 }, + { name: 'Ressourcen-Typ', value: 5 }, + ], + default: 1, + }, + { + displayName: 'Attribut-Label', + name: 'attributeLabel', + type: 'string', + required: true, + displayOptions: { show: { resource: ['attribute'], operation: ['create', 'update'] } }, + default: '', + }, + { + displayName: 'Attribut-Typ', + name: 'attributeType', + type: 'options', + required: true, + displayOptions: { show: { resource: ['attribute'], operation: ['create', 'update'] } }, + options: [ + { name: 'Einzeilig', value: 1 }, + { name: 'Mehrzeilig', value: 2 }, + { name: 'Auswahlliste', value: 3 }, + { name: 'Checkbox', value: 4 }, + { name: 'Datum/Zeit', value: 5 }, + ], + default: 1, + }, + { + displayName: 'Attribut-Optionen', + name: 'attributeOptions', + type: 'collection', + placeholder: 'Option hinzufügen', + default: {}, + displayOptions: { show: { resource: ['attribute'], operation: ['create', 'update'] } }, + options: [ + { displayName: 'Erforderlich', name: 'required', type: 'boolean', default: false }, + { displayName: 'Nur Admin', name: 'adminOnly', type: 'boolean', default: false }, + { displayName: 'Privat', name: 'isPrivate', type: 'boolean', default: false }, + { displayName: 'Sortierung', name: 'sortOrder', type: 'number', default: 0 }, + { displayName: 'Regex-Validierung', name: 'regex', type: 'string', default: '' }, + { displayName: 'Mögliche Werte', name: 'possibleValues', type: 'string', default: '', description: 'Komma-getrennt' }, + ], + }, + ], + }; + + async execute(this: IExecuteFunctions): Promise { + const items = this.getInputData(); + const returnData: INodeExecutionData[] = []; + + const credentials = await this.getCredentials('libreBookingApi'); + const baseUrl = (credentials.url as string).replace(/\/$/, ''); + const username = credentials.username as string; + const pw = credentials.password as string; + + const session = await authenticate(this, baseUrl, username, pw); + + try { + for (let i = 0; i < items.length; i++) { + try { + const resource = this.getNodeParameter('resource', i) as string; + const operation = this.getNodeParameter('operation', i) as string; + let responseData: any; + + // RESERVATION + if (resource === 'reservation') { + if (operation === 'getAll') { + const filters = this.getNodeParameter('filters', i, {}) as any; + const qs: any = {}; + if (filters.userId) qs.userId = filters.userId; + if (filters.resourceId) qs.resourceId = filters.resourceId; + if (filters.scheduleId) qs.scheduleId = filters.scheduleId; + if (filters.startDateTime) qs.startDateTime = filters.startDateTime; + if (filters.endDateTime) qs.endDateTime = filters.endDateTime; + responseData = await makeApiRequest(this, baseUrl, session, 'GET', '/Reservations/', undefined, qs); + } else if (operation === 'get') { + const referenceNumber = this.getNodeParameter('referenceNumber', i) as string; + responseData = await makeApiRequest(this, baseUrl, session, 'GET', `/Reservations/${referenceNumber}`); + } else if (operation === 'create') { + const resourceId = this.getNodeParameter('resourceId', i) as number; + const startDateTime = this.getNodeParameter('startDateTime', i) as string; + const endDateTime = this.getNodeParameter('endDateTime', i) as string; + const title = this.getNodeParameter('title', i, '') as string; + const additionalFields = this.getNodeParameter('additionalFields', i, {}) as any; + const body: any = { resourceId, startDateTime: new Date(startDateTime).toISOString(), endDateTime: new Date(endDateTime).toISOString() }; + if (title) body.title = title; + if (additionalFields.description) body.description = additionalFields.description; + if (additionalFields.userId) body.userId = additionalFields.userId; + if (additionalFields.resources) body.resources = parseIdList(additionalFields.resources); + if (additionalFields.participants) body.participants = parseIdList(additionalFields.participants); + if (additionalFields.invitees) body.invitees = parseIdList(additionalFields.invitees); + if (additionalFields.allowParticipation !== undefined) body.allowParticipation = additionalFields.allowParticipation; + if (additionalFields.termsAccepted !== undefined) body.termsAccepted = additionalFields.termsAccepted; + responseData = await makeApiRequest(this, baseUrl, session, 'POST', '/Reservations/', body); + } else if (operation === 'update') { + const referenceNumber = this.getNodeParameter('referenceNumber', i) as string; + const startDateTime = this.getNodeParameter('startDateTime', i) as string; + const endDateTime = this.getNodeParameter('endDateTime', i) as string; + const title = this.getNodeParameter('title', i, '') as string; + const updateScope = this.getNodeParameter('updateScope', i, 'this') as string; + const additionalFields = this.getNodeParameter('additionalFields', i, {}) as any; + const body: any = { startDateTime: new Date(startDateTime).toISOString(), endDateTime: new Date(endDateTime).toISOString() }; + if (title) body.title = title; + if (additionalFields.description) body.description = additionalFields.description; + if (additionalFields.resourceId) body.resourceId = additionalFields.resourceId; + if (additionalFields.userId) body.userId = additionalFields.userId; + if (additionalFields.resources) body.resources = parseIdList(additionalFields.resources); + if (additionalFields.participants) body.participants = parseIdList(additionalFields.participants); + if (additionalFields.invitees) body.invitees = parseIdList(additionalFields.invitees); + responseData = await makeApiRequest(this, baseUrl, session, 'POST', `/Reservations/${referenceNumber}?updateScope=${updateScope}`, body); + } else if (operation === 'delete') { + const referenceNumber = this.getNodeParameter('referenceNumber', i) as string; + const updateScope = this.getNodeParameter('updateScope', i, 'this') as string; + responseData = await makeApiRequest(this, baseUrl, session, 'DELETE', `/Reservations/${referenceNumber}?updateScope=${updateScope}`); + } else if (operation === 'approve') { + const referenceNumber = this.getNodeParameter('referenceNumber', i) as string; + responseData = await makeApiRequest(this, baseUrl, session, 'POST', `/Reservations/${referenceNumber}/Approval`); + } else if (operation === 'checkIn') { + const referenceNumber = this.getNodeParameter('referenceNumber', i) as string; + responseData = await makeApiRequest(this, baseUrl, session, 'POST', `/Reservations/${referenceNumber}/CheckIn`); + } else if (operation === 'checkOut') { + const referenceNumber = this.getNodeParameter('referenceNumber', i) as string; + responseData = await makeApiRequest(this, baseUrl, session, 'POST', `/Reservations/${referenceNumber}/CheckOut`); + } + } + + // RESOURCE + else if (resource === 'resource') { + if (operation === 'getAll') { + responseData = await makeApiRequest(this, baseUrl, session, 'GET', '/Resources/'); + } else if (operation === 'get') { + const resourceIdParam = this.getNodeParameter('resourceIdParam', i) as number; + responseData = await makeApiRequest(this, baseUrl, session, 'GET', `/Resources/${resourceIdParam}`); + } else if (operation === 'getAvailability') { + const resourceIdOptional = this.getNodeParameter('resourceIdOptional', i, '') as number | ''; + const availabilityDateTime = this.getNodeParameter('availabilityDateTime', i, '') as string; + let endpoint = '/Resources/Availability'; + if (resourceIdOptional) endpoint = `/Resources/${resourceIdOptional}/Availability`; + const qs: any = {}; + if (availabilityDateTime) qs.dateTime = new Date(availabilityDateTime).toISOString(); + responseData = await makeApiRequest(this, baseUrl, session, 'GET', endpoint, undefined, qs); + } else if (operation === 'getGroups') { + responseData = await makeApiRequest(this, baseUrl, session, 'GET', '/Resources/Groups'); + } else if (operation === 'getTypes') { + responseData = await makeApiRequest(this, baseUrl, session, 'GET', '/Resources/Types'); + } else if (operation === 'getStatuses') { + responseData = await makeApiRequest(this, baseUrl, session, 'GET', '/Resources/Status'); + } else if (operation === 'create') { + const resourceName = this.getNodeParameter('resourceName', i) as string; + const scheduleIdForResource = this.getNodeParameter('scheduleIdForResource', i) as number; + const resourceOptions = this.getNodeParameter('resourceOptions', i, {}) as any; + const body: any = { name: resourceName, scheduleId: scheduleIdForResource }; + if (resourceOptions.location) body.location = resourceOptions.location; + if (resourceOptions.contact) body.contact = resourceOptions.contact; + if (resourceOptions.description) body.description = resourceOptions.description; + if (resourceOptions.notes) body.notes = resourceOptions.notes; + if (resourceOptions.maxParticipants) body.maxParticipants = resourceOptions.maxParticipants; + if (resourceOptions.requiresApproval !== undefined) body.requiresApproval = resourceOptions.requiresApproval; + if (resourceOptions.allowMultiday !== undefined) body.allowMultiday = resourceOptions.allowMultiday; + if (resourceOptions.requiresCheckIn !== undefined) body.requiresCheckIn = resourceOptions.requiresCheckIn; + if (resourceOptions.autoReleaseMinutes) body.autoReleaseMinutes = resourceOptions.autoReleaseMinutes; + if (resourceOptions.color) body.color = resourceOptions.color; + if (resourceOptions.statusId !== undefined) body.statusId = resourceOptions.statusId; + responseData = await makeApiRequest(this, baseUrl, session, 'POST', '/Resources/', body); + } else if (operation === 'update') { + const resourceIdParam = this.getNodeParameter('resourceIdParam', i) as number; + const resourceName = this.getNodeParameter('resourceName', i) as string; + const resourceOptions = this.getNodeParameter('resourceOptions', i, {}) as any; + const body: any = { name: resourceName }; + if (resourceOptions.location) body.location = resourceOptions.location; + if (resourceOptions.contact) body.contact = resourceOptions.contact; + if (resourceOptions.description) body.description = resourceOptions.description; + if (resourceOptions.notes) body.notes = resourceOptions.notes; + if (resourceOptions.maxParticipants) body.maxParticipants = resourceOptions.maxParticipants; + if (resourceOptions.requiresApproval !== undefined) body.requiresApproval = resourceOptions.requiresApproval; + if (resourceOptions.allowMultiday !== undefined) body.allowMultiday = resourceOptions.allowMultiday; + if (resourceOptions.requiresCheckIn !== undefined) body.requiresCheckIn = resourceOptions.requiresCheckIn; + if (resourceOptions.autoReleaseMinutes) body.autoReleaseMinutes = resourceOptions.autoReleaseMinutes; + if (resourceOptions.color) body.color = resourceOptions.color; + if (resourceOptions.statusId !== undefined) body.statusId = resourceOptions.statusId; + responseData = await makeApiRequest(this, baseUrl, session, 'POST', `/Resources/${resourceIdParam}`, body); + } else if (operation === 'delete') { + const resourceIdParam = this.getNodeParameter('resourceIdParam', i) as number; + responseData = await makeApiRequest(this, baseUrl, session, 'DELETE', `/Resources/${resourceIdParam}`); + } + } + + // SCHEDULE + else if (resource === 'schedule') { + if (operation === 'getAll') { + responseData = await makeApiRequest(this, baseUrl, session, 'GET', '/Schedules/'); + } else if (operation === 'get') { + const scheduleId = this.getNodeParameter('scheduleId', i) as number; + responseData = await makeApiRequest(this, baseUrl, session, 'GET', `/Schedules/${scheduleId}`); + } else if (operation === 'getSlots') { + const scheduleId = this.getNodeParameter('scheduleId', i) as number; + const slotsFilters = this.getNodeParameter('slotsFilters', i, {}) as any; + const qs: any = {}; + if (slotsFilters.resourceId) qs.resourceId = slotsFilters.resourceId; + if (slotsFilters.startDateTime) qs.startDateTime = new Date(slotsFilters.startDateTime).toISOString(); + if (slotsFilters.endDateTime) qs.endDateTime = new Date(slotsFilters.endDateTime).toISOString(); + responseData = await makeApiRequest(this, baseUrl, session, 'GET', `/Schedules/${scheduleId}/Slots`, undefined, qs); + } + } + + // USER + else if (resource === 'user') { + if (operation === 'getAll') { + const userFilters = this.getNodeParameter('userFilters', i, {}) as any; + const qs: any = {}; + if (userFilters.username) qs.username = userFilters.username; + if (userFilters.email) qs.email = userFilters.email; + if (userFilters.firstName) qs.firstName = userFilters.firstName; + if (userFilters.lastName) qs.lastName = userFilters.lastName; + if (userFilters.organization) qs.organization = userFilters.organization; + responseData = await makeApiRequest(this, baseUrl, session, 'GET', '/Users/', undefined, qs); + } else if (operation === 'get') { + const userId = this.getNodeParameter('userId', i) as number; + responseData = await makeApiRequest(this, baseUrl, session, 'GET', `/Users/${userId}`); + } else if (operation === 'create') { + const emailAddress = this.getNodeParameter('emailAddress', i) as string; + const userName = this.getNodeParameter('userName', i) as string; + const pw = this.getNodeParameter('password', i) as string; + const firstName = this.getNodeParameter('firstName', i) as string; + const lastName = this.getNodeParameter('lastName', i) as string; + const userOptions = this.getNodeParameter('userOptions', i, {}) as any; + const body: any = { emailAddress, userName, password: pw, firstName, lastName }; + if (userOptions.timezone) body.timezone = userOptions.timezone; + if (userOptions.language) body.language = userOptions.language; + if (userOptions.phone) body.phone = userOptions.phone; + if (userOptions.organization) body.organization = userOptions.organization; + if (userOptions.position) body.position = userOptions.position; + if (userOptions.groups) body.groups = parseIdList(userOptions.groups); + responseData = await makeApiRequest(this, baseUrl, session, 'POST', '/Users/', body); + } else if (operation === 'update') { + const userId = this.getNodeParameter('userId', i) as number; + const firstName = this.getNodeParameter('firstName', i) as string; + const lastName = this.getNodeParameter('lastName', i) as string; + const userOptions = this.getNodeParameter('userOptions', i, {}) as any; + const body: any = { firstName, lastName }; + if (userOptions.timezone) body.timezone = userOptions.timezone; + if (userOptions.language) body.language = userOptions.language; + if (userOptions.phone) body.phone = userOptions.phone; + if (userOptions.organization) body.organization = userOptions.organization; + if (userOptions.position) body.position = userOptions.position; + if (userOptions.groups) body.groups = parseIdList(userOptions.groups); + responseData = await makeApiRequest(this, baseUrl, session, 'POST', `/Users/${userId}`, body); + } else if (operation === 'updatePassword') { + const userId = this.getNodeParameter('userId', i) as number; + const pw = this.getNodeParameter('password', i) as string; + responseData = await makeApiRequest(this, baseUrl, session, 'POST', `/Users/${userId}/Password`, { password: pw }); + } else if (operation === 'delete') { + const userId = this.getNodeParameter('userId', i) as number; + responseData = await makeApiRequest(this, baseUrl, session, 'DELETE', `/Users/${userId}`); + } + } + + // ACCOUNT + else if (resource === 'account') { + if (operation === 'get') { + const accountUserId = this.getNodeParameter('accountUserId', i) as number; + responseData = await makeApiRequest(this, baseUrl, session, 'GET', `/Accounts/${accountUserId}`); + } else if (operation === 'create') { + const accountData = this.getNodeParameter('accountData', i, {}) as any; + const body: any = {}; + if (accountData.emailAddress) body.emailAddress = accountData.emailAddress; + if (accountData.userName) body.userName = accountData.userName; + if (accountData.password) body.password = accountData.password; + if (accountData.firstName) body.firstName = accountData.firstName; + if (accountData.lastName) body.lastName = accountData.lastName; + if (accountData.timezone) body.timezone = accountData.timezone; + if (accountData.language) body.language = accountData.language; + if (accountData.phone) body.phone = accountData.phone; + if (accountData.organization) body.organization = accountData.organization; + if (accountData.position) body.position = accountData.position; + if (accountData.acceptTermsOfService !== undefined) body.acceptTermsOfService = accountData.acceptTermsOfService; + responseData = await makeApiRequest(this, baseUrl, session, 'POST', '/Accounts/', body); + } else if (operation === 'update') { + const accountUserId = this.getNodeParameter('accountUserId', i) as number; + const accountData = this.getNodeParameter('accountData', i, {}) as any; + const body: any = {}; + if (accountData.emailAddress) body.emailAddress = accountData.emailAddress; + if (accountData.userName) body.userName = accountData.userName; + if (accountData.firstName) body.firstName = accountData.firstName; + if (accountData.lastName) body.lastName = accountData.lastName; + if (accountData.timezone) body.timezone = accountData.timezone; + if (accountData.language) body.language = accountData.language; + if (accountData.phone) body.phone = accountData.phone; + if (accountData.organization) body.organization = accountData.organization; + if (accountData.position) body.position = accountData.position; + responseData = await makeApiRequest(this, baseUrl, session, 'POST', `/Accounts/${accountUserId}`, body); + } else if (operation === 'updatePassword') { + const accountUserId = this.getNodeParameter('accountUserId', i) as number; + const passwordChange = this.getNodeParameter('passwordChange', i, {}) as any; + const passwords = passwordChange.passwords || {}; + responseData = await makeApiRequest(this, baseUrl, session, 'POST', `/Accounts/${accountUserId}/Password`, { + currentPassword: passwords.currentPassword, + newPassword: passwords.newPassword, + }); + } + } + + // GROUP + else if (resource === 'group') { + if (operation === 'getAll') { + responseData = await makeApiRequest(this, baseUrl, session, 'GET', '/Groups/'); + } else if (operation === 'get') { + const groupId = this.getNodeParameter('groupId', i) as number; + responseData = await makeApiRequest(this, baseUrl, session, 'GET', `/Groups/${groupId}`); + } else if (operation === 'create') { + const groupName = this.getNodeParameter('groupName', i) as string; + const isDefault = this.getNodeParameter('isDefault', i, false) as boolean; + responseData = await makeApiRequest(this, baseUrl, session, 'POST', '/Groups/', { name: groupName, isDefault }); + } else if (operation === 'update') { + const groupId = this.getNodeParameter('groupId', i) as number; + const groupName = this.getNodeParameter('groupName', i) as string; + const isDefault = this.getNodeParameter('isDefault', i, false) as boolean; + responseData = await makeApiRequest(this, baseUrl, session, 'POST', `/Groups/${groupId}`, { name: groupName, isDefault }); + } else if (operation === 'delete') { + const groupId = this.getNodeParameter('groupId', i) as number; + responseData = await makeApiRequest(this, baseUrl, session, 'DELETE', `/Groups/${groupId}`); + } else if (operation === 'changeRoles') { + const groupId = this.getNodeParameter('groupId', i) as number; + const roleIds = this.getNodeParameter('roleIds', i, '') as string; + responseData = await makeApiRequest(this, baseUrl, session, 'POST', `/Groups/${groupId}/Roles`, { roleIds: parseIdList(roleIds) }); + } else if (operation === 'changePermissions') { + const groupId = this.getNodeParameter('groupId', i) as number; + const permissionResourceIds = this.getNodeParameter('permissionResourceIds', i, '') as string; + responseData = await makeApiRequest(this, baseUrl, session, 'POST', `/Groups/${groupId}/Permissions`, { resourceIds: parseIdList(permissionResourceIds) }); + } else if (operation === 'changeUsers') { + const groupId = this.getNodeParameter('groupId', i) as number; + const groupUserIds = this.getNodeParameter('groupUserIds', i, '') as string; + responseData = await makeApiRequest(this, baseUrl, session, 'POST', `/Groups/${groupId}/Users`, { userIds: parseIdList(groupUserIds) }); + } + } + + // ACCESSORY + else if (resource === 'accessory') { + if (operation === 'getAll') { + responseData = await makeApiRequest(this, baseUrl, session, 'GET', '/Accessories/'); + } else if (operation === 'get') { + const accessoryId = this.getNodeParameter('accessoryId', i) as number; + responseData = await makeApiRequest(this, baseUrl, session, 'GET', `/Accessories/${accessoryId}`); + } + } + + // ATTRIBUTE + else if (resource === 'attribute') { + if (operation === 'get') { + const attributeId = this.getNodeParameter('attributeId', i) as number; + responseData = await makeApiRequest(this, baseUrl, session, 'GET', `/Attributes/${attributeId}`); + } else if (operation === 'getByCategory') { + const categoryId = this.getNodeParameter('categoryId', i) as number; + responseData = await makeApiRequest(this, baseUrl, session, 'GET', `/Attributes/Category/${categoryId}`); + } else if (operation === 'create') { + const attributeLabel = this.getNodeParameter('attributeLabel', i) as string; + const attributeType = this.getNodeParameter('attributeType', i) as number; + const categoryId = this.getNodeParameter('categoryId', i) as number; + const attributeOptions = this.getNodeParameter('attributeOptions', i, {}) as any; + const body: any = { label: attributeLabel, type: attributeType, categoryId }; + if (attributeOptions.required !== undefined) body.required = attributeOptions.required; + if (attributeOptions.adminOnly !== undefined) body.adminOnly = attributeOptions.adminOnly; + if (attributeOptions.isPrivate !== undefined) body.isPrivate = attributeOptions.isPrivate; + if (attributeOptions.sortOrder !== undefined) body.sortOrder = attributeOptions.sortOrder; + if (attributeOptions.regex) body.regex = attributeOptions.regex; + if (attributeOptions.possibleValues) body.possibleValues = attributeOptions.possibleValues.split(',').map((v: string) => v.trim()); + responseData = await makeApiRequest(this, baseUrl, session, 'POST', '/Attributes/', body); + } else if (operation === 'update') { + const attributeId = this.getNodeParameter('attributeId', i) as number; + const attributeLabel = this.getNodeParameter('attributeLabel', i) as string; + const attributeType = this.getNodeParameter('attributeType', i) as number; + const attributeOptions = this.getNodeParameter('attributeOptions', i, {}) as any; + const body: any = { label: attributeLabel, type: attributeType }; + if (attributeOptions.required !== undefined) body.required = attributeOptions.required; + if (attributeOptions.adminOnly !== undefined) body.adminOnly = attributeOptions.adminOnly; + if (attributeOptions.isPrivate !== undefined) body.isPrivate = attributeOptions.isPrivate; + if (attributeOptions.sortOrder !== undefined) body.sortOrder = attributeOptions.sortOrder; + if (attributeOptions.regex) body.regex = attributeOptions.regex; + if (attributeOptions.possibleValues) body.possibleValues = attributeOptions.possibleValues.split(',').map((v: string) => v.trim()); + responseData = await makeApiRequest(this, baseUrl, session, 'POST', `/Attributes/${attributeId}`, body); + } else if (operation === 'delete') { + const attributeId = this.getNodeParameter('attributeId', i) as number; + responseData = await makeApiRequest(this, baseUrl, session, 'DELETE', `/Attributes/${attributeId}`); + } + } + + // Process response + if (responseData) { + if (Array.isArray(responseData)) { + returnData.push(...responseData.map(item => ({ json: item }))); + } else if (responseData.reservations) { + returnData.push(...responseData.reservations.map((item: any) => ({ json: item }))); + } else if (responseData.resources) { + returnData.push(...responseData.resources.map((item: any) => ({ json: item }))); + } else if (responseData.schedules) { + returnData.push(...responseData.schedules.map((item: any) => ({ json: item }))); + } else if (responseData.users) { + returnData.push(...responseData.users.map((item: any) => ({ json: item }))); + } else if (responseData.groups) { + returnData.push(...responseData.groups.map((item: any) => ({ json: item }))); + } else if (responseData.accessories) { + returnData.push(...responseData.accessories.map((item: any) => ({ json: item }))); + } else if (responseData.attributes) { + returnData.push(...responseData.attributes.map((item: any) => ({ json: item }))); + } else { + returnData.push({ json: responseData }); + } + } + + } catch (error: any) { + if (this.continueOnFail()) { + returnData.push({ json: { error: error.message } }); + continue; + } + throw error; + } + } + } finally { + await signOut(this, baseUrl, session); + } + + return [returnData]; + } +} diff --git a/nodes/LibreBooking/librebooking.svg b/nodes/LibreBooking/librebooking.svg new file mode 100644 index 0000000..81306a9 --- /dev/null +++ b/nodes/LibreBooking/librebooking.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/nodes/LibreBookingTrigger/LibreBookingTrigger.node.ts b/nodes/LibreBookingTrigger/LibreBookingTrigger.node.ts new file mode 100644 index 0000000..5e2e9ae --- /dev/null +++ b/nodes/LibreBookingTrigger/LibreBookingTrigger.node.ts @@ -0,0 +1,352 @@ +import { + INodeType, + INodeTypeDescription, + IPollFunctions, + INodeExecutionData, + NodeApiError, + NodeOperationError, +} from 'n8n-workflow'; + +interface LibreBookingSession { + sessionToken: string; + userId: number; + sessionExpires: string; +} + +interface ReservationData { + referenceNumber: string; + startDate: string; + endDate: string; + title: string; + resourceId: number; + userId: number; + [key: string]: any; +} + +/** + * Authentifizierung bei LibreBooking + */ +async function authenticateTrigger( + pollFunctions: IPollFunctions, + baseUrl: string, + username: string, + password: string, +): Promise { + try { + const response = await pollFunctions.helpers.httpRequest({ + method: 'POST', + url: `${baseUrl}/Web/Services/index.php/Authentication/Authenticate`, + headers: { 'Content-Type': 'application/json' }, + body: { username, password }, + json: true, + }); + + if (!response.isAuthenticated) { + throw new NodeOperationError( + pollFunctions.getNode(), + 'Authentifizierung fehlgeschlagen', + ); + } + + return { + sessionToken: response.sessionToken, + userId: response.userId, + sessionExpires: response.sessionExpires, + }; + } catch (error: any) { + throw new NodeApiError(pollFunctions.getNode(), error, { + message: 'Authentifizierung fehlgeschlagen', + }); + } +} + +/** + * Abmeldung + */ +async function signOutTrigger( + pollFunctions: IPollFunctions, + baseUrl: string, + session: LibreBookingSession, +): Promise { + try { + await pollFunctions.helpers.httpRequest({ + method: 'POST', + url: `${baseUrl}/Web/Services/index.php/Authentication/SignOut`, + headers: { 'Content-Type': 'application/json' }, + body: { + userId: session.userId, + sessionToken: session.sessionToken, + }, + json: true, + }); + } catch (error) { + // Ignoriere SignOut-Fehler + } +} + +/** + * Reservierungen abrufen + */ +async function getReservations( + pollFunctions: IPollFunctions, + baseUrl: string, + session: LibreBookingSession, + startDateTime: string, + endDateTime: string, + filters: any, +): Promise { + const qs: any = { + startDateTime, + endDateTime, + }; + + if (filters.resourceId) qs.resourceId = filters.resourceId; + if (filters.scheduleId) qs.scheduleId = filters.scheduleId; + if (filters.userId) qs.userId = filters.userId; + + const response = await pollFunctions.helpers.httpRequest({ + method: 'GET', + url: `${baseUrl}/Web/Services/index.php/Reservations/`, + headers: { + 'Content-Type': 'application/json', + 'X-Booked-SessionToken': session.sessionToken, + 'X-Booked-UserId': session.userId.toString(), + }, + qs, + json: true, + }); + + return response.reservations || []; +} + +/** + * Detaillierte Reservierungsdaten abrufen + */ +async function getReservationDetails( + pollFunctions: IPollFunctions, + baseUrl: string, + session: LibreBookingSession, + referenceNumber: string, +): Promise { + const response = await pollFunctions.helpers.httpRequest({ + method: 'GET', + url: `${baseUrl}/Web/Services/index.php/Reservations/${referenceNumber}`, + headers: { + 'Content-Type': 'application/json', + 'X-Booked-SessionToken': session.sessionToken, + 'X-Booked-UserId': session.userId.toString(), + }, + json: true, + }); + + return response; +} + +/** + * Zeitfenster berechnen + */ +function getTimeWindow(timeWindow: string): { start: string; end: string } { + const now = new Date(); + const start = now.toISOString(); + + let endDate = new Date(now); + switch (timeWindow) { + case '7days': + endDate.setDate(endDate.getDate() + 7); + break; + case '14days': + endDate.setDate(endDate.getDate() + 14); + break; + case '30days': + endDate.setDate(endDate.getDate() + 30); + break; + case '90days': + endDate.setDate(endDate.getDate() + 90); + break; + default: + endDate.setDate(endDate.getDate() + 14); + } + + return { + start, + end: endDate.toISOString(), + }; +} + +/** + * Eindeutigen Schlüssel für Reservierung generieren + */ +function getReservationKey(reservation: ReservationData): string { + return `${reservation.referenceNumber}_${reservation.startDate}_${reservation.endDate}_${reservation.title || ''}`; +} + +/** + * LibreBooking Trigger Node + */ +export class LibreBookingTrigger implements INodeType { + description: INodeTypeDescription = { + displayName: 'LibreBooking Trigger', + name: 'libreBookingTrigger', + icon: 'file:librebooking.svg', + group: ['trigger'], + version: 1, + description: 'Wird bei neuen oder geänderten Reservierungen in LibreBooking ausgelöst', + subtitle: '={{$parameter["event"]}}', + defaults: { + name: 'LibreBooking Trigger', + }, + inputs: [], + outputs: ['main'], + credentials: [ + { + name: 'libreBookingApi', + required: true, + }, + ], + polling: true, + properties: [ + { + displayName: 'Event', + name: 'event', + type: 'options', + options: [ + { name: 'Neue Reservierung', value: 'newReservation', description: 'Wird bei neuen Reservierungen ausgelöst' }, + { name: 'Geänderte Reservierung', value: 'updatedReservation', description: 'Wird bei geänderten Reservierungen ausgelöst' }, + { name: 'Alle Reservierungen', value: 'allReservations', description: 'Wird bei neuen und geänderten Reservierungen ausgelöst' }, + ], + default: 'newReservation', + }, + { + displayName: 'Filter', + name: 'filters', + type: 'collection', + placeholder: 'Filter hinzufügen', + default: {}, + options: [ + { displayName: 'Ressourcen-ID', name: 'resourceId', type: 'number', default: '' }, + { displayName: 'Zeitplan-ID', name: 'scheduleId', type: 'number', default: '' }, + { displayName: 'Benutzer-ID', name: 'userId', type: 'number', default: '' }, + ], + }, + { + displayName: 'Zeitfenster', + name: 'timeWindow', + type: 'options', + options: [ + { name: 'Nächste 7 Tage', value: '7days' }, + { name: 'Nächste 14 Tage', value: '14days' }, + { name: 'Nächste 30 Tage', value: '30days' }, + { name: 'Nächste 90 Tage', value: '90days' }, + ], + default: '14days', + }, + { + displayName: 'Optionen', + name: 'options', + type: 'collection', + placeholder: 'Option hinzufügen', + default: {}, + options: [ + { displayName: 'Detaillierte Daten Abrufen', name: 'fetchDetails', type: 'boolean', default: false }, + ], + }, + ], + }; + + async poll(this: IPollFunctions): Promise { + const credentials = await this.getCredentials('libreBookingApi'); + const baseUrl = (credentials.url as string).replace(/\/$/, ''); + const username = credentials.username as string; + const password = credentials.password as string; + + const event = this.getNodeParameter('event') as string; + const filters = this.getNodeParameter('filters', {}) as any; + const timeWindow = this.getNodeParameter('timeWindow', '14days') as string; + const options = this.getNodeParameter('options', {}) as any; + + const workflowStaticData = this.getWorkflowStaticData('node'); + const previousReservations = (workflowStaticData.reservations as Record) || {}; + + let session: LibreBookingSession; + try { + session = await authenticateTrigger(this, baseUrl, username, password); + } catch (error) { + throw error; + } + + try { + const { start, end } = getTimeWindow(timeWindow); + + const reservations = await getReservations( + this, + baseUrl, + session, + start, + end, + filters, + ); + + const returnData: INodeExecutionData[] = []; + const currentReservations: Record = {}; + + for (const reservation of reservations) { + const refNumber = reservation.referenceNumber; + const reservationKey = getReservationKey(reservation); + currentReservations[refNumber] = reservationKey; + + const isNew = !previousReservations[refNumber]; + const isUpdated = previousReservations[refNumber] && previousReservations[refNumber] !== reservationKey; + + let shouldTrigger = false; + let eventType = ''; + + if (event === 'newReservation' && isNew) { + shouldTrigger = true; + eventType = 'new'; + } else if (event === 'updatedReservation' && isUpdated) { + shouldTrigger = true; + eventType = 'updated'; + } else if (event === 'allReservations' && (isNew || isUpdated)) { + shouldTrigger = true; + eventType = isNew ? 'new' : 'updated'; + } + + if (shouldTrigger) { + let reservationData = reservation; + + if (options.fetchDetails) { + try { + reservationData = await getReservationDetails( + this, + baseUrl, + session, + refNumber, + ); + } catch (error) { + reservationData = reservation; + } + } + + returnData.push({ + json: { + ...reservationData, + _eventType: eventType, + _triggeredAt: new Date().toISOString(), + }, + }); + } + } + + workflowStaticData.reservations = currentReservations; + + if (returnData.length === 0) { + return null; + } + + return [returnData]; + + } finally { + await signOutTrigger(this, baseUrl, session); + } + } +} diff --git a/nodes/LibreBookingTrigger/librebooking.svg b/nodes/LibreBookingTrigger/librebooking.svg new file mode 100644 index 0000000..81306a9 --- /dev/null +++ b/nodes/LibreBookingTrigger/librebooking.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..b734aa9 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,3067 @@ +{ + "name": "n8n-nodes-librebooking", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "n8n-nodes-librebooking", + "version": "1.0.0", + "license": "MIT", + "devDependencies": { + "@types/node": "^20.10.0", + "@typescript-eslint/eslint-plugin": "^6.13.0", + "@typescript-eslint/parser": "^6.13.0", + "eslint": "^8.54.0", + "n8n-workflow": "^1.20.0", + "prettier": "^3.1.0", + "ts-node": "^10.9.2", + "typescript": "^5.3.2" + }, + "engines": { + "node": ">=18.17.0" + }, + "peerDependencies": { + "n8n-workflow": "*" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@n8n_io/riot-tmpl": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@n8n_io/riot-tmpl/-/riot-tmpl-4.0.1.tgz", + "integrity": "sha512-/zdRbEfTFjsm1NqnpPQHgZTkTdbp5v3VUxGeMA9098sps8jRCTraQkc3AQstJgHUm7ylBXJcIVhnVeLUMWAfwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-config-riot": "^1.0.0" + } + }, + "node_modules/@n8n/errors": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@n8n/errors/-/errors-0.5.0.tgz", + "integrity": "sha512-0Vk1Eb3Uor+zeF/WVnuhFgJc51wEBTZNBlVQy3mvyr3sGmW86bP1jA7wmRsd0DZbswPwN0vNOl/TmkDTEopOtQ==", + "dev": true, + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "callsites": "3.1.0" + } + }, + "node_modules/@n8n/tournament": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@n8n/tournament/-/tournament-1.0.6.tgz", + "integrity": "sha512-UGSxYXXVuOX0yL6HTLBStKYwLIa0+JmRKiSZSCMcM2s2Wax984KWT6XIA1TR/27i7yYpDk1MY14KsTPnuEp27A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@n8n_io/riot-tmpl": "^4.0.1", + "ast-types": "^0.16.1", + "esprima-next": "^5.8.4", + "recast": "^0.22.0" + }, + "engines": { + "node": ">=20.15", + "pnpm": ">=9.5" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", + "integrity": "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "20.19.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.30.tgz", + "integrity": "sha512-WJtwWJu7UdlvzEAUm484QNg5eAoq5QR08KDNx7g45Usrs2NtOPiX8ugDqmKdXkyL03rBqU5dYNYVQetEpBHq2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", + "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/type-utils": "6.21.0", + "@typescript-eslint/utils": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", + "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", + "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", + "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/utils": "6.21.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", + "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", + "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", + "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", + "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "dev": true, + "license": "ISC" + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true, + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/assert": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", + "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "is-nan": "^1.3.2", + "object-is": "^1.1.5", + "object.assign": "^4.1.4", + "util": "^0.12.5" + } + }, + "node_modules/ast-types": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz", + "integrity": "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": "*" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": "*" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/diff": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.4.tgz", + "integrity": "sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-riot": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-riot/-/eslint-config-riot-1.0.0.tgz", + "integrity": "sha512-NB/L/1Y30qyJcG5xZxCJKW/+bqyj+llbcCwo9DEz8bESIP0SLTOQ8T1DWCCFc+wJ61AMEstj4511PSScqMMfCw==", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esprima-next": { + "version": "5.8.4", + "resolved": "https://registry.npmjs.org/esprima-next/-/esprima-next-5.8.4.tgz", + "integrity": "sha512-8nYVZ4ioIH4Msjb/XmhnBdz5WRRBaYqevKa1cv9nGJdCehMbzZCPNEEnqfLCZVetUVrUPEcb5IYyu1GG4hFqgg==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/esquery": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/generator-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/is-arguments": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", + "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-nan": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", + "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/jmespath": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", + "integrity": "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/js-base64": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.2.tgz", + "integrity": "sha512-NnRs6dsyqUXejqk/yv2aiXlAvOs56sLkX6nUdeaNezI5LFFLlsZjOThmwnrcwh5ZZRwZlCMnVAY3CvhIhoVEKQ==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsonrepair": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/jsonrepair/-/jsonrepair-3.13.1.tgz", + "integrity": "sha512-WJeiE0jGfxYmtLwBTEk8+y/mYcaleyLXWaqp5bJu0/ZTSeG0KQq/wWQ8pmnkKenEdN6pdnn6QtcoSUkbqDHWNw==", + "dev": true, + "license": "ISC", + "bin": { + "jsonrepair": "bin/cli.js" + } + }, + "node_modules/jssha": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jssha/-/jssha-3.3.1.tgz", + "integrity": "sha512-VCMZj12FCFMQYcFLPRm/0lOBbLi8uM2BhXPTqw3U4YAfs4AZfiApOoBLoN8cQE60Z50m1MYMTQVCfgF/KaCVhQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": "*" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/luxon": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.4.4.tgz", + "integrity": "sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true, + "license": "ISC" + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/md5": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/n8n-workflow": { + "version": "1.120.7", + "resolved": "https://registry.npmjs.org/n8n-workflow/-/n8n-workflow-1.120.7.tgz", + "integrity": "sha512-kTJVxns085po2Tcv9f4bJdKnngxyVnGjA+cQPsNTcZoxM+09R4+lxOWnH5aeAJkRxKEVYZ278/rwF5B6c/mnvg==", + "dev": true, + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "@n8n/errors": "0.5.0", + "@n8n/tournament": "1.0.6", + "ast-types": "0.16.1", + "callsites": "3.1.0", + "esprima-next": "5.8.4", + "form-data": "4.0.0", + "jmespath": "0.16.0", + "js-base64": "3.7.2", + "jsonrepair": "3.13.1", + "jssha": "3.3.1", + "lodash": "4.17.21", + "luxon": "3.4.4", + "md5": "2.3.0", + "recast": "0.22.0", + "title-case": "3.0.3", + "transliteration": "2.3.5", + "xml2js": "0.6.2", + "zod": "3.25.67" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/object-is": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", + "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/recast": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.22.0.tgz", + "integrity": "sha512-5AAx+mujtXijsEavc5lWXBPQqrM4+Dl5qNH96N2aNeuJFUzpiiToKPsxQD/zAIJHspz7zz0maX0PCtCTFVlixQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "assert": "^2.0.0", + "ast-types": "0.15.2", + "esprima": "~4.0.0", + "source-map": "~0.6.1", + "tslib": "^2.0.1" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/recast/node_modules/ast-types": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.15.2.tgz", + "integrity": "sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sax": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.4.tgz", + "integrity": "sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=11.0.0" + } + }, + "node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true, + "license": "MIT" + }, + "node_modules/title-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/title-case/-/title-case-3.0.3.tgz", + "integrity": "sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/transliteration": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/transliteration/-/transliteration-2.3.5.tgz", + "integrity": "sha512-HAGI4Lq4Q9dZ3Utu2phaWgtm3vB6PkLUFqWAScg/UW+1eZ/Tg6Exo4oC0/3VUol/w4BlefLhUUSVBr/9/ZGQOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "yargs": "^17.5.1" + }, + "bin": { + "slugify": "dist/bin/slugify", + "transliterate": "dist/bin/transliterate" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/ts-api-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", + "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true, + "license": "MIT" + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.20", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", + "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/xml2js": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz", + "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", + "dev": true, + "license": "MIT", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "3.25.67", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.67.tgz", + "integrity": "sha512-idA2YXwpCdqUSKRCACDE6ItZD9TZzy3OZMtpfLoh6oPR47lipysRrJfjzMqFxQ3uJuUPyUeWe1r9vLH33xO/Qw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..67bb1ee --- /dev/null +++ b/package.json @@ -0,0 +1,90 @@ +{ + "name": "n8n-nodes-librebooking", + "version": "1.1.0", + "description": "n8n Node für LibreBooking - Ressourcen- und Reservierungsverwaltung", + "keywords": [ + "n8n-community-node-package", + "n8n", + "n8n-node", + "workflow", + "automation", + "librebooking", + "booking", + "reservation", + "resource-management", + "room-booking", + "raumbuchung", + "terminbuchung", + "open-source" + ], + "license": "MIT", + "homepage": "https://github.com/your-org/n8n-nodes-librebooking#readme", + "author": { + "name": "LibreBooking n8n Integration", + "email": "support@example.com" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/your-org/n8n-nodes-librebooking.git" + }, + "bugs": { + "url": "https://github.com/your-org/n8n-nodes-librebooking/issues" + }, + "main": "dist/index.js", + "types": "dist/index.d.ts", + "scripts": { + "build": "tsc && npm run copy:icons", + "copy:icons": "cp nodes/LibreBooking/librebooking.svg dist/nodes/LibreBooking/ && cp nodes/LibreBookingTrigger/librebooking.svg dist/nodes/LibreBookingTrigger/", + "dev": "tsc --watch", + "clean": "rm -rf dist node_modules", + "rebuild": "npm run clean && npm install && npm run build", + "format": "prettier nodes credentials --write", + "lint": "eslint nodes credentials --ext .ts", + "lint:fix": "eslint nodes credentials --ext .ts --fix", + "prepack": "npm run build", + "prepublishOnly": "npm run lint && npm run build", + "postinstall": "echo 'Installation abgeschlossen. Führe npm run build aus.'", + "test": "ts-node test/test-api.ts", + "link:n8n": "npm link && echo 'Node verlinkt. Starte n8n neu mit: n8n start'", + "unlink": "npm unlink -g n8n-nodes-librebooking", + "install-in-docker": "npm install && npm run build && echo '\\n✓ Installation abgeschlossen. Bitte n8n Container neustarten: docker restart n8n'", + "docker:copy": "docker cp dist n8n:/home/node/.n8n/custom/n8n-nodes-librebooking/ && docker cp package.json n8n:/home/node/.n8n/custom/n8n-nodes-librebooking/ && docker cp node_modules n8n:/home/node/.n8n/custom/n8n-nodes-librebooking/", + "docker:restart": "docker restart n8n", + "docker:deploy": "npm run build && npm run docker:copy && npm run docker:restart" + }, + "files": [ + "dist", + "README.md", + "LICENSE" + ], + "n8n": { + "n8nNodesApiVersion": 1, + "credentials": [ + "dist/credentials/LibreBookingApi.credentials.js" + ], + "nodes": [ + "dist/nodes/LibreBooking/LibreBooking.node.js", + "dist/nodes/LibreBookingTrigger/LibreBookingTrigger.node.js" + ] + }, + "devDependencies": { + "@types/node": "^20.10.0", + "@typescript-eslint/eslint-plugin": "^6.13.0", + "@typescript-eslint/parser": "^6.13.0", + "eslint": "^8.54.0", + "n8n-workflow": "^1.20.0", + "prettier": "^3.1.0", + "ts-node": "^10.9.2", + "typescript": "^5.3.2" + }, + "peerDependencies": { + "n8n-workflow": "*" + }, + "engines": { + "node": ">=18.17.0" + }, + "overrides": { + "form-data": "^4.0.1", + "lodash": "^4.17.21" + } +} diff --git a/quick-install.sh b/quick-install.sh new file mode 100755 index 0000000..da1c634 --- /dev/null +++ b/quick-install.sh @@ -0,0 +1,71 @@ +#!/bin/bash +# ============================================================================ +# quick-install.sh - Schnellste Installation des LibreBooking n8n Nodes +# +# EMPFOHLENE METHODE: Auf dem Host bauen, in Container kopieren +# ============================================================================ + +set -e + +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' + +CONTAINER_NAME="${1:-n8n}" +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +echo -e "${GREEN}=== LibreBooking Quick Install ===${NC}\n" + +# Prüfe Voraussetzungen +if ! command -v node &>/dev/null; then + echo -e "${RED}Fehler: Node.js nicht installiert!${NC}" + echo "Installieren: https://nodejs.org/ (v18+)" + exit 1 +fi + +if ! command -v docker &>/dev/null; then + echo -e "${RED}Fehler: Docker nicht installiert!${NC}" + exit 1 +fi + +if ! docker ps | grep -q "$CONTAINER_NAME"; then + echo -e "${YELLOW}Warnung: Container '$CONTAINER_NAME' nicht gefunden oder läuft nicht.${NC}" + echo "Verfügbare Container:" + docker ps --format " {{.Names}}" + exit 1 +fi + +cd "$SCRIPT_DIR" + +# 1. Dependencies installieren +echo "[1/4] Installiere Dependencies..." +npm install --silent + +# 2. Bauen +echo "[2/4] Baue Node..." +npm run build --silent + +# 3. In Container kopieren +echo "[3/4] Kopiere in Container '$CONTAINER_NAME'..." + +# Erstelle Zielverzeichnis falls nötig +docker exec "$CONTAINER_NAME" mkdir -p /home/node/.n8n/custom/n8n-nodes-librebooking 2>/dev/null || true + +# Kopiere Dateien +docker cp dist "$CONTAINER_NAME":/home/node/.n8n/custom/n8n-nodes-librebooking/ +docker cp package.json "$CONTAINER_NAME":/home/node/.n8n/custom/n8n-nodes-librebooking/ +docker cp node_modules "$CONTAINER_NAME":/home/node/.n8n/custom/n8n-nodes-librebooking/ + +# 4. Container neustarten +echo "[4/4] Starte Container neu..." +docker restart "$CONTAINER_NAME" + +echo "" +echo -e "${GREEN}✓ Installation abgeschlossen!${NC}" +echo "" +echo "Nächste Schritte:" +echo " 1. Öffne n8n: http://localhost:5678" +echo " 2. Gehe zu: Einstellungen → Credentials → Add Credential" +echo " 3. Suche: 'LibreBooking API'" +echo "" diff --git a/test/test-api.ts b/test/test-api.ts new file mode 100644 index 0000000..f1b5058 --- /dev/null +++ b/test/test-api.ts @@ -0,0 +1,325 @@ +/** + * LibreBooking API Test-Skript + * + * Testet die Authentifizierung und grundlegende API-Operationen + * mit den bereitgestellten Test-Credentials. + * + * Ausführen mit: npx ts-node test/test-api.ts + */ + +const https = require('https'); +const http = require('http'); + +// Test-Credentials +const TEST_CONFIG = { + url: 'https://librebooking.zell-cloud.de', + username: 'sebastian.zell@zell-aufmass.de', + password: 'wanUQ4uVqU6lfP', +}; + +interface LibreBookingSession { + sessionToken: string; + userId: number; + sessionExpires: string; +} + +/** + * HTTP/HTTPS Request Helper + */ +async function makeRequest( + url: string, + method: string, + headers: Record, + body?: any +): Promise { + return new Promise((resolve, reject) => { + const urlObj = new URL(url); + const isHttps = urlObj.protocol === 'https:'; + const lib = isHttps ? https : http; + + const options = { + hostname: urlObj.hostname, + port: urlObj.port || (isHttps ? 443 : 80), + path: urlObj.pathname + urlObj.search, + method, + headers: { + 'Content-Type': 'application/json', + ...headers, + }, + }; + + const req = lib.request(options, (res: any) => { + let data = ''; + res.on('data', (chunk: string) => (data += chunk)); + res.on('end', () => { + try { + const jsonData = JSON.parse(data); + resolve({ statusCode: res.statusCode, data: jsonData }); + } catch (e) { + resolve({ statusCode: res.statusCode, data }); + } + }); + }); + + req.on('error', reject); + + if (body) { + req.write(JSON.stringify(body)); + } + req.end(); + }); +} + +/** + * Authentifizierung testen + */ +async function testAuthentication(): Promise { + console.log('\n========================================'); + console.log('TEST 1: Authentifizierung'); + console.log('========================================'); + + try { + const response = await makeRequest( + `${TEST_CONFIG.url}/Web/Services/index.php/Authentication/Authenticate`, + 'POST', + {}, + { + username: TEST_CONFIG.username, + password: TEST_CONFIG.password, + } + ); + + if (response.statusCode === 200 && response.data.isAuthenticated) { + console.log('✅ Authentifizierung erfolgreich!'); + console.log(` Session Token: ${response.data.sessionToken.substring(0, 20)}...`); + console.log(` User ID: ${response.data.userId}`); + console.log(` Session läuft ab: ${response.data.sessionExpires}`); + return { + sessionToken: response.data.sessionToken, + userId: response.data.userId, + sessionExpires: response.data.sessionExpires, + }; + } else { + console.log('❌ Authentifizierung fehlgeschlagen!'); + console.log(' Response:', JSON.stringify(response.data, null, 2)); + return null; + } + } catch (error: any) { + console.log('❌ Fehler bei der Authentifizierung:', error.message); + return null; + } +} + +/** + * Alle Reservierungen abrufen + */ +async function testGetReservations(session: LibreBookingSession): Promise { + console.log('\n========================================'); + console.log('TEST 2: Reservierungen abrufen'); + console.log('========================================'); + + try { + const response = await makeRequest( + `${TEST_CONFIG.url}/Web/Services/index.php/Reservations/`, + 'GET', + { + 'X-Booked-SessionToken': session.sessionToken, + 'X-Booked-UserId': session.userId.toString(), + } + ); + + if (response.statusCode === 200) { + const reservations = response.data.reservations || []; + console.log(`✅ ${reservations.length} Reservierung(en) gefunden`); + + if (reservations.length > 0) { + console.log('\n Erste 3 Reservierungen:'); + reservations.slice(0, 3).forEach((res: any, idx: number) => { + console.log(` ${idx + 1}. ${res.title || 'Ohne Titel'}`); + console.log(` Referenz: ${res.referenceNumber}`); + console.log(` Ressource: ${res.resourceName}`); + console.log(` Zeit: ${res.startDate} - ${res.endDate}`); + console.log(''); + }); + } + } else { + console.log(`❌ Fehler beim Abrufen: Status ${response.statusCode}`); + console.log(' Response:', JSON.stringify(response.data, null, 2)); + } + } catch (error: any) { + console.log('❌ Fehler:', error.message); + } +} + +/** + * Alle Ressourcen abrufen + */ +async function testGetResources(session: LibreBookingSession): Promise { + console.log('\n========================================'); + console.log('TEST 3: Ressourcen abrufen'); + console.log('========================================'); + + try { + const response = await makeRequest( + `${TEST_CONFIG.url}/Web/Services/index.php/Resources/`, + 'GET', + { + 'X-Booked-SessionToken': session.sessionToken, + 'X-Booked-UserId': session.userId.toString(), + } + ); + + if (response.statusCode === 200) { + const resources = response.data.resources || []; + console.log(`✅ ${resources.length} Ressource(n) gefunden`); + + resources.forEach((res: any, idx: number) => { + console.log(` ${idx + 1}. ${res.name} (ID: ${res.resourceId})`); + if (res.location) console.log(` Standort: ${res.location}`); + console.log(` Status: ${res.statusId === 1 ? 'Verfügbar' : res.statusId === 0 ? 'Versteckt' : 'Nicht verfügbar'}`); + }); + } else { + console.log(`❌ Fehler beim Abrufen: Status ${response.statusCode}`); + } + } catch (error: any) { + console.log('❌ Fehler:', error.message); + } +} + +/** + * Alle Zeitpläne abrufen + */ +async function testGetSchedules(session: LibreBookingSession): Promise { + console.log('\n========================================'); + console.log('TEST 4: Zeitpläne abrufen'); + console.log('========================================'); + + try { + const response = await makeRequest( + `${TEST_CONFIG.url}/Web/Services/index.php/Schedules/`, + 'GET', + { + 'X-Booked-SessionToken': session.sessionToken, + 'X-Booked-UserId': session.userId.toString(), + } + ); + + if (response.statusCode === 200) { + const schedules = response.data.schedules || []; + console.log(`✅ ${schedules.length} Zeitplan/Zeitpläne gefunden`); + + schedules.forEach((schedule: any, idx: number) => { + console.log(` ${idx + 1}. ${schedule.name} (ID: ${schedule.id})`); + console.log(` Zeitzone: ${schedule.timezone}`); + console.log(` Standard: ${schedule.isDefault ? 'Ja' : 'Nein'}`); + }); + } else { + console.log(`❌ Fehler beim Abrufen: Status ${response.statusCode}`); + } + } catch (error: any) { + console.log('❌ Fehler:', error.message); + } +} + +/** + * Alle Benutzer abrufen + */ +async function testGetUsers(session: LibreBookingSession): Promise { + console.log('\n========================================'); + console.log('TEST 5: Benutzer abrufen'); + console.log('========================================'); + + try { + const response = await makeRequest( + `${TEST_CONFIG.url}/Web/Services/index.php/Users/`, + 'GET', + { + 'X-Booked-SessionToken': session.sessionToken, + 'X-Booked-UserId': session.userId.toString(), + } + ); + + if (response.statusCode === 200) { + const users = response.data.users || []; + console.log(`✅ ${users.length} Benutzer gefunden`); + + users.slice(0, 5).forEach((user: any, idx: number) => { + console.log(` ${idx + 1}. ${user.firstName} ${user.lastName}`); + console.log(` E-Mail: ${user.emailAddress}`); + console.log(` ID: ${user.id}`); + }); + + if (users.length > 5) { + console.log(` ... und ${users.length - 5} weitere`); + } + } else { + console.log(`❌ Fehler beim Abrufen: Status ${response.statusCode}`); + } + } catch (error: any) { + console.log('❌ Fehler:', error.message); + } +} + +/** + * Abmelden + */ +async function testSignOut(session: LibreBookingSession): Promise { + console.log('\n========================================'); + console.log('TEST 6: Abmelden'); + console.log('========================================'); + + try { + const response = await makeRequest( + `${TEST_CONFIG.url}/Web/Services/index.php/Authentication/SignOut`, + 'POST', + {}, + { + userId: session.userId, + sessionToken: session.sessionToken, + } + ); + + if (response.statusCode === 200 || response.statusCode === 204) { + console.log('✅ Erfolgreich abgemeldet'); + } else { + console.log(`⚠️ Abmeldung mit Status ${response.statusCode} abgeschlossen`); + } + } catch (error: any) { + console.log('⚠️ Abmeldung fehlgeschlagen (kann ignoriert werden):', error.message); + } +} + +/** + * Hauptfunktion + */ +async function runTests(): Promise { + console.log('\n📝 LibreBooking API Test'); + console.log('======================================'); + console.log(`URL: ${TEST_CONFIG.url}`); + console.log(`User: ${TEST_CONFIG.username}`); + console.log('======================================'); + + // Test 1: Authentifizierung + const session = await testAuthentication(); + + if (!session) { + console.log('\n❌ Tests abgebrochen - Authentifizierung fehlgeschlagen'); + process.exit(1); + } + + // Test 2-5: API-Endpunkte + await testGetReservations(session); + await testGetResources(session); + await testGetSchedules(session); + await testGetUsers(session); + + // Test 6: Abmelden + await testSignOut(session); + + console.log('\n========================================'); + console.log('✅ Alle Tests abgeschlossen!'); + console.log('========================================\n'); +} + +// Tests ausführen +runTests().catch(console.error); diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..88c33d7 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,31 @@ +{ + "compilerOptions": { + "target": "ES2019", + "module": "commonjs", + "lib": ["ES2019", "ES2020.Promise"], + "declaration": true, + "declarationMap": true, + "sourceMap": true, + "outDir": "./dist", + "rootDir": ".", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "moduleResolution": "node", + "noImplicitAny": true, + "noImplicitReturns": true, + "noUnusedLocals": false, + "noUnusedParameters": false + }, + "include": [ + "nodes/**/*.ts", + "credentials/**/*.ts" + ], + "exclude": [ + "node_modules", + "dist", + "test" + ] +} diff --git a/update-dependencies.sh b/update-dependencies.sh new file mode 100755 index 0000000..da4318e --- /dev/null +++ b/update-dependencies.sh @@ -0,0 +1,112 @@ +#!/bin/bash +# ============================================================================ +# update-dependencies.sh - Aktualisiert Dependencies und behebt Vulnerabilities +# ============================================================================ + +set -e + +# Farben +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +NC='\033[0m' + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +echo -e "${BLUE}============================================${NC}" +echo -e "${BLUE} LibreBooking Node - Dependency Update${NC}" +echo -e "${BLUE}============================================${NC}" +echo "" + +log() { + echo -e "${GREEN}[INFO]${NC} $1" +} + +warn() { + echo -e "${YELLOW}[WARN]${NC} $1" +} + +error() { + echo -e "${RED}[ERROR]${NC} $1" +} + +cd "$SCRIPT_DIR" + +# Schritt 1: Aktuelle Vulnerabilities anzeigen +log "Prüfe aktuelle Vulnerabilities..." +echo "" +echo "=== VOR dem Update ===" +npm audit 2>/dev/null || true +echo "" + +# Schritt 2: npm audit fix +log "Führe npm audit fix aus..." +if npm audit fix 2>&1; then + log "npm audit fix erfolgreich ✓" +else + warn "npm audit fix hatte Probleme (evtl. normale Warnungen)" +fi + +# Schritt 3: npm update +log "Führe npm update aus..." +if npm update 2>&1; then + log "npm update erfolgreich ✓" +else + warn "npm update hatte Probleme" +fi + +# Schritt 4: Outdated Packages prüfen +log "Prüfe veraltete Packages..." +echo "" +npm outdated 2>/dev/null || log "Alle Packages sind aktuell ✓" +echo "" + +# Schritt 5: Build testen +log "Teste Build..." +if npm run build 2>&1 | tail -5; then + log "Build erfolgreich ✓" +else + error "Build fehlgeschlagen!" + echo "" + echo "Versuchen Sie:" + echo " 1. rm -rf node_modules package-lock.json" + echo " 2. npm install" + echo " 3. npm run build" + exit 1 +fi + +# Schritt 6: Finale Vulnerability-Prüfung +log "Finale Vulnerability-Prüfung..." +echo "" +echo "=== NACH dem Update ===" +npm audit 2>/dev/null || true +echo "" + +# Schritt 7: Report +echo -e "${GREEN}============================================${NC}" +echo -e "${GREEN} Update abgeschlossen!${NC}" +echo -e "${GREEN}============================================${NC}" +echo "" + +# Verbleibende Vulnerabilities zählen +AUDIT_OUTPUT=$(npm audit 2>/dev/null || true) +if echo "$AUDIT_OUTPUT" | grep -q "found 0 vulnerabilities"; then + log "Keine Vulnerabilities mehr! ✓" +else + VULN_COUNT=$(echo "$AUDIT_OUTPUT" | grep -oP '\d+ vulnerabilities' | head -1 || echo "Einige") + warn "Verbleibende Vulnerabilities: $VULN_COUNT" + echo "" + echo "Diese kommen wahrscheinlich von n8n-workflow Dependencies." + echo "Siehe SECURITY.md für weitere Informationen." +fi + +echo "" +echo "Nächste Schritte:" +echo " 1. Testen Sie die Änderungen lokal" +echo " 2. Committen Sie die Änderungen:" +echo " git add package.json package-lock.json" +echo " git commit -m 'chore: update dependencies'" +echo " 3. Bauen Sie das Docker-Image neu:" +echo " docker compose build --no-cache" +echo "" diff --git a/update-node.sh b/update-node.sh new file mode 100755 index 0000000..44c940b --- /dev/null +++ b/update-node.sh @@ -0,0 +1,61 @@ +#!/bin/bash +# ============================================================================ +# update-node.sh - Aktualisiert den LibreBooking n8n Node +# +# Verwendung nach git pull oder Änderungen am Code +# ============================================================================ + +set -e + +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' + +CONTAINER_NAME="${1:-n8n}" +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +echo -e "${GREEN}=== LibreBooking Node Update ===${NC}\n" + +cd "$SCRIPT_DIR" + +# Git Pull (optional) +if [ -d ".git" ]; then + echo "[1/5] Hole neueste Änderungen..." + git pull 2>/dev/null || echo -e "${YELLOW}Git pull übersprungen${NC}" +else + echo "[1/5] Kein Git Repository - übersprungen" +fi + +# Dependencies aktualisieren +echo "[2/5] Aktualisiere Dependencies..." +npm install --silent + +# Bauen +echo "[3/5] Baue Node..." +npm run build --silent + +# Prüfe Container +if ! docker ps | grep -q "$CONTAINER_NAME"; then + echo -e "${YELLOW}Container '$CONTAINER_NAME' nicht gefunden.${NC}" + echo "Verfügbare Container:" + docker ps --format " {{.Names}}" + echo "" + echo "Manuell kopieren:" + echo " docker cp dist :/home/node/.n8n/custom/n8n-nodes-librebooking/" + exit 0 +fi + +# In Container kopieren +echo "[4/5] Kopiere in Container '$CONTAINER_NAME'..." +docker cp dist "$CONTAINER_NAME":/home/node/.n8n/custom/n8n-nodes-librebooking/ +docker cp package.json "$CONTAINER_NAME":/home/node/.n8n/custom/n8n-nodes-librebooking/ +docker cp node_modules "$CONTAINER_NAME":/home/node/.n8n/custom/n8n-nodes-librebooking/ + +# Container neustarten +echo "[5/5] Starte Container neu..." +docker restart "$CONTAINER_NAME" + +echo "" +echo -e "${GREEN}✓ Update abgeschlossen!${NC}" +echo "" diff --git a/workflows/example-workflows.json b/workflows/example-workflows.json new file mode 100644 index 0000000..a815b81 --- /dev/null +++ b/workflows/example-workflows.json @@ -0,0 +1,265 @@ +{ + "name": "LibreBooking Beispiel-Workflows", + "description": "Sammlung von Beispiel-Workflows für den LibreBooking n8n Node", + "workflows": [ + { + "name": "1. Alle Reservierungen abrufen", + "description": "Ruft alle Reservierungen der nächsten 14 Tage ab", + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.manualTrigger", + "typeVersion": 1, + "position": [100, 300] + }, + { + "parameters": { + "resource": "reservation", + "operation": "getAll", + "filters": {} + }, + "name": "Alle Reservierungen", + "type": "n8n-nodes-librebooking.libreBooking", + "typeVersion": 1, + "position": [300, 300], + "credentials": { + "libreBookingApi": "LibreBooking Account" + } + } + ], + "connections": { + "Start": { + "main": [[{"node": "Alle Reservierungen", "type": "main", "index": 0}]] + } + } + }, + { + "name": "2. Neue Reservierung erstellen", + "description": "Erstellt eine neue Reservierung für morgen 10:00-11:00 Uhr", + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.manualTrigger", + "typeVersion": 1, + "position": [100, 300] + }, + { + "parameters": { + "resource": "reservation", + "operation": "create", + "resourceId": 1, + "startDateTime": "={{ $now.plus({days: 1}).set({hour: 10, minute: 0, second: 0}).toISO() }}", + "endDateTime": "={{ $now.plus({days: 1}).set({hour: 11, minute: 0, second: 0}).toISO() }}", + "title": "Automatisch erstellte Reservierung", + "additionalFields": { + "description": "Diese Reservierung wurde automatisch über n8n erstellt" + } + }, + "name": "Reservierung erstellen", + "type": "n8n-nodes-librebooking.libreBooking", + "typeVersion": 1, + "position": [300, 300], + "credentials": { + "libreBookingApi": "LibreBooking Account" + } + } + ], + "connections": { + "Start": { + "main": [[{"node": "Reservierung erstellen", "type": "main", "index": 0}]] + } + } + }, + { + "name": "3. Ressourcen-Verfügbarkeit prüfen", + "description": "Prüft die Verfügbarkeit aller Ressourcen", + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.manualTrigger", + "typeVersion": 1, + "position": [100, 300] + }, + { + "parameters": { + "resource": "resource", + "operation": "getAvailability" + }, + "name": "Verfügbarkeit prüfen", + "type": "n8n-nodes-librebooking.libreBooking", + "typeVersion": 1, + "position": [300, 300], + "credentials": { + "libreBookingApi": "LibreBooking Account" + } + }, + { + "parameters": { + "conditions": { + "boolean": [ + { + "value1": "={{ $json.available }}", + "value2": true + } + ] + } + }, + "name": "Nur Verfügbare", + "type": "n8n-nodes-base.if", + "typeVersion": 1, + "position": [500, 300] + } + ], + "connections": { + "Start": { + "main": [[{"node": "Verfügbarkeit prüfen", "type": "main", "index": 0}]] + }, + "Verfügbarkeit prüfen": { + "main": [[{"node": "Nur Verfügbare", "type": "main", "index": 0}]] + } + } + }, + { + "name": "4. Benutzer-Übersicht", + "description": "Ruft alle Benutzer ab und formatiert sie", + "nodes": [ + { + "parameters": {}, + "name": "Start", + "type": "n8n-nodes-base.manualTrigger", + "typeVersion": 1, + "position": [100, 300] + }, + { + "parameters": { + "resource": "user", + "operation": "getAll", + "userFilters": {} + }, + "name": "Alle Benutzer", + "type": "n8n-nodes-librebooking.libreBooking", + "typeVersion": 1, + "position": [300, 300], + "credentials": { + "libreBookingApi": "LibreBooking Account" + } + }, + { + "parameters": { + "mode": "runOnceForEachItem", + "jsCode": "return {\n json: {\n name: `${$json.firstName} ${$json.lastName}`,\n email: $json.emailAddress,\n organization: $json.organization || 'Keine',\n lastLogin: $json.lastLogin\n }\n};" + }, + "name": "Formatieren", + "type": "n8n-nodes-base.code", + "typeVersion": 2, + "position": [500, 300] + } + ], + "connections": { + "Start": { + "main": [[{"node": "Alle Benutzer", "type": "main", "index": 0}]] + }, + "Alle Benutzer": { + "main": [[{"node": "Formatieren", "type": "main", "index": 0}]] + } + } + }, + { + "name": "5. Trigger: Neue Reservierungen überwachen", + "description": "Trigger-Workflow der bei neuen Reservierungen auslöst", + "nodes": [ + { + "parameters": { + "event": "newReservation", + "filters": {}, + "timeWindow": "14days", + "options": { + "fetchDetails": true + } + }, + "name": "LibreBooking Trigger", + "type": "n8n-nodes-librebooking.libreBookingTrigger", + "typeVersion": 1, + "position": [100, 300], + "credentials": { + "libreBookingApi": "LibreBooking Account" + } + }, + { + "parameters": { + "mode": "runOnceForEachItem", + "jsCode": "const reservation = $json;\nreturn {\n json: {\n message: `Neue Reservierung: ${reservation.title || 'Ohne Titel'}`,\n resource: reservation.resourceName,\n start: reservation.startDate,\n end: reservation.endDate,\n user: `${reservation.firstName} ${reservation.lastName}`\n }\n};" + }, + "name": "Nachricht formatieren", + "type": "n8n-nodes-base.code", + "typeVersion": 2, + "position": [300, 300] + } + ], + "connections": { + "LibreBooking Trigger": { + "main": [[{"node": "Nachricht formatieren", "type": "main", "index": 0}]] + } + } + }, + { + "name": "6. Täglicher Reservierungsbericht", + "description": "Sendet täglich eine Übersicht der heutigen Reservierungen", + "nodes": [ + { + "parameters": { + "rule": { + "interval": [ + { + "field": "cronExpression", + "expression": "0 8 * * *" + } + ] + } + }, + "name": "Täglich 8:00", + "type": "n8n-nodes-base.scheduleTrigger", + "typeVersion": 1, + "position": [100, 300] + }, + { + "parameters": { + "resource": "reservation", + "operation": "getAll", + "filters": { + "startDateTime": "={{ $now.startOf('day').toISO() }}", + "endDateTime": "={{ $now.endOf('day').toISO() }}" + } + }, + "name": "Heutige Reservierungen", + "type": "n8n-nodes-librebooking.libreBooking", + "typeVersion": 1, + "position": [300, 300], + "credentials": { + "libreBookingApi": "LibreBooking Account" + } + }, + { + "parameters": { + "aggregate": "aggregateAllItemData" + }, + "name": "Zusammenfassen", + "type": "n8n-nodes-base.aggregate", + "typeVersion": 1, + "position": [500, 300] + } + ], + "connections": { + "Täglich 8:00": { + "main": [[{"node": "Heutige Reservierungen", "type": "main", "index": 0}]] + }, + "Heutige Reservierungen": { + "main": [[{"node": "Zusammenfassen", "type": "main", "index": 0}]] + } + } + } + ] +} \ No newline at end of file