diff --git a/.github/workflows/aws-amplify-dependency-check.yml b/.github/workflows/aws-amplify-dependency-check.yml index eba57623525..e3056a4c5c5 100644 --- a/.github/workflows/aws-amplify-dependency-check.yml +++ b/.github/workflows/aws-amplify-dependency-check.yml @@ -27,13 +27,11 @@ jobs: issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, - body: `⚠️ This PR includes manual changes to the "aws-amplify" package.json file, which can have library-wide implications. + body: `⚠️ This PR includes changes to the "aws-amplify" package.json file, which can have library-wide implications. Please ensure that this PR: - - Does not modify "@aws-amplify/*" dependency versions, which may misalign core dependencies across the library. - - A repository administrator **is required** to review & merge this change.` + - Does not manually change "@aws-amplify/*" dependency versions, which may misalign core dependencies across the library + - Remove any export paths without a major version bump + + A repository administrator **is required** to review this change.` }) - - name: Fail status check - if: steps.aws-amplify-package-check.outputs.any_changed == 'true' - run: exit 1 diff --git a/docs/api/assets/navigation.js b/docs/api/assets/navigation.js index 6d378d222eb..8f060f37a8a 100644 --- a/docs/api/assets/navigation.js +++ b/docs/api/assets/navigation.js @@ -1 +1 @@ -window.navigationData = "data:application/octet-stream;base64,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" \ No newline at end of file +window.navigationData = "data:application/octet-stream;base64,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" \ No newline at end of file diff --git a/docs/api/assets/search.js b/docs/api/assets/search.js index 7643dd3bcdb..dd9cf1b7bb2 100644 --- a/docs/api/assets/search.js +++ b/docs/api/assets/search.js @@ -1 +1 @@ -window.searchData = "data:application/octet-stream;base64,H4sIAAAAAAAAA+yda3Pctram/8qp8OuxEttxTvapqanqSLKjbVtS1FJSu86ZUlHdUIvbbLIDkrK1p+a/T/GOK4nLWmwyM5/i2I2F510AcV0A/vd3NP2affef//W/v/sSJdvv/vPNv3+XhHvy3X9+F37NXoX7Qxw9vnz3798VNP7uP7/bp9siJtn34dfsvvm3k6d8H3/3799t4jDLSPbdf3733f/5d4W1bXjICX21SSkZNNf88L78ocL2v393CClJcgFQleX/uCGPhJJkQ/7t9uVAsv9pnu99l/S+SnpvTHLCCe2xXr/5uQNb1T89LW11TI1lGybWjhvgieyjHvnd696XmzTJclps8pSCEge8YV96LgPW+z+8+bHTEkcPNKQvV4c8ShPYAggk25MooiRLC7oh2WmaPEY7WEmycSxNb3748We2xj1Gu4JpLaDqW2d2Eh07kmOUCmsWrY6xbVaRP/k3WK2RhbRWHC54U9V5VPcFxCSkp5RsSZJHYQzo+UBhGl/PI8k3T+Wv1iTLojQB1KMwja9nR/Lb9Avx7EJ4IaxNHAXvfuK+6YuqCuQv12kaC+1UlOSEPoYbe0GyUYQPnusBT9NdEuUpHnvQ5wBSLgq/6wvpLiO0/OEq2aKU16D95RTduAzoUhwumPECBS/BpRbZBGU0WChNnuBfl9YudhGFcZx+/VCQLF9tNoQZtmHoCBS5eZedvkg0kiPmlxdbXMFSXpPIVdRY0JZEaRO7psbpLkr+iPInNPiAzQKqoLTNyk/v3r3ti+n+Pn85kAmknXQ54Sg86Z2oKUiyD6N4OqUnbX7YelvPamSnYTFJ3W1lt/kdWfbhKU0mrNcnbX5Hll1khFZ/nE45k+WRxe8fQzzdtfG/WPO8fwwbn756jVd+pes0RZbts/MkfIgJ0IBoTOQJlyGe3pGamuVhXgANesclt5kdTW6e5odpi5nP8WjCD2GWfU3p9n1K92GOp13K5y/WTvH62mJ+g1e0gkN1HU6UfCLJDnN8pVF+wmY9iQ9GajolfxYRJZ/Sr4Ruwmz6unCiIJiRYy6L/QOhiE3+iFv6/GfklPWBbKIwPn0KabjJj+keFcmMHHV3OBz5s2IJ5uCYLNold4ffCY0eo01YhjN8JvlTiji+GMgRvbeV5nirPKfRQ5ETxE9Gymd6mdWv4ogkOdSKqU6okNNxpJ4n20MaJYgDRUVOx5E6RXlOU5LcqneR5en+mqbP0ZZQX4WcMex17k2VGzxy0Bn2Lwneu+oi+FSHuK2uL8QIOjdJkj3sgvhAw8PTb59QsIPeuHdpyI5GnR0OCwLcXpAzap2mKbCvUf6kioNC1Hki54mnWx6JcXFGTyTc+g/dzWT3eU0plyvtm/P1LY7WxvJf5MMs1YCuLcv5VA47Rq3ktLWVEmY5Sq1S8Qkqurwif4Lt83qD6KOPvi0DGj1pNATqnMDKjSkD7WL4F5IgixTzwJWnqIug9XCiOri6voDnDWqrUAUwUrdW/nv9Sg1AW/pmItZ5SsMdULfE6egtTyQly4C+cE5GbRVPguJ7bjwH+lnzNrG/7vVbNOqgsg1VHoKrpxi7qTXBz6mEfNZvdYW1JY9hETfRmp/IM/EN3DIReqLMFU37yDwjyq4e/kk2+ad08wVm79zIB+psj+WEAyWP0bcbkqXxM9RgaVi/lOOE0tl296o6HQMRNctYwm5jt+k+jBJg3qCz6l0UrFO1Na4eNPv2cZIK1vAUQijZRpRs8nW0Sy7Ay0SyPrWkq8J3l2RQU21+GlHZIU0ycuvfmysUcbankJNt0oP3pqQkpLOKJOHND3/7j9fv3nDzKKHxLdtq+6OTWM2uCnidh8k2pNtuz/YjefHDV1mcSEy9z16OP+DkqG1OIKjZQmwXZHxrltLcdDLMjnu6qpr6sKckstpkXJcNjoeW3sgEyGfpptiTJOe6EGtm1soE0L8KC/TWvI2BCVCrPkNasbUG5sxMhe1ZkXsbEwA3UyTVrN8aXLY1nYBr9azVVQNvDkHG4MISIHUAt6Ck9vRQydBok98l7L0eDso6I5NUpi63X0l88KtIgqkJ8KvcPpIXjxa+M4GAy+yZ1EnXhLIf6+gdbFwy7/vX+KPTSU6+2U1veZrGgqPbeIfoDvDXPwKCDHpzPrCtzWHHlrHe/tylFUwHV1u4gJhBaxDCwZULB518C4NfmcF083MYF3brLiOcQWsRws+1F/WN7E2RXB0IraLRywOyYtMx0uTyeWqMAXvfZ7Bhzus81DDKQtmPnKbpl4iIm9ej/QiXDLQfWdU/sarcPE1jwbEG8A7RxGltSUxyuw9Qzxh01nxQW5MDF6tB8damkGFXsd3u6TBvbQ0TOYPzb4bjX3FZrPy9aRvGW6//D/wDE2YS5WWc5U/F8A0rVNEKNDQbdEJ24ebFYfeTTeh/JzI33v2a3R9oWm6N31OyY+eRTmCB0qClLzk/MV0sF1cZ5mT1x5oJFmdWVi+20rLWY5FsqvLVizE26l0EkpKP5OX3cnzV1J/3NN1zFUrs84zVGBqGV9Sud2e3yrhQYwFqO5C8tKjGQNwISRxwGuAOmPEf/vTfaxLGL3m0yYZHYu2vJr3KvcvU5x73Tp9m8Nf+e/1VPr6U9eMiORhsmw/g6a06kJvHlaSGYYfu5EGfhZeCgXyGTkQanIb00NblcAxp1zR9jOLxEb6nvj6bCUSyH9r5c7lnRsPNlyjZmcbHDohV2UP9uELzo+Qu2EFoeYR8oHCUvtZd91f+FklSZ3s6ORmJSXm1e73jgSNLygNVHvsRXYc78ntEvgJ+RxqTuJ/S4WAUxuWIHfT2/UpG527UFmJYGVwjYSmu+pYvTa5MdNXG5oAtjVtIKWhsfM7MVRyfB7o8ts2IkuoKi67HrtobL6FKiwvofAfAQb8stcd1l6ORctcZTVdvfkpRRnerOioyv0TVR47qEyon4dHG+HSXgT7eIu4ntN1Skxvk3aiD3jxMwQi+1s94TSLcHTV11qeUZHltlaM0l0urfCSyn1Pzug/gIFZtcQE90gA4ZI+k8bi6eO5gViMYM6gFsWlvOzoQmkd+xSEyBwrjfiXBOld7qHOf7so7VqLx8BsbLbxdDBlOJ28dJVidujVTcsJ6SD91/Z3QzGRfy0/YCZcTisaRQ6VxuglhmwCVzC6XY0jch1/QBTZ5HEVeujU4Ee6rr8nkaAIn+h6FvI4h9xCH+WNKx28f9JTK5HNMmRMVrJzdMUTn0Z78y+QtFk+1TD7HkGn2upCNRov3g/zGZWVPlUPXR8boIkdkLb/lFXaG9arzjm7sH+XjofVeck6aLOA1jXwom7RIcoqurstlcoFxmEd5sUWujidMNtNLTJPdJBqZfCYXeUizPIxPU3SVXEaTyzQMZvSTaBPgCCsPYBdC0ge19WDQN/vuN0jsIJsMBuCHOIStVI1BDHDp/onWQh1ZW1CyKvK0WmTkI+gU8dMmYUwas9CriVpZmu0eRzW4Wz2iCDYsy0+AwhI2fFXWyl0QO3TJDja4z4cAV9sNq4U5GkQU69DpPLJJ6dYch/m9HwgbZC55fyxWu8ORk4JRbaOsvIbHGKX5PVj+JLHKvv45WO6PcZE9nfPxiWMITBowjoip/sYgbCIwElrVfGOG+ueeH6t8VOD7L1FCssjwyMB98+ujHB3oMoc4QtDpVu+bqpqxsRHdAJ9fK9eyWlxKGebjzwI7cAeNYRB41rp2SB3SPMrrKzFQBAkZTCYsyykJ91YxmDayOPOYosT+/2Odvmq1z9haODAIGBAmmsP6evx6qk6AX4+laJOc+4sOybnfULWQ+v7j1WNEyVPKvNZo1Jbft8mO2qP0FJBdS+8S+D5miBims+nokXsdGyUe3c+AHOTm2kqgb7ttLxOm5etFwjSBqm/Huy3sIb0bReW3rWgdD4RmaRLG0b9MG0YmxXHaRBYApDlkfaCJye5/YXegYQRWtOtJb94SVsdfLA64uugI+kzA9Eg5DQq0OvflLtH++BeQyIN9HKqTyoNjSCqQTMvD2E4SXY5ju8vz7NPYfD27M3Xb596TsWjunZimRVb1X81ZANO+o/m5S8/14+u//fj2B/ZuseH1dwuSQG/Lym2tM/TQ+jV5G1yVFWBQ1eTDBpFPDww3sIBvw6g0A4yqal9sGPn0wHDKxW4bOsEAMJ7Q9tmAdUk9kZg27xANkxyiScfjh8hr9H2I2O7+zc/Mh5/lq0N0Tmna14nGoAEBm9wKZ3Dw/O71G/bjz3JalJcyQPAFvD1HVs6uPqxokz4T+rIudjuSceGlPgKUZnsdebZ9FWWvouSJ0Civni4D1lUkW0LjlyjZgdWaQLaJrOjNT29e/yg/QQRUQp0xbBXsdVe1geon1yEN9+PTFKUe2Q7chy3EpWWZySOnNpRBb9T101b40ScyzYrePDTNE32gbQIRMtJIYcnSNU0gmobaKEBB/E3i+32aXBcPcbQ5jSOS5KYnqpXKtOaQvvCwyJ8+m0QPO9AGjHHXctC7d0CQ2bXuropuza+oh5H0JDxCBCmot40ph/1gPpQnlX771N1YbrQmqZSmsoT0mVCSFfH4KrcdZtBZdfW90pcaCc8hrV6Vc6xHehWsYSQhyvpTVbLff/KU01iZZfOqhIRoVSUf4jSmen7fNtRUwJ8FMTjFZQHfGsQGr26I2ZEkXxePJlcpWkiQTWOLgWp6OBmgzY4sQGpy/ozXxUO2oVH1488+MyO9PaRmyCjOwwXVIr5DXwBqz+rv4Nx+ijLHvrhLjuTo+piX+6yT5ws4c64+7l2mgY5y4roSIfC2ltBQE+NHm0xwWWuQyGKI5fm3TVxsySV5JvR9ROLt4JEaJblsAq4Gi7jvozgnlGzH3sVTgrKJMRG/ke1vZV98w4/MzTF5A3ioH0hSDmrJ9nOR8zcYmLJKFiaA/Y0bOFmTVsknwGQ7Dnda1goidD3Y+Ezyp3RrD8umhoO0fejMkM3qZbOhoVnjrVGv3jQL+sx80JK+t4BeBX5vh67utIwJZFx+dObY3Got4cFXXeX5/pDbN2N9Ujy8u+RLkn5NhMpnjao2g4f9+0/1Gp81aJsQD618r6cciGVV324NyCeHw+w38k/TJCFVsNg6D5nnBElS7GVC4dfOkQQ/ifkzvjHPOWATmzlFlDvMdE2SbZTszqJsU/+VF6TKGiL1R0IOqzh6dilTCZo1hsh8SfKvKf0CQdybgueNkp0HYp0agSpNzqKMFge/r0kwg8sJVu6DRgE19F+vm5OF9L5kP4vDuFWRP/Gb2Go48ecATfnl1f3q+uL+4/k/XPIOuORmfpE0a7nubn+9v736eH7pjMZaAKY7vTk/O7+8vVh9Wrvi8Sag+e5ubs4vb+/v1uc3zoC8DWDC9+dn5zer2/Oz+7//ceuKKBrxZ2QCJo2DJZ3CIgGCIP3DHRECG9FCGKGDFXHCEgEDEA1CDW1J5P3vG+OIBC6Bc9/jsp0k52y3X8RL1R1sK31ltH2hwOkSQwJ9y0mSmYaAqaBYA35g0hVZJpN3h4n6+JqXyYIy+1Pg7G9IXlA+1miQof89MIjFirUihSvMW6YKXF1enp/eXlxd3q9vV7fn96e/ri4/nHcs3b66XC/UKV2Z2Ju2mIvyNQfqDtHJlsQAee2aVX/hU9BnyycAITDLFiKvMr7PILPyZwC5RdlpmGxIzHfk+my53wPkfwjzzZNBvtXvIPJLM5OiLH8GkVthlJnVJSJ8k8Werfo+qx49HzvzdF//DOL8qLr2GOQbiCmNhLcCQY5+tTh+J8AUSOzIr2mImtfoq+bI+BiJHlBv1oUdJTbSGd46WFKrYiAniOhJP4VWQSyQEusDu6j6uiymEMff9lRP3K7DlzgNx69bGBIp2AL/sLgXdR/i9AGcNmisepaC6FSNhH9mRsedLCU0VqeRkJNvJtNzSwmNVUQJ/KzljMQkJ6O3Aw/pYEwg1HsVbneMwA+5M4OO/YHkXi5u008B6u1c1gY+MBtGtF7fOEMLdsDB7QOxLGEtQ7IGOlLRpXrv/0rC8ZvFh5R0BtArSpmTd9XmjEyCzJ4LdIAlFH6QL2Jel5Ntr1rQW5gG1rse8FbwodPMr//oDEyC6u9e1gg+cuHp3GIq3xYAri0m9GwbE7he39yQPwuSOftYtgTfQVsuV7ewtqvW8hqQx+J1C+Gxhj3CYwUBmLPZwna3Smi7vj2Yt+Eyc5u5/WrzcO5Gi85d5rZrz8N5myxBd1m7tXnqBekifxpegy1ycx9DrPmW+fms9paCNNcE/bEuQ1zW0S65SM5IHkbx+AqvGkdlyo7Rbj33fZx+NbrQwRI3EIy7sitz0AmK012UGNyzaqult4slQ1GbuBsFnZRYvqVjVXcMb7Q147O6u3bQv5XTBpCNDvpaQJuf9LXBFmrDKSXVJZGhT6vCGEFrTzYbkmUfyYtPxRA5A96qj6dZP2pDgQ6RMB73V8AZRRaQkQ0l+ar1GaAK2TK6lKyMqTLbkLPRwZmFF8F9vUX+VD7Be0bK8yH0xXNwoLaG9j23D0EaPcphjxyIGbiXhcbNunDI5mefyTYq9hjKpBymk5blUeLVgg3rYs0jipI/ouQxovsbkpH8Osyyr8bv+gyp1NjE+qA2dYaV+4xeAHdlDxQ5eRaWzv3aez++tr/DU8lnMq3A1PDSSGdxfQbTCvMdJo8rAxk4G0rTtCP1PAyoAWGMobUcT2Eck2RHpHPnYNSBKg+I8mF9jf0xSaJgvyK1lIE6dncArGONseX0TiI0VrfEenqKGsZpgq9hI1LgGmhJC3DLrBaj+VzKNZDu6Xmgr0a2uZyPR8OO9Q0p3D9002X7S481hnGpYk6vXk8hVqyfdWwZlyTzrZ9am5jrtawrfVrCYXip1LybRn0BDBXac7Tx+QprA1jFEfnMihi0IPKe+TSe0rvyfUp3JK9/5lvvJVtYDt76lr+aNOjsevlcdqne/ZfkW85NcdY5OXgIU9pDW0Lcbqun38P4InlMUagDKQ+volG7W9vrQy7tDmhUZzSdUDpJBQxU2aCKVH1sd4dtmJOuqwFQq7CINw6FrpE6eKw6qXK/blAzWUkF6qyQxYq1s6zJybaeVZVDf9/eWGkPq2b6z8D1uFCTcLWD8ebhA4qgpuJjklR1DGyHZbqtFZjahbgOP+kCPPbKu9WSO/fjqyIHrFK1NbRJWtbmU2WKAB3IWcCVS+Nq7Qbdt9yzw9SqYmwjyhHr2ZokW26R4HdCo8do062U+bZmZhnMt4Wz4Idq9QzLBH+l0UY7/LKjtRukug2yXznBRiVALUXawjPYhjz4RyxI9AegAAUDfICBg4QPNWIw2zmtf+U9RmDN4A0OylzI9sInzkoCDTizAB5HHwTIEqB6f40AdZ0pL4O/IduIkk0O00xKFtGWbIosT/f8DfOw0AGfBUCpyO5G7g80wkD7hiFRg6f9cUSd2Jz/t9Z20rpO1xfS0tg1jZ6rK3iqmOlpBJ9ossb0QutrrTPS52jrfh5nzAGMfeR6rGo9r8Tz0m7qruyPTVu1k7s4fQhjSMigM+nt9c6Hw672jwebIBAMps3GCJIyiI4CGsNz9JBjePzgLrSoLrNwrvpXV0B1iH37HDssBpY2kGwDOH/4pXbmdxBTqNYM7hSq3JbYH8oIH0jcQGEcwv9TTKd4IZDTqTEBfqd6lfgAR3v18GLlv726vV6TvDj4b32LprA+guwppGS7rg5XQuMGgnGvIpB8q7lGcUfy6md3NALXw9tGkyPUqnqTHmpPVGENq27BHMLSAUMev1K5WDc6jbeYonjziKLUtQw0Cl5ncr4Th0FiqFmE1tMmg0Q0cWIu2BIN6p/3KFJrE29IWWfp3zTooAM2C+gyQh9ejmiDGmuaSDOof97HLLQ2F9UCZpM0gdKRCpyJ8og+2EmziUypHkK19qwd9Cs6/KIjZNZAsOxXDJxLNVKew7iA9XfQmkSBF+tNFdLx0k0rfJsulTnMoHEM1GADcD5R6Ve05levBajlHZEj1Kq03tGplz/8+n7J1CKOIKipEc4eyJ7WLdiglUXAmcYSw9Yw7lqDctvwtAoUOG1vgnBUOGZ21qfNjOABD52NlsFAPbxIPOqhmVAumylEDtbPy37Jqbw2OqLOMz0T01j1dB9lWZTsvMfTxhoCVY5whakqlclqrVYzUs0dFjtYe9ef1x53Q+jMzb8fHySH7su1Xp+sRnLqkGqhLGqw5pXjTciq19pD2xUDLxSOGKtUOjePFsvdwXtMr7G2qOZAAkdsDTiXYw3uB7XBjO/HJenrHJQwxHoG+emLzgf95MfcnkdJQfq24fP71ZrEZONxNeuwUbRZVRynX8n28/tV9Ts89kDOyaechvyPWPdGVYJVRDOBw7WyW4gCE9xZnHMDMciMVkK9szXS8jQ/AMQvjQpU5IMsk62FZ2nS/NqjEHkjs61rCkyg6iV4cdjVXl0/bwTT1dCYQCMuwYtqV38gOfMeQLnUX/5xU0YKeDzlMmIVrc9v70ocfyrcnTvgcnEunTHHD0jsfoitks1oaqGPKd2QG/JISfaEqVPIZ2qZefmgh2uPaSSwy2ECafqW5S4JUdoWhd2FtC46cpT2ReX+yVqYQaUIbYyFWPBWRqsVp52xkArY0mhFQrc1w/LY1ubvWZpcPfyTbFyjV3oDgO0HR/g1vw5f4jTcrvMw2YZ0+z4i8da1RHTm8Fo/18ZgkDSo7TrXF61XNTLIN9eB+rCM2u5kMqLQuZ4PyqjtTicjQ6n+QW13Mhn/zF0PDQ3LqO1OJiN5eESRUdudTEa2SZ1vuRgW0lqeTkrxgCOksospg+35oO4Bn+z+b+/1M81F0TBLaIM3Q//wt/94/a5/bLp5qVV4V0Dx6r0m6I9NDjkuEjGL/GmlDoMzZ5VsYANrdpjsiHkj2MjJi3xIwI6XsYAMe6Z+79IKl7eBDCy9Sm6F2qZeBOSr18iYzQfhRtkkRkYsb0JXbAhZkfI2JgIW9iucgMF3VVTA1+IFVlaobWpkSP3oxooWc3Cjwl4TWnbq4o03Vsy8DWTgoQcurKhx37XQo/MH+oRTyg4KVPawheiuNrbDF6xMCe1Y03kbiMCncUSS/DPJw22Yh/awfHpMUMUzts6NyYAxfAnNja2e7JyVaaDl+8pcoDFuK5Ogq3MzHlMPwQAiarkPsKI0dGjbuqTIeNc02kd59OzgRy45Jma3QuTA2KVFBPz8fnVN25/bM3LJETHFd3CcP3iNIWR0/55h4i5h9MkDZyGmljHF+XV0U/Vwnl3bVH2a6rYYV2a9rWkFZJAKMnwJv4dxtK2+oDOn0TKfHhOUvz/B2c1qO5D7IG9+5iZP55Sm/fpLk4FM2v3UDoXJ+N3r3lubNMlyWmxy+6wDPq2hR3qlmh0hSjZpuY68LnY7knGHYUzBlCZ6vjzbvoqyV1HyRGhUh0N58BbJltD4JUp2TgUYyOkBSeUnsMzv6Wd+71zV+AOCfbSRE0DAG7CocK1sXWxEZTV/MbzZVuLi0sNhWYSRSUi24WEGOOXNW2vDXXKJp0/sBSTd52vnovrnMLU53GxIllUWXfIP+PQWXmk0a+uyO1KfFgyn3oe3Oa0kQokWfNBUV7kZQ9kHPMM6pY/99HDJUNiqxeXePI/iCm/rnmsMrPqjG1qTFA6OOzHJhOsn2wu7nkSX+Dj97SCNW+er9Q5MTzxM7NItGwCblL60neqiwm1XVXft+iYmIUWprRxnMJaPZ0F0ntXfLj+ByOFcECQyde49yTdPzPDI5iUVTVqY9sb6hMcQjeMpDp1zBlzJLTBb3GitSwzjTJKED7HhqaBBkqC3ZONDlVc0qPVzbKY3rQ3DsrbgcLnDIX/cGnH+/Y9bmJI8CLszJpkGfSJDL5SyNE1inq5zGiVmZ+k6AiaVGwLj82ogbtUncilgOsAdyS2mizJAwBowdAkvXO2cej2Xq8DmdwPrEgNNVPZmzhqkCGorhh7TemPgRgwAxsYMHKQcTKC/HUuzJq1I4vEljMeU8LVOC6VJCI22VrxoPszEpMCBMQskUyTBwBFfihyncXoV0jg+xtY3bo/HjeMMPJAzDOX7DM4A2hkpX5gberpCg6ZNCIZWjZ7qUyeGgZJyClgYl+BNbUI4tJTuSF7LNio6KQEYCn9w23CDU5kIFKmgZbqyEMzKTJUGDEgMwjEqMmUiNCQzL6lTgULZDQAQe34+AsnYPUISMJzROCIjf5lZmQ7azK+GZgCx87tDGWxhisf9HA7DfNCJMdq0GWaijC9178MbsajfrofCkh6hH2Bxe2l+NFDOOH/okbbNEBtlbD30wqmGw/sZU7t4OgsmxIH++BuJ5mQoRegwBwF6I882PNLVbdADf9uDWH5HrsYCG6NyLd8WSZ8SFk73uNkQltcLZgzQT9y1as37Rh3BY5FU1x4rKPpfQ+S9USyPmVCo0gHymLuDSwBMcHewJLizPC46SKB+t3EcxOOdRjXPlpRvGLD7UAMQ3Y9hcm6Xk8yybn8Nm7fihKgRheupUDXPo7BTbMIipgHjaJbTjBma34Plrz6jNUbhcTRrgMW+iiiSgdAwK3hGGMzvIfLfcQtkJgR8CggGSvZk/0CouRf4FDAM/BKYGQWfBorDqlOn0L15NrYqY0I1agSGtFmgMSNqfgySs/FQJwMb42TS+od5/mwqKJarwhjgCmbMnRkP7zKwcV0h78KbACiSwdHYNA98CjgG64GuIhkSjVF3rkoHwfPMzzdNUIQk7tNldnL69P0m3SVR3t+8t0+3RayYIt83PzTOl8nyx9d/+/HtD7166byDUaYBk8xMdSdOjzIUC2NGpbYACDgWHWOKqbcDDavaurCi5A3g4Amreg58nQUMQHGJ35qvN4CD5+s/xgI04MBqvBWm0g4Y7HgkjhnskB0w2IHYHDNKpQFYvKHoeQtItRlY1MENBgtWjR04WG2okSGkIj0Y3GCkjxmfxgQY4nDsjxmjzgYapJMntUZAMb2GQLhjn6GIIQc+eP9ZxhCZMRsbnU6Gk+/NrQIKUccZmQKLqeHAnIfvSON2jwE71kh9LDrJhk5lBRRUilcyp2OSgiK5TW+Q5jUeExqsmczoSSwzvAEzwKg+HbPaAjCg96RwwAwmqlO1HLKDCes0gR2ygwoL5VqEiZc2rsoQUk4OhmYQ/GUGOWgIFlcXDmYBKpsAQ1REiZmBcQnBcAYDx8zANCagEZ2cJqbFgGL2H62h7sxP/5pDqTfirNhEE2CIilAwMzAuIQKOYq/QFowzAYaoDNQyQxOSwiKpN8AtwEQDsHheZaq2AAeoivAyJOOTgiFpgr7MoKTEYFiaODAzLCkxIJYmNMwUTEoOiubak4tpwaDMA8jMQE3sAcKLMWWmkH06OBiXUVAGPvwZiDyzQRIMgOJdWQ/9+1SgINbjwwx8YDgUsmbGpLYADOjYbEmJgbF8xtNqC5iAtmMdjQkwRF34mxmdnNoZrA+Gk6/HN4aSL+y3is1TYLH38Z/W/1oWxnWaxpn6ArMmKxvIQcNuEgYfGXC9699LgtPLAHo5wzmyJcjdz91eAL3OU0qQBUuZHUdzdev7Fd08kSynIX45q/KbTPnI5X44iu3vAIRWmpG8jMmtouV2yGrFvI6m+CN5+T2MC1J+XuEO+2tWZjiddtUbB8qPeuC6wwEHKG0idD3y7dP1/F96cRNaRqDOzLsA1YUxJNj8vlEPoXDtkZXAbvULvzxVWU0uFrssQXsWK3FNK68YLIGLVGU1udjqt83N4mbXETuLlbI6jljEaptNWm1VXSNola2MLbgz7PnRe8Ha79N1f6I0hGo3KAmtw2OE4fZ0Y/I+hVlu8yySvTghh4mklTfpo9VFzvhEggZmRHDCcGZBhgLLf0QrMt46oiT2paA6eXV5jO3zX+OzWcksQhcmra69j9Ov5a8wJQRCRlCzcLkcNELjdBclZm8HOWvs85hCHlsrQTs03hh2DdxWuX2gaXFgoyDB0AMpA+/CEbw9KAxT06RyaJhs0720owinScoATxj76bTvdXkqas1gfy6Rr+s50CACcXTnQ91+hn/vwmPnQL2IAlxVNy62EJNTwdoks1O7V/Ms4QM5C7ASaV0+MBXA1SblMJU09cYQoDLw3SBTYeU/4haanAWqOP7u3NKpH8nL2BMeI5Oc0gJK0yC+stMNMIX5mTW1ZGoCfM3arzU7bwcB/Kd37972Hcr9PdcVQuAGnU3vqi44dTCkZvXH2vjR3NHdXXOb3tFB3oE0lqx+MTQWzh4aBZwqXpCGFyrndHS16neD0aW7PSQM6AeT15PBvQDxmLKfD9h26ow8hkWc64bwo+rV6Y/f/gxw+bU1GodppnT3oTja8SJnzeFyH2i0D+mLywcxKEBlF1VJ6BA9NqQg9JgT2JF/cY0CG8KXjUJrMJpd+32/vvNpOw2aSbSXBN9ps50CxyDKIQGes2NLfs2U2E+B7yR4/GuW+1mXEG0p6Wx6VylQAaBjVW4tgraLIjVUk2gYJqLZhHL2OUTci50C29DzIXLXfWljYn0ciys3QNSKDb1zMLge3zvQwYZfGWbjAe8XVGNMroiicYX2iZkx5vXr4xXRMADdu1dojwf6dPVbFbnjDO4TpzPYezLjEP3xilFsoFMUkOMQ3UEBn3HIUEQuv8ecPMbR7im/puk+yiwqroZatodFnqu3BVzBJXOo3Jaj5yFmx5h8Y96vYZS/T+lFU7BXZZPqTa4xCqhhcDMGEvvEdVNGzkPpFYxhOOYhLK/jVl7krt0OwPkpV26AYbj1gSi4NlNlEZsepuUUrWFT+9dwj7NmtqfKbIffwwfHXIffAGfhPMknqSH6w20e9JN9lfJpNV9q6Potx/O3p7mrZO3OonVQ/Jgx73kFwGFWI0ZNy5Jn21dR9ipKngiNcrK12cnVexg8Ds5MomdT5CHL58yPsTbvpQILgW/Z2W6Vitm0l8KBnkNaXVw8oFJvxfsTkllHbgcyx4W8DYidtbCXEVbNtyJqT//4YUcpJfZvjrjN6PYH32eEPlvceXlf/96YBummUhYD5MLS1g/gl4RypJ53hcqQQqGaFqZ7Ifo95t5m7Pemu+wG7+fMOTCfV1AH2awfF2+xfN4YH6o05YQ140bcqirT/cqlwrhePNdn6nHrXK9P/12vspdkc5rGMakKwQsqkI1ZQA7GJvfA//3d90/pnnxPiyQh9PuvKf3yfWPr1T8zzR8P4eZLuCPZ911u32+jLP+eZPvvq8jm//7OWfn9fclzX/Pclzxtsvt/Zpo/tjz3neH7kueeZPtqNc6plIcdKJZ7HL+PSLy9OpBqzjHc+RxJf6Ci9PLICVr1GXT17L28bAfXhk7TJCffhm/+PZqLRcTlObnInz6nW7Iu1yjIbvgRmKO5WYZcvKOvQxruZ9pw6FAX7/QbkhfUfTQ0pdM71MU7nVvEnLPLjW8GmaHD27We+bYoLOEiXZzS6F/VcxQ3RTzfCi1SLs7Vp+n+kGZR3gSQP0Yjaz/Hcraac4HuLuM6NvmvYbKNZ+tqkXGJbs5pGn8mWRbuyGy7RCXm8pxdZHm6n3v7IUMuztFnF+vT1c3ZLP3bsy3PrWEeVhEewtbzrNwrMS7XzeskPGRP6TzXmFSUy3N1HUN/TWgWZTlJ8nLeFZfhhWdswOKs/D6GvMRCIJSS7WkYxw/h5ssNydL4mdCrQ7VRN9dSGGFeXDGcU5rSOQ+3BcBlOni2Q2yWbnGu/UDDw9Nvn07TZBt5bSxjelgBuVRHV9ukc3ZyC7hcB8f5TJthkXCpLl5vwjicb3usolycq2e+1rHsVY6e/pfyiuiZe7hlXLCb6+Ag2v/F1cM/xx6kPr7j9dRLL4oqjH8J3m9Bl+7wec7FFZCLd3R1sDlaRNPCsC7P7cmWfCPZbAeBPN8C3ZsTmoTxevNE9vNcTpUQl+vk4iHb0KhagGw2SuftcSXv4tz/kcw3kqxnW5xbP0X7KL+N9oTehBvSLK/XA6l5jkJGgBdXAJ/DJNyR7cxn8CrKBbo63zyVJ2krhJn6WUBcnpObO2OuaLODOk8/KygX6+obEm6vkvhlxnNHLerynF6GAayyLN1E4Wy3wBSQC3V0e2R5xm5mEBfuZO4Wvfk62vhevtk7exXH6deFeLxl/Qu4/ZqmB0LzeZ52HMT9azifv99m9s5vcRfu/JmODCXGhbq5OU04Zy8ziMt18myP34mEy3TxfEPOOLwFO3e2y9gS4oKdPONmeOFrH7PdL2fpluvaX8Jsxq0DQ7hUF2d5mCguS5+hqyXSZbqce6Rzdm42fvNzjq4t68Z8XdvQLdO19d1ps17gZxGX6eRrSrbRJpzz8j6LuHAnr3Y7SnZhTs6/5SSZ9RLcIPPCi2FB3v/rOP2yrESzbs1VqAt3env/6AKczqAuz+lFXoYMVYLm6WoecHEOvgz3JDv04YbzrNAqyuW5Ok0WsFKqolysq0uCU8UboXN0uMy6RLdfkmdCZ7ssIgAuzsFXD9XrEL8VhL7M+W4bNefy3H2YbTPdoS3QqWV9COP4ZRnnA4Z5F+f+63AXJdUk7CI5FPPc7pIZl+dm/nK1ebpZYly6m+c+1hvEXbrzZ33n4V/oskNmCfNAhbfcZuVyJedy3T3vebsSc7nO/kDT4jDPyY3MuFw3tyfps49knkcGdKTLdfmMb3ySGZfr5qz6Ouft5o5xgW5ONyTLynX5mbqY5Vuie7fFhtAFRJJoURfr9EWskGhZF+v2dUrzZVR1kXRxLq/X5ZN5epmBW5xjb8imoFn0TBbQcOtZ/ypuX0ZQoAX8X6Vgllgef8FimHXg4DjzX6UYZh1KOM68wGKIqyo026VcAXCxDs6eovkGUCggF+fo+mWHWbq3Q1ugU2d70/BybxiuyecbCsHzLdm989wzEwAX6uAuDH3GPmYZl+7mOddlDnKpjm5Cz+fs5h5x4U6edWVmGJfnZpJXZ7DmHZ+jolyeq1Oan0WUbGa7bCQSLtLF8944WPz2Fydg5kGUetZlu33GUVBqzmW7e8bRUGrO5bl7IW8n/UXeTFq/JJvTNHmMo7m2IjzgIh1cPeg+W++2dMt07cyHHSLiAp2c5WR/mu4PaVLCztPLIuPi3CzcWvA5nOcgQ4m5OGffZYTOeHuKw1ucc39/t4CgPQXk8hxdPmg4czeLiItz8h9R/pQWeXXbyTxXnkXCxbn4/j7qboL4hYbJ9v5+lo5Wcy7Q3fv25PZsHc0TLs7FUdY+rEe25ec5Sy8rIBfo6POk2M97w0pmXKCbK/y5P2mpxFygsz/Q8PD026c69G/G9VrFuUB39/dQzXgzRYm5QGcv5DVRDejiHV6tkWVRTuZ6T8UI8OILYCl+/4u4+5pG+5C+LMXrHO5SnT/34fjyr2WOsmXcga3mXKC7+auqZuprCXLJjr56+Ofc3VwjLtDJcz9EJBIu28Xl2trMH9ge5l2g+29DuiN5ebRk/mtWOtbFuT2bfzgOj/jq9RLc/ObdT52LV1kVDRfHwsmBqLzU8bE8RHVsNwuEldsX4eUffvy5c3OerigNXxbi3qDHnaebRWq2Del8Dp55kUfxf383m2aoxLkH+RyGHo5ZfT5fX69Oz9cz1B1wdDOrqk1t6V37+k3fHpyV2VOyPQ3j+CHcfJHe+GrEHNnJOsyZNsKSy9+9ftO5fKN4gWABXg42c36KoPa4VoGuO9zEJFxYKTTEfw3/0/rfF1UCPfNfowyyPKT5okqgJV6s/1U98DVN91E210+hofv//S22cxfVzbZ1lqnZP7zpx+yHxVTpoEddtMcp4cJ8ZuzwjnRp/v7p3bu3PzEhxzm7RTl7h590wIvw+0lTTbTVfc7DR8H9yxg1/pUqfOXxpsa/erMU15+0VaUvgrf9aOZsdbta317dnHdF8BzSqLw26OiF0JItZZDIevX8/eru0+399c3F59XNP+4/nv/j/vfVp7vz+/X59epmdXt1Mz9/jzMvsCQuzmbn6IuzRfrx/PL24v3F+U1VMeZbjXWgC/R52fqtPsyvZW64lujRf1yezs+d/7g8XaAv79bn8/v6S6gF+pKUF8s0dyNls3MqR7cU7w5OM+br2WDmE2q+pmrm0VsSk5z88nL9pQyRYw+mXFOSsXfjzL4gTky0LKCo2oUaTYlF2/P9IX9Z5zRKdgsqHZF7+SWRPmSEPpOystWnFz9FOaFhvKBCGZCw/PL5s3ws8K/RtBlIWWR5/dSXVljFsT4T2ocoPhZJFVt37HLp0RYzpBL8+j6Kcya0a1aOrdmW6tl1yrxyPSu/lmQL9Oq2uqCdbKtrts7/LMI4yufXJCgpF+htkpUPD0TZU/vk2SrZfiQv2ewcrgNdos+/PYVFlkfP5PSJbL7Mz9U83yI9nNNwk38kLxeP59+iLJ9hfZYQl+vn/oR/dSS6ev1org5Xsf4VPF91RAvwes35V/B4tkq2S/F6z7pcz/dnSrP3NN2v6WaufpdJF+j1Hckvki35Njsnt2AL9mlZK1SHuOfmYoFzwR6f5ZyGhVumby/Tr3P06mX6dZn+XJe/rv53hl7t4Jbp29toXy4i7A/VwH+WrYGAuBg/D23gz9y9geLvZ76xryBWVG/NptiGkvJy7FW+/AI6YbUsuKhGtjGLw/YvU2Kslr9UiTFdTZR8JvuUvlyHuyiZ5/heRlxMV8P6eUu+lZPscpYyy/G9RLhEL2erP9Zn7Fs8s/FuS7Zkr5YNy3w9W9It1bvn+zCK5+naCm2pfr24Xm235WVz8/Rth7dU//59fXU5T9eWZEv16vVTmsy0oa3QlurX+fZfS+67uunGfF1b4S3Vv3c3n+bp2bubT4v06cX2c5iEO7KdoVs7toV69upQ+jGM45c5+1iiXKS3q8vCTxXXRs3H1SLiIv3cPqExb1crKJfp7SKOr+hdsiWPUTLL9kMgXKSXr2n0HOakrDEz9DBDt0jvrsPHkEbl0acwDx+iMtx+pp7WkC7Q61/IS1adbZidlzuyBXp1T+iOXIf55mmGkaMs3BJ9myZpnibR5i6Otu/Dssee39khFeQCfX2g6YZkGXsadX71WQW5QF9TsouynNBuRFqiz87ZSsoFejtLaV7135S8b1w7O18rGBfj6SWEi+n8G6j+YeYBYypkVR1Xfgw5DZ8JzQj/tN5ciomjW8wH0Hv3OYyjMiSqe4Bxdh6WCP8KXq7CuObv6gpzmf4uyEynjgzbUjzbPxmxSsL4JY822YoflZCk2Js7VrAC/YDX675zv9iSJI8eX+4y5vYRf9hAsOtXgKJTlUpuyCalW0gNnUUseqbaHCK/CtOmR6wqZ8zowocuOAN4X7d3mJL1A8lhWGtDuKw0PDz9BuTb3hgq868kdP7UeODGEipttVwGg9uawuVNM6Dq21jCpS2gYAscVqaZLfInv3a2M4DY0J6myWNE9zckI/l1mGVfPfo1njfQmPb0ee/VIT3raJdcADk+EG1OpuDuAK+gsjmJgnI41j2zDitENI2r56y6StZn1Cqo4AxOxc69eA+rgjONq+c92RJanhoD/cJlq9gq8s3TGXmONmClIZicgP/z+9U1bVNCqhANT6AF5QNRW0ZWk5a3zdT1AEoGbxKX/4bsyf6BUFAFklFsDRlJtnVne8qGpfiqkMzi64AeFE47GlyTZMt9gL8TGj2Wq6lRmgAWjUk+2Erzu8Pt1e01mKLeHjI5ZEc+Uf9dZ1Nev31D6stfQfkFw/hartyn1QoBVxBzawNqsOnRRPOiu+q+A4xhk9ryFGqAuwfJ6BQaUAZ/GtO4eqpu56VsttckL6A+D9kqgop+4ew0zMmODdWzo2+TQy+a/fj6bz++/aHf1lxdX0AQBrUdP492LhvAbXeGYKAZa/joRe66oi5Q14bQgc/CPKzuRwOhZq2ho38gKQh0bQcd9yJZHQ71iyLsA0g+5JLJCUSUz+zU8RBAEjiD6ALqEBU4ft4ePn7xsC4eYMhbUxNAZ0+Xad7NMoHwJaPoQsqmLdzBNJW9LXDsn+XW3Wt3T7CCuMXnt+ev4gTb+RddqZ7qFQ/ZhkYPrlVEqYA1iqWhrzLvabgnZSyYo4QuPWI1WSW7Ig5dt7h4wqA35ufc3nFDzOv1DSh2bQ+V/PzbwXWgJTA3llBpL8m3/O+ufbvA29magBisYrDmcLmLb65LcSJybQmdFs7HnTFU5hsSOi/XCsStKXzey7B8gQmQujOIzw5WQRhrqNTr8hVUuo625C75kqRfXYd4Ar7KLK6OZxI7R96I8K2tCYjBKgxrDpX794JAdY+tKXxeMDcz1lCp/yAPoB8kZw+e/Gd2Uc1rrtilx424Jzn5QNLH8qeulZknDWSjfm7uHamLxG/zguHnDaKyf4qyHNj7oklU/nX4DF17RJO4/CSkm6dfXk7TlG7Le9DBVCgNT6LlOg435MJ1b1ajozc6iYZb4jwh0ghoLE5A/z6l62K3I5nP0rhShWQZXk3fffE7Il49mcrUvE8caolhjx0qfayec5fr8y/1Twmz0wOubyCjqbSuX5JNA+D6+ej1CcZRNfUfE7O35fUlSXZwDwk9E+raDKtJg96on+dlhw42BbAiGKvTqCg/wwN1PnGqk8GYxdPBfATCPqPfl6A0Nu9eZYAZtl/ReFpTuaI8CuPoX0RM5dr4DsoczA1ZdV8Vmy1jrxrI2UBthw+u7ZeMGDTW/DzNu0+9spB+TeI03JYbpXD0glV0FR9Ifk3TA6F55DwWUcgQzU6h4466BgOoBdT20MnL5Qw47sYaOvUN2afOOzcK7s4eOvndAf6r5WyiK2BDdPfptoiJOTxUbK4ucEGMxnXjgwrD1VCygbdugAARt5peRYqxdQIEC67VtbapHx9AHK1usKeMnHWChA2ZHZj5iEGyjrRw0bG6JZrEs1o2FhDYVLG6ToiAQbq6u164sFw3SJB4XB2fJgLXkRQ29FazoCYE2zqhAkXZmkZ7ujFCxXeylG9+5pujJIxX1xf89ctNZhbrk7wh6Onju9dvOuiN4oEVEN6At+y7lCq4likB9ins03DzRIB1tDbRFLz54ce+Eu1IXkVS/xlfHcr7R6I0uWWvP4bRpM9lMpWfq0+4fPwYXhtneyJFtTuhtXRW8VS8Ywb3f6xXh0O5CXJDwrh8xe+aps/RllnTjEpLj+HGQpreKnTDxpVIJvUa8OxBBnZmYMD3toVVP7WW4ehujIMvabLNeLjdRnn1Wlx5PSOhE0gJVHlilWhbQDr5h+gjeZlCc5vR0YRWqZqu6DzZHtIoyScRrsn4WI4o8qdyh2cjd/iITlBleiQH/FkQOkWNb/M5kszyARRmVoins8voSEKfQxqFDzGZouVm85pOLjfWiKMHGtKX6irK3XR9libb6Zww+FLLtLpPVH/56jXU0yvjZMZQuvFctXD2OTx4ObA1gjs+k7YqvFGDEOz6kN6R+vEVJHhlDRuZ3XYBYIa49WQUuksMSM7aRMbfMRs1/uA7gNtPRpGjJDwc9tIOjj+9ZBhdiGJrB0IG4C0ooyIOin0Vfw0HwJtQxiUUDxmz4QJA3xpEB8+eEtVODIQEyTSymEzYovHXkAHdiqJCZwc1p0WWp/Xd7DuS5GckD6M4+yXMvMToraIOex6lKzvg2QM2E88ba/S+VxdWfYXLJ4DlQ94S7li0yJ+4h75hcAPGrudBGt6rAzJu0y/Eq6HS6WgNTyHEeyVHJQJm2cZMQNF+MOvi8TH6Bi1FNj+FKJD1GJUcuMUXrZA3P/ztP16/67esV5SGL/W+Zcoss5TTfIv+kDMC3UINrot4gwZQaxq8IzVVZ5MmeRglgI5u+E8Yy5BC2iUfjZ4kzU/RJPHGcVVJ30WWpZuofLKkvCzcVRtnZM7fhQwK9l3wjtT12EjubquSZB9S1Mg3skmThGykvSgwbZL9CbXlYfl2CRd4AqaLs30UTc5tmokogDZtRJXYpv2SpjEJE9/eXjQDH3jCY5+mSR1NcE3TbbFh4mfsuCU7M26Q1axQbbLs0QHvKye+rrKUxrAr0Bkhhz9olJdDa0dw1gQ27nlS7Ku3yD26C87GjOu5zAlVx3kvapr68rwVNPlJYxQQf7xpr15Yj3LvmZxkZ851R8kKVn8kj+rq0J8Y/CeVWWAJY5M5lJI48T9pY6JE/CKqj6cdIbF7FnbSRDMz/h6UqFCfg+ROzMnOkBLo6Y6U12jN6tbWmmB/R5GiGexhxUWyJd/E7Qg7ZNbEjD8ECRPqI+BcqFvxTqI/C2jyk84qnIDxiv6RvGRXj+viQKjHxyxYwa7mdXbevFOgfkrTL8wjYnaYdeIZf4UMINT31zhM8+X9AAZ68gMQ6siA6zUc8Ws0YrHWfg4PZYrbtOq5kq1rZyLZmXFdVrNCVWvZo5r68lCvvGGIOOltA4sZ+QaafP/rf2Gqur+fXFdSlC9io4jqTB9DEVJB1caPUE5ZTtnoTkhNneljKEIqp9r4NOUk9TzplsTda6+n6f6QZlFO2ON9llK1BufcFw1Dg3VKemdrI3Sl69swlJ0c4O5zG8hRqo2TFyEjtKF55T/KG1XMulcXulkumUxWyJ32ky7f6Vww1iW6b3x7+CGB2BIH9AL+l4Dcotl2PVA9zpI6Gtz+ZbpuZbLeZNpOZPq+41hdxtF6iqN2EEfqF47aHUzQCzg0/tc02of0BaoP6M0tpisQkHF6BMbN03QMalV4/QOT33TdxKhIrN5CUjttp2GuG6fvGJI/VRdi4QOEnsTDA9i1H7X1Gu9eLqulT9/ILcEK9t7l1T7K643kML4hcfXarSu60ha6gINH7EadeBpE123NJvU0kK47mU3qaSCZ2nX16AXMWcKGv442X6A+NaUtbAHrTRiHFKaZU9rCF/BE9uG5e7Bwb2DGg3wBEmpYzzgPfoSjZoYZvzC2h8cnz2FcOH+RGgWdTTwN+lrurwX/k6z2Ib1bE94KNvRtd/jLPzBZaWvGrYueF6qhUXsXM055VBN0sLI6Q+QjmuMqAU9q+il0bQdsJPo3yoYapdbj5UB8irFJjt3Iiaf7yrOpp2FOdil1XTEdMgkt5y0bMd9d9N6Bd1d0uFxGj8havxYT5mQVxx6wrBlo2v6DbY4+1GN5rv0dfotESueAyPZu7PWE+d/XHMljkdT3whmzdDZcHCe7RMf5exhH26rJeN8g+jHL9qD5+6t9V809UOuclp/vC+fxocfvVAn9Cp996uz8/eru060fSNBbsfGb0iNKys93n24v7ld3t796gnKGAFl/Nvi+h4ilVK9c1oXUzlv9sT4Lcz+OoDcC9WXIhOVlyCCUjSEc0vN9GJm9cTqE2VrBYby4Xm23lDBPR7lyspZwWP++vrr0xmyM4BBeP7Fv7rkitlZwGEG+HdTvpjSe5eH+AILZWsJhvbv55E1Z20Dg+0U4CeME+IvTkRdDwvdxGpo9p6zla00g0F2c+aFV6TG4Ek+fXVi/PGNItubPiTjBrV0OhJiNrD9F+ygvGwV6E27IDcnS+Jlsf+dXpoeghwyADcM+XXy+MBtnj+IErS0bXw56SUl8e/H5/AaIuLWFQNxXBD4OoRyyr+I4/WokQZMWrPhP79a3V5+9UYLOjo0ndY5Rkn64ubq7XvuTdnbQSK/+uDSsoIOgrRk0zuubi99Xt+f+pL0hPNa7Xz5dnAKgtnZgSYc+dumNSTt4j8ckNQPJ64v7j+f/gMAJelt+/lS8BckO3O4uT28vDOdjY8iMMUzmi5Vrq8rj1nYwSa8uzlw/LB61MYTJerc+v7m/vrr65NoR8MScOXBuoVGQbycaRfe5iUjT39+cWzX5PEHQJbd2Vq9es+D76dyDq0sOzXVzvjKbl6momsTQTHfXZz5l2CUH4eor+eXq8/n6enV6bvZt9j+H2zVY3a7Wt1c3Zr4RAAI2tY1rGN3qaert1c3qgxtTnxaU6B+XZi2+hFMnhGQpm2AnliahN0tfga8Oxhsj9U8Bt7uMWz8mZ7dWr1GpHrRcrs9vzFYDWI4uGRSHRQvHcji1bBJHXyGuabohWcZFeAyxML8Hqxr7IjfdJROzD7q0Nv5gRSuJ5IfnraBcn5Qf53pJNo5IdUp/mr7q/Fa+6HNluD/T/his0ry/uFmbfcZc1kGbzsYTnVL18uLKCaRJ5snRF8c6pflZRMnGePzNpYCbe69Pzy/PLi4/ODIErAEb7/AO0HRCvnCcBRC6N0ygSvmVnqZxLBRik48u5oJP5VeQ71730V2bNMlyWmzylHqgBLwZq9APwR9s+B/zdPd/heXvLvI6nvp/+bDec6Zs75sy5M3T6l0gH87eBAyfVAsvcrK3ASx/79mEMAhnYR6uy38/LU0ZcvCJjvkZKEg8vgLBGfrQ8sdoVzAvNTsxdjZACAcj+T343J6EF0z2ajUu3ZKY5D68nYE5OrOGa09fv/HzZaNU48j0ISP02Qe2tzBHVzZ0rS9/8vNlq3XYmb9xj3Q6M//m8CznxG6tELtbAmyviFA7t5at8fCfnq51eep0Kp/+yTnzrZ8z/xzyYhZ6ffFN8jn6sETrXOj5sVcydR4k5UuUj3G0yX8Nk21MfMYfSmOz9K4E2vn6Z09fyy7Qe/6c0pSCuF2wNFOfs5TdoMD2RnrZ4Zx47dXBIc196Jv0s/Rsydb503OUVQvVzCo3MQm9JihNehAvcmQ7kn+uTlhxq8z2hKIdeNKnqqKuttty7bOquh64SmNzrKMy6In8V69ed7X4R79abJSdroSyPD14fY6pbey6fvr9Roh+6I4xnlISmq8WKNMec/lCD+SxiqH2kK4tK/+ZvE/p9RcAZs4YNjNN9+x+gC91Z24C7vdxmDdv3rHXGwJIkCyjqdmRvPspgATRHBp3lFUnYruf+6MrLKLR5zRMsseU7ptjA++jOCf0Mt2S27Q/3A3xWVjkBKlWauvL7Ryf9l6V/uhtvhbKt91Xemu0PTr/FmU5e/zFT4LKLqoS57ZIL8K7PbLh92mT9BIg2qURFezX2v2svREjY+9QHlaiTHvMr1QP5PGFqj004k3T+twnmIXfvDfjGAcwX81Pb17/2K9nrD59cuSqU/rzvGNPEKY03JHVNjzkzEpWVJb1Y7jRovHpPLd2B3bVXEDcNtYETxhOpz343HYpBXvSzhrXRD+E+eZpza60O/GyZkBcOrAy5QTosjhlBsdv9jjBuez3WMCxIXbufFfWVyCYIWbelc9hp8cQjeR3B0+2xkQPl2fbV1H2KkqeCI1ysvWC5e8wW8Vx9S643f2SUiq/tloBZc2DhVL/9jRNcvItN4Phknhe3OV6LaUCwu32ScEBmg5WdYGcG94Jb8oddfyaQfGWJzNyIdGxyleF4VjCohvMPXYd0tDwDl110pl4j4GB8WHjGM3Xsi/nk8YXXI7DnrAG/bFHLiFNpQOXnvSsQXT6rLq5GQq9s4bBPfb13ZC8oG6lUCcF7iqZ47rmbUKX4ohNAc/g3gL06jWVr722Unl/gRPlicakMzrgE0120K7vMano1V4Zrropjf5VtUI3RWyuj0t1xCosc7hXY94TmqocUrKuj5xVj2xk18VDHG38eU+0hr1kjPQKYZE/WQ8DBzTw5jDJdzQtDqdxGJm92DHMzRlDpzbvJEaIbXcl3GirGS8YcmsNkzvakiSP8heo6iHaw2RPvyaEQrmcM4ZJfbDt1PXMB/fOfIRY7P26B6IvqvJ9jAz5FelgR5S6SORhKD6O9zhdsorCrUPWRw8rvJXTNP5MsizcEePHPuRkx/OZCsTZbaIzdHtDYW42HRzmO2ns+EFCvQ85wgriUIOGpcjydG/bqgiJYJuUPrKyOolnRCSkOdLnoaJw+zZEH2gqW/czX7wT1pIHKODU1IjWdUaqxma8MDAJ0b4ZAafmRJMPpESD6ZbdUpGDRDaDCbVtHAYtlurkLCbUR1SHlADFEYijS6bKJmpAOFH+x58H1fEO1C5ExvG6vEKh3Gx7DmMMzYo8Jqym+/DbDdmkdJvdpmv2CiNAhYo8JlSYqaOsAPVJOUyp7iXZnH87lI+RlKuAKPKkLCbWdx3uyDr6F0qLI9ifuHMHH8aojAINzKYZpHDWkMmhhyCCPWR60AEGawyeG2X4wCO3X7T7AUjuIz7K4EA0iFyBwLt+0SAyP3DHzpvDZgfutgV7E9CDdcqsMXhu7cLWOgkP2VNqFqsopTr24hbH4bm81XlCtz2WlR8zMdtgGiQ8YUx5oY5t6OXEMNxuBLexA8wq1UnyGBZxfk1oFmU5SfLqINVnkodnpovuwyaOVVvHoRyr7rDDBrd5jRfYzelPOMtwQkZqOSXh9iqJX6oNW8Pqbq5Jso6pS/FFEErJ9jSM44dw86V55ope1bEuplqHbBzvmxilcv4oBn2mmwQ1P4emP2EMA8qAnFw4iHHe6zBS1fsMbM5nodFnRXmWhaZaTba+Vs+s4Ezmi/vwm91U0UIqbxu16MS2Wnkb25Au7jqz47TCEoJbk6u5QU3pIePlve7XsDv6zaUcp2myjYxPJYiJUJDMo9fYBEeqORKCW83hpCNindzfR8mWfHPttzi7vEmTgo1NF2a4FLC1zDKuBiuiprf7Cw0Ts/oupMECqs+o0v4vrh7+STZmKyOjVlChq2dvXTirhKhoZpMUMREu0vuUXiSRU8G2aYEBy4aEZMZ9I/N7aJD6NO3a/Ngbn+RI3ZECwq1DEhyg3THbkh1Jfi/n9YZDCD3hiWTNHXhkqaT8T3YoLxjwZeYsofE+wzj4GcWz2m+HOY7UxL/aCZDTH/ur0hB5fmIKP+l3qC1G64bYJ6xVIAFje9Ux2ZeWIVX0NqfRUB0eB1XQWpyGPz1YdLNmAjqT0ygob6PZniNUJcEwmhqx5fxIzKN+mt8eqUVkc3dr/Vqt2pauOST1kbyYddIKpBPRigPg6Mm1aB/SF/aiQltIzgQIoVivPodJuCNby5mvlAp2iP25vMgsfIirQzFmRcwnAcYheVj+7oo2m1VmRGIqHKgb+609dVJgvOrd+SxLN5H5zSZiIgykPKfRQ5GbtWV8kiM1qAoIt3ZVcID+wO2BUO7ucDe6E86SOyjUCb4BUm9nGjS03O/LM8UO0GWyWdTCDgSiJlbOwKiNIiVUjazswm1UGkO7Ls1r6VmH6EJHihja931IfWscWgxOkyFJAqn5Lk3Hda3UbGCpTz6bpoQDgmpSOifpTiPEcfoVEPikNQiDDXtLjaEE5+tq/HS4NjB6Df6tiiG//Y0whjJ8roZxVtNdHAhaIpzVaXTY3XVjqsP10htnHVa33xiqcLwGx0bDcA/mUrdQpqfNCTgbnjYJEo7xTXlciqP24yyDT9fdqgfqrRVYHh10aw2hT1aBenbDFrSWdR/mtjh7StumXI/q3nyb8bqOB1TE/kMAM2anXl8F7NnRG9K69O1KWr/u3IzWoQdXsXp12lpSZT9k6dpjhlgKAB7djxheyfc9LuvYcoAlb8YNceyEvcMYSwHKWkHhjLIVpaHF+oUM2ZvAJLws4rjcVgIgZUwhEbcbOn6wjBU0zj+LiBoeEx3g7KygcFb/8SBs0qOwebaQziuXGjZ9P2IctMAnOXp/4hnCIDjAO05ID+YUGiSYM4hmOlW81ucDfOr3FOkAu74u2vaJGJN846Dq7tdIEL+EmcU30aZAgcnyMNlIz+8aMHEJEdHagAl7tjblMdszJYtHsyZ5RdNu3NePHlr08kOkJ4w5b+SRFu8+DrP89ClMdmS7svpch/hFo+gqbELDDfjdQsQNyZXfn3GAX/frY35nXf4e31aleMQrpRPNqcpfH9MrXf4eXqkUa2r5QxHFVssrItBJb8EJbGz954vleorE11vA4LN4vUuN5/Rg1wCdss7Lr5ePgnZJEAYGne3VbkfJLszJ+becJFb1UG/jmJ/rCJXHRzzgM1Nvezh5Vr4Fd6m1Jy/LArAaG0hJZ+FJDgbCk51jTD3ZvpLrAN8mnYUnORgIT3aOGfBkkZcLop/Nl0GYBLDN+mV7WLO91MSIR0p1pKJUc7iVouyJAa+licNSn5TqWF5Tcjh6TfKEblW5+aE/4Qljygt1fAzWJil/bbsSqEl75DJX0fiVvOibQW9ekmdCjae3bALYZu/qISP0mfxWEPpic2OeIh0wWGU0jOMXtxNqA+lhQa/DXZRUQ4aL5FCYLRYJaY70Kago3D4B0Qeapi+O9oaL3wNoJ60VD8CxKbvpdQRDmI0RPMospf7ObIyAUkpfCH+1pxkznwb4k+WN23Zo+uTH+pCHgRy/ab2TWM/++DNzLvvwcvUISHzSWYQBt66qVvcqz+tCZfiblHGvUEa9O3myS5PRb0t2viaZWSpqr/43UySnA26M2wzs5pByMiSsD+ZR0kKaY335CgrHL17wgS7m0PCKwgGwk9qGBxzgcdwRTtdDuGrgSrl2qcBwgDcAXNuYv2OT7vUD63uXNY5N9M9UmA70Bnitw5aO49Zu0PPqHYxXBxc2+rVf81tBhTTHbjQZCs9Gs/GBpgo+Gm8KD6CdPDpsDIv2DI6G2DbwCtLeDjKr8SxuDNY+MnGUVvu9ZNVHZsddpzn298JQeH4vjQ+0x2jan/nynXCmPFChQrSHWP0dalIL022xIdQh0EKd9Gh1UgvjWjWVjhn3pNOasDrtkX0JuEas8Y3/WvE4qtuascYu1NqxAbbLGrITtflasgG1y5qyKbXui1unNHdruriUR/7aZBa/b433it6LN2RT0Cx6Jg5dgCYt7GqMJhO36DtTY0eqDFZ4bvXD2J3WJQJREPP0P57b3b1tFcU3YmNe3gaI6xvzmbW3rSL9RmzMy9sAsX9jPhvydlwViPHSP5vgaH4UEFydxkgfuXuAbP+IDO8M1dGdSLZcYUeGk9Wy1KXp8WktLmsGibQ6i+pPyppBIqXen0m/AclZQuLNQ7ojub9rOTvorGarSwawtmtLw7S6NjN7isyfahATHbnt5DD82s/ODch4vk/kSbZ5s9pQivopK3j8k94yoAyLhgxDk2gfVZn4Ya43YRyajRDrn8LOky3eJIN4i0ydvXmUH/P7IzVGIoFbO8Tq1l9faBFHpME6Ya04AsJeIKUFdb1Bypz00d+dj7i+NL5ASMfncIOQOd0hLmhoPvbVMXJmcEizl2RjfAeXjpMxAkY50P5ZV0zg8xO15e4slwVNlwYVyMY/fSIUJJsDWXySo3ZaHIRPv9U5AKqhVZH5tLWdPdDmVknp3OLqGYdrnYtfoT8Dklenau0CcKVUwFDWG3qAG3mDMJYB1Jq0iIAWwXeKdMdq0zQkjg2bwh/egXgjiE7BeCqb41v1ZxElG+ONnzFu0SI4/2BttQh9U6QD/owcnyUGf45YAntJNqdp8hhHph82k+BYX7SI4Pgps9L1k1ayP+SGfamG64Sx4go48u3G6SaMLQabOlLODhKr062fWmLPOz8tuLsr6P2AWTNIpJTs09zi8hMtK28IjlbVCp1TalEXql8fsf3p83dvfGrFmjLchIXhNapKnJM2vRPU2Evq5W8uksfUg4+1gcZoPufQMzpsZpoyOrTaMqRXk21CubcZrygRewsofJ4OdLnm2pTNvs+Q+Xw6DBPGA003JDMf4siEvQUMPko26TOhL+tityOZpzOVxnCo7ftgFa5PB6zhVPa+lmsPXBLoKUmWk/1puj+kSWnBjIdLc7SBgUzhOjzgfaC5GCMj+Z3hDFePdtJa8QAcr2TCJVafQzNuORlsZbvLCLXY2+5/fqQqJgC41S5GtG70lBR7sx5BDXTSGnDDGmlbv5heb6aBa9KjsFWjidv0kMbpLtqE8RXdEholOx/eAZt4Grw83FlA4Uustjg0iKwRFErKhPx4kYqGoGjFtvD3dw6ndMREsM3z72FcEEsgLgksThncnBZ5dWWiWZFyKfxg3vYcZxfr09XNWUfwHNKo3DLTUTS/h8s/zMN19c/GBG0KMIb7+/7Wpl/KGwDu741pFGkBufbtBUpWREwqMJYij5hGcoyh+jXiuMY8f7dhTa1W0xrfrc9v3ElOmuTWOKMv1mkvCrRnVBoDIIYtVAWma9Qzy6tSr3V6G+8A5Xe1vTm6XkHqejuS4H2VD3SnImhYdofC6oi9HNHO/BzOEbpemMQ5mtescfBzGEfbMFeMnOwlqGzNz9ESZevs//BxtqydEcAeo4hyYRHhsUiqqAedgj6JZ4fLvSurPtE3yiIkBCQ6T4q9HP01DsSlA+SpbK4Ujy6PI4lJAak+0PDw9Nun+tyGpaektIBc/c3mQuTXOJaYFJCqavlW7TGA8glyCy45MRpZtTiaRTn5SF6cCVkjaKQ+gJhc1zTah/TFB683AU3p0qyBPk6iGtC6QEE/msJy8Xc9WkDxCTGIrh7+6cJz9fBPQBrVubZxGLjTbRqWchSwks9rWZHxNgA5b7uj0G4duTI9GF+m3kwdw+KTvXrtuW7JDE1fhYfDqzoCg92G2KfbQhxgR8l9eDjcdz82hlBm/T9uyCOhJNmQf6tOzP5Pu7zvu+T3VXKLVTFJNIP3rp90XCSrw6GJqv0l3fadTJTkhD6Wx4JsEUWT7swnsvt0kWJpkrP75MD0QW8fQoWUiTYcPX9hDuZBi2qtY0vS1bfTNMnDKGHus4JR2NmdouZhFBEvAK+c+gIYL6xfSbgFL6na6HIbCIYfs4lofD9hDWSFoVU/SZam7kXJ7vwZvPBaq1PUPsW5f3gNgeW1AHal1RWCNkI2p9EGVV+fxdTiuMOvCMqMD8Z6y9J/Ys1q1UsZLcFfrAwlWMphik8vFd5dxBUT9NkhFKZcRBrRRfmD7VSau9yOLfmapo8RdF84rLvPcmLxYlgO+9vxt0ZNXCAbRPpeJSn8ELU6P/VrmGzjwZtv7cfYrGEkaZYxrgAabMJG7KcLXFmYleBF+RGG1cIPP4rzli9anr56RsluTehztCEwn9yA5YnEXSUa54J8gGPWF/MVGgkB/hRHi2Z8Em/dM7KJQdYeQSblEpXf5JvzkC5eyn40JVNGjoMkE8A4fEkdxuwyZGcICXRP8nDLPvvqjsqYgoPVro4Xec5sZrhQ1ybgv6OQv67EEy0Ize8qGXRq4zHQZSsds8cilTlyHuWAyK01VOQSFQq4tgWNO7Q74Ns5NDbgv7gHl60yHVnQWPP0bOuwgc7WbbdFy82axIV/ctt90JJ39nCxo73voIujbs3hQh/qcCGA/o6DF83iisjIJk22CDJkw+BCdC3ihXdtqizAt4YZ3QBhBbUpT5fWjhp36Np7CFJZQOhews2XHU2LZHuaxqlfu9cjBrJZT0fXDtT2keUR3ZtwGxX2y+86BbxNTPwNpOc3E/g7J9/yVRzt/Bo7Bpo1CAzOfpGXabnMLK9tuG1CDVqD/1LFi4HgMAObG4Mk5w87VVeD2HUxQCXuq2CmMsRlzLMoO4T55qlaHxt7JlaSJKeGibsb2LKxZgTcTDVcyF+NXYo62K7UqdEhP/HLYJaQdWp0yFuppbbk7AygoHYLzXWZ3YZfyOhTyxKu1shkyFdFDsBcW8GFPouyfZRlZOvuZd7ERLgeHhZsoAMf4vDF07+MiYlw/fzL2sAFviEbEj37uJezMA2sh3N5Eyi4a5IL2+3WztWYAMFlDntsYhLSxjFjx2QkRi4xNNmWHcbZknGJockiZvBmC8amBedKojwK4+hfhA9FsGbU2IHmTTTTA1tenR1o3lQxwLBlVdlA4+y6aWfKzgImY93V+TDWFtAY2x7DGbE1AE2YSZ2ELaJsAZzxJdm4djBsWpiOWnus8PtDlBzSiOlqTM743bepXA4a/vj6bz++/eFHk2UPe5ZAac3eeb1f9OD6pRAHbpUxHGyzpUsHCWOGceSMT/wdpAwZnU6GMNoH0tFZRRaiWSDwUSGZnEoCYEnINvFFqBYSPDXwJqeSAFsOgk1kEeoFBx8JosWJBAAWgmQSR8LYwoSDBL1JHAnqFQsHcNEQDq56GcMBVzSEg6tc23CgFewgwY4teLiA623iiBhdBXEQMWATR8Tg0oiDAI09ZHh5vcQHnbWGDy4soniCd9aQwaWVFR9uxhgO9sByiwO30hoSuGoNxgWZtwMDy67JbMm3Eb4t+TbtpU5lhl43OZWaepD+6ZvTdEs+kOQ0TZL6fVnu1rvq+REjFKUdS8DBA3hibfrl/NPV5Yf1/e0VKG3A2XUGV+cwIOfX1fr+8+ryH7BiGKvTSrm6PIdXUhvFE/L6p6HaZfthAtUkNZ9UXazpIKqGno0tfyc0z7LWxImuri+ai37LTi/qx+jaSEU1pmgHsqHjj+UdIvbaVgjMoLPp/iVJftQFQBdZnu7Pky2/qQEiQ7I9tZwbsjM6MukuqssBX9qWPIZFnJc3OZfXjsKqko3jCyIolY5MWd2qp2wukpym2YEYns+1EaO0jy+LInw3FPVLEbqQG5Ll3v1HbwSt8wD4BARKsPrPuBCrlojoMFVkHDyr71wBJO8twqNzVbu/x/mXMCO3Rkc5NCpkU2jVfKOeuwIRB5J5j0JQOFhdFKdp8kyoZyvDGUFzf3YgZPP0gSTl89omx91MYQPZss/cj3Wo7vASDZNsQ6ODT1+rECLanUJGHObVGQ9oGYxdeBncJ1ANha+kl99tdfBm8GZqdFfsSZIbnFM1Bw1Yqx7uFlypu2ogW1EaOs82lQJ6mxPg35A/i4gSg3uWrBQwZtFFmF0Ta4FvcS+sF7jZwU8LcIsTn7bgA83MqvnggKS05tCaHdhvlsPF+HY79w7LuSziuHy4DlMWk8eE8oCbKFEZRlM1JgqwyeLlQDddY0IAmzBeCHRTphDCNmlVcM4vxeMjoX4TCMkQWjP2UGWyjv7lXABq1oAz7F4Asks1Qh7jInuqgl2eQ4Nr06y0iLankoNQLKzdCWRQkpFk+ynaR84du0YIbxlHCvttV6/LuWqoEuPNgBTPiDkDBrw1d8fWDtMhWzyqMU5s+3aGA7DncI+hhRjcmaD6DuVkZJCB2wj6DQm3V0kM42jGGCKw37hSAAYYRQ4C+4wZGVTvEeIgpM94kIH0Hv2JkGx/0GxZXdP0Odr6jveUxtD6iyY3eNigt+zudLVjNRcCNnHmft7nreCtGDTZnCd5lEfuPZ8CN1DYdi8Bwasjcj6FDyRGEdNZnkqKz7L9kBDvZXutDNXH0NaBszr4w7toRHuI+4lxXG/4mbx/5AAdCDn4F4jka11ESfgN6rNXK+MzQBWmqnNlDYeqb6wttLr2mNJ96P2xS6hBZ9e/CDifDrk/b1pKmAIQraEVgc8obwDVf9in8eroncRRsoMZDg7ZRCsOzSE6aPTA6WCdpqCGfK8rru44XPaJfPv9tW9JKc2hFVKVBwZs0Fr2KQ21a80K4g1sQbyZoCDeYMAGrWW4gngzXhAHSjxjngQzeLOoNh+vwboCNhAtexYA49IRx4MMnlTG5tl1a0kBem6lS9Xu/xglJIuy9xElT2lGYHruQaNoxSHkigcfyDm5F9ZwATC3iQ29AIgu8cTqIUAHpeK/4u3UOos/AdrMtfJD63jM/V53j8BtCYM75ThVBGZjGdIZfgcZ3D0BcN4B1g3eW/A+voDZpfd0iKLfB+3vp+3n4WGD3rJ3GU3Zjw9IAey31bUNvZ8eFwfcL6t1TtgPGygG73fdRU9TxKD9qpNYkH7UQClcv+koE6qfNNIK2i+aCmb7wWqJ7pfUc9mHt4IX4hZHoXO/p2AMWoPurhf8h/LxqMgBPhMtulg/3oDUjzcT1Q/3XWMFZdCb9HP0m9E68pDmsOitQWzwON2EMYFlZ2xi4/t/myI80LepROe+zXRTBeiu6wPqnp+oyhjexgmfGzx0IOfgURpKR+PMacwlQcxt1LmJvtMU4o6kj6Wx0y6exr1ztlV9os4c2RPyWOqoRa9yQvNPr/x2cW28oSyK4XuO5uGhk57meJ4amY9EOdkf96vq3dWyzNZZ+/Awoa+a3P4fa3JK1W2V8AtQsKoMlbPn0qhwPmhbkSlbXAZgJg0H75Iq85k5xHOcb+0RiFmAWwMh3IcV0s3TRbKNNu5Rx/bqxWz/H2slOfntd/F2uu+Bd/9c2k21V7oGdMLuREUyk5ZU46S6SZ2Pi9iFiPJW0XjVnr91dRVvBW3p4UDTA6E+ZzAUoAFn1b2EBE8iBN6p4L2XEbTYUi2pDlPe+vJ3VtBqSXU5KyBj0Br0dHLvvwEnc5fKrjdPZB96SVHYQ7w1tXBvbQdpg9a0ZxGovDtUi5DUdLYnlFPkodcy34gixvx0opI0+YxYTKz56UT9WRDq28NpJfXGpxOUFQ/dFZ5IssQsphP3TGjmMTcdltUbRxXEdkKXTZ337uwlQ2jdTvuZwpIGjFl378vuVLv9mtAsTap362DiGrUG0YqByREHOuBzcC8UvbNx1iDMZUHsC+pzY/2HGQxorRcwKNBIPXZwoKMDvIMEIcT7rbXaKwdYa4WQndNw8yVKdu6xMPbSuTwnl891P82zfkB9j9IaXsfTvkkIjxswtj0KSO1dTVFQso3qLVOQpwx09jAflShzQeENeuMexaHz8GiBwNxWpTWIfnEVDnHAmAcpFaPLktjfwxyA11vEPwuPxBywGcCUjdHJeCYBUJeiM4hWNFvP8/zDxAFjHqRctH2LuIHyDaIVUClqbU8ox3OsOqwHYmBqIIj/bKJ9SF8+kpeL5DF118VaQXw/ob5bvc8OEDhQWvcpCc6z2s+j/VW1XnPpcdWqSpPaPLaoLKU5m6VHiyZLUhlHEMR9JEX2dJnm0WNU730DdTCDVvHmLkK2iPiBIi+PohouBXXR3Zyvb2GKS7aEVkRlVsCYQWPT3f0KT6pdvn4L43DRDpq7129BEYO1X+iW5D+cJWIdO8SCsGR7/VZ/9H3zxX0yMiLipLMOqgV1PXNMEsAg0UgS90lX+3fnSbF3VtVZwNuU8xg7CXj+d9UzHtNt44Zx4T4yEoE7a8DIci3w2vhkTOCd6/V+J0SkhHothHWgbiOoHNbCgXfmUKH9vzwGGejTGwQ+xAUNY5/JloTNmcSFB5myywJEs6gispdk4/PSjITPGIQGl9vAS8/4D94K3oXlAI0JBwnXnnQeRGtSeHCgVkWBzdUO/hFs3wtaNebQ6stzGm08rmYYwg162x5loHGvujBu2Ye8fYtCaQytIOIw2RXhzvkL0NMGjGn3glC7dqAY2ofIQYpBNIZWDFla0A35BFEYSuZAysCzSCQ360JPQrojOaIwKQM8YW9++Nt/vH73ptO2ur4Q1p3Kia2Zoi4tZJWSAJMwfsmjTeaOyVtAhe1fdvyFxGmyy25TF2KFmYmwfw2zz2Hy4gfdGJkO+Soh3sRXCWgE9AAwF7XthAsdri3B5p9ImOWObu0SYyJq3o3OHIB1pibEB8BGxZVPG5hzohwwUAK6eLFOiIn2gaTOfVeXFhWwfg9yVeRP5XTNBZO3gAnLPr3i7FbZCCYyuw3rzqywggnNB2G6IUs2MIH7BXmXZoBJjQ8pnIm0payT42NeSqc3bUk7C6iweUrDnXhFowUqmx4UlI2sIPXsVfyYBieRQiJLNt10dnV94Z59UKc2dY8oW4fUTtF8wBgb0HhF/uRDVicHhvpADHczlEx1amAktlv1YBPMAENy/agHpWgHGJPpOz0geSvAiE3D6YHXW/BHe8tMX+skHdhzSKNyt0vF1fzWvW0djDIyzTmwDiNqNbL94o8/s4d8HqNdQZ1RTlgLllCK8BiWbScdBLFlYy34s/V7xUX29CpRtg/7dFuIfOXP77mfG9ciZfbyWMIyd3lsY1yrFdLVA5nVIcmu4zAvn2G+MrsywohUYdeH3mLbonjIo3x8b91LRcDkAiNHlZWmyM6fSZJ/irK83Aq8Ifv0mVAQtSrDaIXGNSG0ygxXRNBlAlRiynJQF9n7zR7jI5PNTvONbZ7CJCHx+Ga5j4qAzQWoyBTloLu/qXok2yAewEsim8vkEssHdW6j8UgTL4VMJkcRSChyETKZTCFw6GROe473LiP0IjkUo4HlRsJHc5mmzUkB200zSUFqcb+VUcmOF5hGfJGB1WND7V2Oc5B+TdPHCGhIZ6G/z/YIThg8gkfoPsoytO+BsT/Nxx3GBjdYgEgJ2qyQipQtGt2hn3A7vsoCI7bN6nhis7RIcBouSWyb1aRipf1M5pMWh/ryHoaRcIVJxFkZL+cqEd3wuR6y/hom25iZdzpqG7OPJnRwmQ9TjM3SoFE9HS2iodK9Tb+Q5IZsSPRMtmBlqrK6sJLUSkAoP2UhDGzlC8X9geS/lO38aVok+VWRswN/R/0GWUzWBClYPoVFsuH+Ek22Lqtjyu97onUe5kWGJl6d0dGkXyXc/x1IQrb8PBdIujajWUnHKXZ9TjMR3zaUF8kv4ebLjpajvglqgTbbGbtlihqiz3d2jnmfUnKE+iJkO2O3TFtfxHyP6BhuBIZUOeQ85iIYq9gVmRxNsjiUgVYr2j+a0BvyZ0EyZuiWodRnTTZHk928yAW05DJs/YgimWkYSrHKOeAtAL/5WSv0nNK0X4dosh5TpzQCFDLz7nVfKps0yXJabHJIxIC36uRttRe19zRtyoCFl3Wx25EsZ+9s8hejNN5ryrPtqyh7FSVPhEY52WJpLMqt2fglSnbAFSqQLU+ibmhTqFn1c1hr11gC+nT4jZ5DkrlHwAyBBrxpkA+odaluIyfdjt7BaquisTkF/jbMR9+6s8VvbE6CT8ghjpIvd3T0JhprFZzpKcQ8bjwCwwa1cJankLJLb1OEMunNTiEi2oc7gqCCsTuFDNdI2EENXoGv4wLk87ae2xvAmxfDqDBbE0gbD8PoENsKKJsGhtvtDhMi0Fi2wY1WkJ0LlH0JS2yXWoGzp2AMDrRjMMF+gJck/5LBWct3EOW1Uj/BOryXJMhyglxDNw8UcSoU2PVvc1g3dwOvXQ/ggizYIizHDh3R91yHhF1lZGOBmGkIm0eH91gk9fHZMUQuOQqdPMBzopTNoNBq909sWCE3SdSkETOgs0dkUyOwJVEe1c9GCpMgB28OGIMnTxXjN3tklRVsVtWIxpdcZXM6HX2PD6ejt4mhg+tKXaA5A/CEVOo77SFlG/CcmV+PliH0aENn7b8/iO/Emh17v2/TuZy+//H13358+8OPRotHLjiB2qCLG3v/DOKPLii5yhgwjChnZJHJVYzWLJYU/cKTkwSVOSz08cUoJwlDZqeUAlGjBu1OI2Z80QpA2VAmx5MJX4KDuUwtVLe4BapTzuR4MjHLU5ELntCBRTBHUUqLEwmAKRa1SSwJY4tlTiL0RrFkDCygOSlQ2sOCV6+sOXGLphCRB5bbXNGVJhElaNfgXAUoDGLhKxfmnLgFS2jABqt1bvyDhrHkDC7hOenQWJxGwOC6HoAcjf2pxSkW+0DFcfbxxKlXAB2ViMawsAeWBZ3Ilfaw4NVrhU7coiko5H7tMBMunlVhNr+Z8kbONkuPazhbZepTD80VpuOx6XoS1oQ11uDxDJcTDxac1ucdtMycbaDTDjZCRs464OixOdlgI2boXAOYEvYUwy8vOcluwmQnHd3SRKvq1UimYD8IPvS/ywuaN+BM+3hfdq3hpSnwSk4sLk2xEHTC+EpTUGT89il/XSfEcADlpk2+45q/YisPxy9PAxDZ5jOdTLahOE33+3Ka4dlIcGYQG4giI6vNhsTla17kPNnyO6EA2IEuB5/i4Z2sLojufZXDi9Elo3pRoiXE4tiWPXPCL/vA8Aa8aR/vS57V36lHNx7NtVpHZxVJgqIOXeRk7y2jNIJYc8htOPq8jzlj0JgD8HHlPA30FzJ6MNGCubaGjByHWf453UaPEfHosSV2wSyyiD3JQ5NjlRYCGJPI8Fn0L/9GpQdvzMFDKxqS8hZ+mM6os4TYpBheZW3J2l5X/eo1jNd7n2pkHCh5jL5Bq+isIknQ1B5hM9RHjO1pAev6E+VkD1N7GNSgtQrk98ahg47vHruF+XZ5c4gFANG9KmDhOlrBscjtkEoKcGOkFaSsVVCysCeJ4WZDsuwTeSajB82taAPeMIj/DaaE9Rs4MN8yY2vmH7JICvcVs/5E/oQlEcDfr1oKW4duaZhkj/Kl6daKBEOwtYd7tSpNrmm6oyQDpg04wz7eF5067PrbMPvir6S0gvjJUpIVsUf7ImEGtUXvms55Ub9Um3vMsWT21iACOP/+ZJhsfDopmbyziI1+CIsM1OetQWzwsl6Ov85lW9MNn+KyR2calD/Ke8+8G3LWytwHYRIr4BCM86b+UHa55nrWr0WP34Q5tNugMgXdk8r462oJ2pecs4ILfZZ+TeI03J6FeeiDrbAzDTjX5bsQw/f2qpuJaHogNI+IdHegDbLKEDr6HY09mXsLuLDlos0q9qLlTeDj1mtM3C6SLW5vAh/3OtyVLapXA6ewgwt+Q8KtDzCTHhu0nGL6oTIWsGGzQ5pk5Jd0+/I5+hYljsCCFVzoZi7PdlZjl7+MLjxIxiaXMHo/kJUGjMV/jQiuP/MuCNnaVCLuaAxB35qZBBugs1Ramgweoi/Sm5tExt0BrBUSTE2Mfx2+lH+EEdAYw5XArgGsuTUtG3bJCi507yOfSi9ZmQLaeZrWJwdeQWGOMTRV0DwQnU3gc5bC54iCxOB8IIGTD3v8QIYEeljBht3lqIEMDvFgwgi1akuj3Uc5fybm4bfKxF6Hfrg7udM8jKs4aH+egDNmXmfV7tEBNz+mZAuGLZuEg1etLJqOENxjkUcAjGcZ/Y8hEVzmbP5TM9OVU1PfAEy0TBcaTZ0EMG0yXvs0dZMiFTCUxZTNZ2Y2vrRq4ZLu55AYzezN1BnszxEwjN3B/R4apJ0L2jiFS4MFZOUePhEkkipMSs/iEwg1vlpq6hH255AY9nN436m62QTR1C9iEh8c5qrPTXroA9PUN3y2BOVPgXLdMt2rYe5sEiCKHdt7GWJwaeA42AeARgHuaAyUc5SdVsEx/HxrGIBLA8QRR9nYPbNt9uVPgXKlVVNjmG/9Y6Cci4Nl7e8TeDVD4kUY32dvTS6muM/eQlyRK0+PDPIM2FTGokthwyAGd9KpSCzunTNC0U+XTIhUqRHAHHylTA6ENjB9MkFTJsdAc3CbOj0cnDSdMoRi0oHCuLmITQiEo5xemeAICWFxHNwjpgQEUk+3TKHE1Ahgju6SkgOhqaZfJkx8OlAYBw8JCYFwdNMxEyI5LTiUg58UiYGwuDmaCUqTACh75WTNBENICISjnrWZ8Igp4YDY6ZshienTrEYI3PzJBKBJAJS9MJEyAeiSACEoZlQmGFwyRxTFrIrQ55HLZzuQ6qdHuGywzdn/zsFWrnp/1OLmFT2SU9Rsw2V+PmOTJjlJ8lvzG8oMiAPeqj/9ydDNGhZ3yJiwS3fIWG6gu4kwPytrokE8JDuJBIc7Zky0aO+YmUSU5Z0zJoKUd85MIsbiDhoTIdIdNJOIeCa0vN/3ArKOsTbhWyvFYX7lSoCrDoVN/I6DfDtElGQrPPyAzQKgVFSu10VlMWNbcFmF7SjYTZDThlcrx2nfSx4U+W08tTB++09jVMbbUAyOy27UIIf5ZlBL4bQnNMhgszXUUjjuECmGz/23l0fx8By3+sWU04c6Q49ZQ61JHeD7a/FwWhoYDP3UEbSJLVHA7yY34rMOAtawdlZ1zXf1H3/cxgwe54GmOdnkZHv6FCYJiQHqQKCyCaqAu0VhG2WHMN88AYAzpvB4y1aTDIeHm9F2hmBrB9MuXLz+OTlNk8do54TbJ59r2yAQgrUOjOO0M9VkV7BvYvhgM8agmeVjIKfh5skNmzUw1xohMYLVCc59+qUw149NCV4bk2bHXQP9b6bTZR9RX8jL72FckOa3QOpkq0eWmYHKyxSygKj5e59iEoJ9KY0t+9UYLwVVNS8olOdZexMroaTaqM/yMtIPSo5oFLc+PUZxXP2A24DwkyDanP5D5yTuSBnpUf3kI3lxGzDLImWrepl4qsAF6bRgl9BpQUuj1c/W7JqztyiF5cnVAX5cvbXJVXyu1jkuXWfKSi2czckVwQ5xOINHbvSi7LxaCt8CaWPtHVlavYAI3WnJVmchE1zhURqPDLQJzKZrAnXz6fpdJm89tZklzK0ZUpQZduNQ3Hm2IGJsto2nB3qKzQqzmWiDKkSYp3IFJs1WEenB5qhylRNnqngqYOd2rBLzGR6eOuhpHatvqsmdiUIkcZIuVB3g0ztB0OAkD1UZ+LelmuChKgCc1gk6NJM7VDUYXarhxA5PF9xsjpVlNqfDUwU9kWO12UznsBUiiZuwlYCav7EiVLM4WAVMDGX78Hl5M9WZQWyuToxoB3Lqxj+CUORPoJBBY9Hd2ZIPNa4u8if+ogRb/NYAmnP3JMvC8ZfizQCD3pqHbzunmcQn+fF6xyiNwg7cruiHPnLbIoQQsSrfZcSrJpfp0SpykRE6HtVuhBd0tvz8WflrANe3IvPAIHVZQOYeueeCZyxxwQNnBlZYnNEA1lUst/s9UEEWUFz29D2Y4fbzbfeD3aGBlgicN329yEHXAqx2dr2wvQfDtrtJ7rRA8w+rLSN3WoiJhoQq9hFC2K0LLXzoLb+HEh7CTZS/XCRGlwabogayXU83DwfibsljWMT5NY1SGuWjJ2CNZch2p5Bxe/sJWkFtEhW+fJn8c/jNu8lm6XmbqPhfyMt1+6g9DDxrERVdDFr1BYcIWzXA/hrSJEp2t0+UZE9p7DxjkfgVhqGFSE29d7dkd02DZTP/8JL7j6X6Y86MOU/HDh3QNjkubwgsHZMHh23OGAPx9tYQkQ2uijDENX1L3Rn1ANGx97wHsP58CDqP9iTLw/0BiJq1h4ltcIWLKbHpvS3OsM9RVgZ23Ubu60cCM28RFl3Zaxi+wDyKb/3QkWUfAtXCce8vgzZ08uvLOI0IpwC2LVE9IM098B7HD+HmC6wExiqOBLbap+mXqA1D89l0kwyhVfxtug8j580KNWfQGfXwuORKpC9XrQDk0zWVcAjddz41/I3JCeCzcE/WUe7eQ6kFMGanEEE2Puv1GgmtURwBbMPT7VB/Dp0HZKwNvObGo1GUAP1nPpzfdA2Mybtt5sytOXBo7m7F8vrbT+nO6M05HTtnZK6RCTIkSHQC70CsOZACHmYepMNn68indLdz3+ivU6Nt9Ybb7XVc7HbhQ+xcNRjEQLDn7tnGa7qbXshD4bwlwvK2hrBAiU+4EgtKpKc0YUGj5DGF4GzsYGGWq7IQmI0dSEzhk4+S3TVNn6Ot37fPmMGL9/ANpFCBAoVUiK4c2PIPc7JL6QsXbg4hRLY9hZz2JxhyBNvocg5F9vQp3TlPHpU6GKM4AvgX48pwrl+LBznOV34xbijIjDUB+0HzuOV9XuI6jzkpkxoS8qd37972reT9PbdK7E4XdJbcKwLrr0GvXocv5Y31/5e992ty21b2dr/KqejW0RJBAiT31ZmMnSzv2B6vmUlSb6V2uTgSPcMdDalQlGOv98ufIkBJRLNB8Q8ActbJXWJhgP51gyD4AGgMM7v6Y5OBv4OcoLuBxz81al6R7d7xdHVxPqKDYtXMsKcqzdTRZVFX4gfMr7N0n21j8CmiPmshlR+eWXT4kfGmAQPPhsvKVSn44i/xdphVxz/Vak/HlKGIOT13LXey5oe3H15/unr37tO7m58+vXvz65t3d8OMwyvSauup5mEW1v98rF3SDOjTNuuSZAAxqfpLvdbsos0mSYdadP5rvVYVXU4jYwYVfSaBnWxBuUgvowaSkE7W9UkigI+kvb/MOtklY5leNvUFMZ3skelLL3v68pZO9kiQpZc5PbFKJ2vKrMGnLjrw0WvUodfCoYOmgTHzS5w/ZPuBT9z5j7XaJNGwXgb15F/Kd680x6ytoXWyqlZ+mjkmNGDwHLOuvNsGgF5m9V7n72QRXNHvZVL/hftONklL9L0M6rkS38maxpp7L4sGLK13s0peRO9nU9+1cpVFg1IyYU9czzOCnezpnjwFsaj/galONvVK2ICYNehkVCfLuqdgQDuULm/B6wY62FMWm+LNcWp34AuDy1M9S0/x+o/OVy3ULJH+ToslPb4yJI/0/rhotaJvKuyaKUMPyLbZ8xgXvYwQ5TW13CuhkmTDoIRJbdbsDsWv2Tp6OGyjPOk0izjb0/xbAxb9mOXvul+toTROrkaHnfu4GGSY/HcDLZHSjsb5l2Qd/5blf3SiwlL5KcbdpgEDB2BZeS1OjDhefaY11kELWMVoCyVito+Lw2kNoMsziFjYrESrjXFaooGPh32XeT1invT3Wi3L48dS9MDA1v5aq1X7OO2Siw3tammfU4pKa2obWfiq6G5/6Lo57Fx++PAgHy0X94YNan1R/fH3Tg+v1BSrP1GLOE/fdt4wBc2SK9BpmLwy3dOo4x/rM2ifHfKumU6gPae/HWVOvS//LGcvfnu0ppt9qr8e3s+HptxptaT397TSKzoSk7Sb2v9Du6+xfVOTtNs76Au8r8m9kpO029v/07yDse557iZnsPoS5QlfBMC4wYB0VXib/zw8dGrxn4cHLe1VmS8g1W5rWv4TLVbs4315I3gfK+Q/0WPFU5THm7fp+/g5y7/1Mgb7y+E2sfo7L9/HVfpIAE3wK4OFQc0/GzGOn4z5f2vF/vEYn6cHx2t8P9Us+fQYZ0ijWL1Juom/Xq6MF2vX0bAQa+7ydcSKpnveSQyNEbUovlV/ijP8YuLOthxrGGKUlosxhlna6Qu3q9WnqlVTtvc3r39590aX6afa9FvdfbfGQNs77d/QpmATb+Mi/inOPpd/pauXL5rVGtZRpvf7EiXb0mvvo502IUi95pW8Fm/y+lnP8TKkSs1rOMZeo4JalebtbyHewxV0gOE6NWgfm0CdhhWUe3y0j0ywUsMaxLeb9kA0qzWsYx990f+WgJWa1hBH+frph2/XWZZvkjQqNCpBq7ak5+M2Wsdvm/B2pJZztZZ03Mdfm0ucI0VUdVpR8GOWn7O4a+5ajboNKKoxy+NT+UO0RzllHy2nirR/AMnEni+6q3JpDTd4IVU83u1nvyqEPFZl8Cz4I4RIFVsQcthtzEREqtiMEPlU9ToqH7tq4UqdF7mzJLRGs48HaNKQ+YtmMyPjgzu/44E5s+KWF87SjdMI//XScHGdbbfxWpmNz5z+JW6BDZ8cIzCn7oC5o/qpZUHYiF/QyKi2iQs8MCNfLc8mTeyzZjdr5A6fwTN3dtzRoHm77bmO6ex47VkLwXu5Q1Op/9hNiOUOwn0/q8FH8sZxtLE+RtesmNMAIzuHWzBH15S74fC72Az65tToNAMJOJRT4oG36SZZ40lSDfoBtv3/23FVcsTxqXEtPy1yNGY10uL+OQ25tl9FmDlzGnsV7hKD8Myc1UhXVbyLo31xk8K0NZ39da5BOxGR78+N/p2lQPT7aHdXfMN3HSsEtNYzdiMKmC+rcrINNm1xrvRsYnWZdJI+xXkCLpNWOL3dmbre3R30DHs1DzJ/r72jLI5VWolF/WF4Le/XuI33h23RZ9jDK9DZ/XliDE0mLU6V9eomCi+p+sdhvY555Xpsrten12yw8tOWPlRhd+2vRsa80+6k/gaN3ZFUd0vfLUgDrB277aibucfsoiMtrVVjwEhkM9QwM4dvgOpmaGPH0zAzh+5y6mbkpeyuPQztlMx1uLH47p8Bpo7a8dPBUHxrzABDR22H6WJoy/6XIeaO3/PSw2i4yWWEwQM3tvQwVtrJMsLSIbtXOpup2K4y2NxxW1QUZiN7Ut6oUturzT3/nfYZ6ShDLmR7U7uq5ghtIExl3sBlbrm6GNgqb93JNhoNXVbVjbX20vKV+l6TgXZfutdEm+mDdhgh1g/fUKTqwtjzzu86GWAo/zudz/sot52t0eA24RK1mc9x0XdWjxh5rEWLiVhkWy6PvGBop+si+0V3N3hm3LBosRs3NZaco9iTVpvU9qc1yF9rfTGmhZSaZ7hBi3NVvZyIuUdhbBp/Le6zP+I+IFJpbr0yjQbXIz8AUc+DRl8Gzx38pBvKXuKvw0yqx4t/bfSwiJfXGalos8nj/f7D4fmhF9M7G7KAVfTyj3CAcup3SPu9q2pmnf9Yn0ED3p41i4a+NVtN2kYPeCaay/Yc/1SfMc+HNFknu2iruIv4sk2gBn2mpXHy+PSQ5U9Z1meGVjMN1KDPtF22L6Ltdb/vnJph0t/rM6v3ClzNpGErba3m7Is8jvtM9WvmnP5WozmHh9sRDqr/+SijGm+TnwaOUce/0zptzhL8BtLOhiyOVfR30skRCmdl22+PWTrEXfJf6nUYr3qkMYtzNf3cBlyCO+6uTqL7f15gfz7pUrDSoIELwah/NC4Dq+0dvAh8wWQp+k2w3/9LXV2J3q+QrwO6Z7tpC6nSfk5We04vdbgkYQyA6C/itEUs/qpZR7Nm/VKwrl8uvFQlex6BVdSgs9OLz55+gKXNrEW9wkH+he5SfsiA7MMj7d5eykqsx+xRgwxq+PgRpqPpI4cX1HgdY0tH88cPLKgCTaOKWsSFIeW3pHj6IYn2H7N9UvT7vuhQm86h5sGslQtQ/9gwNBxrdgTFNeGj6YCNnCME6hlpcX3oqGtXnq4RGReoGJ3tStQ3cuMilaO4XZlaR3hcadtob1xshzeB+OerPI6uecbFKEl19Gu02hlOQ9ttNT6a4t43Pqy2KDY8vvYSrHOgbZFsfMTtJVrv0Nsi28IY3Ev43vZItFC1qGMiOEC6xvfQRdGmX0iX5DffTPIGTvFA9nYEVolWfN57H/AFuxa7YduBW3ymML3otyv4kt3FgM3BnYyu9wywZ7o/B8Yr0Nkjhj+6LbaNZQQKv7Wcm8VO7f0QFesnfN9z66HajpWNPqo1SMJ7sc11r1XKsVIbki4cluwvx8jhyU5SGmeW+ht/rMKmuXAYGm61nvGol/F3RVQcdNguKrJhen134njfI7VpFvFDdkg3Sfr4Q/a1m521P9BsCnbYqtWU2h9oNqXM+Srnrmw15FRcvxk9xhxDw8tpm/qmnxlvN4YM+Qi2hXSypvojzSa9i4qkOGw6BuhYWrcRSRpH+W2Sduyt5/LaDRk49pkf5t5l6WOfSB2Lazbjw5t+PeZcXr8h/TxS+wPNptz91s8n5/L6Dennk9of6DalCSo6mtT8QyOmYd/FvUxEKxhpqiu9K07WnK89U78jxjqpQUT3/9hWU7nvq/uF/4HO8BoZRJQXeJ1q/nSs+VNV86fWmvtJQ0UNuG5ssLVjbygbHIAaM6ldatYtaJVtGt2gMaQ6XDL4AjWDDhh27dpQZ7QbpCJu11f3b366uf0/0zqqZsUsvfTx9ubXt6/f3H76cPW+w812Jl0FTZmLv8ZdRWfSY4PTRdn1Wf9r70w6bXjWKutea6S+msph/ZNnWfdVn+sIDXtrSA4v6/7qfvWhYW/1TyVm3VdoPrKp/DUso5ldn/W8FNGkxwYmVrPrr54XF5r018D8bpb9NeSSRKNeG5Nmbhrfdb6Q0Ybfeme7m8Zn3S5/tOGwfkn3pvBW34smzXttaO4/8947uU5qm+8NisBtaSj2q5dECBXWkuCo3WsVvLY7/ZKMPxvgOaHnrs784e0wjWdrFqCGnqZdhO436XX2vCu/s+UUbwhoRywEfz3Qfx1WBtLNEPNOf2fSsJtDMcwy8YfaTDvPTuOv339xevS2bfz10xdnfOcfjPUxa8bQelhf6Q58a+Vb9AFV7VrsZqdU5zir2y/SqL+UstOTaEzFQmpDlyC5IfU7N7283XiwsKp285LqPa9WRDUIjxSqbsFgr5SPrmZFp+3AegQtzs3pC2VLmFRnsqLt9iFa/2FLda09y7JV/bn5vtbngtHv9Pn0YVmK6d57DsrIZMqjhfbKsaxHqKqnlt+Z743prtVuq7eus7SIOyQDGy9mcW7KSBjroVGIzTqehNEg9tyURbGDksnrE9sr6fwozcuscTYHG5ruJ9G/lFu35Qvkmj/FIPZrVl4uZmwUq1f/8oexhhrT45gUHesDWVOu4ZFMIdfSUKaUa3gsk9qddDC75AEboxnmjcu3ltZrgKPZJarWyTXmx7A2SefPqGv4gahFXbN+g0JbH2eTchZmn2MkSN2iexvvd1m61+yEY60TddkBeLvz9+A4+j1A2NCVjkqRVoKmda2jMlATGNG72lGzTUfA8SMZKMNXnM3ArNPH69XrMaTvCgjRvxipegJ6WbRo1jLIV6TF0OYz0M/E+t8bMQ48Bf2tO1Uw2jyNi25E86IbUX27jlx0w+zUt+hGLC26dVOhYdENEWR00a2jsDGLbn0kaXtREH0vCvwBlv5ol8ebBJiKPse1gh33xvQcKOoNjBkg6orajsRdvb3O0i9xXnw8/0G3c3Htll6ufZiY1vFi0PE2LTr6H2Jr1dShWdU4shZ/YUlz1dT0eu92cbx+us8u76rUqh0020hrt8uzIl63pbUz7Jd7fj+fMNOiX0CzM/JLryMYenwy6KCFKf1FHqX7bVTEtp4U2OCM+sI+zpNom/w7fh0V0Y959nxf2rrOkwcr/aK9ebt9BJsZvN3EaZF8/mZoatBS/cuaG1wSYmpy0BYfe6PfRfUGh78BHkiqP7EivdbYHDS/SYukSC6db9KsvdaosaF/hE/elReG2vXIqck5+kPXtKCzN0xPC7r5An3/lShhl8emvo3b6n9hb8BLSoy9AttCZPEdeFG/yZfgAB8kx7+xo77e3Dx0axvmumvvfsxSq/76yFYreV2aMcYDsK6XMWKhVusenRpuNsfqlHp0kbmuWh7j4j0H2mPHVFwRrN6aLh3fC7gknR8HndXoGPcVcnSO8W16aoubV7/dXecx92O0vby6eWFIlyozMJxJGxMjfq3xz/G3Dld79LZ7Idc+/pUj+1khKf66S3J+PN2AIqlyS4L28TqPi6ujLw2oarZgTdp+n2TpffZHbCJaoHpzouqjAZYEf5ikYdnxB40DT3Hy+HR5730/exenWkd7vu5UhYRt/Fm7gKpOG+YX2U639aJKG8b/lWyKJ93mHys1JEB6Zr8V8f4uO+Try9t6Lqg412T6mX34VnS4BLKfuYtjpeOdXnMp7vTrjgd+2hVUtZh29j7eHjGgLmsXtTpHu/voTNXo0uUOtB6md78Era/Z9R7yOi7Z68coj57HdvR6Vab7yrvqJtHrbDN2OGmYvQCVj46A5GOFoPvxvacpRBeIUgio9yO++PPt6jG+jdIO5yXblciVGZ+YJY9jX6yIwYuq2tHOB55VTc2yvwxoELWak9DsQe+idPMc5ZfTfHQRc6zMdA/qdOyyt8GL7keyurj/5FmFiLGfUpiCr/bMH/vRjpmv5TNdaX6z87+Pi2gTFZEWKcfKTHf+dXmT2iZOR8/rEbMXUuWaQnHyspJuFXGeRtu3z9Fjl/t4+6tqtmBJWmJCTWJRQNolZ1B/CammtYZuInbZ3oSIqlpzIgZlGximo1digT5yltxLqsAkxVrPVFCpaHlsw4SuZjYASV6ebbeG1VVNTCDuW6RnAqzWJlqYQNo+eU62UZ4UeuY4skKpcksD4CEfvYaHSamqNSeiPmP7MVrHV0WRJw+H8YxQrsw41YyjfOxEALF4cax3dACAb1XztOeMV2BASa1qW2K+xY9VSwbk1Cu3J2h/sxu95qiQc6zakpjHOK1vBdUn5VSxJSHP2aF4MhSWet225Bz2RbR+GjsLRdWcq7YkZv+cbE0oOdZrS8YhNTeSSZWbEyS96JNtrGXd8lyR6Rf8Zw0dSTZ28VlXHzp7U5HGotosdx1v44dcPsUyTApSo3EmVjX1TaycjN8opdKwQFsaHSUsCKrHXcejoZR3qt2wJKwHNg5RjdN2rM74MrrOgEhGG4jGyccdQjH261euzPi2Tz1LoYjRi1rVegPxTSlG14cuKqdeuSVBD9p2EGKK5NotSdpWK0wmQlSv25KcZz1rYZiaWtXmxGDDWHn0/zrbbrVOCeRKza/2mTd/ITWiLUTA+xcFjl766yZRz/pfP5HP0VfNsxtMo9yKZYlap0GYOv2TIaUwaSx57pKP/oKs534JmweNFD9o2Dt7NnTxg65ds8KBCqPv3JuH/43XY7fi1eyu1ajd9MbVBcfTp1ejF/pgdS/jqwUzWueDCn1sdG28TY3G9fFGM3uIZ3Rvc+4gbKlr97NC3YUVV2PRMxW0LoMCz9173NusU51U8csbKJrmmxoy5AjYGzyUCk0NI3KDdgeUS2LNDC2YYsuDDCLcfHC7DDw3xVOcj54KNmt8eUNNzW5TY0zlbHuDS1OTqVGlaql9ONkaeMEpJS5rrRnUemkg0TyCquUaGTp7STXYeQ32WcUo+XP87eNTHo3eDXyqx/hBl/E9TbZV2ynHsyuVrv412h40eJpXY3yLnrb1Ccli3SsTJ68qZPwxOpeGbP4fejJnXDJ7l22/PY4m3LLp5zqNm/9Fd0dfHGs0YXr9KX2XpPHruIiS7ehj4PWqXs7T2rBa9xMreVjV/cdPn5o6dppmSZ0EaHl+EQ36nuEuMjS8bZsadL1wFQLqT/PHLBmde4LXYfr5HfvUno3Uc+JVOM7QQdeasXoy0gFj6z1A03LKsRrjS1aH9R+xVmMXpypH+/nkS4XxUjpGHabrSsB4yfBf43w/fj+BbPu5ThPmS128yPLoUc8OYaku051dZKUsxqclbFq9kOoeHwHJxcY+NRAdmr43OgnYxl/isau2iIRjtcZE1B+G+/LKt5EaeB0vZ8Z+Nlf3VF040+gUt2a8xrltq+H75N/6esiiqk27yQagObBaIyQXNXNXqDe1HZ5Hn5TEFSzPlWtUcvEo+1+G1FQ125NSaB0zF8fqtD8SjXH+Oh69y+hUzwsb708mGxnzuWNbn+S7XaRl6D/rkOo1L0Pj6+usQfcrrE1Anv2lPwjnSs0L0JRtEyhA821W9/wk6VOcJ8Pv+bkoSQMvA3IasMygFGl8jb8WmjZo16t6AcuDDXO1AUvJp+aWlxEBuqZ5uADYb+7KT+/n8Vl/pbpM95zn5Ov4oahh8OJYrRbfnx2rSk4WP0ZF8kVHDwI6ajXbknIo8mj09A5TcqzYjpBdtk/MxKRWsyUpebzJnpM0MvBoL+TKjQlqDFbf0iIaPSU/VWR8R6ABcxenSvV4XdRm9g1dN1/n+7lhvNRfTpcmvx5/LlSuzEKO1FTLqUnE7IVU+fgwyF6+sMtSQ/51TNJWcwb2bqLy0SkEMS25nrSBSgn1R+S3bHRit7KKl0NjTtbqBjHck0bhxdl0jdyizWwNY//ZZl2jPjCYrELfoefLIKsr7eWzpOUHVd97NU61GOjb0Ojjed6RVkvVWDQbLGUPttvYMjY0/LT3d4Szz3VYMPgjGEB6W1tVYMLUlkRI/OBPrxEErWGY1co8k0MwmdquRTw4YwHurm6uvTkUY30rqpihc2uGafRu5bF2976LHuLtiH5b+3u9jt3yirXYtDjVNdCjdSdpXAG/YO/g9W+s3soF+s7xdTN+OfQMn1qD7vNPHYXoDkVThvrxHDH21SuY2QNaH/X0PKGNEU/OqZ7uo89j+kbd4FNleg3G+sDpRPEg009/rTf6vT+VcHsGfiU1XWNgWEYsHT0kn+vkwlXZabP8OdLm3uMIdqpVi+2XbmQY/kZpkTD2bXJJgurxGzEAn/98Rg9gfSQb/wQ2RjGtjyC0VcszWFXa+hAettved052MHxZq1iPgguP4h/VicJh7+o2JfWarUjZJqkBGcda7UkYdIKzs5Ra7VYkiS1NSd+LRrrokaq2IobvDtUv5FStFRF/ZflGv4ZjraYktOfl6ien8edTv31xg4a+fZve6ZJlaMAspvn3+h15aiTqvf6rsm+B1jvGywYmOd1tHz7nQdpAXKOeOcBlAzPCllJLRjReei0PSYo0QOjwdEhaZO4HbX0coLPe0CRC++9DGqJy4MYkLRKLoVugBwgFbVmSK50i3sXx+uk+GzYfaPy15rdYtfVk1/sFhhu2gBX2dHjTWRrfW11MHvzCalYuu0Ln8N1DyIhx+4Ii/Rytj6yhQK23KNWjPGBO2vzzOT7M0riq72nWPw3tZLSW5/k48nd5oAfRtz5SRmC4S5rae3/5V/eZqKP/i6zx1/o/x47Va7BrAerr6eimqzT2+w4WD+71zbolR+gb67uLGDzUt2tp9nWLgZEzon7vGBKnOz33cIED08v2UXnxoyN/TtJsmz32SybTQ7PchOHeKqeFzJJ13DPbTw9h5+oNi1K9bgZMtpp/rveFEx02SXZX5HH0rMOuhVzfCD+37yXZj3tD1i3ea3g56p8Vtlur5cVYVbtvfSeWFmu3eylq1WW77uTjKg3jB//W/Ub8/Mw2KuJhiKX55wY+y47167BsAWvs69imv3Q+gF2MHv4cNmuXvaFxitpDyPBJ6gU9Jqap/XWNmah2E2ji6ocxQkdws36KtY/BY0QPHKi1Co7yx3jYXVa9pDfaMf7gKl9ZQ2a3zb/XvUl6bADkXdJa3Nw+tR33qGiYr7Sa6tbOiNXcf7T3S5QnfKeN2tzan42O9dkYufDhYX94OBn1nG0OTZN4GcQCrPb1NonTYv+PJCs61VqV/5RkvfqzMPtsgOeEnrs6d42Ph4e7jrqgBYvT33Y2ZFlXfcmom53cEQbYdq5irInNwD3/WfSLXPkHY0J3NqF5lrG3Hc3jlX0tW0qOOJsZnMy8jassDW++1LcnxOnheZCFcn3jDG4/t39+Hf3z6t39p9s31zcfPry5vjeiYdFoQ5ck0Bqu8O7+6ta4xGYjFjSSc1e8etgXebQuwHBXGTFEpVyjwc5IndrYk6X7Ij+siyw3pGEhN6EtSiAAtVGNEcc7D/0ZGPQ1q8uQF0KV3nCXZ8UxjaMZpSsvqEfyc/J4yGODcTw1YCGKdW1p/Nc1r8eUtnoDlrXtDg/bZP9kStm5esu69ocHkWjHlLJ6A+a11cd+0VX2/zrEBy3q6vW9zHG/ocDUqC+5XjnmR9ttVdCMOKl+49rqT9VjrGUMbEp67Hy9jjYtefycfTHzAC1OdZtWJI0LpxRyd0VUxO+zNNH1fKE1v9CxQq3F2KiBB0Y5fqzl8jcP+zj/Il0wYE6/smGL3pCf0nU9HZ4h4adW7KmsP7mnT74kSzU+tki1L/OZVQkx9cBi8VD0z2izEY9JbFap3M4UStfbbK9lBFJHs2phCnX6xhmlPP2DzAV98p28f8QbMCh1OJLTSTFeuUmeiafl5e2a1wRfkzojqoiTQnopMd00yltwgbrliVzxRxzvrrbJl9iWBxoNTiQ8jYu/svwPW7JBc/ZES3cSR08ZIHLjFJ8rNDhqQV6adrpTd4j9i3Pt2gJU87lC0ibZm1UlNWBRWLKv+mWXbCiDlMktWJSWpedH7l22NxU5pBmrIt/H+330GF/lefLFWBCRZiyK3MepKWFV1TbFNOi9ZkUm4P1lWYfUtDC5BcPS6m9kvmDxQ7TXJuxUocU3MljB1KrAzAJmze8dF/j0ijKwvndZkvaHCIgy8wihshqPENwkpkNZVaetD/Jdnn1JNjUeplvDotaC5vgc3a8MUdnbOx486aruVKWtAD2LaYopBYtz/Tqjc/a8QhbcaqNbFrbXxoKsItsla3OqTtWbFiWl1ziOsDofJblSWw+T3l6HaDDR74D/bfQ8TJn+vqcUBm9vQXnTSSp2l8twdGZ0BovJ+mccbYsnrZJqVVqUI17K11lJm4vxUqTqppLRWC7UI+dYrclxr7ZkPXTjsY7txSYWnbVvGW5u4asPrZ9E2benRd0BW8XqJqP1adoSfEEJH8R1yWhUZkoD3HJTuW9kxznXYtXuoXtBm7afarJkf5xudlkyZGd13fZaLZbsTvZ3d+/epOXeqJF9BtRkyf7BxxL6Hj74f6p/SNKnOE/Gy9B05uDyyQKzdkurZEOtbqyEae4yFxb3BpmtWMMzaPmI0xuaz2i025mlrzX5GNRkxNrB50a0ng4xdgZE80mPpp1awa9GzKvcZQUnSOPsw6dKA3zaBLbg7kswvxhpNjrT0G/2KITeFZhreMNdkNEpM1Y3Bd3TYfUw9vztmKSb+JyKve3UOS855th77cDGzYf725t3n97f/dThlLJouPY3/R90oRI9NV0dZH578+HT9bubuzevB1u0wKrqaWO90ov2/nj19p0me09Vabf39s3Vu/u37998uvvlh7vr27cfeXtvP7y9//Tm9vbmdrj5HWrWrkZq6ur65+HWIzVpt7b0zs0v959ev73rnhRAYS9alx6LlSe5uls7lju3DRCNLXBDrFkM2+eGVnjBzo9xuknSR2RSPc5wrF4rSn4+7jjWK6RerRUdH8QWYr0qzpWa1JCkj1rMFvUYtZR/BOaHna4nFlRoy3YDfaa1eiO6zmPF2GCAmjRaO2xtR1Q7dFEHvm7GrOY0LBm8jFOvSfP6TdPIngs3vXFqJzEDlnAQJT3WbnTJGLOKg3SYLss3Rk3vsZCjMr/DCo4hCb3Wcprma1nE6WZp79WbprWdl20MObvPAk7TeiMrN90Mz+PH+p1F/ew+/bH+HjJ8YQl982hYUepoaef1AtTOiysx2rrBiNWkpuUdl5GMGN9vQalpO76SZMLS3ktKyEihWksyYW+fRaWmqdhqkgkr+y0rNe3E15N0WTp2Yale7+AVpQZHGrOUpLKodb42yI+aF5OUhg9aRephaN/lI6WhWtaNehgOJgdDzUamCRqN7LGqpbQQLmfp9WktA3ltcePu/ur+zafrf159+OnNxWzkAFdjdYwfFljtTMqfRXFffkC+j4rarUWfD6nIaN5invyn461SZEyPNtGuiPPv0/hr8b8XsnhXZT+Jsh0zqEe7pFet0S7pIRaYryENN2LOmCzcsoFldYq1kU38U1w7T35fvxUFgWqdzERrHWV8605qmCD+hzfvbj78dPfp/sagkoXUiiZReHstUv95dffp/dWH/2NSaK2NKWXefHhjWqVowpbIGtJGeuy4QcJI71TlwAddcKTl+rub2u56n9Jgttb+o8pVL6q4Lhtp/2TqZHu9OnMj9KCliGH291+o6PQwS25XTGW3yUMe5d/gJ6JOcY0mbOrLY3ETVZle53PyaERgsw3DCoegyuE9s0/OCm2qHuPCYMTqtZvujfVx8FA8aRsEj3W9yBFQMt7U8HfytjKfaRzl13m8idMiibb6o7JAWrCm7nNcrJ/KUnfxfn9xwWWIOqQFa+oe4+I++yPW88qSZdWrNqqnBmqvPr79KY92T/96B0Y9FV7qJgzUam6okK/L3iU/x5dvXh8uYXFqQVt8oP9V5PqwL7LnN10x8AiJjZamlXrbjctqE3zbA+Bqlb2JP0eHbVE+sO+zzeUUOSMUN5uyLbbzesYIlf2WOrTKe8428fZtWuTZfidwhkmhaGu2JXdcPxkhs8/Sylhp4BV5G+/hV8FYgecqLb0ctT9yQIGh563mejs9D8oy0e0uiyq3MiYd7pIfqupcv2lZ0qP02x2ftieP6dv0dVxEyfby7oBuEpGabc06D8XTj9vsL2k1yIyYBWhLW+ywuKjAXfaYpB22UIxUem7GkkjQT7HP87FSa3Xa6pvrdbzf/xx/0xgwqGIhN6IxXPUYqN5qX3dJHmmcYSH6pDbsytvH6zwuro4ONqex2ZBtoZzkcP5hUqXUinGJ0piy32frhHejMhWvxrdFs2JLo8sa3wlhRM2i0Zi26CGBUYTwUDy95WEuvn3Msq3WTwK0bkuBvM4eyyucjCtZnBvSCTiRmKgDCKn0aK1VhbaeOe3zEiBhsTa2bHB0vUJaUoVR21wFKpMasCiskBcM9IoqTCwZXBB02Md5/ZymXkXn2s1KgiPDveYwifqszvR1zp9kBQu5AZ2RqfyuHBUMijpXbk/Q3gD9ALJgE0bFwcfol32cl2/iq3RjcrLU2sxLnTddFmVoCtUetMvBNhXd/4xw2otfa8Cqpk09lcrqbb0Ct9vsr58O8b7iGDZULZBG9e2JVoXrwgS6LKlrEn1BfqNJm+KRvm1iPEKrttSnOQb/LSku36I1Usqi3pLmICoHJ0apew7hp0+FNozURejy1KBRvcuzZ1UQ+zlKLh/s0617eWzWkvqjuxVOyMq1LftOODY7DyfsnrLU/hOwPDY7DyeU3//8P637odbyPFzx/Dky7gXRxn/0kP/8Oaoc/b1jPLalP1Wf/s97mPvHhuSl1K5x9Rf69L6IioPeyfllBxzbnFp8kRW7SbqA3PDUbthF+/1fWb75McufI01b0lo80WjuP3q0k9UeuwAxHnbgZdUrLUnfxemjhbmewg/LugU2PXLhmcjjPw9JHr/L/orzdZfrrE35BzFkfm76cHh+qGeMnMhJZzPm56K7XbxOou31U5RH62IGzsIMmp/bftnt5vEA1g2ZkZvKxaVfdr/GefI5WfNtM+/j4ikzP59padjW+7zxnXpVFHnycChi8w9Xo7nJRPNSXVOp6ZANGpxUuN4zeB2EGziKN0i4xVhbjbK8ipB+iXOtZ32kKi2tGux3cbx++ilO4zyqH5zXLGTRbEdf0OqBUH1M51Fa5rPc6dv/jYiErdiXuI2K+D7+qm3IwSXWWjEtUX7ksj+SeC+G949RHj1re5U2KrZ4IkjfGV6VjkWk//wuFowWkRp3ZrWq1L1Jq4fMtdZXgULjqZFJBPKixhUeW7Ej0SR4a5doYlW52eLRn4ox9byFu7ahS9sETlH7S90B36rH0HZ4ZYQs7Y1v12xko3wHyV368MeuGaZH+eHYirk+3ZoRyuJTKyltJI6ChpjuDKfotqRnm4Gb2s2Ywkn1J4cntLnZxToPxoJKbc2k88fDc3m1kDkRi3ob2iIHQqAa1fdXeR5pOtaLiju3YF3araDYup5LXF2tEcsCNe5QwqTp3obUTZTGaTImSvfEWCmqZTi8qh53IzKPlVsaHk2OH5IU8+PIKSztUj8ctttyE4s9ybUWJ5NudCiFqs0PqZcEGxtaZalmh9hLIo0NtbJIs0MuIrI59Gr+YpPqtMUceKPGBCxO9euN04UPhTdf4rT44fD5c5zrXPFqVGspSA+8ybvk35qeK1zHQmpGV7yaoVCI/Lw97J/elrK+RJrOjCh0wpamkWo8nPVWrEvM432cbt4lz4mm+ahCpNyODZn1ceZHkK+7672AnRQrKrc05nzO8nV8G3/O472mDa1tehagOV2BVAVIEc4k3mqaivKqbLGkc54n3cYv5Lq1hYU7WiVH886zuhoTu8xaxWj9kK0p0f/Z2kWG3o/UphwDn6QXZN3G0eYm3ZoIUK1qa2J0fk0DMdq/nVvF6PtSrsnQ/F3cKkDfV3BNgOZvXiig/i78SV4IOhRP5X+uoyLelBsO9Ui70IjFXU06PxO7qFpIjeoK6KWgtTjgVNCyD+rtTuwG/VPeTl4wNPUd6ASdKf06ydee5q+7cPV490sa2RjxkGb+I8Y8lS4box4WuqnGvVY/mB/5erjC9Nin9ISV0a+HI8yNf0oXGB4B28VLY6C4NOa0CHKvbQ6L1WxppMvj/WGrCUIqZSxOrWiLIRYLhcQvUZ6Un826uq1SZb0hS0LR/skh3q9Ms9yq1hd5lgIVYeIgRSMGdk5RqPXpPkLRVeCfhzjXhI1wcccGbAvjx3Ef47S4O3z+nHw1KbHZlG2xpoZOSabRYbMpEBkyj+vlWqf8WNWWBs+qbdNCFud2NMcNBKQ1eLf6ZzCiSkvB2kSFpmRvTesXVeWaw1O5XJXWMs8zXUlHEEmn6u2K+lrE6V7f8jUmrN6EaXGNB+nP7d3h4XTe+X2830ePOmdfaP0v8xFTSzHyvOGRwUMpDot8/qbzTSbXaWuLc9Xom/Lsi7ZzqoiUBdKSrvCBaFyQ+i56iHWdbWwTempnGpn6Mhq0idSc0UApEXv4jj3ptbhvW3NIYe3WLn3bbsU9bLqO3LUKWoD2dAeyESNV2sLoq5khCFctN2dRNNaPy2fITB+u12xvx562lKNKGYvPujONorFoC1tRje8mAgfrthQ6fZtFWmTo3j2iiIYidOnVbidmdkn6aAJHtLVgKYyyCZZkLRqtagtwW8xUYS7iMgVm+Y33Lv76q6M3wmjlloLLWzQvZHFsR18U8ZB0CyAxGUBiPYDEvJDFsR1TASSXA7jLY62p/kCltr6Qj61q/KBChCxgO1oDVwvFhYAZmIxiVb+8KY1ShfYZDRoKPGz//du9Hnn//du9pZDsom/bLNL0bXs0e3GuVVcYStcqsuQU2V2Ra5tbnTTUqjUkot5z9ll68/C/8VrTmHauz2BOp7r9fxUfRczviijdRPmG7yPXNGapare2K0PX89GmYyGa0dbXVBFRLvXsbIgUzUwlMtHFQtpFJlphSG+Rui4DvSBS6/WffUX+b5HYECmamUpk+vDZhkjRzFQi9+tM16ywXeaxocmEHh6syOTNWBRZnwf8nKTxPtn/mOTxU7aPTTC91iYszQiADbaELZrt6opze+BspBruL19/8uF2G6D3LWVmGeyYpZHkLb18dOF2HQP5XYZ7y1QKGO0Om0PXMpFIRqej8vhRW+qL4V46WTFPF2lOxzPGTyYy9ox0FjKvMTifmXIeY1rI4tyO5thON09pkWlsXoL3YMvzkMvCjc47cB9MNs/o4A3D84rhDpmiaxicNwxyhIF5QgcvmJoXDHSBmXlAJz8YfO93dUb9Pf8ufozWWveR12u0tV7x1/7TLs/K1Z9POvt3Q8oCbUlXGKVYqML19Vfnh0zrvga5Tlsh2yaRpmkYYv/iWL2+0Eh+tzC2YqoM9DiFLNjniIE+Rybpc7q2tSMKFucGdAaIXOx3D5m2q3oxWcfq7YraZutoG5vUVWvBrjTd4wQUZmScQGVJ40TykEf5t6uPb7VmAG5U+xJPV+MiDJysbgbBBiJol6cfDzTbO3pSEcy/kuKplg3Ioupls2njXkCm/PX9Y09xtIl1Hd3u5oRzkxOIl3rC7Zs7TXsWFcqrBv4jH+hSW+Xf73Vuz282x704Yf+VlB677/c6d7Tjmi98rVd/cyiejLxjz/XaOm56Hhj13iOjULTAG9Qd01p82jLs2ZEMm7IiFum1Jnqs3d569fGtMesXonLNwbnQC8vYGVQkarcr6a7Icm0pTTBV5wbsCtvv9Y4TkihRuXFByKhQudPE4CBXbWmMuHNNa1jwJjTHCoTB4hwTV2jsmxE0d+cqswmJo09X63W837+Lv8Sa1lG7yF6ijZv2xIUvp2QvDti8y9Z/vEnLVH662FwXj+CtT+ySXR5/Tr7exvts+0XzNK7dG42G7TtCGsuzNU9bexfnX5J1rHWlAKva1mFpuW3TghbN9rSFFQ2QlVG+s1wDQz7aNvSyIviPcfa5rOz6lKFI1+ykr0eWuClWvdR8/mfUZTAHGcFUPTyFBq19qjFH7y3Pts3Fi5emKUX8PKcn9ezKo2UvxJHP0W4yP1Zt/z3ESR45diWtGLpPJ+JhmecgJvnnOGpNN/rXzJnlQCW7i5sya2dp3TLR21v6N1QMG5BkIBhH+frpbbpJ1rqyVvb3DDTi7xEbd83xWdOK7vo8Y3Kg5jmG4x47DeaTvfYwu2Y5qiscKIb3ubqvDpLKe3q2V8cLqvW4Ua7TVpqpPNvFub58woiIhdSGrsiCCBhPbIYJ04yBlJIaPY+nerjXq+1Up6We91w2asz+xbF6rcE5+70lOG/TIs/2O/Hxerd+ip813fagqt1SwOL0oOuN0apkcWxIa+iwqLT1TCtKTy1NJvVQRBqR8QW1tcamEpxm6Xtr4a03NpXg8mI6vW93pdxzU1OJ3dduprEiGTY4lfAvcb7Xxh3aJZ+bsii2/pL9UD1VmidBjWotvVaPg4RJFYtaI7qi1gwDHq6bK823l9cqtHVhV/YcJZoeLmj94lS5rsDUHa7+6uO7bDWNkQ1N9fotysrjTZLH6+IueUzfmopXo5GJBN4cNPGvVoWiFasS97ss3cf6BnZEn9SERXE806Wph+5UuVlB9bH9Y/QYb94le0098VSdpXFdID7+PwbsX0jV6wrK2eXmwS7Qo3tfwEUp5V9rvJYcyKnXblKS9MDE+T5Lo23ybyMpWJXVW3qgau3bELSQ29MWRGWQbCzgdZesfyOiuu26p+3l8urtC2M5vTp5xm5ur4HO0ZzjS4djdG6a6O8V7ZsmdLikyKP1H0n6qCuvSH+3SBZM7BrpFZqkuyxJCyPvT7RuWy/PqnHjUha1lrQFFo+KIoTlF6bY23mdpV/iXGvOJlXtto6KizYtaFmcm9IWRlVkLgbSxFXvyupt3WlXNWpDzaLWmIFodroxvF4+NXAzobp+25cUWtGzqDdnIqZplysLa39g5JWpqt4Wm9d6CWO7mkWtMQPxVL47Ibv/qn9EwtQeW5pMqtbvgnat+j8COoiVH9PkOcq//Rx/e5t+znRprtdpa4zdXx/2RfZ8btyYmAXalr4IShFRPo7HUnwh9IM+mIzoxRuzK3if5UXdAG0jb1Mu1pRxsdJDedg/fciK5HMiNgwbeYG2tmHr2xMYYU3aAmlZW4jbo4eHvExuZiLMzXothVZfIkGFBN2ZBJEIKEIV/3m9TeK0+Bjlka41L1CptZtsi6dyN405DYtaE9oiBQLQIk7jMp5Sne7FvI7y1jpHCUzbqQHzwuTHa58d8nW81zoMypW+tIR4mPmaM+JBt6skpdH2W5GstQ17mLBaG7blacv4hyvTm/Kvo6ifYk0fdqgmUbtlSZxBRTrTzqDaQDOWRdYnkSZVwnYsy6whC4Mi5VYsS9SadROVpz/tplpa/W1955r4aoG1vrDklKj5evNSNvxuY4+QSpf+HUGNltSJKB8O6z90raxcELg8tWVQp8VNK5fkaqfTneRKwws/kfMmPTxrUnyqz9YxG21gFpi+0LzBt+Zp1WGvaHvQhV2hmFPdRuU0e5bGI1C1Cm3Rm+OZfa1BOStYSA3ojYxwvGrHYkneTYk6VW5RkO5RoCbHyDDQKma3PeTRVt+KU0OS1IBNYQbWQpviYCMWBe6/pesyNbQhabXqzYpqjuMftJ5mleu0NJrrH/QkAabGvZPnLQ19sigjox8iSepxuzheP/0Up3EeFVn+WutOIEXllvrglyxZa7tTsk3K4tySttgpwoIH8V7/BUNSleYCJt319RiLs2Sael9TwqLegq5Qyc5XBCiP0lOOC73PGFq1pSdsG6WPB20oUK1kUWtIW9jQkLSEbxsV8X38tTAQPli1pfAJJPpOfxBRPYtGc1pD2QiP6lBQlD/GhTXRjeZsiSar0HcoqS/fAqhdkqohak81mXwtAOOPi6i6JMj1WRSy32frhC9O/RBvs/Rxf5+NV4NUOomkf0b791H6Taegqsqp5NyksWY1N6nBpEgtYu7rCycapNwbze7UEFK8i6N9oSUcp6osmt9M3zTYfAuJmzDzf9xmf+npQ7XK7Eq4K6J0E+WbU3rY+r76MXKwiu1K+zXOk89Jyau0i8OrtifvOntMkyJTrMwPVYbWal3UL/s4/5hl26t0Iw4XFt/K/9WrsbURi5L5KZObXUk0kiy9yh8Pz3Fa+44aLFNR8WTStEuyLuWuTIOlSQWvy56A19mah1/Lu6pemT0Jb76ut4dN/CH+Euc/yiB9qJBmlfbkNHOMDlVhIa0oavx4/9v3+baI83jzc/xNh/HnymxK+Bpv/nWI82+38b5+UclwGXKF9qRUHD/evK+yd4/W0qhxAjHclfqU8OomkHFXSz+tT029VpuiMk1zx1NNNo0vrvOYz1Cj7R5eEj9cCFKrRVF5tHv617sreDZtsBy5PutC3sfFU7bRJUPUZk5E6+5hfbYvtG8Zlr3dMSp3d7d6xd3d3b7k2BzNNxye0u0XI6TpZVmrzPqjf1ulfP6V6dJxrtG6GL1v/Wad1gX9GuUc0u31hadWpWU5f27rvtQ0/1fWbE/cP+NIujFgqJSqHnuG188OapphNqu0J+e/9yUnzKPxI/KpJrvGl5lXkiL5Mv6NKdVmUcRfxcfo2zaLxs8lz1XZM5+DtDfPu2J8DzpXZdH8+iFZTc8zUqc9QfyahcYOyKFSpNosi9CD3s9V2TNfznuqo0s1arQn5nzkavzbulaXbQHgnr5xCkRltiV8aNw2OE7FqT6LQsR59qv1Ot7v38Vfakc7BmtpVGldjqaHXKrNuoiPefw5+VqmB9h+0fDmQGt9YQxFrUE/SMGj0Ba1PFkXv6Q6vtprddnsdqdG/xlvd1q6HKjRnhjeqJYlxlNNNo3/I83+SgGK0qAEq9aerF+ZSEt2d3d7nWV/1K+tHSqpWeUkcm7jPw/xfjwHalZpT85vSfFUXm2154vRo6XI1VncJcQd+Ms+SR8H9zO0jlESOht8G/85ytjb+E9dhrLzyZTHau34Ls6/xHmtRejfz4dUfBRdNPtSlTZV3MZ/3uoVIWrU1mVqNxxs4q8nQ5+zzWF7oYvwvxhsCGpE83Hsb1BzwBjsK+ET/HjcdZYW8dfibhev+56nUtlZq3Kkzd2PwxVD0qt2FbAoBidWVcioN9EemEF5Yy8I43VaCw3PqGNMweJYvfbYCM+fRdXSIZaR4wPagOf6/MeGHug8Po23t4c0jfO36a7/VckNYxX1ju1GNV9qTS/cy/4xGYa7NtQ5XDeHwky8RMXmA5Yf0nJueyVqqd784pkyq2rR3rKR2FbRwoP7U1z94V2yKe/72+11+UFZs4Xwgk85MxIW52Y0xE0dCKVIgBSMqTy1Y0lmvX+Wf1p9Rl+lG/F/wh5d/fRiCy+nv3aTorffXg6Q6f7bWbXOftxHtro/m+3L/yH92HYfnrb/Wu+73frtrZi3VIX0zNeROs330fRUQtdDp5KxwJrSED4sFIqUV9nxiKc5kfUmzIurp5arPPu8y9I4LXRFE6/WxjekTGEN2L84t6EhUgr/682tPkTemAzrXds7erLtCL7cHy8vBDQ/5Qz2vYa5jc/GUZY3ajMiYuT+hK5mj9mX0KGNlqjcHtLTKf3asDhGo6LKFxGfNtu1Bknl95aNF/wPr/iak4YoIdWZiVDtBaQeAbotpolmmtVohMgnYw9FUtux1wVt87/QsYbWcNltB5jYzYPCxou1DneocJtiYbWo2gIb7/qYDivRZ+k59NJfbaIi2hdZHn+/F1u9vq/qae8bpz/7VP3ZUQ5iMGbDm6+77O5f75IivhJ/94/Gvww1oFHRp8a/9PCq2j8aFoXHiRizeqyU1WwZiQy2YHY8Y7eOtlEuZROxIr3RvC1ntO//lIaH/76T/KIYF8x75mTKdD5qWqX02q/RNtnwicSPlcNm4cGmWTP1ZtDhEY3Lsw+Wnfi9M4tH1DnPr69+u3sdFbPwyuJsy8y6U9Nf98nzrHxW2TNrv715jpLtXJx2NGbWHnv78WqzyeP9fi5eqxs0a8/9993Nh7k4rbJl1v76+JSlsxnQjsbM2mNzegO8hNG/tHFfRM+7OTntaNCsPffL7bu5+EyYMl9v/ZBl2zhKZ+Gusy3z9deP2ywqZuGtoyXz9dXb17NwFDdjxl5K59GfhB3z9VN5QjZ9nIWrTqbMzFtniPPh6v2bu49X12/ubDrs3OrcoM3rq/uru/ub2zcTumNRN2KCnlPrE/gDdn9ze/XTpB46mzBH//yfD9eTOke0P0PP/HL35nZKz1Ttz8Uz52H4ZmcboIsWZzH8ek7ouavzKs3bD3dvbu8ncsbi1PoEvaTqBmrX/PLx9dW91ZG37ppT63NwTf2l/ebdm+m8cmp9Dl45Dyk8a/CNXfR4bHMWw0r9Y/zt7Z3VAUVyxOLY/AQd5NQLUL+8u5rSLVXr8/DK+cG5y/LidZLH8uYAC96RGp7bI3R1d/3mw+u3H36a1iOLuh0T9By5cyjeRjNxlWTIPH0FpnrWtrVNOctTfBrJMzt7nphwUlf3BDkPwNfZ83OWSn978ktlpFm/IAbMYjimznlv6DpL90V+WBfZTJyzkC2aYLzB+o3iIN5DVKyf7qJaQvVpfVe3Z96eW2/jaDY9rrJl3h7bxNu4mEtHOxkzb5/9Kd2fM63Ljra8AI/VP/dn4LSbqfYa9fDbfj4vgf1LGP/3cfHLbi4Oq2yZn8dq5+LhDFZ10lq31+Y0cZVO1oP34RT+mPQ12Owug07mW/BPr5P7hty0rELVeSI/ib8mnr/3mrNP4qAJp+q9ppqTOGfCGWbfWeV0/plsMtlnAjmJe6abN/aaK07jm8YUsdhvvk/23yfpU5wnBc/KP5mz6tPE/bd0fZ1tt2DdyZrX5PZnMW2UOlORyVc4TumYxdmYKZ460FVU2cDPXyivoyJ6iDrkxjP56XY0Yn5di8/e/jXJPEDpoIVk1MRfuKf+M7tZ+AX/zQOpX3LfNPNztetmwtUvuk2kNuLX/M3Je7JZM3fiY3w5R6M93wlr5u+yq+12Xl4TBs3ccUmazKmzVebM3GmTfF+qnTaPRYqLTovLyfFVunk9DWxu8V/Dsjm6Uk6meLXdivSLWd567Zv2T69auzP5agCOKT8Cp3GN1PIsnNM3u6gFl/RKQqr9M13uHOq7ioooSafuPJWnljVzJnfZcflJlTk+4+mfZ+Q82aIZ+q8xfu332TqJinhT5ja16kWp5b/HL9wl045fcudQPIXRnLrQ8UFsGDW5+y6MZessTQXNvZ9Nr1s2jJq7F4sof4yLD9HzXDwoGfRyvGf3fdrFfVO9Ty/4D75Pq8REk3wRwLZn8U5t3sLxvMv2SRG/3cRpkXxO2u+1MPBZDpufp5sO+yJ7nshHoO1ZOuh1HO9+y5MiethaHevr7c7UMZ+jw7b4GOf7ZF/EafE+28Tb93ERlZzHrqvaLJmF86ae8Xdw0aRfABc6k2IekUwybHX35VIycHZuvTBLy+Noc5Nuv/2YxNuN1QlGDw83jHwBXoYj6Zv08Mztt/1FJjX89ziJemTSYVHuGYrntDzyPwsfLStLpnZUhyfuz0O0TYppFlQajf/95Cm9Mu3T1+glqifwz9l4asltmYOzLq2pzKd3Lafa79/BZ3DkmuZLfebf6GfzfsijdDONZ3jTM3eP/ak8bPtFOOjHLH9b30A2gZ8qE+bprvJyzpsdv8DMqo9q7c7CMVPPmRoOmXS6JHULxVv/kCZ/Hmbho+XJlIld1eGdX5aO97bpQK3ZWTxtTbcUcZ5GW7At34pn6i3PwjnTD0UNl0w8GEmdQ7kZYhM/xumvJbmrnYSc1F/LhlGTu+/Sp1y5bL4rtzrPxIOSQXP33pdZdb4vc+518A3wc/zN9kuxavLvMR/4YtLB/tgPlKN8tRfj5/ib1SEKcdASGjOduy6MS7s8eY7ybz/H36Z2mWTJnPyFjEf7m893h12cTzAu1ZuexfiEu2caz8zWKe+jNHqMN9Nw3UbjM3URv3viPuOcPLULMBuNz8JFU7/6ca9MOglo9hLFi+0B3C86tbuWD1NeMto0rX1aUBn7+//Mzn+fPr0MD6aH5wfbw3yb+072vBjfzanzCYteSt/byzeWTu69/YTXlg7z3Zz6nrBoxn2vMZOLi6g04yav9kxa9SVsfBYzOZWLbifbfYtbME9nlRttj0enLENU2PaMHVQUefJwKOx+IUgtz8I5k380NV0y7ReT3DmUHDDbxXmR2F3dUftqKRk0udsuHXWdTR9bzqWjdZgmSOUn7Hczfuvxt7J1z/BWZ+GUWQzmZ3dMP5CLDnEhd8YUc6SGk5ayNZM67MLwHU03CCFuqxszZ68lezmB9nQuO1vyAvz14bDd2j5m3u63mkXz9t/xW3UWrqsZM3ev/XlI8njKaUTdaydj5uy11HLOH4W/0sky/XT21DxmZFN/9ig8pZ7T294fIbf899wed8lM5vdt29yey1LzcNPyaMvkzrowRnE7r5ELrmfgvuupb7m+5En1GDbR19KMcY3t84SnRuftkh/qVwXZdMsP87keCHXNvojSdXxcipvARbIBs3DVLKYFqGemnx00eozihfdJXHJq/5OvzW/LmlVzceCFicOnbbQvrp+i9DHeXE0xsrd5E9r2Unw6wVGoDt6c9EhURz92eouUmWXfTv/kCzNm8UZB3Wb7lNCp0Vm4ZBYv2ZM3pn+x8t5woceUPdu6j8pG/+4xDW9M32N4b1Dtnj8k243lzd+Ye5ZnQ6Z006UjiH9Ms8uh4a2zITP21t56HgzcWfsJ76Ns8RU6cn/M402yjibYGnlqeRZjeMM5B554/L11pFxrd5aO+XBMLXEb77PtF7tDeaPxWbho6vc/7pVJ5wHNXtLSo7J0usW/RuN/9yilV6btUY1eoryrLrU+arf6a1mzaA6Ouzwz+MCP9E2SGxo0PYunEbrn5jkpRO66aHsbb6Mi+WJ3eyRqwDxdBa28+WzVUc3mZ+2m7bdJs2G0mDFLt32MHpOU76J+m+4OVhchQNOzcM/UswbMJ5POGWD/UMwYtsmz3b0JLY5aHo2Z3l2X2FT0OJfetaxsmb3P9lk+m45W2TJHnzXH+Tx6jos4T/4db+6KqIifSzOtOhKzYBajfsNZ8i1MVr0kN/0S3DPR1ke1FbNw2uQziXb3TDupUHegeq/zglr6zd03u9893fy3PBk2Kzd2eB9Mf+Xm33dtDvPNnB7ded6u+RKu1Xxp92m+lIs0B9+g+TFZ/zEpkkQNmMVo2HDVcd35zdddHu9t77dEmp+3m37Ks8PObl+Sm56FeyZ/pyI+mfZdCvqHKn+E3dvoWty0FKZM76rmaD7jzlV6rTL4e2dO7uPhVC4B24VDLe4TpszGay+k06XZkQp+787JfTycik5nGSC1eG+q47IvusuduMP3dE7eW2ZtW6dOf3Pz8L/xeppBTzT99yRN4ZN5TNKq/qEYuj7b3mTe4qjl5+k2mkOz2nFGJrI+z8VvZ3Nehudsr7hcct1kWSYu+k456u/5q2ISL4qm/x71FT6Zx6hf9Q9lXuNjsZl4aylZNL3jZpbeq81zs+lsl0cvQYez1PZO/3q7f49bmEMmHbSkbnEhiW+8KY/Qz8FXy4ZJE7vuwpjFJ9cfLGdwVDqvbs28/cbzkc3Gb3Vr5u23fC6D/XmVVzJo3t4rovwxLmbT7SRzXornrE5uO7huoqltu+9Uc7T9U7Kb6tE9tv33XE3llFnM105d5GU4a/npU5Ju4q8Tr2k2TJStU+5IK3+cZkjr5Mzl2cD5ObXHVGXGHoZmvgQ/w9fL3TraRvmEp4xRA2bxomm6qswl8yY9PNv1z7HVWThl6hcKcMek791ah5jJBQ24dya8oKFmUPuQ/yXaHuyO9QpfnQyZmbfUo9FEXpvzIG39uF2t2Vm4ZR7D9NkfMxinRZ9Q4eztBJcFKJy0rBszrbtmeSOd0m0TX0nX3W+fZ9PVPr+IfjbNNKrprannUV18tdse8sj6+ojKY5I1s/bb/lu6tn3hocprNVvm5rOW+dZUA9qcJ6Kn5Iv2fXNq+iW4Z4K+c257zg6aIIOi3PIsnDOPzxnJJTP4ojl1jplNMzE/zWCmeTJrjpNN1GdTzzfVHmsfrSbsczMdzOOC5xKfJK9yo/F5uijLi0ky4EsNz98106RKUJgwT3cVeZI+TrOYKTc9T/d82xfx83X2vMtSy6n7QNOzcM/kU0vEJ9POLUH/UGRS28fFL1bPO7U4ank0Znp3XZ4q3Z/2H15VG9Ytj+WoAX8/i62emfSJxHuM4vNlnaVpvJ5io/dF7y0bts3FmbPc/H3Zn1PvAh/nS6szsz7OnIhSdPRm433ybRdb75pVm7N4a0CH/LKP8zvr98+dW52FU6Z+lQJ3TPr+rHUIxaAU295GhbtnebRjUiddGMD/sHwlscJVlRlz9hQ/G3if7bJt9piso+1NvolLPjAD77WYNnuPzqH3nQyZs7fSKXC8wmF1W+bss7x2oGIOfoP2zMx3LqnNMZ6PiZI/fTp57kuUJ+Xig2HvSY3PYgJW88wm/hwdtoVZn1SN2NJen3+f0bL0N3L5o/jnbHPoIV2WLUvWINVQwNqs1hmoNodjARInGgeGQpwo0+t0zwk9d+XhPWi8oQtY3yhvV+dB/+dV5cf/+r/ffSmzxGfpd//1HVm6y/C7V8dNF//1+3EjwTp75lck/U/126/xmi9L/dfvosg/Vt+9+n31yvOWnvvKeeWFyyAg//M/r34//iUvwP+BF3e+e/U7eeUFy1XgvXJfUboMPVcq70jlyXevfvdeuXTJfPqKVv8hlSdSefe7V7+zV767pCu5mCsV87579btfWu0SXyrmScXod69+D14xf0lDTypGpWLsu1e/h1gxJhXzv3v1u7MqNQegVV8qF5TlnFf+aukQRyoXSOXCshzBxIayz1cqtQ4ITul7x8VaduSwOKXXHQ/T7MgBcUrHO/QVc5ZOGMgl5Zg4pe8dNHiOHBandL/jv2LuMgiZXFKOjFNGwAnQOuXgOL66Tjk8Do9PiNYpB8gJ1XXKISJlIMgKq5PIMSL8CXLQkuDRKQNB0P5B5BiRMhDERUvKMSJlIIiHlpRjRMpAEPqKBI0eQuQYkTIQhGG9jsgxImUgiI+2LseIlIEgaNyJHCNSBoKEr2iwdKjcP4kcI7cMhIvGyJVj5DpK7a4cI7cMhItG0wUDWxkIF42mK8fILQPhotF05Ri5ZSBcNJquHCOXqRXJMXLLQLgUrVOOkVsGwsUHazlGbhkIF427K8fI4zFC4+7JMfLKQLjoU+zJMfL4OwiNuyfHyCsD4TmvGF1SX37ePfD+KQPhodH05Bh5ZSA8NJqeHCOvDISHRtOTY+SVgfDQGHlyjLwyEB76bHpyjLwyEB4aI0+OES0D4QWvGFl6VH4fUTlGVP0cUTlGlMcIjSaVY0TLQNAV9j6icoxoGQjqoK9/ME1Qj3VUjhFl6tblGNEyEBTtIVSOES0DQdEeQuUY0TIQFH1rUzlGbKWa+TA5RKyMA6Wv2Gq5kvUwOUKsDANlWEE5QIwHyMemSUwOEOMBQh92JgeIlVGgaPdgYCpXRoGtUOVygJivDDqTA8TKKDB0kGdygFgZBYYGnckB8sswMDTovhwhv4wDQ4cFXw6RXwaCUUy7L8fI59NsdOj25Rj5ZSAYOiz4coz8MhAMjaYvx8jnMUKj6YMZdxkIHx26fTlGfhkI38EGJV+OkV8Gwkdj5MsxCvi8G41RIMcoKAPhozEK5BgFZSB8dOgO5BgFZSB8NEaBHKOAfw2hMQrkGAVUOXwFcoyCMhA+Gs1AjlHAY4RGMwDfRWUgAjSagRyjoAxEgD5xgRyjcKV8ikM5RmEZiAD/3JJjFJaBCNC4h3KMwjIQARr3UI5RWAYioK/8YMk8+QM7lGMU8o9WNO6hHKOQfxxh7/ZQDlFYxiFAO0gohyjkIULDHoKPVx4iNOwh/HwtAxGiY7L4rV62DEWIRl78Vi9LlLEXv9XLluEI0eiL3+pl+UcSbi74kF2VEQld9Ot4BT5lVxwzeNgQJX6rly3DEqLDhPitXrYMTMiwriV+q5ctQxP6eFkQNg4XwgAt2wAPPGz4NzVED4I9rNBxwIH0QeCHlYNbAQInCMSK4IVB6ASEWLl4YRA7wSFW6JPuQBIhUMSKotwAwgiOHNoJmQOxhOASKzzkgEw4nD84K/8VXS0dUDFgEw4nEM4qQPszgQhJxBEFZw4gFA7nEI6zQk0GkMLhKMJxHGwO6QBO4XAa4Th40AGqcDiQcBw86IBWOJxJOI6HFwZxJIL6oSO8A5iFw8mEUiAIIIcTjoNHG5ALh/MJx8GfcAAvHI4oHAd/xF3IAd0WmwHCcFwRwRBFkYBiOJxVOGT1yvOXvgMLgwhyXOEQfEAALMPhxMIheN8AOMPh0MIheN8ARMPh3AJHBQ5gGg4nFw7B+xHAGo7ntLgZkA3Ha3sEAdxwOMJwCN5DPchyeQAJ3ukA4nA89fezAyCH44n44R0UcA7HE/HDOyhAHY4n4hfihUH8ONNw3BX6NgbAw+FYw3HxPgeYh0MFhMf7HMAeDocbjov3OUA+HM43HBfvRwB+OBxx4FTWoRDH8wfQxXsGICAOVaNEBzAQh5MOx8V7EcAgDocdDo4JHUBCHCrih68MABjiMBE/fHoCgIjDuYeD80IHQBGHiXUUvnDmhsDNAIw4zG0ZFAEbcZjXMigCPOJwCOJ4eJ9jcEmFP4Ee3ucAJHE4CnE8vM8BTuJwGuKUYBITCCLIgYjj4X0D0BKHMxEHx5MOACaOLyIY4GtBIIK+iCA+hAJs4vhiMQzvG4CcOJyPOBQfNQA8cTgiKfcRo4VBBDklcaiLvn18uC7GI1hSwwa5cwBEcTgqcSi+2gc4isNpiUPxBT+AUhwOTC5McwFUcQKnJTSAqzicnjgldwyXKx8sSQO04gQijvh7BdAVJxBxVCwYgjhyjOIwfJ4LGIsTtMURYBYn8FtiA0iLEwRVbChZkiB85TAHXasH3MXhdOVSmEBow1VLmACEcThqUYUJcBgnJC2eByjGCd0WZwIa44ReizMBkHFCEVP82QRMxuHo5YIHAZ5xOIRxGD4iA0LjcA7jMHxEBpDG4SjGYfibHXAawlmMwzDGTwCnIauWL0UCQA1ZEXVoCCA1ZOWqQ0MAqiErsecAnU0SAGvIiqpfIgTQGrJi6pcIAbiGrHz1I0AAryGrQP0SIQDYkFXY5joQQE5l8KGeAGJDxF4RhZsBsiGcyqCrRAQAG8KZzIUdP4DbkGrnCDocE8BtCEcz6G4YAqgNEdSGhajdIITV/hH0g4AAaEPEFhIf/fwjgNaQahcJOnwQuI9E0BofJYoEbiURuAafI5LGbhKidgbcTyJojcIZcEuJoDU+OiARuKtE0Bqf4jWD+Ala4zO8MAggBzL42gaBu0sErMGXTAjcYCJgTbkWgmxwAbCGCFjjh+iwAWANEbAGXxEhANYQAWsUngOwhghYo/AcgDVEwJrAQV0HYA0RsKZcR0G8AWANEbBG5Q0QQAFr8HUXAmANEbAGn0cQAGsIBzIOvk5DAK0hgtYEKHsngNYQQWsC9oqyJfWAQEBriKA15ToM4jpAa4igNfhSDAG0hghag6/GEEBrCCcyToj3OoBriMA1+IIMAbiGCFyDr7IQgGuIwDUhHm6Aa4jANaFi4xqIIFWvCRJAa4igNfhKCwG0hghaE6JfPATQGiJoTYiPMYDWEE5knBCPNsA1ROAafLWFAFxDBK5ZoR8kBPAawpEMWeHRBryGcCRDVvhIAHgN4UiGrPBoA15DmNhNiUcb8BrCkQxZ4REEvIZwJENWeAQBryEcyZAVHkHAawhHMmSFRxDwGsKRDFnhEQS8hnAkQxz8eQW8hohdLQ4KHQjgNYQjGYIvnRDAawhHMgRfOiGA1xCOZAi+dEIAryG+2BKLfqQQwGsIRzIEXw0hgNcQjmQIvhpCAK8hvnJTOQG0hghag8+lAKwhAtYo5lIA1hABaxQTS0BriC/Ch3c5QGtIRWvwFyagNSQQ4cO/ZwCmIZzEEMXmZ4BpSCA2NeP9E2AawkkMUWyBBpiGcBJD8OUbAjAN4SSGKDZCA0xDOIkhBB9hAKYhnMQQxXZogGkIxy9EsSMasBnCuQu+f4AAJkPEthiCz1kBkyGhCCDKpQlgMoRjF1Juo8YKgwCGYmM6ukeFACZDOHYhLv4+AUyGcOxC8IUTApgMCVmbQBBAzlsufMACJkM4diH4ygwBTIYIJqOYyAMm4womg0/kXQBlXM5diItuPHABlHHF7hl8bcYFUMZdiUCiA6kLoIwr9s+46Oe8C6CMuxKBDEtS6XpwWz7Yxc65C/HQyYwLoIzLuQvx0KHGBVDG5dyF4CsoLoAyLucuBF9BcQGUcTl4Ifi+bhdQGddpO3kAAsjJC/HQ16YLsIzLkQvBV1tcwGNcjlzwT2kX4BiXMxfi4T0DABnXEfHDewYgMq4j4oeu57qAyLgcuhCK9wxAZFwOXQi+MuMCIuOKoz34yowLiIwrTvfgm7ldQGTc6oAP+qpwAZJxxRkf/FXhAiTjcuqCvypcQGRccdAHf1W4gMi44qwPPvq7gMi44rgPPvq7AMm44sQPPvq7AMm4nLqgm9FdeOjHvbzw5MLjP9X5H/yRhSeAXLELER90G4eAeBQpHnJ4DoijF0LxRwseBRJcBgfyLjwNJI4DoYemXHgeyBX75PH+AY8EueIxRN+0LjwVxMkLYXhnAljG5eSFMLwzASzjcvJCGN6ZAJZxOXkh+OqLC7CMy8kLwVdfXIBlXE/swcBHaIBlXLGJBt+U7wIs43rizB3eNQCWcTl5IQyPIMAyLicvBN+d7wIs4wosg+4tdAGVcQWVwfscoDKuODjk46M5oDIuBy/Ex0dzQGVcQWVwiwGUccUWGhzcuwDKuOIMkcLJAMq4lLVYAaInmIzCbyB4Asn4eFcGSMYVSEZlMYieQDI+evbIBUjGFUjGx/s9QDKuQDI+PjMBSMYVSMbH+z1AMq5AMj56Us0FSMYVSMbHZxsAybgCyQR4/wRIxhVIJsD7J0AyrkAy+DEFFyAZVyCZwMUFgggKJINDcBcgGVcgGfy8gguQjCuQjMIMgGRcgWQCPNwAybicu5AADzeAMq6AMvhDBaCM67e8AAGTcX0RP3zSCpiMK3bQKIwA4fPVR5ddQGRcQWQCvHsCIuMKIhPi3RMQGVcQmRA9J+kCIuMKIhPiQyIgMq7YOIP7AgAZVwAZxfgCgIwrgEyID3MAyLhi34zCCniimT99+DKDC3iMG7SED/AYV/CYEH+eAI9xBY/BT3S4gMe4YVv4AI9xBY/Bz3+4gMe4gsfgB0BcwGPcsOXhAzjGDVsOowMa44bi7Yf3e4BhXE5a3BWKWl2AYVxOWlz8ZIkLMIy3ErkD0H7vAQzjcdLi4idLPIBhPLE3BnWcByiMJygM3j09QGE8QWHQ7ukBCONxzlJmwkEtBsfUOWdRnJIHDMbjmMVdof3eAwzGW4nwof3eAwzGEwwG7/ceYDCe2BiDfxx5gMF4jggf+pB4AMJ4nLO4K/Qh8QCE8ThncVdoZ/YAhPE4aHHxEzMeoDCeoDD4rN0DFMbjoMXF14g8QGE8DlpcfI3IAxTGc9RvPw9AGI9zFhdfT/IAhPE4Z3Hx9SQPQBiPcxYXX0/yAITxSMv46QEI43HO4uKLTx6AMB5Rv/48AGE8zlkUzxRgMB4R4cP7J2AwHhHhw/snYDAexyz4QU0PIBiPiPDhfRlAGE+kXsGXiDxAXzyxKwb3G4Avnsi/gi8neQC+eAK+4PNUD8AXT2RhIShC8AB88UQiFnztyQPwxRPwBZ/ie4C+eCIdC8G29HkAvngiIQt+wMcD8MUTOVnwAz4ezMoi0rLgVsC8LCIxC37Ax4OpWbyWTwcPZmfx3BYrYH4WET6838MULR5tqRhEj8MVFz9l5ME8LYK8qOSB8HlBS4+D2Vo4XXFd/O0A0ItHW8IH0IvH6YqLn3XyAHrxOF1x8bNOHkAvHm0JH0AvHhU5kPAHCqAXj7aED5AXj9MVF1+p8wB68ThecfFzUR5gLx4NWqwA0aMievjDB9CLx1Yt/QKgF4+J8OF5fAB68ThdwZNmeIC8eByuuC6aU8YD5MVjInzovj8PkBePiSxWK7wwzJHE4+ehO5Q8QF48DldU+kD4OFtR6gPxY2GbPhA/zlZU+gB48ThbcRWZpQB48ThbcRXJpQB48ThbcRX5pQB48ThbcVUppkAAfRFAlFx7gLx4vggg3kEBevE4XXE9PB8YQC8exysunkTKA+zF43zFxTfhewC+eJyvuBTvdAC+eAK+4JzNA/DFC4h60ADsxeN4xcUXIj3AXjzOV1yKD6AAvnicr7gUHxQBfPE4X3EpPigC+OIFIpscPtAB+uIJ+oKvpHmAvniCvqgKgwCGIoD4nATgF48TFhc/HOYB/OJxwuJSfDoA8IvHCYuLHw7zAH7xOGFxGf4iBvjF44jFxY8oeYC/eJyxuPiClwcAjMcZi4sveHkAwHgCwOALXh4AMJ4AMAzvGwDAUAFg8AUvCgAMFQAGP09CAYChHLK4DI0gBQSGcsji4gtTFBAYyimLiy9MUYBgqEAweF4qChAM5ZjFxVNTUcBgqGAweHYqChgMFQwGX7qhgMHQlcjriEaQAgZDOWZx8aUbChgMFQzGxyMIGAwVDAZfuqGAwVDBYPClGwoYDBUMBl+6oYDBUI5Z3AB9BilgMFQwmAB9BilgMFQwmAB9BilgMJRzFhc/v0ABhKGcs6B7XilAMFScTEL3vFJAYKg4mITveaWAwFAOWVw84xUFBIYKAhP4aA5EQGAoEeELMKxCAYKhpGUaSgGDoYLB4AcuKGAwVDAY/MAFBQyGcs7i4gcuKIAwVEAY/MAFBRCGCggToumhKYAw1BXpVT28MIigoDCqmmH+TlfNYimgMNRVQ2wKIAwVEAY/ykEBhKEua+lHAMJQAWEU/QhQGCooDH5IhAIKQwWFCdEjQRRQGCooTIgu2FOAYWiVHxfvoQDDUI+ov2cowDBUZMnF83dRwGGoSJSLr7JQwGGoyJWLr7JQAGKoSJeLnyihAMRQkTF3hXdnAGKoSJqLnyihAMRQryUnK0ycK/LIoEduKUydy1GLh59UoTB7rkifiy9ZUJhAl4r44e9WmENX7IHBCRZtpNEV8cP7HMykS8UyEt6NYDJdDls8Bx8VYT5dTls8PLM+hSl1qUjkhHcjgGIopy2eg0+lAIqhnLZ4Dt6NAIqhHLd4ePZ8ClgMZSJPNfoNTQGLoRy3ePgpEQpYDGViHQKPIGAxlOMWD6f6FLAYynmLR/AIAhhDOW/x8IMfFMAYynmLh6e/pwDGUM5bPPzgBwUwhnLe4uEHPyiAMZTzFo/gEQQwhnLe4uG7eSmAMdQXycbxCAIYQzlv8QgeQQBjKOctHp4TnwIYQzlv8fBk9xTAGMp5i4fnu6cAxlDOWzw85T0FMIaKTDJ41nsKYAzlvMXD09lTAGMoBy4entGeAhpDOXDxcNBKAY2hHLh4eLYqCmgMbdsKQwGNoYGIIB5uQGMoBy4entqKAhpDOXDxcNJKAY2hIm+MhzJqCmgM5cDF8/DpIqAxlAMXz8Pf3IDGUA5cPDwBFQU0hnLg4uFHIiigMZQDF8/DJ2qAxlAOXDwPn6gBGkNFFl9FUncQQHE2yUO3V1MAYyjnLR5Ft1dTAGMo5y0eRVegKYAxjPMWj6LRZgDGMM5bvDKDCZaMHiSZ57zFo2i0GYAxjPMWj6LRZgDGMM5bPHznPQMwhnHe4lE02gzAGCb2w+Ab5BmAMWwlrm5AI8gAjGErcXsDGkEGYAzjvMXDN8gzAGMY5y0evkGeARjDOG/xGPq8MgBjGOctHsMjCGAME8liGDo8MwBjGOctHsMjCGAM47zFY3gEAYxhnLd4OC9kAMYwAWPwL2MGYAwTx5Lw6TMDMIZx4qKYPjOAYxhZqafPDPAYRhz19JkBHsMIUU+fGeAxjLjq6TMDPIYRTz19ZoDHsGpLDN43AI9hhKmnzwzwGEZ89QcsAzyGkUA912aAxzASqufaDPAYJk4m4dNnBngMcx319JkBHsNcop4+M8BjmOuqp88M8BjmeurpMwNAhrlUPX1mAMgwl6mnzwwAGeb66ukzA0CGuYF6+swAkGEiry8+fWYAyDBvpZ4+MwBkmOeop88MABkm7izCp88MABkmgAw+fWYAyLAKyOB+BkCGVZcX4eEGQIYJIIPPtRkAMkwAGXyuzQCQYQLI4HNtBoAMExcZ4XNtBogMoy3HWhhAMkwgGXyuzQCSYQLJ4HNtBpAME0gGn2szgGQY9dRzbQaQDBNIBp9rM4BkmEAy+FybASTDBJLB59oMIBkmkAw+fWYAyTCBZPDpM4MXHQkkg0+JGbzsSCAZfErM4IVHAsngU2IGLz0SSEYxJYb3Hgkko5gSw6uPBJJRTIkbtx+xlikxvABJIBnFlBjegSSQjGJKDK9BEkhGMSUGSIYJJKOYEgMkwwSSUUyJAZJhAskopsQAyTCBZBRTYoBkmEAyiikxQDJMIBnFlBggGSaQjGJKDJAME0hGMSUGSIYJJKOYEgMkw/zLiWAZIDNMkBl8EzoDZIaJK5OwlUcGuAwTXAa/BooBLsMEl/EVt3WBMFapfTEgzwCWYZy8eD7B1kgYwDJMYBkff8IBlmECy+AJFBnAMkxgGR+95YsBLMMElimzh2CFQfgElvHRJTEGsAyr8viingNUhgkqg18mxQCVYYLK4PdJMUBlmKAyeAJFBqgME1RG0Y0AlWEija/CzQDLMIFlFG4GWIYJLKNyM7xPjgcQvwmLASzjCyyDbyz3AZbxBZbBe6gPsIwvsAyemtEHWMYXWAbfreADLOOLU0r4Ni4fYBlf5IrBX1g+wDK+wDL4EVYfYBlfYBn8VKoPsIwvsAx+KtUHWMYXWAY/PeoDLOMLLIOf8vQBlvFFrhj8eLMPsIwvsEyIpor1AZbxBZYJ0UVbH2AZX2AZfA+CD7CML7AMnvTRB1jGF1gGH3F9gGV8Tl48/GycD7CMLy5dwo9j+gDL+ALL4McxfYBlfIFl8KyPPsAyPlFn+/EBlfEFlcFPY/qAyvgcvKAvVx8wGV+cUkInMj5AMr7YIoPvVvABkvHFFhl8t4IPkIwvkAx+zNMHSMbn1EWhDsROJIrBs1/6AMj4nLlQfK+CD4CMz5mL4sJJwGN8jlzoCr1Szgc8xhc8RvE8AR7jCx6jeJ4Aj/HdlhmMD3iML3iM4nkCPMZ3Re5ldDebD3iM76rDB2iM74ZtjgPhEzQGf2X7gMb4gsbgr2wf0Bhf0Bj8le0DGuNz4ELxs7Q+oDG+oDH4+90HNMYXNEbxfgc0xvfaBk9AY3xBYxSTAUBjfEFjFJMBQGP86lpphUAQQQ5c8J4BWIzPcQvFDxb7gMX41e3S+KAMWIxfXTCND/eAxfjijml8440PWIzfcs20D1CMT1vmnz5AMT5tmX/6AMX4tGX+6QMU44sbp/G9Qj5AMT4T4yc+iAMU4zP1B4QPSIwvSIyiLwMS4wsSg39t+IDE+ILE4F8bPiAxviAx+NeGD0iMz2ELxY9v+4DE+OKWJYUzQPwEiFE5A8RPgBjFgw2vpOasheLnwn14K3UFYnDPwYupOWuh+CFyH95NzVkLxQ+G+/B6agFicEjnwxuqBYjBuZsPL6n2RQDxcbxxT7WvXMT34U3VgsOoTAYBFBxGZTIIYCACiN3T4QP+4oudMa2Axwcgxg9EGPFxBoAYPxBh9F+57rK8BYs6wSvqLUP/FXXCsjmPQRNBbDmBofgCmQ/wjC+utiYo6/MBnvE5gaH4ApkP8IzPCQzFF8h8gGd8TmAovkDmAzzjcwJD8QUyH+AZnxMYSnDnAzzjcwRDCT7IAz7jcwRD8QUyH/AZnyMYiufS9QGf8TmCoS6aUcAHfMbnCIbiC2Q+4DM+RzAUTxfpAz7jcwRD8QUyH/AZnyMYiq95+YDP+BzBUHzNywd8JuAIhroovggAnwk4gqH4mlcA+EzAEQx10Q3qAeAzAUcw1EUjGAA+E3AEQ/FlrADwmYAjGIovYwWAzwQcwVD8pGsA+EzAEQz10GuQAsBnAo5gqIemPw0AnwlWYv82umISAD4TcARD8ZOuAeAzAUcwFD/pGgA+E4gblvA1rwDwmYAjGIqveQWAzwQimS++5hUAPhNwBEMpOooGgM8EHMFQikcQ8JmAIxhKUdAQAD4TcARD8QSsAeAzAUcwFF/zCgCfCTiCofilhQHgMwFnMBRf8woAoAmIuCMLjyAANAGnMBRf8woAogk4hqFshXZ+wGgCjmEow59BwGgCjmEowyMIGE0gLlhi6CgaAEYTcBBDGR5BQGmCKp0vHkFAaQJBafA8qQGgNAEnMZThzyDANIHANHhCzABgmoCTGFoeh0OCAjBNwEkM9fFnEGCagJMY6uPPIMA0AScx1EffgwHANIHAND7+DAJME3AWQ3101TIAoCYQoMbHIwhATcBZDPXxCAJQE3AWQ338GQSgJuAshuLffgEANYEANfi3XwBATcBZDMW//QIAagLOYihOdQIAagLOYih+oVYAQE3AWQwN8AgCUBNwFkMDD+2iANQE4hwTfmw0AKAm4DSG4kc2A4BqAoFqAvwZBKgm4DSGBmgajgCgmkCgmgAfRQGqCQSqCfFnEKCagOMYGuLPIGA1AccxNMQjCFhNwHEMxc9KBoDVBBzHUHyvaQBYTSBYDX7+MQCsJhCsJsTnooDVBJzHUJyfBQDWBJzHUJz7BwDWBJzH0BCPIIA1AecxDN+3GQBYE3Aew/CrrAIAawLOY9gKfw8CWBNwIMPwg4cBoDUBBzJs5WG0JgC0JuBAhuEHDwNAawIOZBi+kS8AtCbgQIbhV1kFgNYEHMgw/CqrANCagAMZhm9aDgCtCTiQYQ4+kwG0JuBAhjn4MwhoTcCBDMM3LQeA1gScyDAH/5oAuCbgRIY5+CgKcE3AiQwrCQxWGESQIxnm4M8g4DUBZzHMwd+DANQEnMUwB/8eBKAm4NiFOfhMBjCZgGMXRvBRFDCZgGMXRtDcigFgMgHHLgxPcxUAJhNw7MIIPooCJhNw7MJwJhMAJhNw7MJwJhMAJhNw7MLwTcsBYDIBxy4M37QcACYTcOzCcCYTACYTcOzCCHpdVwCYTMCxC8Ov8AgAkwk4dmE4kwkAkwk4dmE4kwkAkwk4dmE4kwkAkwk4dmE4kwkAkwk4dmE4kwkAkwk5dmH4PuQQMJmQYxfmos9gCJhMyLELw/chh4DJhBy7MHxrcQiYTMixC8OZTAiYTMixC8OZTAiYTMixC8OZTAiYTMixC8Ozj4WAyYQcuzA8+1gImEzIsQvDs4+FgMmEHLswnMmEgMmEHLswnMmEgMmEHLswPPtYCJhMyLELw7OPhYDJhBy7MDz7WAiYTMixC8Ozj4WAyYQcuzCcyYSAyYQcuzD8tqIQMJnQCdSDTAiYTCiYDL5SEAImE3LswvAdziFgMqFgMtiyAqMUW1YIAagJOYth5e1BzfddCEBNyFkMwzOHhQDUhJzFoOvXIcA0IRFBDbDMJiHANCERQcX7FsA0IScxDN8hHQJME3ISw/AkYyHANCFRJgsKAaQJOYdheD6yEECakHMYhucjCwGkCavrlrBF9BAwmtB1W/wGGE1Y3baEVwyiJxANutAWAkITcgjD8ARqISA0obhsCd/TFwJCE7oieOgeiBAQmrAiNK8oXQYwegDQhJ6IHv70AkATeiJ66FJTCABNyBkMw09ahgDQhOKuJTwigM+EHMEwPItbCPhMyBEMw7O4hYDPhBzBMDyLWwj4TMgRDMOvDAoBnwk5gmH4bT0h4DMhRzAM3yQeAj4TcgTD8CxuIeAzIUcwDM/iFgI+E3IEw/AsbiHgMyFHMAzP4hYCPhNyBMPwLG4h4DMhRzAMz+IWAj4TcgTD8CxuIeAzIUcwDM/iFgI+E3IEw/AsbiHgMyFHMAzfFx0CPhNyBMPw3csh4DMhRzAM370cAj4TcgTD8N3LIeAzIUcwDN+9HAI+Ewo+g+9eDgGfCZl6M1QI8Ewo8Ax+n00I8Ewo8Ay+eTkEeCYUeAa/zyYEeCYUeAa/diYEeCYUeCbEow3wTCjwDL4fOQR4JhR4Bt+PHAI8Ewo8g9/4EgI8Ewo8g+8xDgGeCQWewbfshgDPhJzA+Pg+3BDgmZATGB/fhxsCPBNyAuPjOcNCgGdCTmB8fJ9qCPBMyAmMj2/kDAGeCcVxJhzdhQDPhJzA+Di6CwGeCTmB8fEthiHAMyEnMD6+Xy8EeCbkBMbH9+uFAM+EnMD4+H62EOCZMBCJt/EIAjwTcgLj45vDQoBnQk5gfHxzWAjwTMgJjI9v4QoBnglDsaEbfwYBngnDllkooDMhBzA+npsgBHQm5ADGx9MNhIDOhBzA+PjlHiGgM2EoAohHG9CZkAMYn+DRBnQm5ADGoVgS6xDAmVBcfk3RrY4hgDPOigMYn6D9qPpVKu6oL9StfpWKE+UtudWPUmlxrElR2oWlPfWtutWvUnGqvle3+lUqztQ361a/SsV99d261a9Scf5AEvSBrH6Virfkfqp+rRd3WrI/Vb9KxVvyP1W/SsVbMkBVv0rFXfW59OpXqbinPple/SoV588nfi1M9atUnKmPsle/SsV99WH26lepeMu20+pXqXioPtBe/VovLs494Qyn+lUq7qjPqVe/SsWJ+qR69atU3FWfVa9+lYp76tPq1a9Scao+r179KhVn6hPr1a9ScV99Zr36VSoeqE+tV79KxUP1ufXq13pxkaIGP7le/SoVd9TH0atfpeJEfSC9+lUqzt+j+DJO9atUXOx7Q15K1W9SYXF9IXoMtfpVKs5U949Xv0mFfSUsqn6USovBV2UJDChHNz5BYWb1a724J16oPvb6rX6VivM5EQlwYzwYUA5wfIKmEa5+lYrzgLroanD1q1TcUxKs6kepNB978XuMql+l4qzl7e7BkHKS47sEDakHQ8pRjo8vdVW/SsV5SPEriqpf68XFoSn8kqLqV6k4Dyl+9VD1q1SchxTfhlz9KhUXIUVnpNWvUnE+23XROWn1q1Scx9RDZ6XVr1JxPuP1FF2AwqByuON7imkPhVHleMf3FC93CqPKAY/vKaJKYVQ54vE9RVQZjCqHPD6ey7L6VSrOo+qh35TVr1JxHlVPEVUGo8pRj+8pospgVDnt8akiqgxGlfMen6KbCqpfpeI8qhQ9Qlr9KhXnUcXP21S/SsV5VPH039Wv9eKc+/gUPdVX/SoV51GlKIevfpWK86hSlMRXv0rFeVQputWu+lUqzqOK33RT/SoVp8qPwupHqTQPqmqS5MOgCkKkmiT5MKiCEeGrUdWvUnEeVIZuD6p+rRcXnIihG4SqX6XiPKgM3SJU/SoV50HFb8mpfpWKuy1uD2BMBS5SzcACGFMBjPDVm+pXqbgIKrpiXP0qFedBxTdJV79KxXlQfcU4EMCgCnDkK8aBAAZVoCP84GT1q1ScB9VHt/lVv0rFeVDx7dLVr1JxVz2VDWFMOSRSTmVDGFNx6gqfyoYwouLUlWIqG8KAVhBJZQkMaBi0TWVDGNAwbJvKQpTkCJSEr3JVv0rF22a+DkRJzqpt5utAluSs2ma+DoRJzqpl5utAluSsqHpy6kCU5HBY5OMLetWvUnFftQeg+k0qLB5R/MPagSDJWYlHFH/DOBAkORwV+QF6yVD1q1TcUc/wHciRHE6KfHzNsPpVKu62+BxiJIeDIh9fY6x+lYrzgOKrjNWvUnEe0QD/aHcgRnI4KPLxlcbqV6k4jym+1lj9KhXnvDdw0KfUgRjJEZdMec4rL1y6IbQdYiSnumdK8dhBjOQQEVRFX4cYySHq/QfVj1JpEVT85ehAiuSQNuLgQIrkiJNa6MDrQIbkVCe18MIwoOKkFj6mOxAgOWIPkGJMdyBActxVy5juQIDkiKQ6ijHdgQDJcUnbIA0BklMBJEVvgQDJcb22QRoiJKc6toUP0pAgOa54SBVjHWRIjuu3IAQHQiRHQCR8wbz6VSrOH9Iy2Qg2NkKI5HBM5JTpRrDiECI5HBMphwAIkRyOiRz8PFT1q1TcbRsCIERyOCfy8evVql+l4updCtWPUmkeVDx1U/WrVJwHFU/eVP0qFRdBxeeYDsRIDgdFStNhTAVFUlUOKZIjKFKo6DGQIjmCIoVMUTuMqaBI5ZZOtDiMqaBIIbpPt/pVKs5fp/jGhepXqThr8SOESA7HRAG+0aH6VSoe8OKK7gghksMxUYCfU6p+rRfnmEhlOmRIDqdEAX6uqfpVKk54cRzHO5AhOaztZQoRksMhUYBvp6h+lYpTXhxdYq9+lYozXlwxD4AIyeGQSGk6DKkgSKpHAxIkh4mQKqYNkCA5nBEF+HGr6lepuDrDYPWjVJqHFL9TovpVKu7y4orOCwGSwxFRgB/Rqn6VivOY4js9ql+l4m2PKQRIDkdEAb4zpPpVKs4fU3xvSPWrVJzHFN/xUf1aLx60PaaQHzmcEAWOYnCE/MgJSGtxGNNAxBSHgg4ESE7gtRaHMQ1ETBUvawiQHI6I1MVhUDkiCvBNK9WvUvGgze0wppwQOQyfVEN85IRtIYX0yOF8KCDOK8qW1IM6IT1yOB9yCJrLtfpVKu6qU79Wv0rFeUgVuz8cyI+csG2GBAGSIy67UngRAiQnbBt4IT9yOCFSexEGVOxEUnoRRJSI5MoKLxLIj8hKhBQfvQjkR2Sl3k9W/SiVdtVeJJAekZX6YEP1o1SatniRQHxEOCBSeZFAfEREnmWlF31YXIQUn2MQCJAIR0QBfnaz+rVenCOigOAog0CARBwRUnzWQCBBIpwRBQR/sRNIkAiHRAF+8Uz1q1ScP6X41TPVr1JxHlX8HGf1q1ScD7wuDssJREjEaXlOCSRIhDMiZZeBBIlwRhS4OIknkCARzogCF1+RI5AgEc6IAvywaPWrVJwHFT8uWv0qFW+Z9BJIkIggSIqZI4EEiRDa8lFFIEEihLV8VBHIkAjnRIFi4Z9AikQ4KAoUC/8EYiRCRFAVvR1iJMJBUaBY+CcQIxGR9QfPFlb9KhXnQcWPyFa/SsX5k4ofkq1+lYp76rx91a9Scf6keu4r6i/dhlIYVA6KAsWuAgIxEnFb0qhVv0rFeVDxc7jVr1JxHlT8JG71a724J4Kq6GEQIxEOioL/j7JzTY7kVrL0XvS7TDfwcAfQO5g1jI3JWGSqiiMWycuH1Oq22ftYwj2CgUMclPqXsgRPMDIczw/HHfNoXC8dzM2ppIUhRoodFNV5RK6XDuZ9+J3H5HrpYN6dOo/K9dLBvHt1HpfrpYN5WSzxI3Kk2ElRnSdX89LBvPGQRC89m3dUVIW0GQRJUcJiiR8RJEVLD8SeHUFSFPMq6XsIkqKYV8kMjyApWpKgefY0Lx3MTQg65ZoRQVI0kETUGRFBUjSQRNQZEUFSNJCkZEBFkBQ7K6rzMGEvHcwDT/7mpYN576pEnhGRJMUOi+o8XNhLB/Pu1Hn8rZcO5r2rzoNqvXQw712VyDMioqSohac+89LBvHtVSYNElhQ7LWppCtojoqRoKImoOSKipNhpUSVqjogsKZZFlL2XDuaJn0JFREmxLA7EI5KkaJFq83BmLx3MlQc0e+lgXnjGMi8dzOvCR0iSopEkoomJSJJi3VY+QpQULafQPKGWlw7mvZ/OI6G9dDBfnIlHJEnREgsxJyFJipZaaJ5Xy0sH895NCxmqkSRFI0mFTMBIkqInGJpLkSKipFjNqWR4RJYUOy6qhcyoCJOipX6ep97w0sE8UkFHRJQUOyyqREQTESVFSzVEgkIioqTYaVElUpSILCk28ykZvxAmxcaVKxFZUrSQtm0+wCBKim1x1BaRJKXOisgIkBAkpW1B8BNypLRZF50vAxKCpLQt9qcJQVLqrKjOg+69dDBfkMGEICkZSCKnxAlBUtoWyCEhR0rGkeo89ikhR0rbwp8JMVIyjEQOrBNipBRWDkWKlIwiEe1PQoqUwsqhCJGSpSEiqtuEECmFlUORISXPRDTNcOOlg3lZqLkSQqQUzKPzVV1CiJTCyqPIkJIxJCKJSsiQkjEkIolKyJBS5CNuQoKUOiSqRLKUECGlaF10PiYmREipQ6JKVCgJEVLqkKi2+XohIUJKhpCI1iIhQkqGkOa5GLx0MO+z6Dwbg5eezRO9W8jLBuPu0XnyBi8dzOPqvSBASgaQ2HtBgJQMIM2zr3rpYC6LH4oeNX7U5kLkhPwoJT6HJqRHyejRPE+Flw7m5s+5Fj0hPUp5NYsiPEp5NegiO0rGjtp8SZ+QHaWcViMdsqPU6RCd6ZAdpbxa6SZkR8nYEZvqkB0lY0dtmvzTSwfzyq9k8dLBvPFLWbz0bG5ppefXsnjpYL5yKqKjJHGBnBOio2S5pee3vnjpYL44ZEtIjpKRI3KulZAcpZUEKSE5Sp0NtY3M6kiOUmdDbZtvXhKSo2RZjOa5c730bG55psmRXEJylHRxb42XDuaLY9OE4Ch1NNTmqWK8dDBfuRS5UVLhl+h46WC+cilio6TmUjLXITZKai4l0xdio2TYaCOTAHKjZNyIkMmE3Ch1MtSINishN0qdDLWNTAPIjVIxn85DDBKCo9TZUNrIKhPJUSrCLzvy0sFc+XVHXjqYr/YwCI5Sqfx6JC8dzFcrXgRHqaOhcCVq7detJDBHcJTs8jByjJ8QHCW7N4zkH0kIjpLdHDbP9uulg/mqnyI4SpWnbvTCwXrVTREbJb8pbI5eEmKj5HeFkcEOsVGy28JY60JslOy+sPmdUF46mK8mU6RGqVkvJZMpcqPUyVAjwsKE3CiZBIktBZEbpU6GGtEhJuRGqZOhRnSICblRakunIjlKbelUREepLZ2K7ChvK6dmhEd5BY8ywqO8rZyaER7lbeXUjPQobyunZqRHeVs5NSM+ytvKqRnxUbb7xIjsIyM/yttCKpgRH+VOiBpRrmbkR7kTolB1qrjKyI+yXSs2v0XOSwfzxRIpIz/KfrPYPCdWRoCUOyJq83svvXQwF36nnZcO5ovBNyNAyh0RtTBfxWQESDmsXIr8KFs+a9bvECDluJB/ZuRHuROiFuYb5Yz8KMfFZX9eOpgvkGBGgJTtrrH55YBeOpgLvx7QSwdz5RcEeulgvlggZeRHOa48ivgo251jRMWTER9lu3WMdQwESNkVSKQxIkDKdvMYUc5kBEjZ7h4jypmMACkbQCJZyzICpGyBbCQNWUaElC0XEklDlhEhZZMgzW8Y9NLBfOVUZEg52cjLXgw61fJckzPqjBApZ+unpOMhRcp2GRkR/WSkSHmR7doLB2sbeefkNiNEyh0TNSKNzwiRcsdEIc23SRkhUs6rI/CMECl3TNRIVseMECkbRJrfHOmlZ3NZjb3IkHLHRI0gp4wQKXdM1AgVygiRskEkkuYuI0TKdkXZ/HJKLx3MhV9P6aWDufILKr10MC/8ikovHcwrv6TSSwfzxfY0I0XKnRMRwXtGiJR1tTvNCJGyXVg2vzHTSwfzVT9FiJQ7J6JPjh5dJMX2wsG6r3njHPNkhEhZV9r7jBApa+XXfXrpYL5yKDKk3ClRI1gwI0PKzpBIP0KGlC2OjRCqjAwpO0Mi/QgZUu6UqM0vffLSwVwWhCojQ8qdEjFClZEhZVMfza9O9dLBvPLLU710MG/8+lQvPZuvAtkyQqRcw6oNIETKNa7aAEKkbIFsrA0gRMqdEzFKmZEi5SqrJoMYKVddNRnkSLmWVZNBjpQ7KaJNBjlSNo40v+bWS8/mq1C2jBgpN3PqHH9k5EjZQtlCmAptMnKkbBzpmvBhcnSWkSPlZj11Li7OyJGycSTCYjJypGwcKc3P8TJypNxJEQt7yciRcidFdLRGjpSNI82vI/bSk7lsC6cKYiTppIgtBwU5khhHIrhXkCOJ3UdPNI6CHEk8GdJ8AyHIkcTupJ9fkOylg7k5dc5uBDmSGEea36jspYP5YjcjyJHEOBLh4IIcSYKdiM/HU0GOJJ0UNRLKJMiRxC6on18H7aWD+WKVJMiRxO6oJ/nQBDmSrIRIghhJgrl0PokJciQxjjS/t89LB/O6OA8VBEliIGl+nbWXns3tuvr5hdZeOpgveK8gSBIDSfMLsL10MF+5FEGSGEiaX5jtpYP5yqXIkcQ40vyCbS8dzBccSZAjiSVEIno+QZAkBpLmV3J76dk8rUZe5EhiHGl+hbeXDuYL2CuIkaSDopbmanFBjCSGkeY3hHvpYL7yKFIkMYo0v1HcSwfzwu8U99LBvPKLwr10MG/8qnAvPZvnlUuRIonFsZGYJEGKJNkuqZgvSgQpknRQ1DKZHREjieXUnt9z7qWDufCbzr10MF8AfEGKJJ0TNUJkBSmSmBRpfpG6lw7mi/2pIEQSWeFeQYokRpHIOYggRRKLYptf6+6lg3niF7t76WCe+dXuXjqYr/opQiTpmKjNL3310sF8NfIiQxKTIs0vifXSwXzlUmRI0jFRI8GsghBJdDWVIkOS1aX3XjqYr6ZSZEjSMVHLc0wtCJGkc6JGTgcEKZIYRSJxtYIUSSyCrZGhFCmS6GrFixBJLBkSkaMKUiQpq5wcghRJ7JY1kmxLkCJJWU2mCJHELlojqbkEIZKUhWhFkCGJ5UJicwYyJCm6mjOQIUkpqzkDGZJ0SqQkT5ggQ5KVEEkQIUmnREoSfwkyJPEINrJsQIYkdeVSREhSzaWkIyFCkpUOSZAgiQewkW6HBElWQiRBgCQdESlRcggCJFllQhLkR1JNATon/YL8SFb8SJAfiSXSJnkIBfmRmA6JRPkL8iMxfkSksYL8SCx+jf1S5EfSVgk5BPmRtFVCDkF+JJ0QaSC9FPmRtJVPER/JKoJNkB6pRbCRZAmK+Eg7IGokWYIiPtIOiJRIeRTxkXZAxDbgivhIN/PpfEeliI90FcSmSI/U6BE58lWkR9r5EKOfivRIt1WCK0V8pNsqwZUiPlLDR+TmC0V8pIaPyM0XivhIgzl1fuuBIj7SYE6dr2EV+ZFaIFuYUxVFfqQdESk5yFcESLrSISnyIw1l5SXkR7rMhqTIjzTY4DvnvIr8SDsh0jgf8BT5kXZEpHG+v1MESNoRkcb5FkwRIGlnREqiHhQJksbFfKoIkDTKYpGsSJC0MyIWsq1IkLRDIiVnVYoISaMFhM+XJYoISTsk0jhfaCgiJF0hJEWEpMk66jyYUREhaadEjWgQFBmSOkMiLQYZkqa8CDZRZEjaMVET8mIQImkyp87XVIoQSdNic6rIkLRToibz0EpFhqQmRSIJWRQZkuZtobtThEhqUiTmJYRIajm1yzxaThEiqeXUJuc9ihBJ89KpCJHUtEgk94wiRFLTIl1Ptj4rKBQhkhpEYi0GIZJm66hzBKoIkbRzIiXXtCpSJF1JkRQhkloqJBKKpwiRtGMiJfEgihBJOyZS1lERIukqnk2RIamYS0kLQIikBpFI4iRFiKQW0EaUKIoUSY0iKVmZIEXSDoqazu/kUsRIahiJKCgUMZJ2UqQkcb8iR1I1p5IpEjmSqjmVTEsIklRN3MseBr2qi1AZRY6knRQpOU9U5EjaSZEmsmRDjqQW0kZuqlIESbpSIylyJO2kiGX8UeRIateyEUahyJF0xZEUOZLarWyEaChyJF1xJEWOpJ0UkavIvXQwXy18ESOpXcpGxLeKGEnLYoOqSJG0WC8lsy9iJDWMRA5xFTGSGkYiscGKGEk7KVKielfkSGociajeFTmSWiYkcg6iCJLUQBIh8oogSTsrUsLYFUmSGkki1FyRJKllQiJCdkWUpIaSCKpWREnaaZESVK3IkrTTIiVwSJElabOMZcSryJK0WdQ/8SqyJPVcSMSryJK00yIlKSAVWZI2Xa1jkCVpsxm1fcnbr1cxQivbx8fwJadfc0hYCfraFEpfkvyqRb6If8Bvocs7TGplHoStiJqKoabrynUCyQqipmKoidzDVxA1FVMqlfneqCBqKhbxRmtPaN7XxSRbVkHUVCzijf5UQXNdPoyieXc5Sa5VkDWVTpMYmirImoqxpjDfvhRkTcVC3gj0KMiairEmkumrIGsqnSaFrXyR7dcgaI1O7TApbHNNYUHUVIJdrzjvaQVRU+kwKZBAoIKoqZhWieTvKsiayirxdkHUVDpMaiR/V0HUVDpMauQKvIKoqXSY1MildgVRU1lJlQqSptJZUiNpsAqSphLTqishaSpGmkiK24KoqRhqIrmnCqKm0mFSq/MNRkHUVDpMaiSbVEHUVKI5lfRrRE0lttWogaipJHPqfMYtyJqKsaY638IWZE3FWBO5pqwgayrGmkjepIKsqRhrIvmkCrKmYqyJ5JMqyJpKp0mtzddRBVlT6TipNTLTIGwqBptI7qSCsKkYbGqkESBsKpY7qZHxFGFTMdhELswqCJuKwaaN3IFVkDYVo03bRgYaxE3F8idtJI9LQd5Ust20SLKnFAROxYDTRm62KoicSodKDK4VRE4lr4TdBZFT6VApbGS3WZA5FbEbNOd3IhaETqVjpbBtpKUhdSriziVNDbFTEXcuaWvInYq4c+eL9oLkqYg5l2QhKIieiphzSV6BguypdLoUNnIaWRA+FbHEoWG+cC9In4qYewNpbIifikXCbYE0B+RPRc2/ZMtfEEAVNf+SXXxBAlXU/BvIDIEIqlg83BaIf5FBlY6ZyH3mBRlUUfMuyU9WEEKVjpnYtfMFIVRRc24kjQcpVFFzLokuLcihSjHnkvDSgiCqFHMuOVErSKKKxcURZXNBFFUMRelccVAQRRWLi5tuKsMWZbqrLIioSpHleIeMqnQMRcc7hFSllOXgjpSqlLocj5BTldKW4xGCqlK35XiEpKrUsByPEFWVGpfjEbKqUtNyPEJYVWpejkdIq0qV5XiEuKpUXY5HyKtKLcvxCIFVqXU5HiGxKnYNHBmPEFiVti3HIyRWxdRPbDxCYlUseo6OR4isSkvL8QiZVWl5OR4htCpNluMRUqtiGbzZeITUqlgGbzYeIZ8qnsM7zvVYBclU6ezpJzyrIKCqm7t43kArEqq6+Zg9D0ytiKjq5j6eA4eKjKra3XAbiWKsCKnqltfPk9Fe1s8jaK/r51G0tw5MzjUrgqraURS77b4iqKoGqrY07wIVSVU1UrWRM7OKqKoGcy85wavIqqqzqiTT3UNFWlWdVpFjtoq4qhquyuFLbr+mhq8HcVU1XLWRYLmKvKoGXT8+erczKf446FwTR23kHKcisqrBvTsfzSsyq9qpFLtxrSKzqtGcSw5+KlKrGs255OSnIraq0Zyb5/fuVeRWNVrfzXPNXkVwVaN5lxz+VCRXNZp3yelPRXRVDV2R8OyK6KoauiIB1BXRVY0rPWNFdFXTKjigIrqqyX1LOhayq2rsiv1WZFfV2BUJRa/IrqqxK/ZqkF3VTqfoq0F2VTud4q8G3ZpsSCbHdBXhVU3Wa8mavCK9qsl6bW7k16Jns43Jss3tkV/VbK6VMH8eBFjVQ+7mUsKK/KpayB1JeVARX1XDV+RkpSK9qp65ibQzhFc166qdIbuqJpdikzOyq5qXPRbZVc3LHovoqsqyxyK6qo6uyJFqRXRVO5vKc8hfEVxVB1fkBLYiuKoOrogguiK4qg6uSG6oiuCqOriSuSS6IriqDq6IEq4iuKoOrkh6qIrgqjq4IvmhKoKr6uBKydyJ4Ko6uCKr/Yrgqjq4IqKyiuCqdjJFGxtyq+rciojQKnKr2tFUiWQMQXBVHVyRK/Mqgquq5l0lMzOSq+rkisjWKpKr6uSKZP6pSK6qkyslCzUkV9XJlZLWg+SqFj/SJa0H0VUtS+8iuqrFvFvIQg0hVXVIRe4Tqwip6kpIVZFRVWdUbP5ERlWdUbH5ExlVdUbF5k9kVNUYFVu0I6KqdT3dIqKqjqjIbWsVEVV1REXuT6uIqOoqLq8ioKoOqNjLR0BVHVCxl4+AqjqgYi8fAVU1QEVfPvq2tvXLR986oSK3y1UkVLWZc8kNlhURVTVExR4fCVV1QlXIuIOEqjqhIglSKhKq6oSK5DypSKhqM++SNCYVEVVty/0tIqrqiKqSSQ4RVW3mXULMKsKptkrz1BBNNUdTJJVJQzTVtoWwtSGYap08kYutG2KpZliKJMVuSKWaUymCgRpSqbYtBuSGTKp16EQfvaB1XT56RfO2aDINgVRzIFXn68aGQKqtrptriKOaXTdHfinCqGYwiv1SZFHNsjyRFKENWVQzFjVPndmQRLWw2tM2BFEtlEW+tIYgqhmIIhExDTlUcw5F0tk05FDNtFMkfqIhh2qWMJxEODTEUM0xFMmW0xBDNVNPkYiIhhSqOYUiIqGGFKo5harzMbghhWqmnyLRmg0hVItlkTKpIYRqDqHmOLshhGoGoTZy11tDCtWSdVciWmqIoVpadVeEUC3F1eKjIYVqKa0WHw0xVEsretwQQzXDUFubL4sbcqiWbHZt85VfQxDVHEQR0VVDENUcRJHMOQ1BVOukqeg8lLwhh2rOoRrp5cihWrbTPdIyEUM111GRi/8acqiW7bh+HmLdkEM1l1E10m0RRDWXUTXSbZFENZNRBXK7dEMU1fJq6dQQRbVsAmUSddiQRTVjUYEkaGkIo5rpqAJJc9KQRjWjUYEICxrSqGZCqkB0Dg15VOvAqSQyeSKOaoajAokjaoijmuUSJy8TYVQT9y1pmgijmlg+ElI7ulYWkUENQVQTd+wcXDUEUU1Xu9mGHKp10FTT/EimIYZqhqEI8mxIoVrnTDXND3AaUqimq+QVDSFUM/EUQc0NIVTrlIllLmjIoJquEto2RFDNIvhIfomGBKppW/ZvJFDNMooT/NoQQDXLBcUWFcifmimn2KtB/NQ6YKKvBvFTK95ZydCK+KkV9+tcJ9IQPzXTSAUiMmoIoFrxvCRxeqNpQwDVigeLkLESAVQzABWIyKghgGoGoAK526chgWpGoAIRGTUkUK16FmoynCGBakagAhEZNSRQrfqRD/EvMqhmDCoQ2VBDBtWMQQWiA2rIoJoxqEDyfDRkUM0YVCA6oIYQqhmECkQH1BBCNYNQgaTXaAihWqdMtDcig2qeZDzOj04aQqhmECoQSU9DCNUMQgWSd6IhhGrN3UuaA0KoZhDquvuc26N7O2aqiQyFCKFaq4vUPA0ZVGurDDQNEFTcTB8V5noeLx7s+9529uheNhjbFTsTQuBlg7FvfmZk1EsHc6MV87ozGttxD6tb0Lyn/roeGX/ehnnpYG79dZ68wYsH+66JilOE7aWDueWknq0SvPBsbQBq/iQBvbmgT144WNuOZ/4gAf1p9Ik9CbrThFDXd5jbr1fNYQgpfZH4a6wNv4ve7bBprQx0o+Fb3m2ncWJePNi7l6cxQl482NuonKahG1482Pfd7Tz0y0vP5tE77jTSw4sHe5t00zTSw4sHexuV0zSsyIsHe3N3noYVefFgbw7P07AiLx7sbVTO07AiLx7sDV7Moky9cLA2dDGVcXjpYO7kYj4ORnStUamQpyFOXny2NyoVMmmaCX1r4qgexjq1R98alwqZNM2EvjUuNY+S9dLB3F1LmmZC1y5SkXvhYG39NpOGnNC1izRSXjhYW6/NpNkndK2Jo4KQZp/QtQalgpBmn9G1Jo4KQpp9RtcalQpCmlpG11p031UxP7dH37o8ap6vzIsHe+u2QppaRu86lhLSdjJ617BUmOf98uLB3vw7T/zlxYO9+XeeDsuLz/bOpZT4V9C/zqWU+FfQv86llPhX0L+mkwpK/Cvo306eypecf02fpnhB55pIapr7ywsH6+7aMj2k8dLB3DyrpKUJetYUUtcDqbk9etYSS83Jv5eezY1Lza9g99LB3P1K2rGiX9X9Stqxol/V/UrasaJfTSB1fftze3StZSmfHxp56WBu3Xau0PHiwd6cO1foePFgb86di1C8eLC3U1uyxFZ0rumjwlyz4sWDvXl3Lsvw4sHevDuXZXjxYG/enessvHiwd+8SdxX0rhOquc7Ciwd7c+9cZ+HFg725d34DjBcP9ubeSppDQfc6oaqkORT0rxOqSvxb0b9OqOaXqXjxYG/+nR8oe/Fg3/07DVPzwsG6j8nz5GpeOpibc+fnyV482LtzSeOp6FzHU/MDYi8e7M258zNZLx7sPVkNaTwVnet4an6s6cWDve+E9u3llxBaum5qW8ZhvaGjnVWxca6ho51VsXGuoaudVbFxrqGvjVWxca6hqx1VsXGuoatbWY5zDV3d6nKca+hqE0zRcQ5pVXBaRca5gLQqbGE1zgUEVmGLq3EuILMKxqzYOBcQWgWTTbFxLiC3CpusxrmA4CpsuhrnApKr4OSKjHMByVXwtFNknAuIrsLGw3G98Gzd8RQb5wLCqxDCapwLiK9CiKtxLiDACg6wyDgXEGEFR1hknAuIrYIJqNg4FxBYBQdWZJwLCKyCaajm3DAgrgrh5+ni3Gj4lo/V8+1FQGoVLKJvur0IiKyCIav59iIgsAoGrMj2IiCvCs6r5il/vHiwd+/OtxcBeVVY3JjnhYO1+3a+XQjIq4IlPJ9HonvpYO5T8Hx3ERBYBQdW85xCXny2T54wbr67CAisgsmo5uEOXjqY+6n99ETJiwd7P9+db6oDAqtgwCrOxSRePNh7PN/0/jEvHuzV7Mkwi8gqWDaqeUoyLx3M/Y6C6QGaFw/2HvdFGhsyq+BCqilKDUisghGrOE8p5MWDvTuXtDUkViEvVK1eOpibbwNpmgisQl77FoFVyAvOHBBXBcNVMczxUEBcFQxXxXk+ES8e7M21YY6HAuKqINvy1yKuCh7UN/+1CKuCwaoYyOyAsCoYrIqBjMkIq4K4b8mYjLwqGK8qUymSlw7m1m0D6SdIrIK4c0nLR2IVxJ1LWj4Sq2BSqhhJU0ZkFQxZxUgaGzKrYMyKNjZkVsHFVJEMs8isgjGrGEnjRGYVjFnFSJoPMqtgeqoYSfNBaBUMWsVImg9Cq+CKqkjaA0KrYNAqRtIeEFoFdf+S9oDUKhi1iom0B6RWwahVTKQ9ILUKRq1iIv5FahVcVjW/nduLB3vzLzmBDUitglGrSE5gA1KrYNQqkhPYgNQqGLWK5Eg1ILUKRq0iOVINSK2CUatIjlQDUqtg1CqSI9WA1CoYtYrkSDUgtQpGrSI5Ug1IrYJRq0iOMQNyq2C6qkiOMQOCq2DgKpJjzIDgKnQyRTYTSK2CUSuymUBmFYxZsc0EIqtgyCqSA9WAyCo09yxpaYisQnPPkpaGmCo09yzZuiKmCoap4jy5uhcP9ubZeXZ1Lx7szbPzXABePNhbz51H93vxYG89Vwj3QE4VjFNFIQty5FTBOFWcX+jjxSf7aJwqzqP7vXiwN//KHE1E5FTROFWUuX8jcqponCrOo/u9eLA3/+rcvxE5VTROFefR/V482Jt/5+H6XjzYm3/n8fdePNh3hZXO9RkRMVXcTHoz301H5FTROFWZSp+9dDDvcSVlKlH30sG8h23Gaei9lw7mPfCgTHXbXjqY54XKKCKjih1ClTJXfkREVDG4X+cjeEREFU1TxcapiJAq+m18ZJyKiKdiaKtxKiKeinFbjVMRCVWMYTVORWRUMcbVOBURUsWYVuNUREgVY16NUxEhVYyyHKcQU8Woy3EKMVWMZTlOIaeKxqnoOIWcKnrOKTZOIaeKzqnYOIWcKpqwio5TCKqigyo2TiGoiimtxinkVDHl1TiFmComWY1TSKlix1B0nEJIFTuGogMPQqrYKRQdeJBRRYv1YwMPIqqY3bHzBVhESBU7hfoJ7Y6IqqKjKiLqiIiqYvZpd75si8iqYl5yyIisKq5ZVURWFfOSQ0akVTGvOGREWBXzkkNGhFXRYRXRsESEVdFhFdGwRIRV0WBVLPP9UERcFSXy6xG8dDBfdl6EVdGUVaw3IquKIqveiKwqiq56I6KqKGXVG5FURVlc7+alg/nPU7W60flbjqvmdw958WAf6PYvIquKq8A/Lx3MreeW+VY3IqqKjqrKfKsbEVVFR1Xzq428eLC3nju/rMiLB/uyeDfoXRdXzePJvHiwt347v6zIi8/2hR/6RYRUsVOoK+OZtkxkVLFDKNlIN0FEFTuDImeiEQFVLHYpWJ2/F+RT0dNOkcrRpU6nCI2OSKei0ymiZYhIp6LTKaJliEinotOpebIbLz7bO52aJ7vx4sHeRuM6Dd/34sE+9szBcwQTEU5Fh1NE+hARTkWHU0T6EBFORYdTRPoQEU5FU1XFWsjPRfcan4p1GvLqxYO9u5dMnoioYmdQpBMin4odQNFOiHgqdv5EOyHSqeg3+ZFuhXAqetKpebdCNBUdTbFugmgqOppi3QTRVHQ0xboJoqnoaIp1E0RT0dEU6yaIpmJnT7SbIJlKTqZIN0lIppKTKdJNEpKp5GSKdJOEZCo5mSLdJCGZSk6mSDdJSKaSk6n5JVZePNgrDStMiKVS506JvpuC5gaVpzcReelgvkjP6qVncwv8mwPuhFAqdeyU2jQhl5cO5p6jaP7oCKVSx06xTTt4QiaVnEnNJ8KETCoFWQwfCZlU8hzo0+EjIZFKTqTow6BPnUiR4SAhkUpOpMhwkJBIJSdSZDhISKSSEynWn5BIJSdSrD8hkUpOpNp8T5WQSCUnUvNr3rx4sPf+Ol94JyRSyYkUEaAlJFLJiRSRfSUkUsmJFJF9JSRSKS6CdRPyqOQ8isi+EvKo5DyK6LgS8qjkPIrouBLyqGTCKRLkkpBHJdNNpW2aOcaLB/slr0hIpJLpptI2x3sJkVSyBFRpnkTIiwf7xV1vXjqYN6uetE2EUsmgVNpI20QolUw5RV8n4qhkOIq+HsRRyTKhz9N0eOlg7t4lXQVpVMo2LpOHR99mXf9Y9G1235KFBcKolD0l4JxZJIRRKbtz52g7IYxK4s4lXQthVDIYxboWsqhk0qlEZGsJYVQy6VQiwrKENCqZdIqtRZBGJVNO0Z6FOCqZdCoFMuwjj0omnUphmtvUiwd78+48RY0XD/bmXdb2kUUlY1FpnqLGiwd767rzFDVePNi7e8lAjjwq6WIPlJBGJaNRiQjLEtKoZDQqxW2630tIo5LRqESEZQlpVDLhVCJCsYRAKhmQSkQolhBIpU6ciNY6IY5KJptKRFaWkEilEpYjCSKpZLKpRGRoCZlU6tiJPT0yqWSiqUREawmhVOrcab7vT8ikUnHHkmaMTCqVRY4xLx3M3a+k1SOSSoakEhHEJURSyZBUIoK4hEgqGZJKRBCXEEklE0wlIohLyKRSTctRDZlU8tv65r0ciVQyIkXHQCRSqepyDEQilWpZjoFIpJIRqUTkfwmJVDLRVCLyv4RQKjX3LulXSKVSW4/JiKVSsyuDiDX6toMn0q8QSqWWF0sjRFKpyXJphEgqNV0ujRBJpVaWAxoiqdTqcmmESCpZCiq2QUcklbflFjcjksrbcoubEUnlbbnFzYiksiGpRGSjGZFU3njKhIw8KhuPSkRjmpFH5W1BLzICqbwt6UVGIpU7c2rz7VhGIJW3FWrMCKRy8P46H+0zIqkcfDSej/YZmVQ2JpWIPDYjlMoWz5fm17158WC/8CtCqWzBfLxy9KtRqUS0txm5VDYulYj2NiOXyp4RnWhvM3KpbFwq5fkYlZFLZeNSiSheM3KpbFwqEcVrRi6VozuXNB7kUrmDp7zNeWZGLJUdS5GIsoxYKkd3L2mbiKVy505sCMxIpbJTKTYEIpXKTqXYEIhUKrtOig2ByKVy2hZENiOWyoalEkmClBFLZcNSiSRByoilsmGpRJIgZeRS2bkUSYKUkUtl41KJJEHKyKVyB0/bdWTI6UtIItPsARn5VPYE6fMrb714sP8HMbkZMVV2TEVSLmXEVDnz4/mMjCo7oyL5mTIyquyMiiyBMzKqbFnS55muvXQwd0+TloqMKmf39Fxdm5FS5Y6hisxPNjNCqtwpFJ0hkVFlZ1QkuVRGRpU7hCrzHM1eejZ3REVyUWVEVLlDqDLP0eylg3k/oBcyYyChyiaXuh6tTc3RsyaXkum1jV46mPdtrkyvSfbSwdymX5J2KyOfys6nSNqtjHwqO5+a3wHixYO99VkinM7Ip7Jf10eOnTLyqezX9ZFjp4x8Kiu/O8gLB2ujU/Obibx4sOdXfnnhYC300hsvHKy7Z0l4cEY0lf2mvvnNRF482PPk9144WLfVo6NTDUyxR0culY1LzTPle+lg7ke48+1/RiyVV1gqI5bKnTuxX4pQKptSiv5S9Kmnn5onxPbiwd57K5kBkUtl51Lz6xS9eLBf3AnlpWfzzp0aEVtmpFLZqRRRDWekUrljp2sU8XSoQSiVHUrpXCCTEUplg1KJqG4zYqlcZTWDI5XKTqXYDI5UKjuVIhmYMlKp7FSKzfhIpbLppNiMj1AqO5Qi6DwjlMotrKZwZFK5xdWUjFAqG5RiUzJiqdzyakpGLpWbrKZkxFK56WpKRiqVnUoR+W9GKpWdShGcmZFK5bY4JMgIpaRTpzRP8e+lg3lYHKcJIikxJMWWB4JIShxJETmyIJISU0nx+jPa27KY5AUTpFJiVCoR+bIgl5LNfTu9b9eLB3vzLVEYC5IpMalUKvMhUxBNiaGpOgeggmRKnEyV+e5fkEyJkykynwiSKenoiU0QgmBKLNFUqvMRWZBNibOpOt8HCLIpcTbFnh6d62iKNR5EU+Joqs47uiCaEkdTlTR+RFPiaKrOd/OCaEoMTWXS1ZFMSVxcmeqlg7l13Uq6CpIpie7c+dpFkEyJk6lKugqSKTHBVCJZ0ATRlBiaSkRnLIimxNBUavM9sCCaEkNTiQjKBNGUdPjEVjuCaEocTZHVjiCaEkdTRK8miKbE0VSbT+iCaEocTbGRENGUOJpq0zulvHiwN/cSfZsgkhKXTLV5zJYgkpK0jBURhFHiMIq+H3Sva6bY+0EeJc6j2PtBHiXOo4jiTpBHSXb/kpkFgZQ4kGLvE4GUeH509j4RSInLptj7RCIleT3zIpISR1L0faJ/XTZFFIaCTEqcSbH3g0xKPD86ez8IpcR1U+z9IJUS102x94NYSkw3lUmmO0EuJbLuvwimxMBU3shwiGBKDExlkupOEEyJXd6X2jX3bco4HCKXEuNSmUgeBbmUuG6K/VzkUqI+95K5GrmUmG4qE02iIJkSI1N5I7MpkilRdy8ZHpBNiSmnMkl2J0inRN29pLsgnhL1WzdJc0M8JaacyiHMNyIIqMTzpBOdniCiEk+UPr+ry4sHe2dUpP0gpJKy3hghpBJLOZVJhjlBTCWuniKLH+RUYpwqk4R0gqBKDFRlkpBOEFSJgyqyOEFOJcW9S1oncirZORVpnQiqpPrdm6R1IqkSI1WZJKQTJFVi+qlMdIOCqEoMVWWiGxREVWKJ0sk1X4KkSkxAleOe/PtLyDFPj/IEsZV0LvWTozlBeCUGrzKRBgrCK+l0an40J0iuxMjV/FY/Lz2bG7nKREgoSK7EydWc6wmSK2lxxfUE0ZW0tOJ6guxKWl5xPUF4JQ6v5lxPEF6Ja6oI1xOkV9LxFON6gvBKOp1iXE+QXYkF+RGuJwivtOMpxvUU4ZVuYcH1FOGVbnHB9RTZlXY4dRyW51imPUyRYakxLHZYrsiw1O/4m1/ap4iw1BBWjvP2qYiwdPOuO29vighLDWHlNE/Wooiw1BBWTuG4lSCnSF4V+rsDq58MRopUS41q5TTPNqJItdSoVk7zAUaRaumut5q3WkWspYa1MtF3KmItNayV01z2qIi1tIMrFv6iiLXUsFYmSj1FrKWhrh8HHW5YiyBjRaqlRrUyUdMpUi3t3Kpdq5/1HqRaalRrnthXEWppXJwNKiItje7Y+TJHEWmpIa1MhH2KSEs7s+I/FR3rd/2Rn4pujYsDX0WapbGtfyp61QIAM0nZqYiz1HBWJrJBRZylaXGOrwiz1O/5IyJDRZilBrMyERkqwixNshxzEWZp0uWYizBLU1mOuQiz1HJSsSkDWZamz0N0nku/FLmW5m3505FraQ7Ln45cS3Nc/nTkWtrB1c+mDKRbmvNyykC6pVmWUwbSLXW6xaYMpFtqeivmQIRb2unVx1Ik69x5CLk0/4N8RoqoS8X7NplAEHWp8HxGipxLTXylc8GoIuZS8Z5NZg/EXOqYi+hdFTGXyjKCTBFzqWGuLc/Xy4qYSx1zEYWpIuZS019lojBV5FwqPDuKIuRSXZ75K0IutURVOmdiioxLjXFtZHOgyLjU1VdCFjbIuNQY1yZzhqPIuNQZF1HfKjIuVZ6WWRFw6R4ayN4lOlYts+v0NnQvHcz7kL0pGUaRb6nxrUyUw4p8S8uizyLc0rLss8i2tMMrJiZVRFta8qqVIdpSiwtkLxLJlnZ0FcluXhFsabFLd8lrR7ClnVxFcp2NItfSDq561s+pOTq1c6ue9HNmjlRLnWoRhqpItdSpFlGPK1ItdapFrtBVpFpqAqxM9NyKWEsdaxGJtiLKUlNgZXKFriLEUodYJKmrIsTSDqro8hwxllpYYCY5YBU5lnquqvmJhiLGUosKzEQUrcix1DhWJiljFTmWdlDFHwedaxgrE2GxIsZSv/CP3OeryLHUOFYmwmJFjqWmwspEOqkIsrStUmgogixt7ty5tkSRZBWLDcw6B/YFUVbZ3LvzdUtBllVMiJWJuLEgzComxMokpWhBiFU6pbrG483G8IIMq3i2qvnbLMiwijMsIpkryLDKVvhusCDBKk6wiOisIMEqTrBIDsyC1KqYCCsTEVlBXlWcV5EcmAV5VXFeRURkBXlVCe7b+ThYkFcV51VEFVaQVxXnVUS2VZBXFZNhZSLbKgisigMroqsqCKyKAyuiqyoIrIoBq0x0VQWJVXFiRZRPBYlVcR0WUT4VRFbFhVhE+VQQWhVTYuVK/IvYqji2IsqngtiqOLYiqeYKYqtiSqxMlE8FuVXxIEESs1iQXBVTYrF9REF2VTxIkNaP/nV2RaRSBdlVcXZFUnsVZFfFpFghTGOfC8Kr4vCKLNsKwqvi8IpkDisIr0qnUywZdkF2VZxdESFWQXZVnF2RRGMF2VVJ7t35irwgvCoGrzayJC8IrIpnVGetAYFV6USqtTnpKcirivMqsogsyKuK6bBymy8cCpKq4qSK6LYKkqqyp1JnPxfdm3UxlSKnKp1EsUVhQU5V8mpRVRBPFdNgZaLBKgimiqxdi2CqdPjEfiuSqdLZE/2tSKZKR0/0tyKYKgamhOivCoKpImu/IpgqsvIrYqliWIqp0wpiqbJUXxWkUsXyqNN3g341LiVEO1aQSxUNq6dBLlWMSwmRmhXkUkXXAzJyqeI51El2wIJcqnjWKqI0LsilSmdPbZ5UpSCYKgamhCjfCoKpslZeFSRTpaOnltnjoG89aRX7sQimSln6FtFUcd0VUYUXZFPFdVdkH1cQTpWSl/s4pFPFhVdsuEc8VTxCcCOzIfKpskxcVZBPlU6gWpinTyjIp4rproSoGgsCqtIRVCLZGQoCquKZ1FlHQUBVPG0VyepVEFAVA1RCrgkpCKiKAyrW9BFQlbruuAioiqdSJ/eKFARUpa62uYinigUICpGIFuRTpbpzybYD+VRp2/JtIqAqBqiESEoLAqrigIq9fQRUpbl3yWoBCVVxoRXzFhKqYoRKiGS1IKEqO6Ga876ChKq05VoKAVWxMEEJc11ZQUJVLEyQVg/erZ1AsSm6Ip+qxqeE6G0r8qlqfEqIfrYin6rGp4ToYSvyqWoiKyEC14qAqm7u3HlnqUioqhEqIYrVioSqmspKiGK1IqOqm3t3vo2oyKjqtvJuRURVDVEJEbhWRFTVEJUQgWtFRFXDEi5XRFTVEJUQQWxFRFUNUQlJpFkRUVVHVGQsqYioqkcKkrGhIqKqYdV3KxKqaoRKSKbOioSqGqESIq+tSKhqdPeS1oyEqkZ373wirUioqiexYq8HCVWN7l7S+pFQ1ejuJa0fCVU1QiUkP2ZFQlWNUPH60b1GqITk06xIqKoRKkmk+SOhqnERwl2RT9W03OZW5FO1Ayg6lCOeqoanhKS7rMinqudWZz8W+VQ1PiUkPWZFPlWTO5c0fgRUtRMo2heRT9W0WFRVpFPV6RQ5oq1Ip2passeKdKoanRKSo7Einap5tR2qSKdqXsjmKrKpmt2zZFhANlWze5Z0c2RTNbtn5yu2imyqmopKiH6yIp2qFiMoRIRYEU9VixEUIkKsyKeq8SkhssKKfKoanxIiK6zIp6osnYuAqlqIoJBrxisSqmraKSGpDisiqiqL7EYVAVU1QEXnFARU1ZRTDDlVRFRV3LlkBYaIqsp6RYWMqlqEIFtfV4RU1SEVUaJVhFTVM1fleeBGRUpVV5mrKjKqaoyKvk1kVHVnVGScQkZVjVEJ0dFVZFRVdf1r0bu6GpWRUVWty4EKGVU19ZQQ1V1FSFUNUglR3VWEVLUswHJFRlVLXL57ZFR1lcCqIqGqHUHRQQQBVTVAJUQUVxFQVQdUYS5xqgioqgEqIUK0ioSqWmigEBFSRURVHVEREVJFRFVNQ0VeJhKq2hEUu0m1IqCqdXVkUJFPVedTRBBVkU9VT6tOxKYV+VTtAIr+VvTsTqdIs0Q6VVd0qiKdqnWZb6Einap1ucFFOFUNTgUSFFMRTlWHU0RbVhFO1RaXj49wqi7VUxXZVLUEVrFOpWUV0VTt7OnQf8s1Pe9E/10RUVVDVCJkFEdEVS0YMDbyWOhjR1Q6PwuoiKiqiaiESNgqMqq2/YPwsIaoqjmqIikyG6Kq5qiKKNkaoqrmqIoo2RqiquaoiijZGqKqtvGLLxpyquZp1qcxQQ0pVTNKNU/K3pBRNWdUOsfXDRlV29y983jMhpCqdQpVUpxd/NcQUTVHVDo/KWmIqFpnUOQ1Ip9qzqeI/K4hn2odQJH88w3pVOv4iV1a3RBONYNTQrR9DeFU6/iJ/VJ0qqMpIgRsiKaaoymZgrWGZKo5mSLKvoZkqkWuQ2+IpZphKSHCvoZYqjmWIsK+hliqOZYivxWpVHMqRXSADalU69gpbnM5d0Mo1RxKEdlgQyjVHEoR2WBDKNVMNiVENtgQS7XkriV9BLFUM9mU1PnKsSGXas6lSGrghlyqOZcissGGXKo5lyKywYZcqjmXIrLBhlyqpWUMWEMw1Tp7YsMfgqlmYEqIKLEhmGoGpoSIEhuCqWZgikwNiKVaDsuhHrlU6+iJ/VbkUs25FFlXNORSrYOnfu3MbDhGLNUcSxH9ZUMs1QxLkYDnhlSq5UWYbkMm1ZxJEQFDQybVnEkRcWdDJtWMSZGnQSLV/LI/9jSIpJojKSIdbYikmiMpIh1tiKSaq6aIVLMhlGoOpYhUsyGUap06sQVvQybVZDHTIpBqDqSIsrAhkGoOpNr8vL0hkGoOpNo8W0ZDINV0vYBCINU8nC+R6RCRVFP37RzSNERSzcP55i0TgVQzIEXGJ8RRzXAUnXsQRzUXTbG5B4FU0/XSGIFUcyDVSL9CINUcSLHxFYFUs3A+Mr4ikGolLsdXBFKtpGVLQyTVTDRFWw4yqdahEx2/EUm1zpwYpGlIpFpZXl7SkEg1J1JEldqQSDUjUkqUnQ2JVLNkVUrUjg2ZVDPVlBL5YkMo1Uw1pUQA2JBKNaNSSkRfDalU69iJLmMRSjWDUts88r4hlWrVFslk0EQo1QxKEY1SQyrVOnaK5MK5hlCqGZTayIiGUKpZRB+5bq4hk2odOsVtfmDREEm1Zuny53KjhkSqWUp1NrUhkWqNXxrWkEc1l0qxqQ05VHMOxaY25FDNgvnogIMgqu0gikxtCKKagSg6QAGIStu2LaY2Lx7sA53avHCwXiRm9tLBnF+p64WDdV7MhF482MtiJvTiwV4XM6EXD/ZlMRN68WBfFzOhFw/2jc6EXni2dp3UfCb04sE+LBqmFw/2qzWUFw/2ic+EXjqY51XLCejbIHzi9NLBvA/FcdppvXQwLzaPTHeoXjzYW1KTlH/toYupfMnbr1d8EXTTLzn9mkPCOtDbnT9dgc3E2QGdHX+Ok91o+Jb15fk5txcP9ubyOE0z58WDvXXnOE0M7sWDvS+uSJON6HSjVPx50OumneLPg273rFT0edDtnUNNJ2AvG4xpehMvOxt3AkV+ZkK3dvxEfmNCnxqaIkNuQo8amCIDaEJ/Gpaaiqu8cLCmhwNeNhgbkSIPgo70QD7yStCNzqPm41pCP3oQX5qKLbz4bG9X+80vt/LSwdz66Fyi5sWDvQ/L00WpFw/21kfn6aC8eLBfbYC8eLC3PjpPwefFg72uxv2MnnUiNZdPePFgX9ePj97Ni2ulvPRs7khqnszYiwd7U1uQly/oXIvjk2kyXS8dzE1tQdYvgq51kdR0pemlg7nwfDJeOpgrzyfjpYN54flkvHQwrzyfjJcO5t5ppxsULz7bd+JUmswXL4puNR5FmryiV41GlblTFZ3aYVO/i2RaOTq106brVSTTsU/RqR03kbAnLx3Mr267Xvc8f3Z0aodN/d6S6bOjUztrukq15+bo1I6a+q0lU3P0aSdNaX65vJcO5qGbkymnoFMNRJFxoKBTDUORJlDQpwahyFss6FKTRbG60aOWVIq88oIOtZxS5I0X9KellGIvHN1pGaXIPFbQmyaGIgNpRWdWrnLzwsG6D7tkGK3oy06V2Jq6oi8NOZF2UtGXRpzaTLnjhYN1753ElxV9uRBBeeFg3fsm8XxFX3aexNYwFX3ZcRJbwTT0ZadJbP3S0JeNa1G9cLDugy3ZJjb0ZYdJbKXT0JcdJbGFS0NfdpDE1hUNfdkxEpvdGvrSEkaRdtLQlx0h5TCfIZAvBRM6zT0fkC6FDpDy3PMB6VLo/CjPPR8QLgWHS+R3BsRLwZOd53kbD4iXguElohP24sF+lW/Tiwd7hxDTs10vHuz7UrfM1ywB6VIwidP10p2pOfo1WIq3+VI0IF0KwUn/vAEHpEshLLppQLYUjC3NGayXDuarNVFAthTCak0UkC2FTo/6bUrTh0G3Buuq03sPvXQwtzXRfJEekCIF0zhtrJMgSAomctoyeZWIkIKlNL8SmMl2KiBBCh0RtTSNZfTSwbx32XlKAC8dzDOPFvPSwdw7LPEU4qNgOc3pb0XHdjzU5qcUXjqY1+WrQcfumaHIb0W/pkVMtJcO5n0cJo0AGVLomCjP10cBGVJIPg7PZ76AFCkkH4enimIvHuzdrW3+JhElBUNJm2zEHv1qMGm73royfR50bLIeO5+MA/Kk0IFRSqTZIE4KHRi1PL0rzUsHc+uvZOhDmhTyIt+Xlw7madVDkCWFDotoD0GUFDoraoTGBiRJobMi2qGQJIW8SD/ipYP5Ih+Ulw7m5lXS5pEjhQ6KSpjPxUiRQudEKc35cECKFDonoi0MKVLonIjt8QNSpNA5UWKrJqRIoXMi+kvRpx0T8V+KPu2YiP9S9GnHRPyXok8NIhXiU2RIwURNhczcyJCCMaRCnh0hUjCIVMniFilSMEUTWxwiRQomaGKLQ6RIwRRNlXQ9pEjBJE11Du8CUqRgiib6ZtCr6ln5yB4EMVLooChP08N64dm62N23ZF2LFCnY5XtSvkj7dSsJzdGrJfKbdb10MO/ogdCbgBwpGEeqZLuFICl4fB17dvRq8XmVVY9udTHTPDemFw/27tdpnJQXD/aebZGsU5AoBRMzbUL6NzKlYGImkv3Riwd7v1NgDtADcqVgYqZtnpTHiwd7WzcRhB6QLQVLAbXNE5948WCvqxkQ8VKwFOWbkuaAgCnYPXuRLGyQMIXqtwqQjQ4ypmBRdpuSNS5SpmBRdpuSzQJypmBRdts8G5sXD/buXTKQIGsKzb1LWg/SpmC6pq2Q1oO8KbSldxE4hc6U8lwK56WDuRGn+SFoQOQUDDnNpXBeejKPHSslAp0iQqe4GUCcP3tE6hQ7WEpkRx0RO8XNlk/zZ49IneJmy6d5M4sInWKnSonspSIyp7jZec28kUVETrEzpZTnW5eIxCl2ppRk3sQiEqfYmVKS+UoxInGKweX+xB6RUwyuVCPNAJFTXCGniMgphrTalUZkTjHk1a40InSKlvaJ7UojUqcYVufmEalTDMtNbETsFC22biukkyB3is6dCuklyJ1i5LHsXjhYh+XLR+wUXbjEXj5yp+jCJfbyETzFuBKrRQRP0cETe/kInqKBJ9ILkTtFVy2RXojcKXpK8kIGKARPMbpnyQiF5Cl6SnLybpA8xeS9loxoyJ6i65cKGdKQPkWnT4W8TaRP0ekT2VhFpE/R79NjPxdd2+kSG74RPcXOlsjWJCJ4iolfk+iFg7UlNiZPgl7tYIn1D6ROsXOl+TXFXjhYrwZiZE6xUyX6JOjODpXIVjAicYqdKZENTETgFDtSItuXiLwpdqI0BxkRaVPsPGkuBo3ImmKnSdebhmfG6MgOk6RMAV9E0hQ7SxLS1xA0xY6S5unkvXCwvvqKyJUjYqa4yOjkhYP11VdKVg5ImWLnSGQfFBEyxY6RyLYmImOKFjq3ERF6RMgUXalE4EhEyhR1NZEiZIqeyanOVS0RKVNcZHLywsH66rSa0xcpv6aI1uhRY0xVZzlbvHQwt0mUCCkjQqaoPIu8Fw7WZfXo6FRDTPTR0ae6EhVGREzRIua2OgcdERlTXKRw8sLBOi5+KRKmaEIl9kuRMMXOkHoMwmQTH5EwRSNMOh+6EDDFstqiRuRLsQOkax6M+bOgTw0vpXm8QkS6FJ0uEV1eRLoUOz5qSuZEhEvRsjcpmVyQLUVnS5UsLJAtxQ6Pmk7j+710MPdFEZkIEC1FR0tE+BcRLcUOj0hudy8dzLtn6/SaRS8dzO2kdQ5VI5Kl2NER4UoRuVLs4Ii9SKRKsWMjwpQiMqXYoREhShGJUuzIiPCkiDwpdmCkxEFIk2LHRYQlRWRJ0WLkKnmFyJKihchVsiFBlhTbcvBFlhQtQK7O9RYRWVKy+LiNiFATwqTk8XFEhZqQJqVtMaMmhElp1zDNN7IJaVJyDRNZHifESWlb7V4S4qTkEiaioU3Ik5InaWrzxVJCoJRMwrTNgzG9eLC3QZgIgRIipWRpmua3v3rpYO6+nffXhEQpWZ6m+fWvXjqYm3NJKGZCpJRC5tfFeulgboMwCU9MSJRScOfOx4SESCkZUmLgISFSSn7XHWlrSJSSEaWwzWfMhEQpmZIpbKRtIlNKxpQCQdgJmVIyphTm4dxePNhb6BSB2AmZUurUqKT50ikhU0rGlMI8/tuLB3vlW/KETClF1x5OEwd48WC/0h4mZEoprrSHCZFSSivtYUKklBbxcAl5UurAaL7TTgiTksMk9iDo0pTpxjwhSEoWDhdZ3ejPZOleynygR5KUTMQU0nxbmZAlpVR5VkcvHcwbpwoJYVLK3lXJwIc4KXViREhBQpyUVjgpIU5K2bvp/BQ3IVBKeYV+ExKl1KFRTXONcEKklLIuREkJmVIyppTmiuKEVCl1cqSBzE/IlZLFwhExWEKylDo8qnGag9VLB/Ow+qnIllLHR03IT0W4lCQtZw/ES6kTpEZgXkK+lJwvzTcsCQFT6gyJvxp0q6ykaQkRUzLEFObZN7x4sHe/zkPzEiKm1CkSezWImJLnZpqPSwiYkrrgkCyfETGlZbJwLx7ss9mTWR4pUzLKFAKZ5ZEyJfWc0nNWk5AzJfXbCsm0jaQpqeceJkMloqak7luy6EPWlIonHyZtB1lTMj1TIJKjhLQpWVhcICFjCXlTMt4UIpmnEDiljpSInDAhb0pFFvG0CYFTKjbHkkdH1xZLgkis0bEdKJHj0oS0KXWcRI7sErKmZEqmQGLpEsKmVN2p5GmQNqVq+xxijS7tNImc7yVETclQEyFNCUlTMtIUSGaPhKQp1eVIjKQpmYiJcKyEpClZpnDGDpA0JdMwMXSAqCmZhIltvpE1JVMwsb03wqbkacJJ2GNC3JQ6Ucps4EDelEy/FEicZELilEy/xEgAIqfUFrQ/IXFKdn8dkfQkJE6pLQ5WEwKnZLfXkbDXhMApG3AiCCMjb8odKEXSVTPipmwJmQjByMibsvEmQiQy4qbceRKBTRlhU968r877dkbalE28RMbfjLApm3iJDMAZWVM28RIZgTOipmyoicCUjKQpBx+C590jI2rKnSURUUNG0JQNNLG60anGmQIJDM7ImXInSTXNF3wZOVMOthaeY6mMmCl3jqRhfiyTkTLljpGIGiMjY8rGmAKJU84ImXKnSJVZo1NXoqWMgCl3glRJ60W8lDs/ItLsjHApRztpJdboUJMrEbCXES1lQ0s6vz3Uiwd7G3vZs6NHo+U5JC8d0VI2tKRhmmPSiwd7y2E5v97Ti8/2plfS+fWeXjzYW2Tr/HpPLx7sPYnWNGenFw/26eepvTKiptxxEjn+y8iacqdJZI2VETXlDpPIGigjacodJc2v+PbCwdq9O8+0lhE05eTeneYC9+KzfV6hw4ykKWd37jzmOiNryp59iXREhE3ZYJPOr1b14sE+m/1c9J2RNmVLvlTmsfoZaVM22qTzq1W9eLAv68dB51ryJfo46FvjTRpJT0fglGVbPg4Sp2zEiT0OEqdsCcF1ftGrFw/25tz5Ra9ePNh35EQIVUbklC0fuM4vYvXiwd6cSyLwM0KnLIt0IBmZU+5QiYgfMhKnLO5ZsshF4pRXoqaMxCl3qER2URmJU15JmjLypqzuVDLeIG/KxpvoL0XelDtQajo/nc6Im7J6jyXjE+KmbLhJ57fZevFgb4ksY/01aPsSv6Tt11zli5QvUX69huAFje06JWXF5T6iqGwoSuc33Xrx2b78g5yWGYFU7sTpeq/ltFMjj8qufiKNBXFULrbOIos4pFHZ5E/0YdD5HThVEiqSEUflTpwqCRXJyKNyMUkbWRMgkMqdOVUSKpKRSOUOnSrRD2dEUrkzp0pCRTISqdyRUyWhIhmBVO7MqRKZb0YilTt0qmzBikgqd+hUSUatjEgqd+ZUSY6/jEQqW5bwMhd5ZyRSuTOnKqTNIJHKnTnVMI+dzUiksmmfZB6El5FI5c6crjfXT044MwKp3JETOSTMyKOyiZ90np44I47Kpn4iuZUz4qjcedP1cpC5Ofq086Za5icmGWlU7sCp6vwMOiOOyh04temlLF44WPdTvG16BZeXDua9ozKKgjhKOnCqhKII4ijpwOm6ZJv9UkEcJR04VQJdBHGUdOBUCfcWxFGy5YWXBHmUdODEvCSIo8TETzq/Wd2LB3t6w4qXDca9n7Z5exSkUbJZP63TUzBBGiUdN5EGJsiixGRPJJpfEEZJ502sPQrSKOm4qdb5KlwQRonBqDbHRYIwSjpump+2C6IoCbp6LejPsFggC5IoCUuHIoiSsHQokigxsRNzEaIoiWHlImRRYiyKuQhhlBiMYi5CGiWdN0mYD+yCNEo6blKZy/4FYZRE76XzXZsgjRJXOqX5rk0QR0lc+hVplMSlXxFGicOoNN/kCcIoManT9PJGLxysTUMxH00RRImJnTTN0YwgghJDUKzVIIMSC5zTNN9ZCVIo6aBJ4jyORhBDiV1JR3aFghxKVrFzghRKOmYq5CROEEKJpQAnJ3GCEEo6ZSqN9FZkULLSOwkiKOmMiVeOTu2IiSVCFgRQ0hFTaXPWKQigpBOm0uYra0H+JNl8Ot+iCOInsSC6OMdDgvhJLIyOKOQE6ZOY3IlgbEH4JBZJl+anq4LwSWTlVERP0tmSZDIOIHkSI08kP74geZKOlioR1gqCJ5HFUawgdhKx8x3SN5A7iXEnAlwFwZN0skSfBV2q5lIyQCJ3ko6WKlHgCoIn6WyJOgnJk6j5dC4sEgRPooYe5jJGQe4knSxJJn0DuZN0sFSJwkwQO4mulkoInURtjzpnA4JcSdQuSiGrfMRK0omRCJk3kCfJKphOECdJB0aNqLMEcZJ0YMS214I4SUpehEUJ4iTpwEhkHtspiJOkrPop0iQplt2SDAJIk6TzokYUSII0SYwmERWgIE0So0nkphFBmiSdFwlJHCVIk8RoEpHoCdIksfzf5D0iTJIlTBKESWIwiZqjT03eFMjqFGGSGEyi5ujUJUwShElS29IcnWowSeYoXJAmidEkkn1LECdJM50/GfAQJ0kHRiyQVRAnSVtEpwvSJGmLsFdBmCTLzEyCMEmahb2Sxo40STovItfNeelgvppQESZpx0Us+6giTFKLpSOCc0WYpB0XseyjijBJt7TIPqoIk7TjIpZ9VBEm6SaL7KOKMEm3ldBfkSVp50WsDSjSJN3qIvRZkSbptnCqIkxSkzaRQGlFmqSdFzWyrFakSdp5kRCGp0iTtPMiKfPZXZEmaedFUtjDoFM7MZIyn1EVeZKGxYyqyJM0GPWdL2UVgZIGi2KeL04VgZJ2ZNTI5QSKQEmjg4f5waIiUdJoLH9OZRSJksbFdkYRKGk0p86HMEWgpHEx+CryJI3WUedLNkWepJaLiVzEoIiTtPOiq5ho2vOQJmnnRdeLAue/FJ3aeZGQ3CCKNEk7LhKS7EMRJmlaLH0VYZJa4BwJwlekSZoWqyRFlqQpL0L2FVmSmp6JiGIVUZKaoImc0SuiJO2wqBIppyJK0k6L+q3207eOPrXQuUYGPGRJmhfSCEWUpNnOUeesVRElaadFLZM5D1mSWvrvTAZfZEnqaqY0FyMowiS1bEyNVY9etXRMjXQOhEmaF3tURZaknRY1IgRQZElqLIlcHqXIklRWTkWUpIaSCEhQRElqkXOE9iiyJO20qBKxsCJL0k6L+vXJs1+KLEnFfDrHYIosSVcsSZElaadFjST2VGRJKgvmq4iStNOiRmIGFFmSriRMiihJTcJElCCKKElXGiZFkqRGksgVIookSXU1nSJIUhMwkfsIFEGSdlTUiChFESSpmkfJ7IskSTsr6tfdT38pulRX614ESdpRUW1kVYIgSTsrokt2JEnaWdFVcz19j0iStKymUwRJalFyBPorgiQt5lMy4SFI0s6K2kZmMCRJWsryl6JPLVCOHCkokiS1SDlypKBIkrSzIiU33CqSJF3dI6cIkrSuuilyJLWcTEQipQiStFrE8hyZKYIkNZBEAiMUQZIaSCJx64ogSVd3ySlyJLUwObb5RY6kxpFIlLsiR9JOilj4iiJHUkvJRILiFTmSru6TU8RI2synZNmAGEk9SI4AEORIaqokEsyoCJK0LZkDgiQ1VRKJuFcESdpREYugVwRJ2lkRixpSJElls346XzcUJEnFZElhvq8qSJLKFhfh/AVJUtkWg29BkFRMlUS8VBAkFYuSI14qCJLKtgqnKgiSSkdFXfE/fTEFzbvWjERjFwRJxWRJcb7sLUiSSrCeOl/1FCRJpbOiriee1Y4kqazyexcESSWsRCwFQVLxGLk5XikIkorJktizoE+DLg7dC4KkEspihiwIkkqoixmyIEgqFiJHeElBkFQ6KVKC+wpypBIXE2pBjFTsOjmSRLEgRyrRshzOR9+CHKl0VNRIZteCIKkYSCIpGguCpGIgiWQKLAiSit0mR1IFFgRJpaOiju+mrx2dGhtPAlqQI5VdlTTPBlUQJJXOiljtCJLKOkCuIEkqrkvK87iC4izp/3z55f7xz8vL2+Xufz3eXf7zl//43//7l+2XL//9y2/39u8a8pde5y//8d+/hOt9M//x3//v/33Zq+r/ulYdxi/J8KVKvvTbb/d3l8e3+9/vLy9fX24e73777VzNVfZ0VNO27fq9L7+E6waI1ffj6e7y8OPydoM1lXNN4aip2KfufFbn29/Pl3Nl8fTjongFXmVS+6/4v8XL9z/U9h+xRf+Q3eJ6T1f/cM0v7XXulTYvuvZ1+7DX21LcP2T/kJN/0N2m7X/rejmkfzr+7PWaNf+0P0G43ru1fzq+sf+EcL2Qaf90fKMe36h1/3T82OtFKvunvZZ4vIHr/R3+KRylx5Nek0/ap3T47ZrScf8kx6dyfDq+EY5vhOMb4fhGOOzyYScfn/Lxaf+V10w7+6ejVI/ScjxBOWquh1097Nr+N/L28Wl/a9fI9P2THp+O0rgdn9LxqRyfDrt0fMqHnRzflf358uHfvDeXcA068k+HV/PhS9k+Pu1/Q463K8fblb2tBjmeVOJH6f7MV7nm/ikenw67fJRmPT7tzydy2MlR3/HbruKi/dPxBHo8czn+WsnHp+O79Sg9PCiHB+Vo4/LxXtrH/9tr0aN16uHL61mLfzp++RWP+6fDR3q0Pz38occz6/HMevRBLfsTlKMfHSNGqIddPX7Rx5jajt7Ytt2uHb2npeOT+N+I214at91bcdt/Rwy7p2Panz5e8xLZp7z3o5j3fhTz7pmYP+z2Nxl1b0NR9zYedW8vsex9P5a9lcSy9+RYjpG11N2uxr3mejxzzXt9dX/3sR5PWvWw28e/WI8nrXtPibXK8WmfXbYajk/H/9tH5X5zs32KH5/2ft7vpPBP+Sjdn68nr98/HaX7iNTzmtuntPu3J/fzT/u00tOz2KdjfOnRrP7p+BuH37qU3z8dzydHzVft5f5Jj09t/3TMunI8n5TDrqb9U8vHp/27uh2f9h7Vj0b3T/s39GNCTnt9uo8l/eTCPx2TrR5Pqnsb7wh6/3T8DT3+hh7PUo6/cXha6/GNw+d6+LzsM1jfZO2f9sWE91q6Gumrj9OK5JoW+mNJcvzM2Nhq7beb97fvf1z+fj3XItv2UUuxDjL77u3D/XXRdvf09fXy8uflZagkXE85Pp7lY7xotgaYVXh3ebi8Xe7O1VxP/D9WkHLyOv1JDzevb7ffbx6/Xe5u3sa6zqvRayTPXhdd8z08fRt+VEqnVxOTdfbZF59v7u7uH/HLYfgy9e3zy/2Pm5e/bU389vf93eidUy0l0Sd4vby9Pz/cv75dHtE118vfTs0k0GX029Pz/S1zrwzubYd7eW3wFCkOryOy713/9v3T4+hKHVx5dLbAWuvN19e3l5vbt+f3r6/vX8efosNPsVXorIrb28vr6x8XcEiU9vH1lI5ZqRwjvLAWbzU+XP68PAxPFMP51VzvS/bZVFmbsZrenv64DO8ptVNjkX3GTJvS13T7hq+6nrZMge+P7Js/bp7PXy61njeAkb7au5vnt8vL8FpPX7THDvv+IB1rhOTrzGmVd/fXJ7p5+H65uYPmW2o6P9c/qOT+8fen4fHq6QHT/jw5sdZ/c3eMk2PjK+nc+CLrBTd3d88P79++3Xx9GIf8FM4VpH22jqkeq6e8qPTl8jp2y3h+8YmNsv7Nx/cfX+EHpXoe5Rb++XZ5uQ7Sw5dzO/+Ykmhzf7i8DGN7CPk83Wx0XLx5uL8Zf/D1sraPX1z3TVm/rG1RxzgI9DvWzrUcC7NEX/7D0OlrOz+GjyPzr9nEC+OxtnM7so3Y/Ou/318e7p6eLy83b09jt5B4nvk/tqx58TC9tqGW6wnOxy/R7VhPtcVDkec5z3X12LDnYwnJ+9vDw9Nfw1OdcU24psawyjKdh3sVl7sfv99c11rDgw1zV5aFi5/++vZ+eX2z8XkYQM7d5NgWUK528+Pmv54eb+5vnzqne3653N33Eff1+eXpz/s76IU5n0bt6KvbRbXO3/7+ab0Shnppw9jrfXy7vDy/XH7+wOdGE1XpsNErfni6vel1XV7+vL+9fL15u/3+7fL0++Xx9nJ5eXmCurfz2CB8Ev1ndf+4vL7efBsbRLjev3v+G7RJzP6GLXz3P/L6cnl9f3jD+nWon3alWf17zVBjGWqkc/Oqxqfn/j+h4jpU/D9y5fES3m7e3rHeNtRLu/6s3utKePnQYRsqX/dDqPzHzfPr2984MevZY/knPRtqnPeRkThXXuPzw/3vfw/f/fiiD3z7pj9ugQ8OvZ5/TVZn12H9tP7Z6BZqr+Pu5u3m9e3pZXxH1/xIH7X4sm5Ry7fL0/iOZdjw8tnAv9+HI1upgvvjMF5uvHtZRafhDMbds9OVT5x7PZPtiJy7T6XbZa/i9uFmnFjOftmnFb5q90qeHt8u//k2zr3xPPce0HoxlfSqPg+/YSABgW/RThU837zc/BhfbRn2RD+r5M/L49u1zY1r2zZs37efvNrPy/UzX2l0wHy8efj77f4WlpnjUdi+pTkI97YvGcMHM90OOpQSbZH7X/vXH/ePl9d7XBaeN287P660ORyVPV9eXvu+57+wx54q5G3zo577x+en+8dxsa7nzsb323slnzel5bxQbRRvHTXcPj3+fj/SmOstAadfclC6xAehsbb3l8vN+9vTlSr8cf/4/D7+xHzeYPKpaq9yX3+9v15ePld2HmsX/WevzOeQ6TR3xml8knscIdzwY+QESHkF394fboauUwaSt2X+K/pXX1/h2+fus/FB6Pl+GMRO39pPgQ64Hrb9rPR66drR+Y558UDl235A2K8T3jskXeE93//r88gR07DPpx3n+f63Py7D1F2HLhf5yvL5ftZRwvm9bYv3Nu0jOvSR4xSBt5zn+08TQDz3tFjoQPZ8/+3l5vn7vx8mT7Kd2Wmo28HWEm1Hz/fwIksdJAzHSVzdDi6WF+/n5fL6Nn2y8zhSD3a/Zf6OHl9nfTMMC8aN762eH1+fH27efn96+TGtJw0ohOLdm+eB1bWynceG44C+FDpAPz+//v146167PN59GulLHWY9Cu1vnp9RXREG7QhfwDw/T/hwOC/nQqZv4LrT+vp6+3Jvr/H5/evD/e3wUrbz0Ldo9y/f3n98gjJbPv+Gug8tKUTazl5ebv6espByRrlX3PXLjkDoM73eXh7xFOKaTu78Wg+SstFx5fX16fb+5u1y99f92/fxkYYOtY+NIcjHYfhxsJc/Ph2HZLxl+d9EFj269dBP1KPKcPwZ5WPdR+Vfb14vnxreltrQo/dXtAkda041Xh6eHr+9vj3BQFqHgfRY1nEQ/1Hl95vXHzePf0OFbahwbw2p/INf/f3m9ekROtt5QRXajtpSKhSWfNT3uesOs06rx/ly4Y3s78fb26eHh8unKUzOk1DZ12ntEO3EjzbGzxeu1V/+vLwMb1HP7L3xvdr1y7/fP8AWWM89qfH1zPXb92+XH2MvPDfkxXLAv9yHg7ECHSqgk+q1gten8Zj4mjH448n5Wurt4XLds39qKsMW4JBS5PLhZvo4b2+XH89vgIvPg6Ry5v/29nL/9f3tAtN6Ovct10Ctvo6H5lFPfkx58ej2fZhszy39kPTsqpKQDlnVofA6VHh6KNXKoaCq+dDk7DqsWNKhEPnQbOQPJcQx4vEd6fuwnk/nXcChskmRTwHvd/dPr28vl5uhFQeR80qjUn3nVWUwdOlT4/2Qq+zvbNvFk9e7io9l+d7Mtv0UMKbjZCEebyMl/g7evv/r9unb4/04Nmc9NR/li6XT1yfLezmfwhXe/q+1zL6dz99ePcNsiX/uj9u2cgI/z0xy+gG5rt7i6lzk3CBypcPatZbHv48uNVYh5ypW7+IT+jofmx+z9rJF3D7dXen7/XVquLu83dw/jIc0ms5jA+8f15pwa1CGwyt7nEM5lXfxUzkUSuFD8Csf8+/66R9/v3/58XJ5vbw937y+/vX0cveJHsQzbUl8LfxR3+v9t8f7x88VnTcILpD9eUXvz5OKzmfn8g9+4RWLHK1lUt/ZS3zf9P723U5ahupeJ/WdmmDix0VWX287Py539+8/xnas53ZMp6VeyRXXjE9w9hk/7Hl/+37lRrc3IJtK6Twn7qrXD9lEkI9Gt2oQXvlkjVfqwKQ4/7/WgkQgnbeFsouao0u3SS2/Pzz99VmCf/bUPk/mXZab9+1NOaQj2yFJvN5gufhrTy/fLm/mmUkDOR9b8AOu97fv39+/zll0ioP8ie8s39++70qw56enGRw5e+L4nctmi5K/fFZzlaUzfdgfm/qptbpCnH376W5cTZ67WvwQC+9q20NCHdI+oIcD1xxBCf3S9PUfvaq/3i7fhpWjxPOkvS9kw/W+439W2edTConnmfyQhycuAYMqXy5v7y/j/ud86lfqsbLUn73nvUp0l8TzhuoQrseDhqaPV8HR+vvb98fLf74Nc8/r22VASvGsBVo38WtdNu9gJel8HuZ7/p9U8v78uZJ2rmQ1kV8reX++u3m7fEwRn37XedjhW+T3t+9PL/f/1QfQl/cH8EI9e+EjoGTVUmbHwkm3809btd3969Bky/lBjriXI2oifTTjtupm16bweGfv/7qu+jxsnqWE65XNT5Y0Z1lh4ifrWNHT+9unms4jOdXzfqrpU/vScHbC6qddX9KwAPnz8nL/u0+z8/fWzuuluvIwP/pJ52OEzIlDr+QVgWo6T/dyCO235dKErSPPIr+0XOFbDRO3neertJxxrIorurwe2b9c+dLnBzq3y2UPutb29P65inRWZadGYZBXMVkUpzNp9oCwZQ0zH5+FTpkfb3/U8enNpvM5dV4uyF7fbh7vbl7uGJg5r/LLsUFf7m5ns3Q7/6iwOJ59f/v+SQAdzpwsHmd7RyzIEfgUjmiJcAQZhCPEI3Et6P5Xn15uv9uUO6518xkT6nIf0OsZHXoWLByxcmn7+Uv4pLXJ593bEZSiy4Hg7entuccRTLbG6Swfy2HVXn8ym6bzJjvT+IGPmui8kM4irhxWo7DVtN5XpjNPyPzwal7dpG+dMU/mZ0Dz+j7vU9N55e9xoP+D+iYPeEahebn2u1Y1ttTTV2VnGroLXWJat5Dzg40/8dzK4rJtnOtARnwO8cjLVcz4jsZKzq97OcZfK7lu1m4e736ydzufC+04c+PHJKe6J5UN51ZHZatuYGuPa1ABHcVPnXMPbkzrNVev9O9j8Ji02/NifDW0PtnsPYxj+RzSsi9NdbVn81rIzuB8VpW5quOvoS2cxpk94DPv2HqXD345BIBfDh3fl0Mr+WWpd/zr9bfnl6f/e7l9++3l8g1Pt88BeqeoUX728dern9W/XG4e3u5/TPWlpQ4nzGHxKkhtkyVJOcfJhMDH5L9e5ygsnYXhmS9+7fvm6RnJPZPpdDDXjWNMqxDHuXhmHYvThr9eb18uvevf4IOc9y5H0PERvp02DkT/er2O4sM54KAw+IgRzhxuWSVXt40VDQeKB23JfL321+vlx839GMSSh3PNY021UD//9Xr/PIlDut6tea4pHDUt+sz/fR07yvXGzXMl8aiEjjl/vT5/hxPP60Wc51r2tWPm28W/Xj+9XxkPCo9QNh5+YpW8vt38eB5rGvRgewKPfnMnren9ZfTT+bQnxD1YPvH+9fXm9o9vL0/vj3e3Tw8g8N2G8ajQY5KvN3cQ7xXOzTdu9Oy3B2H8+x3O7/tFZCfwT8e//vXXmz9Hj7RzC/sIhz/SWaSDTCehfPHr5eZljATLZzgcCx3xXCnyG0hFtjgEkh2ZQeoHwv7YfkfWy7/e37w+P73e42HhFeGcnk7ocffX+8e7324eHq4h0L/1CFWI3j0/Zky0V359eBrk7fEsl0tUZ//16W7cBA7qp7Lv3yLX5Hx9enq43IzDwSD5DbucMYQjyUc8EgLkQ1Ijp0/0ddsfI8KtIQb2SNkgVCD49enl7vLycnN3DxEw2za8Be68p7dP4YnD2vBYjESqK//69IZKiZDTEN2wax0jj6D/eh0x7h+/fX36z7GmMESJHjk/jrwJ8cPHRT8+7XZHcGI80GmsNNb06/vtHxeIF90GRdYRv14+VCz89b7//vtVcwjS+G2YsuqReace+YCOnCAp7LA9xXDoL2i2h6/v9w+wWGuD7FROSTDoS/gbtSv5DMXjkZ4iLkbwax34u2M7V8OF0f3Ln2N+wznwNfIY8Y+vT0WvQz6CQDfDvZbXp/cXjIYbom6UUsnbm9vv40HoEPh7HE7FtB/FxUyDkXtlk31cbEOmCPpj+vdRWxbiMMQnOqke3569zwElxkSF0bc3Dw/XtcHQNgfpbv5gAPnYF1Gdze3N4+2nbAjn3xNo0MHtzfPN7TVfxuPnpj4g9JhoI7uepH97egGOOUQuHOOSVDb33N68vw6NpMmwz6fB3beXh8vXl/u3qxblsxLyqng9Ly0oDrm9anQuj98uL5fX52tM4Xh4HYZFE6/j8RE8kYao4kzHK/8uzEHhLEqI2+Lbl9s/Jr0ipeGvU7x9bQPjF4dkIbT5PFzGiBU9O60dKcvSETjw0Z7jnoYrxmM6OhLMxXSkr8qHBPwjlY0cAmOhKKQ/G9lQhiGVhVVVjgRIG42JxDpPrGp0XDofj8i+MywfKQ8pGe1/wrb011yMqIHI58N/PVDOkeVw3z4WqlHpf2D+1Pnc48s+GBe63ulVTUO7twHSHauRUCjM73V9pvn5fBih+0n+EWlR9k1uWbTRa+aHoTcPeQToFnDP1TT8MBlm3rYnuYrtSGfW2nHkQPmtVT3zbzorz4Tq8T2dxb/un8YlmgzLk0oPBvbv//j3G1Sgw7uhxNYr+Pf75f0CFZxHrCMPXmxHLFmjLNkqfX+9f/z2+vpy+/T0xz20Kz2vgVOmW8yxppfLv6GWONTCf+TTK/y6MmTo4qsM0Oykc6xA3pMXxoWDfyKyPCfjOdIEpj3HYd4n3Lxv0fO+S5N9M8U3INe//e3yePv0+GgT6udwjyGopO4ngmkxQVmds7xUww4zHxRNKNGfKJKHOvZZZ99CHLLWQze9HQLujUI//ytLQprP4XGF7sxPVU1GuPOIUmik6l7HAEmH+WfGp/N5XVtopiSv/FTzrDI5d75Co2a8svUhzrk/HHkTNwpOvc79qSbC4ZMjPmIuKWLx+v7xmdN51v0Ie6ZIFKqf/PwhAdXx8/9hfZa0bOrvc0oj3c+eCpVbQcVDvZ80cOeT4kLjs+cRSWFo5rHQCLyPryOOGfYD9UiOWA6AHygXnvHXMxEumW5unh7ef8A+T4a8MoVmBvDvPo9E7ZqR8fx1qp25/vvpcb5xH3Z3fBbsNViEps2Is9qGKY3v8npdr/9+uH+7TJObpGGLtPHm8VHPdfFzDSeEigalO9+wPf3otPbykQd9aK3nNCnliFV3BXNniYvXZjWj5LcNYSP5EIQLPaq5fXq8+wSU23DonBdtz7/8/PJ0934LJ49nghQCFcv2sefucyajs7QlFhrGNBu6zjqynbXHI19ujO2QBR35QlM6jrU4FtlTRIwd9eRF92HcU+7GbT/IjXH3a4y7r+Ox64zpwKFHUvGY91Co2I4UyC0f63k9zp6PhCIbxXSfs1tAjx9A/P7wvP39g1wZQ4bJ/an5/t5iQg695ODQ84o9HTT/iKehxwWzUJpRdnDqLnLs3Y7k3Nv2P6n50zsYclsd6cx5OtNZpVPR5+l1CBUVDnE/468+ze1HjnM90q3z3FHrUKIh29aRUESpJGqobfo7z69vPQAc1XySPw2HEkcmeV3sA07VXRWmt++vb08/Dvo2bprOIrf0k7b9UeXj5a/dvy+Xf7/fv0Cgzzk4IHOuiNW+/nj9vK07S63yP/7RV53P57rOmv3VpPARJja2u7OabNekH6m5w4JGLCPP8nmzLPuySxd7iVNts3Z3nnlksWc6VzNpd+deth9F6WJDfqqOqZrOEisa9DfWhHWck11nGuA+C9EbfXkO9trxqB4XNWxUaPSPgv/yWVQpO8PSxdrv8feH+9trAOrdAyyzzj+4HPm40nFjQvqIvuEwyUjDOGfW8wLluEUhtiND/0azYHl9Y7ePZ7F4/Ei+TQ+oj1qeLSXI3f3r5EHjcOjzwQP5aRhU+8fl8nxzBT1jreejuQ90xvEp1Pp4efvr6eWPsc7hJPoIF1vsXwwAPcLOfUj7d2BPfrJzcKTRwSOFXY1O/vXfOo8bd4W6Dc1ksYM+avn95v7hUy3nZ2lUpHSq5Zps8/KbJc0f4fLZc0caD55S6KPOu/vXl/fnT812OGTdV6+NBnBM6lu1ieE4W47af+6N/gLGus7nhR+XFxwRBI2GyEOtP56uUAKTfg+O/gevs1dlCcQ/ZQCXMjh8gUIZAy1tSNN03H0Ujlty4pHaon4QruNWDDnkbGX1W16fHi4PT9/+f3lvtuO4rm0L/st5LmCJpNr6lcJFQuFQOLTStrxlOTLjAPffC5TMyTkoDmUe1H2rt9h7pabVkrMZzTlVDNd8RMt5YT7CMj9Pyd3UWUvYUl4PSSZwYTwnszbBmTShY9UEdXzpwTSBj9+Fi+9Eo8IUsYAT8JBIZrmA0DJSKxonSo8R9FmIv4yxcs7hM7NxqbTiOWOlPBLpJittAOukXCxFJaOMOAQpCAU2bWtxx6llF6nDrmRrqYO7Qj4nKVM7Gex3Vv6d6M93IoFeWGlaO6nDKLPIS5H24y1Bu3TQ4aKw29fBCf4KEMiCdayodNyqhopjtk7D4E0jtKFGnJ0a5Uwk91SWi/poY/I/thtLQCVrLQUjZaRbNVdPkF4l1UV4RXjcB5A+02RNGQOWh7d++L3sGFiaYCn2PVyp14cZb88h1hfXj/4xZLqwYKdSUhz3PqAQEzCars8oBNtHm6fLj+sDsQkVYKC6g179evxrzrzrSutLakT85qj1v6rBw+uu2VSmEM3Xzsn3HSQQrPiIOXdUyPuf2ENqgOpu26NtxwfISSeWupfUigq+OSqkfKzHfRhO/jkmL74pS0gwKCnkFWd7YbdoSRxMJfjr4Me6uFDou89XmMw4WCdHzoinTcnRD1uUrRueUUyudXbrzMGSu8ZZprnH/A9WTiG1OEqfh0B7xQuoA9xBV2DtkPU7uCK44lRUOu803RG/pZtDpoj7q2D1hA9q7cErc//2mgr+xMb8KMOCpIehSq0+1L4LauGdM4IjshxeM92/pw94YLpLaapob3YwH7h/7zsSxuo2rzWSV9iDz/z+veEq87fGwa3hdxlb5noto4c8b8ucfk0ORnSVpFySqtqKCt9tERMMGQzlw4tT8XR3HlKqTg3cGMr92o78H87GDSDDqfvLFjvxRas1ybjjs9D12I9pvkPV1YI/1AFWdTt8nq79A7MV8Ig6gGZKgOH3+Egr+Ra0SA9ArxLl49Ivw3+e/WVckpen1TmLcRRRvcXyiiV9OpKyDWRvjQxvJGfm3Pot7M/h+6u/PMNq6s8Yltfc3LLATPcw/vxckyGQus/kkqa2KB92/Ho8Tp/DFZf9WssRu4qDobcA64nMz9stncnqXoQT51pXUuOSfcD9oltrCrUreUmwi5VZNGsDt4q30NdgKUPMAA/elhwEuB7+Z/yEAe1iSo4gsFKnv2ux7q2cNIFEHOHwTfsLdKluD7sIKj1YSP56WYRdIDqUmqNl+xA1pBv10Y+V3tp1HoSYFlVlSHNFFPUNn8quofIced3/qXgjeY2QU+k2hYYpmFagyQV/hSFYjqKs6ynTyvC8oNySLSQBQDjQEon9eCHt8fHEGnZjZu1OEuwQWoVo/stoQfY7iQqGclHfkW8k+agJUEanUKYLLRzHVYuSsGm4EsKJQAsHHq3h7rMPmG6ZBt3V6LcbQuzBXnqO2cjncHwuj9OUNDLVnY8i2xwVvUXZNX81JMlRMaft6HU6dfYKf3tIZYtEfb6iZyOlaKIG0hJDWyi7wqsCgKsYfIculViWKrd6AWHIEMhJjeSieGQT/2Lvdtb4qTKgaRf6rNEMR4zQC/nYjZja20YQUOIJWAvGhQsQyqlkRHTBX6KgK7qE2GnPtsADsxStHiPsGiKVzpQa8ZHnil8S63Hr749PxM9XGtvUiJAizzvfh7dnwrgxQAKTssfROeP74KEA//7CEa1eECuKEXwfhvtlvP1MuOomsQuiwpb++F/zuKQDkhZrI9m3eQH4Pnz0zwtWKeCBY+VN7UJbxAjyysQWeSlTqDLg2m0ZhhFOBo5OGvzOSkuukbY590F9nWhwjPbWMT/WquHHY/ANoWRUUmt9n44vIFtU4k6sSRUiKGspZi8Ey4l/FuAJ1ErLq6AbyCtazPr2Ole6E9tQSYBXIG9ztXpkL/7kLjkWS6XpY0IPMKWcbUV7z+FH5nGaU1IaqOBZXmS+YiSUJABMdqIB4WhiG8Lsm3zGgacnl8B5hcjLi1W62OCI6BBjSSieYBHnKE72ffgY5nl4D6zTeXhMl0RMvdbbHWe1sFCZ7lWlmz9RkaGkJVWIfZ+n64ibeK0/n46ind/xm7MwIm1lsRAnKwrt2wSvoUcI84GwjtmwPvnWRdh45GV3UclFRkGV5PS8C7b9+tv3/ecKj1NY5PuqFop9KN2n7Wh7ODFLhV0cRFYKmWOWQtQsQ8JgKwoL+As3VsBVWq7hsoXaC07qwYej8PLt6GzpYrUKFtfNjnLnuB/r0j7MaeuwMZqC1t45+XSMrPGmYYAlo2VT0FbBXwmzlzptrMJ4nEsecHV2W0M3iZ/VdVrtrdAVyliQ3OZH5x2YQLJJAOYcPqjGDngN0LsKLzYvmjZSeWZQVAJRsj74MnZC9RrZ5mhzcDvQ6wfdE3m5Ug+rm4MX2QfYHauViykE/YCArHWcG/4drrKxw/uaWb1axomREEzc6e0bH3vwDiq68CNPic5QpRssjUBPatoOzUP+TNUCeigqr0tKWlAkfgyZ4LzATFmW4Y4ODt/Hx91rNCU9dCDzHF3YevCqs58MRXSa1ISOpeE0J4iVMeIEF9cm2M6Yhpe/02nt5ewgVzqlEJlZXulN1x6h+XoBCzWDjauAE/iN5fXwdBuI5rquHXknOgTIYYd1o5OyLt6nX7fL1L+nH2YDXoSFKNPY0Jq0lgJRdMzMlBWSXRPukuWOwjpefrQJ9sb8NdVxchNX9DcWChAlRYSAS//4mZwRaOFQRfnhMqTNyw584EraB9kp/0GCGlo2onVV0BbccJ0yLrWAl25onj3c9uspAMWOD0SCj+4SVHRP3468Px+4VrkSZjd0ZD/cEk0UjRexhhY+pG0P9pLia9sKV6yLyGhRKOkEhSWMM1cIgLOgSIG14k7bvsBMtG0AStr24Ep84d6fh70SVAkDMG5ntoXwROdrjxBgU4KHak0ljLcQuZzAAO3YNrSyGnKoAxj7VhT/M9wwHW1xVFfH1gK/gOf1Yxwu7+nG0uIQWOakFe3Q+FBIDdXpoIlsr06gv1aUgDkPH3UqWvQ/l+FhRW1MQqKVFdVrQRTeiBhCRVGOe196ZwCPJPhXJwghrhS9RstSSNQL0BYCAxaXlVI1kKQly++h/5nUqq3TuiimpjPr9eCcok2tq9eODuTW41Gpw8DXLsrHYaZgK6HGGqp4sYbdIx87fd/ENVFg5zWl2nqF1LfL+Pich8s2Pru9p2TnWqdbHdW8GpY+EWIDno2I9lnL94ddEgqi9JYLbq1HbtKCWawkDHFcHJGxlFFsp679HU8IeBKOdsG3HDghl+DQ8OjIy9pX9X2w65S06AxIctmCgsrWQOu/w4GAhuccnn4689SVN10P/YEvqvI5K1kAesCH938H69Zpu6EksuH36fJ8H27eG2Zd5fEEWug+xTknfSl/f/bPxzJ+Dau2Gn4Zei2g6MfhN6b3OK6VUoO2MIbf9zHTxdLWRS4ClEMH0hUU+7oGTHdf4E85+VpdKaPOUoBY1PjiFblP0nMg2Vha4w+/77BYNyA+x+XG/XEgSPHP7v9JUFX61pUUDDv8XobbI32FLUjWtHGKy5/fMszeNvTan4cxFTwGVcKDd8B/VMvP4Xv8WCF8yRKtu78Ucf0K8hp4/Ry+18/DH4fRdAXR8dQnjeYhRWubJ4mmjUV5TpZGy0XS7f+Dt3uNtPTehHC9OI//e8wnjKXtq3ni8z2c/bA6RVND34fztobv4THdE1edUt8Q29By56M/DcQ4uYRUuaEt549TVp/UQAe+oFjrj9P1fumXj2nOhwFNyYLW2h/Du89Ch/e9RkIDuJyCFqsfw3L6JPZaes4eirJKdBAb6cTRuVoaPMdV1zPDSgT1DRUNWGNuzdOkya8Dhc5jHZAihtNDdcQcDV7DBEJKX9NKco12/ejvsx+3paowpUawVwFMUYurXcFf2l3czLnqraYKW3BNx81rzIO5ie5KVaFAr8M9aMIO2zRxRnP42P7k9FNqqGpVy/nToH6VhSIEQG6VtFZr0UltRVE/emvVtBe1/kD/eEyncZcmtJrHYgydMshWgCeqqyXRH3A1bQ7tE67WAoJEPBKNYHSsDFJr8XKvo2hfaIGbrhH4VYjinPg+OwGCSg3qamHwNRTamW0EGMTkdTJo4uidjzHpppUt9EIoNt8fmBPVhkS1oanyx3i5EC1rMFOwjTSCaXPoY7wswzzsSkADl1LGljv9ZMd5+Ew1M6EzQqcIH+OccBwaqDzk4XIXqY/x9/C+Ol5s82c4C03YiAYgjp/PZcJ0tq1gwwlIZMct2z8uz8dnpqQCIxERymjlfReBqNAioD2x9RfG2+Ip7ogOKeATbkOdYFpZDVv1g7LqCJbciiuyFesMbj2xnsde3B90r9qwoplWQJOtuOZ2Yi9oBC4vXHRnRSPR8Q96mk/DPHzMA/aZnW6TlGHRFWxZFZfcaJcshtccf6rNrnFbUq9tHTpXtSggF3RocmifXWpBZdk6aipd65O3pBwr8EMUpnyrBBTpzZ3765CKRzSAVy8Em294yvW8XLwJVu6V7QpgEIlEQEmlqXy0HfcGgEe2FRRLS8ljH8/bDtvaAiPYUu5dOJYZDXfQWeau9OfhljJRSl2qWG4wfvYNo34ZcjrXcCsEd3hwElvCfn0ue+A/6OiXcdNlb6BE23sQgbGAINe5J62EejzfHqd5vO9PDkZJAvOnqIwQ8cXhImxg60Dt+U9PQAdbpafzCtZauZn7XNCg8/CftIlT61rIlRTMch6wzwLJTiHmK4UgI0zA09pCxCyit4+jkmznYcrgxWE7KGhaex6mHVLcuEp3PznpzB+87wQj+KgTnnDVSIJHcRYB1IYfpwExKaqvGw7eqZyCtbTlfPUQIMriJqjWFhguIsdZKpz0n04uM+Zp4OzoSDBESLpb4Ilqy0j9lYymEq0VLvMtwXeABNfA3adpSYiQNWvRkDLL9WpDjPt0+T6nHQjA+le0E3gepuuwZ0fDwfH7okW2d/HJcRZBUc+WdBM/o58TsH9FDFVITTJGKuSplcL+7yQ9rA5Wm6W/4BYP642AYil6eouwVjm70gRQdFYAuNbSJvUWLRMIutSNoGU66Xsf7L3LiwycWXRqC7qqNX+sS//VjxcPkrj293Tdg7mFMPFLGbhWByvXstoHrtx8XA+1br0tZCppDj4DFSsDxTHQ0I4w4uLo7HLOQQaombYUHBMnwahIu7kX+OZaR5FGPkZm31AD1nBB4j1W0DGiD/ZXNF6d04tzi/jdmKP3Tv/Ac/n0f/qb8L4zmdb5cCkoCUPJnxg7s3SW+pZWwiFzh88nRnzejs9Xo7RLEXs0dLrhoz/nebgt60Kxt1qDvnucwIv0mHW0JIuxd3hwXcTXYduta2k6VuGPv4udaTfqeVMVbkR9kDAuL6bIbnhdYRtH+FUiaVbR1pBUpHkzIvVu1SJ1HDp8TSitGzpoOQ9LLr9qAJJWiJRbKbPIUqTcqqMFfwWi/+cifIA9pBT4obTRch6W7QiYJWlmGMVrhkM3GY9ss7bWmOqOontCpB1SA8TLDtK9PTrXavEbR+Hg/tBdmxHqUxmI2qjO7kSgTxA8tqTt/vOw/PvYIbP0amCsNKrKg6xxSWRAADOjMVDcDPQ8LJf+seTMrGEGWIexAzeQWEM9b6fP2+Q5+qd9YW3007eF3EguPpWNmd2ULWzKoqF4tFRfp/fnZUg30qYFWnbgMZkozmIF0WSjd5tgj8V/yNYHafJym37hm60xSHRgeR4WwvjRtfbRx30f5uu4TgE9sz2xkDUtIG/kOs3R95JGzD4eB49HUoyj1fh+eZ7POwivq6EEoIBUH2Ae3tetF8c1uj9unMCRuTXpGiqna9A0wCiTTcaKxqhQga092tZj+BwmHVBmkqtzQ1gImAelg6kqHZlhoBwqHcDtkmZYClncIq6F3T6BBdiJi+TosN1aGXpbgZ1amSzb+qju2JpLj/F98Ff0yGoZGahijpbMVSDyOY+QzumubkkRC/7oDM3WQp1igzyFddQ37RVot37VeqzWHfRhFzGQ3880axDmPKolVsLvaxiRoF21ZGFzlDXsrcLAIzaoC4VJaB36cnWYkja1/BHRENIbPcoTGF9Z08SP0pREjqCBUV4hqZsVd0Dr5AOmwKMtbm4pAOqGpB/2oNHtI+XXAOAWHH07PkLu44dFRHZCbqx0Hpav/jK+r7tXdhYBAoWiu+hKvpFepjccrjg9hyj51zMt015KooNdiv7olmpjrqQqGIG6CFK5CNm8EeVO08bRm7gaWjpPev3mWlCmTUwLdun8ScYQO60FAzaHXSdDSL5Bb9Gytk+VZjC3oQFqSgqqfQXb4UgqnRS3gqIoKepHAl0SSGSlX6029AANd8R8RboOy+eEPV9QIwgkP8choxDp8cBHpzWmXDSR4n3opMxDJAyYjVPU559KRaOLXWtlZsqX8BBwt8w0kGxxNBlG+KoRmwF5gfR1eJK8BeMWiqaAqruNkkV0dPqKuZvwoaprVJWi0I1XoOC9nVwq+NTLaR0sYxItQYGgLbpApg31spRIy3PevREo0Mrb7luMx6m/9HsShy5R2qiQHx6osUJbKEU5qqSk5/BbZE6KvMug6+BKStjKxHuxY/BdBF0W4Vn8T04zB9nRH1wl2x4f92xRv/p59AVS+sGguq10Eii8YKXeny79CH2PDkhZYr1r5OmYkhI314hYdoGppRWDHxcGk6YU9FtJmc5b3D3esADShzpB9lw++8vyY5XZ2nPegWjY0bu2Ebz6dy/kctptym0LkrO0wf3ZP35c+xtOBgoLmCZhiskW6IropUo3Qx96uqWiSoBUkgxFtkRXRHd42sH6HHqk9OsBUBStELQnNzDykVI3BwCN0cn7diRK8eg+cqgaXtcl0i5WPlrBfQkCNdJlysMzznQXtWII9azyx5L+jVbroMXj5zCePxNRe6jBa/pFfo7nRMUeRtc1TV8+p+vwz6Zq+4/HRf3zmgPCjdeA4Sbsgh3tUHw+35K+PTR16KD18/kWFJmS1gEsy3QXX4+/P55pT6kEyAXF+fvDd3gNC61HS4vFz+fbvf/2lPzk1EHciu7Po2mxmQoiCpbvFf7ATApktSqJtbQHNPbIRQaOH5fdGBGSB3e4FGdaS78ynB+CYLaT0VOopToRhLRRdEPY5k0oQFxJrcrG9+F6X74fy5zo8dQacdBRxQMiTKuz+1ag32XoaJhSDICkueEq2f+F5eBqygyLP7zK+xFhPz10oTl4DPU297ekDtOu4IVkApKMV7RYjlHXXXua4/8xvf2b7L2Vfk1EFthw1bkkOu4GuiiP+gelE0AHf3uTsB+eZz0mp6o5yeqJiokRhX0l0dcJDobW8i/SMCjpFP4VMPG1ANBLGAabTuiOwnaxtXA0+dYVfiNn9QI+cHTEHCKchsvwNu/VIkoArje0WSBxcnUd6ErLl/TCnh8Ey+pXFACEb8WPS6g3tonVMXXGTn8ir9mIMryVJClUvzkNu28XVpCVtbRJmEbKNPvA/NK2f3w2GwgkebzACqTT/RBi8zS4ZLydTAllckOlSkOoS/82XNL7DeooapwQ35k/LJSvsJn7ruWCbUuzaIyTvetQdv9pFfzOkGwq1IakqU0IsZuKFBXolVcygYkK/xT4oYPm3/oaqhGxDDS0ANQhc3celiJaO+go2fsON42KS4Qw6eTcwLohtKSwn3VCDCsaqZBC0myaMPgyjYwP5L9aDtzQJ5NxUdfVtxj3SR9U3AxNI24khYgSF7Q40D+amzLovCH6RTZivciRZQFIhl12PZahpmTh0ExHA9xoYr9BJMM5xYkA2/SwrQopZzQUEvVyVwh8jJttHAoXa/M3WiCGCNuSQr456H1Kjmn+eOneUCTJy6H0CVd6sHDuDACd3hWq6AXJ66CVUdNnAOIlrJa1TNxqilhZ9Qqw9wAfrozqGmp1sYbYDZIAplzwNBNuRQdOZLVQExraXBxv/f2e6VJ2AJXnIkz6+D2LwRTQVWt4DaLCvE3v8Ml2MBCtaVscYjyXBU+la+FM+I6qohxYeXeAhePqBkm4jPMoqLU2tFWYBhoSXT2YkjR8n1dhMo2zBm4SL61VlMwX0MCp/M3zUl/kTuCoAzQV53bpeJfem84lryKcFpVJ0mEey/cluTZ47PybVkF8htBfxnP6ZcB2SoVxVKSkr9AAT6cQ1mohuYGR3kAbtw5K4sVfylGSwObwb5aU8XbeP84GngPF7WGYw9SkazA1+YunMt7OR8M9YDS2MU+lZG4M7aFCY5ZK07Wgx8sr3fWfY0Mfvk1BbpSSKdTCE+pE0aMUFOjRmvA+/Ma6tQP6mTBzXc2z6i3IbmSnA7VG5vjCW+Y2m2sEf6gv43YwXt3i745jZB5DC/xZI8y2ijcx/VZw/lwykvuVnnId7XEos2ec1iOxLjrhHLxlYwI409WKq3gqfBs9n2D874GvJ6YAbdZGNCUayjWNYb1gqQbY4ggfnCmLgL2y8S/DM/HbuOxN/zqtzmNqXj7ersN1mr/v/mr3UHKdOXa05b+uN5dpv5QZB7AZd7CIPxIX5RYEiIVI5UpR4+BGa4lMawt9CCtd4PLgNVo8hfr9Nbp8wW6Tqh+a+91BvpTPpRuAAxWiZ1CIUZBxUkMKoa4WZl8trlF1JD3zNo06iyylVb8u0Tm+pMrjOuBl+P1lsrsE9PYi/YbSvNOoNhsVuiXigGMoP1tHzQEOyhLAXbxtpuJMN2+m4S0TstOyUmOhbE2nbfmQmd4CdF1q6uKg4wX8S3JiUMEdLIgx0GP1UNifUgOn9DcfgI+UaQaVJcxJqbK4DuWzxuzD1AKwtubdOBXra1o5Sbk3A3T0eU/2tqnz9XfAK7daLcTYUHobrkGqAu3GoA0khpxdGWLsd4VKq1y1RrB+ArKpeE8gBD0G71Qa9SUy2P5zOIp7n5FM3IBIp5BYTCcCHLXwG2qZdLrjr8L/SHY50UtfK5mOobQWibZv5EJ7oW3iGEjEYCjYE6ImVGdTdgA1490WHSTfmoJ9tRWzM8P7jzpmph9cIgrs8AWCMJf+dn7uvrgOBK8osRTCTR6xm0zMQIq0ocwQjJPpU5fQ7uYf7qOf5x77MrCplp3ggAI8xrROUEciImVstCuVDVMwMzXvf2wncHteLimhpwOoUxl2d9M6OSWRYDEKu1PKj9JP4RFIiMO7N5iC5FEvxJ3gq2o+bXv0vx7vSZ5V63Zhx5encGxq6lzrOVZHpTXW43eeCrVG+XWUJbgePN779/d5eCRVmKacUYj9GuDfR5p86/vHuwn+2PtnAkKr9WfUUaW99eD0ljX60+n4WDccu/JbMIDWWOVDWx8gJXdoakHHu9yPk3d8v+xx+mCHIA6rkdHFh+95Jx1TAeO74wnTI3jrBvFZzLBBu6mLmHaeoDyoxUCt84pogFlTG7TxsYkq46VZ4IpaKTYdRfCOjyOZyFpnS51wEjhgbnwcwplrnZd3UeCR91geR8iXWufknczlagpg9eGu/a0/431rtCZ9x0vrx/i+dVb6y+U7G0cvbQfL4uqMKWKinlyCl6VPR0DfNZ81JQG1KyAG1ucXVTU5wisJvIunl2JBONW8DE/i5T+tWgOaOgE01byPu4U9+SJifp4SJFejm1WdpJ71wdaxhst/qBpm1AnMqOYF8OM23Y5PT1+teElzHnSMSM5Q7zKC4Kp5S+vhU4xpft7eh4/xlr7S+noPvtPt67xMp58ZJyA9PY28Lapq5R3DHo9f0+y3XywkrJ76cGP18SE85hX9jjdIr7UCQuMefSrY9PYvhNK9XhE9MjVVtfGhxq9+GVIyWaOHI93BAjZ7NPTtgnkp4NOloWbaaPsu2WjNm2yPefjPM91TOrDxLsU7vBXv8NZJ+inSekYG2yaCvSQlrXkTCrMtp7+2MoAsnD06vv/o59GvgP3Sv43e7mZ/r/ULcLCqbvX2+qnhU9e7mBTdNa8vdSSfVeclq2tdandSanPXJi8gcL4N7zgStzrH5RqH28HPe2hRwX3Xa1JJdQzGhzez3n/upgJuTifwsIJyssaHF/5MXj2tomdKDuJ5RFV/lshojGMnKtIcwD8+nndffSBwRTOsSwrUHx8rY1cWDWggaUiKcVI4Op6G7pRVwLzd8kbMMlyv/e+94hEAAR3vcy9DYmoKQhelQGxlh44ZYkwuZIG1JloGRxvh0J2xCt8uw0cbzdAD2Mhxnc1/H3mWhSbU/5ll8e/jn3t/+ulH4f94QaMVVPTP+/hY/hke13/8bouAaS131dAN8g9hn0tSp+oJx9HJJowYXaFzLWR/2K65AaKOojfoStqV9FH2ObnTOXnkJFr65fswPg8cvZkOnpDTJyQC33R+/u+C2hI6ESplPmz5Bf1KDAn078d+CqUZ//tryZBVQMixEllDvqrGMI+lv7338/sepg/miMIBdJbWeT+H4d576+bc3AsWa2pYkBbAtgAhExFtMdE3OUzmrI0uqvLvxDzWNjSP87bmn3OqjloVYLRC2UNydIq9B+Hj0J6zLdWW2NzVP8bfyUIK0+yjG5eYAQK8SxwKuJq/j7Ca90Eao02zOlrD+WOnj8fTK9Kk8lkGTBhkja1oCbwF28cBg0QhRlS0BP45fO9xE5rqLFt0KY2Vija9gqJX8pIAdJ4S37OmQgZcB21L+/OHYmLqBJrQGG7Ek8uKx7ClSVoSfu1tewcgnMmXIOBHZ1o/R+8tnE4PYKIrXHxu3vuKIl54iM6AWcQfTiRrB1EA9rGNWQHFOCXRjkBOID3VRpM1isV4xT6MCcCpVpZiitpbYcb4AKEjWR0fmb6nIKUQii3b0nwymLymPCK9mDd0YJsd8aALYBctRWSmVwm2oZKdoApSDbYJzB0bqRJtKBpsKxJhrVjNcKn8cIKnVK2lBEntWkS+W9pA9hp/iGAB1f9WZqw0t/ERrtO7b18mjdoCRImivFHJlnFvxLk8k2vSi5T40tqKjhb2INEOGPecP3YZPlIKNeAXaOJ7Gc79KUM7A1ipkTSR8vIvw1f61cA27oSC0dDu9CUBGJbAOapFjZAbwK7AmGRCDJwokdIytN+2xnibsqNrgEa3UROA5hYrpiY5ISDFqUH1wW35suyEIJhIHFmKf7mMb3M/f/f3MacNrNs5Ub+JPvNXrOfymQmmuyVC/eM2sq9g20VmdBCaFsAYFP//ipODWKrz2U5HuFmFuPi+DC144NdWn7tg9ckIutnSAfbF11RwfsBKE8kUI851ppLttqZA7zWsnxLOc+8ddR7T5WvIODxWms/VGrH1Ojjf29DPKZfclOApzZNAf/j7sPTjrhkFjsMNlfryAdLNFcyZKZF9PTL/2wA3avnqPt5+/gGdCERfbricjZRcFngbdHzNX0N9Dv1l+cydkIETohvAiLtoA7toITqVVhpFIhFk+YjAR+0vWbk/6I6JsrA9uMw1VF7vT1cBXOgqhMgJ/rVwOqJoyDe61eQZg8ADs5Qj7w89MrUAO0hbUSCAjrMJL6XmGCC9RDsZOg6utUA5j9K2UuzZUib9Fe23+PDbLd/3SAE1wFXdfIgXUjqD0bSgjB4N1yztmep42RcKKOFcWAziZN4q0PO1hXw5PE/wAYM2cPI0gQLILe98RypP6Cw1NUF4qgdFxNS/7+VLwQG3CR9uw1fd6dQnmjSIz6IPaT0wMaUpgHPVdjJrOriKU3/ZDYc62GRrwYMdbKhTRvVbo4MN7UuFQ1/sm+SCoJCOotti8mCpNmESN5cYAqunjdwcSXksVfW/TOfkBQQ1HzpKv0znH7kyACw8aOvqMp3PqTOOrlut45vNdNb0qSSGXuAdbTNdpvN4S4jA+lVxAbrXRLkyvqf6YCk8DzSRRI6MtuAu0+2cqSiBTisa0hTydZmmnzheb2FqZ3i+hlrupqyhoOzYw7j2P9N5lv7o2Uv3gusQzSFdzL7EWHzvMaoK0Q71tb+vB8JNhAldKeZDFW017Ix9CqjLBSplSykweRrgg6U0TuPA9rWi3bRrf/ed2WVaJdduiWuvTiCMEQ5PRUvua+9dtN8uw35wpt/+NnhBeGk2Guo3EZwBjLa0QZpo2Hlwer+zZpNwnXzSe+1/eznE2UsP+Pk1xgDJfAELc9GxNVom2wL3wiqsE7aSTrIMp2xF64LrMJ+Hu38aSSqmZwAdRW7luBTgTyAPsA62LqYRUwcnzmBO9IAqyYXr8MHZjhZIgTWNmzYsV7agNXvgJaeavSUcX4v6GTdOzfIIO+gr1zRhlYP/uY+3+5Sw2kwBhotcwSDntdO1cGwAmlsTayl5GlweMkSe5hfVAD9YrbBlZfwfZIBcRVteIW4AL2V0x3Sd1Ab0kCllOFbRGYn3zhtPiScHmMUKLkvkYiiW5PoBt1Wn69LCKeisDSzucQisHg8vmK7j7TLczrivA+FVlPop2Gi1Fbmd8xAjpynV3Cbz6q2ysdoHR8uWkhZ2+bBJsGnhwYq4u6wDpg4AEdOZCPwIf9V0SLNhSvPAn0pvDq2VRVgahtwfD6GqEFSXX604IYqTpYn+hzYOQ/kTO0QDV9qXuRV12JJmmvtwvjXxC2NqUpe4uXBzhX3Ml8cJYm20iEAkxZS0b5INu8uxK806jbhD7lz6d2joFsjfXOjgEALdWhh9U6je3+CeWwvzJYrlwFi4jOokuhV6YkS/8G7KFvXlc5AE1ZmaKGyUlMwhoeZENLbSiXErIuYlLdqOgNOdHn2aKvKRxAKj5lmuwKfx9PQmJKW7mMm5ioLPYkC8dZqcF4GyVRFP8fAzziK8K01KjJSvUnjmAnB0Vh58zTcd/0M7pU6d0rQBs2PEmNfVVE5L4qWuxpUe7bcubgAydKB8z1dMD4g6Dad5SNVaO/Ca53a9ECeXR1U6qW1FIjfitmoqRJaN7Yv0JGmtNc3acT7zK94yT497Rs+xcMCaj76jtGG2D7gnFJsCVKM6I1O64280xThVGlfSind4FfgIruZFlY/n7x/G0wubKP9UstHWFDy1xktr9K6A6kyU9SsZcda0Pb4GzCqSg4REKwoQ3F5mDZUFCgMqr40TOnkgNe31YtD+fJ6Hc78Mw+9VAwO3Vq0j1ErlVh2/lBI78yW28P6446csgfLnppc5yQ0rXuVByJu/6PT56CZvW8pyTN2XMOT2zPF6K90IFdKvlxA9CpngAXWvp45ZpBCHxT7TcYTGFneal8OnAz4Bjpe5Ptgy3SffaTz1F18QppPZDiSjasmom+O7uTrKpd1uA6s3P3wnQg/TvpL22K/TbVqm23h6Xsb3j96nEij8rDvBHR2BXKcVipCM50qwoeMKV9f/LMsy3cfT2hTDPUHjgVxBpTeuz8sy/khLhLYEfXmKp7g+b+Np9DjgRGbYgUNLxa/g+Vi8i3Jy+SAszJeO57J6mKcVIvBx21gXCnHooBvzTMfSLbRiLG/8+SN347kCMCCdkJh4nF3v1+K+EnLS0FmStokJADQjLnAmSstawUuUImlZR4Kl/NdGuBcx2Y/ZWivldhcUS00XGsima2RsKNLcTjBQTlB8MpCwjWSTRpxUjMiPmqhaJGB5J3ZMssW6WqD8dSuPWOZtDeV2+bv6uEfMSbIM67ytlO1czo6LAEnchIylaZnSkLJR/1YMUFR9QEmbt7cP6MNoyK4MCJyl3AYUA2hBZNQIGKiiJfG2G34lEA4DSh+0MX3zDipv0/w5Ja5uDlY+njXchix8sTSAI6D15G3ID6tKmL1x1PptWLwJS476ABY8dJ25Dc9lxhGBqQCX1FKyjZf3nFejDDgc9F9CU9xxkttt+HW6jEPSMobS3ArrynbCnCpoLXQbfgWaLYwRdXXpAqOzpGXPbfi9/IsjBQdCaOKlVVBg8xYjsflrAN3Kh6H+YM9cHVa6zPa/Np2srGGtXqBdSQcOGPU4ooGI/An+fjnq4uH6PXIldRqJh+dPQntZl4c367EMMLG1GsnlBMEeNihx6S5p5u2j7lSqTQu5WdhiKjFstFTY+Db96O/jj6Q/ZmFcT5uK/uDn8vljd0IWetgUE3SbfpzmYZ0T95ioW1gvKXjHB3jO83BbfqQi9xYWDapAcJt+fAzvvtgY3n8ktDQLIC4qYXNL9GMaEDo2FLIetAWwu6LHKTKBNJ2kaDbu5BQvc6haUOmdRHjk3hVCfkt6WgK8r6nAa/itpM4CYf1KkiNJZqIXZUPrtxDaXwHpTFY6I45JWHV0a9ZtYtdF0cV0K3YDFc3wbxOi+6EwqCp5SBT5c1th4F60O7EkBVCHZHoVtXmg0qjGAGWlCJ01W0gvx1FHX4ian6IaGJcXdGwIobIKmvql70SltKRzqDXi917fG24kMKSKQFow4sFtmuMzzsTfAxeLAlgdUlM1FMdze17fcKlqdXJljFhtmDbS+2Q4S4cnW9zQOEEwiYWqtYgrCE01nrjrNbAuFRQ54o9Lk4sSngMdfE1prQ2kE5nGUvrLevz+7dIdn8iRpsi3iY3GoH0nDGk69ljjPE4Trr3QZxN+Mh1MTG9rGoJVN8zb6XT4dejOELgF8CUnruvjcwQJnXGIQbGp6HLyiueb9C/9mtF/VUjF1x0FDlCZxneA/7Sw2XCw1nR5z2XhoLNcUrOF6TouQZJqXousryH5yOA0ilgO05C3nCKId4DTyVPo49uajhsO1W8BWF9HNWRhh9d0Z/FxA7vhMj2Sggg6WR3dcb0D+yNrZAuFWSf0qYKW5iKbuq3GS5/mwYUFBfzo6EOhB7mQuVUerBlCEWkaWkjn4mbg5QVA15oA8DENrbBj4Hkev3aCeyU8E/7CvIK8jw+PYknCFDBqb8RauaHAin3AzE0EDnxTyVZJgbP7qNlbCCcr8yUudaDD3i/99+7qwZ5GDKAbCjnYB8xdPUSV0QPnUO6jZq8e8g/JtLk+ioRNfVFyTjSAbOcNZ4k5D6dh91YWkH40Yn/dUE2gXbzc/QQYXi1PiSp67YJmbycYYdRyqpRhP910eusnFsnVY3FeiNGz4blDJuT+Bhg997WFyPsUFM+di5u5BwY4UEV0Y6OAFgwcn5mXdveicLf0jrRwRwRByROhP/5A7v7UcBlWLoOv2X/6lezdgscrnf6CtlzYz3xM85C9W4C8DWmjNRQW8ucfyN0teCYBS2d5++LPv5K9W3AxjXwMFILlJYumcyoObLC9Y2gXbrql7iHBoGq/2vlqW5/dQUqzdryyi50B9mghigqGIm6SaPkTg6dzkFFCqMxjbuHshMlveCGBIXPPVM/lbaH8JOlD2QgP2D/RnexK5iw1Nc3JwkK6AkTfZJetIzJZpLk5/0FCY1MLTJLKRsCoFKScQzF0YHVZibFHTZErW9WBpQbQy2mbZDuywEMbOJR+duuhBg9t4VD6xqTCvYQJpNe1NlLkXexO0IU6rcOmDzxRsI4QvFbNq9MMgRQs3axMIGUAGW3QX38Io1+GjNK/kVo/9LbKgKEsw4C5DOBmcS03jZR+RWQZhFmoFZFPa0TepbZSLIaOiRW1ZtsJL6ETubBOJAALvgTfl9TwDlLko+e0az7rNkoVZ71RhEraIjzdTj4oIHAKK7KmE9rpV+KT2AKvidMp1wN3WNYO3PZcNGsV91zulnRP/Q2hWVZFmFjUXJE6uaZ6lD7qe6oGYKA2FMaWpemij/I1Dr+WuT/9HG/n3EcC1QflakeHrN2OBGILYmFuhHHluELMvf+ccoNaSDE6Cka493N/HZZhHv97eF8H1tc0FNgwOG7Ueu/nx/BSxMz0t10FfFFald/72ZPupluq/6cZO9x7Ojti1mJTLiQjnBgXYnxM87VP1CZVIOHN0g76PQVeIR9f5KWEEVFQNMoaavfiWJ0wODozXw/OpgpWb8SO9v3uPXalDSj2WheZdwcf0uINgPYefZDV8ZnvvX8m0m3WgOgCXbAyIpmlHlhUcvZlhBnR+uju8YReMmPZI8v0YFvs6r3BjSxW9AlhVDbo03Z6ol1mqqi2TfvFyQ9kseh6ktVGiLKobNcUa+Cj+1wk1f4tQH64E0obN4hQkfZugIAApYW4CnEkpAd+vp0Atxyt9XYeKdBUFgAMbb3cx9PP4+Y5cNdsxJrTwi7P6wSD7E44fI5SMkKY/tZfvpfx9NjfepjO0Tl4CHR43+Ehik2pow3vEJR7vhroeNPC8D6mONgSOMUNv0E/9wkPiuEJBaamk/z7ZaekCYVoRYvj9cjzMHnqaYqkBUgbRWuvERJiSAmKpVVF7/+lTwDIqCfLD1v8DornCxwqugi8Ds1it4F5Q1/Ey3Pu9ywM0AGqo5C4wNecoMc4rXr/xTno5VVSpzQULnOfLt/n9MqgaSJ4ZNvUERAbKpZGOqhNcOOy4pZnW76Lbr9L3iWQbOCJbKqhWjYgfUsRgCstcg8K1ZlEyxOgZPRmQUwxKgWGbYsDEX2k/rIX7ARDZpGDoowSHyaTkGk0I8XV+2Pz+Zh2+HAUwBjZNujz18JFWJ72RyLM3XcVU96K3kFa6R9V8eOgXSOJnIddaS8Akc4wFd/gwFYlkSfUYCUZfVRV3DbpuxSiiillUmyAoUQrAxBHm6HasSUZ8cKEtxVgfFXLzaTishIV0wR9E42LxMZYFFOsYIy486mptESqyOGaShRgagqB3KJmHIoBUSukMiMUfOOkuSNY4raLuKy/+MEc5klvMgWdTqsgO6tUr8WjEQN/uKEU1AUZXddFyMzxIw/xvoY5K5MKb0AnzUJH4dwq7KsRmavRiw7ImMI4cLRDquMeeaR2QHQJHR3n/uY+HCaTYDsthdZBKTwP79N1vPVpwwS4AS3fPFa9jZer0mO/dFr9FTmeQ6xhEu8jSMgqXitmrAF0980aykvbDs0RWnRpJRa2lueEm6LA23NZktkDvJoNbTbnJQk6aKmWst9wrkaMs244acZnTAHlhni3c6ZojLjrVRgYrHQCG46wHSd8We5Vf5/Had5R4sBjQhZ163h/c3sHEQQG2z9F3d7n6ZTMEjs49KBRsR2qRS4SfSftfEQRhq8w6eOqNU26DV15YymK5T5P78/TMHNic61vbFtLU4aC4UPIg35trT9UsaU3nI4VYgJfFiPq3ouAc4/e++k6Yh5e633voOW7KamksmbA7AlqmH7uHv4SKzbR/zSivmhKeVZiUOaszIIqinG5z9OyWqaePvvbLXUbsCj5dZAn7aGqTr9KLghGGhcnlgKGLmU+LTuI7eTki4M9avvZH7tVp7SgfEuFqkKEXQAHuA2Rg7BVGOHaSmZgsX95lEdvP4ScQ/UbyvDq4MPYYvyTlRAtLZB6KVboPk+/U2tbyJIim5PXT8+3y5jgX4GISz161iMf2AUCmRgrxqK2Cxmr7WRLLHiPaIucMTiHHk3Hl9bn2+P5hgk0AM5lEGZEfMaIPF/bxbmmzDopVHH7rVQxxQABxHZ86rQevhLD0jxKt6htx+tEHeGFi56TSACt5cXcGinXFQTdLBtFYztxhuvEyqqg+AEPnUmSemB8hDbtAffDh7hM50Rn0cKOTyEeKXQHXhCoLwoRrTCyREc1uk6G9Y4qJqS/lSuudIlQUNxmGmlntG1MDdA9vnQlkc7D8ta/e8eV523JIXHAnqjgNeQ+7qV/3k7wf+biV4AeOvhGdvHvw7zK5W0y+c9HNjrgiCgqPY0eqjrPAMwgnkrgQPE2cR4mljw3QEbyEiGJ9ZeAzgrOlFcyfxE9e3vh2+XJ9WH4v8RewsT79XH+H/mt7IXBU+FT+r/8sUOYZAW54sGG9j/9reyFARyRDzh3P/YnFCBYJRRUvv0PgbOnDCsQ1YhOI6vlIfl64aWlsgEH8dblJvmMYRnjo900KO/GmALaUlK9O6qVlQZ/MeDViWeeWw0rJJXvSWMfjA8NeHUVfC61C6m2otyZwnPjw6pkhgCEVemGihAlpwZ5a4rdREJvKI5K7dyfbCChTsZR7sP9uXxNp/7teenntLJ04G3I+axJjI9pzrq/ORBR5uRDz9rbaXe30C+08d6y9XLHHUSgr2RXRlTcjfS5nejrOOlMKvEUcSHjQibrr7993396yqDuufipTZJ613oK19HlbCMz3pLug573CGHMhiGjcYIwKUMW7aK2Hp+ReYCzt0bfY7JK/SS4PvLco2p/pUlZtqWl+ewpZ5C3lro+LKj3wnrgbadd08DMmyc96+E77i+4z1CcklerxpIWoMZ0BMFVrjtAJpZGgIUik6SnZWx5WuNnzWX0l2BoQ232jk7jdfjxeL49TvO4hvrhFTt/7KsCaK3Zjjb+vA7+yqbcQ1VAbdh2FGokIXyiO93GBGxlQD/UdvQj3ST58VBogofvKQCgjYzsxUknrAWd+KZ0UaWelmvbL2forkDUDL2CIOpnxAOLbiQ+8Ncwfz+e5/Pw2LV6agDeiZlkmOWF1lmlRPrDPyoCLM4aMUKWG2Md3Rzm4fScH+PXcNTp1cNl4WtyV2AS81DBstbAx1Zokdywg/xIPraeOgtDsKJgVxI7J0VZ6wlRK+8Eb9OR2Dk2R10Ao18mxxTw7YPNw2l5jOfbiKep7kD0y6XEZR0oQefrxTO6+tKGWFZGX9dvYXeXj1mU8KLoXXifY3spZMCvf1wHC5NGPsZaWtONfPuFkY8k/J610oy0YjlSRptb4Q8KqsmKvr2txeesK6SRGdkcImBdHuwxH/Pw+PR6DnsnrUqTjznmaR7Ou54xGFnIPZZ1o5UtKzp0t/HOt/IwRN1Q2qBG+rimiz0wUerrxGyoFG5nGZ6OrUSKsShih1BIItKhLqKraFgGnY1ZZXThFLC4jaNC0aF2Yj/gaN3ub95jSc2gSsDUU7hQODhoCe3gDo1OFDo6rpiHFNxS6xKnoy6tG9x1uj0+x3sydgT7MuGtNBR9pkOl8KJak+vFy9tU8h3WB3vBFnYfUk8kZXhUyVdfSYFWSzO5pro3+mfwRlTwKQSEjKtpZTIP18GL3bwPqRdbqRtPdXiBa5l9FgepzHVa9pKpne7BmFrJjPLrvE5JBg3O74X4LRaS5wjg2VpZ16xYdXcU0rH91skLxe6NGWGgIQWN5ZoxW7SMOSO0HWwh50rbMa9I+1MCx1BZuJ0kg04yo1JMi0oqv739TD5Bt5CgH19y1vfRwjVX8nyOXqCvQZwfcbWCO1jSxs08/GdjNK3kpGRKrVMN5w5WibWRhMcaUJqMFNjItjs6p6QxhZ0eMKctwuJgzcFL+xedrhbaUuLrZqhgkY86zsNl+jXMp2S4p/X7BTFWUH7hK9QmqIWmPppzJHo1dMT/CuQ9AMb+cvrsvdxGGlIla4I64xoOr5DP+z1zmVrp1kgo/qI8htv7zrvaFLAeR0H8to1/iRKxUCxsdMKgM5btF33G+rynIGRwua/DglALwqTgnZYk6u5tKvW4UUCd9cGWjQEzCwyAFCrew0kj7RaaUnd1qtB/4nKLPuKS7SrpyUQd1uha8DTcsg1CZm6e0yfYhRPk1YSKlr1z6huqDopeHSZz2zSLLdSiXBETwu1UWTUz1oVg5UFdu4IIIVfSc48usCC6o7s0PefTkEHOauv5kChITlQEcrhzR6/vqqALH3UDDSvhV8jyH7ucwnkr6TAg/MLb9P59HX+PiYc2gAQMRYaFKBmSooUV+yBh2SLsMld1DxspTg7We9wu9fpXRQyB1DGytjpKePIh+/uYafIhWvXg8MNpE4CVpZHpjlbexGMQBV+sbNtymYYCiXywVItfaz1bQ+GX84SsDS+joQ486IZPvxKESwHykBRu6Q+8JyyuSlc2lstQeVOtRAIEusoUuDI/bzJS2uYXOx1poIfK911S0YL5uUZ6scy5PDXokUplXtJx/yvuK9Q+E6v1BuVK2ip/OOyLqVWslk9IUoQIyKEwh4fbE0q8R4N+ctLmaaj58cMdfkgAzhcpD0fBJw9vYTAmio0O3kVRcrdO+iscDv/oE4FPsPsWO1cTnR4qETSJvRoueOzjvw+XnbhBB8TRkk7q/fHnYfrwDUJsnFRQ1dbSmRM1kjK0pix3c4PweU9evXNVtOR8nPpLj71Z3ZtrBfJa0+1kC3GkowvuOVbgvjVtJe9tv2qNEm9F98RFRpj0WevoXUerve0HfK2CJ2rhROULFEf6ONasqXxRjJ3cBRD9kI5lJ72mMvK3aUNtC77rt9S6Hdc28VbIPiyCNS6y8yn8UP0K4n+1fFgbmp9GxFZNJ8PeMj5mKum2/cwt2JvgL+mpiTRwa/mIG8q6T6ImF6AHJrGlLne+ocO/V9iM+nytqe5tsCcwdbgDphMFZSd5QnPwPekfSk5fz01E8Vr8qY1MA10pmxin1+6Elp1GKkpz21kKYV4j4PqmIkiebGmu8Bj62Vf4Q78pWPSeto97VwEkZ4oP3iK9fZ+mtR5LOZANTFij7qNQhmwZKMG24m/s/kdyfTQHmOaKlqUhXIZs31QAm40jh5AD2FKGwjX/FvAHcudaFoDCpzloCJWmTg20eqNgZClG6mWQ77I1/7pU9OxZAva5oijiTJwdZt1pxpnlXgWZWD7nexv7x0ZM39HxQVqB5o4k7p8/BdcB354i8LZIH9Mcp/HJtwA0WxHfFKd0W8po8mDfz/xKpmAqgadWURwND5e+CfBt0VH3Fm89av3XeCPBFko0vSsZmYqGja3kplS0tJPfGk87/BggHE2cIYqUEx2hrm4+74Q0CYK7FLL+8B6LS3/y1LnUrEY3151wg2Tg7Dhm6eEn/Wkur+ti0fuzjqeww2U4eesin2YnlUENjYyKSn9tMRIp0RJwqrW01hvaHd7C7NkgethsWzq62g6f5gzNFtSradvDdzuTMa1eoUoZeEn6YyM+pjtYvzxeJNFwgQm6LShSyB+ck8XXK1AtLLNa6Kc1r0yHLFy7BIWzWlj9tZPgByvp7d0DxZIrBJwyhRL7gz35QYzKv4ZZgLr7Prta2+sw16oF+fj/4WcyvWP19Kuw83PXkT/+QrafrL7XikJi/xw602PWPf6wzHE7B49KHdMy21SgKdweLEXzuAp3eW2yj3m6LnN/85jBt4RfCRyc+ijeV5B3z9uY6ZWppATT0Gm63qfbcFvyoXT/vKR0tS2UV2F43n7epl/IrgIDpeIge5vTob8pQJCqFUwJR8i/ovzTX/v/9t4WgJPPcWoNTBwOOJ6vGN4FcQdZgSGwrIDc8O8lsvBYpnkHBQeyUEkHDa8Qe4e2Gtp6IiDbygiSgnVDyANZUGyT8oeAHSmk1/GD8kY/IMVUB7hDE6rHJuRG4tHUBNRVQ9VdXj+24b6WCVOFUq88dSfB+KNQlIlkhg7TbgGpGqpK+Sf6BXizFALuMlRj6rGJl1zGU84HogUfCCfqYY2gKY9ykjRyzsxBl17yYEzDe1M+6vRzzG0JoIxCJ4wPr/06T3P2ckHemCpdP4Ylg3GBuUrE9wpsxglaWFSgbcn7msPyc/j+6i8eM7FbB0DFrw6AmibME5qA72ioB+PDcz9zXBNIPrhH1WNYVrPprOgVWIC2QQ7bO4P+V2jp8P1reZHNVvglPqBSa/zWod3R1DwHXPbYzVJLENahB9FQVb/HsKBsVNuBF5cALOvIMZB2XCX6qg1lbqw/sEzLHfM1vcoEWk0tGO+jxPcVLpfa6CF8KJu5PvrDV/Pv4+06XKf5O78fOdiP6EmtkbZqDtI4XXYdvG072HSpJ++Sx9cCT+eM3y3W+7D0IzYnnabfVwHJWgXBLldQvscWMpMH6xw1ICm5vv0WJpvsqout/nCXco9dHx5Aolxhe4uTwiWc3t3LUNyISXcZhnKCKSiD9JC0/KQ/UwaFvZI3wtaT8H2lAHmHS4JJY6i5amEQFLxW3cXdPzdd0YkEO/dLy2DxS92cEF95wcuagk92tmCZk9LwhNCZPqhWV/QRnpPOlMJmXgt7oaCAyy1W5pQ0iCkMbQ6q3TVM7v3WS3LFF8rt+P37rZEnVch6ako/3+Ls32+r3+9gyyD+3Lx5tobTheV1WD6nROhMxZYFhfeWxuvoOaGJZFYJGjkNr3pTVWoL4uUmgo2lS3iQcl3HBNZaAsS4oQi9Bw4QSz0urzii4PoYbj61SOwaVd0iN7ClN3CaE59ePcKtRDZEPiR38LpMXpLweu/n4eN52+uD6Jlix0eS07y81puEp6QnA60QUMXw2dRWIAB8/DDNi1aES8C6gA7pqghkog+Bynbpr6RtZboeANyOS0pDzLwMK5ist8IeFH8Tx5FCEH0PIYFmRavu7dFTP9AOrXWPS4Cx5mBiv3f4KkFUgg/ZVshg8j0Drs/FeiJUG40YwTQC8mqkSd6EPdo2YgkjLpS2DbmPbQPa2Yo0nRUqnW35mrGecrbAQO+QTrr1jifg92FIVMwr0P5oqWvmduh5uO0pfF6dVXeP5BXjWPMk2vvw0e+mOwYsQzth9DneV1mjLlMeh1WBWUTLNyEVJdOkrkAiqOX3+j/eoLd/7+8p86rWW5hreOdJR/jnIJ6GrbuG8iseM6iedVDlNzwneySuUyr1EbYaRbo+lh73j1rnm51Ibjsh8HAXnDXWD6Fe42MBRaiO+rOsPjW4AoB6q+FTyZ0Oik7ahAdZUCCll+3GJgloMVNilT/usvpveMbC5eK1fLB01CuodZSrkyk7YZbxuoTOSWkceC7GCHzICIPLisdhIbJ3JpAYrJVZshN/DBslVIX8UYp+fsl3/O3E/0GIpHeq1p0i3usLh++F4ixIV1r+EWwhtvHpZfhC2E8LTZpwOVSBUILtBdJgGs9b5K8A+8WgBbFkuct+zP36q+SL8hZ1JcPhTQKHTss7YSqA/28JKMKCR4DlGecrTE4SGyaWwkfm7FWJdf/O0PIAT2T4wrkFeZ9+3TzO3s+XMsHAdNw0f7jLOliOPefAnZODc7doe5i8hbmx+dOr5AXmRNs1d3FQ9TR/+NLOw/KcL7kwsNRSpiuEyd0dDS2zlg+ptjj7FjMIhRi+A2/H+8W3v1zyNEmgI1DJXRUp9x7CbeHdpBgkd1MKUNbgvYMY5SVTTAigEI4nhls4QetnLg/IAobS1CVSzqMHsnSOv9hCcKlyjQ1vI0DyDxdHeb0GiDochbWFyZQfVQHsjT/d5ef9YAGCeYOhbPVdqAx9yNgS6U5HO/Ow6Ucu34gvKTWyqgl5QcOn/z5UbsgA6vJhSMjh9ss89NcdzgsMKmWOQsVBfBTsrxvXAlaQl7vLPJ6W521nOavSXmGr8I5PjPI5XO7JW6yFE6zEOriY8XbGz0DfDiOtEiNtCCutDVG4dpX6i7+o8zrSzoL/db5rY5+DTxiXb2yYdSAEIFM604hmbSO6abFaL8NM3h50RFE92WkKmxzvLG+aPN8yGiUO+nsVnzRt6laIVGmAg1DIdMwU8rgCBMLYgAC3EVgo7m1WTDNsxJ8XR5eynUxOjhqsQfmCp9W60nIF9Optx+cWKkhGTBbwN20Y+Zua995VvBSaCa0GK0RFnjY935ZxSbq5BpK2guf/z7WMSKUOQRmrlAdaUZ7q43k7ezWWJFAJIhENXxa+hgvWwg04ARe8RbIeuZOqA/gJ5eE9fnkZk+WZWmiBIycX3nr8uky3c+Z4IFByTa3H9w3aILWuAMW2xogQmbFiQl3y7eL7dko1Kzqgd9VBpc1EPXgXBfT4/OL7dgroD3z7NX0lbCim5jCI79tpVybUeq4ahZAOIHo+Cmk4a0JKQBR0kYsljic1R7pA9ESOEFh9gUdgSg7I+b6dXssGQt5B7b8QAlkj47uGcw2/byfv6pyOhToD8B6xuyg54eb7tvSIEK7gC2ijqRVveH4/luEq0EJ4HHryKrZYRtS8HJ95LTv1lUqr49lGlqaGktPWGKch4SpXAA1vaL9nPTpFYIN4J03/ln4+E0COMQDAl6RA9g7HhfS3sGlW2QDizkQ39rCDmCq8qE4Z7Yq9fUO3iPh7/eMxncadJl+rK3Jj41iHUuJjSPwcoGNkKskoxFi6EuuxSii0kRvQ0N7L4vVpbtNlOidm3IC8bGlvI4XJQkUqCmi2CggIWwvuTxBNVgBcthF6VyNHNOLV2AitqhEzjCiq10qDU7TkbCtAd1F4sa1Qd0XuywoN0Mpwy7ZUS9BfdH8Zz5hHFuBE1VDV9GWVhvQe6OnnAwV008W1he0X2xDlZcu2d2ypYOTWUgcGH4bgug28BnQgu0bIrZYwzqEwOH/4MmUnX8DpoNwbHSCTEQOavKW9UR0lN1UC9FdLO2P+Pk7P5cf7+MhNQUCM2XaUEeXDYEUJ1D1LqZX+wMfSX2GQYRz005zUHY4i2X2c/06UpA3QovkblebdHQhzNzJyLehsbpn6ee5hVap1ttYJJTtKqHN/5B00XJ9PZEFT0sZ6/DSfPgdP9UuGq6XWnanDztvQymsNlsPf6+sLVPkqSlBG4ySa9R+gSfUe0oSb11Bgyr7LA2DZMqgNliFVrqQkK4IYhpOtyhmaIOVx55XG8DT8RcNxnQGBKMvFFZfpPp6S5RcwzWL+Zzs6N12mfdem1GmY0BKdoRzlZVr6i2eXpuQC6DfzJC5F0ur0jfuF+cNyuCO1wgVMmCsOf3wF4ObwpXqlKOnEdiVYKMZSUiaDeii9hS+SRsKdKzThwHQi0epowh/ZSL7nim8HlK4tbYeFEPfdblyAxHwboNJW7IdtG78bWjFB/DwmA6qwromLBv3UfcwPLweS6+rDyIwvF68Y93k6+9pwL9tuIRsxtDsZIs3De+6zgFkOr05eQZb+8TO5HjgLvomqABk8AlQ6hrbHtijTfD3P/f3zP5eP8bLK9L4PyxT1yFGYq4XX1tFW2Rr70i9DRh3JwZsmwgNiHCcsBWeOP4YQn7xp4L0qJZOjFAWImUvUIGHlqZEOk83UgI549JZ4rt5eELfRb0kXChVT8zoo4YSUnRbWEMEVI6GiBactBF8jCidlHf8K/1WcOYxIAZpGGjaCYjNS85i2kv9P7L6jfHsnwv7OxepMqq6IlRUJi6aKtVbEzIVmtRFdbCO62CZugK2sbVKqWlmbYvkq5AZXUwKCv9mb6MLTE7mvPWIVHcwPRcuYL13ffivErkHrINcOECjX0DHkTvFZt2PC4///p7j80xPbL9/j7bzHQABKIAKT5JV7nVklksmFLGJGKGaG4lTW4VzqYayVMDs5fTosfN7G/zzx7dDTciMOHK6iHMsXF/i1DWTFK1EtRJQq6TzqeXv0H0kPEPAtLeUnPW/ZYZZ3i9ApMKXuPO/vO2dqPZ2xwkyxMpYrY4eKJjdb3JgL7iRMNZubSm5uUd577LVqhbWuZrX7duz1o7/nDSO0HL6MC2qRjefebZnAe4aJrnnEw6emYIwtZlYnVyMtRe+rlnlJQXFUGDNDgtElani43E58C7cTfXCACixpg2s7HCQN8DK1nHJYOWsKfcqEy1yhLuBaeQj/g5hZzo/mM9H+by5YhgCkX5PQueRa/ZmgiN7Q0zXRVqtl6FLQ4WYucuaGaiJM6I7UdDqQC5q9o5qORdUFstEyt1RXzSE5rmkHJwJzIGtsYDQrwpCioWgtxY0doobAZ9AG9IS1Bw9GcItZ4QKARNE0W0XJeQeUcFJx62Z51hZuX5GByYmhLZvnjJ4VgAdoXExwYis/2nuLoQt/UeZLVhIDSPv8hs+JtX0JeNyGslifjxWwfPHv5zDc3u/TuNNNAJAf32EeiduU9loSq3Njo0ZoE/dm+go8hvnHfZrw6lpwdbF0Ird+dufhtrz6Q6sGb78M5wk9F1uQNrG05JV4j+dHqt0EXgqCfzdCPzTHZ5nbXpyubzkAEY5PZbs0GMqJ/U0Ac1Xhj5riY9PoDwyvMyLa4DlY+zWEKlSGAZFehpWmjK1d2sdcjamTBhw81WgI84oVHlIZio7KyXRfqqBCmF1cocL/dFrAgfJVZF1JChr+kMJO9DfDP27lLpTh9ETcQnRNOf7fn5T/cDarkwR2qbm3sRNz9Ar4ULnlQS/lMr02dFAXQiXno1u1sQd5dL/v8/SRMmWBDBaKM/kCTSP0Ic699qEzcsIaZdcKcqOW6UJDiTlrwAQ3qHeOSuimBS8KlqS33eml1YismLWVTJLoXOvL4D4BHj41Bfx9WTwMqANc3OCrOvBT1N3+6KtWU1TYV729zPCdod4rW2PDoY/HvCnaJLY/uqB2JR3jqTAZByCrB7RisuRKqo7w1V/GtdzJ3Z5G7/xdROfQue8u2spPxpB66khVdl+BfIM/yTCdRhVXlEz15YV04IXV/YrQxSlthFiIhD5VR1ljkvdIk42lI1XT7WgNlcCOQXkxCiSHvqUT4RlX08nBFnf4z7NPmrnatoQC2776edxjmrQWifj9WWmxyrbmTdwl05CWKF1Svob5bUqFbgGa6ujUbdNe8Kd6lHmUGokjHb6aDjPXqN8y0cMCUTMQQzEjECnDydxJ0H1tqEfKVWDA81ZtEi9bFuoGBcVurRJ9iUir/jhNKQmzGN3YRiYc4urmKkoie/1EkhNZQBBbWmF+jd6AYS+X6QCY7fjCP42pRrUx0LbsQjfItnFGSDsxX8/hX8SklSAkzT92f+AOhgwcSiom96sfl49pHj209vy5TF6mDkECGtNAZ3m/+jmB/AOd2MkA1tFJkQ8x3s5eRufxOV2SZwpK0o721n4Nb1lNyA5uBr2K8R2v3oDKqeX+DGvZNQ8rA6jHTKaEVCi83fSt8pE8Ke3xMf5G5ABqNEhaXVKiuA81PZeb1yhF1Xy9DLZhrGFq/pbs3LktALVot221yUoQc3Ak/Tp/zSNh5IHwOXcXwtoVFlhbyyinoT3uRCkHDJcaGc41dHH67n8l7QpAD+fhDf/r//qv+3gfLuNt+K//+//5X//7f/+/FjQG9laHEAA="; \ No newline at end of file +window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file diff --git a/docs/api/classes/_aws_amplify_adapter_nextjs.api._Reference_Types_.AmplifyClass.html b/docs/api/classes/_aws_amplify_adapter_nextjs.api._Reference_Types_.AmplifyClass.html deleted file mode 100644 index 99878297d90..00000000000 --- a/docs/api/classes/_aws_amplify_adapter_nextjs.api._Reference_Types_.AmplifyClass.html +++ /dev/null @@ -1,13 +0,0 @@ -AmplifyClass | Amplify JS API Documentation -

Constructors

Properties

Methods

Constructors

Properties

libraryOptions: LibraryOptions
resourcesConfig: ResourcesConfig

Methods

  • Configures Amplify for use with your back-end resources.

    -

    Parameters

    Returns void

    Remarks

    This API does not perform any merging of either resourcesConfig or libraryOptions. The most recently -provided values will be used after configuration.

    -
\ No newline at end of file diff --git a/docs/api/classes/_aws_amplify_adapter_nextjs.api._Reference_Types_.AuthClass.html b/docs/api/classes/_aws_amplify_adapter_nextjs.api._Reference_Types_.AuthClass.html deleted file mode 100644 index 1807cb86860..00000000000 --- a/docs/api/classes/_aws_amplify_adapter_nextjs.api._Reference_Types_.AuthClass.html +++ /dev/null @@ -1,11 +0,0 @@ -AuthClass | Amplify JS API Documentation -

Constructors

Methods

  • Returns Promise<void>

  • Fetch the auth tokens, and the temporary AWS credentials and identity if they are configured. By default it -does not refresh the auth tokens or credentials if they are loaded in storage already. You can force a refresh -with { forceRefresh: true } input.

    -

    Parameters

    Returns Promise<AuthSession>

    Promise of current auth session AuthSession.

    -
\ No newline at end of file diff --git a/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.AWSAuthSignInDetails.html b/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.AWSAuthSignInDetails.html deleted file mode 100644 index 4ffbd2f8168..00000000000 --- a/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.AWSAuthSignInDetails.html +++ /dev/null @@ -1,4 +0,0 @@ -AWSAuthSignInDetails | Amplify JS API Documentation -

Deprecated

interface AWSAuthSignInDetails {
    authFlowType?: AuthFlowType;
    loginId?: string;
}

Properties

Properties

authFlowType?: AuthFlowType
loginId?: string
\ No newline at end of file diff --git a/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.AWSCredentials.html b/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.AWSCredentials.html deleted file mode 100644 index 0308d712c3a..00000000000 --- a/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.AWSCredentials.html +++ /dev/null @@ -1,6 +0,0 @@ -AWSCredentials | Amplify JS API Documentation -
interface AWSCredentials {
    accessKeyId: string;
    expiration?: Date;
    secretAccessKey: string;
    sessionToken?: string;
}

Properties

accessKeyId: string
expiration?: Date
secretAccessKey: string
sessionToken?: string
\ No newline at end of file diff --git a/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.AuthSession.html b/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.AuthSession.html deleted file mode 100644 index d408c51f717..00000000000 --- a/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.AuthSession.html +++ /dev/null @@ -1,6 +0,0 @@ -AuthSession | Amplify JS API Documentation -
interface AuthSession {
    credentials?: AWSCredentials;
    identityId?: string;
    tokens?: AuthTokens;
    userSub?: string;
}

Properties

credentials?: AWSCredentials
identityId?: string
tokens?: AuthTokens
userSub?: string
\ No newline at end of file diff --git a/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.AuthTokens.html b/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.AuthTokens.html deleted file mode 100644 index e7645a58758..00000000000 --- a/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.AuthTokens.html +++ /dev/null @@ -1,6 +0,0 @@ -AuthTokens | Amplify JS API Documentation -
interface AuthTokens {
    accessToken: JWT;
    idToken?: JWT;
    signInDetails?: AWSAuthSignInDetails;
}

Properties

accessToken: JWT
idToken?: JWT
signInDetails?: AWSAuthSignInDetails

Deprecated

Use getCurrentUser to access signInDetails

-
\ No newline at end of file diff --git a/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.CredentialsAndIdentityId.html b/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.CredentialsAndIdentityId.html deleted file mode 100644 index 87589cb0886..00000000000 --- a/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.CredentialsAndIdentityId.html +++ /dev/null @@ -1,4 +0,0 @@ -CredentialsAndIdentityId | Amplify JS API Documentation -
interface CredentialsAndIdentityId {
    credentials: AWSCredentials;
    identityId?: string;
}

Properties

credentials: AWSCredentials
identityId?: string
\ No newline at end of file diff --git a/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.CredentialsAndIdentityIdProvider.html b/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.CredentialsAndIdentityIdProvider.html deleted file mode 100644 index 09537f46dbc..00000000000 --- a/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.CredentialsAndIdentityIdProvider.html +++ /dev/null @@ -1,4 +0,0 @@ -CredentialsAndIdentityIdProvider | Amplify JS API Documentation -
interface CredentialsAndIdentityIdProvider {
    clearCredentialsAndIdentityId(): void;
    getCredentialsAndIdentityId(getCredentialsOptions): Promise<undefined | CredentialsAndIdentityId>;
}

Methods

  • Returns void

\ No newline at end of file diff --git a/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.FetchAuthSessionOptions.html b/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.FetchAuthSessionOptions.html deleted file mode 100644 index d147af606df..00000000000 --- a/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.FetchAuthSessionOptions.html +++ /dev/null @@ -1,3 +0,0 @@ -FetchAuthSessionOptions | Amplify JS API Documentation -
interface FetchAuthSessionOptions {
    forceRefresh?: boolean;
}

Properties

Properties

forceRefresh?: boolean
\ No newline at end of file diff --git a/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.GetCredentialsAuthenticatedUser.html b/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.GetCredentialsAuthenticatedUser.html deleted file mode 100644 index 3c704c8f559..00000000000 --- a/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.GetCredentialsAuthenticatedUser.html +++ /dev/null @@ -1,6 +0,0 @@ -GetCredentialsAuthenticatedUser | Amplify JS API Documentation -
interface GetCredentialsAuthenticatedUser {
    authConfig: undefined | AuthConfig;
    authenticated: true;
    forceRefresh?: boolean;
    tokens: AuthTokens;
}

Properties

authConfig: undefined | AuthConfig
authenticated: true
forceRefresh?: boolean
tokens: AuthTokens
\ No newline at end of file diff --git a/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.GetCredentialsUnauthenticatedUser.html b/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.GetCredentialsUnauthenticatedUser.html deleted file mode 100644 index c2b2f99e88d..00000000000 --- a/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.GetCredentialsUnauthenticatedUser.html +++ /dev/null @@ -1,6 +0,0 @@ -GetCredentialsUnauthenticatedUser | Amplify JS API Documentation -
interface GetCredentialsUnauthenticatedUser {
    authConfig: undefined | AuthConfig;
    authenticated: false;
    forceRefresh?: boolean;
    tokens?: undefined;
}

Properties

authConfig: undefined | AuthConfig
authenticated: false
forceRefresh?: boolean
tokens?: undefined
\ No newline at end of file diff --git a/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.JWT.html b/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.JWT.html deleted file mode 100644 index 076539bc6d5..00000000000 --- a/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.JWT.html +++ /dev/null @@ -1,4 +0,0 @@ -JWT | Amplify JS API Documentation -
interface JWT {
    payload: JwtPayload;
    toString(): string;
}

Properties

Methods

Properties

payload: JwtPayload

Methods

  • Returns string

\ No newline at end of file diff --git a/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.JsonObject.html b/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.JsonObject.html deleted file mode 100644 index 92a2a070b27..00000000000 --- a/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.JsonObject.html +++ /dev/null @@ -1,3 +0,0 @@ -JsonObject | Amplify JS API Documentation -

JSON Object type

-
interface JsonObject {
    [x: string]: JsonPrimitive | JsonArray | JsonObject;
}

Indexable

\ No newline at end of file diff --git a/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.JwtPayloadStandardFields.html b/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.JwtPayloadStandardFields.html deleted file mode 100644 index 0d83274e0d7..00000000000 --- a/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.JwtPayloadStandardFields.html +++ /dev/null @@ -1,10 +0,0 @@ -JwtPayloadStandardFields | Amplify JS API Documentation -
interface JwtPayloadStandardFields {
    aud?: string | string[];
    exp?: number;
    iat?: number;
    iss?: string;
    jti?: string;
    nbf?: number;
    scope?: string;
    sub?: string;
}

Properties

Properties

aud?: string | string[]
exp?: number
iat?: number
iss?: string
jti?: string
nbf?: number
scope?: string
sub?: string
\ No newline at end of file diff --git a/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.LibraryAPIOptions.html b/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.LibraryAPIOptions.html deleted file mode 100644 index 01be9dfd9cb..00000000000 --- a/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.LibraryAPIOptions.html +++ /dev/null @@ -1,4 +0,0 @@ -LibraryAPIOptions | Amplify JS API Documentation -
interface LibraryAPIOptions {
    GraphQL?: {
        withCredentials?: boolean;
        headers?(options?): Promise<Record<string, unknown> | Headers>;
    };
    REST?: {
        headers?(options): Promise<Headers>;
    };
}

Properties

Properties

GraphQL?: {
    withCredentials?: boolean;
    headers?(options?): Promise<Record<string, unknown> | Headers>;
}

Type declaration

  • Optional withCredentials?: boolean
  • headers?:function
REST?: {
    headers?(options): Promise<Headers>;
}

Type declaration

  • headers?:function
    • Parameters

      • options: {
            apiName: string;
        }
        • apiName: string

      Returns Promise<Headers>

\ No newline at end of file diff --git a/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.LibraryAuthOptions.html b/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.LibraryAuthOptions.html deleted file mode 100644 index 3a332479cfd..00000000000 --- a/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.LibraryAuthOptions.html +++ /dev/null @@ -1,4 +0,0 @@ -LibraryAuthOptions | Amplify JS API Documentation -
interface LibraryAuthOptions {
    credentialsProvider?: CredentialsAndIdentityIdProvider;
    tokenProvider?: TokenProvider;
}

Properties

credentialsProvider?: CredentialsAndIdentityIdProvider
tokenProvider?: TokenProvider
\ No newline at end of file diff --git a/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.LibraryOptions.html b/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.LibraryOptions.html deleted file mode 100644 index 5dc9955f59d..00000000000 --- a/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.LibraryOptions.html +++ /dev/null @@ -1,7 +0,0 @@ -LibraryOptions | Amplify JS API Documentation -

Amplify library options type. Used to customize library behavior.

-
interface LibraryOptions {
    API?: LibraryAPIOptions;
    Auth?: LibraryAuthOptions;
    Storage?: LibraryStorageOptions;
    ssr?: boolean;
}

Properties

Properties

ssr?: boolean
\ No newline at end of file diff --git a/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.LibraryStorageOptions.html b/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.LibraryStorageOptions.html deleted file mode 100644 index 186ca61f6c0..00000000000 --- a/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.LibraryStorageOptions.html +++ /dev/null @@ -1,3 +0,0 @@ -LibraryStorageOptions | Amplify JS API Documentation -
interface LibraryStorageOptions {
    S3: {
        defaultAccessLevel?: StorageAccessLevel;
        isObjectLockEnabled?: boolean;
        prefixResolver?: StoragePrefixResolver;
    };
}

Properties

S3 -

Properties

S3: {
    defaultAccessLevel?: StorageAccessLevel;
    isObjectLockEnabled?: boolean;
    prefixResolver?: StoragePrefixResolver;
}

Type declaration

\ No newline at end of file diff --git a/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.TokenProvider.html b/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.TokenProvider.html deleted file mode 100644 index d56b38fc456..00000000000 --- a/docs/api/interfaces/_aws_amplify_adapter_nextjs.api._Reference_Types_.TokenProvider.html +++ /dev/null @@ -1,3 +0,0 @@ -TokenProvider | Amplify JS API Documentation -
interface TokenProvider {
    getTokens(__namedParameters?): Promise<null | AuthTokens>;
}

Methods

Methods

  • Parameters

    • Optional __namedParameters: {
          forceRefresh?: boolean;
      }
      • Optional forceRefresh?: boolean

    Returns Promise<null | AuthTokens>

\ No newline at end of file diff --git a/docs/api/interfaces/_aws_amplify_adapter_nextjs.index._Reference_Types_.CookieListItem.html b/docs/api/interfaces/_aws_amplify_adapter_nextjs.index._Reference_Types_.CookieListItem.html index 994ab6982f7..c52e706aa4e 100644 --- a/docs/api/interfaces/_aws_amplify_adapter_nextjs.index._Reference_Types_.CookieListItem.html +++ b/docs/api/interfaces/_aws_amplify_adapter_nextjs.index._Reference_Types_.CookieListItem.html @@ -1,7 +1,7 @@ CookieListItem | Amplify JS API Documentation

CookieListItem as specified by W3C.

-
interface CookieListItem {
    domain?: string;
    expires?: number | Date;
    name: string;
    path?: string;
    sameSite?: boolean | "none" | "lax" | "strict";
    secure?: boolean;
    value: string;
}

Hierarchy (view full)

Properties

interface CookieListItem {
    domain?: string;
    expires?: number | Date;
    name: string;
    path?: string;
    sameSite?: boolean | "lax" | "strict" | "none";
    secure?: boolean;
    value: string;
}

Hierarchy (view full)

Properties

domain? expires? name path? @@ -15,7 +15,7 @@
name: string

A string with the name of a cookie.

path?: string

Specifies the value for the Set-Cookie attribute. By default, the path is considered the "default path".

-
sameSite?: boolean | "none" | "lax" | "strict"

Specifies the boolean or string to be the value for the Set-Cookie attribute.

+
sameSite?: boolean | "lax" | "strict" | "none"

Specifies the boolean or string to be the value for the Set-Cookie attribute.

  • true will set the SameSite attribute to Strict for strict same site enforcement.
  • diff --git a/docs/api/interfaces/_aws_amplify_adapter_nextjs.index._Reference_Types_.CookieSerializeOptions.html b/docs/api/interfaces/_aws_amplify_adapter_nextjs.index._Reference_Types_.CookieSerializeOptions.html index b95d5d9bf81..17ecd085e38 100644 --- a/docs/api/interfaces/_aws_amplify_adapter_nextjs.index._Reference_Types_.CookieSerializeOptions.html +++ b/docs/api/interfaces/_aws_amplify_adapter_nextjs.index._Reference_Types_.CookieSerializeOptions.html @@ -1,6 +1,6 @@ CookieSerializeOptions | Amplify JS API Documentation

    Additional serialization options

    -
    interface CookieSerializeOptions {
        domain?: string;
        expires?: Date;
        httpOnly?: boolean;
        maxAge?: number;
        path?: string;
        priority?: "low" | "medium" | "high";
        sameSite?: boolean | "none" | "lax" | "strict";
        secure?: boolean;
        encode?(value): string;
    }

    Properties

    interface CookieSerializeOptions {
        domain?: string;
        expires?: Date;
        httpOnly?: boolean;
        maxAge?: number;
        path?: string;
        priority?: "low" | "medium" | "high";
        sameSite?: boolean | "lax" | "strict" | "none";
        secure?: boolean;
        encode?(value): string;
    }

    Properties

    domain? expires? httpOnly? maxAge? @@ -43,7 +43,7 @@ [the specification][rfc-west-cookie-priority-00-4.1].

    note This is an attribute that has not yet been fully standardized, and may change in the future. This also means many clients may ignore this attribute until they understand it.

    -
    sameSite?: boolean | "none" | "lax" | "strict"

    Specifies the boolean or string to be the value for the Set-Cookie attribute.

    +
    sameSite?: boolean | "lax" | "strict" | "none"

    Specifies the boolean or string to be the value for the Set-Cookie attribute.

    • true will set the SameSite attribute to Strict for strict same site enforcement.
    • diff --git a/docs/api/modules/_aws_amplify_adapter_nextjs.api._Reference_Types_.html b/docs/api/modules/_aws_amplify_adapter_nextjs.api._Reference_Types_.html index 5025ec9c816..0ded4b686b1 100644 --- a/docs/api/modules/_aws_amplify_adapter_nextjs.api._Reference_Types_.html +++ b/docs/api/modules/_aws_amplify_adapter_nextjs.api._Reference_Types_.html @@ -3,9 +3,7 @@

    Enumeration Members

    Classes

    Classes

    Interfaces

    APIGraphQLConfig APIRestConfig -AWSAuthSignInDetails -AWSCredentials ArgumentNode AssociationBaseType AuthIdentityPoolConfig -AuthSession -AuthTokens AuthUserPoolAndIdentityPoolConfig AuthUserPoolConfig BooleanValueNode @@ -29,8 +23,6 @@ CognitoUserPoolConfig ConvertConfig CookiesClientParams -CredentialsAndIdentityId -CredentialsAndIdentityIdProvider CustomOperation CustomOperationArgument CustomProvider @@ -42,15 +34,12 @@ EnumValueDefinitionNode EnumValueNode EventBufferConfig -FetchAuthSessionOptions Field FieldDefinitionNode FieldNode FloatValueNode FragmentDefinitionNode FragmentSpreadNode -GetCredentialsAuthenticatedUser -GetCredentialsUnauthenticatedUser GraphQLErrorExtensions GraphQLOperationType GraphQLOptionsV6 @@ -73,18 +62,11 @@ InterfaceTypeExtensionNode InterpretConfig InterpretTextDefaults -JWT -JsonObject -JwtPayloadStandardFields KinesisFirehoseProviderConfig KinesisProviderConfig LegacyConfig LexV1BotConfig LexV2BotConfig -LibraryAPIOptions -LibraryAuthOptions -LibraryOptions -LibraryStorageOptions ListTypeNode ListValueNode Location @@ -133,7 +115,6 @@ StringValueNode Subscribable SubscriptionLike -TokenProvider TranscriptionDefaults TranslateTextDefaults UnaryFunction @@ -151,9 +132,10 @@ AssociationType AtLeastOne AuthConfig -AuthFlowType AuthStandardAttributeKey AuthVerifiableAttributeKey +ClientExtensionsSSRCookies +ClientExtensionsSSRRequest CognitoProviderConfig CognitoUserPoolAndIdentityPoolConfig CustomHeaders @@ -165,18 +147,15 @@ DefinitionNode DocumentType EnumTypes -ExcludeNeverFields ExecutableDefinitionNode ExtractModelMeta FieldType Fields -FilteredKeys FixedQueryResult GeneratedMutation GeneratedQuery GeneratedSubscription GeoConfig -GetCredentialsOptions GraphQLAuthMode GraphQLMethod GraphQLMethodSSR @@ -185,11 +164,7 @@ GraphQLSubscription GraphQLVariablesV6 GraphqlSubscriptionResult -Headers InteractionsConfig -JsonArray -JsonPrimitive -JwtPayload Maybe ModelTypes NeverEmpty @@ -204,9 +179,7 @@ SchemaModels SchemaNonModels SelectionNode -StorageAccessLevel StorageConfig -StoragePrefixResolver StrictUnion StrictUnionHelper TeardownLogic diff --git a/docs/api/modules/_aws_amplify_adapter_nextjs.html b/docs/api/modules/_aws_amplify_adapter_nextjs.html index c63f48bdfc6..08eaf6a6ee5 100644 --- a/docs/api/modules/_aws_amplify_adapter_nextjs.html +++ b/docs/api/modules/_aws_amplify_adapter_nextjs.html @@ -1,5 +1,5 @@ -@aws-amplify/adapter-nextjs - v1.0.28 | Amplify JS API Documentation -

    Module @aws-amplify/adapter-nextjs - v1.0.28

    This package contains the AWS Amplify Next.js Adapter. For more information on using Next.js in your application please reference the Amplify Dev Center.

    +@aws-amplify/adapter-nextjs - v1.0.30 | Amplify JS API Documentation +

    Module @aws-amplify/adapter-nextjs - v1.0.30

    This package contains the AWS Amplify Next.js Adapter. For more information on using Next.js in your application please reference the Amplify Dev Center.

    Index

    Modules

    api index utils diff --git a/docs/api/modules/_aws_amplify_datastore_storage_adapter.html b/docs/api/modules/_aws_amplify_datastore_storage_adapter.html index 199917cf9ea..30b972c196c 100644 --- a/docs/api/modules/_aws_amplify_datastore_storage_adapter.html +++ b/docs/api/modules/_aws_amplify_datastore_storage_adapter.html @@ -1,5 +1,5 @@ -@aws-amplify/datastore-storage-adapter - v2.1.28 | Amplify JS API Documentation -

    Module @aws-amplify/datastore-storage-adapter - v2.1.28

    This package contains the AWS Amplify DataStore storage adapter. For more information on using the DataStore storage adapter in your application please reference the Amplify Dev Center.

    +@aws-amplify/datastore-storage-adapter - v2.1.29 | Amplify JS API Documentation +

    Module @aws-amplify/datastore-storage-adapter - v2.1.29

    This package contains the AWS Amplify DataStore storage adapter. For more information on using the DataStore storage adapter in your application please reference the Amplify Dev Center.

    Index

    Modules

    ExpoSQLiteAdapter/ExpoSQLiteAdapter SQLiteAdapter/SQLiteAdapter index diff --git a/docs/api/modules/_aws_amplify_geo.html b/docs/api/modules/_aws_amplify_geo.html index 358e7913281..0bdfee2640c 100644 --- a/docs/api/modules/_aws_amplify_geo.html +++ b/docs/api/modules/_aws_amplify_geo.html @@ -1,5 +1,5 @@ -@aws-amplify/geo - v3.0.27 | Amplify JS API Documentation -

    Module @aws-amplify/geo - v3.0.27

    This package contains the AWS Amplify Geo category. For more information on using Geo in your application please reference the Amplify Dev Center.

    +@aws-amplify/geo - v3.0.28 | Amplify JS API Documentation +

    Module @aws-amplify/geo - v3.0.28

    This package contains the AWS Amplify Geo category. For more information on using Geo in your application please reference the Amplify Dev Center.

    Index

    Modules

    \ No newline at end of file diff --git a/docs/api/modules/_aws_amplify_interactions.html b/docs/api/modules/_aws_amplify_interactions.html index 0db04d4b69d..0e29680178b 100644 --- a/docs/api/modules/_aws_amplify_interactions.html +++ b/docs/api/modules/_aws_amplify_interactions.html @@ -1,5 +1,5 @@ -@aws-amplify/interactions - v6.0.27 | Amplify JS API Documentation -

    Module @aws-amplify/interactions - v6.0.27

    This package contains the AWS Amplify Interactions category. For more information on using Interactions in your application please reference the Amplify Dev Center.

    +@aws-amplify/interactions - v6.0.28 | Amplify JS API Documentation +

    Module @aws-amplify/interactions - v6.0.28

    This package contains the AWS Amplify Interactions category. For more information on using Interactions in your application please reference the Amplify Dev Center.

    Index

    Modules

    index lex-v1 lex-v2 diff --git a/docs/api/modules/_aws_amplify_predictions.html b/docs/api/modules/_aws_amplify_predictions.html index c4ef6ad7f3c..356cb2cd167 100644 --- a/docs/api/modules/_aws_amplify_predictions.html +++ b/docs/api/modules/_aws_amplify_predictions.html @@ -1,5 +1,5 @@ -@aws-amplify/predictions - v6.0.27 | Amplify JS API Documentation -

    Module @aws-amplify/predictions - v6.0.27

    This package contains the AWS Amplify Predictions category. For more information on using Predictions in your application please reference the Amplify Dev Center.

    +@aws-amplify/predictions - v6.0.28 | Amplify JS API Documentation +

    Module @aws-amplify/predictions - v6.0.28

    This package contains the AWS Amplify Predictions category. For more information on using Predictions in your application please reference the Amplify Dev Center.

    Index

    Modules

    Interfaces

    IdentifyEntitiesInput IdentifyEntitiesOutput diff --git a/docs/api/modules/_aws_amplify_pubsub.html b/docs/api/modules/_aws_amplify_pubsub.html index e03cbeb66e5..15f9ccf4a11 100644 --- a/docs/api/modules/_aws_amplify_pubsub.html +++ b/docs/api/modules/_aws_amplify_pubsub.html @@ -1,5 +1,5 @@ -@aws-amplify/pubsub - v6.0.27 | Amplify JS API Documentation -

    Module @aws-amplify/pubsub - v6.0.27

    This package contains the AWS Amplify PubSub category. For more information on using PubSub in your application please reference the Amplify Dev Center.

    +@aws-amplify/pubsub - v6.0.29 | Amplify JS API Documentation +

    Module @aws-amplify/pubsub - v6.0.29

    This package contains the AWS Amplify PubSub category. For more information on using PubSub in your application please reference the Amplify Dev Center.

    Index

    Modules

    clients/iot clients/mqtt index diff --git a/docs/api/modules/aws_amplify.api._Reference_Types_.html b/docs/api/modules/aws_amplify.api._Reference_Types_.html index 27fb1f5b009..6c451481be8 100644 --- a/docs/api/modules/aws_amplify.api._Reference_Types_.html +++ b/docs/api/modules/aws_amplify.api._Reference_Types_.html @@ -69,16 +69,15 @@ VariableDefinitionNode VariableNode

    Type Aliases

    ASTNode +ClientExtensions CustomHeaders CustomMutations CustomQueries CustomSubscriptions DefinitionNode EnumTypes -ExcludeNeverFields ExecutableDefinitionNode ExtractModelMeta -FilteredKeys FixedQueryResult GeneratedMutation GeneratedQuery diff --git a/docs/api/modules/aws_amplify.api_server._Reference_Types_.html b/docs/api/modules/aws_amplify.api_server._Reference_Types_.html index 943dd13598c..d23ab25e4e2 100644 --- a/docs/api/modules/aws_amplify.api_server._Reference_Types_.html +++ b/docs/api/modules/aws_amplify.api_server._Reference_Types_.html @@ -1,7 +1,8 @@ <Reference Types> | Amplify JS API Documentation

    Index

    Interfaces

    Type Aliases

    Type Aliases

    ClientExtensionsSSRRequest +DeleteInput DeleteOperation GetInput GetOperation diff --git a/docs/api/modules/aws_amplify.html b/docs/api/modules/aws_amplify.html index 28d02ec907b..29e80c24429 100644 --- a/docs/api/modules/aws_amplify.html +++ b/docs/api/modules/aws_amplify.html @@ -1,5 +1,5 @@ -aws-amplify - v6.0.28 | Amplify JS API Documentation -

    Module aws-amplify - v6.0.28

    AWS Amplify Package - aws-amplify

    AWS Amplify is a JavaScript library for frontend and mobile developers building cloud-enabled applications. The library is a declarative interface across different categories of operations in order to make common tasks easier to add into your application. The default implementation works with Amazon Web Services (AWS) resources but is designed to be open and pluggable for usage with other cloud services that wish to provide an implementation or custom backends.

    +aws-amplify - v6.0.30 | Amplify JS API Documentation +

    Module aws-amplify - v6.0.30

    AWS Amplify Package - aws-amplify

    AWS Amplify is a JavaScript library for frontend and mobile developers building cloud-enabled applications. The library is a declarative interface across different categories of operations in order to make common tasks easier to add into your application. The default implementation works with Amazon Web Services (AWS) resources but is designed to be open and pluggable for usage with other cloud services that wish to provide an implementation or custom backends.

    aws-amplify is the AWS Amplify library. Documentation is available here.

    Index

    Modules

    adapter-core analytics diff --git a/docs/api/types/_aws_amplify_adapter_nextjs.api._Reference_Types_.AuthFlowType.html b/docs/api/types/_aws_amplify_adapter_nextjs.api._Reference_Types_.AuthFlowType.html deleted file mode 100644 index 7d498a0d307..00000000000 --- a/docs/api/types/_aws_amplify_adapter_nextjs.api._Reference_Types_.AuthFlowType.html +++ /dev/null @@ -1,2 +0,0 @@ -AuthFlowType | Amplify JS API Documentation -
    AuthFlowType: "USER_SRP_AUTH" | "CUSTOM_WITH_SRP" | "CUSTOM_WITHOUT_SRP" | "USER_PASSWORD_AUTH"

    Deprecated

    \ No newline at end of file diff --git a/docs/api/types/_aws_amplify_adapter_nextjs.api._Reference_Types_.ClientExtensionsSSRCookies.html b/docs/api/types/_aws_amplify_adapter_nextjs.api._Reference_Types_.ClientExtensionsSSRCookies.html new file mode 100644 index 00000000000..ebd7b4ae87f --- /dev/null +++ b/docs/api/types/_aws_amplify_adapter_nextjs.api._Reference_Types_.ClientExtensionsSSRCookies.html @@ -0,0 +1,2 @@ +ClientExtensionsSSRCookies | Amplify JS API Documentation +
    ClientExtensionsSSRCookies<T>: {
        enums: EnumTypes<T>;
        models: ModelTypes<T, "COOKIES">;
        mutations: CustomMutations<T, "COOKIES">;
        queries: CustomQueries<T, "COOKIES">;
    }

    Type Parameters

    • T extends Record<any, any> = never

    Type declaration

    \ No newline at end of file diff --git a/docs/api/types/_aws_amplify_adapter_nextjs.api._Reference_Types_.ClientExtensionsSSRRequest.html b/docs/api/types/_aws_amplify_adapter_nextjs.api._Reference_Types_.ClientExtensionsSSRRequest.html new file mode 100644 index 00000000000..a71b43446da --- /dev/null +++ b/docs/api/types/_aws_amplify_adapter_nextjs.api._Reference_Types_.ClientExtensionsSSRRequest.html @@ -0,0 +1,2 @@ +ClientExtensionsSSRRequest | Amplify JS API Documentation +
    ClientExtensionsSSRRequest<T>: {
        enums: EnumTypes<T>;
        models: ModelTypes<T, "REQUEST">;
        mutations: CustomMutations<T, "REQUEST">;
        queries: CustomQueries<T, "REQUEST">;
    }

    Type Parameters

    • T extends Record<any, any> = never

    Type declaration

    \ No newline at end of file diff --git a/docs/api/types/_aws_amplify_adapter_nextjs.api._Reference_Types_.ExcludeNeverFields.html b/docs/api/types/_aws_amplify_adapter_nextjs.api._Reference_Types_.ExcludeNeverFields.html deleted file mode 100644 index 12f12cfd856..00000000000 --- a/docs/api/types/_aws_amplify_adapter_nextjs.api._Reference_Types_.ExcludeNeverFields.html +++ /dev/null @@ -1,2 +0,0 @@ -ExcludeNeverFields | Amplify JS API Documentation -
    ExcludeNeverFields<O>: {
        [K in FilteredKeys<O>]: O[K]
    }

    Type Parameters

    • O

    \ No newline at end of file diff --git a/docs/api/types/_aws_amplify_adapter_nextjs.api._Reference_Types_.FilteredKeys.html b/docs/api/types/_aws_amplify_adapter_nextjs.api._Reference_Types_.FilteredKeys.html deleted file mode 100644 index 34933e79050..00000000000 --- a/docs/api/types/_aws_amplify_adapter_nextjs.api._Reference_Types_.FilteredKeys.html +++ /dev/null @@ -1,2 +0,0 @@ -FilteredKeys | Amplify JS API Documentation -
    FilteredKeys<T>: {
        [P in keyof T]: T[P] extends never
            ? never
            : P
    }[keyof T]

    Type Parameters

    • T

    \ No newline at end of file diff --git a/docs/api/types/_aws_amplify_adapter_nextjs.api._Reference_Types_.GetCredentialsOptions.html b/docs/api/types/_aws_amplify_adapter_nextjs.api._Reference_Types_.GetCredentialsOptions.html deleted file mode 100644 index 66e2f7d3609..00000000000 --- a/docs/api/types/_aws_amplify_adapter_nextjs.api._Reference_Types_.GetCredentialsOptions.html +++ /dev/null @@ -1,2 +0,0 @@ -GetCredentialsOptions | Amplify JS API Documentation -
    \ No newline at end of file diff --git a/docs/api/types/_aws_amplify_adapter_nextjs.api._Reference_Types_.Headers.html b/docs/api/types/_aws_amplify_adapter_nextjs.api._Reference_Types_.Headers.html deleted file mode 100644 index 21757c06603..00000000000 --- a/docs/api/types/_aws_amplify_adapter_nextjs.api._Reference_Types_.Headers.html +++ /dev/null @@ -1,5 +0,0 @@ -Headers | Amplify JS API Documentation -
    Headers: Record<string, string>

    Use basic Record interface to workaround fetch Header class not available in Node.js -The header names must be lowercased. -TODO: use LowerCase intrinsic when we can support typescript 4.0

    -
    \ No newline at end of file diff --git a/docs/api/types/_aws_amplify_adapter_nextjs.api._Reference_Types_.JsonArray.html b/docs/api/types/_aws_amplify_adapter_nextjs.api._Reference_Types_.JsonArray.html deleted file mode 100644 index 652379202b6..00000000000 --- a/docs/api/types/_aws_amplify_adapter_nextjs.api._Reference_Types_.JsonArray.html +++ /dev/null @@ -1,3 +0,0 @@ -JsonArray | Amplify JS API Documentation -
    \ No newline at end of file diff --git a/docs/api/types/_aws_amplify_adapter_nextjs.api._Reference_Types_.JsonPrimitive.html b/docs/api/types/_aws_amplify_adapter_nextjs.api._Reference_Types_.JsonPrimitive.html deleted file mode 100644 index 9f34a18456c..00000000000 --- a/docs/api/types/_aws_amplify_adapter_nextjs.api._Reference_Types_.JsonPrimitive.html +++ /dev/null @@ -1,2 +0,0 @@ -JsonPrimitive | Amplify JS API Documentation -
    JsonPrimitive: null | string | number | boolean
    \ No newline at end of file diff --git a/docs/api/types/_aws_amplify_adapter_nextjs.api._Reference_Types_.JwtPayload.html b/docs/api/types/_aws_amplify_adapter_nextjs.api._Reference_Types_.JwtPayload.html deleted file mode 100644 index ee2471fc18a..00000000000 --- a/docs/api/types/_aws_amplify_adapter_nextjs.api._Reference_Types_.JwtPayload.html +++ /dev/null @@ -1,2 +0,0 @@ -JwtPayload | Amplify JS API Documentation -
    \ No newline at end of file diff --git a/docs/api/types/_aws_amplify_adapter_nextjs.api._Reference_Types_.StorageAccessLevel.html b/docs/api/types/_aws_amplify_adapter_nextjs.api._Reference_Types_.StorageAccessLevel.html deleted file mode 100644 index bce42285f39..00000000000 --- a/docs/api/types/_aws_amplify_adapter_nextjs.api._Reference_Types_.StorageAccessLevel.html +++ /dev/null @@ -1,2 +0,0 @@ -StorageAccessLevel | Amplify JS API Documentation -
    StorageAccessLevel: "guest" | "protected" | "private"
    \ No newline at end of file diff --git a/docs/api/types/_aws_amplify_adapter_nextjs.api._Reference_Types_.StoragePrefixResolver.html b/docs/api/types/_aws_amplify_adapter_nextjs.api._Reference_Types_.StoragePrefixResolver.html deleted file mode 100644 index 0d3766b235a..00000000000 --- a/docs/api/types/_aws_amplify_adapter_nextjs.api._Reference_Types_.StoragePrefixResolver.html +++ /dev/null @@ -1,2 +0,0 @@ -StoragePrefixResolver | Amplify JS API Documentation -
    StoragePrefixResolver: ((params) => Promise<string>)

    Type declaration

      • (params): Promise<string>
      • Parameters

        Returns Promise<string>

    \ No newline at end of file diff --git a/docs/api/types/_aws_amplify_adapter_nextjs.api._Reference_Types_.V6ClientSSRCookies.html b/docs/api/types/_aws_amplify_adapter_nextjs.api._Reference_Types_.V6ClientSSRCookies.html index 20a1cf9dc2f..7f54742379a 100644 --- a/docs/api/types/_aws_amplify_adapter_nextjs.api._Reference_Types_.V6ClientSSRCookies.html +++ b/docs/api/types/_aws_amplify_adapter_nextjs.api._Reference_Types_.V6ClientSSRCookies.html @@ -1,2 +1,2 @@ V6ClientSSRCookies | Amplify JS API Documentation -
    V6ClientSSRCookies<T>: ExcludeNeverFields<{
        [___amplify]: AmplifyClass;
        [___authMode]?: GraphQLAuthMode;
        [___authToken]?: string;
        [___headers]?: CustomHeaders;
        enums: EnumTypes<T>;
        graphql: GraphQLMethod;
        models: ModelTypes<T, "COOKIES">;
        mutations: CustomMutations<T, "COOKIES">;
        queries: CustomQueries<T, "COOKIES">;
        cancel(promise, message?): boolean;
        isCancelError(error): boolean;
    }>

    Type Parameters

    • T extends Record<any, any> = never

    Type declaration

    \ No newline at end of file +
    V6ClientSSRCookies<T>: {
        graphql: GraphQLMethod;
        cancel(promise, message?): boolean;
        isCancelError(error): boolean;
    } & ClientExtensionsSSRCookies<T>

    Type Parameters

    • T extends Record<any, any> = never

    Type declaration

    • graphql: GraphQLMethod
    • cancel:function
      • Parameters

        • promise: Promise<any>
        • Optional message: string

        Returns boolean

    • isCancelError:function
      • Parameters

        • error: any

        Returns boolean

    \ No newline at end of file diff --git a/docs/api/types/_aws_amplify_adapter_nextjs.api._Reference_Types_.V6ClientSSRRequest.html b/docs/api/types/_aws_amplify_adapter_nextjs.api._Reference_Types_.V6ClientSSRRequest.html index 98cc7a7146b..d90d84dcbd3 100644 --- a/docs/api/types/_aws_amplify_adapter_nextjs.api._Reference_Types_.V6ClientSSRRequest.html +++ b/docs/api/types/_aws_amplify_adapter_nextjs.api._Reference_Types_.V6ClientSSRRequest.html @@ -1,2 +1,2 @@ V6ClientSSRRequest | Amplify JS API Documentation -
    V6ClientSSRRequest<T>: ExcludeNeverFields<{
        [___amplify]: AmplifyClass;
        [___authMode]?: GraphQLAuthMode;
        [___authToken]?: string;
        [___headers]?: CustomHeaders;
        enums: EnumTypes<T>;
        graphql: GraphQLMethodSSR;
        models: ModelTypes<T, "REQUEST">;
        mutations: CustomMutations<T, "REQUEST">;
        queries: CustomQueries<T, "REQUEST">;
        cancel(promise, message?): boolean;
        isCancelError(error): boolean;
    }>

    Type Parameters

    • T extends Record<any, any> = never

    Type declaration

    \ No newline at end of file +
    V6ClientSSRRequest<T>: {
        graphql: GraphQLMethodSSR;
        cancel(promise, message?): boolean;
        isCancelError(error): boolean;
    } & ClientExtensionsSSRRequest<T>

    Type Parameters

    • T extends Record<any, any> = never

    Type declaration

    • graphql: GraphQLMethodSSR
    • cancel:function
      • Parameters

        • promise: Promise<any>
        • Optional message: string

        Returns boolean

    • isCancelError:function
      • Parameters

        • error: any

        Returns boolean

    \ No newline at end of file diff --git a/docs/api/types/aws_amplify.api._Reference_Types_.ClientExtensions.html b/docs/api/types/aws_amplify.api._Reference_Types_.ClientExtensions.html new file mode 100644 index 00000000000..9d9669d3964 --- /dev/null +++ b/docs/api/types/aws_amplify.api._Reference_Types_.ClientExtensions.html @@ -0,0 +1,2 @@ +ClientExtensions | Amplify JS API Documentation +
    ClientExtensions<T>: {
        enums: EnumTypes<T>;
        models: ModelTypes<T>;
        mutations: CustomMutations<T, "CLIENT">;
        queries: CustomQueries<T, "CLIENT">;
        subscriptions: CustomSubscriptions<T, "CLIENT">;
    }

    Type Parameters

    • T extends Record<any, any> = never

    Type declaration

    \ No newline at end of file diff --git a/docs/api/types/aws_amplify.api._Reference_Types_.ExcludeNeverFields.html b/docs/api/types/aws_amplify.api._Reference_Types_.ExcludeNeverFields.html deleted file mode 100644 index 619e6d3d7fd..00000000000 --- a/docs/api/types/aws_amplify.api._Reference_Types_.ExcludeNeverFields.html +++ /dev/null @@ -1,2 +0,0 @@ -ExcludeNeverFields | Amplify JS API Documentation -
    ExcludeNeverFields<O>: {
        [K in FilteredKeys<O>]: O[K]
    }

    Type Parameters

    • O

    \ No newline at end of file diff --git a/docs/api/types/aws_amplify.api._Reference_Types_.FilteredKeys.html b/docs/api/types/aws_amplify.api._Reference_Types_.FilteredKeys.html deleted file mode 100644 index e4f800c26b6..00000000000 --- a/docs/api/types/aws_amplify.api._Reference_Types_.FilteredKeys.html +++ /dev/null @@ -1,2 +0,0 @@ -FilteredKeys | Amplify JS API Documentation -
    FilteredKeys<T>: {
        [P in keyof T]: T[P] extends never
            ? never
            : P
    }[keyof T]

    Type Parameters

    • T

    \ No newline at end of file diff --git a/docs/api/types/aws_amplify.api._Reference_Types_.V6Client.html b/docs/api/types/aws_amplify.api._Reference_Types_.V6Client.html index 882d01e1206..48ee4cc1cb7 100644 --- a/docs/api/types/aws_amplify.api._Reference_Types_.V6Client.html +++ b/docs/api/types/aws_amplify.api._Reference_Types_.V6Client.html @@ -1,2 +1,2 @@ V6Client | Amplify JS API Documentation -
    V6Client<T>: ExcludeNeverFields<{
        [___amplify]: AmplifyClass;
        [___authMode]?: GraphQLAuthMode;
        [___authToken]?: string;
        [___headers]?: CustomHeaders;
        enums: EnumTypes<T>;
        graphql: GraphQLMethod;
        models: ModelTypes<T>;
        mutations: CustomMutations<T>;
        queries: CustomQueries<T>;
        subscriptions: CustomSubscriptions<T>;
        cancel(promise, message?): boolean;
        isCancelError(error): boolean;
    }>

    Type Parameters

    • T extends Record<any, any> = never

    Type declaration

    \ No newline at end of file +
    V6Client<T>: {
        graphql: GraphQLMethod;
        cancel(promise, message?): boolean;
        isCancelError(error): boolean;
    } & ClientExtensions<T>

    Type Parameters

    • T extends Record<any, any> = never

    Type declaration

    • graphql: GraphQLMethod
    • cancel:function
      • Parameters

        • promise: Promise<any>
        • Optional message: string

        Returns boolean

    • isCancelError:function
      • Parameters

        • error: any

        Returns boolean

    \ No newline at end of file diff --git a/docs/api/types/aws_amplify.api_server._Reference_Types_.ClientExtensionsSSRRequest.html b/docs/api/types/aws_amplify.api_server._Reference_Types_.ClientExtensionsSSRRequest.html new file mode 100644 index 00000000000..2b9fd7c29a1 --- /dev/null +++ b/docs/api/types/aws_amplify.api_server._Reference_Types_.ClientExtensionsSSRRequest.html @@ -0,0 +1,2 @@ +ClientExtensionsSSRRequest | Amplify JS API Documentation +
    ClientExtensionsSSRRequest<T>: {
        enums: EnumTypes<T>;
        models: ModelTypes<T, "REQUEST">;
        mutations: CustomMutations<T, "REQUEST">;
        queries: CustomQueries<T, "REQUEST">;
    }

    Type Parameters

    • T extends Record<any, any> = never

    Type declaration

    \ No newline at end of file diff --git a/docs/api/types/aws_amplify.api_server._Reference_Types_.V6ClientSSRRequest.html b/docs/api/types/aws_amplify.api_server._Reference_Types_.V6ClientSSRRequest.html index a9801f7b841..bbcd57560a4 100644 --- a/docs/api/types/aws_amplify.api_server._Reference_Types_.V6ClientSSRRequest.html +++ b/docs/api/types/aws_amplify.api_server._Reference_Types_.V6ClientSSRRequest.html @@ -1,2 +1,2 @@ V6ClientSSRRequest | Amplify JS API Documentation -
    V6ClientSSRRequest<T>: ExcludeNeverFields<{
        [___amplify]: AmplifyClass;
        [___authMode]?: GraphQLAuthMode;
        [___authToken]?: string;
        [___headers]?: CustomHeaders;
        enums: EnumTypes<T>;
        graphql: GraphQLMethodSSR;
        models: ModelTypes<T, "REQUEST">;
        mutations: CustomMutations<T, "REQUEST">;
        queries: CustomQueries<T, "REQUEST">;
        cancel(promise, message?): boolean;
        isCancelError(error): boolean;
    }>

    Type Parameters

    • T extends Record<any, any> = never

    Type declaration

    \ No newline at end of file +
    V6ClientSSRRequest<T>: {
        graphql: GraphQLMethodSSR;
        cancel(promise, message?): boolean;
        isCancelError(error): boolean;
    } & ClientExtensionsSSRRequest<T>

    Type Parameters

    • T extends Record<any, any> = never

    Type declaration

    • graphql: GraphQLMethodSSR
    • cancel:function
      • Parameters

        • promise: Promise<any>
        • Optional message: string

        Returns boolean

    • isCancelError:function
      • Parameters

        • error: any

        Returns boolean

    \ No newline at end of file diff --git a/packages/adapter-nextjs/CHANGELOG.md b/packages/adapter-nextjs/CHANGELOG.md index 582f923ab4f..392d03ff7fc 100644 --- a/packages/adapter-nextjs/CHANGELOG.md +++ b/packages/adapter-nextjs/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.0.30](https://github.com/aws-amplify/amplify-js/compare/@aws-amplify/adapter-nextjs@1.0.29...@aws-amplify/adapter-nextjs@1.0.30) (2024-04-24) + +**Note:** Version bump only for package @aws-amplify/adapter-nextjs + +## [1.0.29](https://github.com/aws-amplify/amplify-js/compare/@aws-amplify/adapter-nextjs@1.0.28...@aws-amplify/adapter-nextjs@1.0.29) (2024-04-22) + +**Note:** Version bump only for package @aws-amplify/adapter-nextjs + ## [1.0.28](https://github.com/aws-amplify/amplify-js/compare/@aws-amplify/adapter-nextjs@1.0.27...@aws-amplify/adapter-nextjs@1.0.28) (2024-04-09) **Note:** Version bump only for package @aws-amplify/adapter-nextjs diff --git a/packages/analytics/CHANGELOG.md b/packages/analytics/CHANGELOG.md index 2d11b59e99d..4257b6df1db 100644 --- a/packages/analytics/CHANGELOG.md +++ b/packages/analytics/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [7.0.28](https://github.com/aws-amplify/amplify-js/compare/@aws-amplify/analytics@7.0.27...@aws-amplify/analytics@7.0.28) (2024-04-22) + +**Note:** Version bump only for package @aws-amplify/analytics + ## 7.0.27 (2024-04-02) **Note:** Version bump only for package @aws-amplify/analytics diff --git a/packages/analytics/package.json b/packages/analytics/package.json index 52c0f8c5026..573300a464d 100644 --- a/packages/analytics/package.json +++ b/packages/analytics/package.json @@ -1,6 +1,6 @@ { "name": "@aws-amplify/analytics", - "version": "7.0.27", + "version": "7.0.28", "description": "Analytics category of aws-amplify", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.mjs", @@ -103,7 +103,7 @@ "@aws-amplify/core": "^6.0.0" }, "devDependencies": { - "@aws-amplify/core": "6.0.27", + "@aws-amplify/core": "6.0.28", "@aws-amplify/react-native": "1.0.28", "@aws-sdk/types": "3.398.0", "typescript": "5.0.2" diff --git a/packages/api-graphql/CHANGELOG.md b/packages/api-graphql/CHANGELOG.md index 524555ac1f5..bb93eb3cd99 100644 --- a/packages/api-graphql/CHANGELOG.md +++ b/packages/api-graphql/CHANGELOG.md @@ -3,6 +3,13 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [4.0.29](https://github.com/aws-amplify/amplify-js/compare/@aws-amplify/api-graphql@4.0.28...@aws-amplify/api-graphql@4.0.29) (2024-04-22) + +### Bug Fixes + +- **api-graphql:** incorrect custom selection set for nested model.model.customType ([#13216](https://github.com/aws-amplify/amplify-js/issues/13216)) ([390c159](https://github.com/aws-amplify/amplify-js/commit/390c159cd976b744701d504a9d3929e80f7e2b72)) +- **api-graphql:** incorrect list sk arg type ([#13249](https://github.com/aws-amplify/amplify-js/issues/13249)) ([f37faeb](https://github.com/aws-amplify/amplify-js/commit/f37faebacddeed66ce5bc1d7f78b8d1d46aecb17)) + ## [4.0.28](https://github.com/aws-amplify/amplify-js/compare/@aws-amplify/api-graphql@4.0.27...@aws-amplify/api-graphql@4.0.28) (2024-04-09) **Note:** Version bump only for package @aws-amplify/api-graphql diff --git a/packages/api-graphql/__tests__/GraphQLAPI.test.ts b/packages/api-graphql/__tests__/GraphQLAPI.test.ts index e3936363270..1dcec2bfc23 100644 --- a/packages/api-graphql/__tests__/GraphQLAPI.test.ts +++ b/packages/api-graphql/__tests__/GraphQLAPI.test.ts @@ -62,7 +62,7 @@ const client = { graphql, cancel, isCancelError, -} as V6Client; +} as unknown as V6Client; const mockFetchAuthSession = (Amplify as any).Auth .fetchAuthSession as jest.Mock; @@ -1142,7 +1142,7 @@ describe('API test', () => { [__amplify]: AmplifyCore, graphql, cancel, - } as V6Client; + } as unknown as V6Client; Amplify.configure( { @@ -1242,7 +1242,7 @@ describe('API test', () => { [__amplify]: AmplifyCore, graphql, cancel, - } as V6Client; + } as unknown as V6Client; Amplify.configure( { diff --git a/packages/api-graphql/__tests__/fixtures/modeled/schema.ts b/packages/api-graphql/__tests__/fixtures/modeled/schema.ts index e2bf3c7b281..fbe527591a9 100644 --- a/packages/api-graphql/__tests__/fixtures/modeled/schema.ts +++ b/packages/api-graphql/__tests__/fixtures/modeled/schema.ts @@ -5,42 +5,44 @@ const schema = a.schema({ .model({ name: a.string(), description: a.string(), - notes: a.hasMany('Note'), - meta: a.hasOne('TodoMetadata'), + notes: a.hasMany('Note', 'todoNotesId'), + todoMetaId: a.id(), + meta: a.hasOne('TodoMetadata', 'todoMetaId'), status: a.enum(['NOT_STARTED', 'STARTED', 'DONE', 'CANCELED']), tags: a.string().array(), }) - .authorization([a.allow.public('apiKey'), a.allow.owner()]), + .authorization(allow => [allow.publicApiKey(), allow.owner()]), Note: a .model({ body: a.string().required(), - todo: a.belongsTo('Todo'), + todoNotesId: a.id(), + todo: a.belongsTo('Todo', 'todoNotesId'), }) - .authorization([a.allow.public('apiKey'), a.allow.owner()]), + .authorization(allow => [allow.publicApiKey(), allow.owner()]), TodoMetadata: a .model({ data: a.json(), }) - .authorization([a.allow.public('apiKey'), a.allow.owner()]), + .authorization(allow => [allow.publicApiKey(), allow.owner()]), ThingWithCustomerOwnerField: a .model({ id: a.id(), description: a.string(), }) - .authorization([a.allow.owner('userPools').inField('customField')]), + .authorization(allow => [allow.ownerDefinedIn('customField', 'userPools')]), ThingWithOwnerFieldSpecifiedInModel: a .model({ id: a.id(), name: a.string(), owner: a.string(), }) - .authorization([a.allow.owner()]), + .authorization(allow => [allow.owner()]), ThingWithAPIKeyAuth: a .model({ id: a.id(), description: a.string(), }) - .authorization([a.allow.public('apiKey')]), + .authorization(allow => [allow.publicApiKey()]), ThingWithoutExplicitAuth: a.model({ id: a.id(), description: a.string(), @@ -60,22 +62,27 @@ const schema = a.schema({ CommunityPost: a.model({ id: a.id().required(), - poll: a.hasOne('CommunityPoll'), + communityPostPollId: a.id(), + poll: a.hasOne('CommunityPoll', 'communityPostPollId'), metadata: a.ref('CommunityPostMetadata'), }), CommunityPoll: a.model({ id: a.id().required(), question: a.string().required(), - answers: a.hasMany('CommunityPollAnswer').arrayRequired().valueRequired(), + answers: a.hasMany('CommunityPollAnswer', 'communityPollAnswersId').valueRequired() }), CommunityPollAnswer: a.model({ id: a.id().required(), answer: a.string().required(), - votes: a.hasMany('CommunityPollVote').arrayRequired().valueRequired(), + communityPollAnswersId: a.id(), + votes: a.hasMany('CommunityPollVote', 'communityPollAnswerVotesId').valueRequired(), }), CommunityPollVote: a - .model({ id: a.id().required() }) - .authorization([a.allow.public('apiKey'), a.allow.owner()]), + .model({ + id: a.id().required(), + communityPollAnswerVotesId: a.id() + }) + .authorization(allow => [allow.publicApiKey(), allow.owner()]), SecondaryIndexModel: a .model({ title: a.string(), @@ -92,18 +99,19 @@ const schema = a.schema({ sku: a.string().required(), factoryId: a.string().required(), description: a.string(), - warehouse: a.belongsTo("Warehouse"), + warehouseProductsId: a.id(), + warehouse: a.belongsTo("Warehouse", 'warehouseProductsId'), trackingMeta: a.customType({ productMeta: a.ref('ProductMeta'), note: a.string(), }), }) .identifier(['sku', 'factoryId']) - .authorization([a.allow.owner(), a.allow.public().to(["read"])]), + .authorization(allow => [allow.owner(), allow.publicApiKey().to(["read"])]), Warehouse: a.model({ name: a.string().required(), - products: a.hasMany("Product"), - }).authorization([a.allow.owner(), a.allow.public().to(["read"])]), + products: a.hasMany("Product", 'warehouseProductsId'), + }).authorization(allow => [allow.owner(), allow.publicApiKey().to(["read"])]), ProductMeta: a.customType({ releaseDate: a.date(), status: a.enum(['in_production', 'discontinued']), @@ -125,7 +133,7 @@ const schema = a.schema({ }) .returns(a.ref('EchoResult')) .handler(a.handler.function('echoFunction')) - .authorization([a.allow.public()]), + .authorization(allow => [allow.publicApiKey()]), // custom query returning a primitive type echoString: a @@ -135,7 +143,7 @@ const schema = a.schema({ }) .returns(a.string()) .handler(a.handler.function('echoFunction')) - .authorization([a.allow.public()]), + .authorization(allow => [allow.publicApiKey()]), echoNestedCustomTypes: a .query() .arguments({ @@ -143,7 +151,7 @@ const schema = a.schema({ }) .returns(a.ref('ProductTrackingMeta')) .handler(a.handler.function('echoFunction')) - .authorization([a.allow.public()]), + .authorization(allow => [allow.publicApiKey()]), echoModelHasNestedTypes: a .query() .arguments({ @@ -151,7 +159,7 @@ const schema = a.schema({ }) .returns(a.ref('Product')) .handler(a.handler.function('echoFunction')) - .authorization([a.allow.public()]), + .authorization(allow => [allow.publicApiKey()]), // custom mutation returning a non-model type PostLikeResult: a.customType({ likes: a.integer().required(), @@ -163,23 +171,24 @@ const schema = a.schema({ }) .returns(a.ref('PostLikeResult')) .handler(a.handler.function('echoFunction')) - .authorization([a.allow.private()]), + .authorization(allow => [allow.guest()]), // custom mutation returning a model type Post: a .model({ id: a.id().required(), content: a.string(), - comments: a.hasMany('Comment'), + comments: a.hasMany('Comment', 'postCommentsId'), }) - .authorization([a.allow.public('apiKey'), a.allow.owner()]), + .authorization(allow => [allow.publicApiKey(), allow.owner()]), Comment: a .model({ id: a.id().required(), content: a.string().required(), - post: a.belongsTo('Post'), + postCommentsId: a.id().required(), + post: a.belongsTo('Post', 'postCommentsId'), }) - .authorization([a.allow.public('apiKey'), a.allow.owner()]), + .authorization(allow => [allow.publicApiKey(), allow.owner()]), likePostReturnPost: a .mutation() .arguments({ @@ -187,7 +196,7 @@ const schema = a.schema({ }) .returns(a.ref('Post')) .handler(a.handler.function('echoFunction')) - .authorization([a.allow.private()]), + .authorization(allow => [allow.guest()]), onPostLiked: a .subscription() @@ -206,27 +215,27 @@ const schema = a.schema({ .model({ description: a.string(), }) - .authorization([a.allow.owner()]), + .authorization(allow => [allow.owner()]), CustomImplicitOwner: a .model({ description: a.string(), }) - .authorization([a.allow.owner().inField('customOwner')]), + .authorization(allow => [allow.ownerDefinedIn('customOwner')]), ModelGroupDefinedIn: a .model({ description: a.string(), }) - .authorization([a.allow.groupDefinedIn('groupField')]), + .authorization(allow => [allow.groupDefinedIn('groupField')]), ModelGroupsDefinedIn: a .model({ description: a.string(), }) - .authorization([a.allow.groupsDefinedIn('groupsField')]), + .authorization(allow => [allow.groupsDefinedIn('groupsField')]), ModelStaticGroup: a .model({ description: a.string(), }) - .authorization([a.allow.specificGroup('Admin')]), + .authorization(allow => [allow.group('Admin')]), // #endregion }); diff --git a/packages/api-graphql/__tests__/internals/APIClient.test.ts b/packages/api-graphql/__tests__/internals/APIClient.test.ts deleted file mode 100644 index ec73ea9ca52..00000000000 --- a/packages/api-graphql/__tests__/internals/APIClient.test.ts +++ /dev/null @@ -1,570 +0,0 @@ -import { - SchemaModel, - ModelIntrospectionSchema, -} from '@aws-amplify/core/internals/utils'; -import { - normalizeMutationInput, - flattenItems, - generateSelectionSet, - customSelectionSetToIR, - generateGraphQLDocument, -} from '../../src/internals/APIClient'; - -import config from '../fixtures/modeled/amplifyconfiguration'; -import { - productSchemaModel, - userSchemaModel, -} from '../fixtures/schema-models/with-custom-primary-key/models'; -const modelIntroSchema = config.modelIntrospection as ModelIntrospectionSchema; - -describe('APIClient', () => { - describe('normalizeMutationInput', () => { - // TODO: test all relationship combinations - test('basic 1:M mutation', () => { - const todo = { - id: 'todo1', - name: 'My Todo', - }; - - const note = { - body: 'Note about Todo', - // passing model - todo: todo, - }; - - const expectedInput = { - body: note.body, - // expecting id - todoNotesId: todo.id, - }; - - const noteModelDef = modelIntroSchema.models.Note as SchemaModel; - - const normalized = normalizeMutationInput( - note, - noteModelDef, - modelIntroSchema - ); - - expect(normalized).toEqual(expectedInput); - }); - }); -}); - -describe('flattenItems', () => { - test('no-op on get without relationships', () => { - const getResponse = { getPost: { id: 'myPost' } }; - - const expected = { getPost: { id: 'myPost' } }; - - const flattened = flattenItems(getResponse); - - expect(flattened).toEqual(expected); - }); - - test('flatten list without relationships', () => { - const listResponse = { - listPost: { items: [{ id: 'myPost' }, { id: 'myPost2' }] }, - }; - - const expected = { - listPost: [{ id: 'myPost' }, { id: 'myPost2' }], - }; - - const flattened = flattenItems(listResponse); - - expect(flattened).toEqual(expected); - }); - - test('flatten list with relationships', () => { - const listResponse = { - listPosts: { - items: [ - { - id: 'post1', - comments: { - items: [ - { - id: 'comment1', - content: 'my comment 1', - meta: { - items: [{ id: 'meta1' }], - }, - post: { - id: 'post1', - comments: { - items: [ - { - id: 'comment1', - content: 'my comment 1', - meta: { - items: [{ id: 'meta1' }], - }, - }, - ], - }, - }, - }, - { - id: 'comment1', - content: 'my comment 1', - meta: { - items: [{ id: 'meta1' }], - }, - }, - ], - }, - }, - ], - }, - }; - - const expected = { - listPosts: [ - { - id: 'post1', - comments: [ - { - id: 'comment1', - content: 'my comment 1', - meta: [ - { - id: 'meta1', - }, - ], - post: { - id: 'post1', - comments: [ - { - id: 'comment1', - content: 'my comment 1', - meta: [ - { - id: 'meta1', - }, - ], - }, - ], - }, - }, - { - id: 'comment1', - content: 'my comment 1', - meta: [ - { - id: 'meta1', - }, - ], - }, - ], - }, - ], - }; - - const flattened = flattenItems(listResponse); - - expect(flattened).toEqual(expected); - }); - - describe('customSelectionSetToIR', () => { - test('specific fields on the model', () => { - const selSet = customSelectionSetToIR(modelIntroSchema, 'Todo', [ - 'id', - 'name', - ]); - - const expected = { - id: '', - name: '', - }; - - expect(selSet).toEqual(expected); - }); - - test('specific fields on the model and related model', () => { - const selSet = customSelectionSetToIR(modelIntroSchema, 'Todo', [ - 'id', - 'name', - 'notes.id', - 'notes.body', - ]); - - const expected = { - id: '', - name: '', - notes: { - items: { - id: '', - body: '', - }, - }, - }; - - expect(selSet).toEqual(expected); - }); - - test('related property without any specified field in selectionSet should throw an error', () => { - expect(() => - customSelectionSetToIR(modelIntroSchema, 'Todo', [ - 'id', - 'name', - 'notes', - ]) - ).toThrow('notes must declare a wildcard (*) or a field of model Note'); - }); - - test('inexistent field should throw an error', () => { - expect(() => - customSelectionSetToIR(modelIntroSchema, 'Todo', [ - 'id', - 'name', - 'inexistentField', - 'notes.*', - ]) - ).toThrow('inexistentField is not a field of model Todo'); - }); - - test('related inexistent field should throw an error', () => { - expect(() => - customSelectionSetToIR(modelIntroSchema, 'Todo', [ - 'id', - 'name', - 'notes.inexistentField', - ]) - ).toThrow('inexistentField is not a field of model Note'); - }); - - test('specific fields on the model; all fields on related model', () => { - const selSet = customSelectionSetToIR(modelIntroSchema, 'Todo', [ - 'id', - 'name', - 'notes.*', - ]); - - const expected = { - id: '', - name: '', - notes: { - items: { - id: '', - body: '', - owner: '', - createdAt: '', - updatedAt: '', - todoNotesId: '', - }, - }, - }; - - expect(selSet).toEqual(expected); - }); - - test('deeply nested on a bi-directional model', () => { - const selSet = customSelectionSetToIR(modelIntroSchema, 'Todo', [ - 'id', - 'name', - 'notes.todo.notes.todo.notes.todo.notes.*', - ]); - - const expected = { - id: '', - name: '', - notes: { - items: { - todo: { - notes: { - items: { - todo: { - notes: { - items: { - todo: { - notes: { - items: { - id: '', - body: '', - createdAt: '', - updatedAt: '', - todoNotesId: '', - owner: '', - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }; - - expect(selSet).toEqual(expected); - }); - - test("subsequent wildcard doesn't overwrite existing nested object", () => { - const selSet = customSelectionSetToIR(modelIntroSchema, 'Todo', [ - 'id', - 'name', - 'notes.todo.name', - 'notes.*', - ]); - - const expected = { - id: '', - name: '', - notes: { - items: { - id: '', - body: '', - createdAt: '', - updatedAt: '', - todoNotesId: '', - owner: '', - todo: { - name: '', - }, - }, - }, - }; - - expect(selSet).toEqual(expected); - }); - - test('custom type works properly', () => { - const selSet = customSelectionSetToIR(modelIntroSchema, 'CommunityPost', [ - 'metadata.type', - 'poll.question', - ]); - - const expected = { - metadata: { - type: '', - }, - poll: { - question: '', - }, - }; - - expect(selSet).toEqual(expected); - }); - - test('custom type with wildcard works properly', () => { - const selSet = customSelectionSetToIR(modelIntroSchema, 'CommunityPost', [ - 'metadata.*', - 'poll.question', - ]); - - const expected = { - metadata: { - type: '', - deleted: '', - }, - poll: { - question: '', - }, - }; - - expect(selSet).toEqual(expected); - }); - - test('custom type with invalid property throws an error', () => { - expect(() => - customSelectionSetToIR(modelIntroSchema, 'CommunityPost', [ - 'metadata.inexistentField', - 'poll.question', - ]) - ).toThrow( - 'inexistentField is not a field of custom type CommunityPostMetadata' - ); - }); - - test('custom type without any properties throws an error', () => { - expect(() => - customSelectionSetToIR(modelIntroSchema, 'CommunityPost', [ - 'metadata', - 'poll.question', - ]) - ).toThrow( - 'metadata must declare a wildcard (*) or a field of custom type CommunityPostMetadata' - ); - }); - - test('mix of related and non-related fields in a nested model creates a nested object with all necessary fields', () => { - const selSet = customSelectionSetToIR(modelIntroSchema, 'CommunityPost', [ - 'poll.question', - 'poll.answers.answer', - 'poll.answers.votes.id', - ]); - - const expected = { - poll: { - question: '', - answers: { - items: { - answer: '', - votes: { - items: { - id: '', - }, - }, - }, - }, - }, - }; - - expect(selSet).toEqual(expected); - }); - - it('generates expected default selection set for nested model and custom type', () => { - const set = customSelectionSetToIR(modelIntroSchema, 'Warehouse', [ - 'id', - 'name', - 'products.*' - ]); - - const expected = { - id: '', - name: '', - products: { - items: { - createdAt: '', - updatedAt: '', - warehouseProductsId: '', - description: '', - factoryId: '', - owner: '', - sku: '', - trackingMeta: { - note: '', - productMeta: { - deepMeta: { - content: '', - }, - releaseDate: '', - status: '', - } - } - } - } - } - - expect(set).toEqual(expected); - }); - }); - - describe('generateSelectionSet', () => { - test('it should generate default selection set', () => { - const selSet = generateSelectionSet(modelIntroSchema, 'Todo'); - - const expected = - 'id name description status tags createdAt updatedAt todoMetaId owner'; - - expect(selSet).toEqual(expected); - }); - - it('generates default selection set for nested custom types', () => { - const generated = generateSelectionSet(modelIntroSchema, 'Product'); - - const expected = - 'sku factoryId description trackingMeta { productMeta { releaseDate status deepMeta { content } } note } warehouseProductsId createdAt updatedAt owner'; - - expect(generated).toEqual(expected); - }); - - test('it should generate custom selection set - top-level fields', () => { - const selSet = generateSelectionSet(modelIntroSchema, 'Todo', [ - 'id', - 'name', - ]); - - const expected = 'id name'; - - expect(selSet).toEqual(expected); - }); - - test('it should generate custom selection set - specific nested fields', () => { - const selSet = generateSelectionSet(modelIntroSchema, 'Todo', [ - 'id', - 'name', - 'notes.id', - 'notes.createdAt', - ]); - - const expected = 'id name notes { items { id createdAt } }'; - - expect(selSet).toEqual(expected); - }); - - test('it should generate custom selection set - all nested fields', () => { - const selSet = generateSelectionSet(modelIntroSchema, 'Todo', [ - 'id', - 'name', - 'notes.*', - ]); - - const expected = - 'id name notes { items { id body createdAt updatedAt todoNotesId owner } }'; - - expect(selSet).toEqual(expected); - }); - - test('deeply nested on a bi-directional model', () => { - const selSet = generateSelectionSet(modelIntroSchema, 'Todo', [ - 'id', - 'name', - 'notes.todo.notes.todo.notes.todo.notes.*', - ]); - - const expected = - 'id name notes { items { todo { notes { items { todo { notes { items { todo { notes { items { id body createdAt updatedAt todoNotesId owner } } } } } } } } } } }'; - - expect(selSet).toEqual(expected); - }); - - it('generates custom selection set for nested custom types', () => { - const generated = generateSelectionSet(modelIntroSchema, 'Product', [ - 'sku', - 'trackingMeta.note', - 'trackingMeta.productMeta.status', - 'trackingMeta.productMeta.deepMeta.content', - ]); - - const expected = - 'sku trackingMeta { note productMeta { status deepMeta { content } } }'; - - expect(generated).toEqual(expected); - }); - }); -}); - -describe('generateGraphQLDocument()', () => { - describe('for `READ` operation', () => { - const modelOperation = 'READ'; - const mockModelDefinitions = { - version: 1 as const, - enums: {}, - nonModels: {}, - models: { - User: userSchemaModel, - Product: productSchemaModel, - }, - }; - - test.each([ - ['User', '$userId: ID!'], - ['Product', '$sku: String!,$factoryId: String!,$warehouseId: String!'], - ])( - 'generates arguments for model %s to be %s', - (modelName, expectedArgs) => { - const document = generateGraphQLDocument( - mockModelDefinitions, - modelName, - modelOperation - ); - - expect(document).toEqual(expect.stringContaining(expectedArgs)) - } - ); - }); -}); diff --git a/packages/api-graphql/__tests__/internals/generateClient.test.ts b/packages/api-graphql/__tests__/internals/generateClient.test.ts index 7f547380abb..629e37efed3 100644 --- a/packages/api-graphql/__tests__/internals/generateClient.test.ts +++ b/packages/api-graphql/__tests__/internals/generateClient.test.ts @@ -376,7 +376,7 @@ describe('generateClient', () => { }); const client = generateClient({ amplify: Amplify }); - const { data } = await client.models.Todo.list({ + await client.models.Todo.list({ filter: { name: { contains: 'name' } }, limit: 5, }); @@ -402,7 +402,7 @@ describe('generateClient', () => { const client = generateClient({ amplify: Amplify }); - const { data } = await client.models.ThingWithCustomPk.list({ + await client.models.ThingWithCustomPk.list({ cpk_cluster_key: '1', sortDirection: 'ASC', }); @@ -428,7 +428,7 @@ describe('generateClient', () => { const client = generateClient({ amplify: Amplify }); - const { data } = await client.models.ThingWithCustomPk.list({ + await client.models.ThingWithCustomPk.list({ cpk_cluster_key: '1', sortDirection: 'DESC', }); @@ -645,7 +645,11 @@ describe('generateClient', () => { }, }); - const { data: notes } = await data.notes(); + expect(data).not.toBeNull(); + + expect(data).not.toBeNull(); + + const { data: notes } = await data!.notes(); expect(normalizePostGraphqlCalls(getChildNotesSpy)).toMatchSnapshot(); @@ -691,7 +695,9 @@ describe('generateClient', () => { }, }); - const { data: notes } = await data.notes({ nextToken: 'some-token' }); + expect(data).not.toBeNull(); + + const { data: notes } = await data!.notes({ nextToken: 'some-token' }); expect(normalizePostGraphqlCalls(getChildNotesSpy)).toMatchSnapshot(); @@ -737,7 +743,9 @@ describe('generateClient', () => { }, }); - const { data: notes } = await data.notes({ limit: 5 }); + expect(data).not.toBeNull(); + + const { data: notes } = await data!.notes({ limit: 5 }); expect(normalizePostGraphqlCalls(getChildNotesSpy)).toMatchSnapshot(); @@ -780,7 +788,9 @@ describe('generateClient', () => { }, }); - const { data: todo } = await data.todo(); + expect(data).not.toBeNull(); + + const { data: todo } = await data!.todo(); expect(normalizePostGraphqlCalls(getChildNotesSpy)).toMatchSnapshot(); @@ -821,7 +831,9 @@ describe('generateClient', () => { }, }); - const { data: todo } = await data.meta(); + expect(data).not.toBeNull(); + + const { data: todo } = await data!.meta(); expect(normalizePostGraphqlCalls(getChildMetaSpy)).toMatchSnapshot(); @@ -835,6 +847,186 @@ describe('generateClient', () => { }); }); + describe('error handling', () => { + test('create() returns null with errors property', async () => { + const expectedErrors = [ + { + path: ['createTodo'], + data: null, + errorType: 'Unauthorized', + errorInfo: null, + locations: [ + { + line: 2, + column: 3, + sourceName: null, + }, + ], + message: 'Not Authorized to access createTodo on type Mutation', + }, + ]; + + const spy = mockApiResponse({ + data: { + getTodo: null, + }, + errors: expectedErrors, + }); + + const client = generateClient({ amplify: Amplify }); + const { data, errors } = await client.models.Todo.create({ + id: 'does not matter', + }); + + expect(data).toBeNull(); + expect(errors?.length).toBe(1); + expect(errors).toEqual(expectedErrors); + }); + + test('returns object in which `data` is null and `errors` contains expected error', async () => { + const expectedErrors = [ + { + path: ['getTodo'], + data: null, + errorType: 'Unauthorized', + errorInfo: null, + locations: [ + { + line: 2, + column: 3, + sourceName: null, + }, + ], + message: 'Not Authorized to access getTodo on type Query', + }, + ]; + + const spy = mockApiResponse({ + data: { + getTodo: null, + }, + errors: expectedErrors, + }); + + const client = generateClient({ amplify: Amplify }); + const { data, errors } = await client.models.Todo.get({ + id: 'does not matter', + }); + + expect(data).toBeNull(); + expect(errors?.length).toBe(1); + expect(errors).toEqual(expectedErrors); + }); + + test('update() returns null with errors property', async () => { + const expectedErrors = [ + { + path: ['updateTodo'], + data: null, + errorType: 'Unauthorized', + errorInfo: null, + locations: [ + { + line: 2, + column: 3, + sourceName: null, + }, + ], + message: 'Not Authorized to access updateTodo on type Mutation', + }, + ]; + + mockApiResponse({ + data: { + updateTodo: null, + }, + errors: expectedErrors, + }); + + const client = generateClient({ amplify: Amplify }); + + const { data, errors } = await client.models.Todo.update({ + id: 'some_id', + name: 'does not matter', + }); + + expect(data).toBeNull(); + expect(errors?.length).toBe(1); + expect(errors).toEqual(expectedErrors); + }); + + test('delete() returns null with errors property', async () => { + const expectedErrors = [ + { + path: ['deleteTodo'], + data: null, + errorType: 'Unauthorized', + errorInfo: null, + locations: [ + { + line: 2, + column: 3, + sourceName: null, + }, + ], + message: 'Not Authorized to access deleteTodo on type Mutation', + }, + ]; + + const spy = mockApiResponse({ + data: { + deleteTodo: null, + }, + errors: expectedErrors, + }); + + const client = generateClient({ amplify: Amplify }); + + const { data, errors } = await client.models.Todo.delete({ + id: 'some_id', + }); + + expect(data).toBeNull(); + expect(errors?.length).toBe(1); + expect(errors).toEqual(expectedErrors); + }); + + test('list() returns empty list with errors property', async () => { + const expectedErrors = [ + { + path: ['listTodos'], + data: null, + errorType: 'Unauthorized', + errorInfo: null, + locations: [ + { + line: 2, + column: 3, + sourceName: null, + }, + ], + message: 'Not Authorized to access listTodos on type Query', + }, + ]; + + mockApiResponse({ + data: { + listTodos: null, + }, + errors: expectedErrors, + }); + + const client = generateClient({ amplify: Amplify }); + const { data, errors } = await client.models.Todo.list({ + filter: { name: { contains: 'name' } }, + }); + + expect(data.length).toBe(0); + expect(errors?.length).toBe(1); + expect(errors).toEqual(expectedErrors); + }); + }); + describe('basic model operations - authMode: CuP override at the time of operation', () => { beforeEach(() => { jest.clearAllMocks(); @@ -1119,7 +1311,9 @@ describe('generateClient', () => { }, }); - await data.notes(); + expect(data).not.toBeNull(); + + await data!.notes(); expect(normalizePostGraphqlCalls(getChildNotesSpy)).toMatchSnapshot(); }); @@ -1157,7 +1351,9 @@ describe('generateClient', () => { }, }); - await data.todo(); + expect(data).not.toBeNull(); + + await data!.todo(); expect(normalizePostGraphqlCalls(getChildNotesSpy)).toMatchSnapshot(); }); @@ -1194,7 +1390,9 @@ describe('generateClient', () => { }, }); - await data.meta(); + expect(data).not.toBeNull(); + + await data!.meta(); expect(normalizePostGraphqlCalls(getChildMetaSpy)).toMatchSnapshot(); }); @@ -1235,7 +1433,9 @@ describe('generateClient', () => { }, }); - await data.notes({ authMode: 'apiKey' }); + expect(data).not.toBeNull(); + + await data!.notes({ authMode: 'apiKey' }); expect(normalizePostGraphqlCalls(getChildNotesSpy)).toMatchSnapshot(); }); @@ -1273,7 +1473,9 @@ describe('generateClient', () => { }, }); - await data.todo({ authMode: 'apiKey' }); + expect(data).not.toBeNull(); + + await data!.todo({ authMode: 'apiKey' }); expect(normalizePostGraphqlCalls(getChildNotesSpy)).toMatchSnapshot(); }); @@ -1310,7 +1512,9 @@ describe('generateClient', () => { }, }); - await data.meta({ authMode: 'apiKey' }); + expect(data).not.toBeNull(); + + await data!.meta({ authMode: 'apiKey' }); expect(normalizePostGraphqlCalls(getChildMetaSpy)).toMatchSnapshot(); }); @@ -1609,7 +1813,9 @@ describe('generateClient', () => { }, }); - await data.notes(); + expect(data).not.toBeNull(); + + await data!.notes(); expect(normalizePostGraphqlCalls(getChildNotesSpy)).toMatchSnapshot(); }); @@ -1648,7 +1854,9 @@ describe('generateClient', () => { }, }); - await data.todo(); + expect(data).not.toBeNull(); + + await data!.todo(); expect(normalizePostGraphqlCalls(getChildNotesSpy)).toMatchSnapshot(); }); @@ -1686,7 +1894,9 @@ describe('generateClient', () => { }, }); - await data.meta(); + expect(data).not.toBeNull(); + + await data!.meta(); expect(normalizePostGraphqlCalls(getChildMetaSpy)).toMatchSnapshot(); }); @@ -1727,7 +1937,9 @@ describe('generateClient', () => { }, }); - await data.notes({ authMode: 'lambda', authToken: 'some-token' }); + expect(data).not.toBeNull(); + + await data!.notes({ authMode: 'lambda', authToken: 'some-token' }); expect(normalizePostGraphqlCalls(getChildNotesSpy)).toMatchSnapshot(); }); @@ -1765,7 +1977,9 @@ describe('generateClient', () => { }, }); - await data.todo({ authMode: 'lambda', authToken: 'some-token' }); + expect(data).not.toBeNull(); + + await data!.todo({ authMode: 'lambda', authToken: 'some-token' }); expect(normalizePostGraphqlCalls(getChildNotesSpy)).toMatchSnapshot(); }); @@ -1802,7 +2016,9 @@ describe('generateClient', () => { }, }); - await data.meta({ authMode: 'lambda', authToken: 'some-token' }); + expect(data).not.toBeNull(); + + await data!.meta({ authMode: 'lambda', authToken: 'some-token' }); expect(normalizePostGraphqlCalls(getChildMetaSpy)).toMatchSnapshot(); }); @@ -2101,7 +2317,9 @@ describe('generateClient', () => { }, }); - await data.notes(); + expect(data).not.toBeNull(); + + await data!.notes(); expect(normalizePostGraphqlCalls(getChildNotesSpy)).toMatchSnapshot(); }); @@ -2137,7 +2355,9 @@ describe('generateClient', () => { }, }); - await data.todo(); + expect(data).not.toBeNull(); + + await data!.todo(); expect(normalizePostGraphqlCalls(getChildNotesSpy)).toMatchSnapshot(); }); @@ -2172,7 +2392,9 @@ describe('generateClient', () => { }, }); - await data.meta(); + expect(data).not.toBeNull(); + + await data!.meta(); expect(normalizePostGraphqlCalls(getChildMetaSpy)).toMatchSnapshot(); }); @@ -2213,7 +2435,9 @@ describe('generateClient', () => { }, }); - await data.notes({ authMode: 'apiKey' }); + expect(data).not.toBeNull(); + + await data!.notes({ authMode: 'apiKey' }); expect(normalizePostGraphqlCalls(getChildNotesSpy)).toMatchSnapshot(); }); @@ -2249,7 +2473,9 @@ describe('generateClient', () => { }, }); - await data.todo({ authMode: 'apiKey' }); + expect(data).not.toBeNull(); + + await data!.todo({ authMode: 'apiKey' }); expect(normalizePostGraphqlCalls(getChildNotesSpy)).toMatchSnapshot(); }); @@ -2284,7 +2510,9 @@ describe('generateClient', () => { }, }); - await data.meta({ authMode: 'apiKey' }); + expect(data).not.toBeNull(); + + await data!.meta({ authMode: 'apiKey' }); expect(normalizePostGraphqlCalls(getChildMetaSpy)).toMatchSnapshot(); }); @@ -2590,7 +2818,9 @@ describe('generateClient', () => { }, }); - await data.notes(); + expect(data).not.toBeNull(); + + await data!.notes(); expect(normalizePostGraphqlCalls(getChildNotesSpy)).toMatchSnapshot(); }); @@ -2627,7 +2857,9 @@ describe('generateClient', () => { }, }); - await data.todo(); + expect(data).not.toBeNull(); + + await data!.todo(); expect(normalizePostGraphqlCalls(getChildNotesSpy)).toMatchSnapshot(); }); @@ -2663,7 +2895,9 @@ describe('generateClient', () => { }, }); - await data.meta(); + expect(data).not.toBeNull(); + + await data!.meta(); expect(normalizePostGraphqlCalls(getChildMetaSpy)).toMatchSnapshot(); }); @@ -2704,7 +2938,9 @@ describe('generateClient', () => { }, }); - await data.notes({ authMode: 'lambda', authToken: 'some-token' }); + expect(data).not.toBeNull(); + + await data!.notes({ authMode: 'lambda', authToken: 'some-token' }); expect(normalizePostGraphqlCalls(getChildNotesSpy)).toMatchSnapshot(); }); @@ -2740,7 +2976,9 @@ describe('generateClient', () => { }, }); - await data.todo({ authMode: 'lambda', authToken: 'some-token' }); + expect(data).not.toBeNull(); + + await data!.todo({ authMode: 'lambda', authToken: 'some-token' }); expect(normalizePostGraphqlCalls(getChildNotesSpy)).toMatchSnapshot(); }); @@ -2775,7 +3013,9 @@ describe('generateClient', () => { }, }); - await data.meta({ authMode: 'lambda', authToken: 'some-token' }); + expect(data).not.toBeNull(); + + await data!.meta({ authMode: 'lambda', authToken: 'some-token' }); expect(normalizePostGraphqlCalls(getChildMetaSpy)).toMatchSnapshot(); }); @@ -5331,6 +5571,7 @@ describe('generateClient', () => { const mockReturnData = { sku: 'sku', factoryId: 'factoryId', + warehouseId: 'warehouseId', description: 'description', trackingMeta: { productMeta: { @@ -5357,10 +5598,9 @@ describe('generateClient', () => { }); expect(normalizePostGraphqlCalls(spy)).toMatchSnapshot(); - expect(result?.data).toEqual({ - ...mockReturnData, - warehouse: expect.any(Function), - }); + expect(result?.data).toMatchObject( + expect.objectContaining(mockReturnData), + ); }); test('can query with returnType of string', async () => { @@ -5436,7 +5676,7 @@ describe('generateClient', () => { updatedAt: '2024-02-21T21:30:29.826Z', }; - const likePostSpy = mockApiResponse({ + mockApiResponse({ data: { likePostReturnPost }, }); @@ -5465,6 +5705,8 @@ describe('generateClient', () => { }, }); + expect(result.data).not.toBeNull(); + const { data: comments } = await result.data!.comments(); expect(normalizePostGraphqlCalls(lazyLoadCommentsSpy)).toMatchSnapshot(); @@ -5601,7 +5843,7 @@ describe('generateClient', () => { someHeader: 'some header value', }, }); - const result = await client.queries.echo({ + await client.queries.echo({ argumentContent: 'echo argumentContent value', }); @@ -5620,7 +5862,7 @@ describe('generateClient', () => { const client = generateClient({ amplify: Amplify, }); - const result = await client.queries.echo( + await client.queries.echo( { argumentContent: 'echo argumentContent value', }, @@ -5648,7 +5890,7 @@ describe('generateClient', () => { authMode: 'lambda', authToken: 'my-auth-token', }); - const result = await client.queries.echo({ + await client.queries.echo({ argumentContent: 'echo argumentContent value', }); @@ -5667,7 +5909,7 @@ describe('generateClient', () => { const client = generateClient({ amplify: Amplify, }); - const result = await client.queries.echo( + await client.queries.echo( { argumentContent: 'echo argumentContent value', }, @@ -5710,7 +5952,7 @@ describe('generateClient', () => { }); test('graphql error handling', async () => { - const spy = mockApiResponse({ + mockApiResponse({ data: null, errors: [{ message: 'some graphql error' }], }); @@ -5745,7 +5987,7 @@ describe('generateClient', () => { // TODO: data should actually be null/undefined, pending discussion and fix. // This is not strictly related to custom ops. - expect(data).toEqual({}); + expect(data).toBeNull(); expect(errors).toEqual([{ message: 'Network error' }]); }); @@ -5755,7 +5997,7 @@ describe('generateClient', () => { // package up a lot of different errors types into `{ errors }` as possible. // But, a clear example where this doesn't occur is request cancellations. - const spy = mockApiResponse( + mockApiResponse( new Promise(resolve => { // slight delay to give us time to cancel the request. setTimeout( diff --git a/packages/api-graphql/__tests__/internals/implicit-auth-fields.test.ts b/packages/api-graphql/__tests__/internals/implicit-auth-fields.test.ts index 4802cf76042..91f487f4288 100644 --- a/packages/api-graphql/__tests__/internals/implicit-auth-fields.test.ts +++ b/packages/api-graphql/__tests__/internals/implicit-auth-fields.test.ts @@ -43,6 +43,11 @@ describe('implicit auth field handling', () => { }); const client = generateClient({ amplify: Amplify }); + + // TS can't see that all of these `.get()` methods align. + // We're ignoring the errors because the types are a little convoluted + // and they aren't the point of this test + // @ts-ignore const { data } = await client.models[modelName].get({ id: 'some-id' }); expectSelectionSetContains(spy, [authField]); @@ -67,6 +72,12 @@ describe('implicit auth field handling', () => { }); const client = generateClient({ amplify: Amplify }); + + // TS having a hard time seeing that all of these `.list()` methods align + // in the way we're using them here. + // We're ignoring the errors because the types are a little convoluted + // and they aren't the point of this test + // @ts-ignore const { data } = await client.models[modelName].list({ filter: { [authField]: { contains: 'something' } }, }); diff --git a/packages/api-graphql/__tests__/internals/server/__snapshots__/generateClientWithAmplifyInstance.test.ts.snap b/packages/api-graphql/__tests__/internals/server/__snapshots__/generateClientWithAmplifyInstance.test.ts.snap index c5364335a3c..12f142e7ae4 100644 --- a/packages/api-graphql/__tests__/internals/server/__snapshots__/generateClientWithAmplifyInstance.test.ts.snap +++ b/packages/api-graphql/__tests__/internals/server/__snapshots__/generateClientWithAmplifyInstance.test.ts.snap @@ -270,10 +270,10 @@ exports[`server generateClient with cookies with request can custom query 1`] = "authMode": undefined, "authToken": undefined, "query": " - query($argumentContent: String!) { - echo(argumentContent: $argumentContent) {resultContent} - } - ", + query($argumentContent: String!) { + echo(argumentContent: $argumentContent) {resultContent} + } + ", "variables": { "argumentContent": "echo argumentContent value", }, diff --git a/packages/api-graphql/__tests__/internals/utils/generateEnumsProperty.test.ts b/packages/api-graphql/__tests__/internals/utils/generateEnumsProperty.test.ts deleted file mode 100644 index ee948ed11f5..00000000000 --- a/packages/api-graphql/__tests__/internals/utils/generateEnumsProperty.test.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { GraphQLProviderConfig } from '@aws-amplify/core/internals/utils'; -import { generateEnumsProperty } from '../../../src/internals/utils/clientProperties/generateEnumsProperty'; - -describe('generateEnumsProperty()', () => { - it('returns an empty object when there is no valid `modelIntrospection`', () => { - const mockAPIGraphQLConfig: GraphQLProviderConfig['GraphQL'] = { - endpoint: 'endpoint', - defaultAuthMode: 'iam', - }; - const result = generateEnumsProperty(mockAPIGraphQLConfig); - - expect(Object.keys(result)).toHaveLength(0); - }); - - it('returns expected `enums` object', () => { - const mockAPIGraphQLConfig: GraphQLProviderConfig['GraphQL'] = { - endpoint: 'endpoint', - defaultAuthMode: 'iam', - modelIntrospection: { - version: 1, - models: {}, - nonModels: {}, - enums: { - TodoStatus: { - name: 'TodoStatus', - values: ['Planned', 'InProgress', 'Completed'], - }, - SomeEnum: { - name: 'SomeEnum', - values: ['value1', 'value2'], - }, - }, - }, - }; - - const result = generateEnumsProperty(mockAPIGraphQLConfig); - - expect(Object.keys(result)).toEqual(['TodoStatus', 'SomeEnum']); - expect((result as any).TodoStatus.values()).toEqual([ - 'Planned', - 'InProgress', - 'Completed', - ]); - expect((result as any).SomeEnum.values()).toEqual(['value1', 'value2']); - }); -}); diff --git a/packages/api-graphql/__tests__/resolveOwnerFields.test.ts b/packages/api-graphql/__tests__/resolveOwnerFields.test.ts deleted file mode 100644 index e43b5119983..00000000000 --- a/packages/api-graphql/__tests__/resolveOwnerFields.test.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { - ModelIntrospectionSchema, - SchemaModel, -} from '@aws-amplify/core/dist/esm/singleton/API/types'; -import { resolveOwnerFields } from '../src/utils/resolveOwnerFields'; -import configFixture from './fixtures/modeled/amplifyconfiguration'; - -describe('owner field resolution', () => { - const expectedResolutions = { - Todo: ['owner'], - Note: ['owner'], - TodoMetadata: ['owner'], - ThingWithCustomerOwnerField: ['customField'], - ThingWithOwnerFieldSpecifiedInModel: ['owner'], - ThingWithAPIKeyAuth: [], - ThingWithoutExplicitAuth: [], - ModelGroupDefinedIn: ['groupField'], - ModelGroupsDefinedIn: ['groupsField'], - ModelStaticGroup: [], - }; - - for (const [modelName, expected] of Object.entries(expectedResolutions)) { - it(`identifes ${JSON.stringify(expected)} for ${modelName}`, () => { - const modelIntroSchema = - configFixture.modelIntrospection as ModelIntrospectionSchema; - const model: SchemaModel = modelIntroSchema.models[modelName]; - - const resolvedField = resolveOwnerFields(model); - expect(resolvedField).toStrictEqual(expected); - }); - } -}); diff --git a/packages/api-graphql/__tests__/server/generateClient.test.ts b/packages/api-graphql/__tests__/server/generateClient.test.ts.bak similarity index 100% rename from packages/api-graphql/__tests__/server/generateClient.test.ts rename to packages/api-graphql/__tests__/server/generateClient.test.ts.bak diff --git a/packages/api-graphql/__tests__/utils/index.ts b/packages/api-graphql/__tests__/utils/index.ts index eed024a67fa..8a3da779ec2 100644 --- a/packages/api-graphql/__tests__/utils/index.ts +++ b/packages/api-graphql/__tests__/utils/index.ts @@ -33,7 +33,7 @@ export function normalizePostGraphqlCalls(spy: jest.SpyInstance) { const [_, postOptions] = call; const userAgent = postOptions?.options?.headers?.['x-amz-user-agent']; if (userAgent) { - const staticUserAgent = userAgent.replace(/\/[\d.]+/g, '/latest'); + const staticUserAgent = userAgent.replace(/\/[\w\d.+-]+/g, '/latest'); postOptions.options.headers['x-amz-user-agent'] = staticUserAgent; } // Calling of `post` API with an instance of `AmplifyClassV6` has been diff --git a/packages/api-graphql/package.json b/packages/api-graphql/package.json index 09a5723461f..b6915138055 100644 --- a/packages/api-graphql/package.json +++ b/packages/api-graphql/package.json @@ -1,6 +1,6 @@ { "name": "@aws-amplify/api-graphql", - "version": "4.0.28", + "version": "4.0.29", "description": "Api-graphql category of aws-amplify", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.mjs", @@ -72,7 +72,6 @@ }, "homepage": "https://aws-amplify.github.io/", "devDependencies": { - "@aws-amplify/data-schema": "^0.15.0", "@rollup/plugin-typescript": "11.1.5", "rollup": "^4.9.6", "typescript": "5.0.2" @@ -85,9 +84,9 @@ "server" ], "dependencies": { - "@aws-amplify/api-rest": "4.0.27", - "@aws-amplify/core": "6.0.27", - "@aws-amplify/data-schema-types": "^0.8.0", + "@aws-amplify/api-rest": "4.0.28", + "@aws-amplify/core": "6.0.28", + "@aws-amplify/data-schema": "^0.17.0", "@aws-sdk/types": "3.387.0", "graphql": "15.8.0", "rxjs": "^7.8.1", diff --git a/packages/api-graphql/src/GraphQLAPI.ts b/packages/api-graphql/src/GraphQLAPI.ts index 5de7f424443..6c161e878a3 100644 --- a/packages/api-graphql/src/GraphQLAPI.ts +++ b/packages/api-graphql/src/GraphQLAPI.ts @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 import { AmplifyClassV6 } from '@aws-amplify/core'; import { ApiAction, Category } from '@aws-amplify/core/internals/utils'; -import { CustomHeaders } from '@aws-amplify/data-schema-types'; +import { CustomHeaders } from '@aws-amplify/data-schema/runtime'; import { Observable } from 'rxjs'; import { GraphQLOptions, GraphQLResult } from './types'; diff --git a/packages/api-graphql/src/Providers/AWSAppSyncRealTimeProvider/index.ts b/packages/api-graphql/src/Providers/AWSAppSyncRealTimeProvider/index.ts index 9931662ef72..3abde3f469d 100644 --- a/packages/api-graphql/src/Providers/AWSAppSyncRealTimeProvider/index.ts +++ b/packages/api-graphql/src/Providers/AWSAppSyncRealTimeProvider/index.ts @@ -22,7 +22,10 @@ import { isNonRetryableError, jitteredExponentialRetry, } from '@aws-amplify/core/internals/utils'; -import { CustomHeaders, RequestOptions } from '@aws-amplify/data-schema-types'; +import { + CustomHeaders, + RequestOptions, +} from '@aws-amplify/data-schema/runtime'; import { CONTROL_MSG, diff --git a/packages/api-graphql/src/internals/APIClient.ts b/packages/api-graphql/src/internals/APIClient.ts deleted file mode 100644 index 748425831be..00000000000 --- a/packages/api-graphql/src/internals/APIClient.ts +++ /dev/null @@ -1,1076 +0,0 @@ -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 -import { - AssociationBelongsTo, - AssociationHasOne, - GraphQLAuthMode, - ModelFieldType, - ModelIntrospectionSchema, - NonModelFieldType, - SchemaModel, - SchemaNonModel, -} from '@aws-amplify/core/internals/utils'; -import { AmplifyServer } from '@aws-amplify/core/internals/adapter-core'; -import { CustomHeaders } from '@aws-amplify/data-schema-types'; - -import { - AuthModeParams, - ClientWithModels, - ListArgs, - QueryArgs, - V6Client, - __authMode, - __authToken, - __headers, -} from '../types'; -import { resolveOwnerFields } from '../utils/resolveOwnerFields'; - -import type { IndexMeta } from './operations/indexQuery'; - -interface LazyLoadOptions { - authMode?: GraphQLAuthMode; - authToken?: string | undefined; - limit?: number | undefined; - nextToken?: string | undefined | null; - headers?: CustomHeaders | undefined; -} - -const connectionType = { - HAS_ONE: 'HAS_ONE', - HAS_MANY: 'HAS_MANY', - BELONGS_TO: 'BELONGS_TO', -}; - -/** - * - * @param GraphQL response object - * @returns response object with `items` properties flattened - */ -export const flattenItems = (obj: Record): Record => { - const res: Record = {}; - - Object.entries(obj).forEach(([prop, value]) => { - if (typeof value === 'object' && !Array.isArray(value) && value !== null) { - if (value.items !== undefined) { - res[prop] = value.items.map((item: Record) => - flattenItems(item), - ); - - return; - } - res[prop] = flattenItems(value); - - return; - } - - res[prop] = value; - }); - - return res; -}; - -// TODO: this should accept single result to support CRUD methods; create helper for array/list -export function initializeModel( - client: ClientWithModels, - modelName: string, - result: any[], - modelIntrospection: ModelIntrospectionSchema, - authMode: GraphQLAuthMode | undefined, - authToken: string | undefined, - context = false, -): any[] { - const introModel = modelIntrospection.models[modelName]; - const introModelFields = introModel.fields; - - const modelFields: string[] = Object.entries(introModelFields) - .filter(([_, field]: [string, any]) => field?.type?.model !== undefined) - .map(([fieldName]) => fieldName); - - return result.map(record => { - const initializedRelationalFields: Record = {}; - - for (const fieldName of modelFields) { - const modelField = introModelFields[fieldName]; - const modelFieldType = modelField?.type as ModelFieldType; - - const relatedModelName = modelFieldType.model; - const relatedModel = modelIntrospection.models[relatedModelName!]; - - const relatedModelPKFieldName = - relatedModel.primaryKeyInfo.primaryKeyFieldName; - - const relatedModelSKFieldNames = - relatedModel.primaryKeyInfo.sortKeyFieldNames; - - const relationType = modelField.association?.connectionType; - - let connectionFields: string[] = []; - if ( - modelField.association && - 'associatedWith' in modelField.association - ) { - connectionFields = modelField.association.associatedWith; - } - - const targetNames: string[] = []; - if (modelField.association && 'targetNames' in modelField.association) { - targetNames.push(...modelField.association.targetNames); - } - - switch (relationType) { - case connectionType.HAS_ONE: - case connectionType.BELONGS_TO: { - const sortKeyValues = relatedModelSKFieldNames.reduce( - // TODO(Eslint): is this implementation correct? - // eslint-disable-next-line array-callback-return - (acc: Record, curVal) => { - if (record[curVal]) { - return (acc[curVal] = record[curVal]); - } - }, - {}, - ); - - if (context) { - initializedRelationalFields[fieldName] = ( - contextSpec: AmplifyServer.ContextSpec, - options?: LazyLoadOptions, - ) => { - if (record[targetNames[0]]) { - return (client as any).models[relatedModelName].get( - contextSpec, - { - [relatedModelPKFieldName]: record[targetNames[0]], - ...sortKeyValues, - }, - { - authMode: options?.authMode || authMode, - authToken: options?.authToken || authToken, - }, - ); - } - - return undefined; - }; - } else { - initializedRelationalFields[fieldName] = ( - options?: LazyLoadOptions, - ) => { - if (record[targetNames[0]]) { - return (client as any).models[relatedModelName].get( - { - [relatedModelPKFieldName]: record[targetNames[0]], - ...sortKeyValues, - }, - { - authMode: options?.authMode || authMode, - authToken: options?.authToken || authToken, - }, - ); - } - - return undefined; - }; - } - - break; - } - case connectionType.HAS_MANY: { - const parentPk = introModel.primaryKeyInfo.primaryKeyFieldName; - const parentSK = introModel.primaryKeyInfo.sortKeyFieldNames; - - // M:N check - TODO: refactor - const relatedModelField = relatedModel.fields[connectionFields[0]]; - const relatedModelFieldType = - relatedModelField.type as ModelFieldType; - if (relatedModelFieldType.model) { - let relatedTargetNames: string[] = []; - if ( - relatedModelField.association && - 'targetNames' in relatedModelField.association - ) { - relatedTargetNames = relatedModelField.association?.targetNames; - } - - const hasManyFilter: Record = relatedTargetNames.map( - (field, idx) => { - if (idx === 0) { - return { [field]: { eq: record[parentPk] } }; - } - - return { [field]: { eq: record[parentSK[idx - 1]] } }; - }, - ); - - if (context) { - initializedRelationalFields[fieldName] = ( - contextSpec: AmplifyServer.ContextSpec, - options?: LazyLoadOptions, - ) => { - if (record[parentPk]) { - return (client as any).models[relatedModelName].list( - contextSpec, - { - filter: { and: hasManyFilter }, - limit: options?.limit, - nextToken: options?.nextToken, - authMode: options?.authMode || authMode, - authToken: options?.authToken || authToken, - }, - ); - } - - return []; - }; - } else { - initializedRelationalFields[fieldName] = ( - options?: LazyLoadOptions, - ) => { - if (record[parentPk]) { - return (client as any).models[relatedModelName].list({ - filter: { and: hasManyFilter }, - limit: options?.limit, - nextToken: options?.nextToken, - authMode: options?.authMode || authMode, - authToken: options?.authToken || authToken, - }); - } - - return []; - }; - } - - break; - } - - const hasManyFilter: Record = connectionFields.map( - (field, idx) => { - if (idx === 0) { - return { [field]: { eq: record[parentPk] } }; - } - - return { [field]: { eq: record[parentSK[idx - 1]] } }; - }, - ); - - if (context) { - initializedRelationalFields[fieldName] = ( - contextSpec: AmplifyServer.ContextSpec, - options?: LazyLoadOptions, - ) => { - if (record[parentPk]) { - return (client as any).models[relatedModelName].list( - contextSpec, - { - filter: { and: hasManyFilter }, - limit: options?.limit, - nextToken: options?.nextToken, - authMode: options?.authMode || authMode, - authToken: options?.authToken || authToken, - }, - ); - } - - return []; - }; - } else { - initializedRelationalFields[fieldName] = ( - options?: LazyLoadOptions, - ) => { - if (record[parentPk]) { - return (client as any).models[relatedModelName].list({ - filter: { and: hasManyFilter }, - limit: options?.limit, - nextToken: options?.nextToken, - authMode: options?.authMode || authMode, - authToken: options?.authToken || authToken, - }); - } - - return []; - }; - } - - break; - } - default: - break; - } - } - - return { ...record, ...initializedRelationalFields }; - }); -} - -export const graphQLOperationsInfo = { - CREATE: { operationPrefix: 'create', usePlural: false }, - READ: { operationPrefix: 'get', usePlural: false }, - UPDATE: { operationPrefix: 'update', usePlural: false }, - DELETE: { operationPrefix: 'delete', usePlural: false }, - LIST: { operationPrefix: 'list', usePlural: true }, - INDEX_QUERY: { operationPrefix: '', usePlural: false }, - ONCREATE: { operationPrefix: 'onCreate', usePlural: false }, - ONUPDATE: { operationPrefix: 'onUpdate', usePlural: false }, - ONDELETE: { operationPrefix: 'onDelete', usePlural: false }, - OBSERVE_QUERY: { operationPrefix: 'observeQuery', usePlural: false }, -} as const; -export type ModelOperation = keyof typeof graphQLOperationsInfo; - -const SELECTION_SET_WILDCARD = '*'; - -export const getDefaultSelectionSetForNonModelWithIR = ( - nonModelDefinition: SchemaNonModel, - modelIntrospection: ModelIntrospectionSchema, -): Record => { - const { fields } = nonModelDefinition; - const mappedFields = Object.values(fields) - .map(({ type, name }) => { - if (typeof (type as { enum: string }).enum === 'string') { - return [name, FIELD_IR]; - } - - if (typeof (type as NonModelFieldType).nonModel === 'string') { - return [ - name, - getDefaultSelectionSetForNonModelWithIR( - modelIntrospection.nonModels[(type as NonModelFieldType).nonModel], - modelIntrospection, - ), - ]; - } - - if (typeof type === 'string') { - return [name, FIELD_IR]; - } - - return undefined; - }) - .filter( - ( - pair: (string | Record)[] | undefined, - ): pair is (string | Record)[] => pair !== undefined, - ); - - return Object.fromEntries(mappedFields); -}; - -const getDefaultSelectionSetForModelWithIR = ( - modelDefinition: SchemaModel, - modelIntrospection: ModelIntrospectionSchema, -): Record => { - const { fields } = modelDefinition; - const mappedFields = Object.values(fields) - .map(({ type, name }) => { - if ( - typeof (type as { enum: string }).enum === 'string' || - typeof type === 'string' - ) { - return [name, FIELD_IR]; - } - - if (typeof (type as NonModelFieldType).nonModel === 'string') { - return [ - name, - getDefaultSelectionSetForNonModelWithIR( - modelIntrospection.nonModels[(type as NonModelFieldType).nonModel], - modelIntrospection, - ), - ]; - } - - return undefined; - }) - .filter( - ( - pair: (string | Record)[] | undefined, - ): pair is (string | Record)[] => pair !== undefined, - ); - - const ownerFields = resolveOwnerFields(modelDefinition).map(field => [ - field, - FIELD_IR, - ]); - - return Object.fromEntries(mappedFields.concat(ownerFields)); -}; - -function defaultSelectionSetForModel(modelDefinition: SchemaModel): string[] { - // fields that are explicitly part of the graphql schema; not - // inferred from owner auth rules. - const { fields } = modelDefinition; - const explicitFields = Object.values(fields) - // Default selection set omits model fields - .map(({ type, name }) => { - if (typeof type === 'string') return name; - - if (typeof type === 'object') { - if (typeof type?.enum === 'string') { - return name; - } else if (typeof type?.nonModel === 'string') { - return `${name}.${SELECTION_SET_WILDCARD}`; - } - } - - return undefined; - }) - .filter(Boolean); - - // fields used for owner auth rules that may or may not also - // be explicit on the model. - const ownerFields = resolveOwnerFields(modelDefinition); - - return Array.from(new Set(explicitFields.concat(ownerFields))); -} - -const FIELD_IR = ''; - -/** - * Generates nested Custom Selection Set IR from path - * - * @param modelDefinitions - * @param modelName - * @param selectionSet - array of object paths - * @example - * ### Given - * `selectionSet = ['id', 'comments.post.id']` - * ### Returns - * ```ts - * { - * id: '', - * comments: { - * items: { post: { id: '' } } - * } - * } - * ``` - */ -export function customSelectionSetToIR( - modelIntrospection: ModelIntrospectionSchema, - modelName: string, - selectionSet: string[], -): Record { - const dotNotationToObject = (path: string, modelOrNonModelName: string) => { - const [fieldName, ...rest] = path.split('.'); - - const nested = rest[0]; - const modelOrNonModelDefinition = - modelIntrospection.models[modelOrNonModelName] ?? - modelIntrospection.nonModels[modelOrNonModelName]; - - const modelOrNonModelFields = modelOrNonModelDefinition?.fields; - const relatedModel = ( - modelOrNonModelFields?.[fieldName]?.type as ModelFieldType - )?.model; - - const relatedModelDefinition = modelIntrospection.models[relatedModel]; - const relatedNonModel = ( - modelOrNonModelFields?.[fieldName]?.type as NonModelFieldType - )?.nonModel; - const relatedNonModelDefinition = - modelIntrospection.nonModels[relatedNonModel]; - - const isModelOrNonModelOrFieldType = relatedModelDefinition - ? 'model' - : relatedNonModelDefinition - ? 'nonModel' - : 'field'; - - if (isModelOrNonModelOrFieldType === 'nonModel') { - let result: Record = {}; - - if (!nested) { - throw Error( - `${fieldName} must declare a wildcard (*) or a field of custom type ${relatedNonModel}`, - ); - } - - if (nested === SELECTION_SET_WILDCARD) { - result = { - [fieldName]: getDefaultSelectionSetForNonModelWithIR( - relatedNonModelDefinition, - modelIntrospection, - ), - }; - } else { - result = { - [fieldName]: dotNotationToObject(rest.join('.'), relatedNonModel), - }; - } - - return result; - } else if (isModelOrNonModelOrFieldType === 'model') { - let result: Record = {}; - - if (!nested) { - throw Error( - `${fieldName} must declare a wildcard (*) or a field of model ${relatedModel}`, - ); - } - - if (nested === SELECTION_SET_WILDCARD) { - const nestedRelatedModelDefinition = - modelIntrospection.models[relatedModel]; - - result = { - [fieldName]: getDefaultSelectionSetForModelWithIR( - nestedRelatedModelDefinition, - modelIntrospection, - ), - }; - } else { - result = { - [fieldName]: dotNotationToObject(rest.join('.'), relatedModel), - }; - } - - if (modelOrNonModelFields[fieldName]?.isArray) { - result = { - [fieldName]: { - items: result[fieldName], - }, - }; - } - - return result; - } else { - const modelField = modelOrNonModelFields?.[fieldName]; - - const nonModelDefinition = - modelIntrospection.nonModels[modelOrNonModelName]; - const nonModelField = nonModelDefinition?.fields?.[fieldName]; - - if (!nonModelDefinition) { - const isOwnerField = resolveOwnerFields( - modelOrNonModelDefinition, - ).includes(fieldName); - - if (!modelField && !isOwnerField) { - throw Error( - `${fieldName} is not a field of model ${modelOrNonModelName}`, - ); - } - } else { - if (!nonModelField) { - throw Error( - `${fieldName} is not a field of custom type ${modelOrNonModelName}`, - ); - } - } - - return { [fieldName]: FIELD_IR }; - } - }; - - return selectionSet.reduce( - (resultObj, path) => - deepMergeSelectionSetObjects( - dotNotationToObject(path, modelName), - resultObj, - ), - {} as Record, - ); -} - -/** - * Stringifies selection set IR - * * @example - * ### Given - * ```ts - * { - * id: '', - * comments: { - * items: { post: { id: '' } } - * } - * } - * ``` - * ### Returns - * `'id comments { items { post { id } } }'` - */ -export function selectionSetIRToString( - obj: Record, -): string { - const res: string[] = []; - - Object.entries(obj).forEach(([fieldName, value]) => { - if (value === FIELD_IR) { - res.push(fieldName); - } else if (typeof value === 'object' && value !== null) { - if (value?.items) { - res.push( - fieldName, - '{', - 'items', - '{', - selectionSetIRToString(value.items), - '}', - '}', - ); - } else { - res.push(fieldName, '{', selectionSetIRToString(value), '}'); - } - } - }); - - return res.join(' '); -} - -/** - * Recursively merges selection set objects from `source` onto `target`. - * - * `target` will be updated. `source` will be left alone. - * - * @param source The object to merge into target. - * @param target The object to be mutated. - */ -function deepMergeSelectionSetObjects>( - source: T, - target: T, -) { - const isObject = (obj: any) => obj && typeof obj === 'object'; - - for (const key in source) { - // This verification avoids 'Prototype Pollution' issue - if (!Object.prototype.hasOwnProperty.call(source, key)) continue; - - if ( - Object.prototype.hasOwnProperty.call(target, key) && - isObject(target[key]) - ) { - deepMergeSelectionSetObjects(source[key], target[key]); - } else { - target[key] = source[key]; - } - } - - return target; -} - -export function generateSelectionSet( - modelIntrospection: ModelIntrospectionSchema, - modelName: string, - selectionSet?: string[], -) { - const modelDefinition = modelIntrospection.models[modelName]; - - const selSetIr = customSelectionSetToIR( - modelIntrospection, - modelName, - selectionSet ?? defaultSelectionSetForModel(modelDefinition), - ); - const selSetString = selectionSetIRToString(selSetIr); - - return selSetString; -} - -export function generateGraphQLDocument( - modelIntrospection: ModelIntrospectionSchema, - modelName: string, - modelOperation: ModelOperation, - listArgs?: ListArgs | QueryArgs, - indexMeta?: IndexMeta, -): string { - const modelDefinition = modelIntrospection.models[modelName]; - - const { - name, - pluralName, - fields, - primaryKeyInfo: { - isCustomPrimaryKey, - primaryKeyFieldName, - sortKeyFieldNames, - }, - } = modelDefinition; - - const { operationPrefix, usePlural } = graphQLOperationsInfo[modelOperation]; - - const { selectionSet } = listArgs || {}; - - let graphQLFieldName; - let indexQueryArgs: Record; - - if (operationPrefix) { - graphQLFieldName = `${operationPrefix}${usePlural ? pluralName : name}`; - } else if (indexMeta) { - const { queryField, pk, sk = [] } = indexMeta; - graphQLFieldName = queryField; - - const skQueryArgs = sk.reduce((acc: Record, fieldName) => { - const fieldType = fields[fieldName].type; - acc[fieldName] = `Model${fieldType}KeyConditionInput`; - - return acc; - }, {}); - - indexQueryArgs = { - [pk]: `${fields[pk].type}!`, - ...skQueryArgs, - }; - } else { - throw new Error( - 'Error generating GraphQL Document - invalid operation name', - ); - } - - let graphQLOperationType: 'mutation' | 'query' | 'subscription' | undefined; - let graphQLSelectionSet: string | undefined; - let graphQLArguments: Record | undefined; - - const selectionSetFields = generateSelectionSet( - modelIntrospection, - modelName, - selectionSet as ListArgs['selectionSet'], - ); - - // default PK args for get and list operations - // modified below for CPK - const getPkArgs = { - [primaryKeyFieldName]: `${fields[primaryKeyFieldName].type}!`, - }; - const listPkArgs = {}; - - const generateSkArgs = (op: 'get' | 'list') => { - return sortKeyFieldNames.reduce( - (acc: Record, fieldName: string) => { - const fieldType = fields[fieldName].type; - - if (op === 'get') { - acc[fieldName] = `${fieldType}!`; - } else if (op === 'list') { - acc[fieldName] = `Model${fieldType}KeyConditionInput`; - } - - return acc; - }, - {}, - ); - }; - - if (isCustomPrimaryKey) { - Object.assign(getPkArgs, generateSkArgs('get')); - - Object.assign( - listPkArgs, - { - // PK is only included in list query field args in the generated GQL - // when explicitly specifying PK with .identifier(['fieldName']) or @primaryKey in the schema definition - [primaryKeyFieldName]: `${fields[primaryKeyFieldName].type}`, // PK is always a nullable arg for list (no `!` after the type) - sortDirection: 'ModelSortDirection', - }, - generateSkArgs('list'), - ); - } - - switch (modelOperation) { - case 'CREATE': - case 'UPDATE': - case 'DELETE': - graphQLArguments ?? - (graphQLArguments = { - input: `${ - operationPrefix.charAt(0).toLocaleUpperCase() + - operationPrefix.slice(1) - }${name}Input!`, - }); - graphQLOperationType ?? (graphQLOperationType = 'mutation'); - // TODO(Eslint): this this case clause correct without the break statement? - // eslint-disable-next-line no-fallthrough - case 'READ': - graphQLArguments ?? (graphQLArguments = getPkArgs); - graphQLSelectionSet ?? (graphQLSelectionSet = selectionSetFields); - // TODO(Eslint): this this case clause correct without the break statement? - // eslint-disable-next-line no-fallthrough - case 'LIST': - graphQLArguments ?? - (graphQLArguments = { - ...listPkArgs, - filter: `Model${name}FilterInput`, - limit: 'Int', - nextToken: 'String', - }); - graphQLOperationType ?? (graphQLOperationType = 'query'); - graphQLSelectionSet ?? - (graphQLSelectionSet = `items { ${selectionSetFields} } nextToken __typename`); - // TODO(Eslint): this this case clause correct without the break statement? - // eslint-disable-next-line no-fallthrough - case 'INDEX_QUERY': - graphQLArguments ?? - (graphQLArguments = { - ...indexQueryArgs!, - filter: `Model${name}FilterInput`, - sortDirection: 'ModelSortDirection', - limit: 'Int', - nextToken: 'String', - }); - graphQLOperationType ?? (graphQLOperationType = 'query'); - graphQLSelectionSet ?? - (graphQLSelectionSet = `items { ${selectionSetFields} } nextToken __typename`); - // TODO(Eslint): this this case clause correct without the break statement? - // eslint-disable-next-line no-fallthrough - case 'ONCREATE': - case 'ONUPDATE': - case 'ONDELETE': - graphQLArguments ?? - (graphQLArguments = { - filter: `ModelSubscription${name}FilterInput`, - }); - graphQLOperationType ?? (graphQLOperationType = 'subscription'); - graphQLSelectionSet ?? (graphQLSelectionSet = selectionSetFields); - break; - case 'OBSERVE_QUERY': - default: - throw new Error( - 'Internal error: Attempted to generate graphql document for observeQuery. Please report this error.', - ); - } - - const graphQLDocument = `${graphQLOperationType}${ - graphQLArguments - ? `(${Object.entries(graphQLArguments).map( - ([fieldName, type]) => `$${fieldName}: ${type}`, - )})` - : '' - } { ${graphQLFieldName}${ - graphQLArguments - ? `(${Object.keys(graphQLArguments).map( - fieldName => `${fieldName}: $${fieldName}`, - )})` - : '' - } { ${graphQLSelectionSet} } }`; - - return graphQLDocument; -} - -export function buildGraphQLVariables( - modelDefinition: SchemaModel, - operation: ModelOperation, - arg: QueryArgs | undefined, - modelIntrospection: ModelIntrospectionSchema, - indexMeta?: IndexMeta, -): object { - const { - fields, - primaryKeyInfo: { - isCustomPrimaryKey, - primaryKeyFieldName, - sortKeyFieldNames, - }, - } = modelDefinition; - - let variables: Record = {}; - - // TODO: process input - switch (operation) { - case 'CREATE': - variables = { - input: arg - ? normalizeMutationInput(arg, modelDefinition, modelIntrospection) - : {}, - }; - break; - case 'UPDATE': - // readonly fields are not updated - variables = { - input: arg - ? Object.fromEntries( - Object.entries( - normalizeMutationInput( - arg, - modelDefinition, - modelIntrospection, - ), - ).filter(([fieldName]) => { - const { isReadOnly } = fields[fieldName]; - - return !isReadOnly; - }), - ) - : {}, - }; - break; - case 'READ': - case 'DELETE': - // only identifiers are sent - if (arg) { - variables = isCustomPrimaryKey - ? [primaryKeyFieldName, ...sortKeyFieldNames].reduce( - (acc: Record, fieldName) => { - acc[fieldName] = arg[fieldName]; - - return acc; - }, - {}, - ) - : { [primaryKeyFieldName]: arg[primaryKeyFieldName] }; - } - - if (operation === 'DELETE') { - variables = { input: variables }; - } - break; - case 'LIST': - if (arg?.filter) { - variables.filter = arg.filter; - } - if (arg?.sortDirection) { - variables.sortDirection = arg.sortDirection; - variables[primaryKeyFieldName] = arg[primaryKeyFieldName]; - } - if (arg?.nextToken) { - variables.nextToken = arg.nextToken; - } - if (arg?.limit) { - variables.limit = arg.limit; - } - break; - case 'INDEX_QUERY': { - const { pk, sk = [] } = indexMeta!; - - variables[pk] = arg![pk]; - - for (const skField of sk) { - variables[skField] = arg![skField]; - } - - if (arg?.filter) { - variables.filter = arg.filter; - } - - if (arg?.sortDirection) { - variables.sortDirection = arg.sortDirection; - } - - if (arg?.nextToken) { - variables.nextToken = arg.nextToken; - } - if (arg?.limit) { - variables.limit = arg.limit; - } - break; - } - case 'ONCREATE': - case 'ONUPDATE': - case 'ONDELETE': - if (arg?.filter) { - variables = { filter: arg.filter }; - } - break; - case 'OBSERVE_QUERY': - throw new Error( - 'Internal error: Attempted to build variables for observeQuery. Please report this error.', - ); - break; - default: { - const exhaustiveCheck: never = operation; - throw new Error(`Unhandled operation case: ${exhaustiveCheck}`); - } - } - - return variables; -} - -/** - * Iterates over mutation input values and resolves any model inputs to their corresponding join fields/values - * - * @example - * ### Usage - * ```ts - * const result = normalizeMutationInput({ post: post }, model, modelDefinition); - * ``` - * ### Result - * ```ts - * { postId: "abc123" } - * ``` - * - */ -export function normalizeMutationInput( - mutationInput: QueryArgs, - model: SchemaModel, - modelIntrospection: ModelIntrospectionSchema, -): QueryArgs { - const { fields } = model; - - const normalized: Record = {}; - - Object.entries(mutationInput).forEach(([inputFieldName, inputValue]) => { - const fieldType = fields[inputFieldName]?.type as ModelFieldType; - const relatedModelName = fieldType?.model; - - if (relatedModelName) { - const association = fields[inputFieldName]?.association; - const relatedModelDef = modelIntrospection.models[relatedModelName]; - const relatedModelPkInfo = relatedModelDef.primaryKeyInfo; - - if (association?.connectionType === connectionType.HAS_ONE) { - const associationHasOne = association as AssociationHasOne; - associationHasOne.targetNames.forEach((targetName, idx) => { - const associatedFieldName = associationHasOne.associatedWith[idx]; - normalized[targetName] = (inputValue as Record)[ - associatedFieldName - ]; - }); - } - - if (association?.connectionType === connectionType.BELONGS_TO) { - const associationBelongsTo = association as AssociationBelongsTo; - associationBelongsTo.targetNames.forEach((targetName, idx) => { - if (idx === 0) { - const associatedFieldName = relatedModelPkInfo.primaryKeyFieldName; - normalized[targetName] = (inputValue as Record)[ - associatedFieldName - ]; - } else { - const associatedFieldName = - relatedModelPkInfo.sortKeyFieldNames[idx - 1]; - normalized[targetName] = (inputValue as Record)[ - associatedFieldName - ]; - } - }); - } - } else { - normalized[inputFieldName] = inputValue; - } - }); - - return normalized; -} - -/** - * Produces a parameter object that can contains auth mode/token overrides - * only if present in either `options` (first) or configured on the `client` - * as a fallback. - * - * @param client Configured client from `generateClient` - * @param options Args/Options object from call site. - * @returns - */ -export function authModeParams( - client: ClientWithModels, - options: AuthModeParams = {}, -): AuthModeParams { - return { - authMode: options.authMode || client[__authMode], - authToken: options.authToken || client[__authToken], - }; -} - -/** - * Retrieves custom headers from either the client or request options. - * @param client V6Client | V6ClientSSRRequest | V6ClientSSRCookies - for extracting client headers - * @param requestHeaders {@link CustomHeaders} - request headers - * @returns custom headers as {@link CustomHeaders} - */ -export function getCustomHeaders( - client: V6Client | ClientWithModels, - requestHeaders?: CustomHeaders, -): CustomHeaders { - let headers: CustomHeaders = client[__headers] || {}; - - // Individual request headers will take precedence over client headers. - // We intentionally do *not* merge client and request headers. - if (requestHeaders) { - headers = requestHeaders; - } - - return headers; -} diff --git a/packages/api-graphql/src/internals/InternalGraphQLAPI.ts b/packages/api-graphql/src/internals/InternalGraphQLAPI.ts index c0fff702918..75dfb2e0f4e 100644 --- a/packages/api-graphql/src/internals/InternalGraphQLAPI.ts +++ b/packages/api-graphql/src/internals/InternalGraphQLAPI.ts @@ -21,7 +21,10 @@ import { post, updateRequestToBeCancellable, } from '@aws-amplify/api-rest/internals'; -import { CustomHeaders, RequestOptions } from '@aws-amplify/data-schema-types'; +import { + CustomHeaders, + RequestOptions, +} from '@aws-amplify/data-schema/runtime'; import { AWSAppSyncRealTimeProvider } from '../Providers/AWSAppSyncRealTimeProvider'; import { GraphQLOperation, GraphQLOptions, GraphQLResult } from '../types'; diff --git a/packages/api-graphql/src/internals/clientUtils.ts b/packages/api-graphql/src/internals/clientUtils.ts deleted file mode 100644 index b3219a37ca0..00000000000 --- a/packages/api-graphql/src/internals/clientUtils.ts +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -import type { - ModelAttribute, - SchemaModel, - SecondaryIndexAttribute, -} from '@aws-amplify/core/internals/utils'; - -const attributeIsSecondaryIndex = ( - attr: ModelAttribute, -): attr is SecondaryIndexAttribute => { - return ( - attr.type === 'key' && - // presence of `name` property distinguishes GSI from primary index - attr.properties?.name && - attr.properties?.queryField && - attr.properties?.fields.length > 0 - ); -}; - -export const getSecondaryIndexesFromSchemaModel = (model: SchemaModel) => { - const idxs = model.attributes - ?.filter(attributeIsSecondaryIndex) - .map((attr: SecondaryIndexAttribute) => { - const queryField: string = attr.properties.queryField; - const [pk, ...sk] = attr.properties.fields; - - return { - queryField, - pk, - sk, - }; - }); - - return idxs || []; -}; diff --git a/packages/api-graphql/src/internals/generateClient.ts b/packages/api-graphql/src/internals/generateClient.ts index 736f6de94ae..2831753424b 100644 --- a/packages/api-graphql/src/internals/generateClient.ts +++ b/packages/api-graphql/src/internals/generateClient.ts @@ -7,7 +7,8 @@ import { CustomSubscriptions, EnumTypes, ModelTypes, -} from '@aws-amplify/data-schema-types'; + addSchemaToClient, +} from '@aws-amplify/data-schema/runtime'; import { V6Client, @@ -15,19 +16,13 @@ import { __authMode, __authToken, __headers, + getInternals, } from '../types'; -import { cancel, graphql, isCancelError } from './v6'; -import { generateEnumsProperty } from './utils/clientProperties/generateEnumsProperty'; -import { generateModelsProperty } from './utils/clientProperties/generateModelsProperty'; import { isApiGraphQLConfig } from './utils/runtimeTypeGuards/isApiGraphQLProviderConfig'; -import { - generateCustomMutationsProperty, - generateCustomQueriesProperty, - generateCustomSubscriptionsProperty, -} from './generateCustomOperationsProperty'; -import { ClientGenerationParams } from './types'; import { isConfigureEventWithResourceConfig } from './utils/runtimeTypeGuards/isConfigureEventWithResourceConfig'; +import { cancel, graphql, isCancelError } from './v6'; +import { ClientGenerationParams } from './types'; /** * @private @@ -59,17 +54,7 @@ export function generateClient = never>( const apiGraphqlConfig = params.amplify.getConfig().API?.GraphQL; if (isApiGraphQLConfig(apiGraphqlConfig)) { - client.models = generateModelsProperty(client, apiGraphqlConfig); - client.enums = generateEnumsProperty(apiGraphqlConfig); - client.queries = generateCustomQueriesProperty(client, apiGraphqlConfig); - client.mutations = generateCustomMutationsProperty( - client, - apiGraphqlConfig, - ); - client.subscriptions = generateCustomSubscriptionsProperty( - client, - apiGraphqlConfig, - ); + addSchemaToClient(client, apiGraphqlConfig, getInternals); } else { // This happens when the `Amplify.configure()` call gets evaluated after the `generateClient()` call. // @@ -86,7 +71,7 @@ export function generateClient = never>( generateModelsPropertyOnAmplifyConfigure(client); } - return client as V6Client; + return client as any; } const generateModelsPropertyOnAmplifyConfigure = (clientRef: any) => { @@ -98,20 +83,7 @@ const generateModelsPropertyOnAmplifyConfigure = (clientRef: any) => { const apiGraphQLConfig = coreEvent.payload.data.API?.GraphQL; if (isApiGraphQLConfig(apiGraphQLConfig)) { - clientRef.models = generateModelsProperty(clientRef, apiGraphQLConfig); - clientRef.enums = generateEnumsProperty(apiGraphQLConfig); - clientRef.queries = generateCustomQueriesProperty( - clientRef, - apiGraphQLConfig, - ); - clientRef.mutations = generateCustomMutationsProperty( - clientRef, - apiGraphQLConfig, - ); - clientRef.subscriptions = generateCustomSubscriptionsProperty( - clientRef, - apiGraphQLConfig, - ); + addSchemaToClient(clientRef, apiGraphQLConfig, getInternals); } }); }; diff --git a/packages/api-graphql/src/internals/generateCustomOperationsProperty.ts b/packages/api-graphql/src/internals/generateCustomOperationsProperty.ts deleted file mode 100644 index 95d1470a82f..00000000000 --- a/packages/api-graphql/src/internals/generateCustomOperationsProperty.ts +++ /dev/null @@ -1,112 +0,0 @@ -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 -import { - CustomMutations, - CustomQueries, - CustomSubscriptions, -} from '@aws-amplify/data-schema-types'; -import { - GraphQLProviderConfig, - ModelIntrospectionSchema, -} from '@aws-amplify/core/internals/utils'; - -import { V6Client, __amplify } from '../types'; - -import { customOpFactory } from './operations/custom'; - -type OpTypes = 'queries' | 'mutations' | 'subscriptions'; - -type CustomOpsProperty< - T extends Record, - OpType extends OpTypes, -> = OpType extends 'queries' - ? CustomQueries - : OpType extends 'mutations' - ? CustomMutations - : OpType extends 'subscriptions' - ? CustomSubscriptions - : never; - -const operationTypeMap = { - queries: 'query', - mutations: 'mutation', - subscriptions: 'subscription', -} as const; - -export function generateCustomOperationsProperty< - T extends Record, - OpType extends OpTypes, ->( - client: V6Client>, - config: GraphQLProviderConfig['GraphQL'], - operationsType: OpType, -): OpType extends 'queries' ? CustomQueries : CustomMutations { - // some bundlers end up with `Amplify.configure` being called *after* generate client. - // if that occurs, we need to *not error* while we wait. handling for late configuration - // occurs in `generateClient()`. we do not need to subscribe to Hub events here. - if (!config) { - return {} as CustomOpsProperty; - } - - const modelIntrospection: ModelIntrospectionSchema | undefined = - config.modelIntrospection; - - // model intro schema might be absent if there's not actually a configured GraphQL API - if (!modelIntrospection) { - return {} as CustomOpsProperty; - } - - // custom operations will be absent from model intro schema if no custom ops - // are present on the source schema. - const operations = modelIntrospection[operationsType]; - if (!operations) { - return {} as CustomOpsProperty; - } - - const ops = {} as CustomOpsProperty; - const useContext = client[__amplify] === null; - for (const operation of Object.values(operations)) { - (ops as any)[operation.name] = customOpFactory( - client, - modelIntrospection, - operationTypeMap[operationsType], - operation, - useContext, - ); - } - - return ops; -} - -export function generateCustomMutationsProperty>( - client: V6Client>, - config: GraphQLProviderConfig['GraphQL'], -) { - return generateCustomOperationsProperty( - client, - config, - 'mutations', - ); -} - -export function generateCustomQueriesProperty>( - client: V6Client>, - config: GraphQLProviderConfig['GraphQL'], -) { - return generateCustomOperationsProperty( - client, - config, - 'queries', - ); -} - -export function generateCustomSubscriptionsProperty>( - client: V6Client>, - config: GraphQLProviderConfig['GraphQL'], -) { - return generateCustomOperationsProperty( - client, - config, - 'subscriptions', - ); -} diff --git a/packages/api-graphql/src/internals/operations/custom.ts b/packages/api-graphql/src/internals/operations/custom.ts deleted file mode 100644 index 619cbefa7be..00000000000 --- a/packages/api-graphql/src/internals/operations/custom.ts +++ /dev/null @@ -1,492 +0,0 @@ -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 -import { AmplifyServer } from '@aws-amplify/core/internals/adapter-core'; -import { - CustomOperation, - ModelIntrospectionSchema, -} from '@aws-amplify/core/internals/utils'; -import { map } from 'rxjs'; - -import { - authModeParams, - flattenItems, - generateSelectionSet, - getCustomHeaders, - getDefaultSelectionSetForNonModelWithIR, - initializeModel, - selectionSetIRToString, -} from '../APIClient'; -import { - AuthModeParams, - ClientWithModels, - GraphQLResult, - GraphqlSubscriptionResult, - ListArgs, - QueryArgs, - V6Client, - V6ClientSSRRequest, -} from '../../types'; - -type CustomOperationOptions = AuthModeParams & ListArgs; - -// these are the 4 possible sets of arguments custom operations methods can receive -type OpArgs = - // SSR Request Client w Args defined - | [AmplifyServer.ContextSpec, QueryArgs, CustomOperationOptions] - // SSR Request Client without Args defined - | [AmplifyServer.ContextSpec, CustomOperationOptions] - // Client or SSR Cookies Client w Args defined - | [QueryArgs, CustomOperationOptions] - // Client or SSR Cookies Client without Args defined - | [CustomOperationOptions]; - -/** - * Type guard for checking whether a Custom Operation argument is a contextSpec object - */ -const argIsContextSpec = ( - arg: OpArgs[number], -): arg is AmplifyServer.ContextSpec => { - return typeof (arg as AmplifyServer.ContextSpec)?.token?.value === 'symbol'; -}; - -/** - * Builds an operation function, embedded with all client and context data, that - * can be attached to a client as a custom query or mutation. - * - * If we have this source schema: - * - * ```typescript - * a.schema({ - * echo: a.query() - * .arguments({input: a.string().required()}) - * .returns(a.string()) - * }) - * ``` - * - * Our model intro schema will contain an entry like this: - * - * ```ts - * { - * queries: { - * echo: { - * name: "echo", - * isArray: false, - * type: 'String', - * isRequired: false, - * arguments: { - * input: { - * name: 'input', - * isArray: false, - * type: String, - * isRequired: true - * } - * } - * } - * } - * } - * ``` - * - * The `echo` object is used to build the `echo' method that goes here: - * - * ```typescript - * const client = generateClent() - * const { data } = await client.queries.echo({input: 'a string'}); - * // ^ - * // | - * // +-- This one right here. - * // - * ``` - * - * - * @param client The client to run graphql queries through. - * @param modelIntrospection The model introspection schema the op comes from. - * @param operationType The broad category of graphql operation. - * @param operation The operation definition from the introspection schema. - * @param useContext Whether the function needs to accept an SSR context. - * @returns The operation function to attach to query, mutations, etc. - */ -export function customOpFactory( - client: ClientWithModels, - modelIntrospection: ModelIntrospectionSchema, - operationType: 'query' | 'mutation' | 'subscription', - operation: CustomOperation, - useContext: boolean, -) { - // .arguments() are defined for the custom operation in the schema builder - // and are present in the model introspection schema - const argsDefined = operation.arguments !== undefined; - - const op = (...args: OpArgs) => { - // options is always the last argument - const options = args[args.length - 1] as CustomOperationOptions; - - let contextSpec: AmplifyServer.ContextSpec | undefined; - let arg: QueryArgs | undefined; - - if (useContext) { - if (argIsContextSpec(args[0])) { - contextSpec = args[0]; - } else { - throw new Error( - `Invalid first argument passed to ${operation.name}. Expected contextSpec`, - ); - } - } - - if (argsDefined) { - if (useContext) { - arg = args[1] as QueryArgs; - } else { - arg = args[0] as QueryArgs; - } - } - - if (operationType === 'subscription') { - return _opSubscription( - // subscriptions are only enabled on the clientside - client as V6Client>, - modelIntrospection, - operation, - arg, - options, - ); - } - - return _op( - client, - modelIntrospection, - operationType, - operation, - arg, - options, - contextSpec, - ); - }; - - return op; -} - -/** - * Runtime test and type guard to check whether `o[field]` is a `String`. - * - * ```typescript - * if (hasStringField(o, 'prop')) { - * const s = o.prop; - * // ^? const s: string - * } - * ``` - * - * @param o Object to inspect - * @param field Field to look for - * @returns Boolean: `true` if the `o[field]` is a `string` - */ -function hasStringField( - o: any, - field: Field, -): o is Record { - return typeof o[field] === 'string'; -} - -/** - * Generates "outer" arguments string for a custom operation. For example, - * in this operation: - * - * ```graphql - * query MyQuery(InputString: String!) { - * echoString(InputString: $InputString) - * } - * ``` - * - * This function returns the top/outer level arguments as a string: - * - * ```json - * "InputString: String!" - * ``` - * - * @param operation Operation object from model introspection schema. - * @returns "outer" arguments string - */ -function outerArguments(operation: CustomOperation): string { - if (operation.arguments === undefined) { - return ''; - } - const args = Object.entries(operation.arguments) - .map(([k, v]) => { - const baseType = v.type + (v.isRequired ? '!' : ''); - const finalType = v.isArray - ? `[${baseType}]${v.isArrayNullable ? '' : '!'}` - : baseType; - - return `$${k}: ${finalType}`; - }) - .join(', '); - - return args.length > 0 ? `(${args})` : ''; -} - -/** - * Generates "inner" arguments string for a custom operation. For example, - * in this operation: - * - * ```graphql - * query MyQuery(InputString: String!) { - * echoString(InputString: $InputString) - * } - * ``` - * - * This function returns the inner arguments as a string: - * - * ```json - * "InputString: $InputString" - * ``` - * - * @param operation Operation object from model introspection schema. - * @returns "outer" arguments string - */ -function innerArguments(operation: CustomOperation): string { - if (operation.arguments === undefined) { - return ''; - } - const args = Object.keys(operation.arguments) - .map(k => `${k}: $${k}`) - .join(', '); - - return args.length > 0 ? `(${args})` : ''; -} - -/** - * Generates the selection set string for a custom operation. This is slightly - * different than the selection set generation for models. If the custom op returns - * a primitive or enum types, it doen't require a selection set at all. - * - * E.g., the graphql might look like this: - * - * ```graphql - * query MyQuery { - * echoString(inputString: "whatever") - * } - * # ^ - * # | - * # +-- no selection set - * ``` - * - * Non-primitive return type selection set generation will be similar to other - * model operations. - * - * @param modelIntrospection The full code-generated introspection schema. - * @param operation The operation object from the schema. - * @returns The selection set as a string. - */ -function operationSelectionSet( - modelIntrospection: ModelIntrospectionSchema, - operation: CustomOperation, -): string { - if ( - hasStringField(operation, 'type') || - hasStringField(operation.type, 'enum') - ) { - return ''; - } else if (hasStringField(operation.type, 'nonModel')) { - const nonModel = modelIntrospection.nonModels[operation.type.nonModel]; - - return `{${selectionSetIRToString( - getDefaultSelectionSetForNonModelWithIR(nonModel, modelIntrospection), - )}}`; - } else if (hasStringField(operation.type, 'model')) { - return `{${generateSelectionSet(modelIntrospection, operation.type.model)}}`; - } else { - return ''; - } -} - -/** - * Maps an arguments objec to graphql variables, removing superfluous args and - * screaming loudly when required args are missing. - * - * @param operation The operation to construct graphql request variables for. - * @param args The arguments to map variables from. - * @returns The graphql variables object. - */ -function operationVariables( - operation: CustomOperation, - args: QueryArgs = {}, -): Record { - const variables = {} as Record; - if (operation.arguments === undefined) { - return variables; - } - for (const argDef of Object.values(operation.arguments)) { - if (typeof args[argDef.name] !== 'undefined') { - variables[argDef.name] = args[argDef.name]; - } else if (argDef.isRequired) { - // At this point, the variable is both required and missing: We don't need - // to continue. The operation is expected to fail. - throw new Error(`${operation.name} requires arguments '${argDef.name}'`); - } - } - - return variables; -} - -/** - * Executes an operation from the given model intro schema against a client, returning - * a fully instantiated model when relevant. - * - * @param client The client to operate `graphql()` calls through. - * @param modelIntrospection The model intro schema to construct requests from. - * @param operationType The high level graphql operation type. - * @param operation The specific operation name, args, return type details. - * @param args The arguments to provide to the operation as variables. - * @param options Request options like headers, etc. - * @param context SSR context if relevant. - * @returns Result from the graphql request, model-instantiated when relevant. - */ -async function _op( - client: ClientWithModels, - modelIntrospection: ModelIntrospectionSchema, - operationType: 'query' | 'mutation', - operation: CustomOperation, - args?: QueryArgs, - options?: AuthModeParams & ListArgs, - context?: AmplifyServer.ContextSpec, -) { - const { name: operationName } = operation; - const auth = authModeParams(client, options); - const headers = getCustomHeaders(client, options?.headers); - const outerArgsString = outerArguments(operation); - const innerArgsString = innerArguments(operation); - const selectionSet = operationSelectionSet(modelIntrospection, operation); - - const returnTypeModelName = hasStringField(operation.type, 'model') - ? operation.type.model - : undefined; - - const query = ` - ${operationType.toLocaleLowerCase()}${outerArgsString} { - ${operationName}${innerArgsString} ${selectionSet} - } - `; - - const variables = operationVariables(operation, args); - - try { - const { data, extensions } = context - ? ((await (client as V6ClientSSRRequest>).graphql( - context, - { - ...auth, - query, - variables, - }, - headers, - )) as GraphQLResult) - : ((await (client as V6Client>).graphql( - { - ...auth, - query, - variables, - }, - headers, - )) as GraphQLResult); - - // flatten response - if (data) { - const [key] = Object.keys(data); - const flattenedResult = flattenItems(data)[key]; - - // TODO: custom selection set. current selection set is default selection set only - // custom selection set requires data-schema-type + runtime updates above. - const [initialized] = returnTypeModelName - ? initializeModel( - client, - returnTypeModelName, - [flattenedResult], - modelIntrospection, - auth.authMode, - auth.authToken, - !!context, - ) - : [flattenedResult]; - - return { data: initialized, extensions }; - } else { - return { data: null, extensions }; - } - } catch (error: any) { - if (error.errors) { - // graphql errors pass through - return error as any; - } else { - // non-graphql errors re re-thrown - throw error; - } - } -} - -/** - * Executes an operation from the given model intro schema against a client, returning - * a fully instantiated model when relevant. - * - * @param client The client to operate `graphql()` calls through. - * @param modelIntrospection The model intro schema to construct requests from. - * @param operation The specific operation name, args, return type details. - * @param args The arguments to provide to the operation as variables. - * @param options Request options like headers, etc. - * @returns Result from the graphql request, model-instantiated when relevant. - */ -function _opSubscription( - client: V6Client>, - modelIntrospection: ModelIntrospectionSchema, - operation: CustomOperation, - args?: QueryArgs, - options?: AuthModeParams & ListArgs, -) { - const operationType = 'subscription'; - const { name: operationName } = operation; - const auth = authModeParams(client, options); - const headers = getCustomHeaders(client, options?.headers); - const outerArgsString = outerArguments(operation); - const innerArgsString = innerArguments(operation); - const selectionSet = operationSelectionSet(modelIntrospection, operation); - - const returnTypeModelName = hasStringField(operation.type, 'model') - ? operation.type.model - : undefined; - - const query = ` - ${operationType.toLocaleLowerCase()}${outerArgsString} { - ${operationName}${innerArgsString} ${selectionSet} - } - `; - - const variables = operationVariables(operation, args); - - const observable = client.graphql( - { - ...auth, - query, - variables, - }, - headers, - ) as GraphqlSubscriptionResult; - - return observable.pipe( - map(value => { - const [key] = Object.keys(value.data); - const data = (value.data as any)[key]; - - const [initialized] = returnTypeModelName - ? initializeModel( - client as V6Client>, - returnTypeModelName, - [data], - modelIntrospection, - auth.authMode, - auth.authToken, - ) - : [data]; - - return initialized; - }), - ); -} diff --git a/packages/api-graphql/src/internals/operations/get.ts b/packages/api-graphql/src/internals/operations/get.ts deleted file mode 100644 index d283f934cbe..00000000000 --- a/packages/api-graphql/src/internals/operations/get.ts +++ /dev/null @@ -1,140 +0,0 @@ -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 -import { AmplifyServer } from '@aws-amplify/core/internals/adapter-core'; -import { - ModelIntrospectionSchema, - SchemaModel, -} from '@aws-amplify/core/internals/utils'; - -import { - ModelOperation, - authModeParams, - buildGraphQLVariables, - flattenItems, - generateGraphQLDocument, - getCustomHeaders, - initializeModel, -} from '../APIClient'; -import { - AuthModeParams, - ClientWithModels, - GraphQLOptionsV6, - GraphQLResult, - ListArgs, - QueryArgs, - V6Client, - V6ClientSSRRequest, -} from '../../types'; - -export function getFactory( - client: ClientWithModels, - modelIntrospection: ModelIntrospectionSchema, - model: SchemaModel, - operation: ModelOperation, - useContext = false, -) { - const getWithContext = async ( - contextSpec: AmplifyServer.ContextSpec & GraphQLOptionsV6, - arg?: any, - options?: any, - ) => { - return _get( - client, - modelIntrospection, - model, - arg, - options, - operation, - contextSpec, - ); - }; - - const get = async (arg?: any, options?: any) => { - return _get(client, modelIntrospection, model, arg, options, operation); - }; - - return useContext ? getWithContext : get; -} - -async function _get( - client: ClientWithModels, - modelIntrospection: ModelIntrospectionSchema, - model: SchemaModel, - arg: QueryArgs, - options: AuthModeParams & ListArgs, - operation: ModelOperation, - context?: AmplifyServer.ContextSpec, -) { - const { name } = model; - - const query = generateGraphQLDocument( - modelIntrospection, - name, - operation, - options, - ); - const variables = buildGraphQLVariables( - model, - operation, - arg, - modelIntrospection, - ); - - try { - const auth = authModeParams(client, options); - - const headers = getCustomHeaders(client, options?.headers); - - const { data, extensions } = context - ? ((await (client as V6ClientSSRRequest>).graphql( - context, - { - ...auth, - query, - variables, - }, - headers, - )) as GraphQLResult) - : ((await (client as V6Client>).graphql( - { - ...auth, - query, - variables, - }, - headers, - )) as GraphQLResult); - - // flatten response - if (data) { - const [key] = Object.keys(data); - const flattenedResult = flattenItems(data)[key]; - - if (options?.selectionSet) { - return { data: flattenedResult, extensions }; - } else { - // TODO: refactor to avoid destructuring here - const [initialized] = initializeModel( - client, - name, - [flattenedResult], - modelIntrospection, - auth.authMode, - auth.authToken, - !!context, - ); - - return { data: initialized, extensions }; - } - } else { - return { data: null, extensions }; - } - } catch (error: any) { - if (error.errors) { - // graphql errors pass through - return error as any; - } else { - // non-graphql errors re re-thrown - throw error; - } - } -} diff --git a/packages/api-graphql/src/internals/operations/indexQuery.ts b/packages/api-graphql/src/internals/operations/indexQuery.ts deleted file mode 100644 index caccb880f0f..00000000000 --- a/packages/api-graphql/src/internals/operations/indexQuery.ts +++ /dev/null @@ -1,170 +0,0 @@ -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 -import { AmplifyServer } from '@aws-amplify/core/internals/adapter-core'; -import { - ModelIntrospectionSchema, - SchemaModel, -} from '@aws-amplify/core/internals/utils'; - -import { - authModeParams, - buildGraphQLVariables, - flattenItems, - generateGraphQLDocument, - getCustomHeaders, - initializeModel, -} from '../APIClient'; -import { - AuthModeParams, - ClientWithModels, - GraphQLResult, - ListArgs, - QueryArgs, - V6ClientSSRRequest, -} from '../../types'; - -export interface IndexMeta { - queryField: string; - pk: string; - sk?: string[]; -} - -export function indexQueryFactory( - client: ClientWithModels, - modelIntrospection: ModelIntrospectionSchema, - model: SchemaModel, - indexMeta: IndexMeta, - context = false, -) { - const indexQueryWithContext = async ( - contextSpec: AmplifyServer.ContextSpec, - args: QueryArgs, - options?: ListArgs, - ) => { - return _indexQuery( - client, - modelIntrospection, - model, - indexMeta, - { - ...args, - ...options, - }, - contextSpec, - ); - }; - - const indexQuery = async (args: QueryArgs, options?: ListArgs) => { - return _indexQuery(client, modelIntrospection, model, indexMeta, { - ...args, - ...options, - }); - }; - - return context ? indexQueryWithContext : indexQuery; -} - -function processGraphQlResponse( - result: GraphQLResult, - selectionSet: undefined | string[], - modelInitializer: (flattenedResult: any[]) => any[], -) { - const { data, extensions } = result; - - const [key] = Object.keys(data); - - if (data[key].items) { - const flattenedResult = flattenItems(data)[key]; - - return { - data: selectionSet ? flattenedResult : modelInitializer(flattenedResult), - nextToken: data[key].nextToken, - extensions, - }; - } - - return { - data: data[key], - nextToken: data[key].nextToken, - extensions, - }; -} - -function handleGraphQlError(error: any) { - if (error.errors) { - // graphql errors pass through - return error as any; - } else { - // non-graphql errors re re-thrown - throw error; - } -} - -async function _indexQuery( - client: ClientWithModels, - modelIntrospection: ModelIntrospectionSchema, - model: SchemaModel, - indexMeta: IndexMeta, - args?: ListArgs & AuthModeParams, - contextSpec?: AmplifyServer.ContextSpec, -) { - const { name } = model; - - const query = generateGraphQLDocument( - modelIntrospection, - name, - 'INDEX_QUERY', - args, - indexMeta, - ); - const variables = buildGraphQLVariables( - model, - 'INDEX_QUERY', - args, - modelIntrospection, - indexMeta, - ); - - const auth = authModeParams(client, args); - - const modelInitializer = (flattenedResult: any[]) => - initializeModel( - client, - name, - flattenedResult, - modelIntrospection, - auth.authMode, - auth.authToken, - !!contextSpec, - ); - - try { - const headers = getCustomHeaders(client, args?.headers); - - const graphQlParams = { - ...auth, - query, - variables, - }; - - const requestArgs: [any, any] = [graphQlParams, headers]; - - if (contextSpec !== undefined) { - requestArgs.unshift(contextSpec); - } - - const response = (await ( - client as V6ClientSSRRequest> - ).graphql(...requestArgs)) as GraphQLResult; - - if (response.data !== undefined) { - return processGraphQlResponse( - response, - args?.selectionSet, - modelInitializer, - ); - } - } catch (error: any) { - return handleGraphQlError(error); - } -} diff --git a/packages/api-graphql/src/internals/operations/list.ts b/packages/api-graphql/src/internals/operations/list.ts deleted file mode 100644 index b26153b8755..00000000000 --- a/packages/api-graphql/src/internals/operations/list.ts +++ /dev/null @@ -1,135 +0,0 @@ -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 -import { AmplifyServer } from '@aws-amplify/core/internals/adapter-core'; -import { - ModelIntrospectionSchema, - SchemaModel, -} from '@aws-amplify/core/internals/utils'; - -import { - authModeParams, - buildGraphQLVariables, - flattenItems, - generateGraphQLDocument, - getCustomHeaders, - initializeModel, -} from '../APIClient'; -import { - AuthModeParams, - ClientWithModels, - GraphQLResult, - ListArgs, - V6Client, - V6ClientSSRRequest, -} from '../../types'; - -export function listFactory( - client: ClientWithModels, - modelIntrospection: ModelIntrospectionSchema, - model: SchemaModel, - context = false, -) { - const listWithContext = async ( - contextSpec: AmplifyServer.ContextSpec, - args?: ListArgs, - ) => { - return _list(client, modelIntrospection, model, args, contextSpec); - }; - - const list = async (args?: any) => { - return _list(client, modelIntrospection, model, args); - }; - - return context ? listWithContext : list; -} - -async function _list( - client: ClientWithModels, - modelIntrospection: ModelIntrospectionSchema, - model: SchemaModel, - args?: ListArgs & AuthModeParams, - contextSpec?: AmplifyServer.ContextSpec, -) { - const { name } = model; - - const query = generateGraphQLDocument(modelIntrospection, name, 'LIST', args); - const variables = buildGraphQLVariables( - model, - 'LIST', - args, - modelIntrospection, - ); - - try { - const auth = authModeParams(client, args); - - const headers = getCustomHeaders(client, args?.headers); - - const { data, extensions } = contextSpec - ? ((await (client as V6ClientSSRRequest>).graphql( - contextSpec, - { - ...auth, - query, - variables, - }, - headers, - )) as GraphQLResult) - : ((await (client as V6Client>).graphql( - { - ...auth, - query, - variables, - }, - headers, - )) as GraphQLResult); - - // flatten response - if (data !== undefined) { - const [key] = Object.keys(data); - - if (data[key].items) { - const flattenedResult = flattenItems(data)[key]; - - // don't init if custom selection set - if (args?.selectionSet) { - return { - data: flattenedResult, - nextToken: data[key].nextToken, - extensions, - }; - } else { - const initialized = initializeModel( - client, - name, - flattenedResult, - modelIntrospection, - auth.authMode, - auth.authToken, - !!contextSpec, - ); - - return { - data: initialized, - nextToken: data[key].nextToken, - extensions, - }; - } - } - - return { - data: data[key], - nextToken: data[key].nextToken, - extensions, - }; - } - } catch (error: any) { - if (error.errors) { - // graphql errors pass through - return error as any; - } else { - // non-graphql errors re re-thrown - throw error; - } - } -} diff --git a/packages/api-graphql/src/internals/operations/observeQuery.ts b/packages/api-graphql/src/internals/operations/observeQuery.ts deleted file mode 100644 index 1a06b277f47..00000000000 --- a/packages/api-graphql/src/internals/operations/observeQuery.ts +++ /dev/null @@ -1,146 +0,0 @@ -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 -import { Observable } from 'rxjs'; -import { SchemaModel } from '@aws-amplify/core/internals/utils'; - -import { findIndexByFields, resolvePKFields } from '../../utils'; - -export function observeQueryFactory(models: any, model: SchemaModel) { - const { name } = model; - - const observeQuery = (arg?: any) => - new Observable(subscriber => { - // what we'll be sending to our subscribers - const items: object[] = []; - - // To enqueue subscription messages while we collect our initial - // result set. - const messageQueue = [] as { - type: 'create' | 'update' | 'delete'; - item: object; - }[]; - - // operation to take when message(s) arrive. - // this operation will be swapped out once initial "sync" is complete - // to immediately ingest messsages. - let receiveMessages = (...messages: typeof messageQueue) => { - return messageQueue.push(...messages); - }; - - // start subscriptions - const onCreateSub = models[name].onCreate(arg).subscribe({ - next(item: object) { - receiveMessages({ item, type: 'create' }); - }, - error(error: any) { - subscriber.error({ type: 'onCreate', error }); - }, - }); - const onUpdateSub = models[name].onUpdate(arg).subscribe({ - next(item: object) { - receiveMessages({ item, type: 'update' }); - }, - error(error: any) { - subscriber.error({ type: 'onUpdate', error }); - }, - }); - const onDeleteSub = models[name].onDelete(arg).subscribe({ - next(item: object) { - receiveMessages({ item, type: 'delete' }); - }, - error(error: any) { - subscriber.error({ type: 'onDelete', error }); - }, - }); - - // consumes a list of messages and sends a snapshot - function ingestMessages(messages: typeof messageQueue) { - for (const message of messages) { - const idx = findIndexByFields(message.item, items, pkFields as any); - switch (message.type) { - case 'create': - if (idx < 0) items.push(message.item); - break; - case 'update': - if (idx >= 0) items[idx] = message.item; - break; - case 'delete': - if (idx >= 0) items.splice(idx, 1); - break; - default: - console.error('Unrecognized message in observeQuery.', message); - } - } - subscriber.next({ - items, - isSynced: true, - }); - } - - const pkFields = resolvePKFields(model); - - // initial results - (async () => { - let firstPage = true; - let nextToken: string | null = null; - while (!subscriber.closed && (firstPage || nextToken)) { - firstPage = false; - - const { - data: page, - errors, - nextToken: _nextToken, - }: { - data: any; - errors: any; - nextToken: string | null; - } = await models[name].list({ ...arg, nextToken }); - nextToken = _nextToken; - - items.push(...page); - - // if there are no more pages and no items we already know about - // that need to be merged in from sub, we're "synced" - const isSynced = - messageQueue.length === 0 && - (nextToken === null || nextToken === undefined); - - subscriber.next({ - items, - isSynced, - }); - - if (Array.isArray(errors)) { - for (const error of errors) { - subscriber.error(error); - } - } - } - - // play through the queue - if (messageQueue.length > 0) { - ingestMessages(messageQueue); - } - - // switch the queue to write directly to the items collection - receiveMessages = (...messages: typeof messageQueue) => { - ingestMessages(messages); - - return items.length; - }; - })(); - - // when subscriber unsubscribes, tear down internal subs - return () => { - // 1. tear down internal subs - onCreateSub.unsubscribe(); - onUpdateSub.unsubscribe(); - onDeleteSub.unsubscribe(); - - // 2. there is no need to explicitly stop paging. instead, we - // just check `subscriber.closed` above before fetching each page. - }; - }); - - return observeQuery; -} diff --git a/packages/api-graphql/src/internals/operations/subscription.ts b/packages/api-graphql/src/internals/operations/subscription.ts deleted file mode 100644 index e9f8ffdf3f7..00000000000 --- a/packages/api-graphql/src/internals/operations/subscription.ts +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -import { map } from 'rxjs'; -import { - ModelIntrospectionSchema, - SchemaModel, -} from '@aws-amplify/core/internals/utils'; - -import { GraphqlSubscriptionResult, V6Client } from '../../types'; -import { - ModelOperation, - authModeParams, - buildGraphQLVariables, - generateGraphQLDocument, - getCustomHeaders, - initializeModel, -} from '../APIClient'; - -export function subscriptionFactory( - client: any, - modelIntrospection: ModelIntrospectionSchema, - model: SchemaModel, - operation: ModelOperation, -) { - const { name } = model as any; - - const subscription = (args?: any) => { - const query = generateGraphQLDocument( - modelIntrospection, - name, - operation, - args, - ); - - const variables = buildGraphQLVariables( - model, - operation, - args, - modelIntrospection, - ); - - const auth = authModeParams(client, args); - - const headers = getCustomHeaders(client, args?.headers); - - const observable = client.graphql( - { - ...auth, - query, - variables, - }, - headers, - ) as GraphqlSubscriptionResult; - - return observable.pipe( - map(value => { - const [key] = Object.keys(value.data); - const data = (value.data as any)[key]; - const [initialized] = initializeModel( - client as V6Client>, - name, - [data], - modelIntrospection, - auth.authMode, - auth.authToken, - ); - - return initialized; - }), - ); - }; - - return subscription; -} diff --git a/packages/api-graphql/src/internals/server/generateClientWithAmplifyInstance.ts b/packages/api-graphql/src/internals/server/generateClientWithAmplifyInstance.ts index bc8ce97f13b..8a9927d543c 100644 --- a/packages/api-graphql/src/internals/server/generateClientWithAmplifyInstance.ts +++ b/packages/api-graphql/src/internals/server/generateClientWithAmplifyInstance.ts @@ -1,7 +1,8 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -import { cancel, graphql, isCancelError } from '..'; +import { addSchemaToClientWithInstance } from '@aws-amplify/data-schema/runtime'; + import { CommonPublicClientOptions, ServerClientGenerationParams, @@ -11,15 +12,10 @@ import { __authMode, __authToken, __headers, + getInternals, } from '../../types'; import { isApiGraphQLConfig } from '../utils/runtimeTypeGuards/isApiGraphQLProviderConfig'; -import { generateEnumsProperty } from '../utils/clientProperties/generateEnumsProperty'; -import { - generateCustomMutationsProperty, - generateCustomQueriesProperty, -} from '../generateCustomOperationsProperty'; - -import { generateModelsProperty } from './generateModelsProperty'; +import { cancel, graphql, isCancelError } from '..'; /** * @private @@ -53,14 +49,8 @@ export function generateClientWithAmplifyInstance< const apiGraphqlConfig = params.config?.API?.GraphQL; if (isApiGraphQLConfig(apiGraphqlConfig)) { - client.models = generateModelsProperty(client, params); - client.enums = generateEnumsProperty(apiGraphqlConfig); - client.queries = generateCustomQueriesProperty(client, apiGraphqlConfig); - client.mutations = generateCustomMutationsProperty( - client, - apiGraphqlConfig, - ); + addSchemaToClientWithInstance(client, params, getInternals); } - return client as ClientType; + return client as any; } diff --git a/packages/api-graphql/src/internals/server/generateModelsProperty.ts b/packages/api-graphql/src/internals/server/generateModelsProperty.ts deleted file mode 100644 index 547d4cb6759..00000000000 --- a/packages/api-graphql/src/internals/server/generateModelsProperty.ts +++ /dev/null @@ -1,97 +0,0 @@ -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 -import { ModelTypes } from '@aws-amplify/data-schema-types'; -import { ModelIntrospectionSchema } from '@aws-amplify/core/internals/utils'; - -import { ModelOperation, graphQLOperationsInfo } from '../APIClient'; -import { - ServerClientGenerationParams, - V6ClientSSRCookies, - V6ClientSSRRequest, -} from '../../types/'; -import { listFactory } from '../operations/list'; -import { indexQueryFactory } from '../operations/indexQuery'; -import { getFactory } from '../operations/get'; -import { getSecondaryIndexesFromSchemaModel } from '../clientUtils'; - -export function generateModelsProperty< - T extends Record = never, - ClientType extends - | V6ClientSSRRequest> - | V6ClientSSRCookies> = V6ClientSSRCookies< - Record - >, ->( - client: ClientType, - params: ServerClientGenerationParams, -): ModelTypes | ModelTypes { - const models = {} as any; - const { config } = params; - const useContext = params.amplify === null; - - if (!config) { - throw new Error('generateModelsProperty cannot retrieve Amplify config'); - } - - if (!config.API?.GraphQL) { - return {} as ModelTypes; - } - - const modelIntrospection: ModelIntrospectionSchema | undefined = - config.API.GraphQL.modelIntrospection; - - if (!modelIntrospection) { - return {} as ModelTypes; - } - - const SSR_UNSUPORTED_OPS = [ - 'ONCREATE', - 'ONUPDATE', - 'ONDELETE', - 'OBSERVE_QUERY', - ]; - - for (const model of Object.values(modelIntrospection.models)) { - const { name } = model; - models[name] = {} as Record; - - Object.entries(graphQLOperationsInfo).forEach( - ([key, { operationPrefix }]) => { - const operation = key as ModelOperation; - - // subscriptions are not supported in SSR - if (SSR_UNSUPORTED_OPS.includes(operation)) return; - - if (operation === 'LIST') { - models[name][operationPrefix] = listFactory( - client, - modelIntrospection, - model, - useContext, - ); - } else { - models[name][operationPrefix] = getFactory( - client, - modelIntrospection, - model, - operation, - useContext, - ); - } - }, - ); - - const secondaryIdxs = getSecondaryIndexesFromSchemaModel(model); - - for (const idx of secondaryIdxs) { - models[name][idx.queryField] = indexQueryFactory( - client, - modelIntrospection, - model, - idx, - ); - } - } - - return models; -} diff --git a/packages/api-graphql/src/internals/types.ts b/packages/api-graphql/src/internals/types.ts index 40154d778a1..edb0ab2599f 100644 --- a/packages/api-graphql/src/internals/types.ts +++ b/packages/api-graphql/src/internals/types.ts @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 import { AmplifyClassV6 } from '@aws-amplify/core'; import { GraphQLAuthMode } from '@aws-amplify/core/internals/utils'; -import { CustomHeaders } from '@aws-amplify/data-schema-types'; +import { CustomHeaders } from '@aws-amplify/data-schema/runtime'; /** * @private diff --git a/packages/api-graphql/src/internals/utils/clientProperties/generateEnumsProperty.ts b/packages/api-graphql/src/internals/utils/clientProperties/generateEnumsProperty.ts deleted file mode 100644 index e937de13805..00000000000 --- a/packages/api-graphql/src/internals/utils/clientProperties/generateEnumsProperty.ts +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -import { - GraphQLProviderConfig, - ModelIntrospectionSchema, -} from '@aws-amplify/core/internals/utils'; -import { EnumTypes } from '@aws-amplify/data-schema-types'; - -export const generateEnumsProperty = = never>( - graphqlConfig: GraphQLProviderConfig['GraphQL'], -): EnumTypes => { - const modelIntrospection: ModelIntrospectionSchema | undefined = - graphqlConfig.modelIntrospection; - - if (!modelIntrospection) { - return {} as EnumTypes; - } - - const enums: Record< - string, - { - values(): string[]; - } - > = {}; - - for (const [_, enumData] of Object.entries(modelIntrospection.enums)) { - enums[enumData.name] = { - values: () => enumData.values, - }; - } - - return enums as EnumTypes; -}; diff --git a/packages/api-graphql/src/internals/utils/clientProperties/generateModelsProperty.ts b/packages/api-graphql/src/internals/utils/clientProperties/generateModelsProperty.ts deleted file mode 100644 index a01c8732a15..00000000000 --- a/packages/api-graphql/src/internals/utils/clientProperties/generateModelsProperty.ts +++ /dev/null @@ -1,81 +0,0 @@ -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 -import { ModelTypes } from '@aws-amplify/data-schema-types'; -import { - GraphQLProviderConfig, - ModelIntrospectionSchema, -} from '@aws-amplify/core/internals/utils'; - -import { ModelOperation, graphQLOperationsInfo } from '../../APIClient'; -import { V6Client } from '../../../types'; -import { listFactory } from '../../operations/list'; -import { indexQueryFactory } from '../../operations/indexQuery'; -import { getFactory } from '../../operations/get'; -import { subscriptionFactory } from '../../operations/subscription'; -import { observeQueryFactory } from '../../operations/observeQuery'; -import { getSecondaryIndexesFromSchemaModel } from '../../clientUtils'; - -export function generateModelsProperty = never>( - client: V6Client>, - apiGraphQLConfig: GraphQLProviderConfig['GraphQL'], -): ModelTypes | ModelTypes { - const models = {} as any; - - const modelIntrospection: ModelIntrospectionSchema | undefined = - apiGraphQLConfig.modelIntrospection; - - if (!modelIntrospection) { - return {} as ModelTypes; - } - - const SUBSCRIPTION_OPS = ['ONCREATE', 'ONUPDATE', 'ONDELETE']; - - for (const model of Object.values(modelIntrospection.models)) { - const { name } = model; - - models[name] = {} as Record; - - Object.entries(graphQLOperationsInfo).forEach( - ([key, { operationPrefix }]) => { - const operation = key as ModelOperation; - - if (operation === 'LIST') { - models[name][operationPrefix] = listFactory( - client, - modelIntrospection, - model, - ); - } else if (SUBSCRIPTION_OPS.includes(operation)) { - models[name][operationPrefix] = subscriptionFactory( - client, - modelIntrospection, - model, - operation, - ); - } else if (operation === 'OBSERVE_QUERY') { - models[name][operationPrefix] = observeQueryFactory(models, model); - } else { - models[name][operationPrefix] = getFactory( - client, - modelIntrospection, - model, - operation, - ); - } - }, - ); - - const secondaryIdxs = getSecondaryIndexesFromSchemaModel(model); - - for (const idx of secondaryIdxs) { - models[name][idx.queryField] = indexQueryFactory( - client, - modelIntrospection, - model, - idx, - ); - } - } - - return models; -} diff --git a/packages/api-graphql/src/internals/v6.ts b/packages/api-graphql/src/internals/v6.ts index 1b6a2d0488e..0cdcf483927 100644 --- a/packages/api-graphql/src/internals/v6.ts +++ b/packages/api-graphql/src/internals/v6.ts @@ -1,15 +1,13 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -import { CustomHeaders } from '@aws-amplify/data-schema-types'; +import { CustomHeaders } from '@aws-amplify/data-schema/runtime'; import { GraphQLAPI } from '../GraphQLAPI'; import { GraphQLOptionsV6, GraphQLResponseV6, V6Client, - __amplify, - __authMode, - __authToken, + getInternals, } from '../types'; /** @@ -105,8 +103,9 @@ export function graphql< additionalHeaders?: CustomHeaders, ): GraphQLResponseV6 { // inject client-level auth - options.authMode = options.authMode || this[__authMode]; - options.authToken = options.authToken || this[__authToken]; + const internals = getInternals(this as any); + options.authMode = options.authMode || internals.authMode; + options.authToken = options.authToken || internals.authToken; /** * The correctness of these typings depends on correct string branding or overrides. @@ -114,7 +113,8 @@ export function graphql< * any validation or type-guarding here. */ const result = GraphQLAPI.graphql( - this[__amplify], + // TODO: move V6Client back into this package? + internals.amplify as any, options, additionalHeaders, ); diff --git a/packages/api-graphql/src/server/generateClient.ts b/packages/api-graphql/src/server/generateClient.ts index aaf64c079bd..09a60595231 100644 --- a/packages/api-graphql/src/server/generateClient.ts +++ b/packages/api-graphql/src/server/generateClient.ts @@ -5,7 +5,7 @@ import { AmplifyServer, getAmplifyServerContext, } from '@aws-amplify/core/internals/adapter-core'; -import { CustomHeaders } from '@aws-amplify/data-schema-types'; +import { CustomHeaders } from '@aws-amplify/data-schema/runtime'; import { generateClientWithAmplifyInstance } from '../internals/server'; import { diff --git a/packages/api-graphql/src/types/index.ts b/packages/api-graphql/src/types/index.ts index f2a019e2aae..0ecac34369a 100644 --- a/packages/api-graphql/src/types/index.ts +++ b/packages/api-graphql/src/types/index.ts @@ -2,14 +2,14 @@ // SPDX-License-Identifier: Apache-2.0 import { AmplifyClassV6, ResourcesConfig } from '@aws-amplify/core'; import { + BaseClient, + ClientExtensions, + ClientExtensionsSSRCookies, + ClientExtensionsSSRRequest, + ClientInternals, CustomHeaders, - CustomMutations, - CustomQueries, - CustomSubscriptions, - EnumTypes, ModelSortDirection, - ModelTypes, -} from '@aws-amplify/data-schema-types'; +} from '@aws-amplify/data-schema/runtime'; import { DocumentNode, GraphQLError, Source } from 'graphql'; import { Observable } from 'rxjs'; import { @@ -22,7 +22,7 @@ export { OperationTypeNode } from 'graphql'; export { CONTROL_MSG, ConnectionState } from './PubSub'; -export { SelectionSet } from '@aws-amplify/data-schema-types'; +export { SelectionSet } from '@aws-amplify/data-schema/runtime'; export { CommonPublicClientOptions } from '../internals/types'; @@ -40,7 +40,7 @@ export interface GraphQLOptions { userAgentSuffix?: string; } -export interface GraphQLResult { +export interface GraphQLResult { data: T; errors?: GraphQLError[]; extensions?: Record; @@ -366,68 +366,44 @@ export type GeneratedSubscription = string & { __generatedSubscriptionOutput: OutputType; }; -type FilteredKeys = { - [P in keyof T]: T[P] extends never ? never : P; -}[keyof T]; - -type ExcludeNeverFields = { - [K in FilteredKeys]: O[K]; -}; - export const __amplify = Symbol('amplify'); export const __authMode = Symbol('authMode'); export const __authToken = Symbol('authToken'); export const __headers = Symbol('headers'); +export function getInternals(client: BaseClient): ClientInternals { + const c = client as any; + + return { + amplify: c[__amplify], + authMode: c[__authMode], + authToken: c[__authToken], + headers: c[__headers], + } as any; +} + export type ClientWithModels = - | V6Client> - | V6ClientSSRRequest> - | V6ClientSSRCookies>; - -export type V6Client = never> = ExcludeNeverFields<{ - [__amplify]: AmplifyClassV6; - [__authMode]?: GraphQLAuthMode; - [__authToken]?: string; - [__headers]?: CustomHeaders; + | V6Client + | V6ClientSSRRequest + | V6ClientSSRCookies; + +export type V6Client = never> = { + graphql: GraphQLMethod; + cancel(promise: Promise, message?: string): boolean; + isCancelError(error: any): boolean; +} & ClientExtensions; + +export type V6ClientSSRRequest = never> = { + graphql: GraphQLMethodSSR; + cancel(promise: Promise, message?: string): boolean; + isCancelError(error: any): boolean; +} & ClientExtensionsSSRRequest; + +export type V6ClientSSRCookies = never> = { graphql: GraphQLMethod; cancel(promise: Promise, message?: string): boolean; isCancelError(error: any): boolean; - models: ModelTypes; - enums: EnumTypes; - queries: CustomQueries; - mutations: CustomMutations; - subscriptions: CustomSubscriptions; -}>; - -export type V6ClientSSRRequest = never> = - ExcludeNeverFields<{ - [__amplify]: AmplifyClassV6; - [__authMode]?: GraphQLAuthMode; - [__authToken]?: string; - [__headers]?: CustomHeaders; - graphql: GraphQLMethodSSR; - cancel(promise: Promise, message?: string): boolean; - isCancelError(error: any): boolean; - models: ModelTypes; - enums: EnumTypes; - queries: CustomQueries; - mutations: CustomMutations; - }>; - -export type V6ClientSSRCookies = never> = - ExcludeNeverFields<{ - [__amplify]: AmplifyClassV6; - [__authMode]?: GraphQLAuthMode; - [__authToken]?: string; - [__headers]?: CustomHeaders; - graphql: GraphQLMethod; - cancel(promise: Promise, message?: string): boolean; - isCancelError(error: any): boolean; - models: ModelTypes; - enums: EnumTypes; - queries: CustomQueries; - mutations: CustomMutations; - }>; +} & ClientExtensionsSSRCookies; export type GraphQLMethod = < FALLBACK_TYPES = unknown, diff --git a/packages/api-graphql/src/utils/findIndexByFields.ts b/packages/api-graphql/src/utils/findIndexByFields.ts deleted file mode 100644 index 762a3fce850..00000000000 --- a/packages/api-graphql/src/utils/findIndexByFields.ts +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 -/** - * Iterates through a collection to find a matching item and returns the index. - * - * @param needle The item to search for - * @param haystack The collection to search - * @param keyFields The fields used to indicate a match - * @returns Index of `needle` in `haystack`, otherwise -1 if not found. - */ -export function findIndexByFields( - needle: T, - haystack: T[], - keyFields: (keyof T)[], -): number { - const searchObject = Object.fromEntries( - keyFields.map(fieldName => [fieldName, needle[fieldName]]), - ); - - for (let i = 0; i < haystack.length; i++) { - if ( - Object.keys(searchObject).every( - k => searchObject[k] === (haystack[i] as any)[k], - ) - ) { - return i; - } - } - - return -1; -} diff --git a/packages/api-graphql/src/utils/index.ts b/packages/api-graphql/src/utils/index.ts index 9b51811e630..d995921b106 100644 --- a/packages/api-graphql/src/utils/index.ts +++ b/packages/api-graphql/src/utils/index.ts @@ -3,5 +3,3 @@ export { resolveConfig } from './resolveConfig'; export { resolveLibraryOptions } from './resolveLibraryOptions'; -export { resolvePKFields } from './resolvePKFields'; -export { findIndexByFields } from './findIndexByFields'; diff --git a/packages/api-graphql/src/utils/resolveOwnerFields.ts b/packages/api-graphql/src/utils/resolveOwnerFields.ts deleted file mode 100644 index 47d8cdea3ef..00000000000 --- a/packages/api-graphql/src/utils/resolveOwnerFields.ts +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 -import { ResourcesConfig } from '@aws-amplify/core'; - -type GraphQLConfig = Exclude['GraphQL']; -type ModelIntrospectionSchema = Exclude< - Exclude['modelIntrospection'], - undefined ->; -type Model = ModelIntrospectionSchema['models'][string]; - -interface AuthAttribute { - type: 'auth'; - properties: { - rules: AuthRule[]; - }; -} - -/** - * Only the portions of an Auth rule we care about. - */ -type AuthRule = - | { - allow: 'owner'; - ownerField?: string; - } - | { - allow: 'groups'; - groupsField: string; - }; - -/** - * Given an introspection schema model, returns all owner fields. - * - * @param model Model from an introspection schema - * @returns List of owner field names - */ -export function resolveOwnerFields(model: Model): string[] { - const ownerFields = new Set(); - for (const attr of model.attributes || []) { - if (isAuthAttribute(attr)) { - for (const rule of attr.properties.rules) { - if (rule.allow === 'owner') { - ownerFields.add(rule.ownerField || 'owner'); - } else if (rule.allow === 'groups' && rule.groupsField !== undefined) { - // only valid for dynamic group(s) - // static group auth will have an array of predefined groups in the attribute, groups: string[] - // but `groupsField` will be undefined - ownerFields.add(rule.groupsField); - } - } - } - } - - return Array.from(ownerFields); -} - -/** - * Type guard that identifies an auth attribute with an attached rules list that - * specifies an `allow` attribute at a minimum. - * - * @param attribute Any object. Ideally a model introspection schema model attribute - * @returns True if given object is an auth attribute - */ -function isAuthAttribute(attribute: any): attribute is AuthAttribute { - if (attribute?.type === 'auth') { - if (typeof attribute?.properties === 'object') { - if (Array.isArray(attribute?.properties?.rules)) { - return (attribute?.properties?.rules as any[]).every( - rule => !!rule.allow, - ); - } - } - } - - return false; -} diff --git a/packages/api-graphql/src/utils/resolvePKFields.ts b/packages/api-graphql/src/utils/resolvePKFields.ts deleted file mode 100644 index c00b5b94218..00000000000 --- a/packages/api-graphql/src/utils/resolvePKFields.ts +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 -import { ResourcesConfig } from '@aws-amplify/core'; - -type GraphQLConfig = Exclude['GraphQL']; -type ModelIntrospectionSchema = Exclude< - Exclude['modelIntrospection'], - undefined ->; -type SchemaModel = ModelIntrospectionSchema['models'][string]; - -/** - * Given a SchemaModel from a ModelIntrospectionSchema, returns the primary key - * as an array of field names. - * - * @param model The model object - * @returns Array of field names - */ -export function resolvePKFields(model: SchemaModel) { - const { primaryKeyFieldName, sortKeyFieldNames } = model.primaryKeyInfo; - - return [primaryKeyFieldName, ...sortKeyFieldNames]; -} diff --git a/packages/api-rest/CHANGELOG.md b/packages/api-rest/CHANGELOG.md index 232704ad012..b4ee27bd503 100644 --- a/packages/api-rest/CHANGELOG.md +++ b/packages/api-rest/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [4.0.28](https://github.com/aws-amplify/amplify-js/compare/@aws-amplify/api-rest@4.0.27...@aws-amplify/api-rest@4.0.28) (2024-04-22) + +**Note:** Version bump only for package @aws-amplify/api-rest + ## 4.0.27 (2024-04-02) **Note:** Version bump only for package @aws-amplify/api-rest diff --git a/packages/api-rest/package.json b/packages/api-rest/package.json index 56517c8c1c6..2f4c233d21d 100644 --- a/packages/api-rest/package.json +++ b/packages/api-rest/package.json @@ -1,7 +1,7 @@ { "name": "@aws-amplify/api-rest", "private": false, - "version": "4.0.27", + "version": "4.0.28", "description": "Api-rest category of aws-amplify", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.mjs", @@ -87,7 +87,7 @@ "@aws-amplify/core": "^6.0.0" }, "devDependencies": { - "@aws-amplify/core": "6.0.27", + "@aws-amplify/core": "6.0.28", "@aws-amplify/react-native": "1.0.28", "typescript": "5.0.2" }, diff --git a/packages/api/CHANGELOG.md b/packages/api/CHANGELOG.md index 3c9683ca2cc..64c9a2439a6 100644 --- a/packages/api/CHANGELOG.md +++ b/packages/api/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [6.0.29](https://github.com/aws-amplify/amplify-js/compare/@aws-amplify/api@6.0.28...@aws-amplify/api@6.0.29) (2024-04-22) + +**Note:** Version bump only for package @aws-amplify/api + ## [6.0.28](https://github.com/aws-amplify/amplify-js/compare/@aws-amplify/api@6.0.27...@aws-amplify/api@6.0.28) (2024-04-09) **Note:** Version bump only for package @aws-amplify/api diff --git a/packages/api/package.json b/packages/api/package.json index 9bc7f433c07..87053d2cae8 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -1,6 +1,6 @@ { "name": "@aws-amplify/api", - "version": "6.0.28", + "version": "6.0.29", "description": "Api category of aws-amplify", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.mjs", @@ -79,8 +79,8 @@ "server" ], "dependencies": { - "@aws-amplify/api-graphql": "4.0.28", - "@aws-amplify/api-rest": "4.0.27", + "@aws-amplify/api-graphql": "4.0.29", + "@aws-amplify/api-rest": "4.0.28", "tslib": "^2.5.0" } } diff --git a/packages/api/src/internals/InternalAPI.ts b/packages/api/src/internals/InternalAPI.ts index fa5c1a2001f..e4fe7a56484 100644 --- a/packages/api/src/internals/InternalAPI.ts +++ b/packages/api/src/internals/InternalAPI.ts @@ -17,7 +17,7 @@ import { CustomUserAgentDetails, } from '@aws-amplify/core/internals/utils'; import { Observable } from 'rxjs'; -import { CustomHeaders } from '@aws-amplify/data-schema-types'; +import { CustomHeaders } from '@aws-amplify/data-schema/runtime'; /** * NOTE! diff --git a/packages/auth/CHANGELOG.md b/packages/auth/CHANGELOG.md index 86710966e61..3055f46027d 100644 --- a/packages/auth/CHANGELOG.md +++ b/packages/auth/CHANGELOG.md @@ -3,6 +3,16 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [6.0.29](https://github.com/aws-amplify/amplify-js/compare/@aws-amplify/auth@6.0.28...@aws-amplify/auth@6.0.29) (2024-04-24) + +### Bug Fixes + +- **auth:** listen for pageshow event listener ([9844af8](https://github.com/aws-amplify/amplify-js/commit/9844af82f8ea21090b123c64890fb356b25180e3)) + +## [6.0.28](https://github.com/aws-amplify/amplify-js/compare/@aws-amplify/auth@6.0.27...@aws-amplify/auth@6.0.28) (2024-04-22) + +**Note:** Version bump only for package @aws-amplify/auth + ## 6.0.27 (2024-04-02) **Note:** Version bump only for package @aws-amplify/auth diff --git a/packages/auth/__tests__/providers/cognito/signInWithRedirect.test.ts b/packages/auth/__tests__/providers/cognito/signInWithRedirect.test.ts index 1687d8edea9..26fff83b1ea 100644 --- a/packages/auth/__tests__/providers/cognito/signInWithRedirect.test.ts +++ b/packages/auth/__tests__/providers/cognito/signInWithRedirect.test.ts @@ -47,11 +47,12 @@ jest.mock('@aws-amplify/core', () => { ConsoleLogger: jest.fn(), }; }); + jest.mock('../../../src/providers/cognito/utils/signInHelpers'); + jest.mock('../../../src/providers/cognito/utils/oauth', () => ({ ...jest.requireActual('../../../src/providers/cognito/utils/oauth'), completeOAuthFlow: jest.fn(), - handleFailure: jest.fn(), generateCodeVerifier: jest.fn(), generateState: jest.fn(), })); @@ -70,6 +71,7 @@ jest.mock('../../../src/providers/cognito/utils/oauth/oAuthStore', () => ({ clearOAuthInflightData: jest.fn(), } as OAuthStore, })); +jest.mock('../../../src/providers/cognito/utils/oauth/handleFailure'); jest.mock('../../../src/providers/cognito/utils/oauth/createOAuthError'); jest.mock('../../../src/utils'); @@ -188,6 +190,26 @@ describe('signInWithRedirect', () => { ); }); }); + + it('invokes handleFailure when user cancels the oauth flow', async () => { + const error = new Error('OAuth flow was cancelled.') + const mockOpenAuthSessionResult = { + type: undefined, + }; + mockCreateOAuthError.mockReturnValueOnce(error); + mockOpenAuthSession.mockResolvedValueOnce(mockOpenAuthSessionResult); + oAuthStore.loadOAuthInFlight = jest.fn().mockResolvedValueOnce(true); + const currentAddEventlistener = window.addEventListener; + window.addEventListener = jest.fn((event: string, cb: any) => { + cb({ persisted: true }); + }); + + await signInWithRedirect({ provider: 'Google' }); + expect(mockCreateOAuthError).toHaveBeenCalledTimes(1); + expect(mockHandleFailure).toHaveBeenCalledWith(error); + + window.addEventListener = currentAddEventlistener; + }) }); describe('specifications on react-native', () => { @@ -275,6 +297,7 @@ describe('signInWithRedirect', () => { expect(oAuthStore.storeOAuthInFlight).toHaveBeenCalledTimes(0); }); + }); describe('errors', () => { @@ -304,5 +327,6 @@ describe('signInWithRedirect', () => { await expect(signInWithRedirect()).rejects.toThrow(mockError); }); + }); }); diff --git a/packages/auth/package.json b/packages/auth/package.json index 73ef6420dfb..fdc84038e5e 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -97,7 +97,7 @@ "@aws-amplify/core": "^6.0.0" }, "devDependencies": { - "@aws-amplify/core": "6.0.27", + "@aws-amplify/core": "6.0.28", "@aws-amplify/react-native": "1.0.28", "@jest/test-sequencer": "^29.7.0", "typescript": "5.0.2" diff --git a/packages/auth/src/providers/cognito/apis/signInWithRedirect.ts b/packages/auth/src/providers/cognito/apis/signInWithRedirect.ts index 01333446986..cab4f018ee7 100644 --- a/packages/auth/src/providers/cognito/apis/signInWithRedirect.ts +++ b/packages/auth/src/providers/cognito/apis/signInWithRedirect.ts @@ -24,6 +24,7 @@ import { oAuthStore, } from '../utils/oauth'; import { createOAuthError } from '../utils/oauth/createOAuthError'; +import { listenForOAuthFlowCancellation } from '../utils/oauth/cancelOAuthFlow'; /** * Signs in a user with OAuth. Redirects the application to an Identity Provider. @@ -110,6 +111,11 @@ const oauthSignIn = async ({ // TODO(v6): use URL object instead const oAuthUrl = `https://${domain}/oauth2/authorize?${queryString}`; + // this will only take effect in the following scenarios: + // 1. the user cancels the OAuth flow on web via back button, and + // 2. when bfcache is enabled + listenForOAuthFlowCancellation(oAuthStore); + // the following is effective only in react-native as openAuthSession resolves only in react-native const { type, error, url } = (await openAuthSession(oAuthUrl, redirectSignIn, preferPrivateSession)) ?? diff --git a/packages/auth/src/providers/cognito/utils/oauth/cancelOAuthFlow.native.ts b/packages/auth/src/providers/cognito/utils/oauth/cancelOAuthFlow.native.ts new file mode 100644 index 00000000000..ecdb85c407a --- /dev/null +++ b/packages/auth/src/providers/cognito/utils/oauth/cancelOAuthFlow.native.ts @@ -0,0 +1,6 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +export const listenForOAuthFlowCancellation = () => { + // no-op for non-browser environments +}; diff --git a/packages/auth/src/providers/cognito/utils/oauth/cancelOAuthFlow.ts b/packages/auth/src/providers/cognito/utils/oauth/cancelOAuthFlow.ts new file mode 100644 index 00000000000..597df182255 --- /dev/null +++ b/packages/auth/src/providers/cognito/utils/oauth/cancelOAuthFlow.ts @@ -0,0 +1,19 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { OAuthStore } from '../types'; + +import { createOAuthError } from './createOAuthError'; +import { handleFailure } from './handleFailure'; + +export const listenForOAuthFlowCancellation = (store: OAuthStore) => { + async function handleCancelOAuthFlow(event: PageTransitionEvent) { + const isBfcache = event.persisted; + if (isBfcache && (await store.loadOAuthInFlight())) { + const error = createOAuthError('User cancelled OAuth flow.'); + await handleFailure(error); + } + window.removeEventListener('pageshow', handleCancelOAuthFlow); + } + window.addEventListener('pageshow', handleCancelOAuthFlow); +}; diff --git a/packages/aws-amplify/CHANGELOG.md b/packages/aws-amplify/CHANGELOG.md index 7631a4dd5c5..a050f21d23a 100644 --- a/packages/aws-amplify/CHANGELOG.md +++ b/packages/aws-amplify/CHANGELOG.md @@ -3,6 +3,16 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [6.0.30](https://github.com/aws-amplify/amplify-js/compare/aws-amplify@6.0.29...aws-amplify@6.0.30) (2024-04-24) + +**Note:** Version bump only for package aws-amplify + +## [6.0.29](https://github.com/aws-amplify/amplify-js/compare/aws-amplify@6.0.28...aws-amplify@6.0.29) (2024-04-22) + +### Bug Fixes + +- **api-graphql:** incorrect list sk arg type ([#13249](https://github.com/aws-amplify/amplify-js/issues/13249)) ([f37faeb](https://github.com/aws-amplify/amplify-js/commit/f37faebacddeed66ce5bc1d7f78b8d1d46aecb17)) + ## [6.0.28](https://github.com/aws-amplify/amplify-js/compare/aws-amplify@6.0.27...aws-amplify@6.0.28) (2024-04-09) **Note:** Version bump only for package aws-amplify diff --git a/packages/aws-amplify/package.json b/packages/aws-amplify/package.json index 0e9f5d0a999..0c2cea076e8 100644 --- a/packages/aws-amplify/package.json +++ b/packages/aws-amplify/package.json @@ -276,12 +276,12 @@ "utils" ], "dependencies": { - "@aws-amplify/analytics": "7.0.27", - "@aws-amplify/api": "6.0.28", + "@aws-amplify/analytics": "7.0.28", + "@aws-amplify/api": "6.0.29", "@aws-amplify/auth": "6.2.0", - "@aws-amplify/core": "6.0.27", - "@aws-amplify/datastore": "5.0.28", - "@aws-amplify/notifications": "2.0.27", + "@aws-amplify/core": "6.0.28", + "@aws-amplify/datastore": "5.0.29", + "@aws-amplify/notifications": "2.0.28", "@aws-amplify/storage": "6.3.0", "tslib": "^2.5.0" }, @@ -335,7 +335,7 @@ "name": "[API] generateClient (AppSync)", "path": "./dist/esm/api/index.mjs", "import": "{ generateClient }", - "limit": "39.0 kB" + "limit": "39.5 kB" }, { "name": "[API] REST API handlers", @@ -437,7 +437,7 @@ "name": "[Auth] signInWithRedirect (Cognito)", "path": "./dist/esm/auth/index.mjs", "import": "{ signInWithRedirect }", - "limit": "19.40 kB" + "limit": "19.44 kB" }, { "name": "[Auth] fetchUserAttributes (Cognito)", diff --git a/packages/core/CHANGELOG.md b/packages/core/CHANGELOG.md index f8a265e96e2..3e7eb8c2352 100644 --- a/packages/core/CHANGELOG.md +++ b/packages/core/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [6.0.28](https://github.com/aws-amplify/amplify-js/compare/@aws-amplify/core@6.0.27...@aws-amplify/core@6.0.28) (2024-04-22) + +### Bug Fixes + +- **message overrides:** extract message content with Platform-Specific Overrides ([#12917](https://github.com/aws-amplify/amplify-js/issues/12917)) ([cb91437](https://github.com/aws-amplify/amplify-js/commit/cb914374263262c84c6337dddca1f17fb7dd204a)) + ## 6.0.27 (2024-04-02) **Note:** Version bump only for package @aws-amplify/core diff --git a/packages/core/package.json b/packages/core/package.json index ff5cd11e726..6a6d2532b12 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@aws-amplify/core", - "version": "6.0.27", + "version": "6.0.28", "description": "Core category of aws-amplify", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.mjs", diff --git a/packages/core/src/awsClients/pinpoint/index.ts b/packages/core/src/awsClients/pinpoint/index.ts index 95bfc0951b3..85477b4e6e8 100644 --- a/packages/core/src/awsClients/pinpoint/index.ts +++ b/packages/core/src/awsClients/pinpoint/index.ts @@ -12,4 +12,10 @@ export { UpdateEndpointInput, UpdateEndpointOutput, } from './updateEndpoint'; -export { Event, InAppMessageCampaign, EventsBatch } from './types'; +export { + Event, + InAppMessageCampaign, + EventsBatch, + InAppMessageButton, + OverrideButtonConfiguration, +} from './types'; diff --git a/packages/core/src/libraryUtils.ts b/packages/core/src/libraryUtils.ts index a11eb0cf1c4..623fb12b11e 100644 --- a/packages/core/src/libraryUtils.ts +++ b/packages/core/src/libraryUtils.ts @@ -25,7 +25,7 @@ export { LegacyConfig } from './singleton/types'; export { ADD_OAUTH_LISTENER } from './singleton/constants'; export { amplifyUuid } from './utils/amplifyUuid'; export { AmplifyUrl, AmplifyUrlSearchParams } from './utils/amplifyUrl'; - +export { getClientInfo } from './utils'; // Auth utilities export { decodeJWT, diff --git a/packages/datastore-storage-adapter/CHANGELOG.md b/packages/datastore-storage-adapter/CHANGELOG.md index e43d21f34a9..7035fe7a444 100644 --- a/packages/datastore-storage-adapter/CHANGELOG.md +++ b/packages/datastore-storage-adapter/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.1.29](https://github.com/aws-amplify/amplify-js/compare/@aws-amplify/datastore-storage-adapter@2.1.28...@aws-amplify/datastore-storage-adapter@2.1.29) (2024-04-22) + +**Note:** Version bump only for package @aws-amplify/datastore-storage-adapter + ## [2.1.28](https://github.com/aws-amplify/amplify-js/compare/@aws-amplify/datastore-storage-adapter@2.1.27...@aws-amplify/datastore-storage-adapter@2.1.28) (2024-04-09) **Note:** Version bump only for package @aws-amplify/datastore-storage-adapter diff --git a/packages/datastore-storage-adapter/package.json b/packages/datastore-storage-adapter/package.json index 73457ee9e1d..e0858c19b87 100644 --- a/packages/datastore-storage-adapter/package.json +++ b/packages/datastore-storage-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@aws-amplify/datastore-storage-adapter", - "version": "2.1.28", + "version": "2.1.29", "description": "SQLite storage adapter for Amplify DataStore ", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.mjs", @@ -35,8 +35,8 @@ "@aws-amplify/core": "^6.0.0" }, "devDependencies": { - "@aws-amplify/core": "6.0.27", - "@aws-amplify/datastore": "5.0.28", + "@aws-amplify/core": "6.0.28", + "@aws-amplify/datastore": "5.0.29", "@types/react-native-sqlite-storage": "5.0.1", "expo-file-system": "13.1.4", "expo-sqlite": "10.1.0", diff --git a/packages/datastore/CHANGELOG.md b/packages/datastore/CHANGELOG.md index 13dc0df4a41..bc54be06fff 100644 --- a/packages/datastore/CHANGELOG.md +++ b/packages/datastore/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.0.29](https://github.com/aws-amplify/amplify-js/compare/@aws-amplify/datastore@5.0.28...@aws-amplify/datastore@5.0.29) (2024-04-22) + +**Note:** Version bump only for package @aws-amplify/datastore + ## [5.0.28](https://github.com/aws-amplify/amplify-js/compare/@aws-amplify/datastore@5.0.27...@aws-amplify/datastore@5.0.28) (2024-04-09) **Note:** Version bump only for package @aws-amplify/datastore diff --git a/packages/datastore/package.json b/packages/datastore/package.json index 595a5006401..99edd6f496c 100644 --- a/packages/datastore/package.json +++ b/packages/datastore/package.json @@ -1,6 +1,6 @@ { "name": "@aws-amplify/datastore", - "version": "5.0.28", + "version": "5.0.29", "description": "AppSyncLocal support for aws-amplify", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.mjs", @@ -43,7 +43,7 @@ "src" ], "dependencies": { - "@aws-amplify/api": "6.0.28", + "@aws-amplify/api": "6.0.29", "buffer": "4.9.2", "idb": "5.0.6", "immer": "9.0.6", @@ -54,7 +54,7 @@ "@aws-amplify/core": "^6.0.0" }, "devDependencies": { - "@aws-amplify/core": "6.0.27", + "@aws-amplify/core": "6.0.28", "@aws-amplify/react-native": "1.0.28", "@types/uuid-validate": "^0.0.1", "dexie": "3.2.2", diff --git a/packages/geo/CHANGELOG.md b/packages/geo/CHANGELOG.md index bb17946fadf..3f7b0f67a81 100644 --- a/packages/geo/CHANGELOG.md +++ b/packages/geo/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [3.0.28](https://github.com/aws-amplify/amplify-js/compare/@aws-amplify/geo@3.0.27...@aws-amplify/geo@3.0.28) (2024-04-22) + +**Note:** Version bump only for package @aws-amplify/geo + ## 3.0.27 (2024-04-02) **Note:** Version bump only for package @aws-amplify/geo diff --git a/packages/geo/package.json b/packages/geo/package.json index 93b61dfa4ca..ef9e48f0313 100644 --- a/packages/geo/package.json +++ b/packages/geo/package.json @@ -1,6 +1,6 @@ { "name": "@aws-amplify/geo", - "version": "3.0.27", + "version": "3.0.28", "description": "Geo category for aws-amplify", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.mjs", @@ -76,7 +76,7 @@ "@aws-amplify/core": "^6.0.0" }, "devDependencies": { - "@aws-amplify/core": "6.0.27", + "@aws-amplify/core": "6.0.28", "typescript": "5.0.2" }, "size-limit": [ diff --git a/packages/interactions/CHANGELOG.md b/packages/interactions/CHANGELOG.md index d46d6e6ade8..b5e6f26eea3 100644 --- a/packages/interactions/CHANGELOG.md +++ b/packages/interactions/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [6.0.28](https://github.com/aws-amplify/amplify-js/compare/@aws-amplify/interactions@6.0.27...@aws-amplify/interactions@6.0.28) (2024-04-22) + +**Note:** Version bump only for package @aws-amplify/interactions + ## 6.0.27 (2024-04-02) **Note:** Version bump only for package @aws-amplify/interactions diff --git a/packages/interactions/package.json b/packages/interactions/package.json index 8979895c73f..83ac1116125 100644 --- a/packages/interactions/package.json +++ b/packages/interactions/package.json @@ -1,6 +1,6 @@ { "name": "@aws-amplify/interactions", - "version": "6.0.27", + "version": "6.0.28", "description": "Interactions category of aws-amplify", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.mjs", @@ -81,7 +81,7 @@ "uuid": "^9.0.0" }, "devDependencies": { - "@aws-amplify/core": "6.0.27", + "@aws-amplify/core": "6.0.28", "typescript": "^5.0.2" }, "size-limit": [ diff --git a/packages/notifications/CHANGELOG.md b/packages/notifications/CHANGELOG.md index 0c2d1425915..21e530ee9ea 100644 --- a/packages/notifications/CHANGELOG.md +++ b/packages/notifications/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.0.28](https://github.com/aws-amplify/amplify-js/compare/@aws-amplify/notifications@2.0.27...@aws-amplify/notifications@2.0.28) (2024-04-22) + +### Bug Fixes + +- **message overrides:** extract message content with Platform-Specific Overrides ([#12917](https://github.com/aws-amplify/amplify-js/issues/12917)) ([cb91437](https://github.com/aws-amplify/amplify-js/commit/cb914374263262c84c6337dddca1f17fb7dd204a)) + ## 2.0.27 (2024-04-02) **Note:** Version bump only for package @aws-amplify/notifications diff --git a/packages/notifications/__tests__/inAppMessaging/providers/pinpoint/utils/helpers.native.test.ts b/packages/notifications/__tests__/inAppMessaging/providers/pinpoint/utils/helpers.native.test.ts new file mode 100644 index 00000000000..fcf9449ce53 --- /dev/null +++ b/packages/notifications/__tests__/inAppMessaging/providers/pinpoint/utils/helpers.native.test.ts @@ -0,0 +1,73 @@ +/** + * @jest-environment node + */ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { + extractContent, + mapOSPlatform, +} from '../../../../../src/inAppMessaging/providers/pinpoint/utils/helpers'; + +import { + nonBrowserConfigTestCases, + pinpointInAppMessage, + extractedContent, + nativeButtonOverrides, +} from '../../../../testUtils/data'; +import { mergeExpectedContentWithExpectedOverride, mergeInAppMessageWithOverrides } from '../../../../testUtils/mergeInAppMessageWithOverrides'; + +jest.mock('@aws-amplify/core'); + +jest.mock('@aws-amplify/core/internals/utils', () => { + const originalModule = jest.requireActual( + '@aws-amplify/core/internals/utils', + ); + return { + ...originalModule, + getClientInfo: jest.fn(), // Setup as a Jest mock function without implementation + }; +}); + +describe('InAppMessaging Provider Utils (running natively)', () => { + describe('mapOSPlatform method', () => { + nonBrowserConfigTestCases.forEach(({ os, expectedPlatform }) => { + test(`correctly maps OS "${os}" to ConfigPlatformType "${expectedPlatform}"`, () => { + const result = mapOSPlatform(os); + expect(result).toBe(expectedPlatform); + }); + }); + }); + + describe('extractContent with overrides', () => { + nativeButtonOverrides.forEach( + ({ buttonOverrides, configPlatform, mappedPlatform }) => { + const message = mergeInAppMessageWithOverrides( + pinpointInAppMessage, + mappedPlatform, + buttonOverrides, + ); + const expectedContent = mergeExpectedContentWithExpectedOverride( + extractedContent[0], + buttonOverrides, + ); + + test(`correctly extracts content for ${configPlatform}`, () => { + const utils = require('@aws-amplify/core/internals/utils'); + // Dynamically override the mock for getClientInfo + utils.getClientInfo.mockImplementation(() => ({ + platform: configPlatform, + })); + + const [firstContent] = extractContent(message); + expect(firstContent.primaryButton).toStrictEqual( + expectedContent.primaryButton, + ); + expect(firstContent.secondaryButton).toStrictEqual( + expectedContent.secondaryButton, + ); + }); + }, + ); + }); +}); diff --git a/packages/notifications/__tests__/inAppMessaging/providers/pinpoint/utils/helpers.test.ts b/packages/notifications/__tests__/inAppMessaging/providers/pinpoint/utils/helpers.test.ts index 62013e6cf5f..c4ea19ab1f9 100644 --- a/packages/notifications/__tests__/inAppMessaging/providers/pinpoint/utils/helpers.test.ts +++ b/packages/notifications/__tests__/inAppMessaging/providers/pinpoint/utils/helpers.test.ts @@ -10,6 +10,7 @@ import { extractMetadata, getStartOfDay, isBeforeEndDate, + mapOSPlatform, matchesAttributes, matchesEventType, matchesMetrics, @@ -19,13 +20,29 @@ import { extractedContent, extractedMetadata, pinpointInAppMessage, + browserConfigTestCases, + browserButtonOverrides, } from '../../../../testUtils/data'; -import { InAppMessagingEvent } from '../../../../../src/inAppMessaging/types'; +import { InAppMessagingEvent } from '../../../../../src/inAppMessaging/types'; +import { + mergeExpectedContentWithExpectedOverride, + mergeInAppMessageWithOverrides, +} from '../../../../testUtils/mergeInAppMessageWithOverrides'; jest.mock('@aws-amplify/core'); jest.mock('@aws-amplify/core/internals/providers/pinpoint'); jest.mock('../../../../../src/inAppMessaging/providers/pinpoint/utils'); +jest.mock('@aws-amplify/core/internals/utils', () => { + const originalModule = jest.requireActual( + '@aws-amplify/core/internals/utils', + ); + return { + ...originalModule, + getClientInfo: jest.fn(), // Setup as a Jest mock function without implementation + }; +}); + const HOUR_IN_MS = 1000 * 60 * 60; describe('InAppMessaging Provider Utils', () => { @@ -271,4 +288,45 @@ describe('InAppMessaging Provider Utils', () => { expect(extractMetadata(message)).toStrictEqual(extractedMetadata); }); + + describe('mapOSPlatform method (running in a browser)', () => { + browserConfigTestCases.forEach(({ os, expectedPlatform }) => { + test(`correctly maps OS "${os}" to ConfigPlatformType "${expectedPlatform}"`, () => { + const result = mapOSPlatform(os); + expect(result).toBe(expectedPlatform); + }); + }); + }); + + describe('extractContent with overrides (running in a browser)', () => { + browserButtonOverrides.forEach( + ({ buttonOverrides, configPlatform, mappedPlatform }) => { + const message = mergeInAppMessageWithOverrides( + pinpointInAppMessage, + mappedPlatform, + buttonOverrides, + ); + const expectedContent = mergeExpectedContentWithExpectedOverride( + extractedContent[0], + buttonOverrides, + ); + + test(`correctly extracts content for ${configPlatform}`, () => { + const utils = require('@aws-amplify/core/internals/utils'); + // Dynamically override the mock for getClientInfo + utils.getClientInfo.mockImplementation(() => ({ + platform: configPlatform, + })); + + const [firstContent] = extractContent(message); + expect(firstContent.primaryButton).toStrictEqual( + expectedContent.primaryButton, + ); + expect(firstContent.secondaryButton).toStrictEqual( + expectedContent.secondaryButton, + ); + }); + }, + ); + }); }); diff --git a/packages/notifications/__tests__/testUtils/data.ts b/packages/notifications/__tests__/testUtils/data.ts index c9986055675..6a3fddf37a5 100644 --- a/packages/notifications/__tests__/testUtils/data.ts +++ b/packages/notifications/__tests__/testUtils/data.ts @@ -2,12 +2,17 @@ // SPDX-License-Identifier: Apache-2.0 import { PinpointAnalyticsEvent } from '@aws-amplify/core/internals/providers/pinpoint'; -import type { InAppMessageCampaign as PinpointInAppMessage } from '@aws-amplify/core/internals/aws-clients/pinpoint'; +import { + type InAppMessageCampaign as PinpointInAppMessage, + OverrideButtonConfiguration, +} from '@aws-amplify/core/internals/aws-clients/pinpoint'; import { InAppMessage, + InAppMessageContent, InAppMessagingEvent, } from '../../src/inAppMessaging/types'; import { PushNotificationMessage } from '../../src/pushNotifications'; +import { ButtonConfigPlatform } from '../../src/inAppMessaging/types/message'; export const credentials = { credentials: { @@ -183,7 +188,7 @@ export const pinpointInAppMessage: PinpointInAppMessage = { TreatmentId: 'T1', }; -export const extractedContent = [ +export const extractedContent: InAppMessageContent[] = [ { body: { content: 'Body content', @@ -210,6 +215,67 @@ export const extractedContent = [ }, ]; +export const nativeButtonOverrides: { + configPlatform: 'ios' | 'android'; + mappedPlatform: ButtonConfigPlatform; + buttonOverrides: { + primaryButton: OverrideButtonConfiguration; + secondaryButton: OverrideButtonConfiguration; + }; +}[] = [ + { + configPlatform: 'android', + mappedPlatform: 'Android', + buttonOverrides: { + primaryButton: { + ButtonAction: 'DEEP_LINK', + Link: 'android-app://primaryButtonLink', + }, + secondaryButton: { + ButtonAction: 'LINK', + Link: 'android-app://secondaryButtonLink', + }, + }, + }, + { + configPlatform: 'ios', + mappedPlatform: 'IOS', + buttonOverrides: { + primaryButton: { + ButtonAction: 'DEEP_LINK', + Link: 'ios-app://primaryButtonLink', + }, + secondaryButton: { + ButtonAction: 'LINK', + Link: 'ios-app://secondaryButtonLink', + }, + }, + }, +]; +export const browserButtonOverrides: { + configPlatform: 'web'; + mappedPlatform: ButtonConfigPlatform; + buttonOverrides: { + primaryButton: OverrideButtonConfiguration; + secondaryButton: OverrideButtonConfiguration; + }; +}[] = [ + { + configPlatform: 'web', + mappedPlatform: 'Web', + buttonOverrides: { + primaryButton: { + ButtonAction: 'LINK', + Link: 'https://webPrimaryButtonLink.com', + }, + secondaryButton: { + ButtonAction: 'LINK', + Link: 'https://webSecondaryButtonLink.com', + }, + }, + }, +]; + export const extractedMetadata = { customData: { foo: 'bar' }, endDate: '2021-01-01T00:00:00Z', @@ -295,3 +361,23 @@ export const completionHandlerId = 'completion-handler-id'; export const userAgentValue = 'user-agent-value'; export const channelType = 'APNS_SANDBOX'; + +export const browserConfigTestCases = [ + { os: 'android', expectedPlatform: 'Web' }, + { os: 'ios', expectedPlatform: 'Web' }, + { os: 'windows', expectedPlatform: 'Web' }, + { os: 'macos', expectedPlatform: 'Web' }, + { os: 'linux', expectedPlatform: 'Web' }, + { os: 'unix', expectedPlatform: 'Web' }, + { os: 'unknown', expectedPlatform: 'Web' }, +]; + +export const nonBrowserConfigTestCases = [ + { os: 'android', expectedPlatform: 'Android' }, + { os: 'ios', expectedPlatform: 'IOS' }, + { os: 'windows', expectedPlatform: 'DefaultConfig' }, + { os: 'macos', expectedPlatform: 'DefaultConfig' }, + { os: 'linux', expectedPlatform: 'DefaultConfig' }, + { os: 'unix', expectedPlatform: 'DefaultConfig' }, + { os: 'unknown', expectedPlatform: 'DefaultConfig' }, +]; diff --git a/packages/notifications/__tests__/testUtils/mergeInAppMessageWithOverrides.ts b/packages/notifications/__tests__/testUtils/mergeInAppMessageWithOverrides.ts new file mode 100644 index 00000000000..09f90f03b8d --- /dev/null +++ b/packages/notifications/__tests__/testUtils/mergeInAppMessageWithOverrides.ts @@ -0,0 +1,59 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { cloneDeep } from 'lodash'; +import { + InAppMessageCampaign, + OverrideButtonConfiguration, +} from '@aws-amplify/core/internals/aws-clients/pinpoint'; +import { + ButtonConfigPlatform, + InAppMessageButton, + InAppMessageContent, +} from '../../src/inAppMessaging/types/message'; + +export const mergeInAppMessageWithOverrides = ( + pinpointInAppMessage: InAppMessageCampaign, + mappedPlatform: ButtonConfigPlatform, + buttonOverrides?: { + primaryButton: OverrideButtonConfiguration; + secondaryButton: OverrideButtonConfiguration; + }, +): InAppMessageCampaign => { + const message = cloneDeep(pinpointInAppMessage); + if (message?.InAppMessage?.Content) { + message.InAppMessage.Content[0] = { + ...message.InAppMessage.Content[0], + PrimaryBtn: { + ...message.InAppMessage.Content[0].PrimaryBtn, + [mappedPlatform]: buttonOverrides?.primaryButton, + }, + SecondaryBtn: { + ...message.InAppMessage.Content[0].SecondaryBtn, + [mappedPlatform]: buttonOverrides?.secondaryButton, + }, + }; + } + return message; +}; + +export const mergeExpectedContentWithExpectedOverride = ( + inAppMessage: InAppMessageContent, + expectedButtonConfig: { + primaryButton: OverrideButtonConfiguration; + secondaryButton: OverrideButtonConfiguration; + }, +): InAppMessageContent => { + let expectedContent = cloneDeep(inAppMessage); + expectedContent.primaryButton = { + ...expectedContent.primaryButton, + action: expectedButtonConfig.primaryButton.ButtonAction, + url: expectedButtonConfig.primaryButton.Link, + } as InAppMessageButton; + expectedContent.secondaryButton = { + ...expectedContent.secondaryButton, + action: expectedButtonConfig.secondaryButton.ButtonAction, + url: expectedButtonConfig.secondaryButton.Link, + } as InAppMessageButton; + return expectedContent; +}; \ No newline at end of file diff --git a/packages/notifications/package.json b/packages/notifications/package.json index a1e6492b8a9..c6fa3c8f039 100644 --- a/packages/notifications/package.json +++ b/packages/notifications/package.json @@ -1,6 +1,6 @@ { "name": "@aws-amplify/notifications", - "version": "2.0.27", + "version": "2.0.28", "description": "Notifications category of aws-amplify", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.mjs", @@ -98,7 +98,7 @@ "@aws-amplify/core": "^6.0.0" }, "devDependencies": { - "@aws-amplify/core": "6.0.27", + "@aws-amplify/core": "6.0.28", "@aws-amplify/react-native": "1.0.28", "typescript": "5.0.2" } diff --git a/packages/notifications/src/inAppMessaging/providers/pinpoint/utils/helpers.ts b/packages/notifications/src/inAppMessaging/providers/pinpoint/utils/helpers.ts index dcd5c0adf23..2d1cda76680 100644 --- a/packages/notifications/src/inAppMessaging/providers/pinpoint/utils/helpers.ts +++ b/packages/notifications/src/inAppMessaging/providers/pinpoint/utils/helpers.ts @@ -2,8 +2,14 @@ // SPDX-License-Identifier: Apache-2.0 import { ConsoleLogger } from '@aws-amplify/core'; -import { InAppMessagingAction } from '@aws-amplify/core/internals/utils'; -import type { InAppMessageCampaign as PinpointInAppMessage } from '@aws-amplify/core/internals/aws-clients/pinpoint'; +import { + InAppMessagingAction, + getClientInfo, +} from '@aws-amplify/core/internals/utils'; +import type { + InAppMessageButton, + InAppMessageCampaign as PinpointInAppMessage, +} from '@aws-amplify/core/internals/aws-clients/pinpoint'; import isEmpty from 'lodash/isEmpty.js'; import { record as recordCore } from '@aws-amplify/core/internals/providers/pinpoint'; @@ -16,6 +22,7 @@ import { InAppMessagingEvent, } from '../../../types'; import { MetricsComparator, PinpointMessageEvent } from '../types'; +import { ButtonConfigPlatform } from '../../../types/message'; import { resolveConfig } from './resolveConfig'; import { resolveCredentials } from './resolveCredentials'; @@ -251,6 +258,9 @@ export const interpretLayout = ( export const extractContent = ({ InAppMessage: message, }: PinpointInAppMessage): InAppMessageContent[] => { + const clientInfo = getClientInfo(); + const configPlatform = mapOSPlatform(clientInfo?.platform); + return ( message?.Content?.map(content => { const { @@ -261,8 +271,13 @@ export const extractContent = ({ PrimaryBtn, SecondaryBtn, } = content; - const defaultPrimaryButton = PrimaryBtn?.DefaultConfig; - const defaultSecondaryButton = SecondaryBtn?.DefaultConfig; + + const defaultPrimaryButton = getButtonConfig(configPlatform, PrimaryBtn); + const defaultSecondaryButton = getButtonConfig( + configPlatform, + SecondaryBtn, + ); + const extractedContent: InAppMessageContent = {}; if (BackgroundColor) { extractedContent.container = { @@ -341,3 +356,37 @@ export const extractMetadata = ({ priority: Priority, treatmentId: TreatmentId, }); + +export const mapOSPlatform = (os?: string): ButtonConfigPlatform => { + if (!os) return 'DefaultConfig'; + // Check if running in a web browser + if (typeof window !== 'undefined' && typeof window.document !== 'undefined') { + return 'Web'; + } + // Native environment checks + switch (os) { + case 'android': + return 'Android'; + case 'ios': + return 'IOS'; + default: + return 'DefaultConfig'; + } +}; + +const getButtonConfig = ( + configPlatform: ButtonConfigPlatform, + button?: InAppMessageButton, +): InAppMessageButton['DefaultConfig'] | undefined => { + if (!button?.DefaultConfig) { + return; + } + if (!configPlatform || !button?.[configPlatform]) { + return button?.DefaultConfig; + } + + return { + ...button.DefaultConfig, + ...button[configPlatform], + }; +}; diff --git a/packages/notifications/src/inAppMessaging/types/message.ts b/packages/notifications/src/inAppMessaging/types/message.ts index 0e84cacf9f9..5bb37ea2ca8 100644 --- a/packages/notifications/src/inAppMessaging/types/message.ts +++ b/packages/notifications/src/inAppMessaging/types/message.ts @@ -13,6 +13,8 @@ export type InAppMessageAction = 'CLOSE' | 'DEEP_LINK' | 'LINK'; export type InAppMessageTextAlign = 'center' | 'left' | 'right'; +export type ButtonConfigPlatform = 'Android' | 'IOS' | 'Web' | 'DefaultConfig'; + interface InAppMessageContainer { style?: InAppMessageStyle; } diff --git a/packages/predictions/CHANGELOG.md b/packages/predictions/CHANGELOG.md index 7114bb1bf77..eb89bbbbf18 100644 --- a/packages/predictions/CHANGELOG.md +++ b/packages/predictions/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [6.0.28](https://github.com/aws-amplify/amplify-js/compare/@aws-amplify/predictions@6.0.27...@aws-amplify/predictions@6.0.28) (2024-04-22) + +**Note:** Version bump only for package @aws-amplify/predictions + ## 6.0.27 (2024-04-02) **Note:** Version bump only for package @aws-amplify/predictions diff --git a/packages/predictions/package.json b/packages/predictions/package.json index af2760a60b1..a53b4014072 100644 --- a/packages/predictions/package.json +++ b/packages/predictions/package.json @@ -59,7 +59,7 @@ "@aws-amplify/core": "^6.0.0" }, "devDependencies": { - "@aws-amplify/core": "6.0.27", + "@aws-amplify/core": "6.0.28", "typescript": "5.0.2" }, "size-limit": [ diff --git a/packages/pubsub/CHANGELOG.md b/packages/pubsub/CHANGELOG.md index 2d7da8f218d..600e7ed4160 100644 --- a/packages/pubsub/CHANGELOG.md +++ b/packages/pubsub/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [6.0.29](https://github.com/aws-amplify/amplify-js/compare/@aws-amplify/pubsub@6.0.28...@aws-amplify/pubsub@6.0.29) (2024-04-24) + +**Note:** Version bump only for package @aws-amplify/pubsub + +## [6.0.28](https://github.com/aws-amplify/amplify-js/compare/@aws-amplify/pubsub@6.0.27...@aws-amplify/pubsub@6.0.28) (2024-04-22) + +**Note:** Version bump only for package @aws-amplify/pubsub + ## 6.0.27 (2024-04-02) **Note:** Version bump only for package @aws-amplify/pubsub diff --git a/packages/pubsub/package.json b/packages/pubsub/package.json index 33f02e209ea..9818fc8b1ff 100644 --- a/packages/pubsub/package.json +++ b/packages/pubsub/package.json @@ -84,7 +84,7 @@ "@aws-amplify/core": "^6.0.0" }, "devDependencies": { - "@aws-amplify/core": "6.0.27", + "@aws-amplify/core": "6.0.28", "typescript": "5.0.2" }, "size-limit": [ diff --git a/packages/storage/CHANGELOG.md b/packages/storage/CHANGELOG.md index 36ba459b841..ebcb9620d60 100644 --- a/packages/storage/CHANGELOG.md +++ b/packages/storage/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [6.0.28](https://github.com/aws-amplify/amplify-js/compare/@aws-amplify/storage@6.0.27...@aws-amplify/storage@6.0.28) (2024-04-22) + +**Note:** Version bump only for package @aws-amplify/storage + ## 6.0.27 (2024-04-02) **Note:** Version bump only for package @aws-amplify/storage diff --git a/packages/storage/package.json b/packages/storage/package.json index 5e1cc6687db..7086c520b72 100644 --- a/packages/storage/package.json +++ b/packages/storage/package.json @@ -101,7 +101,7 @@ "@aws-amplify/core": "^6.0.0" }, "devDependencies": { - "@aws-amplify/core": "6.0.27", + "@aws-amplify/core": "6.0.28", "@aws-amplify/react-native": "1.0.28", "typescript": "5.0.2" } diff --git a/scripts/tsc-compliance-test/CHANGELOG.md b/scripts/tsc-compliance-test/CHANGELOG.md index 938d5be3433..baec9d1048e 100644 --- a/scripts/tsc-compliance-test/CHANGELOG.md +++ b/scripts/tsc-compliance-test/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.1.30](https://github.com/aws-amplify/amplify-js/compare/tsc-compliance-test@0.1.29...tsc-compliance-test@0.1.30) (2024-04-24) + +**Note:** Version bump only for package tsc-compliance-test + +## [0.1.29](https://github.com/aws-amplify/amplify-js/compare/tsc-compliance-test@0.1.28...tsc-compliance-test@0.1.29) (2024-04-22) + +**Note:** Version bump only for package tsc-compliance-test + ## [0.1.28](https://github.com/aws-amplify/amplify-js/compare/tsc-compliance-test@0.1.27...tsc-compliance-test@0.1.28) (2024-04-09) **Note:** Version bump only for package tsc-compliance-test diff --git a/scripts/tsc-compliance-test/package.json b/scripts/tsc-compliance-test/package.json index d80a56af787..dddf4ce167f 100644 --- a/scripts/tsc-compliance-test/package.json +++ b/scripts/tsc-compliance-test/package.json @@ -1,10 +1,10 @@ { "name": "tsc-compliance-test", - "version": "0.1.28", + "version": "0.1.30", "license": "MIT", "private": true, "devDependencies": { - "@types/node": "^16.11.7", + "@types/node": "16.18.82", "aws-amplify": "6.1.3", "typescript": "4.2.x" }, diff --git a/yarn.lock b/yarn.lock index b27632aa05c..182e8479aee 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15,26 +15,28 @@ "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@aws-amplify/data-schema-types@*", "@aws-amplify/data-schema-types@^0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@aws-amplify/data-schema-types/-/data-schema-types-0.8.0.tgz#9a5ffa77c4d06ce697e41906d41677faa6ee48aa" - integrity sha512-irfYm8uY7H8IfCNYSoep2/rxkk+n9/PTEvWVuEMZ24aYfQoDaS21Kb85DyGVZEr4LtNtTpiE1itFC0W8pCOtvA== +"@aws-amplify/data-schema-types@*": + version "0.10.0" + resolved "https://registry.yarnpkg.com/@aws-amplify/data-schema-types/-/data-schema-types-0.10.0.tgz#ac5bcf51992210534fd7ece9de69932baf0c4bb8" + integrity sha512-HIfSGPcqDu7ZyHzncGiTPDElOKl7N/ZGBF1T0RWlm7jqNVOl6AYzr9dMyPSw7/e8p5SxlKNxhUoyvo7iwkWXww== dependencies: "@aws-amplify/plugin-types" "^0.9.0-beta.1" + graphql "15.8.0" rxjs "^7.8.1" -"@aws-amplify/data-schema@^0.15.0": - version "0.15.0" - resolved "https://registry.yarnpkg.com/@aws-amplify/data-schema/-/data-schema-0.15.0.tgz#3f35f70b6cb56ec861f054b45b3b881092e5d3f7" - integrity sha512-JMuVnPN14VTBnfNH1hB2Cdnuxnu63ib2+Z5TU2WnWbFOCjQImkNV45Wx8diky7t+JiBZNlLGLclp46JuZkGM2A== +"@aws-amplify/data-schema@^0.17.0": + version "0.17.0" + resolved "https://registry.yarnpkg.com/@aws-amplify/data-schema/-/data-schema-0.17.0.tgz#f6950c3e66fcc17acfdceb67f562e87c15e47698" + integrity sha512-UTKz2Jpd7aLPlLql/eY1hINXRsIIW7bUxNU0uVzxUaj8Jk31delAT2qvOeSkCE8He66VSPrpYKXLp3w8tlMUAA== dependencies: "@aws-amplify/data-schema-types" "*" "@types/aws-lambda" "^8.10.134" + rxjs "^7.8.1" "@aws-amplify/plugin-types@^0.9.0-beta.1": - version "0.9.0-beta.2" - resolved "https://registry.yarnpkg.com/@aws-amplify/plugin-types/-/plugin-types-0.9.0-beta.2.tgz#71f82cbe701615eafe35b8a5288f564ea2c17537" - integrity sha512-jQLNPuvVban9bZAqx3Qthf6ZVrV4QmxLsExiDY456CnZWZwHAtFxNPF6v4r64Og7NhzWB/kxa/QuS+d8cwLZ/A== + version "0.9.0" + resolved "https://registry.yarnpkg.com/@aws-amplify/plugin-types/-/plugin-types-0.9.0.tgz#45a3361bac7fcb74d0ceecabe84f0627d0812a89" + integrity sha512-dOwuyjRWKHvKSxcCwycdBTb6clRr2/soW1hL+HaXyTN69+dQanQegpS6ylmVwbPPiy9q2LCbqaw+5Np7bacLgw== "@aws-crypto/crc32@3.0.0": version "3.0.0" @@ -4858,9 +4860,9 @@ integrity sha512-5ZZ5+YGmUE01yejiXsKnTcvhakMZ2UllZlMsQni53Doc1JWhe21ia8VntRoRD6fAEWw08JBh/z9qQHJ+//MrIg== "@types/aws-lambda@^8.10.134": - version "8.10.137" - resolved "https://registry.yarnpkg.com/@types/aws-lambda/-/aws-lambda-8.10.137.tgz#c9998a944541afdd6df0d159e9ec9c23dfe5fb40" - integrity sha512-YNFwzVarXAOXkjuFxONyDw1vgRNzyH8AuyN19s0bM+ChSu/bzxb5XPxYFLXoqoM+tvgzwR3k7fXcEOW125yJxg== + version "8.10.136" + resolved "https://registry.yarnpkg.com/@types/aws-lambda/-/aws-lambda-8.10.136.tgz#12a2af86b9123f4e4549992b27e1bf0dcf60d9f9" + integrity sha512-cmmgqxdVGhxYK9lZMYYXYRJk6twBo53ivtXjIUEFZxfxe4TkZTZBK3RRWrY2HjJcUIix0mdifn15yjOAat5lTA== "@types/babel__core@^7.1.14": version "7.20.5" @@ -5029,7 +5031,7 @@ dependencies: undici-types "~5.26.4" -"@types/node@^16.11.7": +"@types/node@16.18.82": version "16.18.82" resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.82.tgz#58d734b4acaa5be339864bbec9cd8024dd0b43d5" integrity sha512-pcDZtkx9z8XYV+ius2P3Ot2VVrcYOfXffBQUBuiszrlUzKSmoDYqo+mV+IoL8iIiIjjtOMvNSmH1hwJ+Q+f96Q== @@ -14205,16 +14207,7 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" -"string-width-cjs@npm:string-width@^4.2.0": - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -14282,7 +14275,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -14296,13 +14289,6 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - strip-ansi@^7.0.1: version "7.1.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" @@ -15495,7 +15481,7 @@ wordwrap@^1.0.0: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -15522,15 +15508,6 @@ wrap-ansi@^6.0.1, wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214"