From 77b7679144cade935d6c1abd2ac88a096006ca2c Mon Sep 17 00:00:00 2001 From: Matt Bevilacqua Date: Wed, 13 Nov 2024 10:11:53 -0500 Subject: [PATCH 1/6] Excude courses that have been replaced from query --- src/services/course.ts | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/services/course.ts b/src/services/course.ts index f4b64406a7..ae21149dd0 100644 --- a/src/services/course.ts +++ b/src/services/course.ts @@ -17,7 +17,10 @@ interface DecodedCSV { export async function getAllCourses(where: WhereOptions = {}) { return Course.findAll({ - where, + where: { + ...where, + mapsTo: null, + }, order: [['persistsOnUpload', 'ASC'], ['name', 'ASC']], attributes: ['name', 'id'], }); @@ -44,6 +47,12 @@ export async function csvImport(buffer: Buffer | string) { const parsed = parse(buffer, { skipEmptyLines: true, columns: true }); let rowCount = 1; let results; + + const baseCourseScopes = { + persistsOnUpload: false, // We don't want to delete courses that persist on import. + mapsTo: null, // we only want to update courses that are not mapped to another course. + }; + try { results = await Promise.all(parsed.map(async (course: DecodedCSV) => { // Trim unexpected chars. @@ -62,6 +71,7 @@ export async function csvImport(buffer: Buffer | string) { // Always trim leading and trailing spaces. rawCourseName = rawCourseName.trim(); + rawCourseName.replace('’', '\''); // Remove all spaces and special characters from the course name. const cleanCourseName = rawCourseName.replace(/[^a-zA-Z0-9]/g, '').toLowerCase(); @@ -74,10 +84,7 @@ export async function csvImport(buffer: Buffer | string) { Sequelize.fn('lower', Sequelize.fn('regexp_replace', Sequelize.col('name'), '[^a-zA-Z0-9]', '', 'g')), { [Op.like]: cleanCourseName }, ), - { - deletedAt: null, - persistsOnUpload: false, // We don't want to delete courses that persist on import. - }, + baseCourseScopes, ], }, }); @@ -111,7 +118,6 @@ export async function csvImport(buffer: Buffer | string) { id: { [Op.in]: existingCourses.map((c: ICourse) => c.id), }, - deletedAt: null, }, }); @@ -141,8 +147,7 @@ export async function csvImport(buffer: Buffer | string) { id: { [Op.notIn]: importedCourseIds, }, - deletedAt: null, - persistsOnUpload: false, + ...baseCourseScopes, }, returning: true, }); From 426e53f578fc9de265744640174cfe445d79c641 Mon Sep 17 00:00:00 2001 From: Matt Bevilacqua Date: Wed, 13 Nov 2024 16:40:52 -0500 Subject: [PATCH 2/6] Add monitoring integration feature flag --- docs/logical_data_model.encoded | 2 +- docs/logical_data_model.puml | 2 ++ src/constants.js | 1 + ...241113212827-add-monitoring-feature-flag.js | 18 ++++++++++++++++++ 4 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 src/migrations/20241113212827-add-monitoring-feature-flag.js diff --git a/docs/logical_data_model.encoded b/docs/logical_data_model.encoded index ec5698656b..ea47d0faf5 100644 --- a/docs/logical_data_model.encoded +++ b/docs/logical_data_model.encoded @@ -1 +1 @@ -xLrjSzmsalxENy7IVaZYccnjaijLdMhlQcLPTbndoof9pjOcbL9193I3c0Hc0L2Eaij_lmB05m04IO3ao7Q2JzA0O7VpGQFHwCRBFnW7b5TbaQJfPocu9oXFzvJS5h1awNl4Tod0smBcQKR9UvRUGSYJD6Nl4Du32igqG1ZoXprC2UKxOZpA2i1O-bkIfcdwbD0SqbDI49h-vPjl_lFal_wcbL_lKFOEGyRIhvCq_LsASYhUXYn9Qped6KVtY3zSmWpj4SIS_PQaJrAKfySfmXnk8KsFqxzl8OOKS9Z_Jv9kAS3yfLdXykpvsUNP-UdPLNhqGZndHtz5UP8IleFq37F47qRUUDFMGh1-yKaAMidsX8xnEp4gjkzd50g1JtXwd79KGiP1kLVOYv_fhmJ3z3Z5vFtdNuZwrJxth_zxajZu2UOd-pqbzv1EWxZy-oe6wSXRRncaZuD5ciC2JjLEKaouU8V3NtYICWvunTBZ5EAg74Bpb1G5k2KKSFBdGdG0Z-UeW8-1mnqguCXRKemG77o_V-YxNn1GF4Umo2yXsnFCPe0WI7W38Igt7xWbeBY6vRu074eXBYWfzwFsp_t6OI1BQOr9tRL-_6aCnKl8I4MpHmMGrZn7tcx5EWn4YhXiYiRaA9Z4V_BdpGXKDyRhloKf1gN2NPOdajCT5OKrINzgV_-_BxySQwRXbfnkGKBH5c5GJBISqLPBBSSsWDUwRPmLXC6hYkqXpay95bsX7MpqPvSGC8ARWIU5E7y6vBWac2GfOlBBOF5mbYCEnQVS4b9085wv0mMJTIuv1tlG4X4AqOriikNQP-r0TmzejWFqyw-__VOBJMUQzmOwxPlRdw4Kw9HKT8xXQmbuDsRxHjTIalS8WLgu3pasjbBF6oJNWEbZ6pPR2UTR_JLW-GJjVn-vtY2WctzUY3ySN51oZtAO3um3KrGTWq7_bOcclYPxb7sOTkQ2zSZxIhGFqW7y1qiV8FgVldJO9BEu7dPI1-WR4KCmvFbgzZZRVk6f4lexI64tjWuEawpQ2w2kHIIa8INxMyjJwtOJG-byAnZUe9-WpHisTMUdh_xtj7tybi4yIK6U8uu81iKvuIASb2bT4DDyx7gXjPTks-Xl4YSiuNJh5e3njmh3fmz-q_sGm025MqJmQCEB2e_KYv-a8Xg5P4_inFawqJIyZllLVSpiVrOpjxqEg3ZNf5CEYgmIq-3yoeZtDDhIMGu10g6NfEZwUGuBT0_fmsl8ToJlYPPN573rOJdCK0cApx_PVFM5IrsxgN7Vto-5qiWgFpE2RuLwu6q5jZOMukK2Ra6cLCQKnQdp6bTSbRUGlhcx09IZ3Er5VBHha2JTWoqK2C5Q355YrBGbsLEofQ0KRUPwJ1lZst_mxmeoBfN0ihGYNcr0mwhR4Z6XErRZoGUSGnD93kWMyWko5mqk5Dp1Nhe8pWSSEFHFFBb7b5UWU5OhWqjBMtklnmk5AeLRUfs2jzKtmfIj6I2Zam4ftc5z8LqigIYJQ9HWpwx9o2pF8jZ8VmyAb3yVHUpxkifSgrTFiKsTVIBwmHvi0OTly6j8jz2OhdDQmGC5ipMGoxB2A9Cg_ufiVMUVcVNUwEJQhFeHpJTxedbyEMq6dD4Xiab67IeqB-hbW8FExeT_krz0Ph9JBGgT6A6d9-bU3FQCipVuxRuWm1c-Eco7EBk7c2kxU84Ami-1yXzE8UQGodRoK19eKHbfUfjX2oKsE8zGC4Lyb6oGATkvsxY5Udf2O1UfmRRnCrJwYAXvBM9mzlxmqxUNbsVdrpVNBr-VNLsVlBvmzJ_o7fk8kztf06WSRFiEtvvazeUrY7cRSq-J8qps5VeLcb_p3Zuuchy9IGWP1ZJ4pA86cp0HZW_DiMQM4p0wS0tu2o5PWayjorqW_EufoDwr-cMW7Pp5387gmsKg2Jvf9eINUbH7Fh5A5cSrG_EO8H0UCcxZ1aaVbqsmGaTihvZFqipcL2xJcRqKXLUeH0MWY3-yeAJQ-wKmm_NVOZFngbNxGA4u-4jML3dCNzwT4twIbmWx6ldt4R2cWReBJVJEyyBNnKKPz-y0Uudb318Cv5jx4ImBB3a8dku0tdhOWv3nPErizlonnuwNOVZ-oXqn9qK-yAGD2YaIGzwYV2334_reZ86xQ-3mxD7Dgvv3KxYffRde4AQNjPSYQfCbCv7WlT00L7NOKRrt9pxVI53i4ExOa7qJ36k2WRMkrwKotEV4jSlfDJ0S65rYC_J9Hirket1NjM4LElZFnUEJIE8uWPaQsFNHVEBbTbJlrNCrpNIJ728zqjP31BVPWcPAj0DiftVwMj9pCt2Y5xycERf3gpMYp3VL-O29bXwSkVkvI_ELNGMfBW25c8Uu4I5BmJycJxcMv7i4z7IJn_IklrxiEINbLGaePpi8-JK75mN0-fHdVBaOvUuy-z9bP1BvSvbtUeNmktLNzVitvROJ8tYa3GiyIlakuRu06IphVERYwAoJw4gnsaD6OMsvFPlV-j8fRHW2Xgho_4MGIgct4Dw-M5qJvplUjFj4lT-RGFVH3H_d3ZSXCrImwOdBOiq0umeKpokS8xnzJJ3VzKXcEN8Pw5gDNOywqpfi4gIMGdSuL3wxsiCCWG8nVbO2L4nLSX92M2Q5fJinAP5UsLhpL2VffqJgLNCAfUVdHzm8iOZWbEJEznq3YAR7fDf_a5ZmL9Z62CpyWQB1CWhcjXwEQKoGIGp3z40JDh_0bJ_x6QEdyBqkgji2PSPImnsWCFydaaRBt7xsKYQ7dW4EV1C_AftqV3mJ_xAj50owaU59ZzFFNZuxExz--VpbsRFFZe-Fv2pEalf6lNFaZv9SI83lI9SJCoPD56Q4vgUaKckHwYeisy4Iz1LR-rYFiAN_2WQ5z2JAuQi0o7iiKkKdNCm1zNLPwN7wjpfmb476XYluDzBS1kBxvwDjPA6_Ph_BuHt2I0zNoMGjnE2sW0CB3Exu_WfoZl3MUCVgmaA3ycf624wepMl0thKlxW7lG_4Qe09ISrNAhKYfSlSgC6tajfU5pKrxjsCB52E_d6VOwzkUf3-JMyUImYTYcPs8iIrsrYXaLS7RbOMioeGsQnPHHmnpY07Ee0zidABj5j9s6MrRI--L5issTm8EjuG-Q93FMBOZ8pTwwDL_NBXICDnLXHC9WX4d5E6jt2z_LPKbe0Xw3zN6ZDSrLcipywE_7cdl7Ad9m3s2xr_cRWATS9UoNaEbUUieQ82HSORJeDflVTCxdZlt06EKaF8DtGACVhLNzNwx-GzlVmkMH2sikL8R1tfaZ84DOSPfbOs_GQK5QDQVJdlW4g5dGRFrha6V8pcbylOBxrJzQKsf2JUgqhvtrAeiXDDKNgYAXjgAzuwwKN1aWEv9en9L3RNc_QEm1JMIKfr_QOOHA-RxCUWuON1wUfiHIg7KnsSGvAyGXii3PBK2Ut1lGuxwHjQ5clmTOkAtbo-uN9N3LL39zp2YYOzeY-yCcLgM7uSA-obR3Zca9SB0o94Q_H43AdPkt7UQvaZNhgXyUkEkw1VtTUrGaUtnx_9oIWxHCMPEt3yLJLv50zTMEjj8FfhANN60Sq3pntDAMCtHIsaRyJH5hL_-n9pXHzJDFvnPFAWzZ8PmKTiygjs8qv0u3N7CM5UqSlQC-V0sJaqlwi_nZaCjdjH_Oj4iLUyQbV23Z_HF7u9rewatAVzZ66wjDLRiE9OkF5Q_-UFuElhthEtgzB2Adavmo_XjWLvi45TjLR6ve5vUq3JP7st6PA_Rj29IchgIYcT4Nw2f3lRb76IxqeGfC3MW6j3m4GCqhdz2XqC7ZNdmkfQkDna_lAqB2Jgi6Yv0N2ItpKzTqai-lea0ucQ4rgyNRIkKYqpkBFtLDp2rZJtlU82FRMj_-F8eIx2bwvG7llEGQwkwJu6_y2iEzo7RSd3zpbZJrLK-hUquFJ3wMt48Tst5cNXHRiFfrR6Ru36EjlFMAVsuT_NpUivIZOoKUs5Ud2EVTZpkuozTdNTgunzd2UkC3OeVo-wlQslhfr7-0VP_zJ7rs-tbjqzBtzqrvu3JDJQ6BhW89BGN77hxcBOjUzvXgBDtdzqXolXfRH1zwhx45s9tWLozEbtxdF0hCSdmawF-DY_zzvHPLFKMMLJsbbXKzXLuS4lUq1uypPPq7LdNv9LcOXu7uiqxIlr2hDcGHptwXI_2Z3ZBoEW0UoMUVyINi5oe3JeNa3A2CIoMEkisFUCKQMYUbXFwXRsD8lK2Ti6mTxIMEcrrsUfYU7UdxFra-0CwTpyfm-DIPjc_NG_s5DwXNnndHT-vYflkwTxtLBU5QmVV8NOtptVMkW2MTVIi6w7sUDZHZMIE9_-2W8Pk7XkvE-n3cRQnZOPqzCZZ2YAhJEpe-EpuMFm6cJWxznxG1uItEW1RJzk9nyxdkrIdyvvHQanYXZOjh3kvBTt7B9CzRCzPji-JaT8-9Vb3kno_ERRBMUZSbrXHD8A7VqJ1VxjF2H2UavgZHVkMz2RKiKFgcrfjBo47vhc6JObV0Az49NIgfTlB4EVqU5_v478aySTmcOFl4Sw-t17hzjYQe-m2Y-FjkbT5uHpDR6UX-txb5nt0TymXooZQEtlrofxb5PHkfNRegE_Eof2zWQp7PSpTx5K-i1xt6TPxJH3UTdcbFpictiS2ppaBUCrZQcUVFTjzF2glCaAXF7yLPBjLhPm82trb-R4455_Rn-hMFj2DxQqn8LdlKeNWzaKSdXJGRolg8T8nFgT9F4bBo9Ywww7DpQdJUPkTl4rciDt7sttOZQZQ9ECzpcQOU-2STSZlFQ08I7VGtBlkxGO49eKEEIWEZtrlcqC8L_PhFdpcJx2eDqU_kOUKeXoktKUgZiN4AyqkxKCTy7aFYWhsCmSwQn-DbI_rLJ5W2pleja3V3X-v7TwItxU7EQhvm0UoTfoyWovVZhkc4hxDrnxA6e37D00xKiBB0z-Hj6Fo2XuwOCB4zEqLsQffuFgH6dUSgm3RBccS7gSdbvSd__hnfsPSaU3To5f7ubm0yGad5TyHAYF8ZfC3cezqtKVa30hj28RdpWEWZ1Is9ed8LmDyBm-iG8oZZ3Lho6-4Jt5JYZjNRaXjneGz5-T2tPI0lfCLn1WfJp9EqdzNe43yuGOmLb6nXkGc1sntIm3DcxGWA1HLxG6d0664jpTggHNJdZM9SrrScIMN1OrEDlVEB8tPBhs_1Z7bbhgpJezuCjmF9y_gsPy7ADrKaT1UxE67a-Ueu93wPTkh4ZkdltAbrUYj5J-Sl3gnBolpY8u9j_r6go7Bok86i5xHxKElg0DoOcWHTN-HRAfAgOOiqbSwT1XQpZQ6xsyeUNzZpZ18aJjAw-dS3KDRHqkyCXThrFbF6c4QXMbWqKY4gW-L5RM94FKX6hlV8-BbniiHuOzGkQ6A48r2fAq4jEvbYsYDe1NjkZzMqLY5uML792DO8s15d4PnYdtF2wO8ZmNFo9NG4I0R8ElAX0YG0cZqXkS8aWka250Fe3WhSS3oxDah3qZoW0_BhGyJ5wq3dDzmiEt5daLb2MBxQOFVhBR0tA0SoYqi_MMIwhaptwPEIhzn9cKcy0cwJJkgb0ko2905K1p07A2CN8KT0Me0Yj7jAOJYD7K4dF4he2DE0pX5Z5mOkIzzZW0r08tVpXnnid4QEymWecMZ5SSv3v0YE0vm8YWsA8CNzKPyMdo6x_MD8Bb0YW2v08gez50PllKr8jGY59Ld49g8YeNAu1Mo4PuEdWZD83GH5WkMa6jS_tJ8X5pN-gU3P_8EruYJYTF0xQCH9YTCZgij8r8ZIBdlOOoGJKCMLMmIhwXLFYWvBbI8I0qX5MrL45RHI4q25H4QHCXzJrz4oKHfw1B0Y9CBfwXC7Y35WIuGgjZlfd2A00q2D70_MuJ93LE4o88exly8X2Z2OyCpV5jR14W7A09Z0JDrrrf4oK0fhWATGYWYOoFZlZCgWYF0STvH5Q6Hq0nUK1NnqV29UcFX4ezJ7KPc6msD2vOuQN03uxY7AIBJ81D1iK2nRtQAg4XKfkwAYZ2vOPguJYh2veOjGcH3D78lLKH88TI_rYeY8v29teyB5SSrLX6O1fZXMx0YHXP64Hi7DiDtRqMC6emYA1Oe_GkX8Yu25_UzK14RXOrzqzMV6fVai_I4CP8XQNjPaYHodfuUVNMKVldbZt-vBK3sRhCl0C8RlaFPEmmP---lV_hoIrb5sm8iv6f_RUJrnedQVUPBp3uz9JrEjw9ee_vqJv9avEudYvkuP0xc5hlVqlG87wMz0yNJOt6zcLcsIS4WiyHnjKi0_waxXz9ZYxUeid6KcQ-jBbKRAlOMg7qZ6ReYORP0zkKmFPdQ2fkX1_MR1vIjwH6Xaidt3YZNS4jEo_OORQfcdZE4KozQaiqJgCcZzQJGcJULLk5eNFFdOjiyMusRQJ77FhHNUpKPt7raazBkwMgyb0sS-avPQpMUMh-OOjnLNOtxS4-tcG_rwn3UxKAxz3XbUvWXK236sz9DTqUzLcQAaVHkhvWvagjtZ-jROEqd6rd-d9AozyuY2Ng7JWllnIhR6Dw5uB2CPU_49-anMOKhCtMl74oFwrFphGTEvjRr4a7DxBY_GpfjPlccLwBCIUCohEXxPFA_ILSZd7F7ebDOnQfHRF4hwHsH7y32uqO2CGSHjJRgptZbHS8uSZh2cEYbh9R2EKS97tZkv4H57swMqUrvVpe3oyKBvJIa-Og5Mzj3UGpaRBjMa3_hgTrouivCfs3cAcycb8uZjGEDjElayjfMMuyshaAM39t8lEx4Ro-9DjhJpUrMu3x1pyKfbBnJGWLoysXJiro7KN-fTe_TThJwAbBeJjSmyyxXMiApuS5CuidowNv3UPCIAc9Qe1YQval73Z26jXZc3aB1mWnvKPkUBpMFTa_j5N5JwKE9sgskX3LRUKKhvJHBy-7kcLCngBHjFcW1WzdeX_otNyBqqbbqfUq25E8w5fNjK97FGyEOiBNkRDs_Wgdr5s28iKsKlC5me_wxVayKTLaak_5xalJYeFvCXyv94rxamAD-T7KL_kRn1WP_yz40V_kKwA1vaUlzpe-s7ZKEjLMykXXjF5ils_IAEjwBmrTrzDmHjGgctngWEY2lEbWm5GSaLFtCNoZAwcTpYiZ6V6mYPrRLdysHh3qRk9b4grzr0uLJj3ToA1_BA5fActKqvyjPuHpU8GppJZqBbGpQeJPA0r_qdYJXtlTWl6BJ3rlCfM-suKPloaJFLlcJjKu1jl9So7nQymYdRzBUQ3nOOXqE6cAFhJUFKqxHTWifp9y-RBeVYSSvVxE60VjyHMCWw9tFjUa_RDzy717RK_fSWbfL6lT53bhkK-oM2DHgybr7q05GhTlhynzji_3MMYnFUv34W0wfXniThWD8uUG-nNKb5MqrWetrc265M4c8iGxYrpDM4cIe9PoizJF9Lcc2RKVGfmqMym_mfqiNryHvejRQKukEz6Pmmh6Y9AEMoYtBYA5QAira4zcoc2-iBebB1BPnIfMC72MsG0AdhJ0V3VJNDQKOmC79rpZKQQtHQjHSjnLNbS8zM3Qb5kpMCJkhPv2mKUgNIfelavyC-80yk-ppkSMr2K5OzPCkVnwUSzV3ZxWksxJ_TM58HuXynLWxiGid0-wBv1cCrVNaIDPSdsHmw-BZq-kJHYBbskAFMQ9EP-GtxkJyKdvTw5NxVXb_rJz9FmTbQK2BjCGUd66jkSpCzjMPTAgLz08wYs91ZIMuwCM4bEMmovCsvhD626hJYqKb6j3pqz8ge5SJwkUbsJmk0saAZP4pJJ6FL-FWwzILDp-BdZiDK1Vg2wEI-foAsKPA2Ires5Q8pQ1jfYOxohfHdqMtmxScs80RIiav33LKIN-y2UUW7LEaaTvtfJDeDlv89VvkqXqfeIAITEFuMckrQVt_-0hjvNoTouk7c3lM4o-Nm8VnCdx3s6uNepcqXC3aqLy-C8UNosli-FIzHhKlOjcU2ahK8YNhIJ3jxcIMbYXjYuAfjVjvwzvOx_OG51DrgCTiKy74wwQbS2rlMt5fLhEqLr-fjJhFmHLRJXcSjPEw_TRRAS35FrFx0eAv6gfMiz1qJT_E6wXozavfYPyisaWrj9ydQiHOOr-18D-iA6lB5zAt9nqw3tEoiOoFNCTUyPrOKrm0nj_kSx5JJsInQEtaX39mEQyDYxxd6ahTBpIYuF89Y8JoTosbKjpwIwdcqBONz7IqZIVXj5rPuffuFqaSIdsi5V0Ag0zEnXMBWNbuA1Tpj56azS4cb5vt58fOqKwXMhhFsj9WWlROkkb6s5cq74Qp8xlOOheE86Wvt5iFacRN-SBjAVSrcVuMYLaisbUQqEFtBVqcrD2KJ6oVnKVfxnfFmhc3PpD6DfuOCpzZO0-gFsc7Tyfyjclf4IrlRlPk3jPRjByA6ttD_e5OUE6sBalJIs8XMzkM8RU4eBM0sWwNB21iv8TN9JqGyluduZjIDSknpV9UuQho6C5MFMwArcNafTJEtNjpzI7psHeOe1Drm5BwBwkJ7qo5hCl625nTxoYfjhkUZxan7_VyDVEvsrbo23x0RgJcz2x8KI5SknJdMgj2p1xgHOVUD4Ptmx5sZYrx-TNmXYbHqpaDTs-acjjVcFyUgRai1ZOBBJKYPZXx9JTbgsy_cDV1x2NMyurD7LyFRc9R7DMmlHJvN7fuE0E-5FucY6dcD-SAgcK0ssY_VpTMSSGw8YXTbwrA791YcPT5zGZgt6zJH9fWvrmgwjkIv1yGvrLP9FyF \ No newline at end of file +xLrRSzqsadxdh-1g7Znn7KzDairMhMfcQsHPSbnhoof9pjGabL9190uFOX8u0u1ob6p--nO0NW0G906IHxOJFaa7b-xcXqO3wCRb7um3oiiYZ-BuIGpk2KhZFILtEInO_07nNGnmbiCqJYZvmE8jX3oAO_OUuJsWe8XpX25_sCEOKBuZHbQI0yRYNwCuZkFdXAQGdfASqFXFNt_zNoV__LSj_MQ7alSOCXP_5SNnRrAKKr4RiYYkw9ma7DqZ_d054xH747FsQnG_ZL4Q7yS8SvX16X_7VyiWXXHmcFvF56SKOFxAB71rTdvsTNPnUdOT7xqK-UpeBoYDOi9ta9vXZlZ3G8stJIa4gufFOz18jYTqYD-9KR2fdr0e13xXyN7CKG4P1yLUOIz-nhyG3EFZ69CFV_v2b2_tgN_vtwB8naymFzdlARc7T1p4-TzNCaW7QhrZa3uE5d4ASpXMEeenuQ8EXp_pA6OSy9B5np74PT67vYd9St17AE3aZuLe3nxdA8UFWSCMvN2WbXGZ10VVx-_xxfS4vES8vkaLP7k2sGGG10bl84JXvWCp0l8RMEnpmA4KufAIOZze_zmr3WDPJ2jCggxrmuz3A5v1HagQF2g0jE8vKBiHwp0GAUAoAMgJes0I_ycVjmDGtHhLVurY30g5kqoF9ASj5OaLINzgV_k_Py-6cgc_9STRa52K8GpoaPOpscgkvSW2U2tRnabE6BmksHxYz9HWqHMQmKRFkuA04LmFF374wGiWnoN198eHary6yuUp574eFkMEa1m2KMKBSYRBN74Ezg0X8XIY7TbaopLvpK1t3sYo0_JFNttppHUQpjJrUZhjsxkVe1Jeb9HqYk5h27WtPbEZRId9Uu109Tp771iRgQSDaal0zAaDcus4qwt-4h1yXlQ_Yrnd4D3DFy_57mukARb7AKnxne4ngex1e5jbfAblo1ub7wUTkM0zK5-9zb4wWFzWwGD4zzFd3fja4jV3Bke0VIjy28OyNquUPvilF5L2VmifRCVMtc6IbNi1r8tmXDIaP7zhU6hTRcGedMu5mnlqCxHv_QRkxFJr_vussUyOJACOf2dYY62GNn0kt4c9qWMnpCUk2eszTDj6VvCuOWd7MpS7ZBzJ63v_y5lkXpW6ACmGmOCDBmeyKYz-6Wjl598ziHNdgqZJyChlL_Kni_zPpTpqEg3yNAEJSf0dfLW6fzU6lwVMbjPo2108lI9vsyzJcADxI1_UGBuZQKUqjAI0gmzBOO8AaF_vwysNNxZKjLqQT-VxXL0QMUGdHl2TK0-SbI2piH2LSvY1HAcCAOjJvpMkk2pk87sxlGIKemJjXN-qRP0eteCC2eHW9OP8CKhQakmfoIWeH9kvicbjVBiP_ouXur89B4ih_DK6DAoyAn0JkcCrdipW79f8Sa0po2_9NZIuK707Upb5S6PmuD0_aNEFA2z1_g9I1fUMDlPUznSALGgtz3e5Rwjlk2aRCq065mDIlCFEXNInfAACeb60FRiX0wiyYs0j_pt8KNe-YDXtLP6fLgzQOfiw-rJqWpt808TlyHj8CsWirpajuO6SsHh8HL5Yb4YLVqqotzLdOjKRN5oRHJ-XzMP7D8ylf_M0CpX4ri6eGxdcHRaKSD3Q_V1lztF8Z7QgMQuJm_NqDDwBmPvnzXQ_s-S4EDrNX-qGP_SGSsKNBr5E-0LGyuTJY3caifqyb0HQL0QQtcROG8aDpWCKJ14V9HfaodRXDcwXCpqXi8jKRzlu6IfzHDHcBM9mzlxmqtTNLsSNDxSthzwSNT-SlBbqzJ_o0Pk8kwVJ0T0us7OdV7kIs1_M8EPjpZrDZZ3Pr-WNQ7xDU_ZWQFxQ9I5awD4GCueQRCA4EpuqnffOau31WQjdlX0I9VZSejmvmk-VW-Hzery6si5Hp12eFbwaak2JUa5ufNjrP8wLCZkg6Hh7387ma7uRDqZwk6o25JfYU_byvaOsnsAPpkYbIBn61Se1HVpX9INbtY-46Qx_5fkHgbRf0xdYuCz9NgOmVRMz8FmaBH1sDF9l0s2D0xKD3VHEcuKlYuioxjy2zWhB5IJeYRTsF5WMM78GFDq1d7dOWv3nPEbezlInn_QNOVZXskqn9tdQazCuXHI9ljcYp93kYQutni3TDN1uzkYwgkVG56vgQIewX3dBsaiHjSMI6KZmtcW0oihjgEfjnUSR0OeTmYqRig-TORKpiDBrAbMw-voujZ6z6eO3eqjiXZxHgCbj53vLhLc53lvJyVWiWZXEOCO6Tdqq7wdSZEgTSgwc6M-IGuH7cdA8u2PQK2-9Te3jz4vVINfXEaxqv3SaHLkqM2FAU5CL3nXfwTwLkzzqQRgoAoVL9Q0Gyv1fHCXMy4zffbn9yXq2UhZ9OtdNtIzsJabnNG3AsGv2ViF1PGwmlkGPtYv6kJlEFdSRcKJ-GiQTNYFyVjbT_VvDcRLY18-qOOv7ATyLtESWWKKLpvpjdNKINSXNUqWlh2stP_DRNpgc3Nt0K9MUlWnIALKBuUpbufeuVU9Dsq_K-xq9T1VTy77kS0ioGmNhdZZFrmmmBa5-Nk8KuUmDmNpN8Pcao6MWApLsPRMcjTyaI2s5RdUepBlUmmI1735-LW2KZnLo4a9O1eNbT69K8hsmjUUf2jAFYTGfvXHAZyyFJ2F49e9JaZhhEmOGJOz9kVyelk0nDutXcFaTUOEb5ynjFHpBc22J68RfWHPiVeuhV_OJHaynzxeixtAK65iDTu32z9z86Ytp-Dah6Hnw0JZm3VoeSDBvS2J-LLCe67GZmXCVnqzUlJYxk7br_khinPFZuoEvYhEalbLrZlnHaXi9y9QqCJ5ZqKHXGcXwIagr5wagmf8TB41NiRMFzN1R-kzWK4YFeXo-2u1ym29KViB56b3VbnKVnt-j74S9PAo_W7yZJMqWlZyVR2CB_INxNGgt22FTNIM3jH23knpsR33Oylqrv1pXpAXZTM6XGMavmGKdrEODOE-RYdl0kr2y0IY7rDoLSYT2gjoz2qmRkUrjOLF3titO0iN8BzSPzlwsf_5FvCwnfV2fs6OdV6op9siKiZBdpSv2LYP2cpMBg2E6ESG09z07DavHba7QRADjIkczqgBPz4x0OKReWmRvX6qxqdEZkrxznuLh1SEsp9r848mueGXdyhpyTLaKW2BeFLGRArxNMAsjp8_-SgJLELABWNi4FxnAtGHQuQvakPfANUieQ82HVeRJeDBlVCCxdYVt06EKaE8jpG16lzYxUh_P_AVtV0iMH6sikLO71pfaZ84DOSPfcGpNeD82rFjFnsVW4g4NGQlrja7FaLnIUSyBjwhykAPKX6jLQUeTDIeBuJYLbwgWeRQYtb4x2WuCq1rfLA2gfbRNFmhRK2CfLV6NUXYnVBwVWeuJ1iUNjmcX54fzV051-XfXEDz1LYcm1_V6vQWVP9sfoTyY9dvxpGNdgtAu2Yhv7WOqyH5jyTQGgM7vQQYmdxAba4DQ80oC6AdH7p6WukJ6VQjfZd3jWigdD-w2y-AkhXtAiptyNLwJaaDqZ8aBzyz5anVHmAMLpZQIZwPornpW5D3qyIObhEBefRIrU9gYLfK_iydm8-hcxyui7jGUhePmLjiygjrObo7hCiInObtGojahviFREBMyg3x7smyrUr7_cNcpLBaRLC2FFj8_VmZMZRhSgFoFORYrrbYmurYwy5ZzvlSprz6_P-cfJWUhTQOJt39-Hw1d6yH5MrKSBgYs5zHDzdjRCTdxDYsFbAQkfEG9qJTegejzEGV9hZ1X2WmDg0OqveW16jUzeSEXWyOwU5bBrrcC7zxMXJWT5dKN82w2s-Qdpkabdzv2077JG-lNYx8IfIAIEqb_zGDCJMDFknxWKplQ7xuzoX9ixZxbdkyyvDwgzbFWp_oQmtt8iHnSrHbgkgh8vtKSfmD6zoWEuQwZE2CLvJ6SJXcx2HxZQZjldTAlUrS_RwPirKX8iHVcnJdoQTVZFlxMrMctDlv-jh1EEA3ugPp-kh6EVXhf7-7yLnTJlzDUVkUqzDDTKouuNU9Ww8o7G49xmQ6FZsd7igTTXZhvzDaMKSPFAuFeK_OLlXId2-JkrV7I5uHVYqM6dnpLjtdflwVCegYtoAAmjyIYiA_0lKVo-ixWQRQaxSYw9Y-q4lEu46_QLUgNOi-6lEhHptqHPiHPGWO7s6kH_ma_mdAf3kXSGie8nZ2VErctwHctI4FpjfpGB-mS5Aasi0k6dQkrr6shytONm-rMsVjHzmTqddvIXiUbpB9_kpBs56xHpuwxehUkvBfxkiyzLMtXEi5tYDFDqoThhGFBkdhMZL1pFUpWGJ97phyWeA67nmRU3ljOfctee24TlFAuXCXA4oSwdXmVYzyW4NVdtWFwW72c0v1vsauyT3_VbRgTzunIOn7JTsXXsSLjuRvccUnXSy-oVP-CbFOvIH-QxVZrjLtEHEUvn9AY0JpyFGh-ntqAWF2Kq1pDcrfoDg6k7LBVr6Xx0JamxpMiK_mSU0Kge5CjtRCCSK-FzvCF8LSIVmgFEVXUuUpB7R7sZAqvoiwmEDvJzpBFdQEPFLbelr_DYmumTqmXIoZQEtlrmZFBQoYdbTgbexudAqFE1h8Ebw7fPgVmWVMuox0wQu9mriQL_kYOU5yBFEKku2MlgPryzspxyQYuJWY5ylvLaEmMjNB2BVIbDOyb8F_AlbQtcWFTshCr9YJhFAeGtBw8mvCS-Xr5FKGunkSsYQTn0HbJRpqqiJbrEszzahUE33RdUDiFknL5ws2ynzqCKo-SioxvlGSK0JaTDC-kUqy30eD2XnmK-yU-T_KbX0lFQpv-v4-mg0v7lxs7bA8KBjr7ofR5I9NwbFQXBlYy1ta9kv43dRMFnifANLKCEC8EsYFGT_rNReUtv7VDPOvgFV2Hh1qdxw5hBiTTImdVvcikPGt0Ono07IdWrO7VIDen-GGFxJ5XOldsccHg6RYyfyRjvyf1rWQDu-FuvEhgv5y__5YFAnAyMrdgIDmB83xXfEGxGgK7sN5pGFsHhlU8d4wX7S7mmda1b172rYGHyMg0x-M55OXnbB1w3_cjc5FS5kBDbLjIcJ5XpyMzKBS5eEzb0J56ofkCe_W_46Cb_FiJPH6ajnbdyPQI8Yv82dF9-pWkcZqwjr8pbE_XITIJ4SN_Ba6E-CCjOAoaOc_ARGhOxeu0cjRXHf0hQRKCJW72WfRQmiMql3eWhyCWe-yoeTRr-ZsRkRxWkU_Y8AQck-verYFUEFVzoOjgLUa1Ihi49RJZq_Z-v1pb75A_A7vPOEUoMkxW6dmDu_kJroVs8sWUNZUn7BZLIiYq8hy5h9Dqzz19Qe4S6R94sPybcx9KgY6Jz1qKBORM91x33xUKVBWrLouaJnsfrJBnbg7CqHAlpKqWLLoLhZ0DmjIp6MM5gWkLvGrQ8Uf2DFHko8gN6oz7v625oWtL2j4WHDeEG-kzjnMj0RHMk-wFrMgiml2oFPqhM0DWhJWDuhJsFI-OLdWiU0QUcbu1iW6odc9O0L803RuSlOBa0ca5g0FGkYfnmFBYnMiFIDA03qkj3nCFk0EStdAGTNpFeh04iVcqtczMHsjkKGhbqPZkzakLxupZgHlORvt1dX5yWbxfNbNA1TaAa0NGEe0vG1buOdi5g0PezMwF8RGkKmV06NvQUiMf1wSL8nT6xiUaLu1gW8PVVLvnid4QkYHXHSj6QntdF41QmN60iu9YWzBx0F2AJuDF_tl1AqWka5Q0N02jg7HGwNzDTaMeGMXLdbveLbGiL7gVfbtXQU5PeUc5PeN5WYNaUTW_738Xpy3-uU0PVHjsnSd4gUTLqnKc9qoE9pDNf0QGSh_lk48s3jcgOgDuhLhbWvBZeOOLgJwaLbiLXDLgf4Q1MX7gHSZz_j-AaebIt-E2Aqukd5PbyW1f7UW2eLhxtHXEAq2z0FMy-xR2v8PfXSY2Q3t_4GZH2eyDJ_yhS2j0Ea0hC1OmOs-uhIWPAAsxGCSGMf6naN6_HRM28y1nldsrGYEXwNtuQiL7msVL6mkNzJhLVcIorT2uO5aN3MvW7EyxhSZKoAoWMA3OBqQjg4XKnjwWMc5ompJoJDKAcnks5I8Ree7thbQ454BTvx9MP0Gow-p7XOhZUQmLc1gO_jUrLemiZ5Pi7DZql-crObHZj89YWT9z46h5HU3YVXTgnKPXOxzqzOV69NeIdp164YHjBukYIAxJuwClZ-9dptxuqrqEalURVGuGtl0TIjvZoDZVl_hnsJDPH3i2BEHgVctaiycHEdtcIyo-FIK-ZZEHj55_sfme6dZxoU8c7fc3gSNkrpW-maTnvqBn-5WyRsQcRMBGoonoFEqIm7_ipQ7usE8jYcmSQMQrnQLgNCNU0ZKrehud4YOBP3yEqv6fAR3fowXg7b2skaU4IYRh7L2k_fOSb-qnsbIjF2S8fofQaaqJg8wZTQJGcTU55k5eFFFdObldBSRDj9X37zeflPWCxZwoYMcRknWlPGF7lbEMMeodrY_66BT55-FUtzDjvdtzEeHtiz4kFexP7YO8v8Zn9bKqQjLZj3HJZAZpUiN4aLpLFQvUWRLpDZBzd9AYKsUM19rBfyNinKhR6BCBmM4UoywDJtB6P2KkpDIzSp0-hcxDjpASpAtd9OAQsV5-XvoqcUcRJeeo9_MKOS6vHoB_6vrgX7DkMRGAgrZLYYr-HPqhyWDOUBn88DOWejH6_HakF4iOHqn761CzbLLIEDSeuGFFLYvKzE5c7jtEx4zdO4tnGZdrQRvYuTRsK1uzCTks5UJFQcatdxWpqYcOkTBh1QNZIkr08-swkRoorLRMnfN8ehuRcPTT-EqbqLfxshNT0jn7-BauXP9tIgX0hhCs5Sjb67MtQdVOPOF55v52dtJrCsydN7DurZoOIJoQlzolAMzYGeLF2-HzotmviGECeGp3r44eM9Y-MTIcCvUQHhkZzegugVIXHErMLyAQhRoWbNAQfUbmTyof65IQDk-rWC5iz4l-cozXUkeakj9s0GfnvOjATYXFfw5XBDYQwMpLluAfTJTWYB5DfBp5SAF-k_b057MP9Bln1n9r_A3-JFlkIHEpo9wihdTr4VxczGO6VpEhXxzzItJGkiXLlvr7MrdrXDfANboCnf-jfsqwIItlsUwhodlky5e5qsyCKEMGLnqic8e34gf-fYyLPVMplaLaOsQRo9b5zRmfaZLt0zUBQFMhQg1mYlP13ZN7CfBcqcOjpUbobZY5MuHXsgfdhe91EzHuQU3BJauKFllkzLTikcwBgVJDDjpeJHdfqIf_ijOjm5QS2vcv5Ozm-YRjZSQ3HTRbe27ssAfv77EAiWnIc3v_sBG_8ezx_YOD0_RzYiP0qBcVQzFDR6e-ZeZDBNqkGQqYzVH53bhkM-pc2DHeyhObw02eqktb-G-sMNXhpPQdkKYYHuTKvaQ7wm1IEBcFSLr8HHkDO4CzfayX5X9Yg8FuzOo51Ebh2ITh_KwoHPeWQmdwjC5i_W7pwSB5DNBUgBNqqg8blUbTS2meoQ2bSiioOAZcIZFQHBOiPeN59N69m3PEgQA1gyHcIE2q5MPMJtzTKeeU79nyZKkTbXgj1irrKt1HATo3PPrgmMvTixDu10aRgNwXfEao-Sc03yYpZJvVM5nh5uHLFchZv-4nTztzYAkqJVDVwuPqkCWNzBKJEt7KuJvBdbvVNKUEQCdzIGQtrZy-lZzfm5EkRVwO9EfuH7xZ3ixFvTUwNhNlb_vN_PFqUr3cEhH8G-p1wTQQoiniNvr9grfHnw4ponTKMuBBZaz8MGuxFMfyFakue3OTNrIa0JqzBAqSUXMXRboQJUFI4wRG63d35DDurHDydRgQpK-Yvmu3L8dwngYekgTYif5IGWiQjXLY4sYReScMicxK9z5jyQq8rk26Kd8EGpLLqXrlmZbernHffFTjwWIQzNoa57ytyOuKK169sd5ygRtQjFf_U8VsVBxExSLzp1txYUTBuCDu7hz-RBFPQFPj8J1vTBSFJE7bcZMsVBgpHdKkOjwP2ahK9YKh9vXsUpDBGvGsIS7KclEyLM-iJdi8Yf6wr6EogM2YkcafNDlR5joQLM_jrNTgBSwpTyUMKmPdwQXgl-LE2d3npzYvW62kXgfLB3HTqu_p1ggSVL9QuYUJDb8DxVn8ZHXBd2iGvEiTPKtwJFhseaFdOIusvl6H-zXBlXDxYdF0-BjzAaxgYIWMhIOveGnSazUQHNVc6ahTppMYuF9nY8JoTssbKjowMwccqBOtzBIqZPnmsgueSKMy6oGEfJxK2dW1r7iNuuf5ppeyb8ivsYZI-c0JIg-z2aNiQATGRTrdJMemGNjitRGZx2HQ3gFPafrjCLqN43GSxgsCg3vrFlDuodr5fdj4OXABfahjUlokeL-x6kgKaUEp-2Z-JUD9E7VmhCV8UYR6pC_eEOFgJzenEsK-nxLqZvOtD_iq1-jisb-4ZRvd_q0il71RbgKvIs8XHzlc8JU7eBM1sdQNp21in8SN9TtZyluduZjIrjknpVHEugBo6CvMtM-AbcNafTJEqtjJzI7nEHeOe1ELmrBENnOdtniAMPQDuRYwsL5IPhlE77DZPdVcQsQ-UxBa4Bo7tK39yLEGWqAuJYbEjLQvM3rKcmwzQGoUXcFD6blsykl-0rEYf7CPxZv8DRM_CFypKbDPz1mMccj4J7VsGjEKJ3z-CAs3sLkifnkRohyUtCIsEAfXEo7ogVHmVmHyBlor4zECRquLL8i0Djv-_swi_8YLHr1ENJ8LE23vl5aMrJseKxzD4QcTdLEfg6-Bedz0d9P57lq_ \ No newline at end of file diff --git a/docs/logical_data_model.puml b/docs/logical_data_model.puml index 5ccd5efd4b..6aa958a96e 100644 --- a/docs/logical_data_model.puml +++ b/docs/logical_data_model.puml @@ -1115,6 +1115,8 @@ enum enum_Users_flags { anv_statistics closed_goal_merge_override manual_mark_goals_similar + !issue='value missing from model enum: monitoring_integration' + monitoring_integration quality_assurance_dashboard regional_goal_dashboard training_reports_dashboard diff --git a/src/constants.js b/src/constants.js index a5b5870552..83a54d484c 100644 --- a/src/constants.js +++ b/src/constants.js @@ -240,6 +240,7 @@ const FEATURE_FLAGS = [ 'training_reports_dashboard', 'quality_assurance_dashboard', 'manual_mark_goals_similar', + 'monitoring_integration', ]; const MAINTENANCE_CATEGORY = { diff --git a/src/migrations/20241113212827-add-monitoring-feature-flag.js b/src/migrations/20241113212827-add-monitoring-feature-flag.js new file mode 100644 index 0000000000..995394faee --- /dev/null +++ b/src/migrations/20241113212827-add-monitoring-feature-flag.js @@ -0,0 +1,18 @@ +const { prepMigration } = require('../lib/migration'); + +/** @type {import('sequelize-cli').Migration} */ +module.exports = { + async up(queryInterface) { + await queryInterface.sequelize.transaction(async (transaction) => { + const sessionSig = __filename; + await prepMigration(queryInterface, transaction, sessionSig); + return queryInterface.sequelize.query(` + ALTER TYPE "enum_Users_flags" ADD VALUE IF NOT EXISTS 'monitoring_integration'; + `); + }); + }, + + async down() { + // no rollbacks + }, +}; From 50b6b7996ce910e2894cfd5f0e3db9d7acedc408 Mon Sep 17 00:00:00 2001 From: Matt Bevilacqua Date: Wed, 13 Nov 2024 20:21:15 -0500 Subject: [PATCH 3/6] Update LDM --- docs/logical_data_model.encoded | 2 +- docs/logical_data_model.puml | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/logical_data_model.encoded b/docs/logical_data_model.encoded index ea47d0faf5..93aff94573 100644 --- a/docs/logical_data_model.encoded +++ b/docs/logical_data_model.encoded @@ -1 +1 @@ -xLrRSzqsadxdh-1g7Znn7KzDairMhMfcQsHPSbnhoof9pjGabL9190uFOX8u0u1ob6p--nO0NW0G906IHxOJFaa7b-xcXqO3wCRb7um3oiiYZ-BuIGpk2KhZFILtEInO_07nNGnmbiCqJYZvmE8jX3oAO_OUuJsWe8XpX25_sCEOKBuZHbQI0yRYNwCuZkFdXAQGdfASqFXFNt_zNoV__LSj_MQ7alSOCXP_5SNnRrAKKr4RiYYkw9ma7DqZ_d054xH747FsQnG_ZL4Q7yS8SvX16X_7VyiWXXHmcFvF56SKOFxAB71rTdvsTNPnUdOT7xqK-UpeBoYDOi9ta9vXZlZ3G8stJIa4gufFOz18jYTqYD-9KR2fdr0e13xXyN7CKG4P1yLUOIz-nhyG3EFZ69CFV_v2b2_tgN_vtwB8naymFzdlARc7T1p4-TzNCaW7QhrZa3uE5d4ASpXMEeenuQ8EXp_pA6OSy9B5np74PT67vYd9St17AE3aZuLe3nxdA8UFWSCMvN2WbXGZ10VVx-_xxfS4vES8vkaLP7k2sGGG10bl84JXvWCp0l8RMEnpmA4KufAIOZze_zmr3WDPJ2jCggxrmuz3A5v1HagQF2g0jE8vKBiHwp0GAUAoAMgJes0I_ycVjmDGtHhLVurY30g5kqoF9ASj5OaLINzgV_k_Py-6cgc_9STRa52K8GpoaPOpscgkvSW2U2tRnabE6BmksHxYz9HWqHMQmKRFkuA04LmFF374wGiWnoN198eHary6yuUp574eFkMEa1m2KMKBSYRBN74Ezg0X8XIY7TbaopLvpK1t3sYo0_JFNttppHUQpjJrUZhjsxkVe1Jeb9HqYk5h27WtPbEZRId9Uu109Tp771iRgQSDaal0zAaDcus4qwt-4h1yXlQ_Yrnd4D3DFy_57mukARb7AKnxne4ngex1e5jbfAblo1ub7wUTkM0zK5-9zb4wWFzWwGD4zzFd3fja4jV3Bke0VIjy28OyNquUPvilF5L2VmifRCVMtc6IbNi1r8tmXDIaP7zhU6hTRcGedMu5mnlqCxHv_QRkxFJr_vussUyOJACOf2dYY62GNn0kt4c9qWMnpCUk2eszTDj6VvCuOWd7MpS7ZBzJ63v_y5lkXpW6ACmGmOCDBmeyKYz-6Wjl598ziHNdgqZJyChlL_Kni_zPpTpqEg3yNAEJSf0dfLW6fzU6lwVMbjPo2108lI9vsyzJcADxI1_UGBuZQKUqjAI0gmzBOO8AaF_vwysNNxZKjLqQT-VxXL0QMUGdHl2TK0-SbI2piH2LSvY1HAcCAOjJvpMkk2pk87sxlGIKemJjXN-qRP0eteCC2eHW9OP8CKhQakmfoIWeH9kvicbjVBiP_ouXur89B4ih_DK6DAoyAn0JkcCrdipW79f8Sa0po2_9NZIuK707Upb5S6PmuD0_aNEFA2z1_g9I1fUMDlPUznSALGgtz3e5Rwjlk2aRCq065mDIlCFEXNInfAACeb60FRiX0wiyYs0j_pt8KNe-YDXtLP6fLgzQOfiw-rJqWpt808TlyHj8CsWirpajuO6SsHh8HL5Yb4YLVqqotzLdOjKRN5oRHJ-XzMP7D8ylf_M0CpX4ri6eGxdcHRaKSD3Q_V1lztF8Z7QgMQuJm_NqDDwBmPvnzXQ_s-S4EDrNX-qGP_SGSsKNBr5E-0LGyuTJY3caifqyb0HQL0QQtcROG8aDpWCKJ14V9HfaodRXDcwXCpqXi8jKRzlu6IfzHDHcBM9mzlxmqtTNLsSNDxSthzwSNT-SlBbqzJ_o0Pk8kwVJ0T0us7OdV7kIs1_M8EPjpZrDZZ3Pr-WNQ7xDU_ZWQFxQ9I5awD4GCueQRCA4EpuqnffOau31WQjdlX0I9VZSejmvmk-VW-Hzery6si5Hp12eFbwaak2JUa5ufNjrP8wLCZkg6Hh7387ma7uRDqZwk6o25JfYU_byvaOsnsAPpkYbIBn61Se1HVpX9INbtY-46Qx_5fkHgbRf0xdYuCz9NgOmVRMz8FmaBH1sDF9l0s2D0xKD3VHEcuKlYuioxjy2zWhB5IJeYRTsF5WMM78GFDq1d7dOWv3nPEbezlInn_QNOVZXskqn9tdQazCuXHI9ljcYp93kYQutni3TDN1uzkYwgkVG56vgQIewX3dBsaiHjSMI6KZmtcW0oihjgEfjnUSR0OeTmYqRig-TORKpiDBrAbMw-voujZ6z6eO3eqjiXZxHgCbj53vLhLc53lvJyVWiWZXEOCO6Tdqq7wdSZEgTSgwc6M-IGuH7cdA8u2PQK2-9Te3jz4vVINfXEaxqv3SaHLkqM2FAU5CL3nXfwTwLkzzqQRgoAoVL9Q0Gyv1fHCXMy4zffbn9yXq2UhZ9OtdNtIzsJabnNG3AsGv2ViF1PGwmlkGPtYv6kJlEFdSRcKJ-GiQTNYFyVjbT_VvDcRLY18-qOOv7ATyLtESWWKKLpvpjdNKINSXNUqWlh2stP_DRNpgc3Nt0K9MUlWnIALKBuUpbufeuVU9Dsq_K-xq9T1VTy77kS0ioGmNhdZZFrmmmBa5-Nk8KuUmDmNpN8Pcao6MWApLsPRMcjTyaI2s5RdUepBlUmmI1735-LW2KZnLo4a9O1eNbT69K8hsmjUUf2jAFYTGfvXHAZyyFJ2F49e9JaZhhEmOGJOz9kVyelk0nDutXcFaTUOEb5ynjFHpBc22J68RfWHPiVeuhV_OJHaynzxeixtAK65iDTu32z9z86Ytp-Dah6Hnw0JZm3VoeSDBvS2J-LLCe67GZmXCVnqzUlJYxk7br_khinPFZuoEvYhEalbLrZlnHaXi9y9QqCJ5ZqKHXGcXwIagr5wagmf8TB41NiRMFzN1R-kzWK4YFeXo-2u1ym29KViB56b3VbnKVnt-j74S9PAo_W7yZJMqWlZyVR2CB_INxNGgt22FTNIM3jH23knpsR33Oylqrv1pXpAXZTM6XGMavmGKdrEODOE-RYdl0kr2y0IY7rDoLSYT2gjoz2qmRkUrjOLF3titO0iN8BzSPzlwsf_5FvCwnfV2fs6OdV6op9siKiZBdpSv2LYP2cpMBg2E6ESG09z07DavHba7QRADjIkczqgBPz4x0OKReWmRvX6qxqdEZkrxznuLh1SEsp9r848mueGXdyhpyTLaKW2BeFLGRArxNMAsjp8_-SgJLELABWNi4FxnAtGHQuQvakPfANUieQ82HVeRJeDBlVCCxdYVt06EKaE8jpG16lzYxUh_P_AVtV0iMH6sikLO71pfaZ84DOSPfcGpNeD82rFjFnsVW4g4NGQlrja7FaLnIUSyBjwhykAPKX6jLQUeTDIeBuJYLbwgWeRQYtb4x2WuCq1rfLA2gfbRNFmhRK2CfLV6NUXYnVBwVWeuJ1iUNjmcX54fzV051-XfXEDz1LYcm1_V6vQWVP9sfoTyY9dvxpGNdgtAu2Yhv7WOqyH5jyTQGgM7vQQYmdxAba4DQ80oC6AdH7p6WukJ6VQjfZd3jWigdD-w2y-AkhXtAiptyNLwJaaDqZ8aBzyz5anVHmAMLpZQIZwPornpW5D3qyIObhEBefRIrU9gYLfK_iydm8-hcxyui7jGUhePmLjiygjrObo7hCiInObtGojahviFREBMyg3x7smyrUr7_cNcpLBaRLC2FFj8_VmZMZRhSgFoFORYrrbYmurYwy5ZzvlSprz6_P-cfJWUhTQOJt39-Hw1d6yH5MrKSBgYs5zHDzdjRCTdxDYsFbAQkfEG9qJTegejzEGV9hZ1X2WmDg0OqveW16jUzeSEXWyOwU5bBrrcC7zxMXJWT5dKN82w2s-Qdpkabdzv2077JG-lNYx8IfIAIEqb_zGDCJMDFknxWKplQ7xuzoX9ixZxbdkyyvDwgzbFWp_oQmtt8iHnSrHbgkgh8vtKSfmD6zoWEuQwZE2CLvJ6SJXcx2HxZQZjldTAlUrS_RwPirKX8iHVcnJdoQTVZFlxMrMctDlv-jh1EEA3ugPp-kh6EVXhf7-7yLnTJlzDUVkUqzDDTKouuNU9Ww8o7G49xmQ6FZsd7igTTXZhvzDaMKSPFAuFeK_OLlXId2-JkrV7I5uHVYqM6dnpLjtdflwVCegYtoAAmjyIYiA_0lKVo-ixWQRQaxSYw9Y-q4lEu46_QLUgNOi-6lEhHptqHPiHPGWO7s6kH_ma_mdAf3kXSGie8nZ2VErctwHctI4FpjfpGB-mS5Aasi0k6dQkrr6shytONm-rMsVjHzmTqddvIXiUbpB9_kpBs56xHpuwxehUkvBfxkiyzLMtXEi5tYDFDqoThhGFBkdhMZL1pFUpWGJ97phyWeA67nmRU3ljOfctee24TlFAuXCXA4oSwdXmVYzyW4NVdtWFwW72c0v1vsauyT3_VbRgTzunIOn7JTsXXsSLjuRvccUnXSy-oVP-CbFOvIH-QxVZrjLtEHEUvn9AY0JpyFGh-ntqAWF2Kq1pDcrfoDg6k7LBVr6Xx0JamxpMiK_mSU0Kge5CjtRCCSK-FzvCF8LSIVmgFEVXUuUpB7R7sZAqvoiwmEDvJzpBFdQEPFLbelr_DYmumTqmXIoZQEtlrmZFBQoYdbTgbexudAqFE1h8Ebw7fPgVmWVMuox0wQu9mriQL_kYOU5yBFEKku2MlgPryzspxyQYuJWY5ylvLaEmMjNB2BVIbDOyb8F_AlbQtcWFTshCr9YJhFAeGtBw8mvCS-Xr5FKGunkSsYQTn0HbJRpqqiJbrEszzahUE33RdUDiFknL5ws2ynzqCKo-SioxvlGSK0JaTDC-kUqy30eD2XnmK-yU-T_KbX0lFQpv-v4-mg0v7lxs7bA8KBjr7ofR5I9NwbFQXBlYy1ta9kv43dRMFnifANLKCEC8EsYFGT_rNReUtv7VDPOvgFV2Hh1qdxw5hBiTTImdVvcikPGt0Ono07IdWrO7VIDen-GGFxJ5XOldsccHg6RYyfyRjvyf1rWQDu-FuvEhgv5y__5YFAnAyMrdgIDmB83xXfEGxGgK7sN5pGFsHhlU8d4wX7S7mmda1b172rYGHyMg0x-M55OXnbB1w3_cjc5FS5kBDbLjIcJ5XpyMzKBS5eEzb0J56ofkCe_W_46Cb_FiJPH6ajnbdyPQI8Yv82dF9-pWkcZqwjr8pbE_XITIJ4SN_Ba6E-CCjOAoaOc_ARGhOxeu0cjRXHf0hQRKCJW72WfRQmiMql3eWhyCWe-yoeTRr-ZsRkRxWkU_Y8AQck-verYFUEFVzoOjgLUa1Ihi49RJZq_Z-v1pb75A_A7vPOEUoMkxW6dmDu_kJroVs8sWUNZUn7BZLIiYq8hy5h9Dqzz19Qe4S6R94sPybcx9KgY6Jz1qKBORM91x33xUKVBWrLouaJnsfrJBnbg7CqHAlpKqWLLoLhZ0DmjIp6MM5gWkLvGrQ8Uf2DFHko8gN6oz7v625oWtL2j4WHDeEG-kzjnMj0RHMk-wFrMgiml2oFPqhM0DWhJWDuhJsFI-OLdWiU0QUcbu1iW6odc9O0L803RuSlOBa0ca5g0FGkYfnmFBYnMiFIDA03qkj3nCFk0EStdAGTNpFeh04iVcqtczMHsjkKGhbqPZkzakLxupZgHlORvt1dX5yWbxfNbNA1TaAa0NGEe0vG1buOdi5g0PezMwF8RGkKmV06NvQUiMf1wSL8nT6xiUaLu1gW8PVVLvnid4QkYHXHSj6QntdF41QmN60iu9YWzBx0F2AJuDF_tl1AqWka5Q0N02jg7HGwNzDTaMeGMXLdbveLbGiL7gVfbtXQU5PeUc5PeN5WYNaUTW_738Xpy3-uU0PVHjsnSd4gUTLqnKc9qoE9pDNf0QGSh_lk48s3jcgOgDuhLhbWvBZeOOLgJwaLbiLXDLgf4Q1MX7gHSZz_j-AaebIt-E2Aqukd5PbyW1f7UW2eLhxtHXEAq2z0FMy-xR2v8PfXSY2Q3t_4GZH2eyDJ_yhS2j0Ea0hC1OmOs-uhIWPAAsxGCSGMf6naN6_HRM28y1nldsrGYEXwNtuQiL7msVL6mkNzJhLVcIorT2uO5aN3MvW7EyxhSZKoAoWMA3OBqQjg4XKnjwWMc5ompJoJDKAcnks5I8Ree7thbQ454BTvx9MP0Gow-p7XOhZUQmLc1gO_jUrLemiZ5Pi7DZql-crObHZj89YWT9z46h5HU3YVXTgnKPXOxzqzOV69NeIdp164YHjBukYIAxJuwClZ-9dptxuqrqEalURVGuGtl0TIjvZoDZVl_hnsJDPH3i2BEHgVctaiycHEdtcIyo-FIK-ZZEHj55_sfme6dZxoU8c7fc3gSNkrpW-maTnvqBn-5WyRsQcRMBGoonoFEqIm7_ipQ7usE8jYcmSQMQrnQLgNCNU0ZKrehud4YOBP3yEqv6fAR3fowXg7b2skaU4IYRh7L2k_fOSb-qnsbIjF2S8fofQaaqJg8wZTQJGcTU55k5eFFFdObldBSRDj9X37zeflPWCxZwoYMcRknWlPGF7lbEMMeodrY_66BT55-FUtzDjvdtzEeHtiz4kFexP7YO8v8Zn9bKqQjLZj3HJZAZpUiN4aLpLFQvUWRLpDZBzd9AYKsUM19rBfyNinKhR6BCBmM4UoywDJtB6P2KkpDIzSp0-hcxDjpASpAtd9OAQsV5-XvoqcUcRJeeo9_MKOS6vHoB_6vrgX7DkMRGAgrZLYYr-HPqhyWDOUBn88DOWejH6_HakF4iOHqn761CzbLLIEDSeuGFFLYvKzE5c7jtEx4zdO4tnGZdrQRvYuTRsK1uzCTks5UJFQcatdxWpqYcOkTBh1QNZIkr08-swkRoorLRMnfN8ehuRcPTT-EqbqLfxshNT0jn7-BauXP9tIgX0hhCs5Sjb67MtQdVOPOF55v52dtJrCsydN7DurZoOIJoQlzolAMzYGeLF2-HzotmviGECeGp3r44eM9Y-MTIcCvUQHhkZzegugVIXHErMLyAQhRoWbNAQfUbmTyof65IQDk-rWC5iz4l-cozXUkeakj9s0GfnvOjATYXFfw5XBDYQwMpLluAfTJTWYB5DfBp5SAF-k_b057MP9Bln1n9r_A3-JFlkIHEpo9wihdTr4VxczGO6VpEhXxzzItJGkiXLlvr7MrdrXDfANboCnf-jfsqwIItlsUwhodlky5e5qsyCKEMGLnqic8e34gf-fYyLPVMplaLaOsQRo9b5zRmfaZLt0zUBQFMhQg1mYlP13ZN7CfBcqcOjpUbobZY5MuHXsgfdhe91EzHuQU3BJauKFllkzLTikcwBgVJDDjpeJHdfqIf_ijOjm5QS2vcv5Ozm-YRjZSQ3HTRbe27ssAfv77EAiWnIc3v_sBG_8ezx_YOD0_RzYiP0qBcVQzFDR6e-ZeZDBNqkGQqYzVH53bhkM-pc2DHeyhObw02eqktb-G-sMNXhpPQdkKYYHuTKvaQ7wm1IEBcFSLr8HHkDO4CzfayX5X9Yg8FuzOo51Ebh2ITh_KwoHPeWQmdwjC5i_W7pwSB5DNBUgBNqqg8blUbTS2meoQ2bSiioOAZcIZFQHBOiPeN59N69m3PEgQA1gyHcIE2q5MPMJtzTKeeU79nyZKkTbXgj1irrKt1HATo3PPrgmMvTixDu10aRgNwXfEao-Sc03yYpZJvVM5nh5uHLFchZv-4nTztzYAkqJVDVwuPqkCWNzBKJEt7KuJvBdbvVNKUEQCdzIGQtrZy-lZzfm5EkRVwO9EfuH7xZ3ixFvTUwNhNlb_vN_PFqUr3cEhH8G-p1wTQQoiniNvr9grfHnw4ponTKMuBBZaz8MGuxFMfyFakue3OTNrIa0JqzBAqSUXMXRboQJUFI4wRG63d35DDurHDydRgQpK-Yvmu3L8dwngYekgTYif5IGWiQjXLY4sYReScMicxK9z5jyQq8rk26Kd8EGpLLqXrlmZbernHffFTjwWIQzNoa57ytyOuKK169sd5ygRtQjFf_U8VsVBxExSLzp1txYUTBuCDu7hz-RBFPQFPj8J1vTBSFJE7bcZMsVBgpHdKkOjwP2ahK9YKh9vXsUpDBGvGsIS7KclEyLM-iJdi8Yf6wr6EogM2YkcafNDlR5joQLM_jrNTgBSwpTyUMKmPdwQXgl-LE2d3npzYvW62kXgfLB3HTqu_p1ggSVL9QuYUJDb8DxVn8ZHXBd2iGvEiTPKtwJFhseaFdOIusvl6H-zXBlXDxYdF0-BjzAaxgYIWMhIOveGnSazUQHNVc6ahTppMYuF9nY8JoTssbKjowMwccqBOtzBIqZPnmsgueSKMy6oGEfJxK2dW1r7iNuuf5ppeyb8ivsYZI-c0JIg-z2aNiQATGRTrdJMemGNjitRGZx2HQ3gFPafrjCLqN43GSxgsCg3vrFlDuodr5fdj4OXABfahjUlokeL-x6kgKaUEp-2Z-JUD9E7VmhCV8UYR6pC_eEOFgJzenEsK-nxLqZvOtD_iq1-jisb-4ZRvd_q0il71RbgKvIs8XHzlc8JU7eBM1sdQNp21in8SN9TtZyluduZjIrjknpVHEugBo6CvMtM-AbcNafTJEqtjJzI7nEHeOe1ELmrBENnOdtniAMPQDuRYwsL5IPhlE77DZPdVcQsQ-UxBa4Bo7tK39yLEGWqAuJYbEjLQvM3rKcmwzQGoUXcFD6blsykl-0rEYf7CPxZv8DRM_CFypKbDPz1mMccj4J7VsGjEKJ3z-CAs3sLkifnkRohyUtCIsEAfXEo7ogVHmVmHyBlor4zECRquLL8i0Djv-_swi_8YLHr1ENJ8LE23vl5aMrJseKxzD4QcTdLEfg6-Bedz0d9P57lq_ \ No newline at end of file +xLrjSzmsalxENy7IVaZYccnjaijLdMhlQcLPTbndoof9pjOcbL9193I3c0Hc0L2Eaij_lmB05m04IO3ao7Q2JzA0O7VpGQFHwCRBFnW7b5TbaQJfPocu9oXFzvJS5h1awNl4Tod0smBcQKR9UvRUGSYJD6Nl4Du32igqG1ZoXprC2UKxOZpA2i1O-bkIfcdwbD0SqbDI49h-vPjl_lFal_wcbL_lKFOEGyRIhvCq_LsASYhUXYn9Qped6KVtY3zSmWpj4SIS_PQaJrAKfySfmXnk8KsFqxzl8OOKS9Z_Jv9kAS3yfLdXykpvsUNP-UdPLNhqGZndHtz5UP8IleFq37F47qRUUDFMGh1-yKaAMidsX8xnEp4gjkzd50g1JtXwd79KGiP1kLVOYv_fhmJ3z3Z5vFtdNuZwrJxth_zxajZu2UOd-pqbzv1EWxZy-oe6wSXRRncaZuD5ciC2JjLEKaouU8V3NtYICWvunTBZ5EAg74Bpb1G5k2KKSFBdGdG0Z-UeW8-1mnqguCXRKemG77o_V-YxNn1GF4Umo2yXsnFCPe0WI7W38Igt7xWbeBY6vRu074eXBYWfzwFsp_t6OI1BQOr9tRL-_6aCnKl8I4MpHmMGrZn7tcx5EWn4YhXiYiRaA9Z4V_BdpGXKDyRhloKf1gN2NPOdajCT5OKrINzgV_-_BxySQwRXbfnkGKBH5c5GJBISqLPBBSSsWDUwRPmLXC6hYkqXpay95bsX7MpqPvSGC8ARWIU5E7y6vBWac2GfOlBBOF5mbYCEnQVS4b9085wv0mMJTIuv1tlG4X4AqOriikNQP-r0TmzejWFqyw-__VOBJMUQzmOwxPlRdw4Kw9HKT8xXQmbuDsRxHjTIalS8WLgu3pasjbBF6oJNWEbZ6pPR2UTR_JLW-GJjVn-vtY2WctzUY3ySN51oZtAO3um3KrGTWq7_bOcclYPxb7sOTkQ2zSZxIhGFqW7y1qiV8FgVldJO9BEu7dPI1-WR4KCmvFbgzZZRVk6f4lexI64tjWuEawpQ2w2kHIIa8INxMyjJwtOJG-byAnZUe9-WpHisTMUdh_xtj7tybi4yIK6U8uu81iKvuIASb2bT4DDyx7gXjPTks-Xl4YSiuNJh5e3njmh3fmz-q_sGm025MqJmQCEB2e_KYv-a8Xg5P4_inFawqJIyZllLVSpiVrOpjxqEg3ZNf5CEYgmIq-3yoeZtDDhIMGu10g6NfEZwUGuBT0_fmsl8ToJlYPPN573rOJdCK0cApx_PVFM5IrsxgN7Vto-5qiWgFpE2RuLwu6q5jZOMukK2Ra6cLCQKnQdp6bTSbRUGlhcx09IZ3Er5VBHha2JTWoqK2C5Q355YrBGbsLEofQ0KRUPwJ1lZst_mxmeoBfN0ihGYNcr0mwhR4Z6XErRZoGUSGnD93kWMyWko5mqk5Dp1Nhe8pWSSEFHFFBb7b5UWU5OhWqjBMtklnmk5AeLRUfs2jzKtmfIj6I2Zam4ftc5z8LqigIYJQ9HWpwx9o2pF8jZ8VmyAb3yVHUpxkifSgrTFiKsTVIBwmHvi0OTly6j8jz2OhdDQmGC5ipMGoxB2A9Cg_ufiVMUVcVNUwEJQhFeHpJTxedbyEMq6dD4Xiab67IeqB-hbW8FExeT_krz0Ph9JBGgT6A6d9-bU3FQCipVuxRuWm1c-Eco7EBk7c2kxU84Ami-1yXzE8UQGodRoK19eKHbfUfjX2oKsE8zGC4Lyb6oGATkvsxY5Udf2O1UfmRRnCrJwYAXvBM9mzlxmqxUNbsVdrpVNBr-VNLsVlBvmzJ_o7fk8kztf06WSRFiEtvvazeUrY7cRSq-J8qps5VeLcb_p3Zuuchy9IGWP1ZJ4pA86cp0HZW_DiMQM4p0wS0tu2o5PWayjorqW_EufoDwr-cMW7Pp5387gmsKg2Jvf9eINUbH7Fh5A5cSrG_EO8H0UCcxZ1aaVbqsmGaTihvZFqipcL2xJcRqKXLUeH0MWY3-yeAJQ-wKmm_NVOZFngbNxGA4u-4jML3dCNzwT4twIbmWx6ldt4R2cWReBJVJEyyBNnKKPz-y0Uudb318Cv5jx4ImBB3a8dku0tdhOWv3nPErizlonnuwNOVZ-oXqn9qK-yAGD2YaIGzwYV2334_reZ86xQ-3mxD7Dgvv3KxYffRde4AQNjPSYQfCbCv7WlT00L7NOKRrt9pxVI53i4ExOa7qJ36k2WRMkrwKotEV4jSlfDJ0S65rYC_J9Hirket1NjM4LElZFnUEJIE8uWPaQsFNHVEBbTbJlrNCrpNIJ728zqjP31BVPWcPAj0DiftVwMj9pCt2Y5xycERf3gpMYp3VL-O29bXwSkVkvI_ELNGMfBW25c8Uu4I5BmJycJxcMv7i4z7IJn_IklrxiEINbLGaePpi8-JK75mN0-fHdVBaOvUuy-z9bP1BvSvbtUeNmktLNzVitvROJ8tYa3GiyIlakuRu06IphVERYwAoJw4gnsaD6OMsvFPlV-j8fRHW2Xgho_4MGIgct4Dw-M5qJvplUjFj4lT-RGFVH3H_d3ZSXCrImwOdBOiq0umeKpokS8xnzJJ3VzKXcEN8Pw5gDNOywqpfi4gIMGdSuL3wxsiCCWG8nVbO2L4nLSX92M2Q5fJinAP5UsLhpL2VffqJgLNCAfUVdHzm8iOZWbEJEznq3YAR7fDf_a5ZmL9Z62CpyWQB1CWhcjXwEQKoGIGp3z40JDh_0bJ_x6QEdyBqkgji2PSPImnsWCFydaaRBt7xsKYQ7dW4EV1C_AftqV3mJ_xAj50owaU59ZzFFNZuxExz--VpbsRFFZe-Fv2pEalf6lNFaZv9SI83lI9SJCoPD56Q4vgUaKckHwYeisy4Iz1LR-rYFiAN_2WQ5z2JAuQi0o7iiKkKdNCm1zNLPwN7wjpfmb476XYluDzBS1kBxvwDjPA6_Ph_BuHt2I0zNoMGjnE2sW0CB3Exu_WfoZl3MUCVgmaA3ycf624wepMl0thKlxW7lG_4Qe09ISrNAhKYfSlSgC6tajfU5pKrxjsCB52E_d6VOwzkUf3-JMyUImYTYcPs8iIrsrYXaLS7RbOMioeGsQnPHHmnpY07Ee0zidABj5j9s6MrRI--L5issTm8EjuG-Q93FMBOZ8pTwwDL_NBXICDnLXHC9WX4d5E6jt2z_LPKbe0Xw3zN6ZDSrLcipywE_7cdl7Ad9m3s2xr_cRWATS9UoNaEbUUieQ82HSORJeDflVTCxdZlt06EKaF8DtGACVhLNzNwx-GzlVmkMH2sikL8R1tfaZ84DOSPfbOs_GQK5QDQVJdlW4g5dGRFrha6V8pcbylOBxrJzQKsf2JUgqhvtrAeiXDDKNgYAXjgAzuwwKN1aWEv9en9L3RNc_QEm1JMIKfr_QOOHA-RxCUWuON1wUfiHIg7KnsSGvAyGXii3PBK2Ut1lGuxwHjQ5clmTOkAtbo-uN9N3LL39zp2YYOzeY-yCcLgM7uSA-obR3Zca9SB0o94Q_H43AdPkt7UQvaZNhgXyUkEkw1VtTUrGaUtnx_9oIWxHCMPEt3yLJLv50zTMEjj8FfhANN60Sq3pntDAMCtHIsaRyJH5hL_-n9pXHzJDFvnPFAWzZ8PmKTiygjs8qv0u3N7CM5UqSlQC-V0sJaqlwi_nZaCjdjH_Oj4iLUyQbV23Z_HF7u9rewatAVzZ66wjDLRiE9OkF5Q_-UFuElhthEtgzB2Adavmo_XjWLvi45TjLR6ve5vUq3JP7st6PA_Rj29IchgIYcT4Nw2f3lRb76IxqeGfC3MW6j3m4GCqhdz2XqC7ZNdmkfQkDna_lAqB2Jgi6Yv0N2ItpKzTqai-lea0ucQ4rgyNRIkKYqpkBFtLDp2rZJtlU82FRMj_-F8eIx2bwvG7llEGQwkwJu6_y2iEzo7RSd3zpbZJrLK-hUquFJ3wMt48Tst5cNXHRiFfrR6Ru36EjlFMAVsuT_NpUivIZOoKUs5Ud2EVTZpkuozTdNTgunzd2UkC3OeVo-wlQslhfr7-0VP_zJ7rs-tbjqzBtzqrvu3JDJQ6BhW89BGN77hxcBOjUzvXgBDtdzqXolXfRH1zwhx45s9tWLozEbtxdF0hCSdmawF-DY_zzvHPLFKMMLJsbbXKzXLuS4lUq1uypPPq7LdNv9LcOXu7uiqxIlr2hDcGHptwXI_2Z3ZBoEW0UoMUVyINi5oe3JeNa3A2CIoMEkisFUCKQMYUbXFwXRsD8lK2Ti6mTxIMEcrrsUfYU7UdxFra-0CwTpyfm-DIPjc_NG_s5DwXNnndHT-vYflkwTxtLBU5QmVV8NOtptVMkW2MTVIi6w7sUDZHZMIE9_-2W8Pk7XkvE-n3cRQnZOPqzCZZ2YAhJEpe-EpuMFm6cJWxznxG1uItEW1RJzk9nyxdkrIdyvvHQanYXZOjh3kvBTt7B9CzRCzPji-JaT8-9Vb3kno_ERRBMUZSbrXHD8A7VqJ1VxjF2H2UavgZHVkMz2RKiKFgcrfjBo47vhc6JObV0Az49NIgfTlB4EVqU5_v478aySTmcOFl4Sw-t17hzjYQe-m2Y-FjkbT5uHpDR6UX-txb5nt0TymXooZQEtlrofxb5PHkfNRegE_Eof2zWQp7PSpTx5K-i1xt6TPxJH3UTdcbFpictiS2ppaBUCrZQcUVFTjzF2glCaAXF7yLPBjLhPm82trb-R4455_Rn-hMFj2DxQqn8LdlKeNWzaKSdXJGRolg8T8nFgT9F4bBo9Ywww7DpQdJUPkTl4rciDt7sttOZQZQ9ECzpcQOU-2STSZlFQ08I7VGtBlkxGO49eKEEIWEZtrlcqC8L_PhFdpcJx2eDqU_kOUKeXoktKUgZiN4AyqkxKCTy7aFYWhsCmSwQn-DbI_rLJ5W2pleja3V3X-v7TwItxU7EQhvm0UoTfoyWovVZhkc4hxDrnxA6e37D00xKiBB0z-Hj6Fo2XuwOCB4zEqLsQffuFgH6dUSgm3RBccS7gSdbvSd__hnfsPSaU3To5f7ubm0yGad5TyHAYF8ZfC3cezqtKVa30hj28RdpWEWZ1Is9ed8LmDyBm-iG8oZZ3Lho6-4Jt5JYZjNRaXjneGz5-T2tPI0lfCLn1WfJp9Eqh9TV7CZcrm55PBqtnKe47-u0OnLLAmjkSa1szqIGFCcNGWAnKrxm2b0MD1IIx2Ozgn9gEkV8RFdig3HrUO-cgMntANtsY2ct5LtDkeHJupxuUHPFIlq0AMRGXBQYqdySF8S5HnIlonyLMBdj5Ykm1gzpUA7arSdzYLc7b4puSxVQ3LaMLdS0DOhkdte5NL0JWmvekulaarLATMGHVeAY0v3omd7yFqD9Uzlp9a7AN97QJtDks5ewsY9L-OYZZelIYDCep0DB2Q9KFMXig8v4Q8-H6FtVaIyt7Wv8lyHAZTK4Q9HYBGLWjPzRH6j4RIYNVV7AXghCBpiI6K4QmIiYDCeJh7lUS4KuR7W6RagEW9a0sHTfH01KW2DtlmSGNA1507g0HHd9GvOdZrxvG597l1XkVLXuW9sWFCR3hQzsBEeB45iFstmczNMc1kKGxcrfRzyKZrtvk7K2UetpcJD13v1jsn7bN915W6o08e3c0EKaIko8q0DG36wFOLGdAQEW3D-DNJ4QG2dY94B8_Tbq16W1g3nMviZJZPEOuSSHBHijE8uvm5I1CS1JWJ51cNm0j-8JulFy7s_4IGNI14W5q0HbHugmxV1HeHQXABo348JKR5G6RnQDiBJmHEX6OGcmcB14dAzwvyEcP1hNFzqy4pUxHfnCd4Qk9KqmkI4oN7bPKHg12dt_OmHicd8eefDuXMroWSbnqKB4QaXfAAj2i8g6gb9e292WmYvx--BA9ae3LqE675ouHILoGEaED05GXNxtHHE4Q11W0RkROimkM6A45aGnVqVWH15U6nuXcznYm3f04LWB62cxc2BA1aenLMWKmX5P6nat7T9HN04ECwxgo8q4fh1YwiYFXe-KMyiNE9ngiF8RAEXSS4I9mrkO1ptCqLa6cGYA1OezerF4HM9ojGTKX4cDqmJrqn5sDomHOXiY4Rkgue8AOJwrrr5P0GoqVjneUAutYe2qm0pV3jMnCZ2A6BZm6RuJgw8KODH1CK2fNyXLCH5uEA-5ofYex2nRxhwK-EIV9QUC4Oo96qlIv94pjFJew-EqY-__F4ljmN8tcts1K1umtSeUuSXO__zzKzVVYchQ5k0XLpjhusyzZXHkyzyYTcdfwJ7wLOKRTIVxacIZDpzP74Jbyp1t6BtMveUuQEqTw1uUYokDpFBDYaOP9OuhdO9u3zrvr1wRF4MLJQEClErrQLgGyNU0hLl94DN9CmMoBuSfYTJMs4pzA1-yu2oDJqYL3BvtW7b6cx9QTaUeqtLp7E6SEf5Ix9v0ZLvj9uKElEcqYeSZMl-N6oRPwjnCotcs8VsQgycWxkFR5BQFLsDbxA1KzyfQwt6K-iNKuoxggjn7-xfDlEXVXt2krrebnwdR0yp10h4U5kwwUwkryfCCPBUxHKpHtBrxd5z2wpzP2FBdrDIzjvP947lq6dXlLXb6yEx41oMiUoT-2Gz9gjmPQRkbOFfSNrgllN0oTowNYAecHttTqYdpIpVz4gKEMbSXXLzZqp-D-bgX7FkM7GAgrWrYYr-9RqZyWDOUDn88EOWejP6_Hcll4WOHqv761EzbDLIEESeuGFFdPoewCFDChezxqzdOBbuePo6D5-nS6jxA8-1d6tN2l9dFRLRJjoPwHJCNENDXD9nf7QWaNQTN5xRQklHnbN8ag4JcTUT-EqbqKPxkhdT2jmd-BauXP9tIgX0RXvjQfRhCEelrUwnsuvMNqKAtUaQPjuvN4juDZoOIJnPFjrlA6zIGaLC2nH3qtpfs076q1R3t44eM9WXBshJywNcqUwflI9kAdqeKRlLbR1cAwzefPncQJxSFNCg1fMspGSjO30R_P3_zakONZgBhhHTW49SnwAo7IhoUMWO4xRMdQtxLp2r_W8CCRQ9aZSORjH_r--9eYwBP3T-Jv9U7DIVwT0vQSAB77ZKZwwkmjyyti3WRpuQu6-V4XqqBtAzt_dHrgF6eRQALnUZZMVhPPjUKSTxSVYgZfuxebR1z5i3L0VaLGSBfkA0XAgV-Gj5MVriJX7Pc8zDvCog-hCvahLd0pUJQFMhRg1mYlP63kLZ6KLBQREEvdmvAvp3EuHXtgbdeP91EzH6QU2BtfCatFiUZ5Ti-c6BkVJDDjpeJPdesIf_ijOfm5QU2vbFQnxXz4tQ6uq7Iwp3GKFiiVNcSSefscuXXVdJXqtt8_4uvs_MC62VhsWC1BtpkJRzX-sRZoDYUqgVIr2hIkE-o47BVOhT4e5QJRxh23e0gdLxVVwZRHRUMelbQG-I6D0XzN2ZmtK0APpSfxYkfAAjHh2n7ZEa42i9CTP1_7h6Ie8CjOIJjNucsIfDiEq8-hJ1Olu1_dJfufeuJzHQUshHaTuCJZXMb6JKKhbb6J5KIwMPR29R5lE5rILnYS0sJgcIaQF45aZWj1Nceu7-kgOK0pWu-Hg7EgqrMesQwxRYgbAu1ykcr8BTEcPdzGmIDahzKadpPVAJ0H-GPvTzFhUuDY48gtxIvS_3S-vw-17NPPlslouCwGYHhnXh9tRXPC1zaJo3iRgU7CcQwvCCRbryV7fzqaYaN5lyCKlKwOpynfsSNygl2xrgto_Zh_edwUUWB0reaPROWpEiDPUPsRuwaqwrabv0Pr4igB445xsOaB8STddIndpM245jUh6eH0DwVbfQ1VHgGlsyD9l7PI1DeJ5ofYdcyMeSV9swykPdqNEd0Uf2VM5KKfzJCTj8AQ453TiAiHcqpTHaHratwhFeTlZM11jmGoavXw66AkcFD-4Sj6EADDBxhdG6pSOVgSJVJReZ9LH4acuSNskjDgt_7r-XlPolStdn47F7UkBb4lWmNiPl6DljOZI7bX2OFFhB1-RmSdcD7P--rwZsHIpRKq69MgHaFGcctPtCqXAbRL4mjNO_RzqRwzqUWcAY3lMORIgOUDsq5AxbRIikpMgMzkehjLRdERXYooc3itPIjzzwEmMu-6TgNq0mLqFLQXQQhkdRUGDLpjufBV6JHHkfXlRpH8qOQ-mh4EIR5MLj-KBwzgH3vs5EDfRnaUlOAxuJQueBmFZRVIvsweai5gsTd506BkUrOT7tN4Ef-uL655m-0P5G_gwbL8fRVodL7DhsWfwEjl4adBOhIrmJxoU9GwcFjG9U0VN1oRXYCJ0F3-LYZZQAj3xOXDBhZa8HAzefL4ltMLiQJD0UMpVT23kBbiDeTcGNMqpN0GGjXtlhGTBiEb-uFUM-9jFV8Z6BHVjA4thylgNVX1gQaedji_We_LtZIJXty6p6oCOJO-Pd3En1zIVjy4wPptOjFQBbpStUpS5wY_PNOQElsJyG2o_SrcLfUaaiP6lRCkIM4BGMKDlXaWM4ZVpmggG7Gjx_H7n7gcOvjbdUArnL7YFOgiTDqRgCl9JQkNjlhZvaFbi30tIY3bXA_sLryeEfa7NP686hwnqbrNRNyp4tvkEUlsO-TpjB3i47s8tKdDu5EIg4QvVYN6jLYDb3lUZGcyReRZZMph5bBxyQtZ0bQZgduUwDL7Fx2_FV8pMNnS1ceQL6n0ndh-IcRFNj1_CwcBt4UhwngUFhmKriYwCQjfSYdqiF3sV0byBV137D_EPSGRKCO1ljz-_6AevOHmIbwx9LYGDIBFEog1v1dVjjYaWJx9nBHNrRalm3uhmgY-J_0G00 \ No newline at end of file diff --git a/docs/logical_data_model.puml b/docs/logical_data_model.puml index 6aa958a96e..e54c2637a7 100644 --- a/docs/logical_data_model.puml +++ b/docs/logical_data_model.puml @@ -1115,7 +1115,6 @@ enum enum_Users_flags { anv_statistics closed_goal_merge_override manual_mark_goals_similar - !issue='value missing from model enum: monitoring_integration' monitoring_integration quality_assurance_dashboard regional_goal_dashboard From 3f6654ae53df834f8a8481de737554076a118eec Mon Sep 17 00:00:00 2001 From: Matt Bevilacqua Date: Thu, 14 Nov 2024 14:04:42 -0500 Subject: [PATCH 4/6] Remove unneeded grant scope merge --- src/scopes/grants/activeWithin.js | 1 - src/widgets/helpers.js | 10 ++++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/scopes/grants/activeWithin.js b/src/scopes/grants/activeWithin.js index 41668beb05..ea81dd0d47 100644 --- a/src/scopes/grants/activeWithin.js +++ b/src/scopes/grants/activeWithin.js @@ -14,7 +14,6 @@ export function activeBefore(dates) { where: { [Op.or]: scopes, }, - include: [], }; } diff --git a/src/widgets/helpers.js b/src/widgets/helpers.js index 8c7cfec2e2..006bc81a5b 100644 --- a/src/widgets/helpers.js +++ b/src/widgets/helpers.js @@ -9,7 +9,6 @@ import { Topic, sequelize, } from '../models'; -import { mergeIncludes } from '../scopes'; export const getAllTopicsForWidget = async () => Topic.findAll({ attributes: ['id', 'name', 'deletedAt'], @@ -81,14 +80,17 @@ export async function getAllRecipientsFiltered(scopes) { as: 'grants', required: true, attributes: [], - where: scopes.grant.where, - include: mergeIncludes(scopes.grant.include, [ + where: { + ...scopes.grant.where, + deleted: { [Op.ne]: true }, + }, + include: [ { model: GrantReplacements, as: 'replacedGrantReplacements', attributes: [], }, - ]), + ], }, ], }); From a1cf9625c891ba73eb04453c97d5b1974a8ec1dd Mon Sep 17 00:00:00 2001 From: Matt Bevilacqua Date: Thu, 14 Nov 2024 14:44:38 -0500 Subject: [PATCH 5/6] Revert unintended change --- src/widgets/helpers.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/widgets/helpers.js b/src/widgets/helpers.js index 006bc81a5b..39d1dfa44d 100644 --- a/src/widgets/helpers.js +++ b/src/widgets/helpers.js @@ -80,10 +80,7 @@ export async function getAllRecipientsFiltered(scopes) { as: 'grants', required: true, attributes: [], - where: { - ...scopes.grant.where, - deleted: { [Op.ne]: true }, - }, + where: scopes.grant.where, include: [ { model: GrantReplacements, From 7e252b115f206666de5d9f58d7d957955101a3ec Mon Sep 17 00:00:00 2001 From: Matt Bevilacqua Date: Thu, 14 Nov 2024 17:26:12 -0500 Subject: [PATCH 6/6] Rename migration --- ...ture-flag.js => 20241114222525-add-monitoring-feature-flag.js} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/migrations/{20241113212827-add-monitoring-feature-flag.js => 20241114222525-add-monitoring-feature-flag.js} (100%) diff --git a/src/migrations/20241113212827-add-monitoring-feature-flag.js b/src/migrations/20241114222525-add-monitoring-feature-flag.js similarity index 100% rename from src/migrations/20241113212827-add-monitoring-feature-flag.js rename to src/migrations/20241114222525-add-monitoring-feature-flag.js