diff --git a/.buildinfo b/.buildinfo new file mode 100644 index 00000000..5b426202 --- /dev/null +++ b/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: dcc52364a7347a6e40def564c63d0350 +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/CNAME b/CNAME new file mode 100644 index 00000000..8f20aa3c --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +progmod.no diff --git a/README.html b/README.html new file mode 100644 index 00000000..97c4c111 --- /dev/null +++ b/README.html @@ -0,0 +1,986 @@ + + + + + + + + + ProMod — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+
+ + + + + +
+
+ +
+ + + + + + + + + + + + + + +
+
+ + + +
+ +
+
+ +
+ + + + +
+
+ +
+
+ + + + + + +
+
+
+ + + +
+

ProMod

+ +
+
+ +
+
+
+ +
+ +
+

ProMod#

+
+ + + + +
+ + + + +
+ +
+
+
+ +
+ + + + +
+ + + +
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/_images/0300c7be497769f7336f776c01af6c0a3ff2b673a27467437a684c675171cf72.png b/_images/0300c7be497769f7336f776c01af6c0a3ff2b673a27467437a684c675171cf72.png new file mode 100644 index 00000000..68f78231 Binary files /dev/null and b/_images/0300c7be497769f7336f776c01af6c0a3ff2b673a27467437a684c675171cf72.png differ diff --git a/_images/0491e1e92319233093fd5e7fead7066803010bfb0e80f9c11e344fbf8313ef50.png b/_images/0491e1e92319233093fd5e7fead7066803010bfb0e80f9c11e344fbf8313ef50.png new file mode 100644 index 00000000..18ee2b28 Binary files /dev/null and b/_images/0491e1e92319233093fd5e7fead7066803010bfb0e80f9c11e344fbf8313ef50.png differ diff --git a/_images/06f0f3a8df685a4acaa1272bdaaa2c21c8d96ddeb4900849eaec8a88afc192de.png b/_images/06f0f3a8df685a4acaa1272bdaaa2c21c8d96ddeb4900849eaec8a88afc192de.png new file mode 100644 index 00000000..3283e69a Binary files /dev/null and b/_images/06f0f3a8df685a4acaa1272bdaaa2c21c8d96ddeb4900849eaec8a88afc192de.png differ diff --git a/_images/074d577fc0c2bdb7c44c14c82e16ae6172a4972bb34f3cd8ab67039e705ad80d.png b/_images/074d577fc0c2bdb7c44c14c82e16ae6172a4972bb34f3cd8ab67039e705ad80d.png new file mode 100644 index 00000000..4a7e271b Binary files /dev/null and b/_images/074d577fc0c2bdb7c44c14c82e16ae6172a4972bb34f3cd8ab67039e705ad80d.png differ diff --git a/_images/078845904526f1de40ba5ca3a173afbfeae2df84a52c3326796de962e84cb472.png b/_images/078845904526f1de40ba5ca3a173afbfeae2df84a52c3326796de962e84cb472.png new file mode 100644 index 00000000..e06bc262 Binary files /dev/null and b/_images/078845904526f1de40ba5ca3a173afbfeae2df84a52c3326796de962e84cb472.png differ diff --git a/_images/09ebbf0cf8f149190963f7f5824d283c2a4ceca8c3a3d765865917474edfc3ae.png b/_images/09ebbf0cf8f149190963f7f5824d283c2a4ceca8c3a3d765865917474edfc3ae.png new file mode 100644 index 00000000..6bb7f925 Binary files /dev/null and b/_images/09ebbf0cf8f149190963f7f5824d283c2a4ceca8c3a3d765865917474edfc3ae.png differ diff --git a/_images/0b18793c2e6ef0df310504faf22e79e4802a18f1e4db262635eae7cc13f62451.png b/_images/0b18793c2e6ef0df310504faf22e79e4802a18f1e4db262635eae7cc13f62451.png new file mode 100644 index 00000000..2458e208 Binary files /dev/null and b/_images/0b18793c2e6ef0df310504faf22e79e4802a18f1e4db262635eae7cc13f62451.png differ diff --git a/_images/1590c82e77863b29825a8a9f763654cfee2db128a3aa9677643597e7dba73c6d.png b/_images/1590c82e77863b29825a8a9f763654cfee2db128a3aa9677643597e7dba73c6d.png new file mode 100644 index 00000000..60867913 Binary files /dev/null and b/_images/1590c82e77863b29825a8a9f763654cfee2db128a3aa9677643597e7dba73c6d.png differ diff --git a/_images/1ea2efb14933094823172c8e5321cb492583dcfdec0cf791340323982ed25a86.png b/_images/1ea2efb14933094823172c8e5321cb492583dcfdec0cf791340323982ed25a86.png new file mode 100644 index 00000000..9fde01e0 Binary files /dev/null and b/_images/1ea2efb14933094823172c8e5321cb492583dcfdec0cf791340323982ed25a86.png differ diff --git a/_images/2a73b83587bea8742ea1c05f1e3d7a2b9c70d8bb4d92cb95e023c08e3d06b6c6.png b/_images/2a73b83587bea8742ea1c05f1e3d7a2b9c70d8bb4d92cb95e023c08e3d06b6c6.png new file mode 100644 index 00000000..89f816e4 Binary files /dev/null and b/_images/2a73b83587bea8742ea1c05f1e3d7a2b9c70d8bb4d92cb95e023c08e3d06b6c6.png differ diff --git a/_images/2e05f5a750b2558a8fb8e9ac2fdfc2b004e5d2e32e7a7200406b566cf098c810.png b/_images/2e05f5a750b2558a8fb8e9ac2fdfc2b004e5d2e32e7a7200406b566cf098c810.png new file mode 100644 index 00000000..33990569 Binary files /dev/null and b/_images/2e05f5a750b2558a8fb8e9ac2fdfc2b004e5d2e32e7a7200406b566cf098c810.png differ diff --git a/_images/2e71d882b6a2fd246fbecf8ffdbbe14c91ef236491184f8387ed59eaeefb1e4a.png b/_images/2e71d882b6a2fd246fbecf8ffdbbe14c91ef236491184f8387ed59eaeefb1e4a.png new file mode 100644 index 00000000..6a13284c Binary files /dev/null and b/_images/2e71d882b6a2fd246fbecf8ffdbbe14c91ef236491184f8387ed59eaeefb1e4a.png differ diff --git a/_images/2e90d7dcb2f3b6bdc7797db2bd4180cfd3989b629b045b4274528796c1bd0f34.png b/_images/2e90d7dcb2f3b6bdc7797db2bd4180cfd3989b629b045b4274528796c1bd0f34.png new file mode 100644 index 00000000..8d8cad1c Binary files /dev/null and b/_images/2e90d7dcb2f3b6bdc7797db2bd4180cfd3989b629b045b4274528796c1bd0f34.png differ diff --git a/_images/2f20ca85b4643f939e041a1d85e57cc0aff02bddcd62409e117ea3d553bd1451.png b/_images/2f20ca85b4643f939e041a1d85e57cc0aff02bddcd62409e117ea3d553bd1451.png new file mode 100644 index 00000000..b1c61201 Binary files /dev/null and b/_images/2f20ca85b4643f939e041a1d85e57cc0aff02bddcd62409e117ea3d553bd1451.png differ diff --git a/_images/3117535104d683b7a607ce112e5ba9fe9a870830b64b39d5002384960ce99401.png b/_images/3117535104d683b7a607ce112e5ba9fe9a870830b64b39d5002384960ce99401.png new file mode 100644 index 00000000..1528514b Binary files /dev/null and b/_images/3117535104d683b7a607ce112e5ba9fe9a870830b64b39d5002384960ce99401.png differ diff --git a/_images/31b54c42d6c2d606e6d17953220ba53c2deb59a11a5ab7b462cd15d9ddeba990.png b/_images/31b54c42d6c2d606e6d17953220ba53c2deb59a11a5ab7b462cd15d9ddeba990.png new file mode 100644 index 00000000..388e87b5 Binary files /dev/null and b/_images/31b54c42d6c2d606e6d17953220ba53c2deb59a11a5ab7b462cd15d9ddeba990.png differ diff --git a/_images/33b384dd47c247be7b66b45b566ae5db1a30328e352f4eb057a7643b84d25224.png b/_images/33b384dd47c247be7b66b45b566ae5db1a30328e352f4eb057a7643b84d25224.png new file mode 100644 index 00000000..67a7d5a1 Binary files /dev/null and b/_images/33b384dd47c247be7b66b45b566ae5db1a30328e352f4eb057a7643b84d25224.png differ diff --git a/_images/38b515ea3daf8aa65345953ca4c9e1f175577fe0167013cce7e863b47016382c.png b/_images/38b515ea3daf8aa65345953ca4c9e1f175577fe0167013cce7e863b47016382c.png new file mode 100644 index 00000000..4cbeb41f Binary files /dev/null and b/_images/38b515ea3daf8aa65345953ca4c9e1f175577fe0167013cce7e863b47016382c.png differ diff --git a/_images/39262e8437160fc0fa4e41b0e69a987e656a9e9c5a941c22c4744177ab496591.png b/_images/39262e8437160fc0fa4e41b0e69a987e656a9e9c5a941c22c4744177ab496591.png new file mode 100644 index 00000000..601b04b9 Binary files /dev/null and b/_images/39262e8437160fc0fa4e41b0e69a987e656a9e9c5a941c22c4744177ab496591.png differ diff --git a/_images/3960a309d73a241d2315cf289a1ff61fce34d8adc41b3b62b015176d668cad9f.png b/_images/3960a309d73a241d2315cf289a1ff61fce34d8adc41b3b62b015176d668cad9f.png new file mode 100644 index 00000000..b04d474a Binary files /dev/null and b/_images/3960a309d73a241d2315cf289a1ff61fce34d8adc41b3b62b015176d668cad9f.png differ diff --git a/_images/3a989f5d740b082f18625ed4d7e8426c87c004fc5943d6a88f599e931cff1bed.png b/_images/3a989f5d740b082f18625ed4d7e8426c87c004fc5943d6a88f599e931cff1bed.png new file mode 100644 index 00000000..ed146c24 Binary files /dev/null and b/_images/3a989f5d740b082f18625ed4d7e8426c87c004fc5943d6a88f599e931cff1bed.png differ diff --git a/_images/3d21dfafc76d930af24b8faf02ad81e560a8daf269c958d8e9aaaeb23693e751.png b/_images/3d21dfafc76d930af24b8faf02ad81e560a8daf269c958d8e9aaaeb23693e751.png new file mode 100644 index 00000000..51da276d Binary files /dev/null and b/_images/3d21dfafc76d930af24b8faf02ad81e560a8daf269c958d8e9aaaeb23693e751.png differ diff --git a/_images/3f36174fe5766039b2e491b78bec06ee11ba7a5f79f07819526a61e80248ce3d.png b/_images/3f36174fe5766039b2e491b78bec06ee11ba7a5f79f07819526a61e80248ce3d.png new file mode 100644 index 00000000..7c817caa Binary files /dev/null and b/_images/3f36174fe5766039b2e491b78bec06ee11ba7a5f79f07819526a61e80248ce3d.png differ diff --git a/_images/41091e2dd231f45077349bb1031fd1c0bddbc26b068912b73aa3a808c5d33560.png b/_images/41091e2dd231f45077349bb1031fd1c0bddbc26b068912b73aa3a808c5d33560.png new file mode 100644 index 00000000..a8e3e786 Binary files /dev/null and b/_images/41091e2dd231f45077349bb1031fd1c0bddbc26b068912b73aa3a808c5d33560.png differ diff --git a/_images/43367e1b17db03e1ebd10b514bcf75e643ca58391dd8042f470d8d3ac8953b4f.png b/_images/43367e1b17db03e1ebd10b514bcf75e643ca58391dd8042f470d8d3ac8953b4f.png new file mode 100644 index 00000000..07931edf Binary files /dev/null and b/_images/43367e1b17db03e1ebd10b514bcf75e643ca58391dd8042f470d8d3ac8953b4f.png differ diff --git a/_images/43ebfd6b7b35a3e45cc6585150e9044e5e174e7e5d327281e3d6a391075cb09a.png b/_images/43ebfd6b7b35a3e45cc6585150e9044e5e174e7e5d327281e3d6a391075cb09a.png new file mode 100644 index 00000000..93c8a3eb Binary files /dev/null and b/_images/43ebfd6b7b35a3e45cc6585150e9044e5e174e7e5d327281e3d6a391075cb09a.png differ diff --git a/_images/4bc2936e1f67fec6321b2aa0b8ce2af13b91ed7ec6192b2b9575c359a17f6fe4.png b/_images/4bc2936e1f67fec6321b2aa0b8ce2af13b91ed7ec6192b2b9575c359a17f6fe4.png new file mode 100644 index 00000000..1e611c7a Binary files /dev/null and b/_images/4bc2936e1f67fec6321b2aa0b8ce2af13b91ed7ec6192b2b9575c359a17f6fe4.png differ diff --git a/_images/4cddcc924adf7607a6e4575ebf441aa866de96aee8a77c526c7565f5abca90c6.png b/_images/4cddcc924adf7607a6e4575ebf441aa866de96aee8a77c526c7565f5abca90c6.png new file mode 100644 index 00000000..2ae43344 Binary files /dev/null and b/_images/4cddcc924adf7607a6e4575ebf441aa866de96aee8a77c526c7565f5abca90c6.png differ diff --git a/_images/5474ca83bc2ccfa6657b098b103299c24bc69e9aaf03f3532fc117543d207bc5.png b/_images/5474ca83bc2ccfa6657b098b103299c24bc69e9aaf03f3532fc117543d207bc5.png new file mode 100644 index 00000000..62db98e9 Binary files /dev/null and b/_images/5474ca83bc2ccfa6657b098b103299c24bc69e9aaf03f3532fc117543d207bc5.png differ diff --git a/_images/5995f8b95f2e3c78c19d9baf45fd1288610eeab223f1849943f59a5c2053658d.png b/_images/5995f8b95f2e3c78c19d9baf45fd1288610eeab223f1849943f59a5c2053658d.png new file mode 100644 index 00000000..dda8abe9 Binary files /dev/null and b/_images/5995f8b95f2e3c78c19d9baf45fd1288610eeab223f1849943f59a5c2053658d.png differ diff --git a/_images/59c5f36ba4130d5a34d72cc6d9d6ae0c56e5e22b75662dc5179558b55b164510.png b/_images/59c5f36ba4130d5a34d72cc6d9d6ae0c56e5e22b75662dc5179558b55b164510.png new file mode 100644 index 00000000..daa8086d Binary files /dev/null and b/_images/59c5f36ba4130d5a34d72cc6d9d6ae0c56e5e22b75662dc5179558b55b164510.png differ diff --git a/_images/5dc317a401e1ee4bbd97933eb575f2bffcefb5685caded7c9d32a8ee12c4ee5f.png b/_images/5dc317a401e1ee4bbd97933eb575f2bffcefb5685caded7c9d32a8ee12c4ee5f.png new file mode 100644 index 00000000..5b85e6e2 Binary files /dev/null and b/_images/5dc317a401e1ee4bbd97933eb575f2bffcefb5685caded7c9d32a8ee12c4ee5f.png differ diff --git a/_images/62f4853de0edbd86df6c69e73df8883983a22321ddcf604155b31f3342209328.png b/_images/62f4853de0edbd86df6c69e73df8883983a22321ddcf604155b31f3342209328.png new file mode 100644 index 00000000..dc62ac9b Binary files /dev/null and b/_images/62f4853de0edbd86df6c69e73df8883983a22321ddcf604155b31f3342209328.png differ diff --git a/_images/695988a6d8dcb461f5535c63df103f5b0b4bec26e1c47da232dc7a779f2b5a8c.png b/_images/695988a6d8dcb461f5535c63df103f5b0b4bec26e1c47da232dc7a779f2b5a8c.png new file mode 100644 index 00000000..4b597df9 Binary files /dev/null and b/_images/695988a6d8dcb461f5535c63df103f5b0b4bec26e1c47da232dc7a779f2b5a8c.png differ diff --git a/_images/6be7161bdb4b177ba71d003377b9d071a898e2a1b2254b190fbe7074774bf853.png b/_images/6be7161bdb4b177ba71d003377b9d071a898e2a1b2254b190fbe7074774bf853.png new file mode 100644 index 00000000..a7fe75b6 Binary files /dev/null and b/_images/6be7161bdb4b177ba71d003377b9d071a898e2a1b2254b190fbe7074774bf853.png differ diff --git a/_images/715dda1e7c2832668a6f076b7321f9573077ff2411fde3e678bfe3e86c9c0654.png b/_images/715dda1e7c2832668a6f076b7321f9573077ff2411fde3e678bfe3e86c9c0654.png new file mode 100644 index 00000000..972f790c Binary files /dev/null and b/_images/715dda1e7c2832668a6f076b7321f9573077ff2411fde3e678bfe3e86c9c0654.png differ diff --git a/_images/7431ca11e2ec6477c4eb68b1a605551cb75831c8a5a3080b22afc10396d067b6.png b/_images/7431ca11e2ec6477c4eb68b1a605551cb75831c8a5a3080b22afc10396d067b6.png new file mode 100644 index 00000000..73b67a70 Binary files /dev/null and b/_images/7431ca11e2ec6477c4eb68b1a605551cb75831c8a5a3080b22afc10396d067b6.png differ diff --git a/_images/78b50b1f112a30b4fa4d21c99314dfb7dc1d1646f1ffa4e6277ecbfe008d15cd.png b/_images/78b50b1f112a30b4fa4d21c99314dfb7dc1d1646f1ffa4e6277ecbfe008d15cd.png new file mode 100644 index 00000000..ebf5f235 Binary files /dev/null and b/_images/78b50b1f112a30b4fa4d21c99314dfb7dc1d1646f1ffa4e6277ecbfe008d15cd.png differ diff --git a/_images/8060312ef77d987b8d12addf21cb5591a69ba4f4439dcd4598a83d487a8cddc1.png b/_images/8060312ef77d987b8d12addf21cb5591a69ba4f4439dcd4598a83d487a8cddc1.png new file mode 100644 index 00000000..3317968b Binary files /dev/null and b/_images/8060312ef77d987b8d12addf21cb5591a69ba4f4439dcd4598a83d487a8cddc1.png differ diff --git a/_images/820328cb6d0b14cdab80081959d8119e44f4fcabe714059fb804c0a67ffdfcdd.png b/_images/820328cb6d0b14cdab80081959d8119e44f4fcabe714059fb804c0a67ffdfcdd.png new file mode 100644 index 00000000..cc52ae5d Binary files /dev/null and b/_images/820328cb6d0b14cdab80081959d8119e44f4fcabe714059fb804c0a67ffdfcdd.png differ diff --git a/_images/822bb093ce5d8e8331f4d28f1b58fe00d16582985b3d4e9145c1457e3b55d4d6.png b/_images/822bb093ce5d8e8331f4d28f1b58fe00d16582985b3d4e9145c1457e3b55d4d6.png new file mode 100644 index 00000000..cd2b0418 Binary files /dev/null and b/_images/822bb093ce5d8e8331f4d28f1b58fe00d16582985b3d4e9145c1457e3b55d4d6.png differ diff --git a/_images/824e9c3dcccad88610852dd4b1acbe552b27c553b42c860c74decac03355e1b3.png b/_images/824e9c3dcccad88610852dd4b1acbe552b27c553b42c860c74decac03355e1b3.png new file mode 100644 index 00000000..27ed40cd Binary files /dev/null and b/_images/824e9c3dcccad88610852dd4b1acbe552b27c553b42c860c74decac03355e1b3.png differ diff --git a/_images/82b0112ac0d65af2c6f948ee1cb8bcf960abb3ceaa33fba5b7b19d2774da4ade.png b/_images/82b0112ac0d65af2c6f948ee1cb8bcf960abb3ceaa33fba5b7b19d2774da4ade.png new file mode 100644 index 00000000..24b2e517 Binary files /dev/null and b/_images/82b0112ac0d65af2c6f948ee1cb8bcf960abb3ceaa33fba5b7b19d2774da4ade.png differ diff --git a/_images/843d69fc2513037a3611755a5b75865a4fb482aa711fb5ad47f89b738471bc4c.png b/_images/843d69fc2513037a3611755a5b75865a4fb482aa711fb5ad47f89b738471bc4c.png new file mode 100644 index 00000000..8b3ea57a Binary files /dev/null and b/_images/843d69fc2513037a3611755a5b75865a4fb482aa711fb5ad47f89b738471bc4c.png differ diff --git a/_images/86fd817870de92f0d86ea7ed39de9cc27c811f84cb216cb1d02a095d0603fed0.png b/_images/86fd817870de92f0d86ea7ed39de9cc27c811f84cb216cb1d02a095d0603fed0.png new file mode 100644 index 00000000..7b3bf551 Binary files /dev/null and b/_images/86fd817870de92f0d86ea7ed39de9cc27c811f84cb216cb1d02a095d0603fed0.png differ diff --git a/_images/8739d12f7dfac7822aa1b905b4894e700c88e474cd3ad3c18606a79946c6ca52.png b/_images/8739d12f7dfac7822aa1b905b4894e700c88e474cd3ad3c18606a79946c6ca52.png new file mode 100644 index 00000000..a59893d6 Binary files /dev/null and b/_images/8739d12f7dfac7822aa1b905b4894e700c88e474cd3ad3c18606a79946c6ca52.png differ diff --git a/_images/88848d68293aa485b3a27ac28a910611e3af7ad1f87635fde74e2631d6c9ba58.png b/_images/88848d68293aa485b3a27ac28a910611e3af7ad1f87635fde74e2631d6c9ba58.png new file mode 100644 index 00000000..b263a9eb Binary files /dev/null and b/_images/88848d68293aa485b3a27ac28a910611e3af7ad1f87635fde74e2631d6c9ba58.png differ diff --git a/_images/8b1b8865688b47115714cb053a0d92205a9a49961ad4b9fd9ab2a95e59982a98.png b/_images/8b1b8865688b47115714cb053a0d92205a9a49961ad4b9fd9ab2a95e59982a98.png new file mode 100644 index 00000000..413f030b Binary files /dev/null and b/_images/8b1b8865688b47115714cb053a0d92205a9a49961ad4b9fd9ab2a95e59982a98.png differ diff --git a/_images/8b8100aaa88d3519be2e0043360c4f3c0b35bdf7079122831a6d3e8cfd6cd7b0.png b/_images/8b8100aaa88d3519be2e0043360c4f3c0b35bdf7079122831a6d3e8cfd6cd7b0.png new file mode 100644 index 00000000..22d201f6 Binary files /dev/null and b/_images/8b8100aaa88d3519be2e0043360c4f3c0b35bdf7079122831a6d3e8cfd6cd7b0.png differ diff --git a/_images/8db497e1e4e19f6dc7688345fba54b8eab8346696a6be78c4be28838eb9c6d1e.png b/_images/8db497e1e4e19f6dc7688345fba54b8eab8346696a6be78c4be28838eb9c6d1e.png new file mode 100644 index 00000000..e719b4b4 Binary files /dev/null and b/_images/8db497e1e4e19f6dc7688345fba54b8eab8346696a6be78c4be28838eb9c6d1e.png differ diff --git a/_images/90689173cfb73ca2d496af6d98329d29d44f823c984a1cb677c21307cd67c0f7.png b/_images/90689173cfb73ca2d496af6d98329d29d44f823c984a1cb677c21307cd67c0f7.png new file mode 100644 index 00000000..c1480f04 Binary files /dev/null and b/_images/90689173cfb73ca2d496af6d98329d29d44f823c984a1cb677c21307cd67c0f7.png differ diff --git a/_images/92bc01781c6dfc740ed85bca74bc8468d8b764236980f6965d96cf4294a51a29.png b/_images/92bc01781c6dfc740ed85bca74bc8468d8b764236980f6965d96cf4294a51a29.png new file mode 100644 index 00000000..56c18e8a Binary files /dev/null and b/_images/92bc01781c6dfc740ed85bca74bc8468d8b764236980f6965d96cf4294a51a29.png differ diff --git a/_images/9a89d6854899bad4609317cd061cc30f0846cb7450a8cb666be32d6af241a7d9.png b/_images/9a89d6854899bad4609317cd061cc30f0846cb7450a8cb666be32d6af241a7d9.png new file mode 100644 index 00000000..d45d3f0f Binary files /dev/null and b/_images/9a89d6854899bad4609317cd061cc30f0846cb7450a8cb666be32d6af241a7d9.png differ diff --git a/_images/a12332cec3e85cdf9fe42fc691faaceb7fb27f45a78e17a56a08d1cebe5f0f38.png b/_images/a12332cec3e85cdf9fe42fc691faaceb7fb27f45a78e17a56a08d1cebe5f0f38.png new file mode 100644 index 00000000..8d1584c3 Binary files /dev/null and b/_images/a12332cec3e85cdf9fe42fc691faaceb7fb27f45a78e17a56a08d1cebe5f0f38.png differ diff --git a/_images/aa41fff3f835f7cf1dd52cea254b0b821e3bfa8892eff69382ca3e0d390f3349.png b/_images/aa41fff3f835f7cf1dd52cea254b0b821e3bfa8892eff69382ca3e0d390f3349.png new file mode 100644 index 00000000..1ca18047 Binary files /dev/null and b/_images/aa41fff3f835f7cf1dd52cea254b0b821e3bfa8892eff69382ca3e0d390f3349.png differ diff --git a/_images/acd99d6305c2c5b0405dd546bdeff24f5c1058b7dc0f8fdd6790beef60f0142d.png b/_images/acd99d6305c2c5b0405dd546bdeff24f5c1058b7dc0f8fdd6790beef60f0142d.png new file mode 100644 index 00000000..d5c7cfea Binary files /dev/null and b/_images/acd99d6305c2c5b0405dd546bdeff24f5c1058b7dc0f8fdd6790beef60f0142d.png differ diff --git a/_images/b171b2e3b415000d9bc1676033c21f3bae12d14889b78426d7d5ebd0a4b8e62b.png b/_images/b171b2e3b415000d9bc1676033c21f3bae12d14889b78426d7d5ebd0a4b8e62b.png new file mode 100644 index 00000000..d0dccf5d Binary files /dev/null and b/_images/b171b2e3b415000d9bc1676033c21f3bae12d14889b78426d7d5ebd0a4b8e62b.png differ diff --git a/_images/b624a85440b2f8f8b896392111317ab2b4f394a2ebc93fa8483e6dc56d70354a.png b/_images/b624a85440b2f8f8b896392111317ab2b4f394a2ebc93fa8483e6dc56d70354a.png new file mode 100644 index 00000000..7766eac6 Binary files /dev/null and b/_images/b624a85440b2f8f8b896392111317ab2b4f394a2ebc93fa8483e6dc56d70354a.png differ diff --git a/_images/b694b5603e6688126896a8a7f524f61588c3847cfd9a0e085207d59c4ff919ac.png b/_images/b694b5603e6688126896a8a7f524f61588c3847cfd9a0e085207d59c4ff919ac.png new file mode 100644 index 00000000..1723832d Binary files /dev/null and b/_images/b694b5603e6688126896a8a7f524f61588c3847cfd9a0e085207d59c4ff919ac.png differ diff --git a/_images/b8fca37aab4876351bc90beb83c2c19158aa00b445878da5d8224c668cf7b17b.png b/_images/b8fca37aab4876351bc90beb83c2c19158aa00b445878da5d8224c668cf7b17b.png new file mode 100644 index 00000000..6640dcd4 Binary files /dev/null and b/_images/b8fca37aab4876351bc90beb83c2c19158aa00b445878da5d8224c668cf7b17b.png differ diff --git a/_images/baf5300739aa4908dba227644c2772a8eaca7f8e113f3bb4f3adb7f0652e92e1.png b/_images/baf5300739aa4908dba227644c2772a8eaca7f8e113f3bb4f3adb7f0652e92e1.png new file mode 100644 index 00000000..13bbbfc3 Binary files /dev/null and b/_images/baf5300739aa4908dba227644c2772a8eaca7f8e113f3bb4f3adb7f0652e92e1.png differ diff --git a/_images/bd62d9b7a0632af407cc578af2075fb922a4e8f14f3d062eefa34d2cb05f134f.png b/_images/bd62d9b7a0632af407cc578af2075fb922a4e8f14f3d062eefa34d2cb05f134f.png new file mode 100644 index 00000000..8e61c790 Binary files /dev/null and b/_images/bd62d9b7a0632af407cc578af2075fb922a4e8f14f3d062eefa34d2cb05f134f.png differ diff --git a/_images/be108ea126bfce2da9dee46addb8cfb87f4d0eb8a5034ba4407033863206881d.png b/_images/be108ea126bfce2da9dee46addb8cfb87f4d0eb8a5034ba4407033863206881d.png new file mode 100644 index 00000000..35c3e2fa Binary files /dev/null and b/_images/be108ea126bfce2da9dee46addb8cfb87f4d0eb8a5034ba4407033863206881d.png differ diff --git a/_images/c0fd31cd9fa96b67edbd0c7fdde10735257e8fdb6d356b687c205c7e310272e5.png b/_images/c0fd31cd9fa96b67edbd0c7fdde10735257e8fdb6d356b687c205c7e310272e5.png new file mode 100644 index 00000000..50ee979e Binary files /dev/null and b/_images/c0fd31cd9fa96b67edbd0c7fdde10735257e8fdb6d356b687c205c7e310272e5.png differ diff --git a/_images/c9bfc9beb463a18026d32d86a2b0228a1f77c50924b74e339e89e13fdf191e63.png b/_images/c9bfc9beb463a18026d32d86a2b0228a1f77c50924b74e339e89e13fdf191e63.png new file mode 100644 index 00000000..812b0e3e Binary files /dev/null and b/_images/c9bfc9beb463a18026d32d86a2b0228a1f77c50924b74e339e89e13fdf191e63.png differ diff --git a/_images/daf942dd43adcf70ff832d44f3a1db5b4b7da5be1cdc3eb604efda45203db813.png b/_images/daf942dd43adcf70ff832d44f3a1db5b4b7da5be1cdc3eb604efda45203db813.png new file mode 100644 index 00000000..fd416144 Binary files /dev/null and b/_images/daf942dd43adcf70ff832d44f3a1db5b4b7da5be1cdc3eb604efda45203db813.png differ diff --git a/_images/e11c4f093345676678ed535b99d25e2358b6116c11b67e4e29faa82ad339bab2.png b/_images/e11c4f093345676678ed535b99d25e2358b6116c11b67e4e29faa82ad339bab2.png new file mode 100644 index 00000000..077e9e5d Binary files /dev/null and b/_images/e11c4f093345676678ed535b99d25e2358b6116c11b67e4e29faa82ad339bab2.png differ diff --git a/_images/e41f560e6efb11cecf94f7d9b80cf2fc3fe96085c27ce725460717be44708d9c.png b/_images/e41f560e6efb11cecf94f7d9b80cf2fc3fe96085c27ce725460717be44708d9c.png new file mode 100644 index 00000000..c161defc Binary files /dev/null and b/_images/e41f560e6efb11cecf94f7d9b80cf2fc3fe96085c27ce725460717be44708d9c.png differ diff --git a/_images/e8ce4b1fd36c66752db69954058bfedc5712f4287e89d52a14f04caa5f46229e.png b/_images/e8ce4b1fd36c66752db69954058bfedc5712f4287e89d52a14f04caa5f46229e.png new file mode 100644 index 00000000..f8ad2f8f Binary files /dev/null and b/_images/e8ce4b1fd36c66752db69954058bfedc5712f4287e89d52a14f04caa5f46229e.png differ diff --git a/_images/eb2c0c50232e8ee10c858a18b10488cab9656db52b44aec919f64f19baf99000.png b/_images/eb2c0c50232e8ee10c858a18b10488cab9656db52b44aec919f64f19baf99000.png new file mode 100644 index 00000000..4ed86a6c Binary files /dev/null and b/_images/eb2c0c50232e8ee10c858a18b10488cab9656db52b44aec919f64f19baf99000.png differ diff --git a/_images/eb4b7cdef67ea97baa3824f25528788261cdd5a727b7f8966584447e00741370.png b/_images/eb4b7cdef67ea97baa3824f25528788261cdd5a727b7f8966584447e00741370.png new file mode 100644 index 00000000..fd72e092 Binary files /dev/null and b/_images/eb4b7cdef67ea97baa3824f25528788261cdd5a727b7f8966584447e00741370.png differ diff --git a/_images/ef7404d0a9ed2237e6c77dbea281f29f3a887643ac42bd9dc92e149d10541404.png b/_images/ef7404d0a9ed2237e6c77dbea281f29f3a887643ac42bd9dc92e149d10541404.png new file mode 100644 index 00000000..aaa6b358 Binary files /dev/null and b/_images/ef7404d0a9ed2237e6c77dbea281f29f3a887643ac42bd9dc92e149d10541404.png differ diff --git a/_images/f0681d9c20edcb52108fad9f41b80e29e9a8e8f6246bbea8ef9b96bbbef76c5e.png b/_images/f0681d9c20edcb52108fad9f41b80e29e9a8e8f6246bbea8ef9b96bbbef76c5e.png new file mode 100644 index 00000000..5682fa7e Binary files /dev/null and b/_images/f0681d9c20edcb52108fad9f41b80e29e9a8e8f6246bbea8ef9b96bbbef76c5e.png differ diff --git a/_images/f4d0b4cefb2578b8a4ba3ef088ea4fe1d7cc35fe39694eded5c8d2074da491d2.png b/_images/f4d0b4cefb2578b8a4ba3ef088ea4fe1d7cc35fe39694eded5c8d2074da491d2.png new file mode 100644 index 00000000..bea43428 Binary files /dev/null and b/_images/f4d0b4cefb2578b8a4ba3ef088ea4fe1d7cc35fe39694eded5c8d2074da491d2.png differ diff --git a/_images/f5122c9722337dcdd40e9f3b8e0a6635c872a67a3f1403d11bdc77d8969b95ce.png b/_images/f5122c9722337dcdd40e9f3b8e0a6635c872a67a3f1403d11bdc77d8969b95ce.png new file mode 100644 index 00000000..ac463537 Binary files /dev/null and b/_images/f5122c9722337dcdd40e9f3b8e0a6635c872a67a3f1403d11bdc77d8969b95ce.png differ diff --git a/_images/f7a914ae99ec21e1ecfaaab5760b6d022bec945e9995f9400897eccb00ba325b.png b/_images/f7a914ae99ec21e1ecfaaab5760b6d022bec945e9995f9400897eccb00ba325b.png new file mode 100644 index 00000000..3a5fff77 Binary files /dev/null and b/_images/f7a914ae99ec21e1ecfaaab5760b6d022bec945e9995f9400897eccb00ba325b.png differ diff --git a/_images/f7ae9087d4c5f7ff9669ecab3b3911c567d502661327ecc93ee410d32276c608.png b/_images/f7ae9087d4c5f7ff9669ecab3b3911c567d502661327ecc93ee410d32276c608.png new file mode 100644 index 00000000..a09980a7 Binary files /dev/null and b/_images/f7ae9087d4c5f7ff9669ecab3b3911c567d502661327ecc93ee410d32276c608.png differ diff --git a/_images/f8b63aa0b98a0f8831ac3c7ca0f31882a45cdbef61c518a7bf4c6cc8524a32ee.png b/_images/f8b63aa0b98a0f8831ac3c7ca0f31882a45cdbef61c518a7bf4c6cc8524a32ee.png new file mode 100644 index 00000000..2431de17 Binary files /dev/null and b/_images/f8b63aa0b98a0f8831ac3c7ca0f31882a45cdbef61c518a7bf4c6cc8524a32ee.png differ diff --git a/_images/fa1f5774a5a1badb497922da7b485ff31172d95d88a144988128c1ea08e776ac.png b/_images/fa1f5774a5a1badb497922da7b485ff31172d95d88a144988128c1ea08e776ac.png new file mode 100644 index 00000000..89ddb2e7 Binary files /dev/null and b/_images/fa1f5774a5a1badb497922da7b485ff31172d95d88a144988128c1ea08e776ac.png differ diff --git a/_images/fbe207c3f3e4f1b4c6d912bfc31b2e68287c362f14141cac4191864d23cb4348.png b/_images/fbe207c3f3e4f1b4c6d912bfc31b2e68287c362f14141cac4191864d23cb4348.png new file mode 100644 index 00000000..b5892088 Binary files /dev/null and b/_images/fbe207c3f3e4f1b4c6d912bfc31b2e68287c362f14141cac4191864d23cb4348.png differ diff --git a/_images/fe39371f27b679b763b859d1f891937e2ffe068571387bed4d6e106b1033c51d.png b/_images/fe39371f27b679b763b859d1f891937e2ffe068571387bed4d6e106b1033c51d.png new file mode 100644 index 00000000..0ba884a8 Binary files /dev/null and b/_images/fe39371f27b679b763b859d1f891937e2ffe068571387bed4d6e106b1033c51d.png differ diff --git a/_images/ff55ac88edb7cdb8136afef88dd945ed6affa18859770710fb83734b2688362b.png b/_images/ff55ac88edb7cdb8136afef88dd945ed6affa18859770710fb83734b2688362b.png new file mode 100644 index 00000000..ebfebe98 Binary files /dev/null and b/_images/ff55ac88edb7cdb8136afef88dd945ed6affa18859770710fb83734b2688362b.png differ diff --git a/_images/graf1.png b/_images/graf1.png new file mode 100644 index 00000000..9c807137 Binary files /dev/null and b/_images/graf1.png differ diff --git a/_images/pingvindata.png b/_images/pingvindata.png new file mode 100644 index 00000000..95d2467c Binary files /dev/null and b/_images/pingvindata.png differ diff --git a/_images/pingviner.png b/_images/pingviner.png new file mode 100644 index 00000000..736ae89b Binary files /dev/null and b/_images/pingviner.png differ diff --git a/_sources/README.md b/_sources/README.md new file mode 100644 index 00000000..e2f21ec9 --- /dev/null +++ b/_sources/README.md @@ -0,0 +1 @@ +# ProMod diff --git a/_sources/datafiler.ipynb b/_sources/datafiler.ipynb new file mode 100644 index 00000000..1f105c2b --- /dev/null +++ b/_sources/datafiler.ipynb @@ -0,0 +1,50 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Datafiler\n", + "\n", + "[titreringsdata.txt](https://www.uio.no/studier/emner/matnat/ifi/IN-KJM1900/h21/datafiler/titreringsdata.txt?vrtx=source)\n", + "\n", + "[alder_kjonn.txt](https://www.uio.no/studier/emner/matnat/natfag/NAT3000/h21/datafiler/alder_kjonn.txt)\n", + "\n", + "[antall-meldte-covid-19.txt](https://www.uio.no/studier/emner/matnat/natfag/NAT3000/h21/datafiler/antall-meldte-covid-19.txt)\n", + "\n", + "[D5_naringskjede_organisme.txt](https://www.uio.no/studier/emner/matnat/natfag/NAT3000/h21/datafiler/d5_naringskjede_organisme.txt)\n", + "\n", + "[D5_naringskjede_trofisk.txt](https://www.uio.no/studier/emner/matnat/natfag/NAT3000/h21/datafiler/d5_naringskjede_trofisk.txt)\n", + "\n", + "[vin.csv](https://www.uio.no/studier/emner/matnat/ifi/IN-KJM1900/h20/datafiler/vin.csv)\n", + "\n", + "[iris.csv](https://www.uio.no/studier/emner/matnat/natfag/NAT3000/h21/datafiler/iris.csv)\n", + "\n", + "[cars.txt](https://www.uio.no/studier/emner/matnat/natfag/NAT3000/h21/datafiler/mtcars.txt)\n", + "\n", + "[pingviner.txt](https://www.uio.no/studier/emner/matnat/ifi/IN-KJM1900/h21/datafiler/penguings.txt)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/datafiler.ipynb b/_sources/docs/datafiler.ipynb new file mode 100644 index 00000000..04114b64 --- /dev/null +++ b/_sources/docs/datafiler.ipynb @@ -0,0 +1,58 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Datafiler\n", + "\n", + "[solflekker.txt](https://raw.githubusercontent.com/andreasdh/Programmering-og-modellering/master/docs/Datafiler/solflekker.txt)\n", + "\n", + "[temperatur.txt](https://raw.githubusercontent.com/andreasdh/Programmering-og-modellering/master/docs/Datafiler/temperatur.txt)\n", + "\n", + "[heistur.txt](https://raw.githubusercontent.com/andreasdh/programmering-i-kjemi/master/docs/datafiler/heistur_kjemi_fysikk.txt)\n", + "\n", + "[titrering.txt](https://www.uio.no/studier/emner/matnat/ifi/IN-KJM1900/h20/datafiler/titrering.txt)\n", + "\n", + "[vin.csv](https://www.uio.no/studier/emner/matnat/ifi/IN-KJM1900/h20/datafiler/vin.csv)\n", + "\n", + "[influensa.txt](https://www.uio.no/studier/emner/matnat/ifi/IN-KJM1900/h20/datafiler/influensa.txt)\n", + "\n", + "[covid19.csv](https://www.uio.no/studier/emner/matnat/ifi/IN-KJM1900/h20/datafiler/covid19.csv)\n", + "\n", + "[posisjon.txt](https://www.uio.no/studier/emner/matnat/ifi/IN-KJM1900/h20/datafiler/posisjon.txt)\n", + "\n", + "[vin.csv](https://www.uio.no/studier/emner/matnat/ifi/IN-KJM1900/h20/datafiler/vin.csv)\n", + "\n", + "[iris.csv](https://www.uio.no/studier/emner/matnat/natfag/NAT3000/h21/datafiler/iris.csv)\n", + "\n", + "[cars.txt](https://www.uio.no/studier/emner/matnat/natfag/NAT3000/h21/datafiler/mtcars.txt)\n", + "\n", + "[pingviner.txt](https://www.uio.no/studier/emner/matnat/ifi/IN-KJM1900/h21/datafiler/penguings.txt)\n", + "\n", + "[titanic.csv](https://raw.githubusercontent.com/andreasdh/Programmering-og-modellering/master/docs/Datafiler/titanic.csv)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/ekstra/Prosjekt i databehandling.ipynb b/_sources/docs/ekstra/Prosjekt i databehandling.ipynb new file mode 100644 index 00000000..d9bc5aff --- /dev/null +++ b/_sources/docs/ekstra/Prosjekt i databehandling.ipynb @@ -0,0 +1,189 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Prosjekt i databehandling\n", + "\n", + "Å kunne automatisere behandlingen av store mengder informasjon er en viktig del av programmering. I dette prosjektet skal dere prøve å knytte programmet deres til større databaser med informasjon, og trekke informasjonen ut av disse databasene. Deretter skal programmene deres tolke informasjonen og behandle dataene. \n", + "\n", + "Dere skal jobbe i grupper på 2–4 personer, og alle skal bidra til det ferdige produktet. Det er veldig vanlig å jobbe i grupper når en skal programmere i yrkeslivet, og det er nyttig å få litt innblikk i hvordan en slik prosess fungerer allerede nå. Det er viktig at dere fordeler oppgaver på en hensiktsmessig måte mellom dere. Dere velger først en prosjektleder som kan ha det overordna ansvaret for at alt skal henge sammen til slutt, og som delegerer oppgaver som trengs å gjøres. For at det skal være enkelt å fordele oppgaver, kan det være lurt å lage ulike funksjoner som gjør forskjellige operasjoner. Dere kan eventuelt sitte sammen og gjøre all programmeringa felles. Prosjektet skal munne ut i et ferdig program og en rapport fra prosjektarbeidet. \n", + "\n", + "Dere kan velge mellom tre naturvitenskapelige problemstillinger, men dere står også fritt til å lage et eget prosjekt, dersom dere har noen gode idéer. Snakk med læreren når dere har fått en idé som dere tror lar seg gjennomføre. Under evaluering av prosjektet blir det lagt vekt på:\n", + "\n", + "- God og strukturert kode\n", + "- Kreativ og velreflektert løsningsstrategi\n", + "- Realfaglig forståelse\n", + "- Grad av samarbeid\n", + "\n", + "Det kan være lurt å bruke Github for å samarbeide, og dere skal bruke Jupyter Notebook som leveringsformat, der dere skal lage en rapport med programmene integrert i rapporten. Rapporten skal inneholde:\n", + "- Nødvendig faglig matematisk/naturvitenskapelig teori.\n", + "- Litt teori rundt noe av det programmeringstekniske (som statistik behandling av data eller regresjon, dersom du bruker det).\n", + "- Drøfting av dataene og analysen dere har gjort.\n", + "\n", + "Nedenfor er forslag til oppgaver som dere kan fordype dere i." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## _Oppgave 1: Kjernefysiske reaksjoner (fysikk)_\n", + "\n", + "\n", + "\n", + "\n", + "### Teori \n", + "\n", + "Kjernefysiske prosesser blir stadig viktigere i vårt energikrevende samfunn, og det diskuteres stadig om kjernekraft er en av løsningene på miljø- og energiutfordringene vi står overfor i samfunnet vårt i dag. Prinsippet bak fisjonsreaktorer er at atomkjerner som er tyngre enn jern, spaltes opp ved å skyte nøytroner på dem. Da omdannes noe masse til energi ifølge Einsteins berømte masse-energilov: \n", + "\n", + "$E=mc^2$\n", + "\n", + "For å regne ut energien som frigjøres i en kjernefysisk prosess, regner en ut forskjellen i masse før og etter en kjernefysisk reaksjon, og ganger så denne massen med kvadratet av lysets hastighet. Det er slitsom og kjedelig å slå opp alle disse nuklidemassene i en tabell hver gang en skal gjøre beregninger, og da er det nyttig med et program som kan gjøre dette for oss! \n", + "\n", + "### Oppgave \n", + "\n", + "Lag et program som regner ut energien som frigjøres i en kjernefysisk reaksjon valgt av brukeren. Det kan være både fisjon, fusjon og radioaktive prosesser. Brukeren skal gi input for hvilke grunnstoffer hun har på høyre og venstre side av reaksjonspila. Fila som programmet skal hente informasjon fra, ligger [her](https://github.com/andreasdh/Programmering-og-modellering/blob/master/Prosjekter/Filer/Nuklider.txt)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## _Oppgave 2: Lineær regresjon (matematikk)_\n", + "\n", + "\n", + "\n", + "\n", + "### Teori \n", + "\n", + "I matematikk 1T diskuterer man at hvis man gjør målinger/observasjoner og plotter dette som punkter i et koordinatsystem, da kan man bruke *regresjon* for å finne en kurve som passer best til punktene. Helt konkret, i matematikk 1T brukte man GeoGebra til å finne en lineær funksjon, $f(x)=ax+b$, som passet best til punktene. Men, hva betyr 'best'? Hvordan finner man egentlig denne funksjonen? Hvor sikker kan vi være på funksjonsuttrykket vårt? Sagt på en annen måte, hva pokker er lineær regresjon og hva er matematikken bak det?\n", + "\n", + "Anta man har f.eks. tre punkter $(x_1,y_1), (x_2,y_2), (x_3,y_3)$ som ikke ligger på en linje. Hvis vi ønsker å finne en linje som passer 'best' til disse så kan man tenke seg at avstanden fra linja til punktene skal være minst mulig. Det betyr at hvis man kan lage et uttrykk for avstanden så bør man kunne derivere uttrykket for å finne et uttrykk for linja sammen med litt matematikk. \n", + "\n", + "\n", + "### Oppgave \n", + "\n", + "1. Finn ut hvordan man gjør lineær regresjon for tre punkter i planet ved å lage et uttrykk for avstanden/feilen og minimere med derivasjon.\n", + "2. Hva hadde skjedd hvis man hadde hatt flere enn tre punkter?\n", + "3. Lag et program et program der brukeren kan taste inn $n$ punkter og programmet gjør lineær regresjon.\n", + "4. Bruk programmet deres på et egnet stort datasett.\n", + "5. Sammenlignn lineær regresjonsbiblioteker i Python med deres eget program." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## _Oppgave 3: Klassifisering av irisblomster (biologi)_\n", + "\n", + "\n", + "\n", + "### Teori \n", + "Irisblomster er en slekt av opp mot 300 arter innenfor sverdliljefamilien. I 1936 klassifiserte genetikeren Ronald Fischer tre varieteter av irisblomster i denne slekten (se bildet ovenfor). Det ble da også samlet inn data for ulike individer av disse varietetene, spesielt lengde og bredde på begerblad (sepal) og kronblad (petal). Fila som programmet skal hente informasjon fra, ligger [her](https://github.com/andreasdh/Programmering-og-modellering/blob/master/Prosjekter/Filer/Iris.csv).\n", + "\n", + "### Oppgave \n", + "\n", + "- Les av og undersøk irisblomstdatasettet. \n", + "- Lag flere plott av ulike variabler mot hverandre og beskriv sammenhengen mellom dataene. Eksperimenter med farger og ulike typer plott (histogram, boksplott, linjeplott, punktplott osv.).\n", + "- Finn ut hvordan du kan utføre regresjon på datasettene. \n", + "- Gjør en passende regresjon med ulike variabler og forklar sammenhengen." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## _Oppgave 4: Eulers totientfunksjon (matematikk)_\n", + "\n", + "\n", + "\n", + "\n", + "### Teori \n", + "\n", + "To naturlige tall (heltall$\\geq 1$) er *innbyrdes primiske* hvis største fellesdivisor mellom tallene er 1. For eksempel, $6$ og $25$ er innbyrdes primiske fordi $1$ er de største heltallet som deler både $6$ og $25$. Gitt, et naturlig tall $n$ kan man spørre hvor mange tall er innbyrdes primiske med $n$ og mindre enn $n$? Et svar på dette er *Eulers totientfunksjon* $\\varphi(n)$ som angir antall naturlige tall innbyrdes primiske tall med $n$ mindre enn $n$. Denne funksjonen er relevant innen kryptering.\n", + "\n", + "I denne oppgaven skal du lage et datasett ved å lese informasjon fra et nettsted. Deretter skal du bruke datasettet ditt til å utforske egenskaper med funksjonen, og så skal du produsere et stort datasett med verdier og annen informasjon om funksjonen.\n", + "\n", + "\n", + "### Oppgave \n", + "\n", + "1. Bruk Python til å lese informasjonen fra nettsiden http://primefan.tripod.com/Phi500.html til en `csv`-fil.\n", + "2. Rydd opp i `csv`-filen og lag hensiktsmessige kolonner.\n", + "3. Bruk datasettet ditt til å utforske funksjonen og lag hypoteser om funksjonen (f.eks. hva kan man si om $\\varphi(p)$ når $p$ er et primtall?)\n", + "4. Avgjør om hypotesene dine stemmer eller ei.\n", + "5. Utvid datasettet ditt på en hensiktsmessig måte og produser resultatet til en `csv`-fil." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## _Oppgave 5: Rødvinskvalitet (kjemi)_\n", + "\n", + "\n", + "\n", + "### Teori \n", + "Rødvinskvalitet er en subjektiv vitenskap, men kjemi er objektivt! Vi kan utforske ulike faktorer i vin for å bedømme hvilke kriterier som vinkjennere faktisk kjenner igjen. Datasettet vi skal se på ([her](https://github.com/andreasdh/Programmering-og-modellering/blob/master/Prosjekter/Filer/vin.csv), inneholder noen verdier som trenger forklaring:\n", + "\n", + "- Fixed and volatile acidity: Mengden syre og flyktig syre (gasser) i g/L.\n", + "- Citric acid: Mengden sitronsyre i g/L.\n", + "- Residual sugar: Mengden sukker etter endt fermentering av vinen i g/L.\n", + "- Sulphur dioxide: Mengde svoveldioksid tilsatt i vinen i mg/L.\n", + "\n", + "### Oppgave\n", + "- Les av fila og undersøk dataene.\n", + "- Finn gjennomsnitt med standardavvik (finn ut hva det er!) av de ulike verdiene og lag en tabell med disse statistiske dataene.\n", + "- Hvilken funksjon har svoveldioksid og sulfater i vin? Hva menes med fritt og bundet svoveldioksid?\n", + "- Plott ulike data mot hverandre.\n", + "- Finn ut hvilke faktorer som korrelerer med rødvinskvaliteten. Diskuter om korrelasjon nødvendigvis betyr kausalitet." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Oppgave 6: Lemurer (biologi)\n", + "\n", + "\n", + "\n", + "Dette prosjektet er spesielt for de som har vært med på å samle inn data på Madagaskar i 2018. Datasettet \"Lemurer\" inneholder populasjonsdata fra 2015 til i dag. Spør Andreas om datasettet hvis du velger dette prosjektet.\n", + "\n", + "### Oppgave\n", + "- Les av fila og undersøk dataene.\n", + "- Finn flere måter å representere dataene på. Se f.eks. på utvikling over tid eller lemurtyper sortert etter tidspunkt på dagen.\n", + "- Er det noe forskjell på lemurforekomsten i Mariarano og Matsedroy?\n", + "- Drøft framstillingene. Hva kan de si oss om lemurpopulasjonen i dette området?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git "a/_sources/docs/ekstra/Str\303\245lingsbalansemodell.ipynb" "b/_sources/docs/ekstra/Str\303\245lingsbalansemodell.ipynb" new file mode 100644 index 00000000..553a8063 --- /dev/null +++ "b/_sources/docs/ekstra/Str\303\245lingsbalansemodell.ipynb" @@ -0,0 +1,158 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Modellering av jordas strålingsbalanse\n", + "\n", + "Når vi lager en modell for dette systemet, er det hovedsakelig to ting vi bør ha med:\n", + "1. En modell for absorbert stråling (IR, synlig, UV) fra sola.\n", + "2. En modell for emittert stråling (IR) fra jorda.\n", + "\n", + "Modellen bør være et uttrykk for endringen i overflatetemperaturen til jorda som funksjon av tida. Siden vi er interessert i endringen til enhver tid, kan vi benytte den deriverte (momentan endring).\n", + "\n", + "$$T'(t) = S_{inn} - S_{ut}$$\n", + "\n", + "der $S_{inn}$ er absorbert stråling og $S_{ut}$ er emittert stråling. La oss se på ulike modeller for dette.\n", + "\n", + "### Antakelser \n", + "- Jorda modelleres med en statisk albedo (refleksjonsgrad), $\\alpha$. Dette begrenser tidsrommet modellen kan brukes i, da albedoen på jorda endres med tida. Mengden absorbert kortbølget stråling modelleres slik:\n", + "\n", + "$$\\frac{(1-\\alpha)S}{4}$$\n", + "\n", + "der $S \\approx 1361$ W/m$^2$ er gjennomsnittlig stråling motatt fra sola i løpet av et år og $\\alpha \\approx 0.32$ er albedoen til jorda.\n", + "\n", + "- Jorda modelleres som et svartlegeme med hensyn til utsending av stråling med lang bølgelengde, altså et legeme som absorberer all stråling som sendes mot den. Dermed følger emisjonen av langbølget stråling Stefan-Boltzmanns lov:\n", + "\n", + "$$F = \\epsilon \\cdot \\sigma \\cdot T^4$$\n", + "\n", + "der $\\epsilon$ er emissiviteten til legemet, altså et mål på hvor mye legemet oppfører seg som et svartlegeme. For et fullstendig svartlegeme er $\\epsilon = 1$, for et perfekt speil er $\\epsilon = 0$. Stefan-Boltzmann-konstanten $\\sigma = 5.67\\cdot 10^{-8}$ Wm$^{-2}$K$^-4$, og $T$ er den gjennomsnittlige temperaturen på overflaten til jorda.\n", + "\n", + "- Overflatetemperaturen blir tilnærmet som en planet med 70 % vann med gjennomsnittlig dybde på 70 meter. Varmekapasiteten til jorda kan da beregnes til å være $C = 2.08\\cdot 10^8$ JK$^{-1}$m$^{-2}$.\n", + "\n", + "### Totalmodell\n", + "\n", + "Vi ønsker å finne overflatetemperaturen til jorda som funksjon av tid, $T_s(t)$. Vi kan formulere en modell for *endringen* i overflatetemperatur ved hjelp av modellene vi har gjort rede for.\n", + "\n", + "$$T'(t) = S_{inn} - S_{ut} = \\frac{1}{C}\\left( \\frac{(1-\\alpha)S}{4} - \\epsilon \\cdot \\sigma \\cdot T^4 \\right)$$\n", + "\n", + "som er en differensiallikning der $T(t)$ er den ukjente.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "from pylab import *\n", + "\n", + "T0 = 240\n", + "epsilon = 1\n", + "sigma = 5.67E-8\n", + "C = 2.08E8\n", + "S = 1361\n", + "alpha = 0.32\n", + "\n", + "#Tidsparametre\n", + "tid = 1000 # år\n", + "dt = 1E-3\n", + "N = int(tid/dt)\n", + "\n", + "T = zeros(N+1)\n", + "t = zeros(N+1)\n", + "T[0] = T0\n", + "\n", + "for i in range(N):\n", + " Tder = (1/C)*((1-alpha)*S/4 - epsilon*sigma*T[i]**4)\n", + " T[i+1] = T[i] + Tder*dt\n", + " t[i+1] = t[i] + dt\n", + "\n", + "plot(t,T)\n", + "show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "N = 100 #antall steg\n", + "sigma = 5.67E-8 #Stefan-Boltzmanns konstant\n", + "\n", + "Rjord = 0.3 #andel reflektert av jorda\n", + "Ratm = 0.4 #andel reflektert av atmosfæren tilbake til jorda\n", + "\n", + "UatmTrans = 340 #utstrålingstetthet fra sola transmittert gjennom atmosfæren, W/m^2\n", + "UjordRef = zeros(N) #utstrålingstetthet reflektert av jordoverflaten\n", + "UjordEmit = zeros(N) #utstrålingstetthet emittert av jordoverflaten pga temperatur\n", + "UatmRef = zeros(N) #utstrålingstetthet reflektert av atmosfæren tilbake til jorda\n", + "UjordAbs = zeros(N) #utstrålingstetthet absorbert av jordoverflaten\n", + "\n", + "T = zeros(N) #jordas temperatur\n", + "\n", + "#startverdier: ingen drivhuseffekt\n", + "UjordAbs[0] = UatmTrans*(1-Rjord)\n", + "UjordEmit[0] = UjordAbs[0]\n", + "T[0] = (UjordAbs[0]/sigma)**(1/4)\n", + "\n", + "for i in range(N-1):\n", + " #starter drivhuseffekten\n", + " UatmRef[i+1] = (UjordRef[i] + UjordEmit[i])*Ratm\n", + " UjordRef[i+1] = (UatmTrans + UatmRef[i])*Rjord\n", + " UjordAbs[i+1] = UatmTrans + UatmRef[i] - UjordRef[i+1]\n", + " UjordEmit[i+1] = UjordAbs[i]\n", + " \n", + " T[i+1] = (UjordAbs[i+1]/sigma)**(1/4) #Stefan-Boltzmanns lov\n", + " \n", + " #lineær økning av atmosfærens reflektivitet i 10 steg\n", + " if i > 40 and i < 50:\n", + " Ratm += 0.005\n", + "\n", + "plot(T-273)\n", + "plot(40,T[40]-273,'.')\n", + "plot(50,T[50]-273,'.')\n", + "legend(['global temperatur', 'starter utslipp', 'stopper utslipp'])\n", + "xlabel('steg')\n", + "ylabel('$^\\circ C$')\n", + "title('Gjennomsnittlig global temperatur')\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/ekstra/arrayer.ipynb b/_sources/docs/ekstra/arrayer.ipynb new file mode 100644 index 00000000..580f63e6 --- /dev/null +++ b/_sources/docs/ekstra/arrayer.ipynb @@ -0,0 +1,156 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Datasamlinger\n", + "\n", + "```{admonition} Læringsutbytte\n", + "Etter å ha arbeidet med dette temaet, skal du kunne:\n", + "1. opprette ulike arrayer\n", + "2. gjøre vektoroperasjoner med arrayer\n", + "3. gjøre rede for hva tupler er\n", + "4. opprette og bruke dictionarier\n", + "```\n", + "\n", + "Vi har flere måter å organisere data på i Python. Her er en kort oversikt over de viktigste datasamlingene:\n", + "1. Lister (fleksible samlinger av like eller ulike data)\n", + "2. Arrayer (samlinger av tall som kan opereres på som vektorer).\n", + "3. Tupler (statiske lister som ikke kan endres)\n", + "4. Dictionarier (lister med strenger, ikke tall, som nøkler)\n", + "\n", + "Vi har allerede sett hvordan lister fungerer. La oss se på de tre andre datatypene.\n", + "\n", + "## Arrayer\n", + "Vi begynner med et eksempel som illustrerer forskjellen mellom lister og arrayer. For å kunne bruke arrayer, må vi først importere _numpy_ eller _pylab_." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "listesum: [1, 2, 3, 2, 3, 1]\n", + "arraysum: [3 5 4]\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "\n", + "liste1 = [1, 2, 3]\n", + "liste2 = [2, 3, 1]\n", + "\n", + "print(\"listesum:\", liste1 + liste2)\n", + "\n", + "array1 = np.array(liste1)\n", + "array2 = np.array(liste2)\n", + "\n", + "print(\"arraysum:\", array1 + array2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Bruk koden ovenfor til å forklare forskjellen mellom listeaddisjon og arrayaddisjon.\n", + "```\n", + "```{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "Når to lister adderes, legges den ene lista til slutten på den andre. Når to arrayer adderes, får vi komponentvis addisjon av elementene: [1+2, 2+3, 3+1]. Dette er det samme som vektoraddisjon.\n", + "```\n", + "\n", + "### Opprette arrayer\n", + "Vi kan opprette arrayer på flere måter:\n", + "\n", + "\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Forklar de ulike måtene å opprette arrayer på ved å endre på forskjellige parametre i programmet ovenfor.\n", + "```\n", + "\n", + "```{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "Vi kan oppsummere måter å opprette arrayer på slik:\n", + "| Operasjon | Forklaring |\n", + "| --------- | ---------- |\n", + "| array([x1,x2,x3,...]) | gjør om en liste med tall til en array |\n", + "| arange(a,b,c) | lager en array med tallene a til, men ikke med, b, der c er steglengden |\n", + "| linspace(a,b,c) | lager en array med c elementer fra a til og med b |\n", + "| zeros(n) | lager en array med _n_ nuller |\n", + "| ones(n) | lager en array med _n_ enere |\n", + "```\n", + "\n", + "\n", + "\n", + "### Behandle arraydata\n", + "I motsetning til med lister, kan vi ikke bruke listeoperasjoner som _append_, _remove_ og liknende når vi opererer med arrayer. Vi kan derimot få tilgang til elementene ved indekser, akkurat som med lister.\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "1. Forklar hva koden nedenfor gjør.\n", + "2. Kjør koden og se om det stemmer med slik du hadde tenkt. Hvis ikke, hva er forskjellen?\n", + "3. \n", + "```\n", + "\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([1, 2, 3])" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "array2" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/_sources/docs/ekstra/datahandtering.ipynb b/_sources/docs/ekstra/datahandtering.ipynb new file mode 100644 index 00000000..ef4baa94 --- /dev/null +++ b/_sources/docs/ekstra/datahandtering.ipynb @@ -0,0 +1,145 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Datahåndtering (teori)\n", + "\n", + "```{admonition} Læringsutbytte\n", + "Etter å ha arbeidet med dette temaet, skal du kunne:\n", + "1. Lese data fra fil.\n", + "2. Plotte fildata.\n", + "3. Utføre regresjon for å modellere sammenhenger i fildata.\n", + "4. Bruke enkel statistikk (gjennomsnitt, standardavvik).\n", + "```\n", + "\n", + "## Lese fra fil\n", + "I videoen nedenfor forklares hvordan du kan lese datafiler med Python." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "tags": [ + "remove-input" + ] + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import IFrame\n", + "IFrame(\"https://www.youtube.com/embed/EqE0RU82gIU? autoplay=0&rel=0\", width=800, height=600)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Når du har sett videoen, kan du gjøre følgende oppgave for å sjekke om du forstår innholdet:\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Fila *temperatur.txt* inneholder temperaturmålinger som funksjon av tid. Les av fila og plott fildataene.\n", + "```\n", + "\n", + "\n", + "\n", + "## Regresjon\n", + "Her skal vi se hvordan vi kan utføre regresjon på datapunkter." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "tags": [ + "remove-input" + ] + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import IFrame\n", + "IFrame(\"https://www.youtube.com/embed/l7aAcyzA4VE? autoplay=0&rel=0\", width=800, height=600)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Når du har sett videoen, kan du gjøre følgende oppgave for å sjekke om du forstår innholdet:\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Benytt koderuta i forrige underveisoppgave og utfør regresjon av 1. og 2. grad av datapunktene ovenfor. Plott regresjonskurvene i samme koordinatsystem som datapunktene.\n", + "```" + ] + } + ], + "metadata": { + "celltoolbar": "Edit Metadata", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/ekstra/filmer_datasamlinger.ipynb b/_sources/docs/ekstra/filmer_datasamlinger.ipynb new file mode 100644 index 00000000..22aa40b6 --- /dev/null +++ b/_sources/docs/ekstra/filmer_datasamlinger.ipynb @@ -0,0 +1,156 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Datasamlinger (teori)\n", + "\n", + "```{admonition} Læringsutbytte\n", + "Etter å ha arbeidet med dette temaet, skal du kunne:\n", + "1. Opprette og bruke lister, arrayer og dictionarier, og forklare forskjellen mellom dem.\n", + "2. Utføre operasjoner på lister, arrayer og dictionarier.\n", + "```\n", + "\n", + "## Lister\n", + "I videoen nedenfor forklares hvordan du kan opprette og utføre operasjoner på lister." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "tags": [ + "remove-input" + ] + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import IFrame\n", + "IFrame(\"https://www.youtube.com/embed/1ZeRsnlxU4A? autoplay=0&rel=0\", width=800, height=600)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Når du har sett videoen, kan du gjøre følgende oppgave for å sjekke om du forstår innholdet:\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Lag ulike to lister med bøker, TV-serier, fotballspillere eller liknende. Listene bør ha minst 5 elementer hver, men gjerne flere.\n", + "1. Legg sammen de to listene.\n", + "2. Slett det første og tredje elementet i den sammenslåtte lista.\n", + "3. Finn ut hvilken indeks ett av elementene har.\n", + "4. Lag ei ny liste av element 2–5.\n", + "5. Finn indeksen til et av elementene og slett dette elementet.\n", + "6. Skriv ut lista til slutt.\n", + "```\n", + "\n", + "\n", + "\n", + "## Arrayer\n", + "Her skal vi se hvordan vi kan opprette og utføre operasjoner på arrayer." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "tags": [ + "remove-input" + ] + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import IFrame\n", + "IFrame(\"https://www.youtube.com/embed/MCrjhPeEUWg? autoplay=0&rel=0\", width=800, height=600)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Når du har sett videoen, kan du gjøre følgende oppgave for å sjekke om du forstår innholdet:\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Et program skal regne ut *c = a + b* og *c = a * b*. Forklar hva c vil bli dersom\n", + "- a = [1,2,3,4] og b = [1,2,3,4]\n", + "- a = [1,2,3,4] og b = 2\n", + "- a = array([1,2,3,4]) og b = array([1,2,3,4])\n", + "- a = array([1,2,3,4]) og b = 2\n", + "Beskriv hva som skjer i de ulike tilfellene.\n", + "```\n", + "\n", + "" + ] + } + ], + "metadata": { + "celltoolbar": "Edit Metadata", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/ekstra/hjelp_modelleringsoppgave2.ipynb b/_sources/docs/ekstra/hjelp_modelleringsoppgave2.ipynb new file mode 100644 index 00000000..6a11d4ee --- /dev/null +++ b/_sources/docs/ekstra/hjelp_modelleringsoppgave2.ipynb @@ -0,0 +1,190 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import math as math" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Støtte til modelleringsoppgave 2 (temperaturmodellering)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "\"\"\"Konstanter\"\"\"\n", + "#Stefan-Boltzman Konstant\n", + "sigma=(5.67e-8) #[W m^2 K^4]\n", + "#Temperatur Sola\n", + "temperatur_sol = 5778 #[Kelvin]\n", + "diameter_sol = 1391016e3 #[m]\n", + "distanse_sol_jord = 149600000e3 #[m]\n", + "radius_jord = 6371e3 #[m]\n", + "albedo = 0.3" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Oppgave 1)\n", + "Formelen for å kalkulere mengden energi som treffer toppen av atmosfæren ($S_0$) er: \n", + "\n", + "$$S_0 = \\large\\frac{{radius_{sun}}^2}{{distanse_{jord\\space sol}}^2} \\cdot stråling\\space sol$$ " + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1365.948361181013\n" + ] + } + ], + "source": [ + "stråling_sol = sigma*(temperatur_sol**4)\n", + "s0 = ((diameter_sol/2)**2)/(distanse_sol_jord**2)*stråling_sol\n", + "print (s0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Oppgave 2)\n", + "Bruk energiprinsippet og Stefan-Boltzmanns lov til å lage et utrykk for gjennomsnittlig temperatur på jorden. Noe av innstrålingen fra solen vil bli reflektert, og målet for refleksjonen til en flate kalles albedo. Legg til denne refleksjonsfaktoren for jordkloden og kalkuler temperaturen på jorden. Anta at\n", + "temperaturen på planeten er konstant, og at planeten er en flat sirkel." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![solar_insolation_planet_sphere_disk_600x320.png](https://www.uio.no/studier/emner/matnat/ifi/IN-KJM1900/h20/datafiler/solar_insolation_planet_sphere_disk_600x320.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Utrykket for temperatur man skal komme frem til:\n", + "$$T = \\sqrt[4]{\\frac{K_s\\cdot(1-albedo)}{4\\sigma}}$$\n", + "\n", + "Prøv å vis hvordan man får dette utrykket." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "-18.336567683297915" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "temperatur = ((s0*(1-albedo))/(4*sigma))**(1/4)\n", + "temperatur - 273.15" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Oppgave 3) \n", + "\n", + "Når vi skal legge til atmosfæren i modellen gjør vi ganske mange forenklinger. Vi antar tre ting (og ingen av antagelsene er faktisk sanne!): \n", + "\n", + "1) Atmosfæren har en konstant temperatur - dvs. at atmosfæren er en stor blokk hvor hele blokken har den samme temperaturen.
\n", + "2) Atmosfæren er fullstendig gjennomsiktig for stråling fra solen - dvs at all stråling fra solen treffer jordoverflaten.
\n", + "3) Atmosfæren tar imot all stråling fra jorden." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Atmosf%C3%A6re.png](https://www.uio.no/studier/emner/matnat/ifi/IN-KJM1900/h20/datafiler/atmosferestraling.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Figuren over viser situasjonen med antagelsene:
\n", + "(1) viser solinnstårlingen som treffer jordkloden.
\n", + "(3) viser utsrålingen fra jordkloden som treffer atmosfæren.
\n", + "(2) viser situasjonen til atmosfæren. Atmosfæren vil sende ut stråling til verdensrommet, men også stråling tilbake til jorden. Energien atmosfæren sender ut kan da kalkuleres ved å bruke stefan-boltzmans lov. \n", + "\n", + "Prøv å legg inn atmosfæren som et ledd i din kalkulering og se hvordan det påvirker temperaturen.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Løsning ved bruk av figuren over.\n", + "$Energi_{inn} = Energi_{ut}$ er fortsatt det som gjelder, men denne gangen blir det to ligninger. Etter systemet nevnt i oppgave 3(a) blir likningene:\n", + "\n", + "$$\\space s_0\\cdot(1-albedo) = \\sigma T_{a}^4 $$\n", + "$$\\space s_0\\cdot(1-albedo) + \\sigma T_{a}^4 = \\sigma T_{s}^4$$\n", + "\n", + "Sett likning 1 inn i 2 for å få en løsning for $T_{s}$\n", + "\n", + "Prøv å vis på figuren hvilke piler disse to likningene representerer. Prøv å forklar til deg selv hva som er gjort her for å forstå likningsystemet. \n", + "\n", + "Kommentar: Resultatet her vil være veldig høyt. I denne situasjonen vil energien til atmosfæren være det jorden sender ut. Vi har jo kalkulert at jorden blir truffet med 1365 watt/m^2, men denne energien vil bare være når solen står på sitt høyeste vertikalt rett ned på jorden. På grunn av rotasjonen til jorden, med natt og dagsykluser, og at jorden egentlig er en kule vil ikke dette være den faktiske gjennomsnittelige innstrålingen som treffer jorden. En forenkling for å finne gjennomsnitt på innstrålingen over hele jordkloden når man tenker at deler ikke får like mye sollys hele tiden vil da være: $S_{0}$/4 = 1365/4 watt/$m^2$. Dette nummeret er veldig nærme den observerte gjennomsnittelige energien som treffer jorden. Sett inn $S_{0}/4$ inn for $S_{0}$ og sjekk hva som skjer med $T_{s}$." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/_sources/docs/ekstra/integrasjon.ipynb b/_sources/docs/ekstra/integrasjon.ipynb new file mode 100644 index 00000000..92bd4c40 --- /dev/null +++ b/_sources/docs/ekstra/integrasjon.ipynb @@ -0,0 +1,139 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 10. Numerisk integrasjon\n", + "Her skal vi se på metoder for å tilnærme det bestemte integralet.\n", + "\n", + "```{admonition} Læringsutbytte\n", + "Etter å ha arbeidet med dette temaet, skal du kunne:\n", + "1. Forklare forskjellen på ulike tilnærminger til rektangelmetoden (venstre-, høyre- og midtpunktstilnærming).\n", + "2. Forklare og utlede trapesmetoden.\n", + "3. Implementere rektangelmetoden og trapesmetoden.\n", + "4. Integrere funksjoner numerisk.\n", + "```\n", + "\n", + "## Rektangelmetoden" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "tags": [ + "remove-input" + ] + }, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import HTML\n", + "# Youtube\n", + "HTML('')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Når du har sett videoen, kan du gjøre følgende oppgave for å sjekke om du forstår innholdet:\n", + "\n", + "```{admonition} Underveisoppgave: Derivasjon av funksjoner\n", + ":class: tip\n", + "Implementer algoritmen for rektangelmetoden som en Python-funksjon. Test metoden på integralet \n", + "\n", + "$$\\int_2^8 f(x) = x^2 - 2x + 4 \\ dx$$\n", + "```\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "## Ulike tilnærminger" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "tags": [ + "remove-input" + ] + }, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import HTML\n", + "# Youtube\n", + "HTML('')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Når du har sett videoen, kan du gjøre følgende oppgave for å sjekke om du forstår innholdet:\n", + "\n", + "```{admonition} Underveisoppgave: Derivasjon av funksjoner\n", + ":class: tip\n", + "Implementer trapesmetoden og ulike tilnærmnger for rektangelmetoden som Python-funksjoner. Gjør en feilanalyse av metodene og sammenlikn svarene du får på integralet\n", + "\n", + "$$\\int_2^8 f(x) = x^2 - 2x + 4 \\ dx$$\n", + "```\n", + "\n", + "\n", + "\n" + ] + } + ], + "metadata": { + "celltoolbar": "Edit Metadata", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/ekstra/kunstig_intelligens_ml.ipynb b/_sources/docs/ekstra/kunstig_intelligens_ml.ipynb new file mode 100644 index 00000000..1a80e6a4 --- /dev/null +++ b/_sources/docs/ekstra/kunstig_intelligens_ml.ipynb @@ -0,0 +1,3662 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Maskinlæring II: Nevrale nettverk og kunstig intelligens\n", + "Kunstige nevrale nettverk har likhetstrekk med hvordan hjernen fungerer. Vi bygger dem opp ved hjelp av _noder_ og _sammmenkoblinger_ mellom nodene, ikke ulikt nerveceller og koblinger mellom dem. Nodene ...\n", + "\n", + "Først trener vi nettverket. Da finner vi ut av hvor mye de ulike koblingene mellom noder skal være _vekta_ for at forskjellene mellom faktiske verdier og forutsigelser skal være så små som mulig. En vekt bestemmer hvor sterk en kobling mellom noder er. Vi måler forskjell mellom forutsigelser og faktiske verdier slik:\n", + "\n", + "$$loss = \\Sigma (y - ŷ)^2$$\n", + "\n", + "## Lineær regresjon" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import tensorflow as tf\n", + "from tensorflow.keras.models import Sequential\n", + "from tensorflow.keras.layers import Activation, Dense\n", + "from tensorflow.keras.optimizers import Adam\n", + "from tensorflow.keras.metrics import categorical_crossentropy\n", + "from tensorflow.keras.losses import MeanSquaredError\n", + "from sklearn.utils import shuffle\n", + "from sklearn.preprocessing import MinMaxScaler" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "N = 100\n", + "x = np.linspace(0,5,N)\n", + "y = 3*x + 2 + np.random.uniform(-5,5,N)\n", + "\n", + "plt.scatter(x, y)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Modellen vi kan konstruere fra uttrykket $y = ax + b$ har kun én input-node ($x$) og én output-node ($y$), så det vi må gjøre, er å optimalisere vektingen slik at den nærmer seg _a_, som jo vekter _x_ i funksjonen. Dessuten vil få et et såkalt _bias_-ledd, her representert ved skjæringspunktet _b_ dersom modellen blir trent godt nok." + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "modell = tf.keras.Sequential()\n", + "modell.add(Dense(units=1, activation='linear', input_shape=[1,]))" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model: \"sequential_6\"\n", + "_________________________________________________________________\n", + "Layer (type) Output Shape Param # \n", + "=================================================================\n", + "dense_14 (Dense) (None, 1) 2 \n", + "=================================================================\n", + "Total params: 2\n", + "Trainable params: 2\n", + "Non-trainable params: 0\n", + "_________________________________________________________________\n" + ] + } + ], + "source": [ + "læringsrate = 0.1 # Hvor fort modellen skal lære\n", + "modell.compile(optimizer=Adam(læringsrate), loss = 'mse') # Optimizer = metode for å minimere loss\n", + "modell.summary()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Antall parametre er _a_ og _b_ i _y = ax + b_\n", + "\n", + "La oss trene modellen:" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 104.5022\n", + "Epoch 2/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 79.3526\n", + "Epoch 3/500\n", + "4/4 [==============================] - 0s 668us/step - loss: 52.2603\n", + "Epoch 4/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 36.4380\n", + "Epoch 5/500\n", + "4/4 [==============================] - 0s 735us/step - loss: 25.8862\n", + "Epoch 6/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 16.3748\n", + "Epoch 7/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 11.6355\n", + "Epoch 8/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.3783\n", + "Epoch 9/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.6017\n", + "Epoch 10/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 8.0945\n", + "Epoch 11/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.6653\n", + "Epoch 12/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.0193\n", + "Epoch 13/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.9182\n", + "Epoch 14/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 8.7258\n", + "Epoch 15/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 9.0563\n", + "Epoch 16/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.8218\n", + "Epoch 17/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 7.9393\n", + "Epoch 18/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 8.5781\n", + "Epoch 19/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.7110\n", + "Epoch 20/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 8.3472\n", + "Epoch 21/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 8.0878\n", + "Epoch 22/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 8.7475\n", + "Epoch 23/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 7.6393\n", + "Epoch 24/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.0899\n", + "Epoch 25/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 8.6990\n", + "Epoch 26/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.7094\n", + "Epoch 27/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 8.3770\n", + "Epoch 28/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.7485\n", + "Epoch 29/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 8.7665\n", + "Epoch 30/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 8.0084\n", + "Epoch 31/500\n", + "4/4 [==============================] - 0s 668us/step - loss: 8.2260\n", + "Epoch 32/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 8.5187\n", + "Epoch 33/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.2410\n", + "Epoch 34/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.2735\n", + "Epoch 35/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 8.7580\n", + "Epoch 36/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 8.2827\n", + "Epoch 37/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 7.9241\n", + "Epoch 38/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.7716\n", + "Epoch 39/500\n", + "4/4 [==============================] - 0s 668us/step - loss: 8.1952\n", + "Epoch 40/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.3731\n", + "Epoch 41/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 7.6364\n", + "Epoch 42/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 7.7535\n", + "Epoch 43/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.0885\n", + "Epoch 44/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 8.2980\n", + "Epoch 45/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 8.4089\n", + "Epoch 46/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.6896\n", + "Epoch 47/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.4258\n", + "Epoch 48/500\n", + "4/4 [==============================] - 0s 836us/step - loss: 7.8536\n", + "Epoch 49/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.3694\n", + "Epoch 50/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 7.8820\n", + "Epoch 51/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.4000\n", + "Epoch 52/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.6289\n", + "Epoch 53/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.2009\n", + "Epoch 54/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.0848\n", + "Epoch 55/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.4050\n", + "Epoch 56/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.4296\n", + "Epoch 57/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.2095\n", + "Epoch 58/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.6532\n", + "Epoch 59/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 8.6900\n", + "Epoch 60/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.8647\n", + "Epoch 61/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.2359\n", + "Epoch 62/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 7.9651\n", + "Epoch 63/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 8.1816\n", + "Epoch 64/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.4695\n", + "Epoch 65/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.3247\n", + "Epoch 66/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.3399\n", + "Epoch 67/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.9075\n", + "Epoch 68/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.0523\n", + "Epoch 69/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.7443\n", + "Epoch 70/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 8.5074\n", + "Epoch 71/500\n", + "4/4 [==============================] - 0s 333us/step - loss: 7.9035\n", + "Epoch 72/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 8.6616\n", + "Epoch 73/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.3667\n", + "Epoch 74/500\n", + "4/4 [==============================] - 0s 668us/step - loss: 8.1893\n", + "Epoch 75/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.0241\n", + "Epoch 76/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.2657\n", + "Epoch 77/500\n", + "4/4 [==============================] - 0s 504us/step - loss: 7.9703\n", + "Epoch 78/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.1511\n", + "Epoch 79/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.2947\n", + "Epoch 80/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.8908\n", + "Epoch 81/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.4879\n", + "Epoch 82/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.3816\n", + "Epoch 83/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.1428\n", + "Epoch 84/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.0366\n", + "Epoch 85/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.6593\n", + "Epoch 86/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 7.9075\n", + "Epoch 87/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.1955\n", + "Epoch 88/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.0510\n", + "Epoch 89/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.0353\n", + "Epoch 90/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 7.9147\n", + "Epoch 91/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.4268\n", + "Epoch 92/500\n", + "4/4 [==============================] - 0s 668us/step - loss: 7.9632\n", + "Epoch 93/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.6078\n", + "Epoch 94/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.3538\n", + "Epoch 95/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.0946\n", + "Epoch 96/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.5300\n", + "Epoch 97/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.4098\n", + "Epoch 98/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.2656\n", + "Epoch 99/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.5125\n", + "Epoch 100/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.8603\n", + "Epoch 101/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.5451\n", + "Epoch 102/500\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4/4 [==============================] - 0s 667us/step - loss: 7.8527\n", + "Epoch 103/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.1321\n", + "Epoch 104/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.2086\n", + "Epoch 105/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.3373\n", + "Epoch 106/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.0878\n", + "Epoch 107/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.3393\n", + "Epoch 108/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.2506\n", + "Epoch 109/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.8073\n", + "Epoch 110/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.6708\n", + "Epoch 111/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 7.7170\n", + "Epoch 112/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.4463\n", + "Epoch 113/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 8.2755\n", + "Epoch 114/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.0646\n", + "Epoch 115/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.2571\n", + "Epoch 116/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.9042\n", + "Epoch 117/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.6911\n", + "Epoch 118/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 7.7391\n", + "Epoch 119/500\n", + "4/4 [==============================] - 0s 668us/step - loss: 8.1689\n", + "Epoch 120/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.1252\n", + "Epoch 121/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.3536\n", + "Epoch 122/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.3956\n", + "Epoch 123/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.2423\n", + "Epoch 124/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 7.7996\n", + "Epoch 125/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.3041\n", + "Epoch 126/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 8.2362\n", + "Epoch 127/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.4628\n", + "Epoch 128/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.1193\n", + "Epoch 129/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.1979\n", + "Epoch 130/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.2008\n", + "Epoch 131/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 9.0247\n", + "Epoch 132/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.4149\n", + "Epoch 133/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.8535\n", + "Epoch 134/500\n", + "4/4 [==============================] - 0s 668us/step - loss: 8.7975\n", + "Epoch 135/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.3579\n", + "Epoch 136/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.1427\n", + "Epoch 137/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 8.0528\n", + "Epoch 138/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 8.3559\n", + "Epoch 139/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.0381\n", + "Epoch 140/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 7.8673\n", + "Epoch 141/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 8.8377\n", + "Epoch 142/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.1329\n", + "Epoch 143/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 8.3940\n", + "Epoch 144/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 7.7086\n", + "Epoch 145/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.2993\n", + "Epoch 146/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.6084\n", + "Epoch 147/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.5040\n", + "Epoch 148/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.2651\n", + "Epoch 149/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.1635\n", + "Epoch 150/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.3438\n", + "Epoch 151/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 7.9917\n", + "Epoch 152/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.7307\n", + "Epoch 153/500\n", + "4/4 [==============================] - 0s 665us/step - loss: 8.3330\n", + "Epoch 154/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.5460\n", + "Epoch 155/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.1381\n", + "Epoch 156/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.6721\n", + "Epoch 157/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 7.9872\n", + "Epoch 158/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.3384\n", + "Epoch 159/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.0205\n", + "Epoch 160/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 8.4402\n", + "Epoch 161/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.3511\n", + "Epoch 162/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.4172\n", + "Epoch 163/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.8060\n", + "Epoch 164/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.2794\n", + "Epoch 165/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.6608\n", + "Epoch 166/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 8.4098\n", + "Epoch 167/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.1878\n", + "Epoch 168/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 7.8876\n", + "Epoch 169/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.1236\n", + "Epoch 170/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 8.4092\n", + "Epoch 171/500\n", + "4/4 [==============================] - 0s 835us/step - loss: 8.2659\n", + "Epoch 172/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 8.6527\n", + "Epoch 173/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.5737\n", + "Epoch 174/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.1902\n", + "Epoch 175/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.1969\n", + "Epoch 176/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 8.2581\n", + "Epoch 177/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.5900\n", + "Epoch 178/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.0874\n", + "Epoch 179/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.9015\n", + "Epoch 180/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.8330\n", + "Epoch 181/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 8.4136\n", + "Epoch 182/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 8.6446\n", + "Epoch 183/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.1311\n", + "Epoch 184/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.5477\n", + "Epoch 185/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 7.5786\n", + "Epoch 186/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 8.3315\n", + "Epoch 187/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 7.8927\n", + "Epoch 188/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 7.7673\n", + "Epoch 189/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.0693\n", + "Epoch 190/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.1701\n", + "Epoch 191/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.3226\n", + "Epoch 192/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 7.9968\n", + "Epoch 193/500\n", + "4/4 [==============================] - 0s 538us/step - loss: 8.4736\n", + "Epoch 194/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.5460\n", + "Epoch 195/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.6556\n", + "Epoch 196/500\n", + "4/4 [==============================] - 0s 668us/step - loss: 8.7687\n", + "Epoch 197/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 9.2050\n", + "Epoch 198/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 8.7555\n", + "Epoch 199/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 8.9373\n", + "Epoch 200/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.3990\n", + "Epoch 201/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.6712\n", + "Epoch 202/500\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4/4 [==============================] - 0s 666us/step - loss: 8.6615\n", + "Epoch 203/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.6208\n", + "Epoch 204/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 7.7797\n", + "Epoch 205/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 7.9401\n", + "Epoch 206/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.9828\n", + "Epoch 207/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.4071\n", + "Epoch 208/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.6976\n", + "Epoch 209/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.2943\n", + "Epoch 210/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 7.9447\n", + "Epoch 211/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.3899\n", + "Epoch 212/500\n", + "4/4 [==============================] - 0s 668us/step - loss: 8.5703\n", + "Epoch 213/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 7.8175\n", + "Epoch 214/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.1317\n", + "Epoch 215/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.5044\n", + "Epoch 216/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 9.0336\n", + "Epoch 217/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 7.8876\n", + "Epoch 218/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.1495\n", + "Epoch 219/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.2590\n", + "Epoch 220/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.6814\n", + "Epoch 221/500\n", + "4/4 [==============================] - 0s 842us/step - loss: 8.5372\n", + "Epoch 222/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 7.9391\n", + "Epoch 223/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.6917\n", + "Epoch 224/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.4509\n", + "Epoch 225/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.3897\n", + "Epoch 226/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.7148\n", + "Epoch 227/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.2116\n", + "Epoch 228/500\n", + "4/4 [==============================] - 0s 668us/step - loss: 8.1116\n", + "Epoch 229/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.6707\n", + "Epoch 230/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 7.9270\n", + "Epoch 231/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.3362\n", + "Epoch 232/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.0358\n", + "Epoch 233/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.3633\n", + "Epoch 234/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.3426\n", + "Epoch 235/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.4330\n", + "Epoch 236/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.0730\n", + "Epoch 237/500\n", + "4/4 [==============================] - 0s 682us/step - loss: 8.2105\n", + "Epoch 238/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.2740\n", + "Epoch 239/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.0922\n", + "Epoch 240/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 7.8022\n", + "Epoch 241/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.2089\n", + "Epoch 242/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 8.3044\n", + "Epoch 243/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 7.7719\n", + "Epoch 244/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 8.1841\n", + "Epoch 245/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 7.7905\n", + "Epoch 246/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 7.9534\n", + "Epoch 247/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.1683\n", + "Epoch 248/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.1161\n", + "Epoch 249/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.5967\n", + "Epoch 250/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.7169\n", + "Epoch 251/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.0785\n", + "Epoch 252/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.8388\n", + "Epoch 253/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.0159\n", + "Epoch 254/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.5789\n", + "Epoch 255/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.1510\n", + "Epoch 256/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 7.9927\n", + "Epoch 257/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.0018\n", + "Epoch 258/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.6359\n", + "Epoch 259/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 8.6787\n", + "Epoch 260/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.1452\n", + "Epoch 261/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.6602\n", + "Epoch 262/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 7.9941\n", + "Epoch 263/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.3499\n", + "Epoch 264/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 8.6447\n", + "Epoch 265/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 8.3477\n", + "Epoch 266/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 7.9720\n", + "Epoch 267/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 8.1876\n", + "Epoch 268/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.6013\n", + "Epoch 269/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.8680\n", + "Epoch 270/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.6760\n", + "Epoch 271/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.2076\n", + "Epoch 272/500\n", + "4/4 [==============================] - 0s 668us/step - loss: 7.6241\n", + "Epoch 273/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.6719\n", + "Epoch 274/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.5206\n", + "Epoch 275/500\n", + "4/4 [==============================] - 0s 668us/step - loss: 8.1704\n", + "Epoch 276/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 8.8824\n", + "Epoch 277/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.1261\n", + "Epoch 278/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.4138\n", + "Epoch 279/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 7.9680\n", + "Epoch 280/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.1994\n", + "Epoch 281/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.5526\n", + "Epoch 282/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 7.6670\n", + "Epoch 283/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.6339\n", + "Epoch 284/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.0422\n", + "Epoch 285/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.2535\n", + "Epoch 286/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.3132\n", + "Epoch 287/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.6515\n", + "Epoch 288/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 7.9505\n", + "Epoch 289/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.5853\n", + "Epoch 290/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.1780\n", + "Epoch 291/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.5912\n", + "Epoch 292/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.2014\n", + "Epoch 293/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.2354\n", + "Epoch 294/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.2129\n", + "Epoch 295/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 8.5523\n", + "Epoch 296/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.6535\n", + "Epoch 297/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 8.4296\n", + "Epoch 298/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 7.6559\n", + "Epoch 299/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 7.6693\n", + "Epoch 300/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.6266\n", + "Epoch 301/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.0278\n", + "Epoch 302/500\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4/4 [==============================] - 0s 667us/step - loss: 8.0526\n", + "Epoch 303/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 8.7330\n", + "Epoch 304/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.7237\n", + "Epoch 305/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.3075\n", + "Epoch 306/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.1864\n", + "Epoch 307/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.6247\n", + "Epoch 308/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.6476\n", + "Epoch 309/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.1792\n", + "Epoch 310/500\n", + "4/4 [==============================] - 0s 668us/step - loss: 8.7100\n", + "Epoch 311/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.1979\n", + "Epoch 312/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 8.6113\n", + "Epoch 313/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.6128\n", + "Epoch 314/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.5203\n", + "Epoch 315/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.3461\n", + "Epoch 316/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.8989\n", + "Epoch 317/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.2800\n", + "Epoch 318/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.2408\n", + "Epoch 319/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.4082\n", + "Epoch 320/500\n", + "4/4 [==============================] - 0s 542us/step - loss: 9.6505\n", + "Epoch 321/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 8.7571\n", + "Epoch 322/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 8.4019\n", + "Epoch 323/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.5676\n", + "Epoch 324/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 7.8891\n", + "Epoch 325/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 8.8347\n", + "Epoch 326/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.1785\n", + "Epoch 327/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 8.4076\n", + "Epoch 328/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.4786\n", + "Epoch 329/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.3709\n", + "Epoch 330/500\n", + "4/4 [==============================] - 0s 665us/step - loss: 7.9279\n", + "Epoch 331/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 7.8934\n", + "Epoch 332/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.1781\n", + "Epoch 333/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.1264\n", + "Epoch 334/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 8.7103\n", + "Epoch 335/500\n", + "4/4 [==============================] - 0s 665us/step - loss: 8.0712\n", + "Epoch 336/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 8.4242\n", + "Epoch 337/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 7.9300\n", + "Epoch 338/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.5644\n", + "Epoch 339/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.1366\n", + "Epoch 340/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.1938\n", + "Epoch 341/500\n", + "4/4 [==============================] - 0s 333us/step - loss: 8.8461\n", + "Epoch 342/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.8216\n", + "Epoch 343/500\n", + "4/4 [==============================] - 0s 905us/step - loss: 8.7158\n", + "Epoch 344/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 8.4632\n", + "Epoch 345/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 9.0191\n", + "Epoch 346/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 8.2322\n", + "Epoch 347/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.2614\n", + "Epoch 348/500\n", + "4/4 [==============================] - 0s 665us/step - loss: 8.4608\n", + "Epoch 349/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.2154\n", + "Epoch 350/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 8.6942\n", + "Epoch 351/500\n", + "4/4 [==============================] - 0s 665us/step - loss: 8.3367\n", + "Epoch 352/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.1417\n", + "Epoch 353/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 7.9923\n", + "Epoch 354/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.8374\n", + "Epoch 355/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.4152\n", + "Epoch 356/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.4335\n", + "Epoch 357/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 7.5777\n", + "Epoch 358/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.0608\n", + "Epoch 359/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.3695\n", + "Epoch 360/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.5353\n", + "Epoch 361/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 8.5380\n", + "Epoch 362/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 8.6215\n", + "Epoch 363/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.7682\n", + "Epoch 364/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.3808\n", + "Epoch 365/500\n", + "4/4 [==============================] - 0s 668us/step - loss: 9.1108\n", + "Epoch 366/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 8.9333\n", + "Epoch 367/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.6897\n", + "Epoch 368/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.3721\n", + "Epoch 369/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 9.2476\n", + "Epoch 370/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 9.0441\n", + "Epoch 371/500\n", + "4/4 [==============================] - 0s 334us/step - loss: 8.1192\n", + "Epoch 372/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.5571\n", + "Epoch 373/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.9710\n", + "Epoch 374/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 8.0739\n", + "Epoch 375/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 7.8368\n", + "Epoch 376/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 9.0027\n", + "Epoch 377/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 7.9667\n", + "Epoch 378/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.7522\n", + "Epoch 379/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 7.9576\n", + "Epoch 380/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.3964\n", + "Epoch 381/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 7.8484\n", + "Epoch 382/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.5905\n", + "Epoch 383/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 7.6930\n", + "Epoch 384/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.1679\n", + "Epoch 385/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 8.1627\n", + "Epoch 386/500\n", + "4/4 [==============================] - 0s 668us/step - loss: 8.1621\n", + "Epoch 387/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 8.5946\n", + "Epoch 388/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.0057\n", + "Epoch 389/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 7.7226\n", + "Epoch 390/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.4074\n", + "Epoch 391/500\n", + "4/4 [==============================] - 0s 890us/step - loss: 8.8335\n", + "Epoch 392/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.0382\n", + "Epoch 393/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 8.2643\n", + "Epoch 394/500\n", + "4/4 [==============================] - 0s 668us/step - loss: 8.4085\n", + "Epoch 395/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 7.9754\n", + "Epoch 396/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.3881\n", + "Epoch 397/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 9.0084\n", + "Epoch 398/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.9456\n", + "Epoch 399/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 8.3904\n", + "Epoch 400/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.1277\n", + "Epoch 401/500\n", + "4/4 [==============================] - 0s 668us/step - loss: 8.0885\n", + "Epoch 402/500\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4/4 [==============================] - 0s 667us/step - loss: 7.8879\n", + "Epoch 403/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.7303\n", + "Epoch 404/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 7.9645\n", + "Epoch 405/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 8.3607\n", + "Epoch 406/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.2445\n", + "Epoch 407/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.1188\n", + "Epoch 408/500\n", + "4/4 [==============================] - 0s 941us/step - loss: 8.1795\n", + "Epoch 409/500\n", + "4/4 [==============================] - 0s 670us/step - loss: 8.0516\n", + "Epoch 410/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.4908\n", + "Epoch 411/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.4812\n", + "Epoch 412/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.0266\n", + "Epoch 413/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 7.9246\n", + "Epoch 414/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.3644\n", + "Epoch 415/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 7.8790\n", + "Epoch 416/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.8834\n", + "Epoch 417/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.0434\n", + "Epoch 418/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.2627\n", + "Epoch 419/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.7188\n", + "Epoch 420/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.3775\n", + "Epoch 421/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 7.8194\n", + "Epoch 422/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.7755\n", + "Epoch 423/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.1705\n", + "Epoch 424/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.5942\n", + "Epoch 425/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.1822\n", + "Epoch 426/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.4478\n", + "Epoch 427/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 7.8675\n", + "Epoch 428/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.3426\n", + "Epoch 429/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.2153\n", + "Epoch 430/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.4765\n", + "Epoch 431/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.5128\n", + "Epoch 432/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.7335\n", + "Epoch 433/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.1310\n", + "Epoch 434/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.7234\n", + "Epoch 435/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 9.3236\n", + "Epoch 436/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 9.5831\n", + "Epoch 437/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 8.9517\n", + "Epoch 438/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 8.8277\n", + "Epoch 439/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.4419\n", + "Epoch 440/500\n", + "4/4 [==============================] - 0s 623us/step - loss: 9.0000\n", + "Epoch 441/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.5806\n", + "Epoch 442/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.5189\n", + "Epoch 443/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.4960\n", + "Epoch 444/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 8.3317\n", + "Epoch 445/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.1919\n", + "Epoch 446/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 8.9134\n", + "Epoch 447/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 7.5083\n", + "Epoch 448/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.5867\n", + "Epoch 449/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 8.3347\n", + "Epoch 450/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.2476\n", + "Epoch 451/500\n", + "4/4 [==============================] - 0s 665us/step - loss: 8.3441\n", + "Epoch 452/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 7.8876\n", + "Epoch 453/500\n", + "4/4 [==============================] - 0s 669us/step - loss: 8.3146\n", + "Epoch 454/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.1349\n", + "Epoch 455/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.6561\n", + "Epoch 456/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.2345\n", + "Epoch 457/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.8308\n", + "Epoch 458/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.8209\n", + "Epoch 459/500\n", + "4/4 [==============================] - 0s 668us/step - loss: 8.2270\n", + "Epoch 460/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.2420\n", + "Epoch 461/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.4079\n", + "Epoch 462/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 8.7370\n", + "Epoch 463/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.9639\n", + "Epoch 464/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.0593\n", + "Epoch 465/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.6813\n", + "Epoch 466/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 7.6410\n", + "Epoch 467/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.3035\n", + "Epoch 468/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.2090\n", + "Epoch 469/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 7.9865\n", + "Epoch 470/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.5048\n", + "Epoch 471/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 7.9974\n", + "Epoch 472/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.5399\n", + "Epoch 473/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.4421\n", + "Epoch 474/500\n", + "4/4 [==============================] - 0s 665us/step - loss: 7.8596\n", + "Epoch 475/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 8.9635\n", + "Epoch 476/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.0556\n", + "Epoch 477/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 8.4410\n", + "Epoch 478/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 7.9163\n", + "Epoch 479/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.1246\n", + "Epoch 480/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.4800\n", + "Epoch 481/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 8.6292\n", + "Epoch 482/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 8.3057\n", + "Epoch 483/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.5658\n", + "Epoch 484/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.3870\n", + "Epoch 485/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.6988\n", + "Epoch 486/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 7.9037\n", + "Epoch 487/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.1514\n", + "Epoch 488/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 7.9452\n", + "Epoch 489/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.4299\n", + "Epoch 490/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 8.4384\n", + "Epoch 491/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 7.6794\n", + "Epoch 492/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.2355\n", + "Epoch 493/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.1727\n", + "Epoch 494/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 8.5242\n", + "Epoch 495/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 7.8116\n", + "Epoch 496/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.5175\n", + "Epoch 497/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.2700\n", + "Epoch 498/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8.4798\n", + "Epoch 499/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 7.6631\n", + "Epoch 500/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 8.3500\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "modell.fit(x, y, epochs=500)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "x_fit = np.linspace(0, 5, 100)\n", + "y_fit = modell.predict(x_fit)\n", + "plt.plot(x, y, linestyle = ' ', marker = 'o', label = 'data')\n", + "plt.plot(x_fit, y_fit, label = 'Regresjonskurve')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[2.7689884]] [[5.4485865]]\n" + ] + } + ], + "source": [ + "y1_test = modell.predict([0,])\n", + "y2_test = modell.predict([1,])\n", + "print(y1_test, y2_test)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Mer avansert regresjon" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 9846.5271\n", + "Epoch 2/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 7517.2033\n", + "Epoch 3/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 6857.6938\n", + "Epoch 4/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 5900.6629\n", + "Epoch 5/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 7197.5639\n", + "Epoch 6/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 5748.2756\n", + "Epoch 7/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 7078.3206\n", + "Epoch 8/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 6448.2610\n", + "Epoch 9/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 7902.1220\n", + "Epoch 10/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 6011.5875\n", + "Epoch 11/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 7185.1816\n", + "Epoch 12/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 6540.1982\n", + "Epoch 13/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 6207.6939\n", + "Epoch 14/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 5297.6517\n", + "Epoch 15/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 6654.8270\n", + "Epoch 16/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 6176.5774\n", + "Epoch 17/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 5118.5701\n", + "Epoch 18/500\n", + "4/4 [==============================] - 0s 668us/step - loss: 5101.3255\n", + "Epoch 19/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 7049.2334\n", + "Epoch 20/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 6688.3064\n", + "Epoch 21/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 7016.4231\n", + "Epoch 22/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 6300.7874\n", + "Epoch 23/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 6969.0907\n", + "Epoch 24/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 5613.6901\n", + "Epoch 25/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 6220.1277\n", + "Epoch 26/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 6424.6212\n", + "Epoch 27/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 6048.0418\n", + "Epoch 28/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 5611.1164\n", + "Epoch 29/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 5294.2371\n", + "Epoch 30/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 5935.7186\n", + "Epoch 31/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 6021.2754\n", + "Epoch 32/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 5600.7885\n", + "Epoch 33/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 6116.8136\n", + "Epoch 34/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 4804.6906\n", + "Epoch 35/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 6137.8878\n", + "Epoch 36/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 5550.7077\n", + "Epoch 37/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 7137.1366\n", + "Epoch 38/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 6258.1508\n", + "Epoch 39/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 6230.0475\n", + "Epoch 40/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 5714.1845\n", + "Epoch 41/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 4792.8920\n", + "Epoch 42/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 6203.8469\n", + "Epoch 43/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 5260.1548\n", + "Epoch 44/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 5168.5146\n", + "Epoch 45/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 4653.0514\n", + "Epoch 46/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 5182.0346\n", + "Epoch 47/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 5293.0491\n", + "Epoch 48/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 5078.3902\n", + "Epoch 49/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 5425.0494\n", + "Epoch 50/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 5825.7103\n", + "Epoch 51/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 4983.5356\n", + "Epoch 52/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 5597.9477\n", + "Epoch 53/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 4876.0231\n", + "Epoch 54/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 4425.2756\n", + "Epoch 55/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 4959.7402\n", + "Epoch 56/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 5204.2624\n", + "Epoch 57/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 5869.7483\n", + "Epoch 58/500\n", + "4/4 [==============================] - 0s 690us/step - loss: 4854.8150\n", + "Epoch 59/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 5501.9410\n", + "Epoch 60/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 3997.2270\n", + "Epoch 61/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 4215.2882\n", + "Epoch 62/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 4234.0723\n", + "Epoch 63/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 4874.5979\n", + "Epoch 64/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 4574.2138\n", + "Epoch 65/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 3728.1270\n", + "Epoch 66/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 4291.4191\n", + "Epoch 67/500\n", + "4/4 [==============================] - 0s 944us/step - loss: 5475.3085\n", + "Epoch 68/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 4220.9550\n", + "Epoch 69/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 4462.9824\n", + "Epoch 70/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 4472.4046\n", + "Epoch 71/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 4947.1946\n", + "Epoch 72/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 4137.2216\n", + "Epoch 73/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 3308.5031\n", + "Epoch 74/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 4353.0312\n", + "Epoch 75/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 3650.9376\n", + "Epoch 76/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 3371.5264\n", + "Epoch 77/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 3755.0196\n", + "Epoch 78/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 3597.5115\n", + "Epoch 79/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 4071.7780\n", + "Epoch 80/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 4358.9461\n", + "Epoch 81/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 3288.4478\n", + "Epoch 82/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 3660.9661\n", + "Epoch 83/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 3157.3340\n", + "Epoch 84/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 4127.6904\n", + "Epoch 85/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 3996.1034\n", + "Epoch 86/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 3345.9519\n", + "Epoch 87/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 3312.3092\n", + "Epoch 88/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 3337.1958\n", + "Epoch 89/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 3746.5674\n", + "Epoch 90/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 3150.5879\n", + "Epoch 91/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 3676.2338\n", + "Epoch 92/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 4092.8263\n", + "Epoch 93/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 3658.1639\n", + "Epoch 94/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 2630.9319\n", + "Epoch 95/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 4072.3005\n", + "Epoch 96/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 3710.7404\n", + "Epoch 97/500\n", + "4/4 [==============================] - 0s 877us/step - loss: 4227.0063\n", + "Epoch 98/500\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4/4 [==============================] - 0s 667us/step - loss: 3234.0952\n", + "Epoch 99/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 4118.6172\n", + "Epoch 100/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 3848.7425\n", + "Epoch 101/500\n", + "4/4 [==============================] - 0s 668us/step - loss: 2847.9733\n", + "Epoch 102/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 4392.7742\n", + "Epoch 103/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 3297.6202\n", + "Epoch 104/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 3152.0852\n", + "Epoch 105/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 3187.5098\n", + "Epoch 106/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 3343.2998\n", + "Epoch 107/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 2826.1402\n", + "Epoch 108/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 3323.9419\n", + "Epoch 109/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 3869.0579\n", + "Epoch 110/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 3092.8149\n", + "Epoch 111/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 3481.9407\n", + "Epoch 112/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 2775.3702\n", + "Epoch 113/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 3950.5678\n", + "Epoch 114/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 3758.1000\n", + "Epoch 115/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 2865.6083\n", + "Epoch 116/500\n", + "4/4 [==============================] - 0s 700us/step - loss: 3228.4140\n", + "Epoch 117/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 3314.2374\n", + "Epoch 118/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 3163.4877\n", + "Epoch 119/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 3328.7347\n", + "Epoch 120/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 2806.6611\n", + "Epoch 121/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 3507.0183\n", + "Epoch 122/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 3537.7211\n", + "Epoch 123/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 2512.9548\n", + "Epoch 124/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 2659.5676\n", + "Epoch 125/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2597.8499\n", + "Epoch 126/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 3644.0331\n", + "Epoch 127/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 3612.3022\n", + "Epoch 128/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 3524.6265\n", + "Epoch 129/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 3007.7482\n", + "Epoch 130/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 3031.6250\n", + "Epoch 131/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2479.9818\n", + "Epoch 132/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 2861.7851\n", + "Epoch 133/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 2775.3146\n", + "Epoch 134/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 3332.7385\n", + "Epoch 135/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 2905.4698\n", + "Epoch 136/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 3522.2373\n", + "Epoch 137/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 3415.8500\n", + "Epoch 138/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 3005.3768\n", + "Epoch 139/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 3015.1922\n", + "Epoch 140/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 2303.8471\n", + "Epoch 141/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2210.7076\n", + "Epoch 142/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 3393.9407\n", + "Epoch 143/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2392.4108\n", + "Epoch 144/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2677.0868\n", + "Epoch 145/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 3384.2544\n", + "Epoch 146/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 3034.2302\n", + "Epoch 147/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2507.8782\n", + "Epoch 148/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2817.7991\n", + "Epoch 149/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 3100.3194\n", + "Epoch 150/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2424.5348\n", + "Epoch 151/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 2270.8100\n", + "Epoch 152/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2898.4783\n", + "Epoch 153/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 2233.0646\n", + "Epoch 154/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 2854.0588\n", + "Epoch 155/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2687.0520\n", + "Epoch 156/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 2821.3521\n", + "Epoch 157/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2332.3593\n", + "Epoch 158/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2806.8894\n", + "Epoch 159/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 2245.7685\n", + "Epoch 160/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 2327.3211\n", + "Epoch 161/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 2217.3057\n", + "Epoch 162/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2507.1689\n", + "Epoch 163/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 2340.5433\n", + "Epoch 164/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 2339.1500\n", + "Epoch 165/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2732.0498\n", + "Epoch 166/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 2924.6649\n", + "Epoch 167/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 2547.1220\n", + "Epoch 168/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 2635.7917\n", + "Epoch 169/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2497.0261\n", + "Epoch 170/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2481.4085\n", + "Epoch 171/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2588.2656\n", + "Epoch 172/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 2350.0797\n", + "Epoch 173/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2288.1246\n", + "Epoch 174/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 2017.7328\n", + "Epoch 175/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2416.5938\n", + "Epoch 176/500\n", + "4/4 [==============================] - 0s 631us/step - loss: 2616.8181\n", + "Epoch 177/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 2590.3714\n", + "Epoch 178/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2491.5979\n", + "Epoch 179/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2590.6091\n", + "Epoch 180/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 2540.2420\n", + "Epoch 181/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 2138.1394\n", + "Epoch 182/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 2407.4652\n", + "Epoch 183/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2404.4267\n", + "Epoch 184/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 2236.0930\n", + "Epoch 185/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 2459.1801\n", + "Epoch 186/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 2086.4740\n", + "Epoch 187/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 2230.7297\n", + "Epoch 188/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2452.7629\n", + "Epoch 189/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2327.3585\n", + "Epoch 190/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2674.0978\n", + "Epoch 191/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 2440.4373\n", + "Epoch 192/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2246.9789\n", + "Epoch 193/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2398.7197\n", + "Epoch 194/500\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4/4 [==============================] - 0s 666us/step - loss: 1814.0026\n", + "Epoch 195/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2598.4723\n", + "Epoch 196/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 2276.0607\n", + "Epoch 197/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1842.0658\n", + "Epoch 198/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2516.4747\n", + "Epoch 199/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 2698.7970\n", + "Epoch 200/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2616.9011\n", + "Epoch 201/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 2248.4879\n", + "Epoch 202/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 2327.8718\n", + "Epoch 203/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1988.9131\n", + "Epoch 204/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2647.0508\n", + "Epoch 205/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2470.6068\n", + "Epoch 206/500\n", + "4/4 [==============================] - 0s 668us/step - loss: 2103.9357\n", + "Epoch 207/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 2256.8297\n", + "Epoch 208/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2371.5076\n", + "Epoch 209/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2187.5882\n", + "Epoch 210/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2347.2125\n", + "Epoch 211/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2016.2686\n", + "Epoch 212/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2414.5550\n", + "Epoch 213/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1997.7690\n", + "Epoch 214/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2143.1705\n", + "Epoch 215/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 2220.8686\n", + "Epoch 216/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2027.0525\n", + "Epoch 217/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1796.1243\n", + "Epoch 218/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1688.2720\n", + "Epoch 219/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 2427.6732\n", + "Epoch 220/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1930.2496\n", + "Epoch 221/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 2101.2623\n", + "Epoch 222/500\n", + "4/4 [==============================] - 0s 668us/step - loss: 2311.3426\n", + "Epoch 223/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2108.5763\n", + "Epoch 224/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1652.7140\n", + "Epoch 225/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 2029.6269\n", + "Epoch 226/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1971.0215\n", + "Epoch 227/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 2086.6688\n", + "Epoch 228/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2013.4791\n", + "Epoch 229/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1939.2891\n", + "Epoch 230/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2023.8636\n", + "Epoch 231/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1973.9831\n", + "Epoch 232/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2170.8269\n", + "Epoch 233/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 2119.8461\n", + "Epoch 234/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 1718.3819\n", + "Epoch 235/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1753.4476\n", + "Epoch 236/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 2009.6607\n", + "Epoch 237/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1874.1594\n", + "Epoch 238/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1786.2699\n", + "Epoch 239/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 1976.5859\n", + "Epoch 240/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1764.9975\n", + "Epoch 241/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1843.2896\n", + "Epoch 242/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1887.3193\n", + "Epoch 243/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1746.3157\n", + "Epoch 244/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 2219.7242\n", + "Epoch 245/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1838.4691\n", + "Epoch 246/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1993.5528\n", + "Epoch 247/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1947.9465\n", + "Epoch 248/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1756.1666\n", + "Epoch 249/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2151.8272\n", + "Epoch 250/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 2048.7447\n", + "Epoch 251/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1880.7260\n", + "Epoch 252/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1681.5052\n", + "Epoch 253/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 1546.6121\n", + "Epoch 254/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1922.8754\n", + "Epoch 255/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 2054.1689\n", + "Epoch 256/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1950.0882\n", + "Epoch 257/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1550.6943\n", + "Epoch 258/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1768.0412\n", + "Epoch 259/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1886.6084\n", + "Epoch 260/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1832.7899\n", + "Epoch 261/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1880.5472\n", + "Epoch 262/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1793.9719\n", + "Epoch 263/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1947.4080\n", + "Epoch 264/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2140.2205\n", + "Epoch 265/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1552.2280\n", + "Epoch 266/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1875.1854\n", + "Epoch 267/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1512.7849\n", + "Epoch 268/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1730.0405\n", + "Epoch 269/500\n", + "4/4 [==============================] - 0s 982us/step - loss: 1649.7960\n", + "Epoch 270/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1570.7260\n", + "Epoch 271/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1624.6024\n", + "Epoch 272/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1648.9278\n", + "Epoch 273/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1910.3136\n", + "Epoch 274/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1602.3501\n", + "Epoch 275/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1725.3586\n", + "Epoch 276/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1869.1324\n", + "Epoch 277/500\n", + "4/4 [==============================] - 0s 668us/step - loss: 1830.4318\n", + "Epoch 278/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1761.2750\n", + "Epoch 279/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1722.9209\n", + "Epoch 280/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1948.2875\n", + "Epoch 281/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1831.7574\n", + "Epoch 282/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 2206.8629\n", + "Epoch 283/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1956.3901\n", + "Epoch 284/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 2008.6336\n", + "Epoch 285/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1838.9097\n", + "Epoch 286/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1850.5665\n", + "Epoch 287/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1741.1563\n", + "Epoch 288/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 1533.2136\n", + "Epoch 289/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1710.2255\n", + "Epoch 290/500\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4/4 [==============================] - 0s 667us/step - loss: 1863.6537\n", + "Epoch 291/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1473.4835\n", + "Epoch 292/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1926.0840\n", + "Epoch 293/500\n", + "4/4 [==============================] - 0s 668us/step - loss: 1754.7195\n", + "Epoch 294/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1532.6767\n", + "Epoch 295/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1429.4323\n", + "Epoch 296/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 2109.0054\n", + "Epoch 297/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1841.1548\n", + "Epoch 298/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 2027.2667\n", + "Epoch 299/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1759.9251\n", + "Epoch 300/500\n", + "4/4 [==============================] - 0s 507us/step - loss: 1677.7136\n", + "Epoch 301/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1644.2639\n", + "Epoch 302/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1727.8118\n", + "Epoch 303/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1799.4443\n", + "Epoch 304/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1791.8709\n", + "Epoch 305/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1613.7294\n", + "Epoch 306/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1667.9038\n", + "Epoch 307/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1424.7962\n", + "Epoch 308/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1683.4494\n", + "Epoch 309/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1886.6228\n", + "Epoch 310/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1719.3485\n", + "Epoch 311/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1949.5489\n", + "Epoch 312/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1752.6652\n", + "Epoch 313/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1641.8077\n", + "Epoch 314/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1679.9119\n", + "Epoch 315/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1614.9023\n", + "Epoch 316/500\n", + "4/4 [==============================] - 0s 512us/step - loss: 1599.3130\n", + "Epoch 317/500\n", + "4/4 [==============================] - 0s 637us/step - loss: 1543.8407\n", + "Epoch 318/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1548.0045\n", + "Epoch 319/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1616.8255\n", + "Epoch 320/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1658.5290\n", + "Epoch 321/500\n", + "4/4 [==============================] - 0s 668us/step - loss: 1623.4593\n", + "Epoch 322/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1598.5425\n", + "Epoch 323/500\n", + "4/4 [==============================] - 0s 665us/step - loss: 1527.0035\n", + "Epoch 324/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1675.1176\n", + "Epoch 325/500\n", + "4/4 [==============================] - 0s 668us/step - loss: 1579.7624\n", + "Epoch 326/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1871.0583\n", + "Epoch 327/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1676.2569\n", + "Epoch 328/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1548.3092\n", + "Epoch 329/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1792.6997\n", + "Epoch 330/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 1630.5027\n", + "Epoch 331/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1714.3342\n", + "Epoch 332/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1746.1937\n", + "Epoch 333/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1909.1885\n", + "Epoch 334/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1699.7365\n", + "Epoch 335/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1782.2948\n", + "Epoch 336/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1433.7564\n", + "Epoch 337/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1609.3827\n", + "Epoch 338/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1524.3713\n", + "Epoch 339/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1615.6571\n", + "Epoch 340/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1436.3167\n", + "Epoch 341/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1527.5656\n", + "Epoch 342/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1483.7080\n", + "Epoch 343/500\n", + "4/4 [==============================] - 0s 668us/step - loss: 1679.9990\n", + "Epoch 344/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1845.7168\n", + "Epoch 345/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1535.4206\n", + "Epoch 346/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1365.2617\n", + "Epoch 347/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 1322.8511\n", + "Epoch 348/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1658.6179\n", + "Epoch 349/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1718.2889\n", + "Epoch 350/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1330.4235\n", + "Epoch 351/500\n", + "4/4 [==============================] - 0s 668us/step - loss: 1684.8156\n", + "Epoch 352/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1526.8129\n", + "Epoch 353/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1451.5067\n", + "Epoch 354/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1263.4889\n", + "Epoch 355/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1551.9647\n", + "Epoch 356/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1477.6180\n", + "Epoch 357/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1572.4237\n", + "Epoch 358/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1674.9063\n", + "Epoch 359/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1378.8684\n", + "Epoch 360/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1507.3229\n", + "Epoch 361/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1768.5251\n", + "Epoch 362/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1648.0613\n", + "Epoch 363/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1940.2832\n", + "Epoch 364/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1390.7029\n", + "Epoch 365/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 2028.4180\n", + "Epoch 366/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1400.6053\n", + "Epoch 367/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1600.5463\n", + "Epoch 368/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 1417.4545\n", + "Epoch 369/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1690.9898\n", + "Epoch 370/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1560.5255\n", + "Epoch 371/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1496.3250\n", + "Epoch 372/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1464.4964\n", + "Epoch 373/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1347.3822\n", + "Epoch 374/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1680.5625\n", + "Epoch 375/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1685.9671\n", + "Epoch 376/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1458.3715\n", + "Epoch 377/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1338.3292\n", + "Epoch 378/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1224.0331\n", + "Epoch 379/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1615.2853\n", + "Epoch 380/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1479.0943\n", + "Epoch 381/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1457.9219\n", + "Epoch 382/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1475.0094\n", + "Epoch 383/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1670.0675\n", + "Epoch 384/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1342.1283\n", + "Epoch 385/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1732.6730\n", + "Epoch 386/500\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4/4 [==============================] - 0s 666us/step - loss: 1557.8197\n", + "Epoch 387/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1323.2413\n", + "Epoch 388/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1480.8009\n", + "Epoch 389/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1554.0360\n", + "Epoch 390/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1233.7350\n", + "Epoch 391/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1612.1095\n", + "Epoch 392/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1309.7605\n", + "Epoch 393/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1270.8509\n", + "Epoch 394/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1722.0782\n", + "Epoch 395/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1548.6975\n", + "Epoch 396/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1403.7559\n", + "Epoch 397/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1286.3266\n", + "Epoch 398/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1534.1359\n", + "Epoch 399/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1349.4493\n", + "Epoch 400/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1618.6762\n", + "Epoch 401/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1342.9501\n", + "Epoch 402/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1599.2243\n", + "Epoch 403/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1328.4496\n", + "Epoch 404/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1260.8650\n", + "Epoch 405/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1356.2635\n", + "Epoch 406/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1463.5878\n", + "Epoch 407/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1415.7405\n", + "Epoch 408/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1665.0463\n", + "Epoch 409/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1407.6085\n", + "Epoch 410/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1340.3311\n", + "Epoch 411/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1410.2766\n", + "Epoch 412/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 1370.8288\n", + "Epoch 413/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1525.9971\n", + "Epoch 414/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1281.8653\n", + "Epoch 415/500\n", + "4/4 [==============================] - 0s 668us/step - loss: 1242.5224\n", + "Epoch 416/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1471.6353\n", + "Epoch 417/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1343.7267\n", + "Epoch 418/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1074.5558\n", + "Epoch 419/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1477.0684\n", + "Epoch 420/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1548.6382\n", + "Epoch 421/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1554.9643\n", + "Epoch 422/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1113.1002\n", + "Epoch 423/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1267.2423\n", + "Epoch 424/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1333.1006\n", + "Epoch 425/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1344.3406\n", + "Epoch 426/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1532.5031\n", + "Epoch 427/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1240.9328\n", + "Epoch 428/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1362.0289\n", + "Epoch 429/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1332.5575\n", + "Epoch 430/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1464.8355\n", + "Epoch 431/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1337.9758\n", + "Epoch 432/500\n", + "4/4 [==============================] - 0s 676us/step - loss: 1549.9248\n", + "Epoch 433/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1168.1958\n", + "Epoch 434/500\n", + "4/4 [==============================] - 0s 884us/step - loss: 1811.1164\n", + "Epoch 435/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1528.3908\n", + "Epoch 436/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1278.0946\n", + "Epoch 437/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1254.2802\n", + "Epoch 438/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1163.0126\n", + "Epoch 439/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1241.6989\n", + "Epoch 440/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1280.1467\n", + "Epoch 441/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1373.9719\n", + "Epoch 442/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1589.5521\n", + "Epoch 443/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1462.5124\n", + "Epoch 444/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1463.4877\n", + "Epoch 445/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1276.0316\n", + "Epoch 446/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1481.6486\n", + "Epoch 447/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1374.0903\n", + "Epoch 448/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1450.0636\n", + "Epoch 449/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1491.4013\n", + "Epoch 450/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1234.3174\n", + "Epoch 451/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 1309.6376\n", + "Epoch 452/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1445.2293\n", + "Epoch 453/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1417.1038\n", + "Epoch 454/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1319.5845\n", + "Epoch 455/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1640.9712\n", + "Epoch 456/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1470.1415\n", + "Epoch 457/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1387.7348\n", + "Epoch 458/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1372.6094\n", + "Epoch 459/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1381.6782\n", + "Epoch 460/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1552.8121\n", + "Epoch 461/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1321.1897\n", + "Epoch 462/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1481.3858\n", + "Epoch 463/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1149.8614\n", + "Epoch 464/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1257.1769\n", + "Epoch 465/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1171.9660\n", + "Epoch 466/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1205.8323\n", + "Epoch 467/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1299.2956\n", + "Epoch 468/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1487.5287\n", + "Epoch 469/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1289.2277\n", + "Epoch 470/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1239.5310\n", + "Epoch 471/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1379.9230\n", + "Epoch 472/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1539.5882\n", + "Epoch 473/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1353.4876\n", + "Epoch 474/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1597.8884\n", + "Epoch 475/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1539.9622\n", + "Epoch 476/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1425.7742\n", + "Epoch 477/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1489.4607\n", + "Epoch 478/500\n", + "4/4 [==============================] - 0s 998us/step - loss: 1121.7008\n", + "Epoch 479/500\n", + "4/4 [==============================] - 0s 649us/step - loss: 1257.6141\n", + "Epoch 480/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 1336.6669\n", + "Epoch 481/500\n", + "4/4 [==============================] - 0s 664us/step - loss: 1420.3951\n", + "Epoch 482/500\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4/4 [==============================] - 0s 666us/step - loss: 1652.5571\n", + "Epoch 483/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 1252.8741\n", + "Epoch 484/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1463.2430\n", + "Epoch 485/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1600.7218\n", + "Epoch 486/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1493.6457\n", + "Epoch 487/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1105.8380\n", + "Epoch 488/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1257.4162\n", + "Epoch 489/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1193.1010\n", + "Epoch 490/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1531.6602\n", + "Epoch 491/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1357.7809\n", + "Epoch 492/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1173.1733\n", + "Epoch 493/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1384.7802\n", + "Epoch 494/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1453.4034\n", + "Epoch 495/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1149.9333\n", + "Epoch 496/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1326.4750\n", + "Epoch 497/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 1359.3023\n", + "Epoch 498/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1197.9775\n", + "Epoch 499/500\n", + "4/4 [==============================] - 0s 668us/step - loss: 1186.3858\n", + "Epoch 500/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1293.5841\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "x2 = np.linspace(-5, 5, 100)\n", + "y2 = x2**4 + x2**3 - 15*x2**2 + np.random.uniform(-5,5,100)\n", + "\n", + "modell2 = tf.keras.Sequential([\n", + " Dense(units = 10, input_shape = (1,), activation = 'sigmoid'),\n", + " Dense(units = 1, activation = 'linear')])\n", + "\n", + "modell2.compile(optimizer=Adam(0.1), loss='mse')\n", + "modell2.fit(x2, y2, epochs = 500)" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "x2_fit = np.linspace(-5, 5, 10000)\n", + "y2_fit = modell2.predict(x2_fit)\n", + "plt.plot(x2, y2, linestyle = ' ', marker = 'o', label = 'data')\n", + "plt.plot(x2_fit, y2_fit, label = 'regresjonskurve')\n", + "plt.legend()\n", + "plt.savefig(\"polynomreg1.pdf\")" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 8789.5694\n", + "Epoch 2/500\n", + "4/4 [==============================] - 0s 923us/step - loss: 6345.0535\n", + "Epoch 3/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 6029.8562\n", + "Epoch 4/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 5271.6045\n", + "Epoch 5/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 5460.2389\n", + "Epoch 6/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 5319.8144\n", + "Epoch 7/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 5651.7026\n", + "Epoch 8/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 5453.8189\n", + "Epoch 9/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 4450.8942\n", + "Epoch 10/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 4148.9610\n", + "Epoch 11/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 4600.5944\n", + "Epoch 12/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 4384.6699\n", + "Epoch 13/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 4774.5625\n", + "Epoch 14/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 4093.1962\n", + "Epoch 15/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 3993.7253\n", + "Epoch 16/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 3769.6068\n", + "Epoch 17/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 3109.8644\n", + "Epoch 18/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 3242.6954\n", + "Epoch 19/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2662.1601\n", + "Epoch 20/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 3351.1462\n", + "Epoch 21/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2610.7944\n", + "Epoch 22/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 2859.0244\n", + "Epoch 23/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 4131.9188\n", + "Epoch 24/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 2818.6651\n", + "Epoch 25/500\n", + "4/4 [==============================] - 0s 668us/step - loss: 3023.7022\n", + "Epoch 26/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 2924.5209\n", + "Epoch 27/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 2689.4314\n", + "Epoch 28/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 2602.8444\n", + "Epoch 29/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 2458.6333\n", + "Epoch 30/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2193.4183\n", + "Epoch 31/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 2355.9316\n", + "Epoch 32/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1773.1334\n", + "Epoch 33/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1859.9955\n", + "Epoch 34/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 2346.1298\n", + "Epoch 35/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1845.7091\n", + "Epoch 36/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2049.8132\n", + "Epoch 37/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 2178.9789\n", + "Epoch 38/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1476.1915\n", + "Epoch 39/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1631.7415\n", + "Epoch 40/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1969.7458\n", + "Epoch 41/500\n", + "4/4 [==============================] - 0s 923us/step - loss: 1298.5611\n", + "Epoch 42/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1386.5268\n", + "Epoch 43/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1436.5052\n", + "Epoch 44/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1384.1154\n", + "Epoch 45/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1505.5538\n", + "Epoch 46/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1858.7965\n", + "Epoch 47/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1652.7481\n", + "Epoch 48/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1476.9503\n", + "Epoch 49/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1850.2743\n", + "Epoch 50/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1884.4006\n", + "Epoch 51/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1312.1477\n", + "Epoch 52/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1766.8426\n", + "Epoch 53/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1254.7501\n", + "Epoch 54/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1574.3583\n", + "Epoch 55/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 1308.3793\n", + "Epoch 56/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1471.6119\n", + "Epoch 57/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1040.1743\n", + "Epoch 58/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1687.0333\n", + "Epoch 59/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1179.0807\n", + "Epoch 60/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1907.1058\n", + "Epoch 61/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1700.3897\n", + "Epoch 62/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1622.2294\n", + "Epoch 63/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1628.4703\n", + "Epoch 64/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1607.5396\n", + "Epoch 65/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1755.1934\n", + "Epoch 66/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1540.2809\n", + "Epoch 67/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1293.8165\n", + "Epoch 68/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 1456.2812\n", + "Epoch 69/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1383.7459\n", + "Epoch 70/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1341.3004\n", + "Epoch 71/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1245.1776\n", + "Epoch 72/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 1329.2148\n", + "Epoch 73/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1350.2608\n", + "Epoch 74/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1221.7366\n", + "Epoch 75/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1640.8798\n", + "Epoch 76/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1526.9409\n", + "Epoch 77/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 1151.5664\n", + "Epoch 78/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1065.3788\n", + "Epoch 79/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 1588.3678\n", + "Epoch 80/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 1295.6875\n", + "Epoch 81/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1281.6897\n", + "Epoch 82/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1229.0279\n", + "Epoch 83/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1348.2602\n", + "Epoch 84/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1292.9941\n", + "Epoch 85/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 1275.9404\n", + "Epoch 86/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 1152.4883\n", + "Epoch 87/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1331.3721\n", + "Epoch 88/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1261.7920\n", + "Epoch 89/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1310.7040\n", + "Epoch 90/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1280.5204\n", + "Epoch 91/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1142.0395\n", + "Epoch 92/500\n", + "4/4 [==============================] - 0s 515us/step - loss: 1147.8693\n", + "Epoch 93/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 974.3704\n", + "Epoch 94/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1155.0687\n", + "Epoch 95/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1029.2641\n", + "Epoch 96/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1127.5576\n", + "Epoch 97/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1244.8689\n", + "Epoch 98/500\n", + "4/4 [==============================] - 0s 668us/step - loss: 1228.0304\n", + "Epoch 99/500\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4/4 [==============================] - 0s 1000us/step - loss: 1290.4294\n", + "Epoch 100/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1264.9052\n", + "Epoch 101/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1185.3240\n", + "Epoch 102/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1206.5858\n", + "Epoch 103/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1479.4964\n", + "Epoch 104/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1310.4994\n", + "Epoch 105/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1222.5016\n", + "Epoch 106/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1387.1556\n", + "Epoch 107/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1634.1143\n", + "Epoch 108/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1146.8025\n", + "Epoch 109/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1123.7659\n", + "Epoch 110/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 1596.8107\n", + "Epoch 111/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1113.4868\n", + "Epoch 112/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1282.9418\n", + "Epoch 113/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 1204.6644\n", + "Epoch 114/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1046.1559\n", + "Epoch 115/500\n", + "4/4 [==============================] - 0s 665us/step - loss: 1299.0354\n", + "Epoch 116/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1326.6815\n", + "Epoch 117/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1359.9644\n", + "Epoch 118/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1327.7801\n", + "Epoch 119/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1309.2833\n", + "Epoch 120/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1797.1549\n", + "Epoch 121/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1624.3525\n", + "Epoch 122/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1389.3612\n", + "Epoch 123/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1285.9564\n", + "Epoch 124/500\n", + "4/4 [==============================] - 0s 915us/step - loss: 1549.8872\n", + "Epoch 125/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1510.6163\n", + "Epoch 126/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1322.9458\n", + "Epoch 127/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1322.6194\n", + "Epoch 128/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1339.9855\n", + "Epoch 129/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1250.7255\n", + "Epoch 130/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 1074.6780\n", + "Epoch 131/500\n", + "4/4 [==============================] - 0s 562us/step - loss: 1172.8854\n", + "Epoch 132/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1259.4188\n", + "Epoch 133/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1257.0122\n", + "Epoch 134/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1676.7020\n", + "Epoch 135/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1473.1501\n", + "Epoch 136/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1405.9000\n", + "Epoch 137/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1192.4324\n", + "Epoch 138/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1381.5773\n", + "Epoch 139/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1191.8903\n", + "Epoch 140/500\n", + "4/4 [==============================] - 0s 668us/step - loss: 1029.9497\n", + "Epoch 141/500\n", + "4/4 [==============================] - 0s 995us/step - loss: 1129.5827\n", + "Epoch 142/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1371.6389\n", + "Epoch 143/500\n", + "4/4 [==============================] - 0s 668us/step - loss: 1333.4286\n", + "Epoch 144/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1515.0143\n", + "Epoch 145/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1406.4011\n", + "Epoch 146/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 1283.7952\n", + "Epoch 147/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1524.2588\n", + "Epoch 148/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1599.1846\n", + "Epoch 149/500\n", + "4/4 [==============================] - 0s 668us/step - loss: 1327.3533\n", + "Epoch 150/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 2498.1994\n", + "Epoch 151/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2136.6207\n", + "Epoch 152/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2135.8144\n", + "Epoch 153/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1963.6042\n", + "Epoch 154/500\n", + "4/4 [==============================] - 0s 564us/step - loss: 1365.5562\n", + "Epoch 155/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1282.4442\n", + "Epoch 156/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1336.9373\n", + "Epoch 157/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1350.8740\n", + "Epoch 158/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1678.2083\n", + "Epoch 159/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1174.3013\n", + "Epoch 160/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1317.2248\n", + "Epoch 161/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1264.8075\n", + "Epoch 162/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1176.0533\n", + "Epoch 163/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1484.7648\n", + "Epoch 164/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1048.9400\n", + "Epoch 165/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 1419.2313\n", + "Epoch 166/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1245.3562\n", + "Epoch 167/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1213.1125\n", + "Epoch 168/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 1399.4077\n", + "Epoch 169/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1351.9926\n", + "Epoch 170/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1138.3006\n", + "Epoch 171/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1288.7547\n", + "Epoch 172/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1484.4280\n", + "Epoch 173/500\n", + "4/4 [==============================] - 0s 665us/step - loss: 1095.1959\n", + "Epoch 174/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1487.4609\n", + "Epoch 175/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1515.2432\n", + "Epoch 176/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1273.7294\n", + "Epoch 177/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1269.1444\n", + "Epoch 178/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1365.2088\n", + "Epoch 179/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1028.8981\n", + "Epoch 180/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1114.6379\n", + "Epoch 181/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1465.0994\n", + "Epoch 182/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1327.0004\n", + "Epoch 183/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1197.2784\n", + "Epoch 184/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1122.8612\n", + "Epoch 185/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1354.6093\n", + "Epoch 186/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1187.2953\n", + "Epoch 187/500\n", + "4/4 [==============================] - 0s 668us/step - loss: 1105.0744\n", + "Epoch 188/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1145.1487\n", + "Epoch 189/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1185.6292\n", + "Epoch 190/500\n", + "4/4 [==============================] - 0s 789us/step - loss: 1112.6757\n", + "Epoch 191/500\n", + "4/4 [==============================] - 0s 761us/step - loss: 1076.4928\n", + "Epoch 192/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1023.3226\n", + "Epoch 193/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 922.0698\n", + "Epoch 194/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1297.4617\n", + "Epoch 195/500\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4/4 [==============================] - 0s 666us/step - loss: 1261.4720\n", + "Epoch 196/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1363.1085\n", + "Epoch 197/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1311.5873\n", + "Epoch 198/500\n", + "4/4 [==============================] - 0s 668us/step - loss: 1057.1155\n", + "Epoch 199/500\n", + "4/4 [==============================] - 0s 685us/step - loss: 1555.0469\n", + "Epoch 200/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1206.8271\n", + "Epoch 201/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1309.4932\n", + "Epoch 202/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1216.6666\n", + "Epoch 203/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1134.7535\n", + "Epoch 204/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1180.2378\n", + "Epoch 205/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 1118.3349\n", + "Epoch 206/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1422.3731\n", + "Epoch 207/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 2969.5614\n", + "Epoch 208/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 2310.0057\n", + "Epoch 209/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2454.8443\n", + "Epoch 210/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1596.5067\n", + "Epoch 211/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1564.4193\n", + "Epoch 212/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1432.7741\n", + "Epoch 213/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1790.6158\n", + "Epoch 214/500\n", + "4/4 [==============================] - 0s 470us/step - loss: 1374.8593\n", + "Epoch 215/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1257.9713\n", + "Epoch 216/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1130.2473\n", + "Epoch 217/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1076.2295\n", + "Epoch 218/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1495.1215\n", + "Epoch 219/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1243.7302\n", + "Epoch 220/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1136.7336\n", + "Epoch 221/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 976.5883\n", + "Epoch 222/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1200.1370\n", + "Epoch 223/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1293.1500\n", + "Epoch 224/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1312.2003\n", + "Epoch 225/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 1154.3557\n", + "Epoch 226/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1364.9219\n", + "Epoch 227/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 1220.6435\n", + "Epoch 228/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1093.3416\n", + "Epoch 229/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1096.2506\n", + "Epoch 230/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 1409.2996\n", + "Epoch 231/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1362.6749\n", + "Epoch 232/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1156.9496\n", + "Epoch 233/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1448.2217\n", + "Epoch 234/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1166.8688\n", + "Epoch 235/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1262.1240\n", + "Epoch 236/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1103.8537\n", + "Epoch 237/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1277.9765\n", + "Epoch 238/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1495.3113\n", + "Epoch 239/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1046.2204\n", + "Epoch 240/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1333.1548\n", + "Epoch 241/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1358.8558\n", + "Epoch 242/500\n", + "4/4 [==============================] - 0s 668us/step - loss: 1149.6608\n", + "Epoch 243/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1361.3927\n", + "Epoch 244/500\n", + "4/4 [==============================] - 0s 842us/step - loss: 1148.3948\n", + "Epoch 245/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1347.1580\n", + "Epoch 246/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1372.5474\n", + "Epoch 247/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1185.6848\n", + "Epoch 248/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1032.2885\n", + "Epoch 249/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1144.4747\n", + "Epoch 250/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1307.3123\n", + "Epoch 251/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1249.5654\n", + "Epoch 252/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 995.1561\n", + "Epoch 253/500\n", + "4/4 [==============================] - 0s 883us/step - loss: 1306.1875\n", + "Epoch 254/500\n", + "4/4 [==============================] - 0s 668us/step - loss: 1040.3799\n", + "Epoch 255/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1176.3732\n", + "Epoch 256/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1240.6577\n", + "Epoch 257/500\n", + "4/4 [==============================] - 0s 947us/step - loss: 1119.9270\n", + "Epoch 258/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 1372.8056\n", + "Epoch 259/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1369.8861\n", + "Epoch 260/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 883.4447\n", + "Epoch 261/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1413.8469\n", + "Epoch 262/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1032.5739\n", + "Epoch 263/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1133.3205\n", + "Epoch 264/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1189.2164\n", + "Epoch 265/500\n", + "4/4 [==============================] - 0s 668us/step - loss: 1081.2790\n", + "Epoch 266/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1109.8219\n", + "Epoch 267/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1272.5583\n", + "Epoch 268/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1145.9428\n", + "Epoch 269/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1236.4832\n", + "Epoch 270/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1245.3220\n", + "Epoch 271/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1349.4604\n", + "Epoch 272/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1184.2619\n", + "Epoch 273/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1216.6105\n", + "Epoch 274/500\n", + "4/4 [==============================] - 0s 842us/step - loss: 1203.9672\n", + "Epoch 275/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1033.5132\n", + "Epoch 276/500\n", + "4/4 [==============================] - 0s 662us/step - loss: 1087.1704\n", + "Epoch 277/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1423.5913\n", + "Epoch 278/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1267.8113\n", + "Epoch 279/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1941.5821\n", + "Epoch 280/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1579.7110\n", + "Epoch 281/500\n", + "4/4 [==============================] - 0s 904us/step - loss: 1355.7920\n", + "Epoch 282/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1382.6457\n", + "Epoch 283/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1526.9205\n", + "Epoch 284/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1069.8764\n", + "Epoch 285/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1621.8895\n", + "Epoch 286/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1340.8351\n", + "Epoch 287/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1256.3913\n", + "Epoch 288/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1580.8658\n", + "Epoch 289/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1264.1625\n", + "Epoch 290/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1212.9664\n", + "Epoch 291/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1139.6072\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 292/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1519.5740\n", + "Epoch 293/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1188.1373\n", + "Epoch 294/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1398.1069\n", + "Epoch 295/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1265.9901\n", + "Epoch 296/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1163.9531\n", + "Epoch 297/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1377.6982\n", + "Epoch 298/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1273.2436\n", + "Epoch 299/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1244.8719\n", + "Epoch 300/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1004.1714\n", + "Epoch 301/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1044.0988\n", + "Epoch 302/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 938.1519\n", + "Epoch 303/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 965.4555\n", + "Epoch 304/500\n", + "4/4 [==============================] - 0s 668us/step - loss: 1516.1876\n", + "Epoch 305/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1391.4293\n", + "Epoch 306/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 1391.1598\n", + "Epoch 307/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 939.1058\n", + "Epoch 308/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 1092.7569\n", + "Epoch 309/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1344.5620\n", + "Epoch 310/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1255.0189\n", + "Epoch 311/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 910.9502\n", + "Epoch 312/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1007.2610\n", + "Epoch 313/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1185.6815\n", + "Epoch 314/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1057.8459\n", + "Epoch 315/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1487.4696\n", + "Epoch 316/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1164.8629\n", + "Epoch 317/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1468.9542\n", + "Epoch 318/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1071.7235\n", + "Epoch 319/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1395.2127\n", + "Epoch 320/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 1003.7729\n", + "Epoch 321/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1226.2039\n", + "Epoch 322/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1290.8732\n", + "Epoch 323/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1381.0362\n", + "Epoch 324/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1157.8203\n", + "Epoch 325/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1094.6289\n", + "Epoch 326/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1047.1243\n", + "Epoch 327/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 991.2350\n", + "Epoch 328/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 938.6988\n", + "Epoch 329/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1156.3823\n", + "Epoch 330/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1264.8072\n", + "Epoch 331/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1099.3680\n", + "Epoch 332/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1164.2901\n", + "Epoch 333/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 883.5028\n", + "Epoch 334/500\n", + "4/4 [==============================] - 0s 965us/step - loss: 953.7701\n", + "Epoch 335/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1330.2329\n", + "Epoch 336/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 828.4886\n", + "Epoch 337/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1146.8216\n", + "Epoch 338/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1016.6048\n", + "Epoch 339/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1191.9975\n", + "Epoch 340/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 984.8603\n", + "Epoch 341/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 1047.5341\n", + "Epoch 342/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 1225.4716\n", + "Epoch 343/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 880.2477\n", + "Epoch 344/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 1049.2839\n", + "Epoch 345/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1180.1412\n", + "Epoch 346/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 897.7965\n", + "Epoch 347/500\n", + "4/4 [==============================] - 0s 512us/step - loss: 1242.9396\n", + "Epoch 348/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1173.2106\n", + "Epoch 349/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 968.1974\n", + "Epoch 350/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1216.8987\n", + "Epoch 351/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 959.5702\n", + "Epoch 352/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1296.4587\n", + "Epoch 353/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1065.4702\n", + "Epoch 354/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1212.9849\n", + "Epoch 355/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1016.3034\n", + "Epoch 356/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1025.4910\n", + "Epoch 357/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1270.0101\n", + "Epoch 358/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 977.7403\n", + "Epoch 359/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1189.8224\n", + "Epoch 360/500\n", + "4/4 [==============================] - 0s 668us/step - loss: 1065.5023\n", + "Epoch 361/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1418.1719\n", + "Epoch 362/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1119.4534\n", + "Epoch 363/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1444.4327\n", + "Epoch 364/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1282.8326\n", + "Epoch 365/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 928.9790\n", + "Epoch 366/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1272.6000\n", + "Epoch 367/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 1094.3775\n", + "Epoch 368/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1110.0791\n", + "Epoch 369/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 705.3478\n", + "Epoch 370/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1464.6250\n", + "Epoch 371/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1688.6181\n", + "Epoch 372/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1651.3030\n", + "Epoch 373/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1691.5712\n", + "Epoch 374/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1621.3534\n", + "Epoch 375/500\n", + "4/4 [==============================] - 0s 777us/step - loss: 2408.2384\n", + "Epoch 376/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 3733.4124\n", + "Epoch 377/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1505.6476\n", + "Epoch 378/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1598.0186\n", + "Epoch 379/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1866.2545\n", + "Epoch 380/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1172.3527\n", + "Epoch 381/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 1259.1993\n", + "Epoch 382/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1208.4611\n", + "Epoch 383/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1189.5908\n", + "Epoch 384/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 912.0309\n", + "Epoch 385/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1439.9208\n", + "Epoch 386/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1056.7049\n", + "Epoch 387/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 911.3689\n", + "Epoch 388/500\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4/4 [==============================] - 0s 666us/step - loss: 1159.8199\n", + "Epoch 389/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1180.8495\n", + "Epoch 390/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 975.2523\n", + "Epoch 391/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 995.8115\n", + "Epoch 392/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1450.3545\n", + "Epoch 393/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1594.5259\n", + "Epoch 394/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1290.1917\n", + "Epoch 395/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1176.0412\n", + "Epoch 396/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1048.9418\n", + "Epoch 397/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1250.0147\n", + "Epoch 398/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1488.9932\n", + "Epoch 399/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1803.7824\n", + "Epoch 400/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 1360.8532\n", + "Epoch 401/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1089.5126\n", + "Epoch 402/500\n", + "4/4 [==============================] - 0s 668us/step - loss: 1213.0010\n", + "Epoch 403/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1124.5730\n", + "Epoch 404/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1165.9524\n", + "Epoch 405/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 912.0228\n", + "Epoch 406/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1311.9938\n", + "Epoch 407/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 945.6192\n", + "Epoch 408/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 1244.8549\n", + "Epoch 409/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1036.9820\n", + "Epoch 410/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 815.7364\n", + "Epoch 411/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 991.5349\n", + "Epoch 412/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1097.8790\n", + "Epoch 413/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 949.3937\n", + "Epoch 414/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 927.4123\n", + "Epoch 415/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 957.3746\n", + "Epoch 416/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 988.3683\n", + "Epoch 417/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 970.1810\n", + "Epoch 418/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 913.8410\n", + "Epoch 419/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1143.9463\n", + "Epoch 420/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1168.9288\n", + "Epoch 421/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 906.7702\n", + "Epoch 422/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 838.3699\n", + "Epoch 423/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 1158.7747\n", + "Epoch 424/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 1390.0820\n", + "Epoch 425/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 875.4423\n", + "Epoch 426/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1113.5223\n", + "Epoch 427/500\n", + "4/4 [==============================] - 0s 961us/step - loss: 1131.5903\n", + "Epoch 428/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1123.1616\n", + "Epoch 429/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1127.3328\n", + "Epoch 430/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 905.4634\n", + "Epoch 431/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 855.9978\n", + "Epoch 432/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1117.7617\n", + "Epoch 433/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1019.0109\n", + "Epoch 434/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1057.5680\n", + "Epoch 435/500\n", + "4/4 [==============================] - 0s 663us/step - loss: 1326.5362\n", + "Epoch 436/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 963.0330\n", + "Epoch 437/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1049.3125\n", + "Epoch 438/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1138.2411\n", + "Epoch 439/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 839.2833\n", + "Epoch 440/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1306.5699\n", + "Epoch 441/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1143.6591\n", + "Epoch 442/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1073.5262\n", + "Epoch 443/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 866.0777\n", + "Epoch 444/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1302.0317\n", + "Epoch 445/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 899.5547\n", + "Epoch 446/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 978.7943\n", + "Epoch 447/500\n", + "4/4 [==============================] - 0s 669us/step - loss: 1026.9669\n", + "Epoch 448/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1010.8402\n", + "Epoch 449/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 955.0318\n", + "Epoch 450/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1275.5488\n", + "Epoch 451/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 1163.0631\n", + "Epoch 452/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1841.6097\n", + "Epoch 453/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 977.0580\n", + "Epoch 454/500\n", + "4/4 [==============================] - 0s 842us/step - loss: 1789.0697\n", + "Epoch 455/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1113.1211\n", + "Epoch 456/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1807.6406\n", + "Epoch 457/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1805.6507\n", + "Epoch 458/500\n", + "4/4 [==============================] - 0s 612us/step - loss: 3331.6302\n", + "Epoch 459/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 6255.9072\n", + "Epoch 460/500\n", + "4/4 [==============================] - 0s 915us/step - loss: 8672.0254\n", + "Epoch 461/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 8870.3285\n", + "Epoch 462/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 7749.0257\n", + "Epoch 463/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 7348.0982\n", + "Epoch 464/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 6199.1880\n", + "Epoch 465/500\n", + "4/4 [==============================] - 0s 882us/step - loss: 5217.6583\n", + "Epoch 466/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 4600.6962\n", + "Epoch 467/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 5741.3516\n", + "Epoch 468/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 4929.5384\n", + "Epoch 469/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 4287.6029\n", + "Epoch 470/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 5422.0908\n", + "Epoch 471/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 3907.0360\n", + "Epoch 472/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 4102.9434\n", + "Epoch 473/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 3502.8456\n", + "Epoch 474/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 2059.5206\n", + "Epoch 475/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 2511.6811\n", + "Epoch 476/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1603.6337\n", + "Epoch 477/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2818.9461\n", + "Epoch 478/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2133.2921\n", + "Epoch 479/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 4414.3746\n", + "Epoch 480/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 3827.1083\n", + "Epoch 481/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 3461.7733\n", + "Epoch 482/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 2729.4938\n", + "Epoch 483/500\n", + "4/4 [==============================] - 0s 665us/step - loss: 2892.5532\n", + "Epoch 484/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 2203.8427\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 485/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 2814.6213\n", + "Epoch 486/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 2080.7165\n", + "Epoch 487/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1506.7127\n", + "Epoch 488/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 2203.7045\n", + "Epoch 489/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 3197.7218\n", + "Epoch 490/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 2647.6803\n", + "Epoch 491/500\n", + "4/4 [==============================] - 0s 999us/step - loss: 1961.8947\n", + "Epoch 492/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1813.8470\n", + "Epoch 493/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1807.7760\n", + "Epoch 494/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 2004.5909\n", + "Epoch 495/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1356.2910\n", + "Epoch 496/500\n", + "4/4 [==============================] - 0s 668us/step - loss: 1364.6932\n", + "Epoch 497/500\n", + "4/4 [==============================] - 0s 1ms/step - loss: 1599.7519\n", + "Epoch 498/500\n", + "4/4 [==============================] - 0s 667us/step - loss: 1018.7737\n", + "Epoch 499/500\n", + "4/4 [==============================] - 0s 1000us/step - loss: 1813.0761\n", + "Epoch 500/500\n", + "4/4 [==============================] - 0s 666us/step - loss: 1800.3698\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "modell3 = tf.keras.Sequential([\n", + " Dense(units = 12, input_shape = (1,), activation = 'sigmoid'),\n", + " Dense(units = 8, activation = 'linear'),\n", + " Dense(units = 6, activation = 'linear'),\n", + " Dense(units = 1, activation = 'linear')])\n", + "\n", + "modell3.compile(optimizer=Adam(0.1), loss='mse')\n", + "modell3.fit(x2, y2, epochs = 500)" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "x3_fit = np.linspace(-5, 5, 10000)\n", + "y3_fit = modell3.predict(x2_fit)\n", + "plt.plot(x2, y2, linestyle = ' ', marker = 'o', label = 'data')\n", + "plt.plot(x3_fit, y3_fit, label = 'regresjonskurve')\n", + "plt.legend()\n", + "plt.savefig(\"polynomreg2.pdf\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Eksempel" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Lager datasett" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [], + "source": [ + "train_labels = []\n", + "train_samples = []\n", + "\n", + "# 5 % young did not experience side-effects of a drug, 5 % of older did.\n", + "for i in range(50):\n", + " random_younger = np.random.randint(13,64)\n", + " train_samples.append(random_younger)\n", + " train_labels.append(1) # side-effects\n", + " \n", + " random_older = np.random.randint(65, 100)\n", + " train_samples.append(random_older)\n", + " train_labels.append(0) # not side-effects\n", + " \n", + "for i in range(1000):\n", + " random_younger = np.random.randint(13,64)\n", + " train_samples.append(random_younger)\n", + " train_labels.append(0) # not side-effects\n", + " \n", + " random_older = np.random.randint(65, 100)\n", + " train_samples.append(random_older)\n", + " train_labels.append(1) # side-effects" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [], + "source": [ + "train_labels = np.array(train_labels)\n", + "train_samples = np.array(train_samples)\n", + "train_labels, train_samples = shuffle(train_labels, train_samples)" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [], + "source": [ + "scaler = MinMaxScaler(feature_range=(0,1)) # Normaliserer verdiene mellom 0 og 1\n", + "scaled_train_samples = scaler.fit_transform(train_samples.reshape(-1,1)) # 1D data to 2D" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Bygg modell" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [], + "source": [ + "\"\"\"\n", + "#GPU-akselerasjon\n", + "physical_devices = tf.config.experimental.list_physical_devices('GPU')\n", + "print(\"Num GPUs Available\", len(physical_devices))\n", + "tf.config.experimental.set_memory_growth(physical_devices[0], True)\n", + "\"\"\"\n", + "None" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [], + "source": [ + "model = Sequential([\n", + " Dense(units = 16, input_shape = (1,), activation = 'relu'),\n", + " Dense(units = 32, activation = 'relu'),\n", + " Dense(units = 2, activation = 'softmax')\n", + "])\n", + "\n", + "# Dense = dense/fully connected layer.\n", + "# Activation function: Transformation of input to output.\n", + "# list of layers. First is a hidden layer. Last layer is output layer. units 16 and 32 is somewhat arbitrary.\n", + "# softmax gives probabilities." + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model: \"sequential_9\"\n", + "_________________________________________________________________\n", + "Layer (type) Output Shape Param # \n", + "=================================================================\n", + "dense_21 (Dense) (None, 16) 32 \n", + "_________________________________________________________________\n", + "dense_22 (Dense) (None, 32) 544 \n", + "_________________________________________________________________\n", + "dense_23 (Dense) (None, 2) 66 \n", + "=================================================================\n", + "Total params: 642\n", + "Trainable params: 642\n", + "Non-trainable params: 0\n", + "_________________________________________________________________\n" + ] + } + ], + "source": [ + "model.summary()" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [], + "source": [ + "model.compile(optimizer=Adam(learning_rate=0.0001), loss='sparse_categorical_crossentropy', metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/30\n", + "210/210 - 0s - loss: 0.6871 - accuracy: 0.5157\n", + "Epoch 2/30\n", + "210/210 - 0s - loss: 0.6470 - accuracy: 0.6371\n", + "Epoch 3/30\n", + "210/210 - 0s - loss: 0.6139 - accuracy: 0.6857\n", + "Epoch 4/30\n", + "210/210 - 0s - loss: 0.5794 - accuracy: 0.7381\n", + "Epoch 5/30\n", + "210/210 - 0s - loss: 0.5439 - accuracy: 0.7767\n", + "Epoch 6/30\n", + "210/210 - 0s - loss: 0.5107 - accuracy: 0.8081\n", + "Epoch 7/30\n", + "210/210 - 0s - loss: 0.4784 - accuracy: 0.8371\n", + "Epoch 8/30\n", + "210/210 - 0s - loss: 0.4481 - accuracy: 0.8533\n", + "Epoch 9/30\n", + "210/210 - 0s - loss: 0.4208 - accuracy: 0.8719\n", + "Epoch 10/30\n", + "210/210 - 0s - loss: 0.3961 - accuracy: 0.8824\n", + "Epoch 11/30\n", + "210/210 - 0s - loss: 0.3750 - accuracy: 0.8967\n", + "Epoch 12/30\n", + "210/210 - 0s - loss: 0.3565 - accuracy: 0.9062\n", + "Epoch 13/30\n", + "210/210 - 0s - loss: 0.3408 - accuracy: 0.9138\n", + "Epoch 14/30\n", + "210/210 - 0s - loss: 0.3279 - accuracy: 0.9195\n", + "Epoch 15/30\n", + "210/210 - 0s - loss: 0.3170 - accuracy: 0.9214\n", + "Epoch 16/30\n", + "210/210 - 0s - loss: 0.3084 - accuracy: 0.9229\n", + "Epoch 17/30\n", + "210/210 - 0s - loss: 0.3007 - accuracy: 0.9257\n", + "Epoch 18/30\n", + "210/210 - 0s - loss: 0.2941 - accuracy: 0.9319\n", + "Epoch 19/30\n", + "210/210 - 0s - loss: 0.2890 - accuracy: 0.9300\n", + "Epoch 20/30\n", + "210/210 - 0s - loss: 0.2844 - accuracy: 0.9319\n", + "Epoch 21/30\n", + "210/210 - 0s - loss: 0.2805 - accuracy: 0.9319\n", + "Epoch 22/30\n", + "210/210 - 0s - loss: 0.2773 - accuracy: 0.9400\n", + "Epoch 23/30\n", + "210/210 - 0s - loss: 0.2746 - accuracy: 0.9367\n", + "Epoch 24/30\n", + "210/210 - 0s - loss: 0.2724 - accuracy: 0.9357\n", + "Epoch 25/30\n", + "210/210 - 0s - loss: 0.2702 - accuracy: 0.9357\n", + "Epoch 26/30\n", + "210/210 - 0s - loss: 0.2683 - accuracy: 0.9429\n", + "Epoch 27/30\n", + "210/210 - 0s - loss: 0.2668 - accuracy: 0.9357\n", + "Epoch 28/30\n", + "210/210 - 0s - loss: 0.2654 - accuracy: 0.9381\n", + "Epoch 29/30\n", + "210/210 - 0s - loss: 0.2641 - accuracy: 0.9395\n", + "Epoch 30/30\n", + "210/210 - 0s - loss: 0.2628 - accuracy: 0.9452\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.fit(x=scaled_train_samples, y=train_labels, batch_size=10, epochs=30, shuffle=True, verbose=2)\n", + "#epochs = training iterations. Batch size = training sample size. Verbose: 0, 1 or 2 (level of output)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/ekstra/likninger.ipynb b/_sources/docs/ekstra/likninger.ipynb new file mode 100644 index 00000000..4216de4a --- /dev/null +++ b/_sources/docs/ekstra/likninger.ipynb @@ -0,0 +1,145 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 7. Likninger og nullpunkter\n", + "Likninger kan løse mange problemer. Hvis vi for eksempel skal finne ut hvor to funksjoner skjærer hverandre, kan vi løse likningen $f(x) = g(x)$ som et nullpunktsproblem: $f(x) - g(x) = 0$.\n", + "\n", + "Vi tar utgangspunkt i følgende likninger:\n", + "\n", + "$$c_1(t) = e^{-t} + t + 5$$\n", + "\n", + "$$c_2(t) = \\ln(0.006t + 1) + t^{0.3} + 10$$\n", + "\n", + "For å finne ut ved hvilken tid de to produktene har lik konsentrasjon, kan vi løse likningen $c_1(t) = c_2(t)$. Formulert som et nullpunktsproblem får vi:\n", + "\n", + "$$e^{-t} + t + 5 - \\ln(0.006t + 1) - t^{0.3} - 10 = 0$$\n", + "\n", + "Dette er en likning som ikke er analytisk løsbar. Her skal vi se på metoder for å finne nullpunktene til funksjoner. Dette er en strategi som også kan brukes til å løse likninger.\n", + "\n", + "```{admonition} Læringsutbytte\n", + "Etter å ha arbeidet med dette temaet, skal du kunne:\n", + "1. Forklare den teoretisk bakgrunnen for halveringsmetoden og Newtons metode.\n", + "2. Implementere halveringsmetoden og Newtons metode som Python-funksjoner.\n", + "3. Drøfte feil og begrensninger ved metodene.\n", + "4. Bruke metodene til å finne nullpunkter og løse likninger.\n", + "```\n", + "\n", + "## Halveringsmetoden" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "tags": [ + "remove-input" + ] + }, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import HTML\n", + "# Youtube\n", + "HTML('')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Når du har sett videoen, kan du gjøre følgende oppgave for å sjekke om du forstår innholdet:\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Bruk halveringsmetoden og vis at løsningene til likningen $x^5 = 5x^3 + 3$ er $x_1 \\approx -2.169, x_2 \\approx -0.894$ og $x_3 \\approx 2.291$.\n", + "```\n", + "\n", + "\n", + "\n", + "## Newtons metode" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "tags": [ + "remove-input" + ] + }, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import HTML\n", + "# Youtube\n", + "HTML('')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Når du har sett videoen, kan du gjøre følgende oppgave for å sjekke om du forstår innholdet:\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Implementer Newtons metode som en Python-funksjon med docstring, toleranse, maks antall iterasjoner og relevant feilhåndtering dersom vi når maks iterasjoner uten å nå gitt toleranse. Test funksjonen på likningen $x^2 = x^3 - 4$.\n", + "```\n", + "\n", + "\n", + "" + ] + } + ], + "metadata": { + "celltoolbar": "Edit Metadata", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/ekstra/likninger_oppgave1.ipynb b/_sources/docs/ekstra/likninger_oppgave1.ipynb new file mode 100644 index 00000000..714e7206 --- /dev/null +++ b/_sources/docs/ekstra/likninger_oppgave1.ipynb @@ -0,0 +1,74 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "liable-testament", + "metadata": {}, + "source": [ + "# Numerisk løsing av likninger\n", + "Gå sammen i grupper på ca. fire personer og diskuter oppgavene nedenfor.\n", + "\n", + "## Oppgave 1\n", + "a) Diskuter følgende spørsmål parvis i gruppa:\n", + "1.\tHva er en likning?\n", + "2.\tHva betyr det å løse en likning?\n", + "3.\tHva er felles for alle nullpunkter?\n", + "\n", + "b) Se på grafen til funksjonen f(x) nedenfor. Du kjenner ikke funksjonsuttrykket til denne grafen. Hvilke av følgende intervaller finnes nullpunktet i?\n", + "\n", + "[-1, 0.5], [-1, 2], [0, 1], [0.5, 1], [1, 2], [-1, 2]\n", + "\n", + "```{image} ../bilder/graf1.png\n", + ":alt: graf\n", + ":class: bg-primary mb-1\n", + ":width: 200px\n", + ":align: center\n", + "```\n", + "\n", + "c) Hva er forskjellen mellom funksjonsverdien til funksjonen i randpunktene på de intervallene som inneholder nullpunktene og de som ikke gjør det? Er det noen systematisk sammenheng her?\n", + "\n", + "d) Ta utgangspunkt i intervallet [0, 2]. Hvordan kan du justere dette intervallet systematisk for å komme nærmere og nærmere nullpunktet? Prøv å anvende generaliseringen om funksjonsverdiene ovenfor.\n", + "\n", + "e) Prøv å formulere en enkel systematisk algoritme for å finne nullpunktet gitt et intervall.\n", + "\n", + "f) Dere får utdelt noen grafer. En på gruppa får se grafene. Denne personen kan kun oppgi funksjonsverdier, mens de andre kan teste algoritmen dere lagde ovenfor ved å systematisk oppgi ulike x-verdier. Fungerte metoden på alle grafene?" + ] + }, + { + "cell_type": "markdown", + "id": "considerable-jenny", + "metadata": {}, + "source": [ + "## Oppgave 2\n", + "Følgende funksjon blei gitt på eksamen i 2009:\n", + "\n", + "$$f(x)=2\\ln⁡\\left((x^4+4)-\\frac{1}{2}x\\right)$$\n", + "\n", + "a) Prøv å løse likninga $f(x) = 0$ for hånd. Hvor langt kommer du med det? Dette kaller vi analytisk løsning av likninger, og vi ender opp med et eksakt svar hvis vi får det til.\n", + "\n", + "b) Tegn grafen for funksjonen ovenfor og bruk metoden dere formulerte i oppgave 1 til å finne en tilnærma løsning. Dette kaller vi numerisk løsning av likninger." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git "a/_sources/docs/ekstra/maskinl\303\246ring_iris.ipynb" "b/_sources/docs/ekstra/maskinl\303\246ring_iris.ipynb" new file mode 100644 index 00000000..8e586fbf --- /dev/null +++ "b/_sources/docs/ekstra/maskinl\303\246ring_iris.ipynb" @@ -0,0 +1,2368 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Maskinlæring" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import seaborn as sns\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# Lese dataene\n", + "iris = pd.read_csv(\"Datafiler/iris.csv\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Utforsking av datasettet" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IdSepalLengthCmSepalWidthCmPetalLengthCmPetalWidthCmSpecies
015.13.51.40.2Iris-setosa
124.93.01.40.2Iris-setosa
234.73.21.30.2Iris-setosa
344.63.11.50.2Iris-setosa
455.03.61.40.2Iris-setosa
\n", + "
" + ], + "text/plain": [ + " Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm Species\n", + "0 1 5.1 3.5 1.4 0.2 Iris-setosa\n", + "1 2 4.9 3.0 1.4 0.2 Iris-setosa\n", + "2 3 4.7 3.2 1.3 0.2 Iris-setosa\n", + "3 4 4.6 3.1 1.5 0.2 Iris-setosa\n", + "4 5 5.0 3.6 1.4 0.2 Iris-setosa" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Skriver ut fem første linjer\n", + "iris.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Visualiseringer\n", + "La oss først visualisere noen sammenhenger som kan gi oss noen hypoteser." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#sns.regplot(data=iris, x='SepalLengthCm',y=\"PetalLengthCm\")\n", + "#sns.histplot(data=iris, x=\"PetalLengthCm\")\n", + "#sns.jointplot(data=iris, x=\"SepalLengthCm\", y=\"PetalLengthCm\", hue=\"Species\")\n", + "sns.violinplot(data=iris, x='Species', y=\"PetalLengthCm\")" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "sns.pairplot(data=iris, hue=\"Species\")" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IdSepalLengthCmSepalWidthCmPetalLengthCmPetalWidthCm
count150.000000150.000000150.000000150.000000150.000000
mean75.5000005.8433333.0540003.7586671.198667
std43.4453680.8280660.4335941.7644200.763161
min1.0000004.3000002.0000001.0000000.100000
25%38.2500005.1000002.8000001.6000000.300000
50%75.5000005.8000003.0000004.3500001.300000
75%112.7500006.4000003.3000005.1000001.800000
max150.0000007.9000004.4000006.9000002.500000
\n", + "
" + ], + "text/plain": [ + " Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm\n", + "count 150.000000 150.000000 150.000000 150.000000 150.000000\n", + "mean 75.500000 5.843333 3.054000 3.758667 1.198667\n", + "std 43.445368 0.828066 0.433594 1.764420 0.763161\n", + "min 1.000000 4.300000 2.000000 1.000000 0.100000\n", + "25% 38.250000 5.100000 2.800000 1.600000 0.300000\n", + "50% 75.500000 5.800000 3.000000 4.350000 1.300000\n", + "75% 112.750000 6.400000 3.300000 5.100000 1.800000\n", + "max 150.000000 7.900000 4.400000 6.900000 2.500000" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "iris.describe()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Maskinlæring\n", + "Plottene ovenfor kan si oss noe om at beger- og kronbladlengden for ulike irisblomstarter er forskjellig. Vi skal nå lage en modell som kan forutsi hvilken art vi har med å gjøre gitt ulike bredder og lengder av kron- og begerblad. Vi velger ut hvilke data vi ønsker å bruke som kriterium for arten, spesifiserer kategorien \"species\" som målkategorien vår:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.model_selection import train_test_split, cross_val_score\n", + "from sklearn import tree\n", + "from sklearn.metrics import accuracy_score, confusion_matrix" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "kriterier = iris[['SepalLengthCm', 'SepalWidthCm', 'PetalLengthCm', 'PetalWidthCm']] # features\n", + "kategorier = iris['Species'] # labels" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "I maskinlæring er det viktig at modellen vår klarer å forutsi data som kommer utenfra datasettet vi trener modellen med. Derfor deler vi ofte opp dataene i et treningssett og et testsett. Treningssettet bruker vi til å trene modellen, testsettet til å teste og evaluere modellen i etterkant. Vi blander ikke disse dataene. Vi kan generere slike data med funksjonen _train\\_test\\_split()_. Her bruker vi 80 \\% av dataene til trening og 20 \\% til testing. Du bør bruke minst 70 \\% av dataene dine til trening." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "testandel = 0.2 # Andel brukt til testing\n", + "ml_data = train_test_split(kriterier, kategorier, test_size=testandel, random_state=42)\n", + "\n", + "treningskriterier = ml_data[0]\n", + "testkriterier = ml_data[1]\n", + "treningskategorier = ml_data[2]\n", + "testkategorier = ml_data[3]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Nå kan vi lage modellen vår. Vi bruker en algoritme som heter _Decision Tree Classifier_. Det er basert på sammensatte og forgreinede valgtrær, der alle kombinasjoner av kriterier blir utforsket. Betingede sannsynligheter for ulike hendelser blir beregnet, og de mest sannsynlige utfallene blir framhevet basert på kombinasjonen av kriteriene. Først trener vi modellen:" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "DecisionTreeClassifier()" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "modell = tree.DecisionTreeClassifier()\n", + "modell.fit(treningskriterier, treningskategorier)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Det var det - da har vi en modell! Den ligger nå i et objekt som vi har kalt _modell_. La oss sjekke hvordan modellen takler testsettet vårt.\n", + "\n", + "## Test og validering av modellen" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.0" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "modellkategorier_forutsett = modell.predict(testkriterier)\n", + "accuracy_score(testkategorier, modellkategorier_forutsett)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For å få bedre oversikt over hva modellen forutsier riktig og hva den feiler på, kan vi konstruere en såkalt \"Confusion Matrix\" (forvirringsmatrise/feilmatrise):" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "cm = confusion_matrix(modellkategorier_forutsett, testkategorier)\n", + "\n", + "import seaborn as sns\n", + "sns.heatmap(cm, annot=True, cmap='viridis')\n", + "plt.title(\"Forvirringsmatrise\")\n", + "plt.xlabel(\"Predikerte verdier\")\n", + "plt.ylabel(\"Sanne verdier\")\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IdSepalLengthCmSepalWidthCmPetalLengthCmPetalWidthCmSpecies
015.13.51.40.2Iris-setosa
124.93.01.40.2Iris-setosa
234.73.21.30.2Iris-setosa
344.63.11.50.2Iris-setosa
455.03.61.40.2Iris-setosa
\n", + "
" + ], + "text/plain": [ + " Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm Species\n", + "0 1 5.1 3.5 1.4 0.2 Iris-setosa\n", + "1 2 4.9 3.0 1.4 0.2 Iris-setosa\n", + "2 3 4.7 3.2 1.3 0.2 Iris-setosa\n", + "3 4 4.6 3.1 1.5 0.2 Iris-setosa\n", + "4 5 5.0 3.6 1.4 0.2 Iris-setosa" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "iris.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "La oss helt til sist visualisere modellen vår." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(10,10))\n", + "tree.plot_tree(modell,feature_names=iris.columns, class_names=['Iris-setosa', 'Iris-versicolor', 'Iris-virginica'], filled=True,label=None) \n", + "None" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## KNN-modell\n", + "K-nearest neighbor." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn import neighbors, metrics" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "knn = neighbors.KNeighborsClassifier(n_neighbors=20, weights='uniform')" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "KNeighborsClassifier(n_neighbors=20)" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "knn.fit(treningskriterier, treningskategorier) # features, labels" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Presisjon: 1.0\n" + ] + } + ], + "source": [ + "prediksjon_knn = knn.predict(testkriterier)\n", + "presisjon_knn = metrics.accuracy_score(testkategorier, prediksjon_knn)\n", + "print(\"Presisjon: \", presisjon_knn)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['Iris-versicolor']\n" + ] + } + ], + "source": [ + "# Bruker modellen på en tilfeldig valgt blomst\n", + "t1 = [[6.1, 2.8, 4.9, 1.1]]\n", + "#t2 = np.random.uniform(0,15,(100,4))*np.ones([100,4])\n", + "prediksjon = knn.predict(t1)\n", + "print(prediksjon)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## SVM-modell\n", + "Support vector machine-modell." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn import svm" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "SVC()" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "svm_modell = svm.SVC()\n", + "svm_modell.fit(treningskriterier, treningskategorier)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Presisjon: 1.0\n" + ] + } + ], + "source": [ + "prediksjon_svm = svm_modell.predict(testkriterier)\n", + "presisjon_svm = accuracy_score(testkategorier, prediksjon_svm)\n", + "print(\"Presisjon: \", presisjon_svm)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## K-means cluster" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.cluster import KMeans\n", + "from sklearn.preprocessing import scale\n", + "from sklearn.datasets import load_breast_cancer" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "#bc = load_breast_cancer()\n", + "#x = bc.data\n", + "#y = bc.target\n", + "bc = pd.read_csv(\"Datafiler/brystkreft.csv\")\n", + "bc.head()\n", + "bc.pop(\"id\")\n", + "\n", + "x = bc[['radius_mean', 'texture_mean', 'perimeter_mean',\n", + " 'area_mean', 'smoothness_mean', 'compactness_mean', 'concavity_mean',\n", + " 'concave points_mean', 'symmetry_mean', 'fractal_dimension_mean',\n", + " 'radius_se', 'texture_se', 'perimeter_se', 'area_se', 'smoothness_se',\n", + " 'compactness_se', 'concavity_se', 'concave points_se', 'symmetry_se',\n", + " 'fractal_dimension_se', 'radius_worst', 'texture_worst',\n", + " 'perimeter_worst', 'area_worst', 'smoothness_worst',\n", + " 'compactness_worst', 'concavity_worst', 'concave points_worst',\n", + " 'symmetry_worst', 'fractal_dimension_worst']]\n", + "\n", + "diagnose = {\"M\": 0, \"B\": 1}\n", + "bc['diagnosis'] = bc['diagnosis'].map(diagnose)\n", + "\n", + "y = bc['diagnosis']" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=testandel)\n", + "\n", + "modell_kmeans = KMeans(n_clusters=2, random_state=42)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "KMeans(n_clusters=2, random_state=42)" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "modell_kmeans.fit(x_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Presisjon: 0.8596491228070176\n" + ] + } + ], + "source": [ + "prediksjon_kmeans = modell_kmeans.predict(x_test)\n", + "labels = modell_kmeans.labels_\n", + "presisjon_kmeans = accuracy_score(y_test, prediksjon_kmeans)\n", + "print(\"Presisjon: \", presisjon_kmeans)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Regresjonsmodeller" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn import linear_model" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "kriterier_lr = iris[['SepalLengthCm']]# features\n", + "kategorier_lr = iris['PetalLengthCm'] # labels\n", + "\n", + "ml_data_lr = train_test_split(kriterier_lr, kategorier_lr, test_size=testandel, random_state=42)\n", + "\n", + "treningskriterier_lr = ml_data_lr[0]\n", + "testkriterier_lr = ml_data_lr[1]\n", + "treningskategorier_lr = ml_data_lr[2]\n", + "testkategorier_lr = ml_data_lr[3]" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [], + "source": [ + "l_reg = linear_model.LinearRegression()\n", + "linreg_modell = l_reg.fit(treningskriterier_lr, treningskategorier_lr)" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Presisjon: 0.7595012769586207\n" + ] + } + ], + "source": [ + "prediksjon_linreg = linreg_modell.predict(testkriterier_lr)\n", + "R2_verdi = l_reg.score(kriterier_lr, kategorier_lr)\n", + "stigning = l_reg.coef_\n", + "skjæring = l_reg.intercept_\n", + "print(\"Presisjon: \", R2_verdi)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Nevrale nettverk" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "sns.pairplot(data=iris, hue='Species')" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [], + "source": [ + "import tensorflow as tf\n", + "from tensorflow.keras.models import Sequential\n", + "from tensorflow.keras.layers import Activation, Dense\n", + "from tensorflow.keras.optimizers import Adam" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [], + "source": [ + "modell = Sequential()\n", + "modell.add(Dense(units=1, activation='linear', input_shape=[1,]))" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model: \"sequential\"\n", + "_________________________________________________________________\n", + "Layer (type) Output Shape Param # \n", + "=================================================================\n", + "dense (Dense) (None, 1) 2 \n", + "=================================================================\n", + "Total params: 2\n", + "Trainable params: 2\n", + "Non-trainable params: 0\n", + "_________________________________________________________________\n" + ] + } + ], + "source": [ + "læringsrate = 0.1 # Hvor fort modellen skal lære\n", + "modell.compile(optimizer=Adam(læringsrate), loss = 'mse') # Optimizer = metode for å minimere loss\n", + "modell.summary()" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IdSepalLengthCmSepalWidthCmPetalLengthCmPetalWidthCmSpecies
015.13.51.40.2Iris-setosa
124.93.01.40.2Iris-setosa
234.73.21.30.2Iris-setosa
344.63.11.50.2Iris-setosa
455.03.61.40.2Iris-setosa
.....................
1451466.73.05.22.3Iris-virginica
1461476.32.55.01.9Iris-virginica
1471486.53.05.22.0Iris-virginica
1481496.23.45.42.3Iris-virginica
1491505.93.05.11.8Iris-virginica
\n", + "

150 rows × 6 columns

\n", + "
" + ], + "text/plain": [ + " Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm \\\n", + "0 1 5.1 3.5 1.4 0.2 \n", + "1 2 4.9 3.0 1.4 0.2 \n", + "2 3 4.7 3.2 1.3 0.2 \n", + "3 4 4.6 3.1 1.5 0.2 \n", + "4 5 5.0 3.6 1.4 0.2 \n", + ".. ... ... ... ... ... \n", + "145 146 6.7 3.0 5.2 2.3 \n", + "146 147 6.3 2.5 5.0 1.9 \n", + "147 148 6.5 3.0 5.2 2.0 \n", + "148 149 6.2 3.4 5.4 2.3 \n", + "149 150 5.9 3.0 5.1 1.8 \n", + "\n", + " Species \n", + "0 Iris-setosa \n", + "1 Iris-setosa \n", + "2 Iris-setosa \n", + "3 Iris-setosa \n", + "4 Iris-setosa \n", + ".. ... \n", + "145 Iris-virginica \n", + "146 Iris-virginica \n", + "147 Iris-virginica \n", + "148 Iris-virginica \n", + "149 Iris-virginica \n", + "\n", + "[150 rows x 6 columns]" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "iris" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/500\n", + "4/4 [==============================] - 1s 259ms/step - loss: 12.7000 - val_loss: 8.7175\n", + "Epoch 2/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 3.1857 - val_loss: 0.5209\n", + "Epoch 3/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.1834 - val_loss: 1.0541\n", + "Epoch 4/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.8373 - val_loss: 2.6848\n", + "Epoch 5/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 1.4279 - val_loss: 1.9636\n", + "Epoch 6/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.8666 - val_loss: 0.5318\n", + "Epoch 7/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.2094 - val_loss: 0.1158\n", + "Epoch 8/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0971 - val_loss: 0.4665\n", + "Epoch 9/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.2577 - val_loss: 0.5435\n", + "Epoch 10/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.2737 - val_loss: 0.2443\n", + "Epoch 11/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.1090 - val_loss: 0.0997\n", + "Epoch 12/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0441 - val_loss: 0.1675\n", + "Epoch 13/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0760 - val_loss: 0.2009\n", + "Epoch 14/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0849 - val_loss: 0.1378\n", + "Epoch 15/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0466 - val_loss: 0.0984\n", + "Epoch 16/500\n", + "4/4 [==============================] - 0s 10ms/step - loss: 0.0404 - val_loss: 0.1018\n", + "Epoch 17/500\n", + "4/4 [==============================] - 0s 10ms/step - loss: 0.0520 - val_loss: 0.1000\n", + "Epoch 18/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0455 - val_loss: 0.0962\n", + "Epoch 19/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0332 - val_loss: 0.1050\n", + "Epoch 20/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0349 - val_loss: 0.1147\n", + "Epoch 21/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0393 - val_loss: 0.1114\n", + "Epoch 22/500\n", + "4/4 [==============================] - 0s 10ms/step - loss: 0.0348 - val_loss: 0.1047\n", + "Epoch 23/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0293 - val_loss: 0.0999\n", + "Epoch 24/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0255 - val_loss: 0.1002\n", + "Epoch 25/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0308 - val_loss: 0.1035\n", + "Epoch 26/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0315 - val_loss: 0.1070\n", + "Epoch 27/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0336 - val_loss: 0.1058\n", + "Epoch 28/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0256 - val_loss: 0.1045\n", + "Epoch 29/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0292 - val_loss: 0.1058\n", + "Epoch 30/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0249 - val_loss: 0.1052\n", + "Epoch 31/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0262 - val_loss: 0.1051\n", + "Epoch 32/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0306 - val_loss: 0.1046\n", + "Epoch 33/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0248 - val_loss: 0.1072\n", + "Epoch 34/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0240 - val_loss: 0.1103\n", + "Epoch 35/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0265 - val_loss: 0.1100\n", + "Epoch 36/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0250 - val_loss: 0.1072\n", + "Epoch 37/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0247 - val_loss: 0.1079\n", + "Epoch 38/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0270 - val_loss: 0.1061\n", + "Epoch 39/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0303 - val_loss: 0.1092\n", + "Epoch 40/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0267 - val_loss: 0.1138\n", + "Epoch 41/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0253 - val_loss: 0.1132\n", + "Epoch 42/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0235 - val_loss: 0.1082\n", + "Epoch 43/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0276 - val_loss: 0.1061\n", + "Epoch 44/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0221 - val_loss: 0.1091\n", + "Epoch 45/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0316 - val_loss: 0.1087\n", + "Epoch 46/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0304 - val_loss: 0.1066\n", + "Epoch 47/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0271 - val_loss: 0.1113\n", + "Epoch 48/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0272 - val_loss: 0.1131\n", + "Epoch 49/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0315 - val_loss: 0.1116\n", + "Epoch 50/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0295 - val_loss: 0.1113\n", + "Epoch 51/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0266 - val_loss: 0.1089\n", + "Epoch 52/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0255 - val_loss: 0.1092\n", + "Epoch 53/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0269 - val_loss: 0.1063\n", + "Epoch 54/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0285 - val_loss: 0.1062\n", + "Epoch 55/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0292 - val_loss: 0.1114\n", + "Epoch 56/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0311 - val_loss: 0.1105\n", + "Epoch 57/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0239 - val_loss: 0.1142\n", + "Epoch 58/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0252 - val_loss: 0.1102\n", + "Epoch 59/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0275 - val_loss: 0.1048\n", + "Epoch 60/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0273 - val_loss: 0.1096\n", + "Epoch 61/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0264 - val_loss: 0.1110\n", + "Epoch 62/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0318 - val_loss: 0.1104\n", + "Epoch 63/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0286 - val_loss: 0.1116\n", + "Epoch 64/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0269 - val_loss: 0.1103\n", + "Epoch 65/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0282 - val_loss: 0.1082\n", + "Epoch 66/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0268 - val_loss: 0.1083\n", + "Epoch 67/500\n", + "4/4 [==============================] - 0s 10ms/step - loss: 0.0259 - val_loss: 0.1088\n", + "Epoch 68/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0267 - val_loss: 0.1095\n", + "Epoch 69/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0292 - val_loss: 0.1106\n", + "Epoch 70/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0234 - val_loss: 0.1105\n", + "Epoch 71/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0239 - val_loss: 0.1131\n", + "Epoch 72/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0281 - val_loss: 0.1076\n", + "Epoch 73/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0269 - val_loss: 0.1011\n", + "Epoch 74/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0277 - val_loss: 0.1113\n", + "Epoch 75/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0283 - val_loss: 0.1198\n", + "Epoch 76/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0251 - val_loss: 0.1097\n", + "Epoch 77/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0315 - val_loss: 0.1015\n", + "Epoch 78/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0267 - val_loss: 0.1093\n", + "Epoch 79/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0278 - val_loss: 0.1162\n", + "Epoch 80/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0248 - val_loss: 0.1090\n", + "Epoch 81/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0246 - val_loss: 0.1065\n", + "Epoch 82/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0234 - val_loss: 0.1104\n", + "Epoch 83/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0277 - val_loss: 0.1113\n", + "Epoch 84/500\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4/4 [==============================] - 0s 8ms/step - loss: 0.0243 - val_loss: 0.1079\n", + "Epoch 85/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0214 - val_loss: 0.1102\n", + "Epoch 86/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0317 - val_loss: 0.1092\n", + "Epoch 87/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0297 - val_loss: 0.1146\n", + "Epoch 88/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0259 - val_loss: 0.1137\n", + "Epoch 89/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0290 - val_loss: 0.1072\n", + "Epoch 90/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0266 - val_loss: 0.1058\n", + "Epoch 91/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0239 - val_loss: 0.1194\n", + "Epoch 92/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0253 - val_loss: 0.1033\n", + "Epoch 93/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0267 - val_loss: 0.1026\n", + "Epoch 94/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0295 - val_loss: 0.1143\n", + "Epoch 95/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0316 - val_loss: 0.1176\n", + "Epoch 96/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0237 - val_loss: 0.1173\n", + "Epoch 97/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0307 - val_loss: 0.1018\n", + "Epoch 98/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0264 - val_loss: 0.1090\n", + "Epoch 99/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0231 - val_loss: 0.1116\n", + "Epoch 100/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0272 - val_loss: 0.1094\n", + "Epoch 101/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0256 - val_loss: 0.1079\n", + "Epoch 102/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0252 - val_loss: 0.1084\n", + "Epoch 103/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0330 - val_loss: 0.1075\n", + "Epoch 104/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0263 - val_loss: 0.1141\n", + "Epoch 105/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0249 - val_loss: 0.1072\n", + "Epoch 106/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0254 - val_loss: 0.1100\n", + "Epoch 107/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0298 - val_loss: 0.1140\n", + "Epoch 108/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0262 - val_loss: 0.1110\n", + "Epoch 109/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0268 - val_loss: 0.1028\n", + "Epoch 110/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0236 - val_loss: 0.1113\n", + "Epoch 111/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0246 - val_loss: 0.1149\n", + "Epoch 112/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0265 - val_loss: 0.1079\n", + "Epoch 113/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0263 - val_loss: 0.1069\n", + "Epoch 114/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0278 - val_loss: 0.1074\n", + "Epoch 115/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0238 - val_loss: 0.1151\n", + "Epoch 116/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0257 - val_loss: 0.1087\n", + "Epoch 117/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0215 - val_loss: 0.1031\n", + "Epoch 118/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0247 - val_loss: 0.1083\n", + "Epoch 119/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0317 - val_loss: 0.1099\n", + "Epoch 120/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0307 - val_loss: 0.1075\n", + "Epoch 121/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0272 - val_loss: 0.1127\n", + "Epoch 122/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0288 - val_loss: 0.1110\n", + "Epoch 123/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0247 - val_loss: 0.1103\n", + "Epoch 124/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0263 - val_loss: 0.1097\n", + "Epoch 125/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0308 - val_loss: 0.1108\n", + "Epoch 126/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0246 - val_loss: 0.1124\n", + "Epoch 127/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0279 - val_loss: 0.1076\n", + "Epoch 128/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0279 - val_loss: 0.1086\n", + "Epoch 129/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0254 - val_loss: 0.1161\n", + "Epoch 130/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0318 - val_loss: 0.1073\n", + "Epoch 131/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0266 - val_loss: 0.1042\n", + "Epoch 132/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0253 - val_loss: 0.1144\n", + "Epoch 133/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0245 - val_loss: 0.1100\n", + "Epoch 134/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0270 - val_loss: 0.1085\n", + "Epoch 135/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0250 - val_loss: 0.1080\n", + "Epoch 136/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0274 - val_loss: 0.1119\n", + "Epoch 137/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0299 - val_loss: 0.1061\n", + "Epoch 138/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0244 - val_loss: 0.1092\n", + "Epoch 139/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0231 - val_loss: 0.1124\n", + "Epoch 140/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0336 - val_loss: 0.1057\n", + "Epoch 141/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0268 - val_loss: 0.1085\n", + "Epoch 142/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0267 - val_loss: 0.1147\n", + "Epoch 143/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0253 - val_loss: 0.1098\n", + "Epoch 144/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0300 - val_loss: 0.1039\n", + "Epoch 145/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0293 - val_loss: 0.1084\n", + "Epoch 146/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0267 - val_loss: 0.1159\n", + "Epoch 147/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0295 - val_loss: 0.1116\n", + "Epoch 148/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0236 - val_loss: 0.1064\n", + "Epoch 149/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0307 - val_loss: 0.1021\n", + "Epoch 150/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0292 - val_loss: 0.1177\n", + "Epoch 151/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0281 - val_loss: 0.1187\n", + "Epoch 152/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0270 - val_loss: 0.1045\n", + "Epoch 153/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0286 - val_loss: 0.1035\n", + "Epoch 154/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0291 - val_loss: 0.1095\n", + "Epoch 155/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0295 - val_loss: 0.1218\n", + "Epoch 156/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0289 - val_loss: 0.1077\n", + "Epoch 157/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0248 - val_loss: 0.1052\n", + "Epoch 158/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0248 - val_loss: 0.1116\n", + "Epoch 159/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0312 - val_loss: 0.1132\n", + "Epoch 160/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0279 - val_loss: 0.1098\n", + "Epoch 161/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0277 - val_loss: 0.1048\n", + "Epoch 162/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0270 - val_loss: 0.1080\n", + "Epoch 163/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0268 - val_loss: 0.1169\n", + "Epoch 164/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0290 - val_loss: 0.1144\n", + "Epoch 165/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0270 - val_loss: 0.1178\n", + "Epoch 166/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0256 - val_loss: 0.0996\n", + "Epoch 167/500\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4/4 [==============================] - 0s 9ms/step - loss: 0.0313 - val_loss: 0.1114\n", + "Epoch 168/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0253 - val_loss: 0.1109\n", + "Epoch 169/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0326 - val_loss: 0.1125\n", + "Epoch 170/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0302 - val_loss: 0.1073\n", + "Epoch 171/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0267 - val_loss: 0.1115\n", + "Epoch 172/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0294 - val_loss: 0.1126\n", + "Epoch 173/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0247 - val_loss: 0.1085\n", + "Epoch 174/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0298 - val_loss: 0.1061\n", + "Epoch 175/500\n", + "4/4 [==============================] - 0s 10ms/step - loss: 0.0246 - val_loss: 0.1121\n", + "Epoch 176/500\n", + "4/4 [==============================] - 0s 10ms/step - loss: 0.0283 - val_loss: 0.1085\n", + "Epoch 177/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0297 - val_loss: 0.1167\n", + "Epoch 178/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0323 - val_loss: 0.1055\n", + "Epoch 179/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0257 - val_loss: 0.1150\n", + "Epoch 180/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0277 - val_loss: 0.1061\n", + "Epoch 181/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0250 - val_loss: 0.1094\n", + "Epoch 182/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0247 - val_loss: 0.1116\n", + "Epoch 183/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0262 - val_loss: 0.1068\n", + "Epoch 184/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0273 - val_loss: 0.1087\n", + "Epoch 185/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0254 - val_loss: 0.1132\n", + "Epoch 186/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0334 - val_loss: 0.1084\n", + "Epoch 187/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0311 - val_loss: 0.1109\n", + "Epoch 188/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0257 - val_loss: 0.1158\n", + "Epoch 189/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0231 - val_loss: 0.1049\n", + "Epoch 190/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0275 - val_loss: 0.0998\n", + "Epoch 191/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0306 - val_loss: 0.1137\n", + "Epoch 192/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0237 - val_loss: 0.1163\n", + "Epoch 193/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0234 - val_loss: 0.1049\n", + "Epoch 194/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0265 - val_loss: 0.1042\n", + "Epoch 195/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0320 - val_loss: 0.1121\n", + "Epoch 196/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0317 - val_loss: 0.1091\n", + "Epoch 197/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0289 - val_loss: 0.1159\n", + "Epoch 198/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0327 - val_loss: 0.0998\n", + "Epoch 199/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0269 - val_loss: 0.1191\n", + "Epoch 200/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0250 - val_loss: 0.1197\n", + "Epoch 201/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0234 - val_loss: 0.0989\n", + "Epoch 202/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0263 - val_loss: 0.1040\n", + "Epoch 203/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0279 - val_loss: 0.1266\n", + "Epoch 204/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0356 - val_loss: 0.1052\n", + "Epoch 205/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0300 - val_loss: 0.1183\n", + "Epoch 206/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0299 - val_loss: 0.1123\n", + "Epoch 207/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0258 - val_loss: 0.1065\n", + "Epoch 208/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0313 - val_loss: 0.1075\n", + "Epoch 209/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0243 - val_loss: 0.1117\n", + "Epoch 210/500\n", + "4/4 [==============================] - 0s 10ms/step - loss: 0.0302 - val_loss: 0.1102\n", + "Epoch 211/500\n", + "4/4 [==============================] - 0s 10ms/step - loss: 0.0313 - val_loss: 0.1141\n", + "Epoch 212/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0253 - val_loss: 0.1095\n", + "Epoch 213/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0274 - val_loss: 0.1176\n", + "Epoch 214/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0251 - val_loss: 0.1084\n", + "Epoch 215/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0310 - val_loss: 0.0984\n", + "Epoch 216/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0276 - val_loss: 0.1184\n", + "Epoch 217/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0329 - val_loss: 0.1151\n", + "Epoch 218/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0267 - val_loss: 0.1068\n", + "Epoch 219/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0293 - val_loss: 0.1078\n", + "Epoch 220/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0289 - val_loss: 0.1137\n", + "Epoch 221/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0260 - val_loss: 0.1130\n", + "Epoch 222/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0287 - val_loss: 0.1019\n", + "Epoch 223/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0303 - val_loss: 0.1110\n", + "Epoch 224/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0285 - val_loss: 0.1238\n", + "Epoch 225/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0265 - val_loss: 0.1085\n", + "Epoch 226/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0306 - val_loss: 0.0992\n", + "Epoch 227/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0289 - val_loss: 0.1283\n", + "Epoch 228/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0316 - val_loss: 0.1073\n", + "Epoch 229/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0242 - val_loss: 0.1018\n", + "Epoch 230/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0271 - val_loss: 0.1204\n", + "Epoch 231/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0279 - val_loss: 0.1072\n", + "Epoch 232/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0256 - val_loss: 0.1037\n", + "Epoch 233/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0253 - val_loss: 0.1099\n", + "Epoch 234/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0241 - val_loss: 0.1147\n", + "Epoch 235/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0229 - val_loss: 0.1039\n", + "Epoch 236/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0280 - val_loss: 0.1062\n", + "Epoch 237/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0300 - val_loss: 0.1206\n", + "Epoch 238/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0285 - val_loss: 0.1059\n", + "Epoch 239/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0282 - val_loss: 0.1023\n", + "Epoch 240/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0298 - val_loss: 0.1285\n", + "Epoch 241/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0265 - val_loss: 0.1059\n", + "Epoch 242/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0271 - val_loss: 0.1009\n", + "Epoch 243/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0297 - val_loss: 0.1251\n", + "Epoch 244/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0326 - val_loss: 0.1078\n", + "Epoch 245/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0306 - val_loss: 0.1123\n", + "Epoch 246/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0265 - val_loss: 0.1106\n", + "Epoch 247/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0295 - val_loss: 0.1040\n", + "Epoch 248/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0299 - val_loss: 0.1070\n", + "Epoch 249/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0256 - val_loss: 0.1303\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 250/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0280 - val_loss: 0.1051\n", + "Epoch 251/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0308 - val_loss: 0.1023\n", + "Epoch 252/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0280 - val_loss: 0.1234\n", + "Epoch 253/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0306 - val_loss: 0.1027\n", + "Epoch 254/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0319 - val_loss: 0.1039\n", + "Epoch 255/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0251 - val_loss: 0.1274\n", + "Epoch 256/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0260 - val_loss: 0.0990\n", + "Epoch 257/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0287 - val_loss: 0.1044\n", + "Epoch 258/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0271 - val_loss: 0.1144\n", + "Epoch 259/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0217 - val_loss: 0.1168\n", + "Epoch 260/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0271 - val_loss: 0.0975\n", + "Epoch 261/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0263 - val_loss: 0.1182\n", + "Epoch 262/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0249 - val_loss: 0.1152\n", + "Epoch 263/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0357 - val_loss: 0.1003\n", + "Epoch 264/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0242 - val_loss: 0.1241\n", + "Epoch 265/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0273 - val_loss: 0.1089\n", + "Epoch 266/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0301 - val_loss: 0.1092\n", + "Epoch 267/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0272 - val_loss: 0.1195\n", + "Epoch 268/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0233 - val_loss: 0.1029\n", + "Epoch 269/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0355 - val_loss: 0.1064\n", + "Epoch 270/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0335 - val_loss: 0.1200\n", + "Epoch 271/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0288 - val_loss: 0.1108\n", + "Epoch 272/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0313 - val_loss: 0.1063\n", + "Epoch 273/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0266 - val_loss: 0.1141\n", + "Epoch 274/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0297 - val_loss: 0.1023\n", + "Epoch 275/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0214 - val_loss: 0.1214\n", + "Epoch 276/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0324 - val_loss: 0.0978\n", + "Epoch 277/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0260 - val_loss: 0.1185\n", + "Epoch 278/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0255 - val_loss: 0.1139\n", + "Epoch 279/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0239 - val_loss: 0.0969\n", + "Epoch 280/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0275 - val_loss: 0.1174\n", + "Epoch 281/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0300 - val_loss: 0.1155\n", + "Epoch 282/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0292 - val_loss: 0.1063\n", + "Epoch 283/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0309 - val_loss: 0.1102\n", + "Epoch 284/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0314 - val_loss: 0.1326\n", + "Epoch 285/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0305 - val_loss: 0.0966\n", + "Epoch 286/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0293 - val_loss: 0.1134\n", + "Epoch 287/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0254 - val_loss: 0.1130\n", + "Epoch 288/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0267 - val_loss: 0.0982\n", + "Epoch 289/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0291 - val_loss: 0.1227\n", + "Epoch 290/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0285 - val_loss: 0.1058\n", + "Epoch 291/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0309 - val_loss: 0.1059\n", + "Epoch 292/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0336 - val_loss: 0.1250\n", + "Epoch 293/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0357 - val_loss: 0.1033\n", + "Epoch 294/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0273 - val_loss: 0.1151\n", + "Epoch 295/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0232 - val_loss: 0.1073\n", + "Epoch 296/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0272 - val_loss: 0.1117\n", + "Epoch 297/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0251 - val_loss: 0.1113\n", + "Epoch 298/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0227 - val_loss: 0.1081\n", + "Epoch 299/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0319 - val_loss: 0.1027\n", + "Epoch 300/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0230 - val_loss: 0.1153\n", + "Epoch 301/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0289 - val_loss: 0.1072\n", + "Epoch 302/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0253 - val_loss: 0.1128\n", + "Epoch 303/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0286 - val_loss: 0.1082\n", + "Epoch 304/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0284 - val_loss: 0.1080\n", + "Epoch 305/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0249 - val_loss: 0.1095\n", + "Epoch 306/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0287 - val_loss: 0.1165\n", + "Epoch 307/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0236 - val_loss: 0.1086\n", + "Epoch 308/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0276 - val_loss: 0.1006\n", + "Epoch 309/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0328 - val_loss: 0.1193\n", + "Epoch 310/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0330 - val_loss: 0.1123\n", + "Epoch 311/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0283 - val_loss: 0.1117\n", + "Epoch 312/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0274 - val_loss: 0.1069\n", + "Epoch 313/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0235 - val_loss: 0.1091\n", + "Epoch 314/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0256 - val_loss: 0.1066\n", + "Epoch 315/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0283 - val_loss: 0.1071\n", + "Epoch 316/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0264 - val_loss: 0.1098\n", + "Epoch 317/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0332 - val_loss: 0.1197\n", + "Epoch 318/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0298 - val_loss: 0.1148\n", + "Epoch 319/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0245 - val_loss: 0.1014\n", + "Epoch 320/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0254 - val_loss: 0.1214\n", + "Epoch 321/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0220 - val_loss: 0.1007\n", + "Epoch 322/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0308 - val_loss: 0.1027\n", + "Epoch 323/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0267 - val_loss: 0.1365\n", + "Epoch 324/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0257 - val_loss: 0.1004\n", + "Epoch 325/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0237 - val_loss: 0.1056\n", + "Epoch 326/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0263 - val_loss: 0.1133\n", + "Epoch 327/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0309 - val_loss: 0.1112\n", + "Epoch 328/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0272 - val_loss: 0.1092\n", + "Epoch 329/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0329 - val_loss: 0.1121\n", + "Epoch 330/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0296 - val_loss: 0.1201\n", + "Epoch 331/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0253 - val_loss: 0.1005\n", + "Epoch 332/500\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4/4 [==============================] - 0s 9ms/step - loss: 0.0248 - val_loss: 0.1095\n", + "Epoch 333/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0277 - val_loss: 0.1096\n", + "Epoch 334/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0248 - val_loss: 0.1073\n", + "Epoch 335/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0285 - val_loss: 0.1109\n", + "Epoch 336/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0243 - val_loss: 0.1239\n", + "Epoch 337/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0319 - val_loss: 0.1028\n", + "Epoch 338/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0304 - val_loss: 0.1170\n", + "Epoch 339/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0303 - val_loss: 0.1131\n", + "Epoch 340/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0262 - val_loss: 0.0999\n", + "Epoch 341/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0304 - val_loss: 0.1167\n", + "Epoch 342/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0307 - val_loss: 0.1113\n", + "Epoch 343/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0263 - val_loss: 0.1022\n", + "Epoch 344/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0292 - val_loss: 0.1166\n", + "Epoch 345/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0298 - val_loss: 0.1032\n", + "Epoch 346/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0240 - val_loss: 0.1231\n", + "Epoch 347/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0284 - val_loss: 0.1008\n", + "Epoch 348/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0264 - val_loss: 0.1137\n", + "Epoch 349/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0269 - val_loss: 0.1156\n", + "Epoch 350/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0258 - val_loss: 0.1000\n", + "Epoch 351/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0252 - val_loss: 0.1036\n", + "Epoch 352/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0267 - val_loss: 0.1187\n", + "Epoch 353/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0281 - val_loss: 0.0970\n", + "Epoch 354/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0301 - val_loss: 0.1275\n", + "Epoch 355/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0338 - val_loss: 0.1098\n", + "Epoch 356/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0323 - val_loss: 0.1084\n", + "Epoch 357/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0277 - val_loss: 0.1206\n", + "Epoch 358/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0307 - val_loss: 0.1068\n", + "Epoch 359/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0307 - val_loss: 0.1147\n", + "Epoch 360/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0268 - val_loss: 0.1073\n", + "Epoch 361/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0361 - val_loss: 0.1094\n", + "Epoch 362/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0302 - val_loss: 0.1167\n", + "Epoch 363/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0283 - val_loss: 0.0992\n", + "Epoch 364/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0284 - val_loss: 0.1234\n", + "Epoch 365/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0300 - val_loss: 0.1025\n", + "Epoch 366/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0265 - val_loss: 0.1225\n", + "Epoch 367/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0236 - val_loss: 0.0973\n", + "Epoch 368/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0261 - val_loss: 0.1248\n", + "Epoch 369/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0301 - val_loss: 0.1039\n", + "Epoch 370/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0262 - val_loss: 0.1067\n", + "Epoch 371/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0280 - val_loss: 0.1186\n", + "Epoch 372/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0248 - val_loss: 0.0966\n", + "Epoch 373/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0347 - val_loss: 0.1105\n", + "Epoch 374/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0346 - val_loss: 0.1215\n", + "Epoch 375/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0279 - val_loss: 0.0981\n", + "Epoch 376/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0263 - val_loss: 0.1289\n", + "Epoch 377/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0351 - val_loss: 0.1155\n", + "Epoch 378/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0271 - val_loss: 0.0973\n", + "Epoch 379/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0234 - val_loss: 0.1323\n", + "Epoch 380/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0263 - val_loss: 0.0997\n", + "Epoch 381/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0256 - val_loss: 0.1058\n", + "Epoch 382/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0256 - val_loss: 0.1256\n", + "Epoch 383/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0301 - val_loss: 0.0968\n", + "Epoch 384/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0291 - val_loss: 0.1265\n", + "Epoch 385/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0282 - val_loss: 0.1038\n", + "Epoch 386/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0259 - val_loss: 0.1022\n", + "Epoch 387/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0342 - val_loss: 0.1145\n", + "Epoch 388/500\n", + "4/4 [==============================] - 0s 10ms/step - loss: 0.0264 - val_loss: 0.1147\n", + "Epoch 389/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0324 - val_loss: 0.1008\n", + "Epoch 390/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0303 - val_loss: 0.1186\n", + "Epoch 391/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0297 - val_loss: 0.1056\n", + "Epoch 392/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0234 - val_loss: 0.1113\n", + "Epoch 393/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0237 - val_loss: 0.1043\n", + "Epoch 394/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0245 - val_loss: 0.1083\n", + "Epoch 395/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0279 - val_loss: 0.1156\n", + "Epoch 396/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0244 - val_loss: 0.1038\n", + "Epoch 397/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0228 - val_loss: 0.1140\n", + "Epoch 398/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0247 - val_loss: 0.1048\n", + "Epoch 399/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0264 - val_loss: 0.1213\n", + "Epoch 400/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0256 - val_loss: 0.1066\n", + "Epoch 401/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0253 - val_loss: 0.1010\n", + "Epoch 402/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0295 - val_loss: 0.1262\n", + "Epoch 403/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0311 - val_loss: 0.1027\n", + "Epoch 404/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0267 - val_loss: 0.1120\n", + "Epoch 405/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0287 - val_loss: 0.1094\n", + "Epoch 406/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0272 - val_loss: 0.1031\n", + "Epoch 407/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0277 - val_loss: 0.1196\n", + "Epoch 408/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0234 - val_loss: 0.1049\n", + "Epoch 409/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0278 - val_loss: 0.1060\n", + "Epoch 410/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0349 - val_loss: 0.1138\n", + "Epoch 411/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0249 - val_loss: 0.1040\n", + "Epoch 412/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0291 - val_loss: 0.1059\n", + "Epoch 413/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0264 - val_loss: 0.1206\n", + "Epoch 414/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0253 - val_loss: 0.1029\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 415/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0232 - val_loss: 0.1140\n", + "Epoch 416/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0251 - val_loss: 0.1037\n", + "Epoch 417/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0254 - val_loss: 0.1057\n", + "Epoch 418/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0265 - val_loss: 0.1248\n", + "Epoch 419/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0258 - val_loss: 0.1063\n", + "Epoch 420/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0339 - val_loss: 0.1056\n", + "Epoch 421/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0311 - val_loss: 0.1180\n", + "Epoch 422/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0309 - val_loss: 0.1066\n", + "Epoch 423/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0239 - val_loss: 0.1056\n", + "Epoch 424/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0245 - val_loss: 0.1080\n", + "Epoch 425/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0248 - val_loss: 0.1088\n", + "Epoch 426/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0266 - val_loss: 0.1055\n", + "Epoch 427/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0260 - val_loss: 0.1122\n", + "Epoch 428/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0294 - val_loss: 0.1053\n", + "Epoch 429/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0247 - val_loss: 0.1188\n", + "Epoch 430/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0298 - val_loss: 0.0994\n", + "Epoch 431/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0264 - val_loss: 0.1386\n", + "Epoch 432/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0336 - val_loss: 0.0939\n", + "Epoch 433/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0319 - val_loss: 0.1251\n", + "Epoch 434/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0302 - val_loss: 0.1292\n", + "Epoch 435/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0317 - val_loss: 0.0922\n", + "Epoch 436/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0294 - val_loss: 0.1543\n", + "Epoch 437/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0223 - val_loss: 0.0946\n", + "Epoch 438/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0348 - val_loss: 0.1072\n", + "Epoch 439/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0360 - val_loss: 0.1357\n", + "Epoch 440/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0275 - val_loss: 0.0919\n", + "Epoch 441/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0262 - val_loss: 0.1380\n", + "Epoch 442/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0324 - val_loss: 0.1039\n", + "Epoch 443/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0235 - val_loss: 0.1099\n", + "Epoch 444/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0292 - val_loss: 0.1140\n", + "Epoch 445/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0343 - val_loss: 0.1051\n", + "Epoch 446/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0268 - val_loss: 0.1261\n", + "Epoch 447/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0332 - val_loss: 0.1030\n", + "Epoch 448/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0255 - val_loss: 0.1119\n", + "Epoch 449/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0293 - val_loss: 0.1125\n", + "Epoch 450/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0264 - val_loss: 0.1074\n", + "Epoch 451/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0238 - val_loss: 0.0991\n", + "Epoch 452/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0304 - val_loss: 0.1118\n", + "Epoch 453/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0262 - val_loss: 0.1189\n", + "Epoch 454/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0265 - val_loss: 0.1052\n", + "Epoch 455/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0287 - val_loss: 0.1127\n", + "Epoch 456/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0300 - val_loss: 0.1099\n", + "Epoch 457/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0347 - val_loss: 0.1084\n", + "Epoch 458/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0282 - val_loss: 0.1144\n", + "Epoch 459/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0257 - val_loss: 0.0983\n", + "Epoch 460/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0295 - val_loss: 0.1192\n", + "Epoch 461/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0252 - val_loss: 0.0998\n", + "Epoch 462/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0233 - val_loss: 0.1180\n", + "Epoch 463/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0303 - val_loss: 0.1008\n", + "Epoch 464/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0262 - val_loss: 0.1092\n", + "Epoch 465/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0316 - val_loss: 0.1115\n", + "Epoch 466/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0306 - val_loss: 0.1105\n", + "Epoch 467/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0261 - val_loss: 0.1076\n", + "Epoch 468/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0225 - val_loss: 0.1100\n", + "Epoch 469/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0252 - val_loss: 0.1053\n", + "Epoch 470/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0282 - val_loss: 0.1143\n", + "Epoch 471/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0308 - val_loss: 0.1185\n", + "Epoch 472/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0244 - val_loss: 0.0957\n", + "Epoch 473/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0281 - val_loss: 0.1272\n", + "Epoch 474/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0235 - val_loss: 0.1026\n", + "Epoch 475/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0304 - val_loss: 0.1177\n", + "Epoch 476/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0299 - val_loss: 0.1138\n", + "Epoch 477/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0312 - val_loss: 0.1068\n", + "Epoch 478/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0305 - val_loss: 0.1371\n", + "Epoch 479/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0307 - val_loss: 0.0924\n", + "Epoch 480/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0323 - val_loss: 0.1389\n", + "Epoch 481/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0249 - val_loss: 0.0964\n", + "Epoch 482/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0308 - val_loss: 0.1180\n", + "Epoch 483/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0248 - val_loss: 0.1091\n", + "Epoch 484/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0269 - val_loss: 0.1013\n", + "Epoch 485/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0290 - val_loss: 0.1264\n", + "Epoch 486/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0281 - val_loss: 0.1013\n", + "Epoch 487/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0313 - val_loss: 0.1177\n", + "Epoch 488/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0323 - val_loss: 0.1165\n", + "Epoch 489/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0271 - val_loss: 0.1026\n", + "Epoch 490/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0232 - val_loss: 0.1155\n", + "Epoch 491/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0277 - val_loss: 0.1069\n", + "Epoch 492/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0259 - val_loss: 0.1103\n", + "Epoch 493/500\n", + "4/4 [==============================] - 0s 8ms/step - loss: 0.0294 - val_loss: 0.1076\n", + "Epoch 494/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0287 - val_loss: 0.1009\n", + "Epoch 495/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0289 - val_loss: 0.1132\n", + "Epoch 496/500\n", + "4/4 [==============================] - 0s 10ms/step - loss: 0.0243 - val_loss: 0.1145\n", + "Epoch 497/500\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4/4 [==============================] - 0s 9ms/step - loss: 0.0296 - val_loss: 0.0943\n", + "Epoch 498/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0253 - val_loss: 0.1318\n", + "Epoch 499/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0295 - val_loss: 0.0964\n", + "Epoch 500/500\n", + "4/4 [==============================] - 0s 9ms/step - loss: 0.0264 - val_loss: 0.1196\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x = iris[\"PetalLengthCm\"]\n", + "y = iris[\"PetalWidthCm\"]\n", + "modell.fit(x, y, epochs = 500, validation_split=0.2)" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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nA/9xYsXs2nTJvr168fVV1/NO++8Q58+fXjooYfIzs4uMA/C7t276devH6NHj6Z37955rbX9/eydO3dm7969dOnShTFjxgDkxb9x40bee+89vv76axITE7n99tuZOnUqgwYNcvkXYUwZ8Mc+mDfS6Q9UuynctABO7RDpqEqk/CWCCDrttNPo3LkzI0aMYP78+bRp0waAtLQ0fvjhBw4fPszll19OpUqVqFSpEpdddlmB7a+99loANm/ezLp16+jduzcA2dnZ1K1bF4CWLVsycOBAkpKSSEpKOiaGJUuWMGPGDACuv/567r///rz3kpKSiIuLo1mzZuzevRuADh06cOONN+LxeEhKSqJ169YAeDweevXqxdixY+nRo4frnx2gdu3anH766SxdupQzzjiDTZs20bVrV8aOHcuqVavy+jClp6dTp04dV79bYyJOFdZ/6MwXkHEAevwfnHsvJFSMdGQlVv4SgYtv7uFStWpVwDlPPnLkSG655ZYC77/wwguutz/77LNZsmTJMevMmTOHRYsWMXv2bJ544glSUtwf/VSs+Oc/2NweU927d2fRokXMmTOHG264gXvuuYdBgwaRkJBAu3btmDdvXl4iSEhIICcnJ2+MjIyMY2LP1b9/f/73v//RtGlTrrjiCkQEVWXw4ME8+eSTrmM2pkw49AvMuRc2z4FT2kC/mXBy80hHFTJhu0YgIqeKyBciskFE1ovIXT7W6SkiB0VkjffxcLjiKU19+vRh4sSJpKWlAZCamsqePXvo2rUrs2fPJiMjg7S0ND766COf2zdp0oS9e/fmJQKPx8P69evJyclh586dnHfeeTz99NMcPHgwbx+5zjnnHN59910Apk6dyrnnnus31h07dnDSSSdx88038/e//53Vq1cDICJMnDiRTZs28fTTTwPQsGHDvPdXr17Ntm3bihz3iiuuYObMmUybNi3vWkavXr2YPn06e/bsAWD//v3s2LHDb3wmMpK/TaXrU5/T6IE5dH3qc1dTuRbeZlRySrHHKHNUYdVbMLYTbPkMLhwNN31arpIAhPeIIAu4V1VXi0h1YJWILFDVDYXW+0pV+4YxjlJ34YUXsnHjRrp06QI4pZhTpkyhQ4cO9OvXj5YtW3LSSSfRokULatSoccz2FSpUYPr06QwfPpyDBw+SlZXF3XffzZlnnsl1113HwYMHUVWGDx9O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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "x_fit = np.linspace(1, 8, 100)\n", + "y_fit = modell.predict(x_fit)\n", + "plt.plot(x, y, linestyle = ' ', marker = 'o', label = 'data')\n", + "plt.plot(x_fit, y_fit, label = 'regresjonskurve')\n", + "plt.xlabel(\"Kronbladlengde (cm)\")\n", + "plt.ylabel(\"Kronbladbredde (cm)\")\n", + "plt.legend()\n", + "plt.savefig(\"regresjonsdata_iris.pdf\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Bestemmelse av art" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [], + "source": [ + "iris[\"Species\"] = iris[\"Species\"].map({\"Iris-setosa\": 0, \n", + " \"Iris-versicolor\": 1, \"Iris-virginica\": 2})" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [], + "source": [ + "kriterier = iris[['SepalLengthCm', 'SepalWidthCm', 'PetalLengthCm', 'PetalWidthCm']]\n", + "kategorier = iris['Species']" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(10,8))\n", + "corr = iris.corr()\n", + "sns.heatmap(corr, annot = True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git "a/_sources/docs/ekstra/maskinl\303\246ring_titanic.ipynb" "b/_sources/docs/ekstra/maskinl\303\246ring_titanic.ipynb" new file mode 100644 index 00000000..73f7b451 --- /dev/null +++ "b/_sources/docs/ekstra/maskinl\303\246ring_titanic.ipynb" @@ -0,0 +1,645 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Maskinlæring" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import seaborn as sns\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# Lese dataene\n", + "titanic = pd.read_csv(\"Datafiler/titanic.csv\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Utforsking og opprydding av datasettet\n", + "La oss undersøke dataene og rydde litt, dersom vi trenger det." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
survivedpclasssexagesibspparchfareembarkedclassdeckembark_townalivealone
003022.0107.2500SThirdNaNSouthamptonnoFalse
111138.01071.2833CFirstCCherbourgyesFalse
213126.0007.9250SThirdNaNSouthamptonyesTrue
311135.01053.1000SFirstCSouthamptonyesFalse
403035.0008.0500SThirdNaNSouthamptonnoTrue
\n", + "
" + ], + "text/plain": [ + " survived pclass sex age sibsp parch fare embarked class deck \\\n", + "0 0 3 0 22.0 1 0 7.2500 S Third NaN \n", + "1 1 1 1 38.0 1 0 71.2833 C First C \n", + "2 1 3 1 26.0 0 0 7.9250 S Third NaN \n", + "3 1 1 1 35.0 1 0 53.1000 S First C \n", + "4 0 3 0 35.0 0 0 8.0500 S Third NaN \n", + "\n", + " embark_town alive alone \n", + "0 Southampton no False \n", + "1 Cherbourg yes False \n", + "2 Southampton yes True \n", + "3 Southampton yes False \n", + "4 Southampton no True " + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Skriver ut fem første linjer\n", + "titanic.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Vi ser at det ikke er alle kategoriene vi trenger. Siden vi er interessert i hvem som overlevde, og hvorfor, kan det også være lurt å sjekke hvor mange dette var." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "38.38 % overlevde\n" + ] + } + ], + "source": [ + "# Hvor mange overlevde?\n", + "overlevde_prosent = (titanic['survived'].sum()/titanic['survived'].count())*100\n", + "print(f'{overlevde_prosent:.2f} % overlevde')" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 Southampton\n", + "1 Cherbourg\n", + "2 Southampton\n", + "3 Southampton\n", + "4 Southampton\n", + " ... \n", + "886 Southampton\n", + "887 Southampton\n", + "888 Southampton\n", + "889 Cherbourg\n", + "890 Queenstown\n", + "Name: embark_town, Length: 891, dtype: object" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Sletter kategorier vi ikke er interessert i\n", + "titanic.pop('deck')\n", + "titanic.pop('fare')\n", + "titanic.pop('embarked')\n", + "titanic.pop('embark_town')" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "survived 0\n", + "pclass 0\n", + "sex 0\n", + "age 177\n", + "sibsp 0\n", + "parch 0\n", + "class 0\n", + "alive 0\n", + "alone 0\n", + "dtype: int64\n" + ] + } + ], + "source": [ + "# Print antall manglende verdier i kolonnene\n", + "print(titanic.isna().sum())" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "# Fyller inn manglende alder med gjennomsnittet\n", + "gjennomsnitt = titanic['age'].mean()\n", + "titanic['age'].fillna(gjennomsnitt, inplace = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Visualiseringer\n", + "La oss først se hvilken effekt klasse og kjønn hadde på overlevelsessjansene:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Passasjerklasse\n", + "sns.countplot(x='pclass', hue='survived', data=titanic, palette='ocean')\n", + "plt.title(\"Antall døde (0) og overlevende (1) av hver klasse\")\n", + "plt.xlabel(\"Klasse\")\n", + "plt.ylabel(\"Antall\")\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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WLJkCcOGDSvG7du3L0OHDuU3v/kNALfccgsjRoygV69enHzyyVx66aXMnj2biy66iFNPPRWASZMm8ZWvfIWHHnqInXaq+murG8RJwcysHfbee29uv/12zjzzTO655x769u3b5vijR49miy22AGDs2LHccMMNAMyYMYMxY8a8Y/xx48YxfXr6yepp06Yxbtw4XnrpJe69914+//nPM3ToUE455RSWLFkCwO9//3vGjx8PwIQJEzpsPTf5NgUzs/bYfffdmTNnDrfeeivnnHMOhx56KD179iyqfFo/D/De97636B4wYAD9+vVj3rx5TJ8+nSuvvPId8x89ejRnn302K1euZPbs2RxyyCG8/PLLbLPNNjz44INVY6rHbbO+UjAza4dnnnmGLbfcki9+8Yt885vfZM6cOTQ3NzN79mwAbrzxxjanHzduHBdeeCEvvPAC++yzzzuG9+nTh/32249JkyYxatQoevTowdZbb82gQYP42c9+BqSnlOfOnQvAQQcdxLRp0wCYMmVKh62nk4KZWTs89NBD7L///gwdOpTzzz+fc845h3PPPZdJkyYxbNgwevTo0eb0Y8aMYdq0aYwdO7bmOOPGjeOnP/0p48aNK8qmTJnC1VdfzZAhQ9hzzz25+eabAbjkkku4/PLL2XvvvVm8eHHHrCTd/Deahw0bFu/2R3Z8S+rbfEuqWbJgwQI+9KEPNTqMDlFtXSTNjohh1cb3lYKZmRWcFMzMrOCkYGZmBScFMzMrOCmYmVnBScHMzAp+otnMbD119K3s7b0d/LbbbmPSpEmsWbOGk046ibPOOqtD4wBfKZiZdQtr1qzhtNNO45e//CXz589n6tSpzJ8/v8OX46RgZtYNPPDAA+y2227suuuubLbZZhx99NHF080dyUnBzKwbWLx4MQMHDiz6m5qaOvT1FhVOCmZmVnBSMDPrBgYMGMCiRYuK/paWFgYMGNDhy3FSMDPrBvbbbz/+9Kc/8cQTT/DGG28wbdq0uvy+s29JNTNbT414o3DPnj257LLLGDFiBGvWrOHEE09kzz337PjldPgczcysLg4//HAOP/zwui7D1UdmZlZwUjAzs4KTgpmZFZwUzMysUPekIKmHpD9KuiX3D5J0v6SFkqZL2iyXb577F+bhzfWOzczM1tYZVwqTgAWl/u8CF0fEbsAqYGIunwisyuUX5/HMzKwT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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Passasjerklasse\n", + "sns.countplot(x='sex', hue='survived', data=titanic, palette='ocean')\n", + "plt.title(\"Antall døde (0) og overlevende (1) av hvert kjønn\")\n", + "plt.xlabel(\"Kjønn (0 = han, 1 = hun)\")\n", + "plt.ylabel(\"Antall\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Vi ser, ikke overraskene at menn på 3. klasse hadde særdeles dårlige odds. Vi har alderen til passasjerene, men ikke " + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEGCAYAAACKB4k+AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Z1A+gAAAACXBIWXMAAAsTAAALEwEAmpwYAAAXBklEQVR4nO3dfbRddX3n8ffHJBgwyEMIFHIzJgpWQCSVgCCjRXAEAQPTAQJTEARWHME2LluBcVgjdE1XkdpaBNShxQKVIeFBhVJIiyg+IIoJjyHoEEVLYoAQHiw4VIjf+ePsu7mGm3BD7rknuXm/1jrr7P3bv73P92SdnM/dT7+TqkKSJIDX9LoASdKGw1CQJLUMBUlSy1CQJLUMBUlSa2yvC1gf2223XU2dOrXXZUjSRmXhwoVPVNWkwZZt1KEwdepUFixY0OsyJGmjkuTna1rm4SNJUstQkCS1DAVJUmujPqcgSd3wwgsvsHTpUp5//vlel7Jexo8fT19fH+PGjRvyOoaCJK1m6dKlbLnllkydOpUkvS7nVakqVq5cydKlS5k2bdqQ1/PwkSSt5vnnn2fixIkbbSAAJGHixInrvLdjKEjSIDbmQOj3at6DoSBJahkKktQjN9xwA+edd96wbGvChAnDsp1N/kTzhAmH9bqEDcazz/5Tr0uQRp0XX3yRsWMH/6qdOXMmM2fOHOGK1s49BUkagueee47DDjuMPffck7e+9a3MmzePqVOn8sQTTwCwYMECDjjgAADOOeccTjjhBPbff39OOOEE9t13Xx544IF2WwcccAALFizgsssu46Mf/SjPPPMMb3jDG/jNb37TvtaUKVN44YUX+MlPfsIhhxzCXnvtxbve9S5+9KMfAfDwww+z3377sccee3D22WcP2/s0FCRpCObPn89OO+3Evffey6JFizjkkEPW2n/x4sV8/etf56qrrmLWrFlcffXVACxfvpzly5czY8aMtu9WW23F9OnT+da3vgXAjTfeyMEHH8y4ceOYPXs2F154IQsXLuQzn/kMp512GgBz5szhIx/5CPfffz877rjjsL3ProZCkp8luT/JPUkWNG3bJrklyUPN8zZNe5J8LsmSJPcleXs3a5OkdbHHHntwyy23cOaZZ/Kd73yHrbbaaq39Z86cyeabbw7AMcccw7XXXgvA1VdfzVFHHfWy/rNmzWLevHkAzJ07l1mzZvHss8/yve99j6OPPprp06fz4Q9/mOXLlwNw++23c9xxxwFwwgknDNv7HIlzCu+pqicGzJ8F3FpV5yU5q5k/E3g/sEvzeAfwheZZknruzW9+M3fddRc33XQTZ599NgcddBBjx45tD/msfj/A6173unZ68uTJTJw4kfvuu4958+bxxS9+8WXbnzlzJp/85Cd58sknWbhwIQceeCDPPfccW2+9Nffcc8+gNXXjstleHD46Ari8mb4cOHJA+xXV8X1g6yTDt08kSevhF7/4BVtssQXHH388n/jEJ7jrrruYOnUqCxcuBOC6665b6/qzZs3i/PPP55lnnuFtb3vby5ZPmDCBvffemzlz5nD44YczZswYXv/61zNt2jSuueYaoHOX8r333gvA/vvvz9y5cwG48sorh+19djsUCviXJAuTzG7adqiq5c30o8AOzfRk4JEB6y5t2n5LktlJFiRZsGLFim7VLUm/5f7772efffZh+vTpnHvuuZx99tl86lOfYs6cOcyYMYMxY8asdf2jjjqKuXPncswxx6yxz6xZs/jyl7/MrFmz2rYrr7ySSy+9lD333JPdd9+d66+/HoALLriAiy++mD322INly5YNz5sEUlXDtrGXbTyZXFXLkmwP3AL8EXBDVW09oM9TVbVNkhuB86rqu037rcCZVbXGX9GZMWNGre+P7HhJ6ku8JFXqePDBB9l11117XcawGOy9JFlYVTMG69/VPYWqWtY8Pw58FdgHeKz/sFDz/HjTfRkwZcDqfU2bJGmEdC0UkrwuyZb908D7gEXADcCJTbcTgeub6RuADzZXIe0LPDPgMJMkaQR08+qjHYCvNmfHxwL/p6rmJ/khcHWSU4CfA/0H2G4CDgWWAL8CPtTF2iRJg+haKFTVT4E9B2lfCRw0SHsBp3erHknSK/OOZklSy1CQJLU2+VFSJWldDfel7EO9HHz+/PnMmTOHVatWceqpp3LWWWcNax3gnoIkbRRWrVrF6aefzs0338zixYu56qqrWLx48bC/jqEgSRuBO++8k5133pk3vvGNbLbZZhx77LHt3c3DyVCQpI3AsmXLmDLlpft7+/r6hnV4i36GgiSpZShI0kZg8uTJPPLIS2OGLl26lMmTXzZm6HozFCRpI7D33nvz0EMP8fDDD/PrX/+auXPnduX3nb0kVZLWUS9GFB47diwXXXQR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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Sortere etter alder\n", + "aldersklasse = []\n", + "\n", + "for alder in titanic['age']:\n", + " if alder > 15:\n", + " aldersklasse.append(\"voksen\")\n", + " else:\n", + " aldersklasse.append(\"barn\")\n", + " \n", + "titanic['aldersklasse'] = aldersklasse\n", + "\n", + "sns.countplot(x='aldersklasse', hue='survived', data=titanic, palette='ocean')" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "# *Frivillig: Erstatte kategorier for visualisering med nye kategorier\n", + "\"\"\"\n", + "overlevende = {0: \"døde\", 1: \"overlevde\"}\n", + "titanic[\"survived\"] = titanic[\"survived\"].map(overlevende)\n", + "titanic.head(5)\n", + "\"\"\"\n", + "# *Frivillig: Telle forekomster av ulike tilfeller\n", + "\"\"\"\n", + "titanic[\"survived\"].count()\n", + "titanic[\"survived\"].value_counts()\n", + "\"\"\"\n", + "None # Printer None for å unngå output" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Maskinlæring\n", + "Vi skal nå lage en modell som kan forutsi hvorvidt en person overlever på Titanic eller ikke, gitt data om personen. Vi velger ut hvilke data vi ønsker å bruke som kriterium for overlevelse, og spesifiserer kategorien \"survived\" som målkategorien vår:" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.model_selection import train_test_split, cross_val_score\n", + "from sklearn import tree\n", + "from sklearn.metrics import accuracy_score, confusion_matrix" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "kriterier = titanic[['pclass', 'sex', 'age', 'sibsp', 'parch']]\n", + "kategorier = titanic['survived'] " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "I maskinlæring er det viktig at modellen vår klarer å forutsi data som kommer utenfra datasettet vi trener modellen med. Derfor deler vi ofte opp dataene i et treningssett og et testsett. Treningssettet bruker vi til å trene modellen, testsettet til å teste og evaluere modellen i etterkant. Vi blander ikke disse dataene. Vi kan generere slike data med funksjonen _train\\_test\\_split()_. Her bruker vi 80 \\% av dataene til trening og 20 \\% til testing. Du bør bruke minst 70 \\% av dataene dine til trening." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "testandel = 0.2 # Andel brukt til testing\n", + "ml_data = train_test_split(kriterier, kategorier, test_size=testandel, random_state=42)\n", + "\n", + "treningskriterier = ml_data[0]\n", + "testkriterier = ml_data[1]\n", + "treningskategorier = ml_data[2]\n", + "testkategorier = ml_data[3]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Nå kan vi lage modellen vår. Vi bruker en algoritme som heter _Decision Tree Classifier_. Det er basert på sammensatte og forgreinede valgtrær, der alle kombinasjoner av kriterier blir utforsket. Betingede sannsynligheter for ulike hendelser blir beregnet, og de mest sannsynlige utfallene blir framhevet basert på kombinasjonen av kriteriene. Først trener vi modellen:" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "DecisionTreeClassifier()" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "modell = tree.DecisionTreeClassifier()\n", + "modell.fit(treningskriterier, treningskategorier)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Det var det - da har vi en modell! Den ligger nå i et objekt som vi har kalt _modell_. Vi kan få innsyn i hvordan modellen ser ut, men det kan fort bli litt uoversiktlig og teknisk. La oss først nøye oss med å sjekke hvordan modellen takler testsettet vårt.\n", + "\n", + "## Test og validering av modellen" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.7653631284916201" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "modellkategorier_forutsett = modell.predict(testkriterier)\n", + "accuracy_score(testkategorier, modellkategorier_forutsett)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Dette betyr at modellen forutsier riktig ca. 76 % av gangene. Det er en ok modell. For å få bedre oversikt over hva modellen forutsier riktig og hva den feiler på, kan vi konstruere en såkalt \"Confusion Matrix\" (forvirringsmatrise/feilmatrise):" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "cm = confusion_matrix(modellkategorier_forutsett, testkategorier)\n", + "\n", + "import seaborn as sns\n", + "sns.heatmap(cm, annot=True, cmap='viridis')\n", + "plt.title(\"Forvirringsmatrise\")\n", + "plt.xlabel(\"Predikerte verdier\")\n", + "plt.ylabel(\"Sanne verdier\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "La oss benytte disse dataene og telle hvor mange datapunkter vi har, hvor mange som overlevde og døde, og deretter beregne hvor stor prosentandel av overlevende og døde som modellen klarte å forutsi korrekt." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(Andel korrekt forventet død 77.68 %)\n", + "(Andel korrekt forventet overlevelse 73.13 %)\n" + ] + } + ], + "source": [ + "presisjon_død = (87/(87+25))*100\n", + "presisjon_overleve = (49/(49+18))*100\n", + "print(f'(Andel korrekt forventet død {presisjon_død:.2f} %)')\n", + "print(f'(Andel korrekt forventet overlevelse {presisjon_overleve:.2f} %)')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Det er større presisjon i å forutsi død. Dette er forventet, siden modellen har trent på flere tilfeller av død enn av overlevelse. \n", + "\n", + "La oss helt til sist visualisere modellen vår. Vi velger maks dybde på modellen til 3 for at vi ikke skal få alt for mange forgreininger." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABGoAAAIuCAYAAADnru5GAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Z1A+gAAAACXBIWXMAAAsTAAALEwEAmpwYAAD0aElEQVR4nOzddXgVxx7G8e9EiAsJgeDu7u5upbQUKVXq7u5ChbrRQimUlgLFWtyd4u4Q3J0kxG3uHwfS5iZAgISTwPt5Hp5LZmdnf5tLYfOe2RljrUVERERERERERJzPxdkFiIiIiIiIiIiIg4IaEREREREREZEcQkGNiIiIiIiIiEgOoaBGRERERERERCSHUFAjIiIiIiIiIpJDKKgREREREREREckhFNSIiIiIiIiIiOQQCmpERERERERERHIIBTUiIiIiIiIiIjmEghoRERERERERkRxCQY2IiIiIiIiISA6hoEZEREREREREJIdQUCMiIiIiIiIikkMoqBERERERERERySEU1IiIiIiIiIiI5BAKakREREREREREcgg3ZxcgIiIi2c/L0+NYXHxCAWfXIdfO0yPP8di4+FBn1yEiIiLZw1hrnV2DiIiIZDNjjI1eM9HZZUgW8KndDWutcXYdIiIikj306pOIiIiIiIiISA6hoEZEREREREREJIdQUCMiIiIiIiIikkMoqBERERERERERySEU1IiIiIiIiIiI5BAKakREREREREREcggFNSIiIiIiIiIiOYSbswsQERERyQ1SUlL4cfRUfhk/g31HjhMU4MetrRvx9mN98ff1ztQYPrW7ZdheKH8wYdOHZmW5IiIikkspqBERERHJhNe//pXv/phI5+b1ePquboQdOMLAUZNZsyWM2UM+xs3NNVPjNK5Ziftva5+mzcfTIztKFhERkVxIQY2IiIjkauHnogiPjKZE4QLZdo1tew7ww6jJ3NKyAaM+fy21vVyJIjz+/nf8NmkO/f4vfLmYEoVD6dOpRTZVKiIiIrmd1qgRERER4uIT6D9oFDVue4x8je6gUPM7qdvzad76dni6vvNWrKfr4+9QqPmdBDXsQb1eTzNk3PQ0fe56+VP863Vn6bqtadonzVuGT+1uvDhg8DXVm5CYyJQFK+j78ieUancfUxauuKbxLmfsjMWkpKTwZN9b0rT37dyS4AA/Rk9bcEXjJSQmEhUT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iIiIiIiIiI24qt765OjoGJmdnR1c1nHYCgcHh6isrKyQso7DVmm8nKexcnEaK5Y0Xi5O4+U8jZWL01ixpPFycRov52msXJzGiiWNl4vTeDnvahorV9WjT4ZhmCNHjizrMGzGyJEjMU3TKOs4bJXGy3kaKxensWJJ4+XiNF7O01i5OI0VSxovF6fxcp7GysVprFjSeLk4jZfzrqaxokefRERERERERERshAo1IiIiIiIiIiI2QoUaEREREREREREboUKNiIiIiIiIiIiNUKFGRERERERERMRGqFAjIiIiIiIiImIjVKgREREREREREbERKtSIiIiIiIiIiNgIFWpERERERERERGyECjUiIiIiIiIiIjZChRoRERERERERERuhQo2IiIiIiIiIiI1QoUZERERERERExEaoUCMiIiIiIiIiYiNUqBERERERERERsREq1IiIiIiIiIiI2AgVakREREREREREbIQKNSIiIiIiIiIiNkKFGhERERERERERG6FCjYiIiIiIiIiIjVChRkRERERERETERqhQIyIiIiIiIiJiI1SoERERERERERGxESrUiIiIiIiIiIjYCBVqRERERERERERshAo1IiIiIiIiIiI24rov1GRlZTFq1CiWLVtWrP3u37+ft956i9jY2GLtV8qWxotYS2NFikLjRaylsSJFofEi1tJYkaLQeCl5132hZs2aNWRlZdGqVati7bdmzZqEhISwaNGiYu1XypbGi1hLY0WKQuNFrKWxIkWh8SLW0liRotB4KXnXdaEmMzOTNWvW0LhxY1xcXIq9/5YtW7J3717Onj1b7H1L6dN4EWtprEhRaLyItTRWpCg0XsRaGitSFBovpeO6LtTs3LmTjIwMGjZsWCL916pVC0dHRzZv3lwi/Uvp0ngRa2msSFFovIi1NFakKDRexFoaK1IUGi+l47ou1OzZswcvLy+Cg4NLpH9nZ2cqVKjA7t27S6R/KV0aL2ItjRUpCo0XsZbGihSFxotYS2NFikLjpXRct4Wa3NxcTpw4QVhYWIkep3z58iQlJWlBpKucxotYS2NFikLjRaylsSJFofEi1tJYkaLQeCk9122hJiEhgczMTHx9fUv0OP/2f70/Y3e103gRa2msSFFovIi1NFakKDRexFoaK1IUGi+l57ot1KSkpADg6upaosdxc3OzOJ5cnTRexFoaK1IUGi9iLY0VKQqNF7GWxooUhcZL6bluCzWGYZTKcUzTLJXjSMnSeBFraaxIUWi8iLU0VqQoNF7EWhorUhQaL6Xnui3U/FulS0tLK9Hj/Nu/u7t7iR5HSpbGi1hLY0WKQuNFrKWxIkWh8SLW0liRotB4KT3XbaHG29sbJyenEl+gKC4uDoCgoKASPY6ULI0XsZbGihSFxotYS2NFikLjRaylsSJFofFSeq7bQo2dnR3ly5fn1KlThX5+9uzZ/AHyr/T0dM6ePVvgWbn4+HjOnj1LTk5OgX5OnjyJp6cnfn5+xRe8lDqNF7GWxooUhcaLWEtjRYpC40WspbEiRaHxUnqu20INQN26dUlOTub06dMFPhszZgxjx4612LZ3717GjBnDhg0bLLZPnz6dMWPGkJiYaLE9IyOD48ePU7du3eIPXkqdxotYS2NFikLjRaylsSJFofEi1tJYkaLQeCkd13Whpl69eri4uLBjx44S6X/fvn1kZWXRtGnTEulfSpfGi1hLY0WKQuNFrKWxIkWh8SLW0liRotB4KR0OZR1AWXJycqJ169asXbuWTp064eLikv/ZyJEjC7Rv3LgxjRs3LrD93nvvLbT/9evXU7t2bQIDA4stZik7Gi9iLY0VKQqNF7GWxooUhcaLWEtjRYpC46V0XNczagDatGmDk5MT69atK9Z+9+/fT2RkJF27di3WfqVsabyItTRWpCg0XsRaGitSFBovYi2NFSkKjZeSZ1xN7yg3DMMsrEp3vRo5ciSmaZbOy+yvQhov52msXJzGiiWNl4vTeDlPY+XiNFYsabxcnMbLeRorF6exYknj5eI0Xs67msbKdT+jRkRERERERETEVqhQIyIiIiIiIiJiI1SoERERERERERGxESrUiIiIiIiIiIjYCBVqRERERERERERshAo1IiIiIiIiIiI2QoUaEREREREREREboUKNiIiIiIiIiIiNUKFGRERERERERMRGqFAjIiIiIiIiImIjVKgREREREREREbERKtSIiIiIiIiIiNgIFWpERERERERERGyECjUiIiIiIiIiIjZChRoRERERERERERuhQo2IiIiIiIiIiI1QoUZERERERERExEaoUCMiIiIiIiIiYiNUqBERERERERERsREq1IiIiIiIiIiI2AgVakREREREREREbIQKNSIiIiIiIiIiNkKFGhERERERERERG6FCjYiIiIiIiIiIjVChRkRERERERETERqhQIyIiIiIiIiJiI1SoERERERERERGxESrUiIiIiIiIiIjYCBVqRERERERERERshGGaZlnHYDVHR8fI7Ozs4LKOw1Y4ODhEZWVlhZR1HLZK4+U8jZWL01ixpPFycRov52msXJzGiiWNl4vTeDlPY+XiNFYsabxcnMbLeVfTWLmqCjUiIiIiIiIiItcyPfokIiIiIiIiImIjVKgREREREREREbERKtSIiIiIiIiIiNgIFWpERERERERERGyECjUiIiIiIiIiIjZChRoRERERERERERuhQo2IiIiIiIiIiI1QoUZERERERERExEaoUCMiIiIiIiIiYiNUqBERERERERERsREq1IiIiIiIiIiI2AgVakREREREREREbIQKNSIiIiIiIiIiNkKFGhERERERERERG6FCjYiIiIiIiIiIjVChRkRERERERETERqhQIyIiIiIiIiJiI1SoERERERERERGxESrUiIiIiIiIiIjYCBVqRERERERERERshAo1IiIiIiIiIiI2QoUaEREREREREREboUKNiIiIiIiIiIiNUKFGRERERERERMRGqFAjIiIiIiIiImIjVKgREREREREREbERKtSIiIiIiIiIiNgIFWpERERERERERGyECjUiIiIiIiIiIjZChRoRERERERERERuhQo2IiIiIiIiIiI1QoUZERERERERExEaoUCMiIiIiIiIiYiNUqBERERERERERsREq1IiIiIiIiIiI2AgVakREREREREREbMT/AIkgmXKGm3LWAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(20,10))\n", + "titanic.pop('survived')\n", + "tree.plot_tree(modell, max_depth=2, feature_names=titanic.columns, class_names=['Døde', 'Overlevde'], filled=True, label=None,) \n", + "None" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/ekstra/modellering_kinematikk.ipynb b/_sources/docs/ekstra/modellering_kinematikk.ipynb new file mode 100644 index 00000000..f004ef9f --- /dev/null +++ b/_sources/docs/ekstra/modellering_kinematikk.ipynb @@ -0,0 +1,192 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Modelleringsoppgave: Kinematikk (fysikk)\n", + "\n", + "## Del 1 – Kinematikk: Diskrete modeller\n", + "I fysikken jobber vi ofte med forenklede modeller fordi vi er begrenset av matematikken. Vi kan fort ende opp med uttrykk som er svært vanskelige eller umulige å løse for hånd. Med programmering kan vi øke modellkompleksiteten og dermed utforske mer virkelighetsnære modeller.\n", + "\n", + "La oss begynne med en enkel modell for fritt fall av en kule. Modellen kan løses med penn og papir, så det er en god indikasjon på om framgangsmåten vår stemmer.\n", + "\n", + "For en kule i fritt fall kan vi modellere bevegelsen ved å ta hensyn til kun gravitasjonskreftene. Vi tar utgangspunkt i Newtons 2. lov:\n", + "\n", + "$$\\sum F = ma$$\n", + "\n", + "Her er summen av kreftene kun gravitasjonskraften:\n", + "\n", + "$$G = ma$$\n", + "\n", + "Vi trenger nå en modell for gravitasjonskraften *G*. Vi kjenner fra fysikk at vi ofte uttrykker *G* slik:\n", + "\n", + "$$G = mg$$\n", + "\n", + "der $g = 9.8$ m/s$^2$ er tyngdeakselerasjonen ved havnivå på jorda og $m$ er massen til legemet på jorda. Dette er en modell som kan utledes fra Newtons gravitasjonslov.\n", + "\n", + "a) Klikk på boksen nedenfor for å se begrunnelsen for modellen for gravitasjonskrefter. Prøv deretter å forklare for hverandre med ord hvordan $G = mg$ utledes og hvilke forutsetninger denne modellen har.\n", + "\n", + "```{admonition} Hint 1\n", + ":class: dropdown\n", + "Gravitasjonskreftene beskrives av Newtons gravitasjonslov:\n", + "\n", + "$$G = k_G \\frac{m_1m_2}{r^2}$$\n", + "\n", + "der $F_G$ er gravitasjonskreftene som virker mellom to legemer med henholdsvis masse $m_1$ og $m_2$ med avstand $r$ mellom hverandres tyngdesentre. $k_G$ er gravitasjonskonstanten ($k_G = 6,674\\cdot 10^{-11} N\\cdot (m/kg)^2$).\n", + "\n", + "En forenkling vi kan gjøre for legemer på jorda, er å løse Newtons gravitasjonslov ved å bruke massen til jorda ($5,972\\cdot 10^{24} kg$) og avstanden fra jordas massesenter til legemet. Dette gjør vi fordi vi kan si at gravitasjonskraften virker fra masssesenteret til et legeme. Avstanden fra jordas massesenter til overflaten, er 6371 km. Så for et punktlegeme som står på overflaten av jorda, får vi da:\n", + "\n", + "$$G = 6,674\\cdot 10^{-11} \\frac{m_1 \\cdot 5,972\\cdot 10^{24}}{6371000^2} \\approx m_1 \\cdot 9,8$$\n", + "\n", + "Dette kjenner vi igjen som tyngdeakselerasjonen $g$ multiplisert med massen til legemet: $G = mg$. Siden vi regner fra jordas overflate, varierer selvsagt $g$ med avstanden legemet befinner seg fra jorda.\n", + "\n", + "```\n", + "I *diskrete* modeller tar vi utgangspunkt i et endelig steg, f.eks. tidssteg, mellom hver verdi. Vi skal her operere med konstant akselerasjon og anta at farten og posisjonen også er konstante innenfor et lite tidsrom *dt*. For konstant posisjon har vi at:\n", + "\n", + "$$s_{t+dt} = s_t + v_t\\cdot dt$$\n", + "\n", + "som du kanskje kjenner igjen som \"formelen\" $s = v\\cdot t$. Tilsvarende kan vi anta for hastigheten:\n", + "\n", + "$$v_{t+dt} = v_t + a_t\\cdot dt$$\n", + "\n", + "b) Lag et program som regner ut hvor langt ballen har falt etter en viss tid. Velg startverdier og tid selv. Du kan ta utgangspunkt i dette programmet, eller lage et helt fra scratch:\n", + "\n", + "\n", + "\n", + "c) Hvilke antakelser har vi tatt og hvilke forutsetninger tar modellene våre utgangspunkt i? Kommenter både hvordan vi regner ut posisjon og fart, i tillegg til modellen for gravitasjon.\n", + "\n", + "d) Utvid programmet slik at det plotter posisjonen som funksjon av tid.\n", + "\n", + "La oss nå utvide programmet ved å ta hensyn til flere krefter, for eksempel luftmotstand. Vi har mange ulike modeller for luftmotstand, avhengig av hva slags legeme vi har med å gjøre og hvor stor hastighet legemet faller. Følgende modell er mye brukt:\n", + "\n", + "$$L = k\\cdot v^2$$\n", + "\n", + "e) Diskuter hva som menes med parameteren $k$. Hvordan finner man slike parametere? Hvorfor er $v$ kvadrert?\n", + "\n", + "Vi kan nå sette denne modellen inn i Newtons andre lov sammen med gravitasjonskreftene. Vi velger positiv retning nedover, så *G* får positivt fortegn og *L* får negativt fortegn.\n", + "\n", + "f) Lag et program som plotter både hastighet og posisjon for et legeme på 1,0 kg som faller. Bruk $k = 0.1$.\n", + "\n", + "g) Lag et program som finner ut *når* et legeme treffer bakken gitt en starthøyde $s_0$.\n", + "\n", + "En alternativ måte å lagre verdier på, er å bruke arrayer.\n", + "\n", + "f) Løs [dette programmeringspuslespillet](http://parsons.problemsolving.io/puzzle/638e48fe2d594c77a29f347591cd9e80). Puslespillet beregner akselerasjon, hastighet og posisjon til et legeme som faller med luftmotstand. Noen steder er rekkefølgen angitt som kommentar. Når rekkefølgen ikke er entydig, skal du angi $a$, $v$, $s$ og $t$ i denne rekkefølgen.\n", + "\n", + "g) Eksperimenter med modellene i programmet ditt ved å systematisk variere $k$, endre på luftmotstandsmodellen eller tilsvarende. Redegjør for resultatene dine og drøft det du ser.\n", + "\n", + "h) La legemet bli kastet oppover med en startfart istedenfor at den slippes. Fungerer programmet nå? Hva må du ta hensyn til når du beregner luftmotstanden? Hint: Tegn en tegning som viser kreftene på en ball når den faller nedover og når den er på vei oppover.\n", + "\n", + "### Differenslikninger\n", + "\n", + "Når vi bruker sammenhenger som $s_{t+dt} = s_t + v_t\\cdot dt$, formulerer vi sammenhengene mellom ulike størrelser som _differenslikninger_. En differenslikning er en likning der verdien til en størrelse (f.eks. posisjon) avhenger av den forrige verdien til størrelsen (f.eks. posisjonen ved forrige tidssteg). Et annet eksempel på dette er tallfølger. Se videoen nedenfor for en liten innføring i numerisk løsing av differenslikninger." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "tags": [ + "remove-input" + ] + }, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import HTML\n", + "# Youtube\n", + "HTML('')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Del 2 – Kinematikk: Kontinuerlig modeller\n", + "\n", + "Newtons 2. lov kan også formuleres som en *differensiallikning* fordi den beskriver den momentane endringen i posisjon og fart, det vil si den deriverte, som funksjon av tid. Dette er fordi $a(t) = v'(t) = s''(t)$. Da går vi fra en *diskret* modell til en *kontinuerlig* modell med et tidssteg som i utgangspunktet er så lite som mulig:\n", + "\n", + "$$a(t) = v'(t) = g - \\frac{kv(t)}{g}$$\n", + "\n", + "En differensiallikning er en likning som inneholder den deriverte av en funksjon, $f'(x)$. I de fleste praktiske situasjoner beskriver slike likninger sammenhengen mellom endringen, $f'(t)$, og tilstanden, $f(t)$, til et system ved tida $t$.\n", + "\n", + "Vi har altså en differensiallikning som beskriver endringen i systemet $v'(t)$, men ingen informasjon om selve farten $v(t)$. Vi ønsker med andre ord å finne farten (og etterpå posisjonen) ved enhver tid gitt en eller annen startbetingelse (startfart og startposisjon). Det er det samme som å si at vi ønsker å finne funksjonsverdien $v(t + dt)$ for hvert tidssteg $dt$.\n", + "\n", + "I teorien er ingen modeller kontinuerlige på en datamaskin, men vi gjør modellene \"mindre diskrete\" ved å velge tidssteg som er små.\n", + "\n", + "### Newtons 2. lov som differensiallikning\n", + "\n", + "Vi formulerer nå Newtons 2. lov slik:\n", + "\n", + "$$\\sum F = ma(t) = mv'(t) = ms''(t)$$\n", + "\n", + "det betyr at:\n", + "\n", + "$$v'(t) = \\frac{\\sum F}{m}$$\n", + "\n", + "$$s''(t) = \\frac{\\sum F}{m}$$\n", + "\n", + "Programmene våre blir egentlig ikke noe annerledes fra slik vi lagde dem da vi hadde diskrete modeller. Det er kun _graden_ av _diskretisering_ som skiller modellene. For kontinuerlige modeller må vi bare passe på å velge en *dt* som er liten nok.\n", + "\n", + "### En metode for løsing av differensiallikninger\n", + "Nå vi skal løse en differensiallikning, har vi en initalbetingelse $y_0$ og et uttrykk for den deriverte $y'$. Vi ønsker derfor å finne $y_1$ og alle andre funksjonsverider.\n", + "\n", + "Du kjenner faktisk allerede til et uttrykk som inneholder en funksjon og dens deriverte, nemlig definisjonen av den deriverte! Vi bruker den numeriske definisjonen der vi tilnærmer grenseverdiene med en _dx_ ($\\Delta x$) som er så liten som mulig:\n", + "\n", + "$$f'(x) \\approx \\frac{f(x+dx) - f(x)}{dx}$$\n", + "\n", + "Til å begynne med kjenner vi $f(x)$ ($v(t)$), altså $f(x_0)$. Dette er initialbetingelsen, for eksempel startfarten $v(t_0)$. Vi kjenner også et uttrykk for den deriverte av farten (akselerasjonen) gjennom Newtons 2. lov. I tillegg bestemmer vi selv tidssteget, _dx_ (_dt_), men husk at det verken bør være for lite eller for stort. Den eneste ukjente i likningen ovenfor er altså $f(x+dx)$, og det er jo nettopp dette vi prøver å finne. Med litt enkel algebra får vi omformet uttrykket slik at det blir et uttrykk for $f(x+dx)$. Vi ganger først med $dx$ på begge sider:\n", + "\n", + "$$f'(x)\\cdot dx \\approx f(x+dx) - f(x)$$\n", + "\n", + "Deretter får vi $f(x+dx)$ aleine på høyre side og ender opp med følgende likning:\n", + "\n", + "$$f(x+dx) \\approx f(x) + f'(x)\\cdot dx$$\n", + "\n", + "Dette kalles _Eulers metode_. Den brukes til å løse differensiallikninger, det vil si å integrere den deriverte slik at vi finner funksjonsverdiene. Siden vi ofte har med funksjoner av tid å gjøre, kaller vi gjerne _dx_ for _dt_.\n", + "\n", + "i) Forklar hva en differensiallikning er. Hvorfor er Newtons 2. lov en differensiallikning?\n", + "\n", + "j) Er det noen forskjell på å bruke Eulers metode og bevegelseslikningene vi brukte i programmene våre ($v = v_0 + at$ og $s = s_0 + vt$)?\n", + "\n", + "k) __Frivillig (Fysikk 2):__ Lag et program som simulerer todimensjonalt kast av ball. Ta hensyn til luftmotstand og gravitasjon." + ] + } + ], + "metadata": { + "celltoolbar": "Edit Metadata", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/ekstra/modellering_populasjonsdynamikk.ipynb b/_sources/docs/ekstra/modellering_populasjonsdynamikk.ipynb new file mode 100644 index 00000000..545503f4 --- /dev/null +++ b/_sources/docs/ekstra/modellering_populasjonsdynamikk.ipynb @@ -0,0 +1,130 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Modelleringsoppgave IIb: Bevaringsbiologi (biologi)\n", + "\n", + "## Bevaringsbiologi\n", + "\n", + "I bevaringsbiologi forskes det på hvordan artsmangfoldet i spesielt utsatte økosystemer og populasjoner kan bevares. En viktig del av dette er å modellere hvordan en populasjon kan utvikle seg gitt ulike omstendigheter og tiltak. Vi skal se på en enkel modell for populasjonsdynamikk her.\n", + "\n", + "### Del 1 – Diskrete modeller\n", + "En *diskret* populasjonsmodell er en modell som beskriver endringen i populasjonsstørrelse ved bestemte tidspunkter, men ikke alle tidspunkter. Slike modeller kan ofte formuleres som *differenslikninger* (ikke til å forveksle med *differensiallikninger*...). En differenslikning er en likning der neste verdi er avhengig av foregående verdi. For en populasjon er åpenbart endringen av antall individer ved en tid $t + \\Delta t$, avhengig av antall individer ved forrige tidspunkt $t$. Vi kan formulere en enkel modell slik:\n", + "\n", + "$$ \\Delta P = k\\cdot P_t$$\n", + "$$ P_{t+\\Delta t} - P_t = k\\cdot P_t$$\n", + "$$ P_{t+\\Delta t} = P_t + k\\cdot P_t$$\n", + "\n", + "der indeksen $t+\\Delta t$ viser til populasjonsstørrelsen ved neste tidssteg, mens indeksen $t$ viser til populasjonsstørrelsen ved nåværende tid.\n", + "\n", + "a) Forklar for hverandre hva modellen ovenfor beskriver. Hva er $k$, og hva avhenger denne parameteren av?\n", + "\n", + "b) Implementer modellen som et Python-program. Plott utviklingen for $t \\in [0,60]$ timer. Bruk $k = 1.25$ per time. Hva slags populasjon kan denne modellen beskrive?\n", + "\n", + "c) En populasjon vil alltid nå en bæreevne $B$ etter en viss tid. En modell som tar hensyn til dette, kan se slik ut:\n", + "\n", + "$$ P_{t+\\Delta t} = P_t + k\\cdot P_t\\left(1-\\frac{P_t}{B}\\right)$$\n", + "\n", + "Forklar hva leddene i modellen betyr. Hva skjer med endringen ettersom $P_t$ øker eller minker?\n", + "\n", + "d) Implementer modellen med en valgfri bæreevne. Beskriv det du ser." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Del 2 – Kontinuerlige modeller\n", + "\n", + "Populasjonsmodeller kan også beskrive populasjonsendringen for *enhver* tid. Slike modeller formuleres som oftest som *differensiallikninger*. En differensiallikning er en likning som inneholder den deriverte av en funksjon, $f'(x)$. I de fleste praktiske situasjoner beskriver slike likninger sammenhengen mellom endringen, $f'(t)$, og tilstanden, $f(t)$, til et system ved tida $t$. Siden vi nå bruker den deriverte istedenfor gjennomsnittlig vekst på diskrete tidspunkter, går vi fra en *diskret* modell til en *kontinuerlig* modell med et tidssteg som i utgangspunktet er så lite som mulig:\n", + "\n", + "$$P'(t) = k\\cdot P(t)$$\n", + " \n", + "Vi har altså en differensiallikning som beskriver endringen i systemet $P'(t)$, men ingen informasjon om selve systemet, altså antall individer, $P(t)$. Vi ønsker med andre ord å finne antall individer ved enhver tid gitt en eller annen startbetingelse (antall individer ved t = 0). Det er det samme som å si at vi ønsker å finne funksjonsverdien $f(t + dt)$ for hvert tidssteg $dt$.\n", + "\n", + "I teorien er ingen modeller kontinuerlige på en datamaskin, men vi gjør modellene \"mindre diskrete\" ved å velge tidssteg som er små.\n", + "\n", + "a) Forklar for hverandre hva modellen ovenfor sier oss, og hva de ulike faktorene betyr.\n", + "\n", + "b) Forklar hva en differensiallikning er. Hvorfor er modellen ovenfor en differensiallikning? Hva er forskjellen på en differensiallikning og en differenslikning?\n", + "\n", + "### En metode for løsing av differensiallikninger\n", + "Nå vi skal løse en differensiallikning, har vi en initalbetingelse $y_0$ og et uttrykk for den deriverte $y'$. Vi ønsker derfor å finne $y_1$ og alle andre funksjonsverider.\n", + "\n", + "Du kjenner faktisk allerede til et uttrykk som inneholder en funksjon og dens deriverte, nemlig definisjonen av den deriverte! Vi bruker den numeriske definisjonen der vi tilnærmer grenseverdiene med en _dx_ ($\\Delta x$) som er så liten som mulig:\n", + "\n", + "$$f'(x) \\approx \\frac{f(x+dx) - f(x)}{dx}$$\n", + "\n", + "Til å begynne med kjenner vi $f(x)$ ($v(t)$), altså $f(x_0)$. Dette er initialbetingelsen, for eksempel startfarten $v(t_0)$. Vi kjenner også et uttrykk for den deriverte av farten (akselerasjonen) gjennom Newtons 2. lov. I tillegg bestemmer vi selv tidssteget, _dx_ (_dt_), men husk at det verken bør være for lite eller for stort. Den eneste ukjente i likningen ovenfor er altså $f(x+dx)$, og det er jo nettopp dette vi prøver å finne. Med litt enkel algebra får vi omformet uttrykket slik at det blir et uttrykk for $f(x+dx)$. Vi ganger først med $dx$ på begge sider:\n", + "\n", + "$$f'(x)\\cdot dx \\approx f(x+dx) - f(x)$$\n", + "\n", + "Deretter får vi $f(x+dx)$ aleine på høyre side og ender opp med følgende likning:\n", + "\n", + "$$f(x+dx) \\approx f(x) + f'(x)\\cdot dx$$\n", + "\n", + "Dette kalles _Eulers metode_. Den brukes til å løse differensiallikninger, det vil si å integrere den deriverte slik at vi finner funksjonsverdiene. Siden vi ofte har med funksjoner av *tid* å gjøre, kaller vi gjerne _dx_ for _dt_.\n", + "\n", + "c) Implementer modellen ovenfor og bruk Eulers metode til å simulere utviklingen av populasjonen. Du kan ta utgangspunkt i programmet nedenfor eller lage et helt nytt et. Eksperimenter med ulike verdier av $k$. Er denne $k$-en den samme som i den diskrete modellen du implementerte i oppgave b)?\n", + "\n", + "\n", + "\n", + "d) Lag en differensiallikning som beskriver utviklingen av populasjonen gitt en bæreevne. Forklar hva de ulike leddene og faktorene betyr.\n", + "\n", + "e) Implementer modellen med bæreevne og beregn utviklingen med Eulers metode. Beskriv utviklingen med ord.\n", + "\n", + "f) Fyll inn koden nedenfor slik at programmet simulerer populasjonsdynamikken mellom hare og gaupe, gitt følgende modeller:\n", + "\n", + "$$H'(t) = aH(t)\\left(1-\\frac{H(t)}{B}\\right) - cH(t)G(t)$$\n", + "\n", + "$$G'(t) = dH(t)G(t) - eG(t)$$\n", + "\n", + "\n", + "\n", + "g) Hva kan de ulike parameterne/koeffisientene bety? Hva er de avhengig av? Hva er betydningen til hvert ledd i modellen ovenfor?\n", + "\n", + "h) [Følgende datasett](https://www.uio.no/studier/emner/matnat/ifi/IN-KJM1900/h20/datafiler/hare_gaupe_data.csv) beskriver (antakeligvis – datasettet er ikke verifisert!) et økosystem med gauper og harer i Canada fra 1845–1935. Prøv å lage en modell som beskriver denne dynamikken så godt som mulig. NB: Det er ikke lett å tilpasse alle parameterne manuelt slik at du får en god tilpasning til dataene, men prøv så godt du kan!\n", + "\n", + "i) Hvorfor kan slike modeller som du har jobbet med nå, være nyttige i bevaringsbiologi?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Rapport\n", + "Skriv en rapport i Jupyter notebook der du redegjør gradvis for de ulike modellene dine. Lag også en konklusjon." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/ekstra/modellering_reaksjonskinetikk.ipynb b/_sources/docs/ekstra/modellering_reaksjonskinetikk.ipynb new file mode 100644 index 00000000..2f5626b7 --- /dev/null +++ b/_sources/docs/ekstra/modellering_reaksjonskinetikk.ipynb @@ -0,0 +1,109 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Modelleringsoppgave IIc: Reaksjonskinetikk (kjemi)\n", + "\n", + "## Reaksjonsfart\n", + "_Kinetikk_ er et område av kjemien som handler om reaksjonsfart, det vil si hvor fort reaksjoner skjer. Gjennom eksperimenter kan vi finne ut hva forholdet mellom reaktanter og produkter er ved en gitt tid, og vi kan formulere matematiske modeller som viser denne sammenhengen. Denne sammenhengen er altså i utgangspunktet _empirisk_. Det vil si at vi modellerer sammenhengen basert på reelle data, ikke på matematiske utledninger.\n", + "\n", + "Reaksjonsraten til et produkt eller en reaktant kan defineres som endringa i konsentrasjonen til dette produktet eller denne reaktanten i løpet av en viss tid. Når vi reduserer denne tida til å være så liten som mulig, får vi den deriverte av konsentrasjonen, siden den deriverte handler om _momentan_ endring: $c'(t)$. Sammenhengen mellom den deriverte av konsentrasjonen og konsentrasjonene til de ulike stoffene som deltar i reaksjonen, kaller vi en _ratelov_. \n", + "\n", + "Vi tar et eksempel: Konsentrasjonen mellom hydrogengass og jod i gassfase har en relativt enkel ratelov. Merk derimot at ratelovene i utgangspunktet ikke har noen sammenheng med det støkiometriske forholdet mellom reaktanter og produkter. Egentlig er reaksjonen en likevektsreaksjon, men vi kan forenkle og skrive den slik (som en irreversibel reaksjon), noe som stemmer ved relativt lave temperaturer:\n", + "\n", + "$$H_2 (g) + I_2 (g) \\rightarrow 2HI (g)$$\n", + "\n", + "Rateloven for denne reaksjonen er som følger:\n", + "\n", + "$$v = c'(t) = k_r[H_2][I_2]$$\n", + "\n", + "a) Prøv å forklare hva rateloven ovenfor forteller oss, og hva de ulike faktorene betyr.\n", + "\n", + "```{admonition} Forklaring\n", + ":class: dropdown\n", + "Symbolet _v_ betyr farten på reaksjonen, og det er det samme som den deriverte av konsentrasjonen til produktet vårt (her HI). Farten avhenger av produktet av konsentrasjonen til både $H_2$ og $I_2$, i tillegg til en konstant $k_r$. Konstanten $k_r$ kalles _ratekonstanten_ for reaksjonen, og den kan vi finne ved å gjøre eksperimenter.\n", + "```\n", + "\n", + "Ratelovene er eksempler på _differensiallikninger_, det vil si likninger som inneholder den deriverte (endringen av en tilstand). Uttrykket beskriver endringen i systemet $c'(t)$, men ingen informasjon om selve systemet, altså konsentrasjonen, $c_{HI}(t)$. Vi ønsker med andre ord å finne konsentrasjonen ved enhver tid gitt en eller annen startbetingelse (konsentrasjoner av produkter og reaktanter ved t = 0). Det er det samme som å si at vi ønsker å finne en funksjonsverdi $f(t + dt)$ for hvert tidssteg $dt$.\n", + "\n", + "b) Forklar hva en differensiallikning er. Hvorfor er ratelover differensiallikninger?\n", + "\n", + "### En metode for løsing av differensiallikninger\n", + "Nå vi skal løse en differensiallikning, har vi en initalbetingelse $y_0$ og et uttrykk for den deriverte $y'$. Vi ønsker derfor å finne $y_1$ og alle andre funksjonsverider.\n", + "\n", + "Du kjenner faktisk allerede til et uttrykk som inneholder en funksjon og dens deriverte, nemlig definisjonen av den deriverte! Vi bruker den numeriske definisjonen der vi tilnærmer grenseverdiene med en _dx_ ($\\Delta x$) som er så liten som mulig:\n", + "\n", + "$$f'(x) \\approx \\frac{f(x+dx) - f(x)}{dx}$$\n", + "\n", + "Til å begynne med kjenner vi $f(x)$ ($v(t)$), altså $f(x_0)$. Dette er initialbetingelsen, for eksempel startfarten $v(t_0)$. Vi kjenner også et uttrykk for den deriverte av farten (akselerasjonen) gjennom Newtons 2. lov. I tillegg bestemmer vi selv tidssteget, _dx_ (_dt_), men husk at det verken bør være for lite eller for stort. Den eneste ukjente i likningen ovenfor er altså $f(x+dx)$, og det er jo nettopp dette vi prøver å finne. Med litt enkel algebra får vi omformet uttrykket slik at det blir et uttrykk for $f(x+dx)$. Vi ganger først med $dx$ på begge sider:\n", + "\n", + "$$f'(x)\\cdot dx \\approx f(x+dx) - f(x)$$\n", + "\n", + "Deretter får vi $f(x+dx)$ aleine på høyre side og ender opp med følgende likning:\n", + "\n", + "$$f(x+dx) \\approx f(x) + f'(x)\\cdot dx$$\n", + "\n", + "Dette kalles _Eulers metode_. Den brukes til å løse differensiallikninger, det vil si å integrere den deriverte slik at vi finner funksjonsverdiene. Siden vi ofte har med funksjoner av *tid* å gjøre, kaller vi gjerne _dx_ for _dt_.\n", + "\n", + "c) Implementer modellen ovenfor og bruk Eulers metode til å simulere utviklingen av konsentrasjonene til $I_2$, $H_2$ og $HI$. For denne reaksjonen er ratekonstanten for dannelse av HI $k_r = 4.84 \\cdot 10^{-2}$ ved 400 grader Celsius. Du kan ta utgangspunkt i programmet nedenfor eller lage et helt nytt et. Eksperimenter med ulike verdier av $k$. Hvis du ikke lager programmet fra grunnen av, må du forklare hva som skjer på de ulike linjene.\n", + "\n", + "\n", + "\n", + "d) Prøv å simulere reaksjonen for 750 sekunder. Beskriv hva som skjer i reaksjonen.\n", + "\n", + "Ved høye temperaturer vil flere og flere HI-molekyler kollidere og rives løs igjen til $I_2$ og $H_2$. Reaksjonen er derfor egentlig reversibel, selv om vi har gjort en forenkling og beskrevet den som irreversibel ovenfor. Det viser seg at den motsatte reaksjonen følger denne rateloven:\n", + "\n", + "$$c'(t) = k_{bakover}[HI]^2$$\n", + "\n", + "Reaksjonen er altså andreordens med hensyn på konsentrasjonen av hydrogenjodid. Den totale rateloven for hydrogenjodid blir derfor:\n", + "\n", + "$$c'(t) = k_{framover}[H_2][I_2] - k_{bakover}[HI]^2$$\n", + "\n", + "Dersom vi kjenner likevektskonstanten $K$ ved den gitte temperaturen, kan vi finne $k_{bakover}$ ved å benytte følgende sammenheng:\n", + "\n", + "$$K = \\frac{k_{framover}}{k_{bakover}}$$\n", + "\n", + "\n", + "e) Lag et program som simulerer reaksjonen mellom $I_2$ og $H_2$ ved 450$^\\circ$C. Sett likevektskontstanten til å være 100 og $k_{framover}$ til å være $4.8\\cdot 10^{-2}$. Lag et plott som viser konsentrasjonen som funksjon av tid, og et plott som viser reaksjonsraten/reaksjonshastigheten som funksjon av tid. Kommenter plottene. Stemmer dette med det du kan om likevekter?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Rapport\n", + "Skriv en rapport i Jupyter notebook der du redegjør gradvis for de ulike modellene dine. Lag også en konklusjon." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/ekstra/modelleringsoppgave_a.ipynb b/_sources/docs/ekstra/modelleringsoppgave_a.ipynb new file mode 100644 index 00000000..26326158 --- /dev/null +++ b/_sources/docs/ekstra/modelleringsoppgave_a.ipynb @@ -0,0 +1,192 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Modelleringsoppgave I: Smittemodellering\n", + "## Smittespredning\n", + "\n", + "Vi utforsker her en modell for smittesprendning av sykdommer. Vi kan tenke oss at antall smittede indivier *I* (\"Inceptibles\") utvikler seg slik:\n", + "\n", + "$$I_{t+1} = I_t + aI_t$$\n", + "\n", + "Bildet nedenfor viser spike-proteinet som ligger på overflaten til coronaviruset, og som gir viruset dets karakteristiske form:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "tags": [ + "remove-input" + ] + }, + "outputs": [ + { + "data": { + "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", + "text/html": [ + "
\n", + "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", + " jupyter labextension install jupyterlab_3dmol

\n", + "
\n", + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import py3Dmol\n", + "\n", + "spike_prot = py3Dmol.view(query='pdb:6B7N')\n", + "spike_prot.setStyle({'cartoon':{'color':'spectrum'}})" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Oppgave 1\n", + "\n", + "- Forklar for hverandre med ord hva modellen for *I* sier. Hva betyr de ulike symbolene i likningen?\n", + "- I hvilke sammenhenger kan det være hensiktsmessig å bruke en slik modell? Hvilke begrensninger har modellen?\n", + "- Lag et program som simulerer smitteutviklingen over 48 uker i en populasjon med 157759 individer, en smitterate på 0.2 per uke og antall smittede ved t = 0 lik 3. Hvis du trenger hjelp, kan du trykke på hintet nedenfor.\n", + "\n", + "```{admonition} Hint 1\n", + ":class: dropdown\n", + "En pseudokode for programmet er:\n", + "\n", + "Sett opp startverdier: populasjonsstørrelse, kontaktrate og slutt-tid, antall smittede\n", + "\n", + "Lag lister for å spare på verdiene:\n", + "smittede = []\n", + "tid []\n", + "\n", + "gjenta til tid = tid_slutt:\n", + " Beregn antall smittede vha. modellen\n", + " Legg verdiene i lister\n", + " \n", + "plott antall smittede mot t\n", + "\n", + "```\n", + "- Beskriv utviklingen. Varier systematisk *a* og antall smittede til å begynne med. Kommenter hva som skjer.\n", + "- Hvorfor er det viktig at smitteraten har en *enhet* (her: uker)?\n", + "\n", + "### Oppgave 2\n", + "Vi utvider modellen ved å innføre en kategori for de som er *mottakelige*, *S* (\"susceptibles\"). Det vil si at de som allerede er smittet, ikke kan bli smittet igjen. Vi modifiserer da modellen for de smittede, slik at den også tar hensyn til den nye kategorien:\n", + "\n", + "$$I_{t+1} = I_t + aI_tS_t$$\n", + "\n", + "- Forklar hva som er endret i modellen. Hvorfor kan vi gjøre dette?\n", + "- Lag en modell for *S* (mottakelige) basert på modellen for *I*. Hint: Når en person er smittet, hva skjer med antall mottakelige? Modellen skal være nokså lik modellen for *I*, med noen små forskjeller. Lag en variabel *endring* $=aI_tS_t$ som første linje i løkka.\n", + "\n", + "```{admonition} Hint 2\n", + ":class: dropdown\n", + "Dersom endringen i antall smittede er $aI_tS_t$, må endringen i antall mottakelige være $-aI_tS_t$.\n", + "```\n", + "\n", + "- Utvid programmet ditt til å beregne og plotte antall mottakelige og smittede i samme koordinatsystem. Bruk merkelapper (labels og legend) slik at vi ser hvilken kurve som beskriver hva.\n", + "- Varier systematisk *a* og antall smittede til å begynne med ($I_0$). Kommenter hva som skjer.\n", + "- I hvilke sammenhenger kan det være hensiktsmessig å bruke en slik modell? Hvilke begrensninger har modellen?\n", + "\n", + "### Oppgave 3\n", + "Vi legger nå til muligheten for å bli frisk (hurra!). Da trenger vi også å innføre en *bedringsrate*, *b*. Et uttrykk for antall smittede kan nå være:\n", + "\n", + "$$I_{t+1} = I_t + aI_tS_t - bI_t$$\n", + "\n", + "- Forklar alle leddene i modellen for smittede. Hva er betydningen til *b*? Hva kan være en ok størrelse for b i dette tilfellet? Diskuter.\n", + "- Lag en modell for antall friske, *R* (\"recovered\"), med utgangspunkt i modellen ovenfor.\n", + "- Simuler og plott utviklingen. Hvis grafen ikke ser fornutftig ut, bør du eksperimentere med andre verdier av *b*.\n", + "- Beskriv grafen med ord.\n", + "- I hvilke sammenhenger kan det være hensiktsmessig å bruke en slik modell? Hvilke begrensninger har modellen?\n", + "\n", + "Det er vanskelig å fastsette parametrene *a* og *b*. Ofte fastsettes de ved å løpende sammenlikne modellene med reelle data fra observasjoner eller eksperimenter. I fila 'influensa.txt' (se \"Datafiler\" i sidemenyen) finner du en oversikt over antall smittede av influensaviruset H3N2 i en populasjon med 157 759 personer. \n", + "\n", + "- Les av fila og plott dataene sammen med modellen og prøv å variere *a* og *b* slik at modellen stemmer så godt som mulig med dataene.\n", + "- Diskuter om modellen kan si noe mer generelt om smittespredning enn akkurat dette tilfellet.\n", + "\n", + "### Ekstra: Oppgave 4\n", + "Vaksiner kan redusere antall mottakelige betraktelig.\n", + "- Hvordan kan du utvide modellen slik at den tar hensyn til vaksinering?\n", + "- Lag et program der du utforsker effekten av ulike grader av vaksinasjon (i %).\n", + "\n", + "### Rapport\n", + "Skriv en rapport i Jupyter notebook der du redegjør gradvis for de ulike modellene dine. Lag også en konklusjon." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "celltoolbar": "Edit Metadata", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/ekstra/plotting_data.ipynb b/_sources/docs/ekstra/plotting_data.ipynb new file mode 100644 index 00000000..0b9aeabb --- /dev/null +++ b/_sources/docs/ekstra/plotting_data.ipynb @@ -0,0 +1,226 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Plotting og behandling av eksperimentelle data\n", + "En viktig del av kjemi som et eksperimentelt fag er å kunne representere og\n", + "behandle data på en hensiktsmessig måte.\n", + "\n", + "```{admonition} Læringsutbytte\n", + "Etter å ha arbeidet med denne delen av emnet, skal du kunne:\n", + "1. Plotte funksjoner.\n", + "2. Plotte data fra lister/arrayer.\n", + "3. Lese filer med *read* og *loadtxt*.\n", + "4. Utføre interpolasjon og regresjon. Vurdere når dette kan være nyttig.\n", + "5. Bruke ferdiglagde og lage egne statistikkmoduler.\n", + "```\n", + "\n", + "## Plotting av funksjoner\n", + "I videoen nedenfor vises plotting av funksjoner i Python. Legg merke til at kortversjonen *from pylab import ** brukes her. Du bør bruke *import matplotlib.pyplot as plt* og *import numpy as np*." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "tags": [ + "remove-input" + ] + }, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import HTML\n", + "# Youtube\n", + "HTML('')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Når du har sett videoen, kan du gjøre følgende oppgave for å sjekke om du forstår innholdet:\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Plott funksjonen $f(x) = e^{x} - 2$ for $x \\in [0,5]$. Bruk matplotlib og numpy.\n", + "```\n", + "\n", + "## Lesing av fildata" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "tags": [ + "remove-input" + ] + }, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import HTML\n", + "# Youtube\n", + "HTML('')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Les fila titrering.txt og plott titrerkurven. Bruk egnede aksetitler og pynt plottet.\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n", + "\n", + "## Interpolasjon" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "tags": [ + "remove-input" + ] + }, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import HTML\n", + "# Youtube\n", + "HTML('')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Bruk koderuta ovenfor og interpoler titreringsdataene over hele definisjonsområdet.\n", + "```\n", + "\n", + "## Regresjon" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": { + "tags": [ + "remove-input" + ] + }, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import HTML\n", + "# Youtube\n", + "HTML('')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "tags": [ + "remove-input" + ] + }, + "source": [ + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Prøv å gjøre regresjon av 1., 2., 3. og 4. grad av listedataene i progammet nedenfor:\n", + "```\n", + "\n", + "" + ] + } + ], + "metadata": { + "celltoolbar": "Edit Metadata", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/ekstra/plotting_filmer.ipynb b/_sources/docs/ekstra/plotting_filmer.ipynb new file mode 100644 index 00000000..d83e7f2f --- /dev/null +++ b/_sources/docs/ekstra/plotting_filmer.ipynb @@ -0,0 +1,92 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Plotting (teori)\n", + "\n", + "```{admonition} Læringsutbytte\n", + "Etter å ha arbeidet med dette temaet, skal du kunne:\n", + "1. Bruke matplotlib-biblioteket og seaborn-biblioteket til plotting.\n", + "2. Plotte datapunkter og funksjoner.\n", + "3. Lage og tolke ulike visualiseringer.\n", + "```\n", + "\n", + "## Plotting med matplotlib" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "tags": [ + "remove-input" + ] + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import IFrame\n", + "IFrame(\"https://www.youtube.com/embed/71SeDOstEwY? autoplay=0&rel=0\", width=800, height=600)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Når du har sett videoen, kan du gjøre følgende oppgave for å sjekke om du forstår innholdet:\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Plott $f(x) = cos(x) - 1$ med $x \\in [0,8]$. Pynt plottet.\n", + "```\n", + "\n", + "" + ] + } + ], + "metadata": { + "celltoolbar": "Edit Metadata", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/ekstra/repetisjon.ipynb b/_sources/docs/ekstra/repetisjon.ipynb new file mode 100644 index 00000000..43e41118 --- /dev/null +++ b/_sources/docs/ekstra/repetisjon.ipynb @@ -0,0 +1,39 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Repetisjon" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/ekstra/tema1.ipynb b/_sources/docs/ekstra/tema1.ipynb new file mode 100644 index 00000000..2577d7a6 --- /dev/null +++ b/_sources/docs/ekstra/tema1.ipynb @@ -0,0 +1,129 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Tema 1: Tall og variabler" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Summen er: 9.14\n" + ] + } + ], + "source": [ + "# Variabeltyper\n", + "heltall = 4 # Kommentar\n", + "flyttall = 2.2\n", + "streng = \"Hei på deg!\"\n", + "\n", + "# Output\n", + "a = 2\n", + "pi = 3.14\n", + "summen = heltall + a + pi\n", + "\n", + "print(\"Summen er:\", summen)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Input" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Masse:2\n", + "Energien til et legeme med masse 2.0 kg er 1.8e+17 J.\n" + ] + } + ], + "source": [ + "#m = 0.2 # masse i kg\n", + "c = 3E8 # lyshastighet i vakuum i m/s\n", + "m = input(\"Masse:\")\n", + "m = float(m) # Kan gjøres i linja over, men denne metoden er kanskje mer oversiktlig\n", + "E = m*c**2\n", + "\n", + "print(\"Energien til et legeme med masse\",\n", + " m,\"kg er\",E, \"J.\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Matematiske biblioteker" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[H3O+] i mol/L: 0.1\n", + "pH-en i løsninga er: 1.0\n" + ] + } + ], + "source": [ + "from pylab import *\n", + "\n", + "oksonium = input(\"[H3O+] i mol/L: \") # mol/L\n", + "oksonium = float(oksonium)\n", + "pH = -log10(oksonium)\n", + "\n", + "print(\"pH-en i løsninga er:\", round(pH,2))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.7" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/ekstra/tema10.ipynb b/_sources/docs/ekstra/tema10.ipynb new file mode 100644 index 00000000..42fc2707 --- /dev/null +++ b/_sources/docs/ekstra/tema10.ipynb @@ -0,0 +1,299 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Tema 10: Derivasjon og integrasjon" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Derivasjon\n", + "\n", + "#### 1. Derivasjon av funksjoner:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "For dx lik 0.1 er feilen 0.10000000000000187\n", + "For dx lik 0.01 er feilen 0.010000000000000675\n", + "For dx lik 0.001 er feilen 0.0009999999996974651\n", + "For dx lik 0.0001 er feilen 9.999999917198465e-05\n", + "For dx lik 1e-05 er feilen 1.0000013929811757e-05\n", + "For dx lik 1e-06 er feilen 9.999243673064484e-07\n", + "For dx lik 1e-07 er feilen 1.0108780656992167e-07\n", + "For dx lik 1e-08 er feilen 1.21549419418443e-08\n", + "For dx lik 1e-09 er feilen 1.6548074199818075e-07\n", + "For dx lik 1e-10 er feilen 1.6548074199818075e-07\n", + "For dx lik 1e-11 er feilen 1.6548074199818075e-07\n", + "For dx lik 1e-12 er feilen 0.00017780116468202323\n", + "For dx lik 1e-13 er feilen 0.0015985556747182272\n", + "For dx lik 1e-14 er feilen 0.0015985556747182272\n", + "For dx lik 1e-15 er feilen 0.22044604925031308\n", + "For dx lik 1e-16 er feilen 2.0\n" + ] + } + ], + "source": [ + "def f(x):\n", + " return x**2\n", + "\n", + "def derivert(f, x, dx):\n", + " fder = (f(x + dx) - f(x))/dx\n", + " return fder\n", + "\n", + "x = 1\n", + "analytisk = 2\n", + "for i in range(1, 17):\n", + " dx = 10**(-i)\n", + " numerisk = derivert(f,x,dx)\n", + " print(f\"For dx lik {dx} er feilen {abs(numerisk-analytisk)}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 2. Derivasjon av diskrete data (punkter)\n", + "\n", + "[Puslespill](http://parsons.problemsolving.io/puzzle/ced223639e5d45a5a22bbfc1ee521478)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ 0. -0.41530332 -1.27245747 -2.10837905 -2.89006706\n", + " -3.79347005 -4.52289161 -5.27799927 -6.08854176 -6.94216878\n", + " -7.86617154 -8.66880686 -9.53207626 -10.30728764 -11.17164433\n", + " -11.97476839 -12.62386432 -13.38963929 -14.14735903 -15.07900081\n", + " -15.69402869 -15.95216465 -16.02847067 -16.13767422 -16.22191004]\n" + ] + }, + { + "data": { + "text/plain": [ + "25" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from pylab import *\n", + "\n", + "data = loadtxt(\"datafiler/heistur.csv\", skiprows = 1, delimiter = \",\")\n", + "tid = data[:,0]\n", + "posisjon = data[:,2]\n", + "\n", + "plot(tid,posisjon)\n", + "show()\n", + "print(posisjon)\n", + "len(posisjon)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "fart = []\n", + "for i in range(len(tid)-1):\n", + " dy = posisjon[i+1] - posisjon[i]\n", + " dx = tid[i+1] - tid[i]\n", + " der = dy/dx\n", + " fart.append(der)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plot(tid[:-1], fart)\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Integrasjon\n", + "\n", + "### 1. Rektangelmetoden" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Integralet av f(x) mellom 1 og 4 er: 12.0\n", + "Integralet av f(x) mellom 1 og 4 er 12.0.\n" + ] + } + ], + "source": [ + "def f(x):\n", + " return x + 2\n", + "\n", + "a = 1 # x_0 = 1\n", + "b = 4 # x_N = 4\n", + "\n", + "# Hva er integralet av f(x) mellom 1 og 4?\n", + "\n", + "A = 0\n", + "N = 3\n", + "dx = (b - a)/N # dx = (4-1)/3 = 1\n", + "\n", + "for i in range(N):\n", + " A = A + f(a + i*dx)*dx\n", + "\n", + "print(\"Integralet av f(x) mellom\", a, \"og\", b, \"er:\", A)\n", + "print(f\"Integralet av f(x) mellom {a} og {b} er {A}.\")\n", + "\n", + "# Lag en funksjon: def rektangelmetoden(...)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "13.5\n" + ] + } + ], + "source": [ + "def f(x):\n", + " return x + 2\n", + "\n", + "def trapesmetoden(f, a, b, N):\n", + " dx = (b-a)/N\n", + " A = (f(a) + f(b))/2\n", + " for i in range(1,N):\n", + " A = A + f(a + i*dx)\n", + " return A*dx\n", + "\n", + "itsatrap = trapesmetoden(f, 1, 4, 1)\n", + "print(itsatrap)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "13.5\n", + "13.500000000000002\n", + "(13.5, 1.4988010832439613e-13)\n" + ] + } + ], + "source": [ + "from scipy.integrate import simps, trapz, quad\n", + "from scipy.misc import derivative\n", + "from pylab import *\n", + "\n", + "def f(x):\n", + " return x + 2\n", + "\n", + "x = linspace(1,4,100000)\n", + "y = f(x)\n", + "\n", + "simpson = simps(y,x)\n", + "trapes = trapz(y,x)\n", + "kvadd = quad(f, 1, 4)\n", + "der = derivative(f, 1)\n", + "\n", + "print(simpson)\n", + "print(trapes)\n", + "print(kvadd)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/ekstra/tema11.ipynb b/_sources/docs/ekstra/tema11.ipynb new file mode 100644 index 00000000..d6ad2e8f --- /dev/null +++ b/_sources/docs/ekstra/tema11.ipynb @@ -0,0 +1,70 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Tema 11: Numerisk løsing av likninger" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.0\n" + ] + } + ], + "source": [ + "def f(x):\n", + " return x - 1\n", + "\n", + "a = -5\n", + "b = 5\n", + "m = (a+b)/2\n", + "\n", + "while f(m) != 0:\n", + " if f(a)*f(m) < 0:\n", + " b = m\n", + " elif f(b)*f(m) < 0:\n", + " a = m\n", + " m = (a+b)/2\n", + " \n", + "print(m)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/ekstra/tema12.ipynb b/_sources/docs/ekstra/tema12.ipynb new file mode 100644 index 00000000..5c29c959 --- /dev/null +++ b/_sources/docs/ekstra/tema12.ipynb @@ -0,0 +1,166 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Tema 12: Differensiallikninger" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Newtons 2. lov\n", + "\n", + "Vi kan forstå sammenhengen mellom akselerasjon, fart og posisjon ved å bruke kinematikklikningene for konstant akselerasjon og forenkle ved å la akselerasjonen være konstant i et svært lite tidsrom dt. Eller vi kan formulere Newtons 2. lov som en differensiallikning og simulere bevegelsen ved Eulers metode. Vi skal se at dette er en ekvivalent framgangsmåte!" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Ballen treffer bakken etter 2.425710000007424 sekunder\n" + ] + } + ], + "source": [ + "# Startbetingelser og konstanter\n", + "v0 = 0 # startfart m/s\n", + "s0 = 20 # startposisjon m\n", + "t0 = 0 # starttid i s\n", + "dt = 1E-5 # tidssteg i s \n", + "\n", + "m = 1 # kg\n", + "g = 9.8 # tyngdeakselerasjon m/s^2\n", + "k = 0.5 # luftmotstandskoeffisienten\n", + "\n", + "v = v0\n", + "s = s0\n", + "t = t0\n", + "\n", + "while s >= 0:\n", + " a = -g - k*v/m # Modell utleda fra N2\n", + " v = v + a*dt # Eulers metode (men også kinematikklikning!)\n", + " s = s + v*dt # Eulers metode\n", + " t = t + dt\n", + " \n", + "print(\"Ballen treffer bakken etter\", t, \"sekunder\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Smittemodellering fortsettelse\n", + "\n", + "- Ga en diskret smittemodellering noen urealistiske resultater?\n", + "- La oss se på en kontinuerlig modell der vi modellerer smitten ved hjelp av differensiallikninger.\n", + "\n", + "$$S'(t) = -aS(t)\\cdot I(t)$$\n", + "$$I'(t) = aS(t)\\cdot I(t) - bI(t)$$\n", + "$$R'(t) = -bI(t)$$" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "from pylab import *\n", + "\n", + "# Konstanter og startbetingelser\n", + "N = 100000 # Antall mennesker\n", + "I0 = 15 # Antall smittede ved t0\n", + "S0 = (N - I0)*0.5 # Antall disponerte ved t0\n", + "R0 = 0 # Antall friskmeldte ved t0\n", + "a = 0.122/N*10\n", + "b = 0.1\n", + "\n", + "I = I0\n", + "S = S0\n", + "R = R0\n", + "\n", + "# Tidsparametre\n", + "dt = 1E-2\n", + "t0 = 0\n", + "t = 0\n", + "tid_slutt = 100 # dager\n", + "\n", + "# Lister\n", + "smittede = [I0]\n", + "mottakelige = [S0]\n", + "friske = [R0]\n", + "tid = [t0]\n", + "\n", + "# Simuleringsløkke\n", + "while t <= tid_slutt:\n", + " Sder = -a*S*I\n", + " Ider = a*S*I - b*I\n", + " Rder = b*I\n", + " # Eulers metode\n", + " S = S + Sder*dt\n", + " I = I + Ider*dt\n", + " R = R + Rder*dt\n", + " t = t + dt\n", + " smittede.append(I)\n", + " mottakelige.append(S)\n", + " friske.append(R)\n", + " tid.append(t)\n", + " \n", + "plot(tid, smittede, label=\"Smittede\")\n", + "plot(tid, mottakelige, label=\"Mottakelige\")\n", + "plot(tid, friske, label=\"Friskmeldte\")\n", + "legend()\n", + "show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/ekstra/tema2.ipynb b/_sources/docs/ekstra/tema2.ipynb new file mode 100644 index 00000000..72b0c6f5 --- /dev/null +++ b/_sources/docs/ekstra/tema2.ipynb @@ -0,0 +1,89 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Tema 2: Beslutninger" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tall: 5\n", + "Tallet er positivt.\n" + ] + } + ], + "source": [ + "tall = float(input(\"Tall: \"))\n", + "\n", + "if tall < 0:\n", + " print(\"Tallet er negativt.\")\n", + "elif tall > 0:\n", + " print(\"Tallet er positivt.\")\n", + "elif tall == 0:\n", + " print(\"Tallet er null!\")" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[H3O+] i mol/L: 0.1\n", + "pH-en i løsninga er: 1.0\n", + "Løsninga er sur\n" + ] + } + ], + "source": [ + "from pylab import *\n", + "\n", + "oksonium = input(\"[H3O+] i mol/L: \") # mol/L\n", + "oksonium = float(oksonium)\n", + "pH = -log10(oksonium)\n", + "\n", + "print(\"pH-en i løsninga er:\", round(pH,2))\n", + "\n", + "if pH > 7:\n", + " print(\"Løsninga er basisk\")\n", + "elif pH < 7:\n", + " print(\"Løsninga er sur\")\n", + "else:\n", + " print(\"Løsninga er nøytral.\")\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/ekstra/tema3.ipynb b/_sources/docs/ekstra/tema3.ipynb new file mode 100644 index 00000000..8ce08786 --- /dev/null +++ b/_sources/docs/ekstra/tema3.ipynb @@ -0,0 +1,184 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Tema 3: Løkker" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Du er kul!\n", + "Du er kul!\n", + "Du er kul!\n", + "Du er kul!\n", + "Du er kul!\n" + ] + } + ], + "source": [ + "from time import sleep\n", + "\n", + "for i in range(5):\n", + " print(\"Du er kul!\")\n", + " sleep(1)\n", + "\n", + "# Time-funksjonen er ikke nødvendig her! Det er bare for å få en pause mellom hver utskrift." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "2\n", + "4\n", + "6\n", + "8\n", + "10\n", + "12\n", + "14\n", + "16\n", + "18\n", + "20\n", + "22\n", + "24\n", + "26\n", + "28\n", + "30\n", + "32\n", + "34\n", + "36\n", + "38\n", + "40\n", + "42\n", + "44\n", + "46\n", + "48\n", + "50\n", + "52\n", + "54\n", + "56\n", + "58\n", + "60\n", + "62\n", + "64\n", + "66\n", + "68\n", + "70\n", + "72\n", + "74\n", + "76\n", + "78\n", + "80\n", + "82\n", + "84\n", + "86\n", + "88\n", + "90\n", + "92\n", + "94\n", + "96\n", + "98\n", + "100\n", + "102\n" + ] + } + ], + "source": [ + "partall = 0\n", + "\n", + "while partall <= 102:\n", + " print(partall)\n", + " partall = partall + 2" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Feilen er: 0\n" + ] + } + ], + "source": [ + "from math import factorial\n", + "\n", + "fakultet = 1\n", + "\n", + "for i in range(2,43):\n", + " fakultet = fakultet*i\n", + "\n", + "print('Feilen er:', fakultet-factorial(42))" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.6439335666815615\n" + ] + } + ], + "source": [ + "summen = 0\n", + "\n", + "for i in range(1,1000):\n", + " tall = 1/i**2\n", + " summen = summen + tall\n", + "print(summen)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.7" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/ekstra/tema4.ipynb b/_sources/docs/ekstra/tema4.ipynb new file mode 100644 index 00000000..e50af0cd --- /dev/null +++ b/_sources/docs/ekstra/tema4.ipynb @@ -0,0 +1,127 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Tema 4: Funksjoner" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1 2.25\n" + ] + } + ], + "source": [ + "def f(x):\n", + " return x**2\n", + "\n", + "def G(t):\n", + " return t + 1/4\n", + "\n", + "print(f(1), G(2))" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "from pylab import *\n", + "\n", + "funksjonsverdier = []\n", + "tid = []\n", + "\n", + "def g(t):\n", + " return sqrt(t) + 2*log10(t)\n", + "\n", + "for t in range(1,100):\n", + " funksjonsverdier.append(g(t))\n", + " tid.append(t)\n", + " \n", + "plot(tid,funksjonsverdier)\n", + "show()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Gratulerer med dagen, Jesper\n", + "Gratulerer med dagen, Jesper\n", + "Gratulerer med dagen, Jesper\n", + "Gratulerer med dagen, Jesper\n", + "Gratulerer med dagen, Jesper\n", + "Gratulerer med dagen, Jesper\n", + "Gratulerer med dagen, Jesper\n", + "Gratulerer med dagen, Jesper\n", + "Gratulerer med dagen, Jesper\n", + "Gratulerer med dagen, Jesper\n" + ] + } + ], + "source": [ + "def gratulerer(navn):\n", + " for i in range(10):\n", + " print(\"Gratulerer med dagen,\",navn)\n", + "\n", + "gratulerer('Jesper')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/ekstra/tema5.ipynb b/_sources/docs/ekstra/tema5.ipynb new file mode 100644 index 00000000..3e4fdded --- /dev/null +++ b/_sources/docs/ekstra/tema5.ipynb @@ -0,0 +1,238 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Tema 5: Datasamlinger og plotting" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Lister" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['katt', 'hund', 'axolotl', 'koala', 'gorilla', 'stumpneseape', 'nebbdyr']\n", + "['hund', 'axolotl', 'koala', 'gorilla', 'stumpneseape', 'nebbdyr']\n", + "['hund', 'axolotl', 'koala', 'gorilla', 'stumpneseape', 'nebbdyr', 'bever']\n" + ] + } + ], + "source": [ + "dyr = ['katt', 'hund', 'axolotl', 'koala', 'gorilla', 'stumpneseape', 'nebbdyr']\n", + "print(dyr)\n", + "dyr.remove('katt')\n", + "print(dyr)\n", + "dyr.append('bever')\n", + "print(dyr)" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "from pylab import *\n", + "\n", + "def f(x):\n", + " return x**2 - 2\n", + "\n", + "x = []\n", + "i = -3\n", + "while i < 4:\n", + " x.append(i)\n", + " i = i + 1\n", + "x = array(x)\n", + "\n", + "plot(x,f(x),linestyle='--',marker='o')\n", + "show()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXIAAAD4CAYAAADxeG0DAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/d3fzzAAAACXBIWXMAAAsTAAALEwEAmpwYAAAm3UlEQVR4nO3dd3iUVd7/8fdJrySkQHqBYOi9F8WOilgWFUWFtaDu6rr67Kq/ZXV1dZt1d31sqFiwAIpil7L0Tug1IZUkQBISUkiYJJM5vz/AfRARSDLJmXvm+7quXBcJcN+fAfx4cs8pSmuNEEII6/IyHUAIIUTrSJELIYTFSZELIYTFSZELIYTFSZELIYTF+Zi4aVRUlE5JSTFxayGEsKxNmzYd1lpHn/p1I0WekpJCRkaGiVsLIYRlKaUKTvd1ebQihBAWJ0UuhBAWJ0UuhBAWJ0UuhBAWJ0UuhBAWJ0UuhBAWJ0UuhBAWZ6kiX7mvjFeWZpuOIYQQzVbXYOepr3ZRUF7r9GtbqshX7TvMi4uyKK2xmY4ihBDN8s32g7yzOp/SmnqnX9tSRX7jkESaHJpPNxWZjiKEEM0yN6OQLlHBDE7u6PRrW6rIu0aHMDQ1gjkbC5GTjYQQVpFTdpSN+Ue4YXAiSimnX99SRQ4waUgiBeV1rM0tNx1FCCHOyZyNhfh4KX4xKL5Nrm+5Ir+yTywdAnyYs7HQdBQhhDirBruDeZuKuKRHZzqFBrTJPSxX5AG+3lw3IJ7vdh6isq7BdBwhhDijRbtLKK9tYNLQxDa7h+WKHOCmIUk02B18trnYdBQhhDij2Rv3Ex8eyJhuP9lG3GksWeQ94zrQLyFM3vQUQri0/eV1rNx3mBsHJ+Lt5fw3OX9gySKH46PyzJIathRWmo4ihBCnNSdjP14KbhyS0Kb3sWyRT+gfR5CfN3M2yJueQgjXY29y8ElGEWPTOxEbFtim97JskYf4+zC+byxfbT/A0Xq76ThCCPEjS/aWUlpTz6Qhbfcm5w8sW+QAk4YmUdfQxFfbDpiOIoQQPzJ7YyGdQv25qHunNr+XpYt8QGI46Z1Dmb1hv+koQgjxXwerjrEss5QbBifg4932NWvpIldKcdOQRLYVVbH7QLXpOEIIAcDcjUU4NNw0OKld7mfpIge4fmA8fj5ezNkoo3IhhHlNDs3cjEJGp0WRFBnULve0fJGHB/kxrlcMn28pxtbYZDqOEMLDrdxXRnHlsTZdyXkqyxc5wC3Dkqi22eVNTyGEcbM3FBIR7MelPTu32z3dosiHpUaQ1imED9bL4xUhhDml1TYW7ynhFwPj8ffxbrf7ukWRK6WYPCyJbYWV7CyuMh1HCOGhZm8sxO7QTB6W3K73dUqRK6XClVKfKqX2KqX2KKVGOOO6zXH9wAQCfb35cH1Be99aCCGwNzn4aP1+xnSLIiUquF3v7awR+b+A77XW3YF+wB4nXfechQX6MqFfHPO3HKDa1tjetxdCeLj/7C3lULWNW4e372gcnFDkSqkOwPnA2wBa6watdWVrr9sSk4cncayxic9le1shRDv7YF0BsWEBXNwOKzlP5YwReRegDHhHKbVFKfWWUuon31copaYppTKUUhllZWVOuO1P9U0Ip29CGB+uL5DtbYUQ7Sb/cC0r9x1m0pCkdlnJeSpn3NEHGAi8prUeANQCj536i7TWM7TWg7XWg6Oj226D9VuHJZNVcvygUyGEaA8fbdiPj5dq17njJ3NGkRcBRVrr9Sc+/5TjxW7E1f3iCA3w4YN18qanEKLt2RqbmJtRyGW9OtO5Q9ucyXk2rS5yrfUhoFAplX7iSxcDu1t73ZYK9PPmFwMT+G7nQQ4frTcVQwjhIb7ZfpDKukZubecphydz1sOcB4APlVLbgf7AX5103Ra5dXgSjU2aTzKKTMYQQniAD9YX0CU6mBFdI41lcEqRa623nnj+3Vdrfa3W2ugD6rROoQzvEsFHGwpwOORNTyFE29h1oIot+yuZPCwZpdruTM6zcYuVnadz6/BkCiuOsXxf28yQEUKID9btJ8DXi4kD2/ZMzrNx2yK/rGcMUSH+fChvegoh2kC1rZEvthYzoV8cYUG+RrO4bZH7+XgxaUgi/9lbSmFFnek4Qgg38/nmYuoamoys5DyV2xY5HF/p6aUUs2RULoRwIq01s9YV0DchjL4J4abjuHeRx4YFMq53DLM37KeuwW46jhDCTazOLie79ChTRqSYjgK4eZEDTB2ZQrXNzvwtcuiEEMI53l2TR1SIH+P7xZqOAnhAkQ9O7kjP2A68tyZf9l8RQrTa/vI6/rO3lFuGJrXr4RFn4vZFrpRi6sgUMktqWJdbYTqOEMLi3l+bj7dSTHaBNzl/4PZFDjChfxwdg3x5b02+6ShCCAurrbczJ6OQK/rEGttX5XQ8osgDfL25aUgSC3cforjymOk4QgiL+nxLMTU2O1NHus5oHDykyOH4/isAs9bKVEQhRPNprXlvTT594sMYmNTRdJwf8ZgiT+gYxKU9OzN7435sjU2m4wghLGZNTjn7So8ydWSK0X1VTsdjihxg6shUKusa+XKrTEUUQjTPO6vziQx2nSmHJ/OoIh/eJYL0zqG8K1MRhRDNUFhRx3/2lnDLMNeZcngyjypypRRTRqaw+2A1GQVyFJwQ4tz8d8qhwcMjzsSjihzg2gFxdAjw4Z3VeaajCCEsoK7BzpyNhYzrHUNMmOtMOTyZxxV5kJ8PtwxL5vudh2RXRCHEWX22uZhqm51fjkoxHeVneVyRA0wZmYyXUrwrC4SEEGfgcGhmrs5zySmHJ/PIIo8NC2R831jmbCyk2tZoOo4QwkUtyyolt6yWu8akutyUw5N5ZJED3Dm6C0fr7czdWGg6ihDCRb25Io+4sACu7ON6Uw5P5rFF3ichjGGpEbyzOh97k8N0HCGEi9lZXMXa3HKmjkrB19u1q9K107Wxu8Z0objyGN/vOmQ6ihDCxcxclUew3/F9mlydRxf5xd07kRIZxJsr82SBkBDivw5V2fhy2wFuGpJEWKDZg5XPhUcXuZeX4o7RqWwrrGTzflkgJIQ47r21+Ti0dukphyfz6CIHmDgogbBAX95aKQuEhBDH9xz/cF0B43rHkBgRZDrOOfH4Ij++QCiJBbtkgZAQAj7dVES1zc5dY7qYjnLOPL7IAaaMSMFLKd5ZnW86ihDCoKYTC4AGJoW79AKgU0mRAzFhAVzdL445G/fLAiEhPNii3SUUlNdZajQOUuT/defoVGobmvh4/X7TUYQQhry9KpfEiEAu7xVjOkqzSJGf0Ds+jFFpkby9Ko96u5wgJISn2VRwhI35R/jlyFS8vVx3Of7pSJGf5N4LulJaU8/8LcWmowgh2tnry3MID/Jl0tBE01GaTYr8JKPTougV14E3VuTicMgCISE8RXZpDYt2l3D7iBSC/HxMx2k2KfKTKKW494Ku5JbVsnB3iek4Qoh28vryXAJ8vZg6MsV0lBaRIj/FFb1jSIoI4rXlObJsXwgPcKDyGF9sLWbSkCQigv1Mx2kRKfJT+Hh7cff5XdhWWMm63ArTcYQQbeztVXk49PGZa1bltCJXSnkrpbYopb521jVNuWFQAlEhfry+PMd0FCFEG6qsa+DjDfuZ0C/OMsvxT8eZI/IHgT1OvJ4xAb7eTB2ZwvKsMnYfqDYdRwjRRmatLaCuoYl7LrDWAqBTOaXIlVIJwFXAW864niu4bXgKwX7evLFCRuVCuKNjDU28syafC9Oj6R7TwXScVnHWiPyfwCPAzx61o5SappTKUEpllJWVOem2bScsyJebhybx9faDspmWEG7ok02FVNQ2cN/YNNNRWq3VRa6UGg+Uaq03nenXaa1naK0Ha60HR0dHt/a27eLOMal4KXhrZa7pKEIIJ7I3OZixIpeBSeEMSbHO5lg/xxkj8lHABKVUPjAbuEgp9YETrmtcbFgg1/aPZ/bGQspq6k3HEUI4yTc7DlJ05Bj3XtAVpay1HP90Wl3kWuv/p7VO0FqnAJOAJVrrW1udzEXcN7YrjU0O3lolo3Ih3IHDoXllaTbdOoVwSY/OpuM4hcwjP4su0SGM7xvHrLUFHKltMB1HCNFKC3YdIqvkKPdflIaXxTbH+jlOLXKt9TKt9XhnXtMV3H9RGnUNTbyzWo6DE8LKtNa8vCSb1KhgxveNMx3HaWREfg7O6xzKuF4xvLMmXw6eEMLCluwtZffBan41tqvltqo9Eynyc3T/RWnU2Oy8vybfdBQhRAtorfn3kmwSOgZy7YB403GcSor8HPWOD+Oi7p14e1UetfV203GEEM20ct9hthVWct/Yrvh6u1f1uderaWP3X5TGkbpGPlxfYDqKEKKZ/ndJNrFhAUwclGA6itNJkTfDwKSOjE6LYsaKPGyNchycEFaxLrecDfkV3HN+F/x9vE3HcTop8mZ64KI0Dh+tZ87GQtNRhBDn6OUl+4gK8WfS0CTTUdqEFHkzDesSydCUCF5fniOHNAthAZsKjrA6u5xp56cS4Ot+o3GQIm+RBy5O42CVjU8yikxHEUKcxctL9tExyJfJw5JNR2kzUuQtMDotikHJHXllabaMyoVwYVv2H2FZZhl3jelCsL/1DlU+V1LkLaCU4uFLz+NglY3ZG+RZuRCu6qXFx0fjUyx6qPK5kiJvoZFdIxmaGsErS7NlBosQLigjv4IVWWXce0FXQtx4NA5S5C32w6i8tKaeD9bJvHIhXM2Li7KICvHjthHu+2z8B1LkrTC8SySj0iJ5fXkOdQ2y2lMIV7E2p5w1OeXcNzaNID/3Ho2DFHmrPXzpeRw+2sD7a2VULoQr0Frz0qIsOnfwZ/Iw95w3fiop8lYalBzBBedF88byHI7KHixCGLcq+zAb8iv49YVpbjtv/FRS5E7w0KXncaSukXdlv3IhjNJa88LCLOLCArhpSKLpOO1GitwJ+ieGc3H3TsxYkSv7lQth0LLMMrYWVvLAxd3cck+VnyNF7iQPXXoe1TY7b6+UUbkQJmiteXFRFokRgW65w+GZSJE7Se/4MC7v1Zm3V+VRIWd7CtHuFuw6xI7iKn5zUTe322/8bDzr1bax312WTl2DnVeWZpuOIoRHsTc5eHZBJmmdQrjOzU7/ORdS5E7UrXMovxiYwKy1BRQdqTMdRwiP8emmInLLavn95en4eNhoHKTIne6hS88DBS8t2mc6ihAewdbYxD8X72NgUjiX9exsOo4RUuROFhceyJQRyXy2pYjMQzWm4wjh9t5dk8+hahuPjuuOUsp0HCOkyNvAr8amEeLnw3MLMk1HEcKtVdU18urSbMamRzOsS6TpOMZIkbeBjsF+3HNBFxbvKSEjv8J0HCHc1usrcqipt/PI5d1NRzFKiryN3DE6lehQf/7x/V601qbjCOF2SqptvLM6j2v6xdEzroPpOEZJkbeRID8ffnNxNzbmH2FpZqnpOEK4nX8u3keTQ/PwpemmoxgnRd6GJg1JJDkyiGe/z6TJIaNyIZwlp+woczMKuWVoEkmRQabjGCdF3oZ8vb343WXp7D1Uw7xNclCzEM7y9+/2EuDjxf0XdTMdxSVIkbex8X1jGZAUznMLM6mVbW6FaLW1OeUs2l3Cry5MIzrU33QclyBF3saUUvzxqp6U1dTzxopc03GEsDSHQ/PMN7uJDw/kztGppuO4DCnydjAouSNX9Y1lxoocDlYdMx1HCMv6bEsxuw5U88i4dI85NOJcSJG3k8fGdcfhgOcXZJmOIoQl1TXYeX5BJv0Swri6b5zpOC5FirydJEYE8ctRKczbXMTO4irTcYSwnDdX5HGo2sYfx/fEy8szl+L/HCnydvSrC9OICPbjmW92yyIhIZqhpNrG68tzuKJ3DENSIkzHcTmtLnKlVKJSaqlSao9SapdS6kFnBHNHYYG+/PaSbqzLrWDR7hLTcYSwjBcWZmJ3OHjsCs9eiv9znDEitwP/o7XuAQwHfq2U6umE67qlm4cm0TU6mL99t5cGu8N0HCFc3u4D1XyyqYipI1NIjgw2HccltbrItdYHtdabT/y4BtgDeN4RHefI19uL6Vf1IO9wLe+vzTcdRwiXprXmqa92ER7oy/0XyuKfn+PUZ+RKqRRgALD+ND83TSmVoZTKKCsrc+ZtLefC9E6MTY/mn4v3UVpjMx1HCJf19faDrM+r4HeXpxMW5Gs6jstyWpErpUKAecBvtdbVp/681nqG1nqw1npwdHS0s25rSUopnhjfk3p7E//4TvYsF+J06hrs/PXbPfSK68CkIUmm47g0pxS5UsqX4yX+odb6M2dc0911iQ7hztFdmLe5iE0FR0zHEcLlvLo0h4NVNp6a0AtvmW54Rs6YtaKAt4E9WusXWx/JczxwURqdO/jz5Je7ZHdEIU5SUF7LjBW5XDcgnsEy3fCsnDEiHwXcBlyklNp64uNKJ1zX7QX7+/CHK3uwo7iKuRmFpuMI4TKe/noPvt5KphueI2fMWlmltVZa675a6/4nPr51RjhPMKFfHENTInhuQSZVdY2m4whh3LLMUhbvKeGBi7vRuUOA6TiWICs7DVNK8eSEXlTWNfDiInnjU3i2BruDP3+1my5RwdwxSnY3PFdS5C6gZ1wHJg9LZta6AnYf+MmEHyE8xlurcsk9XMvjV/fEz0fq6VzJn5SL+J/LziM8yI/p83fgkDc+hQcqrKjj3//Zx7heMVyY3sl0HEuRIncR4UF+TL+yB1v2V/Lxxv2m4wjRrrTWPPHFTryV4k8TZIeP5pIidyHXD4xnRJdI/vHdXspq6k3HEaLdfLfzEEszy3j4snRiwwJNx7EcKXIXopTimet6Y2t08Mw3u03HEaJd1NgaeeqrXfSK68CUEcmm41iSFLmL6Rodwr1ju/LF1gOs3OfZe9IIz/DCwixKa+r5y3V98PGWSmoJ+VNzQb8a25XUqGAen78TW2OT6ThCtJkdRVW8vzafW4cl0z8x3HQcy5Iid0EBvt48fU1v8svreHVptuk4QrSJJodm+vwdRIb48/tx6abjWJoUuYsa3S2Ka/vH8dryHPaV1JiOI4TTvbM6j+1FVTw+vicdAmSL2taQIndhfxzfk2B/Hx6Zt1021RJupaC8lucXZnJx905c3TfWdBzLkyJ3YVEh/jx5dS+27K/k3TX5puMI4RRaax6btwNfLy/+cl0fjm+gKlpDitzFXdM/jou6d+K5BXspKK81HUeIVvt4QyFrc8v5w1U9iAmTTbGcQYrcxSml+Mt1vfH18uLRedtl+b6wtAOVx/jrt3sY2TWSSUMSTcdxG1LkFhAbFsj0q3qwLrdClu8Ly9JaM/3zHTQ5NH+/vq88UnEiKXKLuGlIIqPSIvnbt3sprjxmOo4QzTZ/azFLM8v43eXpJEUGmY7jVqTILUIpxd+v70uTQ/OHz3agtTxiEdZRWmPjqa92MzApnKkjU0zHcTtS5BaSGBHEo+PSWZ5VxpyNcjScsIYfZqnUNTTx7MS+cpByG5Ait5jbR6Qwsmskf/56t8xiEZYwZ2MhS/aW8ui47qR1CjUdxy1JkVuMl5fi+Rv64e2l+J+522ShkHBp+8vrePrr3YzsGskv5ZFKm5Eit6C48ECevqY3GQVHeGNFjuk4QpxWk0Pz8NyteCnFczf0w0seqbQZKXKLuqZ/HFf1ieWlRVnsOlBlOo4QP/HmylwyCo7w1DW9iA+XwyLakhS5RSmleOba3nQM8uOhOVtlu1vhUvYcrObFhVlc0TuG6wbEm47j9qTILaxjsB/PTuxLVslRnl+QaTqOEADYGpt4aM5WOgT6yl4q7USK3OLGpnfituHJvLUqjxVZcqKQMO9v3+5h76EanpvYl4hgP9NxPIIUuRuYflUP0juH8vDcrZTW2EzHER5s4a5DvLe2gDtHp3Jh906m43gMKXI3EODrzcu3DOBovZ2H52yTjbWEEQerjvHIvO30ju/AI3LiT7uSIncT53UO5cmre7Eq+zCvy5RE0c7sTQ4e/HgrjXYHL988EH8fb9ORPIoUuRu5aUgi4/vG8sLCLDYVVJiOIzzIy0uy2ZBfwdPX9iY1Kth0HI8jRe5GlFL89fo+xIUH8JuPt1JV12g6kvAA63PLeXnJPq4fEM/1AxNMx/FIUuRupkOALy/fPJCSahuPzNsmuySKNlVabeP+j7eQHBnMn6/tbTqOx5Iid0P9E8N57IruLNhVwpsrc03HEW6qscnB/R9tocbWyGu3DiTE38d0JI8lRe6m7hydypV9Yvj7d3tZk3PYdBzhhp79fi8b8iv4+/V96R7TwXQcjyZF7qaUUjw7sR+pUcE88NEWDlbJqULCeb7dcZA3V+Zx+4hkrpUl+MZJkbuxEH8f3rhtELbGJu77YDP1dtmPRbReTtlRHvl0O/0Tw5l+VQ/TcQROKnKl1DilVKZSKlsp9ZgzrimcI61TKM/d0I+thZU88/Ue03GExR2tt3PvrE34+Xjx6mSZL+4qWl3kSilv4BXgCqAncLNSqmdrryuc58o+sUw7vwuz1hXwSYYcESdaxuHQPDRnK7mHa3n55gHEyda0LsMZI/KhQLbWOldr3QDMBq5xwnWFEz1yeTqj0iKZ/vlOMvJlsZBovhcWZbJodwl/vKoHo9KiTMcRJ3FGkccDJw/zik587UeUUtOUUhlKqYyyMtmlr735eHvxyi0Die8YyD2zNlFYUWc6krCQL7YW88rSHCYNSWSqHNnmcpxR5KfbbPgnq1C01jO01oO11oOjo6OdcFvRXOFBfrw1ZTCNTQ7ufj+Do/V205GEBWwrrOSRT7czNCWCP1/TW/YXd0HOKPIiIPGkzxOAA064rmgDXaNDeGXyQPaVHuW3s7fKTonijEqqbUyblUFUiD+v3ToQPx+Z6OaKnPG3shHoppRKVUr5AZOAL51wXdFGxnSL5onxPVm8p4Rn5WQh8TPqGuzc/X4GNTY7b00ZTGSIv+lI4me0ek2t1tqulLofWAB4AzO11rtanUy0qdtHJLOvtIbXl+eQGBHI5GHJpiMJF2I/sfx+Z3EVM24bTI9YWbnpypyyOYLW+lvgW2dcS7QPpRRPXt2LA5U2Hp+/k06hAVzas7PpWMIFaK154stdLNlbyjPX9uYS+Xfh8uSBlwfz8fbif28ZQJ/4MB74eDObCo6YjiRcwKvLcvho/X7uG9uVW4fLd2pWIEXu4YL8fHh76hBiOgRw13sbySk7ajqSMOjzLUU8tyCTa/vH8fvL5Lg2q5AiF0SF+PPeHUPxUoopMzdQWi0HOHuipXtL+f0n2xnRJZJnJ/bDy0umGVqFFLkAIDkymJlTh1B+tIHbZ26gsq7BdCTRjtbllnPvB5voHhvKG7cPkmmGFiN/W+K/+iWGM+P2QeSW1TJl5gZqbHJUnCfYXlTJXe9lkBgRxPt3DKNDgK/pSKKZpMjFj4zpFs2rkwey60A1d76bwbEG2frWnWWV1HD7zA10DPblgzuHERHsZzqSaAEpcvETl/TszEs39SejoIJpszJkH3M3lXe4llvfWo+ftxcf3jmcmLAA05FEC0mRi9O6ul8cf/9FX1buO8yvP9wiZe5mcsuOMmnGWuwOzQd3DSMpMsh0JNEKUuTiZ904OJGnr+nF4j0l3DtrE7ZGKXN3kFN2lEkz1mFv0nx893DO6xxqOpJoJSlycUa3jUjhr9f1YWlmGXe/L8/MrS67tIZJM9bh0JqPpw0nPUZK3B1IkYuzumVYEs9O7Muq7MPc8e5G6hpk+1sryiqpYdKM9WiNjMTdjBS5OCc3Dk7kpRv7sz6vnCkzN1B1TKYmWsnm/Ue48Y21KAWzpw2nm5S4W5EiF+fs2gHx/PvmAWwtrOSmN9ZSIitALWF5VhmT31xPWKAv8+4dSVqnENORhJNJkYtmGd83jplTh1BYUcf1r66RvVlc3JfbDnDXextJiQrmk3tHyOwUNyVFLpptTLdoZk8bga2xiYmvrWHLftk10RW9uzqPB2dvYUBSR+bcM5xOoTJP3F1JkYsW6ZMQxrz7RhIa4Mstb65n0e4S05HECfYmB09+uYsnv9rNxd078/4dQ2XZvZuTIhctlhIVzLz7RtKtcwjTZmXw2rIctJYzQE2qsTVy1/sZvLsmnztHp/LGbYMI8PU2HUu0MSly0SrRof7MvWcE4/vG8Y/v9/Lw3G2ycMiQoiN1THxtLSv3HeYv1/Xm8fE98ZataD2CU456E54twNebf0/qz3mdQnhhURZ5h2uZcfsgeSbbjlZnH+aBj7fQ2OTg3V8OYUy3aNORRDuSEblwCqUUD1zcjdcmDyTzUA3j/72K9bnlpmO5Pa01ry7L5ra31xMZ7Mf8X4+SEvdAUuTCqa7oE8vnvx5JiL8PN7+5jleXZeNwyHPztlBta+SeWZt49vtMruwTy/xfj6JrtMwR90RS5MLpusd04Iv7R3Fln1ie/T6TO9/byJFaOXHImTYVHGH8v1exZG8pT4zvycs3DyDYX56UeiopctEmQgN8efnmATx9TS9WZ5cz7l8rWJ5VZjqW5dmbHPxr8T5ufGMtDq2ZPW04d4xORSl5U9OTSZGLNqOU4rYRKXz2q5F0CPBlyswNPD5/p2y61UKFFXVMmrGOlxZnMaFfHN8+OIbBKRGmYwkXIN+LiTbXOz6Mrx4YzXMLMnl7VR6rsg/z/A19GZQsJXQumhya99bk8/zCTLyV4l+T+nNN/3jTsYQLkRG5aBcBvt48Pr4nH909jAa7g4mvr+UPn++gqk52UTyTrJIafvHaGv789W6GpUbw/UPnS4mLn1AmVuINHjxYZ2RktPt9hWs4Wm/npUVZvLM6j4hgfx4f34MJ/eLkOe9JauvtvLYshzdW5BAa4Mufru4pf0YCpdQmrfXgn3xdilyYsrO4ij98voPtRVUM7xLBH6/qSe/4MNOxjHI4NPO3FvOP7/dSUl3P9QPimX5VDyJD/E1HEy5Aily4pCaH5qMN+3lpURYVtQ1cPyCe312eTlx4oOlo7S4jv4JnvtnD1sJK+iWE8cTVvRiU3NF0LOFCpMiFS6u2NfLq0hxmrs5DAbePSObu87t4xDL/bYWVvLAoixVZZXQK9efRcd25bkA8XrJPijiFFLmwhKIjdby4MIv5W4vx9fbi5qFJ3HNBF2LD3G+EvqmggteW5bB4Tykdg3y594Ku3D4ihUA/2a1QnJ4UubCU/MO1vLosm882F+OlFFf3i2PqyBT6JFj7GXqTQ7Nw1yHeXJnL5v2VhAX6cveYVKaOSiVEVmaKs5AiF5ZUWFHHjBW5zNtcRF1DEwOTwrl9RAqX94qx1Mj1QOUxPskoYm5GIcWVx0iKCOLO0ancMDiBID8pcHFupMiFpVXbGvk0o4hZ6wrIO1xLiL8P43rHcN2AeIZ3iXTJfberbY38Z08Jn285wMp9ZWgNo9OiuHV4Epf2jHHJzMK1SZELt+BwaNbllTN/SzHf7ThETb2dqBA/LkzvxMU9OjGmW7TRzaMOVB5j5b4yvt95iFXZh2ls0sSFBTBxUAI3DE4kMUIOPxYt1yZFrpR6DrgaaABygF9qrSvP9vukyIUz2BqbWLynhAW7SliWWUqNzY6ftxf9EsMYkhLBkNQIBiZ1JCywbc6r1Fqzv6KO7UVVrM8rZ012ObmHawFI6BjIlX1iGdc7hv4J4TIDRThFWxX5ZcASrbVdKfUPAK31o2f7fVLkwtkamxxk5B9haWYp6/Mq2FVchf3EPujx4YGkx4RyXudQukQFExseQGxYADFhgQT7eZ9xtWRjk4PKukbKa+sprDhGQXkt+yvqyC49ys7iKqptxzcAC/bzZliXSEZ2jWR0tyjSO4fKKkzhdD9X5K36HlRrvfCkT9cBE1tzPSFaytfbixFdIxnRNRKAugY7W/dXsqWwkqySGjIP1bByXxmNTT8euHh7KYL8vAnx9yHA15smh6bJoXFozdF6OzW2n+7UGOrvQ2p0MOP7xdEnPow+8WGkx4Ti6y1bFwkznPkw8Q5gzs/9pFJqGjANICkpyYm3FeKngvx8GJkWxci0qP9+rbHJwaEqGwcqj3Go2sbBKhs1tkZq65uorbdjszvwVuDlpfBWimB/HzoG+dEx2JeOQX4kdAwkOTKYjkG+MtoWLuWsj1aUUouBmNP81HSt9Rcnfs10YDBwvT6HZzXyaEUIIZqvxY9WtNaXnOXCU4DxwMXnUuJCCCGcq1WPVpRS44BHgQu01nXOiSSEEKI5WvvuzP8CocAipdRWpdTrTsgkhBCiGVo7ayXNWUGEEEK0jMyXEkIIi5MiF0IIi5MiF0IIi5MiF0IIizOy+6FSqgwoaOFvjwIOOzGOSfJaXI+7vA6Q1+KqWvNakrXW0ad+0UiRt4ZSKuN0K5usSF6L63GX1wHyWlxVW7wWebQihBAWJ0UuhBAWZ8Uin2E6gBPJa3E97vI6QF6Lq3L6a7HcM3IhhBA/ZsURuRBCiJNIkQshhMVZssiVUk8rpbaf2HFxoVIqznSmllJKPaeU2nvi9XyulAo3nakllFI3KKV2KaUcSilLThNTSo1TSmUqpbKVUo+ZztNSSqmZSqlSpdRO01laQymVqJRaqpTac+Lf1oOmM7WUUipAKbVBKbXtxGt5yqnXt+IzcqVUB6119Ykf/wboqbW+13CsFmnpAdauRinVA3AAbwC/01pb6ggopZQ3kAVcChQBG4Gbtda7jQZrAaXU+cBR4H2tdW/TeVpKKRULxGqtNyulQoFNwLUW/TtRQLDW+qhSyhdYBTyotV7njOtbckT+Q4mfEAxY7/9GJ2itF2qtfzjhdx2QYDJPS2mt92itM03naIWhQLbWOldr3QDMBq4xnKlFtNYrgArTOVpLa31Qa735xI9rgD1AvNlULaOPO3riU98TH07rLUsWOYBS6i9KqUJgMvCE6TxOcgfwnekQHioeKDzp8yIsWhruSCmVAgwA1huO0mJKKW+l1FagFFiktXbaa3HZIldKLVZK7TzNxzUAWuvpWutE4EPgfrNpz+xsr+XEr5kO2Dn+elzSubwOC1On+Zplv9NzJ0qpEGAe8NtTvhu3FK11k9a6P8e/6x6qlHLaY69WnRDUls526PNJPgK+Af7UhnFaxV0OsG7G34kVFQGJJ32eABwwlEWccOJ58jzgQ631Z6bzOIPWulIptQwYBzjlDWmXHZGfiVKq20mfTgD2msrSWicdYD1BDrA2aiPQTSmVqpTyAyYBXxrO5NFOvEH4NrBHa/2i6TytoZSK/mFGmlIqELgEJ/aWVWetzAPSOT5LogC4V2tdbDZVyyilsgF/oPzEl9ZZcQaOUuo64GUgGqgEtmqtLzcaqpmUUlcC/wS8gZla67+YTdQySqmPgbEc3y61BPiT1vpto6FaQCk1GlgJ7OD4f+sAf9Baf2suVcsopfoC73H835YXMFdr/WenXd+KRS6EEOL/WPLRihBCiP8jRS6EEBYnRS6EEBYnRS6EEBYnRS6EEBYnRS6EEBYnRS6EEBb3/wH7zDVFma0lnwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "from pylab import *\n", + "\n", + "x = linspace(-3,3,1000)\n", + "y = x**2 - 2\n", + "\n", + "plot(x,y)\n", + "show()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Listeaddisjon: [1, 2, 3, 5, 4, 3]\n", + "Arrayaddisjon: [6 6 6]\n", + "Arraymultiplikasjon: [5 8 9]\n" + ] + } + ], + "source": [ + "from pylab import *\n", + "\n", + "liste1 = [1,2,3]\n", + "liste2 = [5,4,3]\n", + "\n", + "print(\"Listeaddisjon:\", liste1 + liste2)\n", + "\n", + "array1 = array(liste1)\n", + "array2 = array(liste2)\n", + "\n", + "print(\"Arrayaddisjon:\", array1+array2)\n", + "print(\"Arraymultiplikasjon:\",array1*array2)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100]\n", + "[ 0. 2. 4. 6. 8. 10. 12. 14. 16. 18. 20. 22. 24. 26.\n", + " 28. 30. 32. 34. 36. 38. 40. 42. 44. 46. 48. 50. 52. 54.\n", + " 56. 58. 60. 62. 64. 66. 68. 70. 72. 74. 76. 78. 80. 82.\n", + " 84. 86. 88. 90. 92. 94. 96. 98. 100.]\n" + ] + } + ], + "source": [ + "from pylab import *\n", + "\n", + "# Med lister\n", + "partall = []\n", + "for tall in range(0,101,2):\n", + " partall.append(tall)\n", + "\n", + "tall = 0\n", + "while tall <= 100:\n", + " partall.append(tall)\n", + " tall = tall + 2\n", + "print(partall)\n", + "\n", + "# Med arrayer\n", + "partall = zeros(51)\n", + "\n", + "for i in range(50):\n", + " partall[i+1] = partall[i] + 2\n", + "print(partall)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "from pylab import *\n", + "\n", + "x = linspace(-3,3,7)\n", + "f = x + 3\n", + "g = exp(0.01*x)\n", + "h = cos(x) - 1\n", + "\n", + "plot(x,f,color='firebrick',marker='.',linestyle='--',label='f')\n", + "plot(x,g,color='hotpink',marker='*',label='g')\n", + "plot(x,h,color='navy',marker='>',label='h')\n", + "grid()\n", + "xlabel('tid (s)')\n", + "ylabel('Temperatur (celsius)')\n", + "legend()\n", + "show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/ekstra/tema6.ipynb b/_sources/docs/ekstra/tema6.ipynb new file mode 100644 index 00000000..557faae5 --- /dev/null +++ b/_sources/docs/ekstra/tema6.ipynb @@ -0,0 +1,326 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Tema 6: Datahåndtering" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Trenger _loadtxt_-funksjonen for å **lese** av filer." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "from pylab import *\n", + "\n", + "data = loadtxt('datafiler/solflekker.txt', skiprows=1)\n", + "\n", + "tid = data[:,0]\n", + "solflekker = data[:,1]\n", + "\n", + "plot(tid,solflekker,color='forestgreen')\n", + "xlabel('Tid (md. etter 1. januar 1749)')\n", + "ylabel('Gjennomsnittlig antall solflekker')\n", + "grid()\n", + "show()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "data_temp = loadtxt('datafiler/temperatur.txt', skiprows = 1)\n", + "\n", + "tid = data_temp[:,0]\n", + "temp = data_temp[:,1]\n", + "\n", + "plot(tid,temp)\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Statistiske operasjoner" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Temperaturen var på: 22.59 +- 7.81\n" + ] + } + ], + "source": [ + "snitt = mean(temp)\n", + "avvik = std(temp)\n", + "\n", + "print(\"Temperaturen var på:\", round(snitt,2), \"+-\", round(avvik,2))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Gjennomsnitt:\n", + "\n", + "$$\\bar{x} = \\frac{1}{n} \\sum_{i=1}^n x_i$$\n", + "\n", + "Standardavvik:\n", + "\n", + "$$s = \\sqrt{\\frac{1}{n} \\sum_{i=1}^n (x_i - \\bar{x})^2}$$" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "def gjennomsnitt(verdier):\n", + " n = len(verdier)\n", + " summen = 0 # Eventuelt: summen = sum(verdier)\n", + " for verdi in verdier:\n", + " summen = summen + verdi\n", + " snitt = summen/n\n", + " return snitt" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2.0\n" + ] + } + ], + "source": [ + "tall = [1,3,1,3]\n", + "snitt = gjennomsnitt(tall)\n", + "print(snitt)" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [], + "source": [ + "def standardavvik(verdier):\n", + " n = len(verdier)\n", + " snitt = gjennomsnitt(verdier)\n", + " avvik = 0\n", + " for verdi in verdier:\n", + " avvik = avvik + (verdi - snitt)**2\n", + " avvik = (avvik/n)**0.5\n", + " return avvik" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.0\n" + ] + } + ], + "source": [ + "avvik = standardavvik(tall)\n", + "print(avvik)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Visualiseringer av data\n", + "\n", + "### Sektordiagram " + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from pylab import *\n", + "\n", + "karakterer = [\"Promod\", \"Kjemi 1\", \"Fysikk 1\", \"Biologi 1\", \"Tekforsk\", \"R1\"]\n", + "antall = [28, 89, 78, 71, 12, 112]\n", + "\n", + "pie(antall, labels=karakterer)\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Søylediagram" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "bar(karakterer, antall)\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Regresjon" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [], + "source": [ + "a, b, c = polyfit(tid, temp, 2)" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "def modell(x):\n", + " return a*x**2 + b*x + c\n", + "\n", + "x = linspace(0,500,10000)\n", + "y = modell(x)\n", + "plot(x,y,label='Tilpasset kurve')\n", + "plot(tid,temp,linestyle='',marker='.',label='Datapunkter')\n", + "legend()\n", + "show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/ekstra/tema7.ipynb b/_sources/docs/ekstra/tema7.ipynb new file mode 100644 index 00000000..d9febe6f --- /dev/null +++ b/_sources/docs/ekstra/tema7.ipynb @@ -0,0 +1,205 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Tema 7: Algoritmer" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n", + "7\n", + "1\n", + "6\n", + "6\n", + "1\n", + "3\n", + "3\n", + "7\n", + "6\n" + ] + } + ], + "source": [ + "from pylab import *\n", + "\n", + "N = 10\n", + "for i in range(N):\n", + " kast = randint(1,8)\n", + " print(kast)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.5059584318309436\n" + ] + } + ], + "source": [ + "tall = uniform(-1,3)\n", + "print(tall)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "from pylab import *\n", + "\n", + "antall_seksere = 0\n", + "N = 10000\n", + "antall_kast = []\n", + "relfrek_seks = []\n", + "\n", + "for i in range(1,N+1):\n", + " kast = randint(1,7)\n", + " if kast == 6:\n", + " antall_seksere += 1\n", + " relativ_frekvens = antall_seksere/i\n", + " antall_kast.append(i)\n", + " relfrek_seks.append(relativ_frekvens)\n", + " \n", + "plot(antall_kast, relfrek_seks)\n", + "show()" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.166646" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "relfrek_seks[-1]" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "3.144408\n", + "0.002815346410206754\n" + ] + } + ], + "source": [ + "from pylab import *\n", + "\n", + "M = 0 # Antall prikker innafor sirkelen\n", + "N = 1000000 # Antall prikker totalt\n", + "\n", + "for i in range(N):\n", + " x = uniform(-1,1)\n", + " y = uniform(-1,1)\n", + " if x**2 + y**2 <= 1:\n", + " M += 1\n", + "\n", + "A_kvadrat = 4\n", + "A_sirkel = A_kvadrat*M/N\n", + "\n", + "print(A_sirkel)\n", + "print(abs(A_sirkel-pi))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "3.1413156\n", + "0.00027705358979313033\n" + ] + } + ], + "source": [ + "from pylab import *\n", + "\n", + "M = 0\n", + "N = 10000000\n", + "\n", + "x = uniform(-1,1,N)\n", + "y = uniform(-1,1,N)\n", + "\n", + "for i in range(len(x)):\n", + " if x[i]**2 + y[i]**2 <= 1:\n", + " M += 1\n", + "\n", + "A_kvadrat = 4\n", + "A_sirkel = A_kvadrat*M/N\n", + "print(A_sirkel)\n", + "print(abs(A_sirkel-pi))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/ekstra/tema8.ipynb b/_sources/docs/ekstra/tema8.ipynb new file mode 100644 index 00000000..a5437c2b --- /dev/null +++ b/_sources/docs/ekstra/tema8.ipynb @@ -0,0 +1,91 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Tema 8: Modellering" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "from pylab import *\n", + "\n", + "# Startbetingelser\n", + "N = 157759 # Antall individer\n", + "a = 4/N # Smitterate\n", + "b = 3.5 # Bedringsrate\n", + "tid = 48 # Tid\n", + "\n", + "I = 3 # Smittede\n", + "S = N - I # Mottakelige\n", + "R = 0 # Restituert/friske\n", + "\n", + "syke = [I]\n", + "mulige = [S]\n", + "friske = [R]\n", + "t = [0]\n", + "\n", + "for i in range(1,tid):\n", + " S = S - a*S*I\n", + " I = I + a*S*I - b*I\n", + " R = R + b*I\n", + " syke.append(I)\n", + " mulige.append(S)\n", + " friske.append(R)\n", + " t.append(i)\n", + " \n", + "plot(t,syke,label='Syke')\n", + "plot(t,mulige,label='Mottakelige')\n", + "plot(t,friske,label='Friske')\n", + "legend()\n", + "show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/ekstra/tema9.ipynb b/_sources/docs/ekstra/tema9.ipynb new file mode 100644 index 00000000..0beb631b --- /dev/null +++ b/_sources/docs/ekstra/tema9.ipynb @@ -0,0 +1,39 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Tema 9: Grafikk" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/fagoppgaver/biologioppgaver.ipynb b/_sources/docs/fagoppgaver/biologioppgaver.ipynb new file mode 100644 index 00000000..ad5a9f71 --- /dev/null +++ b/_sources/docs/fagoppgaver/biologioppgaver.ipynb @@ -0,0 +1,170 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "99c322cd", + "metadata": {}, + "source": [ + "# Repetisjon II: Biologioppgaver\n", + "\n", + "Simulering av tilfeldige hendelser kaller vi _Monte Carlo-simuleringer_ etter det berømte kasinoet i Monte Carlo (MC). Her skal vi benytte MC-simuleringer til å simulere enkel nedarving av øyenfarge. Modellen vi bruker, baserer seg på at vi plukker ett tilfeldig allel som koder for øyenfarge fra mor og ett allel fra far. For å plukke ut et tilfeldig allel, kan vi bruke funksjonen _choice_, som plukker ut et tilfeldig element fra en liste:" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "70fcf65f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "b\n" + ] + } + ], + "source": [ + "from pylab import *\n", + "\n", + "genotype_far = [\"B\", \"b\"] \n", + "print(choice(genotype_far))" + ] + }, + { + "cell_type": "markdown", + "id": "5f5e7a6a", + "metadata": {}, + "source": [ + "__Oppgave:__\n", + "\n", + "1. Forklar hvordan programsnutten ovenfor fungerer.\n", + "2. Lag et program som trekker et tilfeldig allel fra både mor og far. Programmet skal skrive ut hvilken genotype og fenotype barnet får. Du kan bruke koden nedenfor som utgangspunkt hvis du syns det er vanskelig å starte.\n", + "\n", + " ```{admonition} Hint: Fyll inn i koden\n", + " :class: tip, dropdown\n", + " \n", + " ````\n", + "\n", + " ````{admonition} Løsningsforslag\n", + " :class: tip, dropdown\n", + " ```{code-block} Python\n", + " from pylab import *\n", + "\n", + " genotype_mor = [\"B\", \"b\"]\n", + " genotype_far = [\"B\", \"b\"]\n", + "\n", + " allel_mor = choice(genotype_mor) \n", + " allel_far = choice(genotype_far) \n", + " genotype = allel_mor + allel_far\n", + " if genotype == \"bb\": \n", + " fenotype = \"blå\"\n", + " else:\n", + " fenotype = \"brune\"\n", + "\n", + " print(\"barnet har genotypen\", genotype, \"og får derfor fenotypen\", fenotype, \"øyne.\")\n", + " ```\n", + " ````\n", + "\n", + "3. Forklar hva programmet nedenfor gjør uten å kjøre programmet. Hvilke forutsetninger og forenklinger legger vi til grunn for denne simuleringen?\n", + "\n", + " \n", + "\n", + "4. Kjør programmet 3–4 ganger. Hva gjør programmet? Stemmer dette med det du trodde? Hvorfor varierer resultatene fra programmet mellom hver kjøring? \n", + "\n", + "5. Endre systematisk på N og kjør programmet etter hver endring. Hva forteller resultatene av kjøringene deg? Endre nå systematisk på genotypene til mor og far, og undersøk hva som skjer. Skriv ned det du finner ut og prøv å validere resultatene fra simuleringene ved å lage krysningsskjemaer for nedarvingen.\n", + "\n", + "6. Modifiser programmet slik at det lagrer den relative frekvensen av blåøyde barn og antall barn i hver sin liste hver gang løkka kjører. Plott den relative frekvensen av blåøyde barn mot antallet barn. Hva beskriver plottet? Drøft følgende diskusjon mellom to foreldre med genotype Bb: «Vi har jo fått fire barn – hvorfor har ingen av dem blå øyne? Det er veldig usannsynlig».\n", + "\n", + " ````{admonition} Løsningsforslag\n", + " :class: tip, dropdown\n", + " ```{code-block} Python\n", + " from pylab import *\n", + "\n", + " genotype_mor = [\"B\", \"b\"]\n", + " genotype_far = [\"B\", \"b\"]\n", + " blaa = 0\n", + " N = 10000\n", + " frekvens = []\n", + " barn = []\n", + "\n", + " for antall_barn in range(1, N+1):\n", + " allel_mor = choice(genotype_mor) \n", + " allel_far = choice(genotype_far) \n", + " genotype = allel_mor + allel_far\n", + " if genotype == \"bb\":\n", + " blaa = blaa + 1\n", + " frekvens.append(blaa/antall_barn)\n", + " barn.append(antall_barn)\n", + "\n", + " plot(barn, frekvens)\n", + " xlabel(\"Antall kast\")\n", + " ylabel(\"Relativ frekvens blåøyde barn\")\n", + " axhline(y=1/4, color='red') # Markerer linja 1/4\n", + " title(\"Simulering av nedarving av øyenfarge med N = \" + str(N))\n", + " show()\n", + " ```\n", + " ````\n", + "7. Vi skal nå lage et program som simulerer dihybrid krysning for fargen og formen på erter ved nedarving. I dihybrid krysning er genotypen og fenotypen bestemt av to gener. Fenotypene som er mulig i krysningen nedenfor, er gul eller grønn, rynkete eller glatt, der genvarianten for glatt (R) og gul (Y) er dominante. Lag et program som finner sannsynligheten for å få grønne, rynkete erter. Programmet kan gjerne plotte den relative frekvensen som funksjon av antall avkom, slik som ovenfor. Du kan ta utgangspunkt i programmet nedenfor og fylle inn det som mangler:\n", + "\n", + "\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "from pylab import *\n", + "\n", + "plante1_y = [\"Y\", \"y\"]\n", + "plante1_r = [\"R\", \"r\"]\n", + "plante2_y = [\"Y\", \"y\"]\n", + "plante2_r = [\"R\", \"r\"]\n", + "grønne_rynkete = 0\n", + "N = 10000\n", + "frekvens = []\n", + "avkom = []\n", + "\n", + "for antall_avkom in range(1,N+1):\n", + " allel1 = choice(plante1_y) \n", + " allel2 = choice(plante1_r)\n", + " allel3 = choice(plante2_y)\n", + " allel4 = choice(plante2_r) \n", + " genotype = allel1 + allel2 + allel3 + allel4\n", + " if genotype in [\"yyrr\", \"yryr\", \"yrry\", \"ryyr\", \"rryy\", \"ryry\"]:\n", + " grønne_rynkete = grønne_rynkete + 1\n", + " frekvens.append(grønne_rynkete/antall_avkom)\n", + " avkom.append(antall_avkom)\n", + "\n", + "plot(avkom, frekvens, color = \"green\")\n", + "xlabel(\"Antall avkom\")\n", + "ylabel(\"Relativ frekvens av grønne, rynkete erter\")\n", + "axhline(y = 1/16, color = \"red\") # Markerer linja 1/4\n", + "show()\n", + "```\n", + "````\n", + " \n", + "Forklar hvordan programmet fungerer når du har lagd det ferdig." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/_sources/docs/fagoppgaver/kjemioppgaver.ipynb b/_sources/docs/fagoppgaver/kjemioppgaver.ipynb new file mode 100644 index 00000000..b5dfd2db --- /dev/null +++ b/_sources/docs/fagoppgaver/kjemioppgaver.ipynb @@ -0,0 +1,304 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "fc226795", + "metadata": {}, + "source": [ + "# Repetisjon I: Kjemioppgaver\n", + "\n", + "```{admonition} Læringsutbytte\n", + "Oppgavene nedenfor er ment å fungere som en repetisjon av grunnleggende programmering, samtidig som du må anvende dette på nye problemstillinger. Når du setter deg inn i et nytt problem, må du, bevisst eller ubevisst:\n", + "\n", + "1. Dekomponere: Hvilke deler består problemet av? Hva er målet med å løse problemet?\n", + "2. Analysere: Hvordan henger delene sammen?\n", + "3. Vurdere I: Hvordan kan jeg bruke det jeg kan til å løse problemet, og hva trenger jeg å finne ut av? \n", + "4. Syntetisere: Sette sammen en løsning.\n", + "5. Vurdere II: Løste jeg problemet på en god måte? Finnes det andre måter å løse problemet på? Kan jeg gjøre det mer effektivt eller enklere?\n", + "```\n", + "\n", + "Her skal vi se på ulike problemet knyttet til kjemi, uavhengig av om du har kjemi som programfag eller ikke. Vi skal benytte to biblioteker som heter \"mendeleev\" og \"chemlib\", så du kan starte med å installere disse." + ] + }, + { + "cell_type": "markdown", + "id": "cd4698a5", + "metadata": {}, + "source": [ + "## Oppgave 1: Periodiske trender I\n", + "Vi starter med et enkelt eksempel for å bli kjent med Mendeleev-biblioteket." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "730f9b83", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Atomnummer: 10 --Navn: Neon --Symbol: Ne --Gruppe: 18\n" + ] + } + ], + "source": [ + "from mendeleev import element\n", + "\n", + "Z = 10\n", + "grunnstoff = element(Z)\n", + "\n", + "navn = grunnstoff.name\n", + "symbol = grunnstoff.symbol\n", + "gruppe = grunnstoff.group_id\n", + "\n", + "print(\"Atomnummer:\", Z, \"--Navn:\", navn, \"--Symbol:\", symbol, \"--Gruppe:\", gruppe)" + ] + }, + { + "cell_type": "markdown", + "id": "51121500", + "metadata": {}, + "source": [ + "```{admonition} Oppgave\n", + ":class: tip\n", + "1. Forklar hva programmet ovenfor gjør. Hva slags struktur er \"element\", og hva er da \"grunnstoff\" i programmet ovenfor?\n", + "2. Utvid programmet slik at det også skriver ut periodenummeret. Du kan enten tippe på hva kommandoen for periode er, eller du kan slå det opp i [dokumentasjonen til mendeleev-biblioteket](https://mendeleev.readthedocs.io/en/stable/).\n", + "3. Modifiser programmet slik at det skriver ut informasjon om de 18 letteste grunnstoffene.\n", + "```" + ] + }, + { + "cell_type": "markdown", + "id": "689b3e04", + "metadata": {}, + "source": [ + "La oss kombinere mendeleev-biblioteket med løkker og lister slik at vi kan finne informasjon om flere grunnstoffer, i tillegg til at vi kan plotte ulike sammenhenger." + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "eb37f734", + "metadata": {}, + "outputs": [], + "source": [ + "from pylab import *\n", + "from mendeleev import element\n", + "\n", + "atomnummer = []\n", + "elektronegativitet = []\n", + "\n", + "for i in range(1, 119):\n", + " grunnstoff = element(i)\n", + " atomnummer.append(grunnstoff.atomic_number)\n", + " elektronegativitet.append(grunnstoff.electronegativity())" + ] + }, + { + "cell_type": "markdown", + "id": "be4190e9", + "metadata": {}, + "source": [ + "````{admonition} Oppgave\n", + ":class: tip\n", + "1. Forklar hva programmet ovenfor gjør. \n", + "2. Kjør programmet og print ut lista med atomnummer og lista med elektronegativitet. Gjorde programmet det du tenkte?\n", + "3. Istedenfor å bare printe ut listene, prøv å plotte listene mot hverandre (atomnummer på _x_-aksen og elektronegativitet på _y_aksen). Bruk gjerne _scatter_ istedenfor _plot_, slik at vi får punkter og ikke linjer.\n", + "4. Modifiser programmet slik at det kun plotter grunnstoffene i andre periode. Beskriv trenden.\n", + "\n", + " Vi kan gjennomgå hvert element i ei liste slik:\n", + "\n", + " ```{code-block} Python\n", + " navneliste = [\"Arne\", \"Bjarne\", \"Mia\", \"Pia\"]\n", + "\n", + " for navn in navneliste:\n", + " print(navn)\n", + " ```\n", + "\n", + "5. Bruk denne måten å gjennomgå lister på til å modifisere programmet slik at det kun plotter grunnstoffene i første gruppe. Beskriv trenden. Gjør det samme for gruppe 18 og beskriv denne trenden også.\n", + "\n", + "6. Lag et program som skriver ut eller plotter kokepunktet til alle halogenene. Beskriv og forklar trenden i kokepunkt.\n", + "````" + ] + }, + { + "cell_type": "markdown", + "id": "e2030db6", + "metadata": {}, + "source": [ + "## Oppgave 2: Periodiske trender II\n", + "\n", + "a) Bruk mendeleev og plott året grunnstoffet er oppdaget (discovery_year) som funksjon av\n", + "atomnummer. Hvorfor tror du utviklingen ser slik ut? Prøv å beskrive ulike trender i plottet.\n", + "\n", + "b) Forklar hva plottet nedenfor beskriver. Prøv å lage et program som lager dette plottet.\n", + "\n", + "\"periodiske\n", + "\n", + "c) Når vi kjenner atomradius til et stoff, kan vi finne ut mye om elektronegativiteten, ioniseringsenergien og elektronaffiniteten til stoffet.\n", + "- Plott elektronegativitet som funksjon av atomradius. Beskriv det du ser.\n", + "- Utforsk trender i ioniseringsenergi (ionenergies) og elektronaffinitet (electron_affinity) ved hjelp av programmering. Du velger selv framgangsmåte, og om du vil skrive ut informasjonen eller lage illustrerende plott. Legg merke til at funksjonen _ionenergies_ skriver ut en liste med energiene som kreves for å fjerne opp til alle elektronene i grunnstoffet, ikke bare det første." + ] + }, + { + "cell_type": "markdown", + "id": "a1da622e", + "metadata": {}, + "source": [ + "## Oppgave 3: Støkiometriske beregninger\n", + "\n", + "Ved hjelp av biblioteket _chemlib_ kan vi også definere kjemiske forbindelser og gjøre støkiometriske beregninger på dem. Her er noen eksempler på hva du kan gjøre:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "cbb9b1b2", + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'grams': 2, 'molecules': 1.6243271319293604e+22, 'moles': 0.026982178271251833}\n", + "13.599017848710924\n", + "{'moles': 1, 'grams': 142.04099999999997, 'molecules': 6.02e+23}\n", + "{'molecules': 1e+24, 'moles': 1.6611295681063123, 'grams': 28.290697674418603}\n" + ] + } + ], + "source": [ + "from chemlib import Compound\n", + "\n", + "butan1ol = Compound(\"C4H9OH\") # Definerer forbindelsen\n", + "# Regner fra gram til mol og molekyler\n", + "print(butan1ol.get_amounts(grams=2))\n", + "# Finner prosentvis masse hydrogen i ammoniakk\n", + "print(butan1ol.percentage_by_mass(\"H\"))\n", + "\n", + "natriumsulfat = Compound(\"Na2SO4\")\n", + "# Fra mol til gram og formelenheter\n", + "print(natriumsulfat.get_amounts(moles=1))\n", + "\n", + "ammoniakk = Compound(\"NH3\")\n", + "# Fra molekyler til mol og gram\n", + "print(ammoniakk.get_amounts(molecules=1E24))" + ] + }, + { + "cell_type": "markdown", + "id": "a25db70b", + "metadata": {}, + "source": [ + "1. Hva gjør programmet ovenfor?\n", + "2. Finn antall gram i 2 mol NaCl.\n", + "3. Finn antall molekyler i 2 g metanol.\n", + "4. Finn antall mol HCl-molekyler i 2 g HCl." + ] + }, + { + "cell_type": "markdown", + "id": "2ae81c42", + "metadata": {}, + "source": [ + "Vi kan også sjekke om kjemiske reaksjoner er balansert, og vi kan balansere dem med chemlib:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "725a9ba3", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1H₂ + 1I₂ --> 1H₁I₁\n", + "False\n", + "1H₂ + 1I₂ --> 2H₁I₁\n", + "True\n" + ] + } + ], + "source": [ + "from chemlib import Compound, Reaction\n", + "\n", + "# Definerer forbindelser\n", + "H2 = Compound(\"H2\")\n", + "I2 = Compound(\"I2\")\n", + "HI = Compound(\"HI\")\n", + "\n", + "# Definerer reaksjon som en liste med reaktanter og en med produkter\n", + "reaksjon = Reaction([H2, I2], [HI])\n", + "print(reaksjon.formula) # Printer reaksjonslikningen\n", + "print(reaksjon.is_balanced) # Sjekker om reaksjonen er balansert\n", + "\n", + "reaksjon.balance() # Balanserer reaksjonen\n", + "print(reaksjon.formula)\n", + "print(reaksjon.is_balanced)" + ] + }, + { + "cell_type": "markdown", + "id": "4827eb8d", + "metadata": {}, + "source": [ + "1. Forklar hvordan klassen _Reaction_ fungerer (helt overordna). Skriv reaksjonslikningen vi har definert her.\n", + "2. Forklar hva resten av programmet gjør.\n", + "3. Lag et program som balanserer følgende reaksjonslikninger:\n", + "\n", + "$$C_2H_6(g) + O_2(g) \\rightarrow CO_2(g) + H_2O(l)$$\n", + "\n", + "$$NH_3(g) + O_2(g) \\rightarrow NO(g) + H_2O(g)$$\n", + "\n", + "$$Mg(s) + N_2(g) \\rightarrow Mg_3N_2(s)$$" + ] + }, + { + "cell_type": "markdown", + "id": "7d4a324e", + "metadata": {}, + "source": [ + "## Oppgave 4: Titrering (utfordring)\n", + "\n", + "Titrering er en kvantitativ analysemetode der vi bestemmer konsentrasjonen av et ukjent stoff (_analytten_) ved å tilsette et stoff med kjent konsentrasjon (_titranten_). Titranten tilsettes ofte fra en byrette, og vi kan notere oss pH i analytten underveis ettersom vi tilsetter et visst volum titrant. Her er en titreringskurve for titrering av en svak syre med en sterk base.\n", + "\n", + "![titreringskurve](https://github.com/andreasdh/programmering-i-kjemi/blob/master/docs/bilder/titrering.png?raw=true)\n", + "\n", + "Ved ekvivalenspunktet er grafen brattest, og her er stoffmengdene av syre og base _ekvivalente_ (og dermed like hvis forholdet er 1:1 i reaksjonslikningen). Dette kan vi bruke til å finne konsentrasjonen av analytten. Vi skal se på noen metoder for å finne ekvivalenspunktet og pH-en ved ekvivalenspunktet i en slik titrering.\n", + "\n", + "a) Les og plott dataene fra fila [titreringsdata.txt](https://raw.githubusercontent.com/andreasdh/programmering-i-kjemi/master/docs/datafiler/titreringsdata.txt), som viser titreringsdata for titrering av glykolsyre med NaOH. Sørg for at datapunktene vises i plottet.\n", + "\n", + "b) Deriver pH-en numerisk med hensyn på volumet og legg den deriverte pH-en i ei ny liste. Forklar hva den deriverte av pH-en kan fortelle oss.\n", + "\n", + "c) Lag en funksjon som finner den største deriverte i lista med de deriverte verdiene. Sammenlikn gjerne med numpy-funksjonen _max_. La programmet skrive ut hvilket volum dette tilsvarer. Dette er volumet sterk base som er tilsatt ved ekvivalenspunktet. Finn også pH ved ekvivalenspunktet ved hjelp av programmet ditt." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/_sources/docs/fagoppgaver/teknologi.ipynb b/_sources/docs/fagoppgaver/teknologi.ipynb new file mode 100644 index 00000000..6224bac0 --- /dev/null +++ b/_sources/docs/fagoppgaver/teknologi.ipynb @@ -0,0 +1,408 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Teknologi og programmering\n", + "\n", + "```{admonition} Læringsutbytte\n", + "Etter å ha arbeidet med dette temaet, skal du kunne:\n", + "1. lage enkle programmer på en micro:bit\n", + "2. bruke knapper, radio og sensorer på micro:bit\n", + "3. illustrere hvordan sensorer fungerer ved å bruke micro:bit\n", + "```\n", + "\n", + "## Teknologi i et bærekraftig perspektiv\n", + "Utvikling og bruk av teknologi lider av et dårlig rykte i miljøsammenheng. Støy, giftige utslipp, $CO_2$-utslipp og avfall er noen av problemene med bruk av teknologi og teknologiproduksjon. Men i tillegg til å være et potensielt miljøproblem kan teknologi også være en av løsningene mot en bærekraftig framtid med nok energi og ressurser til å dekke alles grunnleggende behov. Ikke minst kan teknologi hjelpe til med å rette opp i feil vi har gjort. Plastfangere kan samle inn avfall i havet. Sporere og kamera kan hjelpe til med å kartlegge det biologiske mangfoldet slik at vi kan sette inn tiltak der det trengs. Intelligente avfallsanlegg sorterer ulike plasttyper slik at de kan gjenvinnes fornuftig med minst mulig energitap. \n", + "\n", + "Sett i et større perspektiv er det ikke teknologien som er et problem, det er menneskene bak den. Dermed blir gode valg og fornuftig bruk av teknologi essensielt for å sikre en bærekraftig framtid for alle.\n", + "\n", + "## Programmering med mikrokontrollere\n", + "Vi kan utforske programmering i en teknologisk sammenheng gjennom _mikrokontrollere_. En mikrokontroller er en liten datamaskin i én enkel integrert krets. Den viktigste komponenten i en slik krets, er transistorene. Det er disse som styrer strømmen av informasjon gjennom en datamaskin. \"Hjernen\" i en datamaskin kalles for en _CPU_ (Central Processing Unit) og består i dag av flere hundretalls millioner transistorer (ja, de er små!). \n", + "\n", + "En transistor fungerer som en slags bryter og kan representere 0 (av) eller 1 (på). Det vil si at alt vi programmerer, må oversettes til et språk datamaskinen forstår, og det er et språk som består av kun 0-er og 1-ere. Dette tallsystemet kalles _det binære tallsystemet_ eller _totallsystemet_. Men det hadde vært tungvint å programmere en datamaskin ved å kun gi den instruksjoner med 0 og 1. Heldigvis er moderne programmeringsspråk enklere å bruke fordi et program som kalles en _kompilator_ oversetter dem til binær kode.\n", + "\n", + "Det finnes mange ulike mikrokontrollere: Arduino, Raspberry Pi og micro:bit er noen av de mest kjente. Det finnes utrolig mye utstyr til disse mikronkontrollerne, og de har til dels ganske kraftige prosessorer. Spesielt gjelder dette Arduino og Raspbery Pi. Micro:bit har en del lavere kapasitet, men den er til gjengjeld veldig enkel å bruke. Disse mikrokontrollerne skal vi lære oss å programmere.\n", + "\n", + "## Introduksjon til micro:bit\n", + "Micro:bit blei designa av det britiske selskapet BBC i 2014 for å lære britiske ungdommer programmering. De blei sendt ut gratis til britiske grunnskoler i 2016, og den ideelle foreningen Lær kidsa koding har i samarbeid med Vitensentrene og Sparebankstiftelsen sendt ut micro:bit til grunnskoler over hele Norge.\n", + "\n", + "Det går an å programmere micro:bit med [blokkbaserte kodesnutter](https://makecode.microbit.org/). Blokkbasert koding baserer seg på å flytte ferdigdefinerte blokker i en logisk rekkefølge slik at et program fungerer. Det går også an å programmere dem i [Python](https://python.microbit.org/v/3) (eller JavaScript). Vi skal se på både blokk og tekst (Python) her.\n", + "\n", + "### Elektronikken\n", + "Vi starter med å se litt på hvordan micro:bit-en er bygd opp:\n", + "\n", + "\n", + "\n", + "Vi ser følgende komponenter på figuren:\n", + "\n", + "1. USB-tilkobling: Her kobles micro:bit med en USB til en datamaskin når vi skal programmere den.\n", + "\n", + "2. LED-lys: 25 LED-lys utgjør en slags \"skjerm\" på micro:bit-en.\n", + "\n", + "3. Knapper: A-knappen og B-knappen kan programmeres til å styre sekvenser på micro:bit-en.\n", + "\n", + "4. Innganger: Det finnes 5 hovedinnganger for tilkobling av eksternt utstyr, merka med 0, 1, 2, 3V og GND (ground = jording).\n", + "\n", + "5. Batteriinngang: Her kobles batteripakka på to AA-batterier (2 x 1,5 V) til.\n", + "\n", + "6. Omstartsknapp: Starter programmet på micro:bit-en på nytt.\n", + "\n", + "7. Radio og Bluetooth: Liten innebygd antenne som blant annet kan brukes til å kommunisere mellom to enheter.\n", + "\n", + "8. Prosessor: Norskprodusert lettvekterprosessor med svært lavt strømforbruk. Lav hastighet, men har også integrert midlertidig minne (RAM) og lagringsminne (flash).\n", + "\n", + "9. Kompass og akselerometer: Måler retning, posisjon og akselerasjon i de ulike retningene. Integrerte sensorer som en kan hente data fra.\n", + "\n", + "Vi kommer til å bruke all denne elektronikken i prosjektene vi skal se på seinere. Men la oss først se litt på hvordan vi kan programmere i både blokk og med Python.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Grunnleggende programmering\n", + "Med blokkspråket til micro:bit kan vi definere variabler slik:\n", + "\n", + "\n", + "\n", + "Disse blokkene velges fra menyer, og legg merke til at de har \"puslespillender\". Det betyr at vi må ha en blokk uten \"knagger\", slik som _gjenta for alltid_-blokka (utføres hele tida) eller _ved start_-blokka (utføres når micro:bit startes opp) som vi kan putte andre blokker inni. Programmet ovenfor lager en variabel _a_ som den lagrer verdien 0 i, for deretter å legge til 1 i variabelen. Den tilsvarende Python-koden for dette kan skrives slik:\n", + "\n", + "```{code-block} Python\n", + "a = 0\n", + "a = a + 1\n", + "```\n", + "\n", + "Vilkår kan programmeres slik med blokker:\n", + "\n", + "\n", + "\n", + "I dette programmet settes variabelen til 10. Deretter testes det om tallet er mindre enn eller større enn 0. Hvis tallet verken er større eller mindre enn 0, må det være null, og det er det siste som inntreffer hvis de andre ikke inntraff. Merk at her skrives ikke noe ut, men teksten vises på \"skjermen\" av LED på micro:bit-en. Dette kan vi få til i Python slik:\n", + "\n", + "```{code-block} Python\n", + "from microbit import *\n", + "\n", + "tall = 10\n", + "\n", + "if tall < 0:\n", + "\tdisplay.scroll('Tallet er negativt!')\n", + "elif tall > 0:\n", + "\tdisplay.scroll('Tallet er positivt!')\n", + "else:\n", + "\tdisplay.scroll('Tallet er 0!')\n", + "```\n", + "\n", + "Micro:bit inneholder en del spesialfunksjoner som vi må importere inn i programmet med linja _from microbit import \\*_. Deretter får vi tilgang til all micro:bit-elektronikken, som vi skal se på seinere. Når vi laster dette programmet over på micro:bit-en, ruller teksten over skjermen. Hvis vi vil vise teksten med én bokstav om gangen, bruker vi _display.show()_ isteden.\n", + "\n", + "Løkker kan også enkelt programmeres med blokk. En evig løkke kan lages med en enkelt blokk kalt _gjenta for alltid_ på samme måte som _ved start_-blokka:\n", + "\n", + "\n", + "\n", + "Koden ovenfor er en evig løkke som for alltid viser et hjerte på skjermen. Dette kan skrives slik i Python:\n", + "\n", + "```{code-block} Python\n", + "from microbit import *\n", + "\n", + "while True:\n", + "\tdisplay.show(Image.HEART)\n", + "```\n", + "\n", + "\"while True\" betyr \"så lenge sant\" og sant er jo sant så lenge sant ikke blir usant. Dette er nesten litt filosofisk, men sant blir aldri usant av seg selv i datamaskinens verden, så løkka kjører til evig tid. Hvis vi ønsker at løkka skal stoppe, velger vi en annen betingelse for løkka vår, f.eks. slik:\n", + "\n", + "\n", + "\n", + "Kodesnutten gir følgende output: _0 2 4 6 8_. Merk at løkka her har en annen farge, i tillegg til at den må pusles sammen med en annen brikke. En tilsvarende kode i Python kan være slik:\n", + "\n", + "```{code-block} Python\n", + "from microbit import *\n", + "\n", + "partall = 0\n", + "while partall < 10:\n", + "\tdisplay.show(partall)\n", + "\tpartall = partall + 2\n", + "```\n", + "\n", + "Nå har vi raskt vært innom grunnleggende programmeringskonsepter i både blokk og tilsvarende Python-kode. La oss nå begynne å bruke dette for fullt på micro:bit-en!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## LED-skjermen\n", + "LED-lampene på micro:bit-en kan vi bruke til å vise eller rulle tekst over en slags skjerm. Vi har sett på noe av det før, men la oss kort oppsummere gjennom et kodeeksempel.\n", + "\n", + "```{code-block} Python\n", + "from microbit import * \n", + "\n", + "while True:\n", + "\tdisplay.show(Image.GHOST)\n", + "\tdisplay.scroll('Du er kul!')\n", + "```\n", + "\n", + "I blokk kan vi gjøre f.eks. som nedenfor. I tillegg kan du enkelt tegne hvilke LED-er som skal lyse. Dette kan du også gjør i Python, men det er litt mer komplisert, så det skal vi ikke vise her (men du kan enkelt finne det på internett!).\n", + "\n", + "\n", + "\n", + "Prøv å forstå hva programmet ovenfor gjør. Du kan programmere pause i Python ved å skrive _display.pause(1000)_, der det som angis i parentes, er pausen i kjøringen gitt i antall millisekunder. Skjermen kan tømmes ved å skrive _display.clear()_.\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Lag et Python-program som gjør omtrent det samme som blokkprogrammet ovenfor.\n", + "````\n", + "\n", + "## Knapper\n", + "Siden micro:bit har to knapper, kan vi bruke disse til å styre beslutninger og sette i gang prosesser. Det kan en enkelt gjøre i blokk slik:\n", + "\n", + "\n", + "\n", + "Her kan vi selvfølgelig bytte ut knapp A med knapp B, og vi kan også angi at knapp A + B skal trykkes samtidig. I Python kan vi gjøre det slik:\n", + "\n", + "```{code-block} Python\n", + "from microbit import *\n", + "\n", + "while True:\n", + " if button_a.is_pressed():\n", + " display.scroll('A')\n", + " elif button_b.is_pressed():\n", + " display.scroll('B')\n", + " elif button_a.is_pressed() and button_b.is_pressed():\n", + " display.scroll('AB')\n", + " sleep(1000)\n", + "```\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Lag et program som gjør et eller annet (f.eks. tegner en figur eller viser en tekst) når du trykker på én eller flere knapper.\n", + "````\n", + "\n", + "Det fins også mulighet for å telle antall trykk, f.eks. ved å skrive _antall = button\\_a.get\\_presses()_. Hvis vi da trykker på A-knappen 4 ganger, blir verdien til variabelen _antall_ lik 4.\n", + "\n", + "## Radio\n", + "Det er ganske enkelt å sette opp micro:bit til å sende og motta informasjon. Nedenfor er et enkelt blokkprogram som sender en melding:\n", + "\n", + "\n", + "\n", + "Det meste ovenfor er kanskje enkelt å forstå, men _radio sett gruppe_ er litt spesiell. Den oppretter en kanal mellom 0 og 255 slik at mange micro:bit-er kan kommunisere sammen uten at det blir kollisjon i meldingene. Et tilsvarende program vil i Python kunne se slik ut:\n", + "\n", + "```{code-block} Python\n", + "from microbit import *\n", + "import radio # Importerer radio-funksjonaliteten\n", + "\n", + "radio.on() # Slår på radioen\n", + "radio.config(group=42) # Setter kanalen/gruppa til 42\n", + "\n", + "while True:\n", + " if button_a.is_pressed():\n", + " radio.send('Hei!')\n", + " display.scroll('SENDT')\n", + " elif button_b.is_pressed():\n", + " melding = radio.receive()\n", + " display.scroll(melding)\n", + "```\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Lag et program som sender en beskjed eller et hemmelig tall til en annen micro:bit.\n", + "````\n", + "\n", + "## Eksterne tilkoblinger (pins)\n", + "Det er egentlig veldig mange måter en kan feste ting til en micro:bit på. Inngangene heter \"pins\", og det er flere av dem enn du først kanskje antar. Bildet nedenfor illustrerer mulighetene for tilkobling:\n", + "\n", + "\n", + "\n", + "Vi skal konsentrere oss om utgangene som er formet som store, runde hull (0, 1, 2, 3V og GND). \n", + "\n", + "### Spenning, strøm og resistans\n", + "La oss først repetere litt om spenning, strøm og motstand (resistans). _Spenning_ er den elektriske potensielle energien mellom to punkter. Det vil si at desto høyere spenning, desto høyere potensiell energi er det f.eks. mellom to ladninger. Høy potensiell energi kan føre til bevegelse, f.eks. av ladninger som elektroner. Når slike ladninger beveger seg, får vi _strøm_.\n", + "\n", + "```{admonition} Spenning\n", + "Spenning, _U_, er elektrisk potensiell energi mellom to punkter og måles i V (volt).\n", + "```\n", + "\n", + "```{admonition} Strøm\n", + "Strøm, _I_, er antallet ladninger som passerer et visst punkt hvert sekund og måles i ampere (A).\n", + "```\n", + "\n", + "Siden spenning får elektroner til å bevege seg, kan det ses på som et slags \"elektrisk trykk\". Desto høyere trykk, desto flere elektroner går igjennom en leder (f.eks. en kobbertråd/ledning), altså får vi en høyere strøm av elektroner.\n", + "\n", + "Noe som kan hindre en slik strøm av ladninger, er _motstand_. En elektrisk leder har lav motstand. Dette er typisk for metaller, f.eks. kobber og gull. Dette er fordi det er metallbinding mellom metallatomene. Du husker kanskje at dette er en binding der atomene deler på alle elektronene i en \"elektronsjø\"? Siden elektronene er så udefinert bundet, kan de lett flytte på seg. Det vil si at en spenning lett lager en strøm av elektroner gjennom et slikt metall.\n", + "\n", + "Plast, porselen og tre er eksempler på materialer som ikke leder strøm godt pga. liten mulighet for elektronflyt gjennom kovalente bindinger. Vi sier at disse materialene har _høy resistans_. Når vi kobler elektriske kretser, ønsker vi ofte å sette inn ulike motstander for å ikke få for høy strøm gjennom de elektriske komponentene våre. Disse motstandene ser ofte slik ut i småelektronikk:\n", + "\n", + "\n", + "\n", + "```{admonition} Resistans\n", + "Resistans, _R_, er motstand mot strøm i en elektrisk krets og måles i ohm ($\\Omega$).\n", + "```\n", + "\n", + "### Lese av og skrive til eksterne tilkoblinger\n", + "For å sette spenning på pins, og/eller lese av spenningen, kan vi i blokk gjøre slik:\n", + "\n", + "\n", + "\n", + "Her skrives verdien 1 til P0. Når vi skriver _digitalt_, betyr det at vi enten setter strømmen på (1) eller av (0). Det vil si 0 V eller 3 V. Hvis vi vil variere strømmen mellom disse verdiene, må vi bruke \"skriv analog\" isteden. Når vi setter på analog strøm, kan vi variere ved å sette verdien mellom 0 (0 V) og 1023 (3 V).\n", + "\n", + "I den andre linja i programmet leses analogverdi fra P1, dvs. at det leses av en verdi mellom 0 og 1023 og lagres i variabelen _spenning_. Hvis vi f.eks. har kobla pin0 med pin1 med en motstand imellom, kan vi lese av spenningen mellom pin-ene. Husk derimot at 1023 ikke betyr 1023 V, men 3 V!\n", + "\n", + "Vi skal konsentrere oss om pin0, pin1 og pin2 + GND. Pin-en som er merka med 3V er litt spesiell, så den skal vi kun bruke hvis vi må. I Python-kode kan vi lese av og sette på strøm slik:\n", + "\n", + "```{code-block} Python\n", + "from microbit import *\n", + "\n", + "while True:\n", + "\tpin0.write_digital(1)\n", + "\tspenning = pin1.read_analog()\n", + "\tdisplay.scroll(spenning)\n", + "```\n", + "\n", + "Legg derimot merke til at Python-funksjonene som brukes, kan gi en helt annen følsomhet og spenning enn blokkene! Det er altså ikke 100 \\% samsvar mellom de ulike måtene å kode på og elektronikken.\n", + "\n", + "Vi kan også sende strøm igjennom kroppen (!) ved hjelp av f.eks. _pin0.is\\_touched_. Hvis vi da tar på pin0 og GND samtidig (lukka krets), aktiveres denne funksjonen. Blokkprogrammet nedenfor viser en beskjed når du gjør nettopp dette:\n", + "\n", + "\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Lag programmet ovenfor i Python.\n", + "````" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Sensorer\n", + "En elektrisk sensor er et instrument som tolker et elektrisk signal om til en størrelse vi ønsker å måle. En temperatursensor kan for eksempel sende strøm gjennom en leder, for eksempel en platinatråd. Ved høye temperaturer øker motstanden i en slik leder, og det vil dermed være mer strøm som kommer igjennom tråden ved lave temperaturer. Hvis vi måler spenningen som har gått tapt, kan vi dermed oversette dette til temperatur. Men dette krever _kalibrering_.\n", + "\n", + "Kalibrering er en prosess som kreves for alle sensorer. Det vil si å måle (minst) to kjente størrelser. F.eks. kan temperatursensoren vår ovenfor testes i isvann. Dette vannet holder 0 $^\\circ$C. Vi leser av spenningen i dette vannet. Deretter tester vi i kokende vann (100 $^\\circ$C) og leser av spenningen der også. Disse to spenningene utgjør målepunkter vi er sikre på, også kan vi anta at spenningen er lineær mellom disse to punktene (og kanskje utenfor også?).\n", + "\n", + "La oss si at vi setter på en spenning, måler strømmen og regner om til resistans ($U = RI$). Vi sier at resistansen ved 0 $^\\circ$C var 100 $\\Omega$ og resistansen ved 100 $^\\circ$C var ca 140 $\\Omega$. Vi trekker en rett linje gjennom disse punktene, og hvis vi f.eks. neste gang leser av 120 $\\Omega$, veit vi at temperaturen er 50 $^\\circ$C. Dette vil ikke stemme for alle temperaturer, og vi sier at sensoren har et _lineært gyldighetsområde_. Derfor står det ofte på sensorer i hvilket intervall sensoren måler korrekt. Figuren nedenfor viser en temperatursensor med gyldighetsområde fra ca. -50 til 300 $^\\circ$C\n", + "\n", + "\n", + "\n", + "La oss nå bruke de innebygde sensorene i micro:bit først, så skal vi prøve å lage egne sensorer litt seinere. Vi kan hente data fra de ulike innebygde sensorene slik:\n", + "\n", + "\n", + "\n", + "Akselerasjonen gir akselerasjon i milli-g ($1 \\ g = 9.81 \\ m/s^2$) i _x_-, _y_- eller _z_-retning. Kompasset gir retning i grader (360$^\\circ$ er nord, 90$^\\circ$ er øst, osv.). Temperaturen gir temperaturen på prosessoren i $^\\circ$C, men den er ikke kalibrert, og vil ofte gi for høy temperatur. Men den er grei for å se på enkle temperaturendringer.\n", + "\n", + "I Python kan du gjøre slik:\n", + "\n", + "```{code-block} Python\n", + "from microbit import *\n", + "\n", + "while True:\n", + "\takselerasjon = accelerometer.get_x()\n", + "\tkompassretning = compass.heading()\n", + "\ttemperatur = temperature()\n", + "```\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Programmene ovenfor viser ikke variablene på skjermen. Modifiser dem slik at de viser det du måler, f.eks. ved ulike tastetrykk.\n", + "```\n", + "\n", + "Nå har du lært nok til å kunne bryne deg på noen litt mer utforskende og kreative oppgaver. Lykke til!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Oppgaver\n", + "\n", + "```{admonition} Oppgave 1\n", + ":class: tip\n", + "Lag et program som logger temperaturen og sender den til en annen micro:bit.\n", + "```\n", + "\n", + "```{admonition} Oppgave 2\n", + ":class: tip\n", + "Lag et program som teller antall ganger du trykker på en knapp, og viser deg hvor mange ganger du trykker på knappen.\n", + "```\n", + "\n", + "```{admonition} Oppgave 3\n", + ":class: tip\n", + "Et _vaterpass_, eller bare _vater_, er et instrument som måler om noe står eller ligger vinkelrett. Lag ditt eget vater ved hjelp av akselerasjons-sensoren på micro:bit-en. Tips: Det er virkelig vanskelig å få micro:bit-en til å ligge 100 \\% flatt -- prøv med et intervall du synes er greit.\n", + "```\n", + "\n", + "```{admonition} Oppgave 4\n", + ":class: tip\n", + "Lag en skritteller ved hjelp av akselerometeret.\n", + "```\n", + "\n", + "````{admonition} Oppgave 5\n", + ":class: tip\n", + "Programmet nedenfor gjør micro:bit om til en krystallkule. Fyll inn og modfiser som du ønsker, og lag dine egne beskjeder.\n", + "\n", + "```{code-block} Python\n", + "from microbit import *\n", + "import random\n", + "\n", + "svar = [\n", + " \"Det er sikkert\",\n", + " \"Tvilsomt\",\n", + " \"Mine kilder sier nei\",\n", + " \"Du har blitt el-overfølsom\",\n", + "]\n", + "\n", + "while True:\n", + " if accelerometer.was_gesture('shake'):\n", + " display.scroll(random.choice(svar))\n", + " sleep(10)\n", + "```\n", + "````\n", + "\n", + "```{admonition} Oppgave: Overlev på Mars!\n", + ":class: tip\n", + "Du er ansatt som astrobiolog og har fått ansvar for det eneste drivhuset på Mars. Siden både vann og mat er en begrenset ressurs, må du overvåke systemene nøye for å få mest mulig optimal avling med minst mulig bruk av ressurser. Først får du som oppdrag å lage en fuktighetssensor som måler fuktigheten i jorda.\n", + "\n", + "![dyrking på mars](https://github.com/andreasdh/Programmering-og-modellering/blob/master/docs/bilder/mars.png?raw=true)\n", + "\n", + "Sensoren du skal lage, baserer seg på at vi kobler to spikere til hver sin pin i en micro:bit. Disse spikerne setter vi ned i jorda. Deretter setter vi på en spenning (pin 0) og måler spenningsfallet (pin 1) som forårsakes av motstanden i jorda.\n", + "\n", + "1. Hvordan kan måling av strøm/spenning være et mål på fuktighet i jorda?\n", + "2. Foreslå en måte vi kan oversette spenning til prosentvis fuktighet.\n", + "3. Koble en ledning med bananplugg til pin1 og en annen til pin2.\n", + "4. Fest en spiker i den frie enden av hver av bananpluggene med en krokodilleklemme.\n", + "5. Diskuter hvordan du vil kalibrere sensoren, altså vite hva som er høyest og hva som er lavest fuktighet.\n", + "6. Lag et program som:\n", + "- Setter spenning på via pin0.\n", + "- Leser av spenningen via pin1 når du f.eks. trykker på en knapp.\n", + "- Viser spenningen til displayet. Her kan du gjerne oversette spenningen til prosent fuktighet. Spenningen blir gitt som et tall mellom 0 og 1023, der 0 er 0 V og 1023 er 3 V.\n", + "7. Test sensoren på ulike planter med tørr og våt jord. Hva viser sensoren?\n", + "8. Modifiser programmet som du ønsker, f.eks. slik at det:\n", + " - Sier fra når det er for lite vann.\n", + " - Gir tommel opp/smilefjes når det er nok vann.\n", + " - Kommuniserer med en annen micro:bit som fungerer som mottaker.\n", + "9. Ekstra: Koble til en liten motor som setter på vanning når fuktigheten i jorda er under en viss verdi. Dette må legges til i programmet ditt.\n", + "10. Utvid programmet og oppsettet med andre sensorer, for eksempel luftfuktighetssensor og temperatursensor.\n", + "```" + ] + } + ], + "metadata": { + "celltoolbar": "Edit Metadata", + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.12" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/intro.md b/_sources/docs/intro.md new file mode 100644 index 00000000..e5f900ae --- /dev/null +++ b/_sources/docs/intro.md @@ -0,0 +1,15 @@ +# Programmering og modellering + +Velkommen til ressursside for Programmering og modellering X. Her vil du finne ulike ressurser i emnet. + +```{admonition} Innhold +På siden vil du finne følgende: +- Tema 1: Grunnleggende programmering. Repetisjon av og litt mer om det helt grunnleggende: Variabler, vilkår og løkker. +- Tema 2: Kodestrukturering. Strukturering av kode med funksjoner og klasser. +- Tema 3: Datahåndtering. Lese og plotte data. Statistikk og maskinlæringsmodeller. +- Tema 4: Algoritmer. Vi ser på noen algoritmer fra matematikken. +- Tema 5: Modellering. Dette er den viktigste delen av faget. Vi lager og utforsker ulike modeller, spesielt regresjonsmodeller og modeller basert på differens- og differensiallikninger. +- Oppgaver og datafiler +``` + +Når du gjennomgår fagstoffet på sidene, bør du gjøre underveisoppgavene. Da får du øvd deg regelmessig på aktuelle problemer. Dette er mye mer effektivt enn å bare lese om programmering! Noen ganger får du også muligheten til å bruke en interaktiv editor (Trinket) til å gjøre oppgaver, for eksempel fylle inn noe som mangler eller rette opp feil. Nettleseren din husker da hva du har gjort i disse editorene, så hvis du vil tilbakestille programmet, må du trykke på hamburgermenyen (de tre strekene) i editorvinduet og trykke på “reset”. God fornøyelse! \ No newline at end of file diff --git a/_sources/docs/kurs/programmering_intro.ipynb b/_sources/docs/kurs/programmering_intro.ipynb new file mode 100644 index 00000000..9c1e9f14 --- /dev/null +++ b/_sources/docs/kurs/programmering_intro.ipynb @@ -0,0 +1,254 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Programmering med ENT3R\n", + "\n", + "
\n", + "\n", + "Datamaskinen er et fantastisk verktøy som lar oss gjøre ting som nesten er umulig uten. La oss se litt på hva vi kan få til!\n", + "\n", + "## Gjett tallet\n", + "\n", + "La oss starte med et lite \"gjettespill\". Spillet finner et tilfeldig tall mellom 0 og 100, og du må deretter gjette deg fram til hva tallet skal være. Kjør programmet ved å trykke på \"play\"-knappen over programkoden. Deretter skriver du inn gjettet ditt i ruta til høyre. Hvor mange forsøk bruker du?\n", + "\n", + "\n", + "\n", + "Husk at du ikke trenger å forstå alt som foregår i koden ovenfor enda, men kanskje du kan forstå noe?\n", + "\n", + "```{admonition} Oppgave\n", + ":class: tip\n", + "Prøv å forklare hva koden ovenfor gjør. Hvilke kodesnutter syns du gir mening, og hvilke syns du er vanskelig å forstå?\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "I gjetteprogrammet bruker vi til slutt kommandoen _print_ for å gi beskjeden om at du har vunnet spillet. For å få noe ut av et program, må vi nemlig be datamaskinen om å \"skrive ut\" noe. Dette gjør vi med kommandoen _print_. Dersom vi ønsker å skrive ut flere variabler, må vi skille dem med komma i print-kommandoen. Her ser du to eksempler:\n", + "\n", + "\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Eksperimenter med programmet ovenfor og forklar hvordan print fungerer. Gi gjerne variablene _navn_ og _alder_ en annen verdi. Bruk for eksempel ditt eget navn og alder eller navnet og alderen på noen du kjenner.\n", + "```\n", + "\n", + "```{admonition} Løsning\n", + ":class: tip, dropdown\n", + "Kommandoen _print_ gir oss et ouput fra programmet vårt. Vi sier at noe blir skrevet ut til \"konsollen\". Konsollen er der du får output i et programmeringsmiljø. Inni print-kommandoen kan vi skrive flere ting. Da må hver variabel og hver verdi være adskilt med komma.\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Løkker\n", + "\n", + "Den kanskje viktigste strukturen i programmering er løkker. De lar datamaskinen gjenta en operasjon så mange ganger vi vil. Det er dette som er datamaskinens styrke.\n", + "\n", + "```{image} https://cdn.pixabay.com/photo/2015/06/08/15/02/roller-coaster-801833_960_720.jpg\n", + ":alt: berg-og-dalbane\n", + ":class: bg-primary mb-1\n", + ":height: 300px\n", + ":align: center\n", + "```\n", + "\n", + "## Skilpaddegrafikk\n", + "Vi skal se hvordan løkker fungerer ved å introdusere deg for en skilpadde. Han heter Gunnar. Her er han:\n", + "\n", + "\n", + "\n", + "
\n", + "\n", + "```{image} https://cdn.pixabay.com/photo/2016/11/29/08/31/animal-1868436_960_720.jpg\n", + ":alt: skilpadde\n", + ":class: bg-primary mb-1\n", + ":height: 200px\n", + ":align: center\n", + "```\n", + "\n", + "
\n", + "\n", + "Gunnar følger enkle kommandoer, som \"forward\", \"backward\", \"right\" og \"left\".\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Endre programmet ovenfor slik at Gunnar tegner en trekant. Hva er sammenhengen mellom vinkelen som skilpadden snur og vinklene i trekanten?\n", + "```\n", + "\n", + "````{admonition} Løsning\n", + ":class: tip, dropdown\n", + "Du kan tegne hvilken som helst trekant, men dersom vi velger en likesidet trekant, må alle vinkler være 60 grader (slik at summen av de tre vinklene er 180 grader). Men vi kan ikke snu skilpadden 60 grader mot venstre. Da blir ikke den indre vinkelen i trekanten 60 grader. Det er altså forskjell på å snu 60 grader og lage en vinkel på 60 grader. Siden en helomvending er 180 grader, må skilpadden snu 180 - 60 = 120 grader for at vinklene i trekanten skal være 60 grader.\n", + "\n", + "```{code-block} Python\n", + "from turtle import *\n", + "\n", + "shape(\"turtle\") # gir pekeren skilpaddeform \n", + "color(\"limegreen\") # gjør skilpadden limegrønn\n", + "forward(100) # går framover 100 steg\n", + "left(120) # vender 30 grader mot høyre (går ikke framover)\n", + "forward(100) # går framover 100 steg\n", + "left(120)\n", + "forward(100)\n", + "```\n", + "````\n", + "\n", + "### Skilpadder i løkker\n", + "Å tegne en trekant krever få linjer kode, men hva hvis du vil tegne en åttekant, en førtitokant, eller en nittisekskant? Det er slitsomt og kjedelig å skrive samme kommando hundrevis av ganger. Og det er totalt unøvdendig. Vi bruker nemlig løkker til å gjenta kode, for eksempel slik:\n", + "\n", + "\n", + "\n", + "```{admonition} Oppgave\n", + ":class: tip\n", + "Modifiser programmet ovenfor slik at skilpadden Gunnar tegner en 20-kant.\n", + "```\n", + "\n", + "```{admonition} Løsning\n", + ":class: tip, dropdown\n", + "Det er så enkelt som å endre _n_ til 20. Problemet er at 20-kanten blir litt stor, så vi kan også med fordel endre sidelengden, for eksempel til 25.\n", + "```\n", + "\n", + "```{admonition} Oppgave\n", + ":class: tip\n", + "Få Gunnar til å tegne et hus. Du velger hvor detaljert huset skal være, men du bør bruke løkker for å automatisere ting.\n", + "```\n", + "\n", + "````{admonition} Løsning\n", + ":class: tip, dropdown\n", + "Mulighetene er uendelige, men her er et enkelt forslag:\n", + "```{code-block} Python\n", + "from turtle import *\n", + "\n", + "for i in range(4):\n", + " forward(100)\n", + " right(90)\n", + " \n", + "for i in range(3):\n", + " forward(100)\n", + " left(120)\n", + "```\n", + "````\n", + "\n", + "```{admonition} Oppgave\n", + ":class: tip\n", + "Få Gunnar til å tegne et menneske eller en blomst.\n", + "```\n", + "\n", + "````{admonition} Løsning\n", + ":class: tip, dropdown\n", + "Mulighetene er uendelige, men her er et vakkert eksemplar av et menneske\n", + "```{code-block} Python\n", + "from turtle import *\n", + "\n", + "n = 100\n", + "vinkel = 360/n\n", + "\n", + "for i in range(n):\n", + " forward(3)\n", + " left(vinkel)\n", + " \n", + "right(90)\n", + "forward(50)\n", + "\n", + "for i in range(2):\n", + " left(120)\n", + " forward(75)\n", + " backward(75)\n", + "\n", + "left(120)\n", + "forward(50)\n", + "\n", + "right(30)\n", + "forward(75)\n", + "backward(75)\n", + "left(60)\n", + "forward(75)\n", + "```\n", + "````" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Skilpaddekunst\n", + "Du kan være ganske så kreativ med skilpaddegrafikk. Her er et eksempel på et lite kunstverk som du kan eksperimentere med og gjøre til ditt eget. Bruk gjerne oversikten nedenfor over ulike turtle-kommandoer og farger.\n", + "
\n", + "\n", + "```{image} https://cdn.pixabay.com/photo/2018/03/04/23/25/sea-turtle-3199593_960_720.png\n", + ":alt: skilpaddekunst\n", + ":height: 200px\n", + ":align: center\n", + "```\n", + "
\n", + "\n", + "\n", + "\n", + "`````{tabbed} Turtle-kommandoer\n", + "````{code-block} Python\n", + "from turtle import * # Importerer kommandoene vi trenger\n", + "\n", + "forward(100) # Går framover 100 skritt\n", + "backward(100) # Går bakover 100 skritt\n", + "right(45) # Snur 45 grader mot høyre\n", + "left(45) # Snurt 45 grader mot venstre\n", + "goto((30,45)) # Går til koordinaten (30, 45)\n", + "print(pos()) # Skriver ut posisjonen til pekeren\n", + "penup() # Slutter å tegne\n", + "pendown() # Begynner å tegne igjen\n", + "\n", + "shape('turtle') # Gir pekeren form som en skilpadde\n", + "color('green') # Fargelegger pekeren\n", + "pencolor('red') # Fargelegger det vi tegner\n", + "pensize(10) # Angir tykkelsen på strekene som tegnes\n", + "speed(4) # Tegnefart fra 1-10\n", + "````\n", + "`````\n", + "\n", + "`````{tabbed} Oversikt over fargenavn\n", + "![farger](https://matplotlib.org/2.0.2/_images/named_colors.png)\n", + "`````" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Avsluttende oppgave\n", + "```{admonition} Avsluttende oppgave\n", + "Lag logoen til ENT3R med Turtle-grafikk! Du kan gjerne være kreativ med farger og former. Ta også gjerne utgangspunkt i programmet nedenfor.\n", + "\n", + "\n", + "\n", + "```" + ] + } + ], + "metadata": { + "celltoolbar": "Edit Metadata", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/kurs/smittemodellering.ipynb b/_sources/docs/kurs/smittemodellering.ipynb new file mode 100644 index 00000000..61b44131 --- /dev/null +++ b/_sources/docs/kurs/smittemodellering.ipynb @@ -0,0 +1,195 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Smittemodellering\n", + "\n", + "Hva tenker du når du hører ordet modell? En miniatyrdel av en liten by, kanskje? Eller kanskje du tenker på atommodeller? En modell er en forenklet representasjon av virkeligheten. Vi kan aldri representerere virkeligheten slik den er, så alle modeller vil ha visse forutsetninger og begrensninger. Her skal vi se på _matematiske modeller_, altså bruk av matematikk for å beskrive et eller annet fenom. Nærmere bestemt skal vi se på et veldig aktuelt tema i våre dager, nemlig modellering av smittespredning.\n", + "\n", + "En modelleringsprosess innebærer flere trinn. For det første må vi ha en observasjon eller et fenomen vi ønsker å studere. Ut fra visse egenskaper ved dette systemet lager vi en modell som skal beskrive systemet under visse betingelser. Denne modellen kan vi teste, for eksempel gjennom eksperimenter eller simuleringer. Da får vi data som vi kan bruke til å evaluere modellens gyldighet. Deretter kan vi eventuelt justere modellen og gjøre nye simuleringer og målinger.\n", + "\n", + "Modellering er altså en kontinuerlig prosess der modeller hele tiden evalueres og justeres opp mot virkeligheten. Programmering kan gjøre denne prosessen enklere fordi vi med noen tastetrykk kan endre modellen og observere utfallet av dette. For FHI har smittemodellering vært en svært viktig del av håndteringen av koronaviruspandemien, så la oss prøve oss som \"smittemodellerere\"!\n", + "\n", + "\n", + "### Modell 1\n", + "Vi begynner med en enkel modell for smittespredning der antall smittede øker med en prosentvis andel hver dag. Vi kan da beskrive utviklingingen i antall smittede indivier *I* (\"Inceptibles\") slik:\n", + "\n", + "$$I_{t+1} = I_t + aI_t$$\n", + "\n", + "Her betyr indeksen _t + 1_ betyr at det er antall smittede ved neste tidspunkt (her neste dag), mens indeksen _t_ betyr antall smittede på nåværende tidspunkt. Det er jo ganske logisk at antall smittede neste dag er avhengig av antall smittede i dag. I tillegg øker antall smittede med en vekstfaktor _a_. Vi kaller _a_ for en _parameter_. Disse parameterne er ofte bestemt av observasjoner og data, så vi kan ikke vite hva som er en god verdi for _a_ til å begynne med. \n", + "\n", + "- Forklar med egne ord hva modellen forteller. Drøft også i hvilke sammenhenger det kan være hensiktsmessig å bruke en slik modell. Er det en realistisk modell i noen sammenhenger?\n", + "\n", + "```{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "\n", + "Modellen forteller at antall smittede individer ved neste tidssteg er lik antall smittede individer ved forrige tidssteg + en viss andel (a) av antall individer som sprer smitten videre.\n", + "\n", + "Modellen forutsetter at det ikke er noen immunitet innenfor smittemengden, altså at ingen smittede møter på personer som allerede er smittet. Det kan være et realistisk bilde i en stor populasjon i begynnelsen av et smitteforløp. Det er derfor usannsynlig at modellen beskriver utviklingen langt fram i tid. Modellen forutsetter også at ingen blir friske i løpet av den tiden vi ser på. Igjen peker dette på at modellen kun representerer et kort tidsrom.\n", + "```\n", + "\n", + "- Fyll inn det som mangler i programmet nedenfor for å simulere sykdomsutviklingen. Dersom du vil, kan du selvfølgelig viske ut alt og bygge programmet fra grunnen av. Varier med ulike verdier av _a_ og forklar betydningen av parameteren _a_ ut fra det du ser.\n", + "\n", + "\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "from pylab import *\n", + "\n", + "N = 157759 # Populasjonsstørrelse\n", + "a = 0.2 # Kontaktrate per uke\n", + "tid_slutt = 48 # Antall uker vi ønsker å simulere\n", + "\n", + "# Startverdier\n", + "I = 3 # Antall smittede til å begynne med\n", + "\n", + "# Lister for å spare på verdiene\n", + "smittede = [I]\n", + "t = [0]\n", + "\n", + "for tid in range(tid_slutt):\n", + " I = I + a*I\n", + " # Legger inn verdier i listene\n", + " smittede.append(I)\n", + " t.append(tid)\n", + "\n", + "plot(t, smittede, label = \"Smittede\")\n", + "xlabel(\"Antall uker fra siste uke i september 2004\")\n", + "ylabel(\"Antall individer\")\n", + "legend() # Viser merkelapper\n", + "show()\n", + "```\n", + "````" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Modell 2\n", + "\n", + "La oss utvide modellen og innføre en ny kategori av individer som er mottakelige for smitte. Vi kaller dem _S_ (susceptibles).\n", + "\n", + "Vi kan anta at de smittede da utvikler seg slik:\n", + "\n", + "$$I_{n+1}=I_n+aI_nS_n$$\n", + "\n", + "De mottakelige kan da beskrives slik:\n", + "\n", + "$$S_{n+1}=S_n-aI_nS_n$$\n", + "\n", + "- Bekriv modellene og prøv å forklare alle leddene og faktorene.\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "\n", + "Modellen sier at antall mottakelige er lik antall mottakelige ved forrige tidssteg minus andelen som er smittet. Årsaken til at vi også ganger inn de mottakelige her, er at smittespredningen nå avhenger av både mottakelige og de som allerede er smittet. \n", + "````\n", + "\n", + "- Fyll inn det som mangler i programmet nedenfor for å simulere sykdomsutviklingen. Dersom du vil, kan du selvfølgelig viske ut alt og bygge programmet fra grunnen av. Prøv å variere antall smittede til å begynne med. Beskriv utviklingen til hverandre og diskuter hva som skjer. Du kan også prøve med andre modeller, hvis du vil. Legg merke til at vi lagrer endringen i I og S i en egen variabel for å bruke I og S ved samme tidspunkt.\n", + "\n", + "\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "from pylab import *\n", + "\n", + "N = 157759 # Populasjonsstørrelse\n", + "a = 0.5/N # Kontaktrate\n", + "tid_slutt = 48 # Antall uker vi ønsker å simulere\n", + "\n", + "# Startverdier\n", + "I = 3 # Antall smittede til å begynne med\n", + "S = N - I # Antall usmittede til å begynne med\n", + "\n", + "# Lister for å spare på verdiene\n", + "mulige = [S]\n", + "smittede = [I]\n", + "t = [0]\n", + "\n", + "for i in range(tid_slutt):\n", + " endring = a*S*I\n", + " I = I + endring\n", + " S = S - endring\n", + " # Legger inn verdier i listene\n", + " smittede.append(I)\n", + " mulige.append(S)\n", + " t.append(i)\n", + " \n", + "plot(t, smittede, label = \"Smittede\")\n", + "plot(t, mulige, label = \"Mulige\")\n", + "xlabel(\"Antall uker fra siste uke i september 2004\")\n", + "ylabel(\"Antall individer\")\n", + "legend() # Viser merkelapper\n", + "show()\n", + "```\n", + "````" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Modell 3\n", + "La oss nå utforske en modell som også tar hensyn til at det går an å bli frisk fra sykdommen. Da innfører vi en kategori til, nemlig de friske og tidligere smittede. Disse har da immunitet og kan ikke bli smittet igjen. Vi kaller dem R (recovered/removed), og de kan beskrives slik:\n", + "\n", + "$$ R_{n+1}=R_n+bI_n$$\n", + "\n", + "Da må de smittede utvikle seg slik:\n", + "\n", + "$$I_{n+1}=I_n+aS_nI_n-bI_n$$\n", + "\n", + "Antall usmittede, men mottakelige individer, S, må fortsatt følge denne modellen:\n", + "\n", + "$$S_{n+1}=S_n-aI_nS_n$$\n", + "\n", + "Dette kaller vi SIR-modellen for smitteutvikling.\n", + "\n", + "\n", + "- Beskriv hva de ulike faktorene og leddene betyr. Hva tror dere den nye parameteren _b_ beskriver?\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "\n", + "Parameteren _b_ beskriver bedringsraten, altså hvor stor andel av de smittede som blir friske, beskrevet av leddet $bI_n$.\n", + "````\n", + "\n", + "- Nedenfor er det et program som simulerer smitte ved hjelp av SIR-modellen. Kjør programmet og forklar for hverandre hva det gjør, og hva resultatene er.\n", + "\n", + "\n", + "\n", + "\n", + "- Nå skal vi validere modellen vår. Vi utvider programmet og sammenlikner modellen med reelle data som viser antall smittede hver uke. Les filen «influensa.txt» og plott antall smittede (_I_) i det samme koordinatsystemet som den modellerte smittespredningen. Bruk gjerne programmet fra forrige aktivitet.\n", + "\n", + "- Sammenlikne modellen og de reelle dataene, og tilpass gjerne koeffisientene _a_ og _b_ slik at modellen samsvarer bedre med dataene.\n", + "\n", + "" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/oppgaver/differensiallikninger_oppgaver.ipynb b/_sources/docs/oppgaver/differensiallikninger_oppgaver.ipynb new file mode 100644 index 00000000..0c46305f --- /dev/null +++ b/_sources/docs/oppgaver/differensiallikninger_oppgaver.ipynb @@ -0,0 +1,186 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "d70b440e", + "metadata": {}, + "source": [ + "# Differensiallikninger (oppgaver)\n", + "\n", + "## Differensiallikninger\n", + "Vi har sett på modeller som beskriver endringer ved bestemte tidssteg, for eksempel i smittemodellen vår:\n", + "\n", + "$$I_{n+1}=I_n+aI_nS_n$$\n", + "\n", + "som er det samme som å skrive:\n", + "\n", + "$$\\Delta I = aI_nS_n$$\n", + "\n", + "Dette er eksempler på _differenslikninger_, der vi finner en tallfølge, som for eksempel beskriver antall smittede i en populasjon. Men hva hvis vi gjør tida mellom endringene så liten som mulig? Da får vi ikke en differenslikning, men en _differensiallikning_.\n", + "\n", + "En differensiallikning er en likning som inneholder den deriverte (altså den momentane endringen) av en funksjon, for eksempel:\n", + "\n", + "$$y' = 1$$\n", + "$$y' = y$$\n", + "$$y' - 2x = -1$$\n", + "\n", + "Vi har dermed uttrykk for en momentan endring. Likningene ovenfor er løsbare, men de fleste differensiallikninger er ikke det. Derfor er numeriske metoder for løsing av difflikninger svært viktige å kunne.\n", + "\n", + "## Eksempler\n", + "Det viser seg at vi faktisk ofte kjenner til _endringen_ (f'(x)) i et system framfor _tilstanden_ (f(x)). Eksempler på dette er:\n", + "\n", + "- Newtons 2. lov: $\\Sigma F = ma \\Leftrightarrow v' = \\frac{\\Sigma F}{m}$. \n", + "- Populasjonsdynamikk: $B'(t) = k\\cdot B(t)$ og $B'(t) = a\\cdot B(t)\\left(1-\\frac{B(t)}{b} \\right)$.\n", + "- Smittemodeller: $I'(t) = aI(t)S(t)$.\n", + "\n", + "```{admonition} Underveisoppgave: Differensiallikninger\n", + ":class: tip\n", + "Forklar hva en differensiallikning er og hvorfor Newtons 2. lov og modeller for populasjonsvekst og smitte kan formuleres som differensiallikninger.\n", + "```\n", + "\n", + "## Eulers metode for å løse differensiallikninger\n", + "\n", + "Eulers metode er en enkel metode som brukes til å løse differensiallikninger. Det vil si at vi finner en funksjon dersom vi har gitt et uttrykk for den deriverte av funksjonen.\n", + "\n", + "Siden vi går fra f'(x) til f(x), *integrerer* (antideriverer) vi differensiallikningen. Eulers metode går ut på å finne en verdi for $f(x + \\Delta x)$ gitt en startverdi $f(x_0)$ og et uttrykk for $f'(x)$:\n", + "\n", + "$$f(x+\\Delta x) \\approx f(x) + f'(x)\\cdot \\Delta x$$\n", + "\n", + "Dette er en iterativ algoritme. Vi starter derfor med $f(x_0)$ og finner de påfølgende funksjonsverdiene slik:\n", + "\n", + "$$f(x_1) \\approx f(x_0) + f'(x_0)\\cdot \\Delta x$$\n", + "$$f(x_2) \\approx f(x_1) + f'(x_1)\\cdot \\Delta x$$\n", + "$$f(x_3) \\approx f(x_2) + f'(x_2)\\cdot \\Delta x$$\n", + "$$...$$\n", + "\n", + "```{admonition} Underveisoppgave: Eulers metode\n", + ":class: tip\n", + "Utled Eulers metode fra den numeriske tilnærmingen til den deriverte (Newtons kvotient/framoverdifferansen).\n", + "```\n", + "\n", + "## Et program som løser differensiallikninger\n", + "\n", + "Siden vi skal løse differensiallikningene på en datamaskin, må vi jobbe med *funksjonsverdier*, ikke funksjonsuttrykk. Vi setter derfor opp noen startbetingelser som definerer intervallet vi skal integrere over." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "fa728a65", + "metadata": {}, + "outputs": [], + "source": [ + "x_start = 0 # Startverdi\n", + "x_slutt = 5 # Sluttverdi\n", + "dx = 1E-5 # Steglengde mellom x-verdiene\n", + "N = int((x_slutt-x_start)/dx) # Antall intervaller\n", + "y0 = 1 # Initialbetingelse" + ] + }, + { + "cell_type": "markdown", + "id": "b068e5b1", + "metadata": {}, + "source": [ + "```{admonition} Underveisoppgave: Startverdier\n", + ":class: tip\n", + "Forklar hva de ulike størrelsene i programmet ovenfor betyr. Skriv ned de størrelsene du ikke forstår.\n", + "```\n", + "\n", + "Så trenger vi å definere funksjonen. La oss ta en enkel funksjon: $f'(x) = 1$. Definer funksjonen i vinduet nedenfor som en Python-funksjon. For å sjekke at du har gjort riktig, skriv ut et funksjonskall. Dette bør skrive ut 1 uansett argumentverdier i funksjonen. Teknisk sett trenger ikke funksjonen noen parametere, men vi pleier å definere både _x_ og _y_ som parametre i en funksjon som representerer en difflikning.\n", + "\n", + "\n", + "\n", + "Nå kan vi legge til noen tomme arrayer som vi skal fylle med verdier:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "902233b1", + "metadata": {}, + "outputs": [], + "source": [ + "from pylab import *\n", + "\n", + "x = zeros(N+1)\n", + "y = zeros(N+1)" + ] + }, + { + "cell_type": "markdown", + "id": "3c64cbc8", + "metadata": {}, + "source": [ + "```{admonition} Underveisoppgave: Arrayer\n", + ":class: tip\n", + "Legg inn arrayene i programmet. Prøv å forklare hvorfor vi lager N+1 verdier, og ikke N, ved å tegne opp et intervall fra 0 til 5 med steglengde (dx) 1. Hvor mange intervaller har vi, og hvor mange verdier har vi?\n", + "```\n", + "\n", + "\n", + "\n", + "Nå kan vi løse differensiallikningen med Eulers metode. En pseudokode for dette kan se slik ut:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cc6332f6", + "metadata": {}, + "outputs": [], + "source": [ + "gjenta N ganger:\n", + " y_{n+1} = y_n + yderivert(y_n, x_n)*dx\n", + " x_{n+1} = x_n + dx" + ] + }, + { + "cell_type": "markdown", + "id": "4de4904f", + "metadata": {}, + "source": [ + "Bruk Eulers metode til å løse differensiallikningen og plot _y_ som funksjon av _x_:\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "id": "6b5ef1bb", + "metadata": {}, + "source": [ + "### Oppgaver\n", + "Bruk funksjonen $y' = y + x$ når du løser oppgavene nedenfor.\n", + "\n", + "a) Lag programmet ovenfor uten funksjoner. Hvor må differensiallikningen være i programmet nå?\n", + "\n", + "b) Lag programmet ovenfor med lister istedenfor arrayer. Hva syns du er enklest?\n", + "\n", + "c) Plott løsninger for fem ulike initialbetingelser i samme plott. Hva sier dette oss om løsningen til en differensiallikning?\n", + "\n", + "" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/_sources/docs/oppgaver/likninger_oppgaver.ipynb b/_sources/docs/oppgaver/likninger_oppgaver.ipynb new file mode 100644 index 00000000..c8d550c6 --- /dev/null +++ b/_sources/docs/oppgaver/likninger_oppgaver.ipynb @@ -0,0 +1,141 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Oppgave: Numerisk løsing av likninger\n", + "Her skal vi se på en oppgave der vi jobber med ulike strategier for å løse likninger.\n", + "\n", + "````{admonition} Oppgave\n", + ":class: tip\n", + "I denne oppgava skal vi løse likningen $e^{-x} + x + 5 - \\log(0.006x + 1) - x^{0.3} - 10 = 0$. Denne likningen er ikke analytisk løsbar, så vi må bruke numeriske metoder for å løse den.\n", + "\n", + "a. Se på programmet nedenfor uten å kjøre det. Hva gjør programmet? Du kan klikke på ruta nedenfor for å få et hint til hva som skjer. Her brukes det en enklere funksjon for å illustrere poenget.\n", + "\n", + "```{admonition} Hint: Figur\n", + ":class: tip, dropdown\n", + "\n", + "```\n", + "\n", + "b. Test programmet og se hva det gjør. Tegn grafen i Python og verifiser at programmet gjør det det skal.\n", + "\n", + "\n", + "\n", + "c. Prøv å løse likningen $x^2 - 4 = 0$ med metoden ovenfor. Fant du alle løsningene? Plott gjerne grafen til funksjonen $f(x) = x^2 - 4$ og sammenlikn med nullpunktene du ser. Diskuter det du finner ut med en annen som har gjort oppgaven.\n", + "\n", + "d. Modifiser programmet slik at det istedenfor å bruke funksjoner, benytter funksjonsverdier som er forhåndslagret i en array eller liste. I løkka bør du da sjekke om en verdi i arrayen har motsatt fortegn med den neste verdien i arrayen. Du kan lage arrayene og starten av løkka slik:\n", + "\n", + "\n", + "\n", + "Test om programmet gir samme nullpunkt som før. Prøv også nå å løse likningen $x^2 - 4 = 0$ ved å lage et _x_-intervall fra -10 til 10, og sammenlikn med resultatet fra den forrige metoden. Hva er forskjellen, og hvorfor fikk du denne forskjellen?\n", + "\n", + "e. En annen metode for å løse likninger kalles _halveringsmetoden_. Bruk det første programmet du lagde som inspirasjon til å lage et program som bruker denne metoden. Halveringsmetoden går ut på å velge et intervall $[a, b]$ der $f(a)$ og $f(b)$ har motsatte fortegn. Vi kan bruke grafen til å vurdere hvilket intervall som egner seg dersom vi plotter den først. Deretter skal vi finne et nytt intervall $[a, b]$ som er mindre, men slik at $f(a)$ og $f(b)$ fortsatt har motsatte fortegn. Det kan vi gjøre ved å finne midten mellom _a_ og _b_. Da får vi et punkt $m = (a + b)/2$, og vi kan finne $f(m)$. \n", + "\n", + "Vi undersøker så om $f(m_1) = 0$. Hvis ikke, evaluerer vi fortegnene til $f(a)$, $f(b)$ og $f(m)$. Dersom $f(a)$ og $f(m)$ har samme fortegn, setter vi det nye intervallet til $[m, b]$ fordi da må $f(m)$ og $f(b)$ ha motsatte fortegn. Motsatt setter vi intervallet til $[a, m]$ dersom $f(b)$ og $f(m)$ har samme fortegn. Prosessen gjentas _n_ ganger til vi har at $f(m_n) \\approx 0$. Figuren nedenfor illustrerer metoden med to trinn\n", + "\n", + "\n", + "\n", + "Algoritmen kan mer generelt beskrives slik:\n", + "\n", + "```{admonition} Halveringsmetoden\n", + "La _f_ være en kontinuerlig funksjon med motsatte fortegn på funksjonsverdiene $f(a)$ og $f(b)$ i intervallet $[a,b]$. Da kan nullpunktene finnes slik:\n", + "\n", + "1. Finn midtpunktet $c_k$ mellom punktene _a_ og _b_.\n", + "2. Undersøk hvilke av $f(a)$ og $f(b)$ som har motsatt fortegn til $f(c_k)$, og sett det nye intervallet til $[a,c_k]$ eller $[c_k, b]$, der start- og sluttverdien i intervallet skal ha motsatt fortegn.\n", + "3. Gjenta prosessen _n_ ganger til $f(c_k) \\approx 0$.\n", + "```\n", + "\n", + "Programmet nedenfor gir deg litt starthjelp.\n", + "\n", + "\n", + "\n", + "Du kan også klikke på hintet nedenfor for å se en pseudokode som beskriver algoritmen:\n", + "\n", + "```{code-block} Python\n", + "Definer funksjon f(x)\n", + "a = -10\n", + "b = 10\n", + "\n", + "m = (a+b)/2\n", + "\n", + "Gjenta så lenge f(m) ikke er lik null:\n", + " hvis f(a)*f(m) er mindre enn 0:\n", + " b = m\n", + " hvis f(b)*f(m) er mindre enn 0:\n", + " a = m\n", + " m = (a+b)/2\n", + "\n", + "Skriv ut m\n", + "```\n", + "````" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Feilhåndtering\n", + "\n", + "Algoritmer kan ha svakheter, og de kan være implementert på en slik måte at feil lett kan oppstå. For å unngå flest mulig feil, bør programmet vårt ta hensyn til ulike fallgruver. Noen gode prinsipper for robust kode er:\n", + "\n", + "- Pakk metoden inn i en funksjon. Da kan koden lettere gjenbrukes og testes.\n", + "- Ha med en oversiktlig dokumentasjon som forklarer hva funksjonen gjør, gjerne i form av en _docstring_ (se eksempelet nedenfor for forklaring).\n", + "- Dersom du kjenner til ulike svakheter i algoritmen, prøv å teste for dette, for eksempel med if-else-tester.\n", + "\n", + "````{admonition} Oppgave\n", + ":class: tip\n", + "\n", + "1. Lag en funksjon _halveringsmetoden_ som returnerer nullpunktet til en funksjon gitt relevante parametre.\n", + "2. Legg inn en docstring i funksjonen. En docstring kan ha følgende form:\n", + "\n", + " ```{code-block} Python\n", + " def f(x):\n", + " \"\"\"\n", + " Parameters\n", + " ----------\n", + " x: float (datatype)\n", + " x-verdi (beskrivelse)\n", + "\n", + " Returns\n", + " -------\n", + " y: float\n", + " y-verdi\n", + " \"\"\"\n", + " ```\n", + "3. Legg inn en ny parameter _maks\\_iter_ som står for maks antall ganger løkka går. Returner også antall ganger løkka gikk, i tillegg til nullpunktet.\n", + "4. Funksjonen skal også sjekke om _a_ og _b_ har forskjellige fortegn. Hvis ikke, skriv ut en feilmelding.\n", + "5. Gjør eventuelt andre endringer som gjør koden enda bedre!\n", + "````" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/oppgaver/maskinlaring_titanic_oppgaver.ipynb b/_sources/docs/oppgaver/maskinlaring_titanic_oppgaver.ipynb new file mode 100644 index 00000000..05afeef7 --- /dev/null +++ b/_sources/docs/oppgaver/maskinlaring_titanic_oppgaver.ipynb @@ -0,0 +1,437 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Maskinlæring med Titanic (oppgave)" + ] + }, + { + "cell_type": "code", + "execution_count": 210, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import seaborn as sns\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# Les dataene\n", + "# ..." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Utforsking og opprydding av datasettet\n", + "La oss undersøke dataene og rydde litt, dersom vi trenger det." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# Skriv ut de fem første linjene\n", + "# ..." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Vi ser at det ikke er alle kategoriene vi trenger. Siden vi er interessert i hvem som overlevde, og hvorfor, kan det også være lurt å sjekke hvor mange dette var. Du kan beregne sum og antall av et dataframe-element ved å bruke metodene .sum() og .count() på elementet (f.eks. titanic['age'].sum())." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# Sjekk hvor mange som overlevde\n", + "# ..." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# Slett kategorier du mener er irrelevante for overlevelse med datarammenavn.pop(\"navn på kolonne\")\n", + "# ..." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Vi kan også undersøke manglende verdier og eventuelt sette inn representative verdier der det mangler." + ] + }, + { + "cell_type": "code", + "execution_count": 214, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "survived 0\n", + "pclass 0\n", + "sex 0\n", + "age 177\n", + "sibsp 0\n", + "parch 0\n", + "class 0\n", + "alive 0\n", + "alone 0\n", + "dtype: int64\n" + ] + } + ], + "source": [ + "# Printer ut antall manglende verdier i kolonnene\n", + "print(titanic.isna().sum())" + ] + }, + { + "cell_type": "code", + "execution_count": 215, + "metadata": {}, + "outputs": [], + "source": [ + "# Fyller inn manglende alder med gjennomsnittet\n", + "gjennomsnitt = titanic['age'].mean()\n", + "titanic['age'].fillna(gjennomsnitt, inplace = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- I hvilke sammenhenger kan det være legitimt å gjøre som ovenfor? Var det legitimt i denne sammenhengen?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Visualiseringer\n", + "La oss først se hvilken effekt klasse og kjønn hadde på overlevelsessjansene:" + ] + }, + { + "cell_type": "code", + "execution_count": 216, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Passasjerklasse\n", + "sns.countplot(x='pclass', hue='survived', data=titanic, palette='ocean')\n", + "plt.title(\"Antall døde (0) og overlevende (1) av hver klasse\")\n", + "plt.xlabel(\"Klasse\")\n", + "plt.ylabel(\"Antall\")\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# Lag et tilsvarende plott som viser hvilken effekt kjønn hadde på overlevelsessjansene." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Vi ser, ikke overraskende, at menn på 3. klasse hadde særdeles dårlige odds. Vi har alderen til passasjerene, men ikke alderskategorier. Lag alderskategorier for barn og voksen, og lag en ny kolonne kalt \"aldersklasse\"." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Sortere etter alder\n", + "aldersklasse = []\n", + "\n", + "for alder in titanic['age']:\n", + " ### fyll inn kode her.\n", + " \n", + "titanic['aldersklasse'] = aldersklasse\n", + "\n", + "# Plott effekten aldersklasse har på overlevelse" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Maskinlæring\n", + "Vi skal nå lage en modell som kan forutsi hvorvidt en person overlever på Titanic eller ikke, gitt data om personen. Vi velger ut hvilke data vi ønsker å bruke som kriterium for overlevelse, og spesifiserer kategorien \"survived\" som målkategorien vår:" + ] + }, + { + "cell_type": "code", + "execution_count": 220, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.model_selection import train_test_split, cross_val_score\n", + "from sklearn import tree\n", + "from sklearn.metrics import accuracy_score, confusion_matrix" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "kriterier = titanic[[# Legg inn kriterier (kolonnekategorier) for overlevelse her]]\n", + "kategorier = # legg inn kategori her" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "I maskinlæring er det viktig at modellen vår klarer å forutsi data som kommer utenfra datasettet vi trener modellen med. Derfor deler vi ofte opp dataene i et treningssett og et testsett. Treningssettet bruker vi til å trene modellen, testsettet til å teste og evaluere modellen i etterkant. Vi blander ikke disse dataene. Vi kan generere slike data med funksjonen _train\\_test\\_split()_. Her bruker vi 80 \\% av dataene til trening og 20 \\% til testing. Du bør bruke minst 70 \\% av dataene dine til trening." + ] + }, + { + "cell_type": "code", + "execution_count": 222, + "metadata": {}, + "outputs": [], + "source": [ + "# Del opp datasettet ditt i trenings- og test-kriterier og trenings- og testkategorier." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- Forklar hva funksjonen train\\_test\\_split gjør ut fra programmet ovenfor.\n", + "- Hva er poenget med separate treningskriterier og testkriterier?\n", + "\n", + "Nå kan vi lage modellen vår. Vi bruker en algoritme som heter _Decision Tree Classifier_. Det er basert på sammensatte og forgreinede valgtrær, der alle kombinasjoner av kriterier blir utforsket. Betingede sannsynligheter for ulike hendelser blir beregnet, og de mest sannsynlige utfallene blir framhevet basert på kombinasjonen av kriteriene. Først trener vi modellen:" + ] + }, + { + "cell_type": "code", + "execution_count": 225, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "DecisionTreeClassifier()" + ] + }, + "execution_count": 225, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Opprett og tren modellen her" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Det var det - da har vi en modell! Den ligger nå i et objekt som vi har kalt _modell_. Vi kan få innsyn i hvordan modellen ser ut, men det kan fort bli litt uoversiktlig og teknisk. La oss først nøye oss med å sjekke hvordan modellen takler testsettet vårt.\n", + "\n", + "- Forklar med ord hva du tror modellen gjør når den \"trener\".\n", + "\n", + "## Test og validering av modellen\n", + "\n", + "La oss nå bruke modellen for å forutsi hvem som overlever og hvem som ikke gjør det:" + ] + }, + { + "cell_type": "code", + "execution_count": 226, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.7597765363128491" + ] + }, + "execution_count": 226, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Regn ut accuracy score for å validere modellen her" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Hva sier dette resultatet deg?\n", + "\n", + "For å få bedre oversikt over hva modellen forutsier riktig og hva den feiler på, kan vi konstruere en såkalt \"Confusion Matrix\" (forvirringsmatrise/feilmatrise):" + ] + }, + { + "cell_type": "code", + "execution_count": 227, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "cm = confusion_matrix(modellkategorier_forutsett, testkategorier)\n", + "\n", + "import seaborn as sns\n", + "sns.heatmap(cm, annot=True, cmap='viridis')\n", + "plt.title(\"Forvirringsmatrise\")\n", + "plt.xlabel(\"Predikerte verdier\")\n", + "plt.ylabel(\"Sanne verdier\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- Hva forteller diagrammet ovenfor oss?\n", + "\n", + "Vi kan benytte disse dataene til å beregne hvor stor prosentandel av overlevende og døde som modellen klarte å forutsi korrekt." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "# Beregn andelen korrekt forventet død og korrekt forventet overlevelse." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- Sammenlikn størrelsen på disse andelene. Hva er eventuelt årsaken til at det er en forskjell på dem?\n", + "\n", + "La oss helt til sist visualisere modellen vår. Vi velger maks dybde på modellen til 2 for at vi ikke skal få alt for mange forgreininger." + ] + }, + { + "cell_type": "code", + "execution_count": 229, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABGoAAAIuCAYAAADnru5GAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAD28klEQVR4nOzddXzV1R/H8ddZJ9sYOboZ3d0pHQoCoqLYndiBigrqz0QJC5WUkO7u7u5uGLCu8/vj4tW5AQMGd8D7+XjwgHu+53vu57ufv+3sfc/3fI21FhERERERERERcT03VxcgIiIiIiIiIiIOCmpERERERERERDIJBTUiIiIiIiIiIpmEghoRERERERERkUxCQY2IiIiIiIiISCahoEZEREREREREJJNQUCMiIiIiIiIikkkoqBERERERERERySQU1IiIiIiIiIiIZBIKakREREREREREMgkFNSIiIiIiIiIimYSCGhERERERERGRTEJBjYiIiIiIiIhIJqGgRkREREREREQkk1BQIyIiIiIiIiKSSSioERERERERERHJJDxcXYCIiIjceL4+3sdi4+JzuroOuT4+3l7HY2Ljcrm6DhEREblxjLXW1TWIiIjIDWaMsVGrx7u6DLlO/pXbYa01rq5DREREbhzd+iQiIiIiIiIikkkoqBERERERERERySQU1IiIiIiIiIiIZBIKakREREREREREMgkFNSIiIiIiIiIimYSCGhERERERERGRTEJBjYiIiIiIiIhIJuHh6gJEREREbgU79h3inW9+Y9GaTSQkJlExvAhvPd6VelXKpuv8PgOH8/GgEWke6//20/To0CwjyxUREZFblIIaERERkSvYc/AojR9+HXd3N154oCNBAX788tcM2jz1HhP6v0/9quXSPVbfl3sSGpwlRVv1siUyumQRERG5RSmoERERkVvalt0HKJY/DE/PGzeteb//70RciGLRH19QvkRhALq1bkiVTs/ycr9BrPrzu3SP1aZBdQqE5bxRpYqIiMgtTnvUiIiICLFx8fQZOJwKHZ8kW61O5GnQjaqdn+Odb4ak6jtmxiKaPPw6OeveS7ZanWj0UC+mLljpPH4+MpoybR+nWIuHOR1xPsW5L3wyAP/K7Zg0b/l11Xvs1Fm+HTqeWt1epGrnZ4mKjb2u8S4nKiaWSfNXULdyGWdIAxDg50uP9k3Zuucg67btuaoxz0dGk5SUlNGlioiIyG1AK2pERESEF/sOZOikOTzcoTnlSxQmNj6e3QePMn/VxhT9PhowjE8Gj6Rlvaq8+2R3LJaRU+fT6aU+DP7gBbq2bECWAD9+/fhlmvR8gyc/+JZR/3sLgIlzlzF49FQe79yS1g2qX3WN0TFxTJy3jOFT5jFn+TqSkpKpXq4E/3vtMQL9fJ39kpOTOXMuMt3jZgvJctnjm3ftJy4+gerlUt+eVPXiLUtrtuykQsnCqY6npXqX57kQFYO7uxvVypTgjce60LhGhXTXKyIiIrc3BTUiIiLCxLnLeKh9M75644lL9lm3bQ+f/jiKNx/rwluPd3W2P9G5FQ0f6sUbX/7MPU3r4OnpQZUyxXnnyW68++1vDBo1hVb1q/HUh99RumgBPn7hoXTXlZyczPxVGxk+eR7j5ywhMjqWEgXz8uajXbi3RX0K5c2V6pyDx05Sqs1j6X6PqNXjL3v8yInTAIRlD011LCxHVgAOHz91xfcJCvTnwXZNqFEhnNCgQLbuOch3wybQ7pn3+fXjl7mnWd101ywiIiK3LwU1IiIiQpYAP1Zt3sn+I8cvuX/KyKnzAejSsgGnzqa8palF3ar0GTic9dv3UKVMcQBeerAj81Zs4I2vfmHI+FnExMYx5JNX8PH2umI90TFxfDx4BCOnzufIidPkyhZCjw7N6NKiPhXDi1723JyhIUz8vnd6LjtdomPjAPDy8kx1zMfL62Kf+CuO80y3tilet6pfnftaN6Lavc/xymeDadew5g3dZ0dERERuDZoNiIiICP1efoRH3v2SUm0eI7xIfmpXKEXzOpW5q04V3NwcW9pt23sQay3l2l961c2JMxHOfxtjGPzBC5Tv8ATrtu3my9ceJ7xw/nTVc/JsBF8OGQtA6/rV+frNJ8mVLSRd5/p4e9GoeoV09U3XeBfDmPj4hFTHYuMdAY1vOsKntOTOnpX72zbm69//ShFyiYiIyJ1LQY2IiIjQukF1tkwczPTFq1m0ehMzl67hxzHTqFOpNJO+/wBPTw+Sk5Nxd3dj7Nfv4uZm0hynbPFCKV4vXL2RyGjHRr8bduxNdz15cmTj549eYviUeUxdtJJpLVfRsHp5Ot9Vj7YNaxDwrz1p/ispKYmT/1nxczlXCoDy5HTc8nTk5OlUx46cOJOiz7UoEJYDgFMR6a9ZREREbl8KakRERASArEGBdG3ZgK4tG2Ct5Z1vf+PLIWOZtmgVbRrWoGj+MGYtXUvBPDkpmj/siuPtP3Kc5z8eQKVSRalcqhiDR0+lSc2KtG9c64rneni4c2+L+tzboj7HTp3lz+kLGD55Ho+++xXPeXvRsl5VOt9Vn2a1K+HlmfKWpEPHT2XoHjWlixbAy9OD5Ru2pzq2cqOjrVKpy9+OdTm7DhwFIGdo8DWPISIiIrcPBTUiIiJ3uKSkJC5ExxAcGOBsM8ZQvoRjdcyZcxcA6NKiPgNGTua9737jt09exd3dPcU4x09HOMOGxMQkerz5BUnJSfz68SvkzZmNZRu28cxH/alSuhh5c2VPd325soXw7H3tePa+dmzZfYDhk+cyctp8xsxcTEiWANo3rsX/XnvMGdhk9B41AX6+tKxXlQlzl7Nhx17KXVw1FBkdw69/zaREwbwp9s2Jjonj4LGTZAnwI3f2rM6vR3RsHFkC/FKMvfvgUX6fMIs8OUOd44qIiMidzVhrXV2DiIiI3GDGGHuplSMRFyIp0vwhWtWrSrkShcmeNZj9h4/z4+ipWGDlqG+dtwd9+MNQPv1xFGWLF6JD41rkDA3m6MkzrNy0g7XbdrN3xhAA3vvudz7/ZTSDej/Pfa0bAY49bup2f5mK4UWYOvCjVEHP1UhOTmbBqk0MnzKX8XOWsm3yjymCpoy2++BR6j/wCh4e7jzTrS1Z/P345a8ZbNl1gHHfvptiT5wFqzbS4vG3ua91Iwb1fh5wfI3LtH2c1g2qU7xgXoID/dm29yBD/ppJXHwiI754g7vqVLliHf6V22GtTfu+MxEREbktKKgRERG5A1wuqIlPSOCjAcOZt3IDew8dIyomlpyhIdSvWpZXH+5EkXy5U/SfPH85P4yczNotu4iOjSNH1mBHcNOkFve1bsT8lRto/dR73NOsDr/0eTnFub+MncEzffrz1uNdefOxLhlybTGxcXh7eTo3Pb5Rtu09yLvf/sai1ZtJSEykQskivP1EV+pXLZeiX1pBTVx8Ai9+OoCVm3Zy+PgpomJiyRaShdoVS/FSj3uoULJwumpQUCMiInL7U1AjIiJyB7hcUCO3DgU1IiIit78b+9GTiIiIiIiIiIikm4IaEREREREREZFMQkGNiIiIiIiIiEgmoaBGRERERERERCSTUFAjIiIiIiIiIpJJKKgREREREREREckkPFxdgIiIiNw5kpOT6T98Ij+Pmc6+I8fJnjWIe5rV5e3Hu+Hn631VYx07dZZKdz/Nucgo+r7ck2e6tU2z37DJc/lpzDQ279pPcrIlf1gOOjevS6+enVP0W715Jx8PGsGy9VuJjU+gWIE8PHlvKx5s3/Sar1dERETkaimoERERkZum1xc/8cOISbRtWIPnurdn276D9B82kQ079jKxf2+MMekf6/PBJCUnXbbPE72/4Y+Jc2jfqCb33lUfd3c39h4+zsFjp1L0W7BqI+2eeZ+QLIE81709wVn8mThvOU99+B2HT5zmzce6XNP1ioiIiFwtBTUiIiJyU2zZfYABIyfTrlFNhn32urO9YFhOXvlsMGNnLubuZnXSNda0RasYN3spvZ+5n3e+GZJmnyF/zeT3CbMZ8N5z3N+28WXHe/XzH3F3c2Pur30pEJYTgMc7t6Ljcx/Q98dRdGlRn8L5cqfzSkVERESunfaoERERkZti9PSFWGt5ulubFO0PdWiGn483I6fNT9c40TFxvNR3IA93aEaV0sXS7GOt5fNfRlO+RGFnSHMhKhprbaq+Z89HsmnnPmpXKu0Maf7WpWUDEpOSGDk1fbWJiIiIXC8FNSIiInJTrN6yEzc3N6qULp6i3cfbi3IlCrF68850jfPhgGFEx8bx/jP3X7LPjn2H2XPoGDXKl+STQSPI16g7uep1Jax+N577+Hsio2OcfePiEwDw80m9R47/xX1zVqWzNhEREZHrpVufRERE5KY4cuIMocGBeHt5pjoWlj2UZeu3kZSUhLu7+yXHWL99D98Pn8j37z5DSJaAS/bbuf8wAGNmLiYhIZFePTtRME9Opi5cyU9jprNz32GmDPwIYww5sgaRNSiQlZt2EBMbh++/Apv5qzYCcPDYyWu9bBEREZGroqBGREREboqY2Di8PVOHNADe3o72mLh4Avx80+yTnJzMs32+p2aFcO5r3eiy73Xh4oqZU2fPMemHD2hYrTwA7RvXwloYOmkOM5asoXntyri5ufFkl9b0GTic+1//jLce70JwYAAT5y3n13EznbWLiIiI3AwKakREROSm8PH2JDImJs1jcXGO2498vb0uef6AkZPZsH0vS4d/eeX3urhqJyxHqDOk+Vv3No0YOmkOC1dvonntygC81rMTUTGxfD98IlMXrgQgJEsA37z5JD3f+ZJAf78rX6CIiIhIBlBQIyIiIjdFWI5Qtu87TFx8Qqrbn46cPE3O0JBL3vZ07kIUH/wwlHua18HL05PdB486zjtxGoDTEefZffAoubNlxc/Xm7w5swGQMzQ41Vg5Q0MAiDgf6Wxzd3enz/M9eP2RzmzZfQA3YyhXojB7Dx8DoFjBPNd38SIiIiLppKBGREREbopKpYoye9k6Vm3eQe2KpZ3tsXHxbNi+l/pVy13y3IgLkVyIimH45HkMnzwv1fF+P/1Jv5/+ZPSXb9OiXlVKFy2Ij7cXhy8GOf926PgpALJnDUp1LNDfj+rlSjpfz1q6FsC58kZERETkRlNQIyIiIjfFPc3q8vkvY+g/bGKKoOaXcTOIjo3j3hb1nG0Hj54kOjaOwnlz4enpQfaQYP7o2yvVmFv3HKTPwOF0b9OIu+pUoWKpogD4+XrTrlFNRk6dz4Q5S2nbqKbznJ/GTAOuHL4cOnaSL34dQ5F8ubm7aZ3runYRERGR9FJQIyIiIjdFmWIFebxzSwaMnEzXVz6hee3KbNt7iB9GTKJ+1XLc06yus++j733FwtWb2DJxEAXCcuLn602HJrVTjRl68alMZYsXSnW899P3M3fFeh56+388cW8rCuTOwfTFq5m2aBX3tW5EjfLhzr7TFq3imz/G06h6ebJnDWbPwaP8MnY6ydby26e90nxSlYiIiMiNoKBGREREbpp+L/ckf+4c/DJuOtMWrSJbSBBPdW3D2090xRiToe+VL3d25v3aj/f7/8EfE2ZzLjKawnlz0ef5HjzXvV2KvgXCcuDp4U7/4RM5ey6S7FmDaNOwBq8/ci/5cmfP0LpERERELsdYa11dg4iIiNxgxhgbtXq8q8uQ6+RfuR3W2oxNtERERCRTcXN1ASIiIiIiIiIi4qCgRkREREREREQkk1BQIyIiIiIiIiKSSSioERERERERERHJJBTUiIiIiIiIiIhkEgpqREREREREREQyCQU1IiIiIiIiIiKZhIerCxARERH5W5+Bw/l40IhLHi+SLzcb/hoAwKylaxk/Zylrtuxiy+79xCcksmTYl5QvUTjVeZPnL+ev2UtZuWk7h46dwsvTk8qli/Higx1oVL3CjbocERERkaumoEZEREQyjbaNalI4X+5U7UvWbuHnsdO5q24VZ9uoaQv4c/oCShUpQLECedi8a/8lx32mz/cE+vnSpmENiuUP48SZCH4aM522T7/Pjx+8QJeWDW7E5YiIiIhcNWOtdXUNIiIicoMZY2zU6vGuLuOa3fvSx0yav5zlI76mTLGCABw5cZrQ4Cx4e3k6V+JcakXN3BXraVitfIq2E2ciqHLPM7h7uLN72i+4uWX+O8L9K7fDWmtcXYeIiIjcOJl/RiIiIiJ3tBNnIpi+eDWVSxdzhjQAYTlC8fbyTNcY/w1pAHJkDaZO5TKcOB3BiTPnMqpcERERkeuioEZEREQyteGT55GQmMgDbRtn+NiHj5/C08ODoAC/DB9bRERE5FooqBEREZFM7feJs/H19qJT83oZOu70xatZtXkn7RrXxNfHO0PHFhEREblWCmpEREQk01q1aQdbdx+gXeNaBAX6Z9i4+w4f57H3viZ71iD6vtQzw8YVERERuV566pOIiIhkWr9NmAWQobc9HTlxmtZPvktCQiKTB3xArmwhGTa2iIiIyPVSUCMiIiKZUmxcPKOnL6JQnlzUq1I2Q8Y8duosLZ94m5NnI5jQvzcVw4tmyLgiIiIiGUW3PomIiEim9NfsJZyLjOL+to0x5vqfSH3y7DlaP/kOh4+fZszX71K9XMkMqFJEREQkY2lFjYiIiGRKv0+cjZubG93bNLrusc6cu0DrJ99l3+HjjP7qHepUKp0BFYqIiIhkPAU1IiIikukcOHqC+Ss30qRmRfLkzJZmn4079zFl/goAFq3ZDMCQv2aSM9Sx58wT97ZybkDc5qn32LRzH91aNeToqTMMnzIvxViNqlcgZ2jwjbkYERERkaugoEZEREQynT8mzsFaywNtm1yyz7qtu/ngh6Ep2gaOmuL8d5eW9Z1BzbptuwEYNnkuwybPTTXW1IEfKagRERGRTMFYa11dg4iIiNxgxhgbtXq8q8uQ6+RfuR3W2uvfsEdEREQyLW0mLCIiIiIiIiKSSSioERERERERERHJJBTUiIiIiIiIiIhkEgpqREREREREREQyCQU1IiIiIiIiIiKZhIIaEREREREREZFMQkGNiIiIpNBn4HD8K7dz/lmxcburS7ptvNR3YIqv7f4jx11dkoiIiGQyHq4uQERERDKnvi/3JDQ4C4Xz5r5kn2OnzlLp7qc5FxlF35d78ky3tpcd84HX+zFm5mLKFi/EsuFfXbbvjCVr6PBsbwCWDPuS8iUKX/U1AMTExjF8yjymLFjJpp37OH76LCFZAmlQrRxvPd6VIvnSvr7Dx0/xyeCRzFyyhhNnIgjOEkCFkkXo+9LDFC+Y19kvISGRn8dNZ8hfs9h76BhuboZCeXPxQNsmPNyxOR4e7s6+97VuRNWyJZgwZykT5i67pusRERGR25uCGhEREUlTmwbVKRCW87J9en0+mKTkpHSNN33xasbNXoqvt9cV+0bHxPHipwMI8PMhMjo2XeNfyoGjJ3m2z/fULB/OQx2akStbCFv3HOSnMdOYtnAVs3/5lPDC+VOcs27bHto89S7+vj480K4JeXNl5+y5C6zduotTZ89TvOA/fZ/44FtGTJlH+8Y1eahDM5KSkxk/Zykv9h3I+u176P/OM86+lUsXo3LpYuw5eFRBjYiIiKRJQY2IiIhck2mLVjFu9lJ6P3M/73wz5LJ9/w5eHr3nLqYuXHXFsfsMGk5sXDw9OjTju6ETrqvObCFZ0lyRc1edKrR68h36DBjOH/1ec7bHxsXzwOv9CMsRyozBHxMU6H/JsU+ciWDk1Pm0aVCdof1ed7Y/1qkFdbq/zB8T5/DV60/g6akpl4iIiKSP9qgRERGRqxYdE8dLfQfycIdmVCld7Ir9Pxo4jJi4eN57qvsV+27YsZfvhk6g78s9yeLvd921hgZnSfO2qQbVypE1KJDNu/anaB8zcxG7Dx7l3Se7ERToT1x8AnHxCWmOfSEqBmstubNnTdHu5uZGzmwheHt54u6u6ZaIiIikn2YOIiIictU+HDCM6Ng43n/m/iv23bBjL/2HTeTTFx++7OoUgOTkZJ79qD/1qpTlnmZ1M6rcNJ27EMWFqBiyhQSlaJ+xeDUAQYEBNHvkDUJrdSJrzXuo2e0FZi5Zk6JvwbAcFMqTi98mzObXcTPYf+Q4uw8e5bOfRzNr6VrefKwLbm6abomIiEj6aR2uiIiIXJX12/fw/fCJfP/uM4RkCbhs37+Dl9qVSnNvi/pXHHvQn1PZuHMfK0Z+k1HlXtJnv4wmITGRLi1T1rVj/2EA7uvVl6plijPk41c4e/4C/X7+k7tf+JC/vn2PRtUrAODu7s6IL97gkXe/4umP+jvH8Pby5Lu3nuLB9k1v+HWIiIjI7UVBjYiIiKRbcnKyY2PeCuHc17rRFfsPHDWFDTv2smz411fse+TEaXr3/4OXHuxI0fxhGVHuJU2ev5yvf/+LupXL8FCHZimORUbFAFCiYB7+/PItjDEANKxegUp3P03v/n84gxqAkCwBlCqSn/DC+WhVvxpJScn8OX0hz/T5nqTkZB7u2PyGXouIiIjcXhTUiIiISLoNGDmZDdv3snT4l1fse+TEaXp//wcvPNCBEoXyXrH/y/0GkS0kC688dE9GlHpJ81Zs4IE3Pie8cD6GffZ6qluTvC8+lapbq4bOkAagSL7c1KwQzqI1m4mKicXf14cLUdE0fKgXtSuW5pc+Lzv73tuiPu2eeZ9XP/+RlvWqkStbyA29JhEREbl96KZpERERSZdzF6L44Ieh3NO8Dl6enuw+eJTdB49y5MRpAE5HnGf3waNEx8QB8O53v+Ht6cndTes4++4+eJTEpCQSEhLYffAox06dBRzhyYS5y3jmvrYcPnHa2ffsuQsAHD5+it0Hj2Ktva5rWLx2M51f6kPBsBxM+uEDsgYFpuqTN2c2AHKGpg5XcoYGY63lfGQUAONmL+Hw8dO0b1wrVd+OTWoTGxfPqk07rqtmERERubNoRY2IiIikS8SFSC5ExTB88jyGT56X6ni/n/6k309/MvrLt2lRryqHjp3iVMR5qnd5PlXfI0C59k/QvnFNhvZ7nYPHTgLwUt9Bab53pxf7AHB84QgC/Hyvqf4VG7dz9/Mfkjt7Vib98CE5sgan2a9K6WLMXLKGwydOpTp26PgpPNzdCcniCHiOn4oAIDExKVXfxKSkFH+LiIiIpIeCGhEREUmX7CHB/NG3V6r2rXsO0mfgcLq3acRddapQsVRRAN56vCunzp5L1f+FTwfi7+tNn+d7kOfi6pX6VcumOfbYmYsZO2sxfZ7vQYGwHPhevC3paq3ZspP2z/QmW3AQUwZ8mOpx2v/W+a569Pv5T379ayY92jfDw8MdcDy9asXGHTSsVg6fi3WEF84HwPAp87i7WR3nGMnJyQyfPA9jDJUufj1ERERE0kNBjYiIiKSLn683HZrUTtUeumojAGWLF0pxvG7lMmmO8+ZXv5IlwD9F3/y5c5A/d45UfbfsPgBAw+rlKV+icIpjdz32FgtXb2LLxEEUCMt5yboPHD1Bu2d6cyE6hhceaM+C1ZtS9enasoHz38UL5uXFBzry+S+jaf7Ym9zTrC5nz0fyw4hJ+Pl48fELD/1TQ50qVCpVlKkLV3LXY2/RtmENkpKTGT19Ias27+TRe1qkeV0iIiIil6KgRkRERG5JF6Ji8PPxJijQ/7L99h0+zpmLe930/n5omn3+HdQA9H7mfgqE5WDgqCm89fWv+Hp7Ua9KWd558j5KFcnv7Ofh4c60QX34fvhERs9YxIc/DCM+MZHiBfPw+auP8njnltd3kSIiInLHMde7KZ+IiIhkfsYYG7V6fLr69hk4nI8HjWDx0C/JmzMbwYH+ztt/Mouz5yMp0OR+ej3cibef6ObqctItKiaWmNh4vvxtLF/9Nu6Kq4H+y79yO6y15so9RURE5FalFTUiIiK3MeN4vnSbazm39n0vAjD3135UK1siI8u6bnOXrydbcBAvPNDB1aVclXe+GcLAUVOuawxjTIi19mwGlSQiIiKZjFbUiIiI3IaMMW7A3cBbgAUqpHdFzd5Dx9h7+JjzdZXSxckS4Hcjyrzj7Nh3iEPH/3maVK0KpZwbE6eHf+V2AGeAgcCX1tqTGV2jiIiIuJaCGhERkduIMcYDuBdHQHMB+BCYDCSnN6iRzOtiUFMIeB3oDPwMfGGtPerKukRERCTjuLm6ABEREbl+xhhPY8zDwFbgceB5oIa1dpLVpzK3FWvtPmvtE0A5wBPYbIz51hiTz8WliYiISAZQUCMiInILM8Z4G2OeAHYCXYFHrLX1rLUzFdDc3qy1h6y1zwOlgFhgvTFmkDGm8BVOFRERkUxMQY2IiMgtyBjjZ4x5HtiNY7Pgrtbaptba+S4uTW4ya+0xa+2rQHHgBLDCGPOrMSZz7QAtIiIi6aKgRkRE5BZijAk0xvTCEdDUB9paa1tZa5e6uLRMb8GqjfhXbsfvE2a7upQbwlp7ylr7NlAUx38fi4wxw40xZVxcmoiIiFwFPZ5bRETkFmCMCQKeBZ4D5gDNrLUbXVvVtVmwaiMtHn/b+drNzY0s/r7kzhFKxZJF6HRXPZrWrIjjyeJytay1EcCHxpivgKeAWcaYJcBH1to1rqxNRERErkxBjYiISCZmjAkFXgCexPH0prrW2u0uLSqDdGnZgCY1K2KtJTIqhu37DjFx3jKGTZ5Lw+rl+aNvL4IDA1xd5i3LWnsB6GuM+RZ4DJhojFmLI7BZ5trqRERE5FJ065OIiEgmZIzJaYzpB+wAcgLVrLUP3i4hDUDF8CJ0bdmAbq0a8ljnlnzR6zE2jx/EE/e2Yu7y9Tz01v/SNU50TBwzl2ihyKVYa6OttV8BRXCEfSONMTONMfVcW5mIiIikRStqREREMhFjTB7gVeABYBhQ0Vp7wLVV3Tyenh58/uqjrN26ixmLV7Nk7RZqVSwFwIYde/lowDCWrN1CYlISJQvl47HOLZk8fzmxcQk0rVXJOc6kecvpM2g42/ceIntIEA+2b0qN8iXTfM/4hAS+/v0vRk6dz55Dx/Dz8aZOpdK893R3wgvnvynXfTNYa2OBH4wxPwH3A78YYw4DHwKz9JQwERGRzEFBjYiISCZgjCkAvA7cC/wClLbWHnVtVa5hjKFHh2Ys37Cd6YtXU6tiKdZs2UnzR9/C28uTRzu1IHe2rEyav5xH3/2K7FmDWD/2B+f5E+YspVuvvhQMy8kbj3bB3d2NPybMZvL8FaneKzExiQ7PfcDSdVvp3qYRT3Zpzckz5xj051Qa9ujFvCGfUbJQvpt5+TectTYe+MkYMwToAnwDnDPGfAhMUWAjIiLiWgpqREREXMgYUxR4A2gPDAJKWGtPurSoTKBssUIA7Nx/GIBXP/+R+IRE5v/2OaWKOFa5hAQFsHD1Jk5HXODEmQiCAv1JSkri1c9/JDQ4C/N/+4zQ4CwA9OzYnOpdnk/1PgNGTWb+yo1M+v4DGlQr52zv3qYRVTo/y/vf/c6IL9680ZfrEtbaROAPY8xwoCPwMY5NiD8C/rLWJru0QBERkTuU9qgRERFxAWNMuDHmD2ApcBAoZq19QyGNQ5YAPwDOR0Vz4kwEy9Zvo1X9as6QZvmGbbzx5S8M7fcaycnJjJ25GIC1W3dz6PgpHmzXxBnSAAQF+tPz7rtSvc+IKfMIL5yfMsUKcurseecfH29vqpYpwexl6278xbqYtTbJWvsnUBHoDbwJrDfGdDHGuLu2OhERkTuPVtSIiIjcRMaY8sDbQD3gK+Apa+15lxaVCZ2PjAYgi78f+w8fByC8sOMWpH2Hj3Nfr778+MGLzn1n9h4+luLv4gXzphrz7/P/bdueg8TExVOgyf2XrOVCVDSB/n7XcTW3hosraMYbYyYAzYF3gN7GmI+BYdbaBJcWKCIicodQUCMiInITGGOq4ghoqgJfAD2stVGurSrz2rBjLwDFCuTBy8sTAD9fH85diOLu5z/g1YfvoUG1cpw5dwGAmLh4AP7eXcWY1GOmtfVKsrWUK1GIPs/3uGQtvt7e13Elt56Le9RMM8ZMBxriCGzeM8Z8Cgyx1sa5tEAREZHbnIIaERGRG8gYUxvHL7qlgb5AF2ttjGurytystfw2fiYAd9WpQsGwnIBj9ct9r/WlVsXSPN65FQBb9zgeiPV3n8J5cwGwfe+hVONuS6OtSL4wTp09T8Nq5TFppTt3sIuBzRxgjjGmDo6g8e2Lj43/Sf8di4iI3Bjao0ZERCSDGYdGxpi5wO/AWKCotfY7/XJ7eYmJSbz2v59Ytn4bzWtXpmaFcIIC/WlWuzLDJs8lPj6B//V6DIDk5GS++GUMAK3rVwOgYngRwnKE8tuEWZyO+OeOsvOR0fw0Zlqq9+vaqgFHTpzm++GT0qznxJmIDL7CW5O1dpG19i7gbqApsNsY87Ixxt/FpYmIiNx2tKJGREQkgxjHkoy/9/bIhuMpOtrb4xLWbt3N8CnzsNYSFR3L9n2HmDRvOQePnaRxjQr80udlZ9/yJQoxY/Fqdh44wle/jyPAz5cJc5ayYPUmHmzXhKplSwDg7u5Ov5d7cv/rn1H/gVfp0aEp7u5u/D5+NlmDAjl4LOVezc90a8PsZWvp9cWPzF2xnrqVy+Dv683BY6eYtXQtBfPkYGi/12/q1yUzs9auBNr9a6+lXsaYr4D+2mtJREQkY5i07tcWERGR9LsY0LTF8YurL/AR8Ke1Nsmlhf2LMcZGrR7v6jIAWLBqIy0ef9v52s3NjQBfH/LkDKVieFE63VWPZrUqOY/PXLKGHm9+zsD3n2fUtPksXruFs+cjKZw3Fw+2b8rTXdvg5pZykfD4OUv5ZPBItu89SPasQXRv3ZjalUrT9un3GPDec9zftrGzb2JiEgNGTWb45Hns2HcIYwy5s2elermSPNi+CbUrlr7xX5R08q/cDmttprlHyxhTCsdTopoD/YGvrbVnXVuViIjIrU1BjYiIyDW6+OjijjgCmiQcAc1fF5+ek6lkpqDmap04E8HO/YczVWDiKpktqPmbMaYY8DrQHhgE/E+PmhcREbk22qNGRETkKhljPIwx3YFNwMs4VhRUttaOzYwhza0uR9ZghTSZnLV2p7W2J1AZCAa2G2O+MMbkdm1lIiIitx4FNSIiIulkjPEyxvQEtgGPAs8CNa21k62WqIpgrd1nrX0SKAu4A5uNMd8ZY/K5uDQREZFbhoIaERGRKzDG+BhjngR2AF2Ah6219a21sxTQiKRmrT1srX0BCAeigfXGmMHGmMKurUxERCTzU1AjIiJyCcYYP2PMC8BuoBXQxVrb1Fq7wLWVidwarLXHrbW9gGLAMWCFMWaIMaaEi0sTERHJtBTUiIiI/IcxJtAY8xqwB6gHtLHWtrbWLnNxaSK3JGvtaWvtO0BRYCew0BgzwhhTxsWliYiIZDoKakRERC4yxgQbY97BsYKmAtDEWtvRWrvGtZWJ3B6stRHW2o+AIsAaYJYxZqwxptIVThUREbljKKgREZE7njEmmzHmI2AXjl8g61pru1prN7m4NJHbkrX2grW2H1AYmA9MMMZMNsbUcHFpIiIiLqegRkRE7ljGmJzGmH44NgnOAVSz1vaw1m53cWkidwRrbbS19msct0RNBEYYY2YZY+q7uDQRERGXUVAjIiJ3HGNMHmPM18BWwBcob619zFq7x8WlidyRrLWx1toBODYdHgb8ZIxZYIxpaowxLi5PRETkplJQIyIidwxjTEFjzABgI5AAlLbWPmutPeji0kQEsNYmWGt/BkoCA4GvgaXGmNYKbERE5E5hrLWurkFEROSGMsYUA94A2uH45e9La+1J11Z1c/n6eB+LjYvP6eo65Pr4eHsdj4mNy+XqOm4WY4wbcDfwNpAMfASMs9Ymu7QwERGRG0hBjYiI3LaMMaWAt4BmwHfAN9bas66tSkSu1sXApjXwDo7bFfsAo6y1SS4tTERE5AZQUCMiIrcdY0wFHAFNPeBL4Htr7XmXFiUi1+3i7U/NcAQ2OYCPgaHW2gSXFiYiIpKBFNSIiMhtwxhTDcctElWAz4GB1too11YlIhntYmDTAEdgUxD4FBhirY1zYVkiIiIZQkGNiIjc8owxdXD8whYO9AV+ttbGuLYqEbkZjDG1cQS0ZYB+wI/6/7+IiNzKFNSIiMgt6eIn6g1xBDQFgE9wfKIe79LCRMQljDFVcdzyWB34AhhgrY10bVUiIiJXT0GNiIjcUi4GNHfhCGhCcWwqOlx7VIgIgDGmPI7Apj6Ox3v3t9aec21VIiIi6aegRkREbgkXn/rSFsctDt44HtM7Wk99EZG0GGPCgTeBFkB/4Gtr7RnXViUiInJlCmpERCRTM8a4A3fjCGgSgQ+B8dbaZJcWJiK3BGNMUeANoD0wCPjSWnvCpUWJiIhchpurCxAREUmLMcbDGHM/sAl4EXgdqGytHaeQRkTSy1q7y1rbE6gEBAHbjDH/M8bkdnFpIiIiaVJQIyIimYoxxssY0xPYBjwCPAvUstZOsVoGKiLXyFq731r7FFAWMMBmY0x/Y0x+F5cmIiKSgoIaERHJFIwxPsaYp4CdwL3Aw9ba+tbaWQpoRCSjWGsPW2tfBMKBSGCtMWawMaawi0sTEREBFNSIiIiLGWP8jDEvArtxbPrZ2VrbzFq7wMWlichtzFp73Fr7GlAcOAqsMMb8Zowp6eLSRETkDqegRkREXMIYE2iMeQ3YA9QBWltr21hrl7u4NBG5g1hrT1tr3wWKAtuBBcaYkcaYsi4uTURE7lAKakRE5KYyxgQbY97FEdCUBxpba++21q51cWkicgez1kZYa/sAhYFVwAxjzDhjTGUXlyYiIncYBTUiInJTGGOyGWP64LjFqRBQ21rbzVq72cWliYg4WWsjrbWfAUWAucB4Y8wUY0xNF5cmIiJ3CAU1IiJyQxljchljPgN2ANmAKtbah6y1O1xcmojIJVlro6213+AIbCYAw40xs4wxDYwxxsXliYjIbUxBjYiI3BDGmLzGmG+ALYA3UM5a+7i1dq+LSxMRSTdrbZy1dgBQDBgKDMaxj00zBTYiInIjKKgREZEMZYwpZIwZAKwH4oBS1trnrLWHXFyaiMg1s9YmWGt/wfFY7wHAV8AyY0wbBTYiIpKRjLXW1TWIiMhtwBhTDHgTaIvjl5gvrbWnXFuViMiNYYxxAzoCb19s+ggYa61Ndl1VIiJyO1BQI5KJ+Hp5HItNSMrp6jok4/h4uh+PiU/M5eo6biRjTGkcAU0z4FvgW2vtWddWJSJyc1xcTdMaeAfwB/oAI621SS4t7Bp4evseS4yP1TxE0sXDy+d4QlzMbT3HEXEVBTUimYgxxp78+TFXlyEZKPvDg7DW3pZL4o0xFXB8klwX+BL43lp73qVFiYi4yMXAphmOwCYH8Anwh7U2waWFXQVjjH1v3hlXlyG3iN4Nst62cxwRV9MeNSIiclWMMdWMMROAycBioLC19lOFNCJyJ7MO03GE148B3YEdxpjHjTHerq1ORERuJQpqREQkXYwxdY0x04HRwHSgiLX2S2ttlItLExHJNC4GNvOstY2B+4B2wC5jzHPGGF8XlyciIrcABTUiInJJxqGxMWYe8CvwJ1DUWtvfWhvr0uJERDI5a+0Sa21LoAPQENhjjHnFGBPg4tJERCQTU1AjIiKpXAxoWuK4tak/8BNQwlr7o7U23rXViYjcWqy1q6y1HYDmQFUcgc1bxpggF5cmIiKZkIIaERFxMsa4GWPaAyuBvsDXQGlr7e/W2kSXFicicouz1m6w1t4L1AdKALuNMR8YY7K6uDQREclEFNSIiAjGGHdjzL3AOhxPLPkIKG+tvSUfMSsikplZa7daax8AqgNhwE5jzKfGmBwuLs0lIo4eoHeDrMz75VNXlyIikil4uLoAEZEbacb6AwycsZH1+08Sn5hE7pAAGpXJyyf31b7iuf3+WsVnE9akeex/Pepxf72SGV3uTWeM8QC6AW8CZ4HXganWWuvSwkRE7gDW2t3AI8aYD4FewDZjzBDgM2vtEddWJ5nV9sVT2bpgIoe2rOLcicO4e3iSJ7wStbs8R+EqDdI1xr61ixjyYts0j5Vt0omObw/MwIpF5GopqBGR29Zn41fTb/xqGpTOS692VfD19uDw6Ui2HT5zVeN82KUmoYE+KdqqFMmZkaXedMYYL+AB4A3gIPA0MEcBjYjIzWet3Q88bYzpA7wKbDLGjAD6Xjwm4jTx8xfx9gugZN1WhOYtQuTZk6ye+Cu/v3o3Hd4cQLmmndI9VqU2D1KgbM0UbSFhBTK6ZBG5SgpqROSm23b4DEVyBuPpcePuvpy/+RD9xq/m1baV6NW+ynWN1bJSQfJnC8ygylzLGOMD9AReA7YCPay1C11blYiIAFxcRfOiMeYT4CVgjTFmHPDJxdU3kslFnjmBtckEhua6Ye/R8e2BFK5cP0Vb5dYP0P/Bmsz4/h3KNr4b45a+OVa+UlUp16zzjShTRK6DghqRW0hkTDzfTF3PvM2H2HfiPNFxieTPHkinmsV4rmV53P/zQ/nAqQu8O3Ip8zcfxhioXSKMj7rWpEO/SeTLFsj419qk6L9gy2G+mbKOtXtPEpeQRLGwYB5vWpYutYtfd+3Hz0UzbvkuRi3ZycYDp9n13YMEeXhf97iX8tXkdWTP4suLrSsBEBmbgJ+XB25u5prGuxATj5+3R6qv8a3CGOMPPAa8AqwGOllrl7u2KhERSYu19gTwujHmM+B5YLkxZirQx1q7zZW1rZs6jPF9n+H+z8eyf+NS1k0dRtTZU2QvUJz6PV6jZJ2Wqc7Zs2oeS0Z+x+Fta0iMiyUwW24KV65P0yd74+2X9gchNjmZhUO/ZPeK2Zw+tJuYCxFkyR5GeL02NHzodTx9/P7pay3LRw9g7dShRBw9AAYCQ3OTv2x1Wr/8JW7u7gDsWDqDxcO/5uS+7STERuMfko2wEhVo8tj7ZM1b+Jq/Jgmx0WxbNIUNM0aye9U8Ovf+lZJ1W13zeFfy35AGwD8kOwUr1GLrgklEnT1JQGj6V/7Gx0Th5u6Bh9eNm5eJyNVRUCNyCzkaEc3QhdtoU6UwnWsVIzkZ5m4+yMdjV3Lo9AW+eLCes++ZyFjafDKBk+djeLBBOMXDQli24ygd+k0iOi71w3v+WLCNl4YsoEax3LzcphJenm5MXbOfZ3+ax5EzkbzUptJV1xsdl8jUtfsYtWQn87ccIinZUrVITj69rzYBPp7OfsnJlrNRceke97+3If1XVFwCS3ccpUm5fAxduI0vJq7hWEQ0vl7uNK9QgD5da5EjyO+yY/xb/XdHExmbgLuboXLhHLzarjINSudN9/muZIzJAjwFvAAsAlpZa9e5siYREUkfa+1p4F1jzBfAM8ACY8xcHIHNBlfWNnPg+yTGx1Ktw6MkJyexdvLvjHznfjp/MITwuq2d/VaO/5kpX71KcM58VG3fk6AceYg4fohtCycRc+7sJYOapIR4lo78jvD6bSlZrzUent4c2LCUpaP6c2LPZrp/NsbZd8HvnzPv508o26QTVdv1xGKJOLqf7YunkpyYgJu7O/vWLWbEW93IW6oq9R54BS8fP86fOsreNQs4e3TfVQc1NjmZvWsXsmHGKLYumEh8TCQhYYWo2/1F8pWplqJvzIUIbFL69uX3DsiCu4fnlTum4fzJI7h5eOIdkCXd50z99nXG930GgNB8RanW4VGqdngEY67tgy0RyRgKakRuIQWyB7L+8/vwcP9nVcdjTcvw9I9z+WPBdl5tV4VcwY4A4rup6zlyNooBjzXi7hpFAXioYSl6j1rGd9NSzu2On4vmjaGL6VyrON/1bOBsf6RxGR78dgZfTFzD/fXDyZ7F94o1JidbFm07wqilO5m0ai9RcQkUyx3Mq20rc3eNohTMkXrycOhMJJV7DU/31+Hkz49d9vje4+dJSras3n2CeZsO81zL8pTOF8qynccYNHMTmw+eYda7HfHzvvy3wCx+3txXtwTViuYia4A3249EMHDmRjr/bwoDH29Mh2pF0l3zzWaMCQGewzGxnwE0ttZudm1VIiJyLay154A+xpivgSeA6caY5cCH1trVrqgp9kIET/y0AG9/x8/1yq0e4LsHqjPt2zcoUasFbu7unD9xmOnfvUnOwqV46JvJzr4AjR95m8tti+bu5c1LY7bg6f3P3KNq+55kzVeEBUM+4/DW1eQJrwzAtoWTKVqtcaoNcJs+0dv57+2Lp+Dp48eDX01IEYQ06PHaVV33iT1bWD9zFBtn/smFU0fxC85G+bu6Uq7JPeQtXTXNcwY+Up9zxw+ma/wHv5xAwYp1rqomgJ3LZ3J46xrKNOqY4mt2KW4eHhSr0YxiNZqSJUcezp88wpqJQ5j6zWucPLCDVi98dtU1iEjGUVAjcgvx8nB3/jshMZnI2HiSLTQonZdRS3ayft9JclVwbAA3bd1+cof407F6yjDhqbvKpwpqJq7aQ2xCEl3rFOf0hdgUx5pXKMCUtftYvO0I7S8TTETHJfL5hNWMXraLo2ejyBnkx/31S3JPjaKUL5j9steVI8iX0S+nXip9rSJjEwA4dSGWL3vUo/vFpzO1qlyIQB9PPpuwhpFLdvBQw1KXHeeJZmVTvL6rItxbuzj13vmTt4YtoXWlQjd0n51rYYzJBryIYyI/Aahtrd3h2qpERCQjWGsjgc+NMf2BR4HxxpgNwEfW2iU3s5bKbR9KEbz4BYdSsVV3lgz/hqM715OnZCW2zJ9AUkI89R/slaLv3y63asMY4wwckhMTiYuJxCYlUahiPRYM+YxD/wpqfPyzcHL/dk7s2UKOwmn/bPf2z0JCbAw7l82kRO0WV71iZOX4n1kzcQjHdm3E08efknVaULZJJ4pUaYibx+V/per49kAS42Iv2+dvOYuWuaq6AM4e3c9fnzyNf0h2mj/dJ13n5C9bg26fjkjRVrn1gwx5oQ2r/vqJyq0fJNc11CIiGUNBjcgtZvCsTQyZt5WdRyNI/s8nURH/un3owMkLVC2aM9VEJHsWX4L8vFK07TgSAUD7vpMu+b4nz8dctq5TF2L4dup6AFpULMBnD9QlZzpvL/Lx9KB+Bt5K5OPpCLTcjKFzrWIpjnWpU4LPJqxh8bYjVwxq0pIr2I9udUvQf9oGNh44RaXCOTKk5utljMmFY/+Zh4FRQBVr7V7XViUiIjeCtTYG+MYYMxDoAQw1xuwBPgLmpfUEP2OMB1DOWrsmI2rIlr9YqrbsBUoAcPbIPvKUrMTpQ479j3MVLZuqb3psnD2GpSP7c3z3JpKTUt62HXshwvnvRo++zci37+eHh+sQElaIAuVqULhqI0rVa4O7p2POU63Do2xfPJWRb3fHLyiU/OVqUrBiHco2uhu/4NAr1rJ42NecO36Q7AVL0P6NHwgrUSHd15G/bI10971a508e4feXO5CUEM8D//vrqvam+S83d3dqd3uBA290YffKOQpqRFxIQY3ILaT/tPW8P2o5jcvm48nmZckR5IeXuxsbDpzigz9XpApu0uvv8wY81ohsl9j/pWju4MuOERbiz4DHGjFqyU5mrD/AzFeGUi88L3fXKELLSoVS7EnzX0nJyZy6kL5PmoArBkBhWf0BCPb3SrEKCRyrdwDORad/T5z/yhfquJ/+dGT6a75RjDH5cDzKtTvwO45J+CHXViUiIjeDtTYOGGiM+Rm4DxgInDDGfAjM+E9g4wNMMcZ0sdbOu973TnNFyn/mIc63v4b9TrbMG8/YDx8lb+mqtHi+H1myh+Hh6cX5U0cZ/+nT2ORkZ998pavx3NDV7Fo5h31rF7Fv3ULWTRvOggLF6dl/Bj4BWfALysqjA2ZzYMNSdq+ex4H1S5j+3ZvM/akPD3zxF2ElK162nvZvfM+6qcPYunAigx9vRK5i5Sjb+G7KNOpIlhx5LntuVMSpdO9R45slxBkuXUnk6eP89lJ7os6eovvno68qPLqU4Fz5AIg+d/q6xxKRa6egRuQWMnrZLgpkC2TY83eleHrRvpPnU/XNly2A3cfPYa1NMZk6eT6Gc9HxKfoWzhEEODbpvdaVLR7ubtxdoyh31yia4glPT/84D1+vhTQrX4C7axSlcdl8qcKTw2eiMnSPmhxBfuQNDeDwmUii4xJT7EVz+EwUANkCr3z/9qXsOX7O8T7p2LPnRjHGFAJeBzoBPwGlrLXHXFaQiIi4jLU2AfjVGPMH0Bn4HxBljPkImGgdIo0xD+JYfVPFWnv0et7z5P4dlKjdImXbAcedtiFhBQEIzee4Zfr4rk2E5C5wVeNvnDUaDy8fHvjfXyn2XNm1Ynaa/b38AihVvy2l6rcFYOVfPzHlq1dZN3UoNTo9CThWjBSsWMe5B8yxXZsY/HgjFvz+BV36/HHZegpWqE3BCrVp9eJnzic8zRr0AbMG9aZAuVqUaXI3peq3wzcwONW5gx9vnOF71ERFnOK3l9tz/uQR7us7inylq13xnPQ4c2gP4HiKlIi4joIakVuIh5sbxoDFAo7wJSY+kcGzUu8R27xCAfpP28DY5budmwkDfD9tfaq+7aoVps/YFfT9axU1iufCxzPlt4YzkbEE+Xml+9HUOYP8eKJZOZ5oVo5th88waslOxizbxfiVewj296ZN5UJ82r22M7DJ6D1qADrVLMaXk9by2/wtPNGsnLN9yNwtADQtl9/ZFh2XyOEzkQT6ejk3Y05MSiYmPpFA35Sfau05fo5hi7YTFuJPmfxXXiqd0YwxxYE3gDbAAKC4tfbUTS9EREQyHWttIjDMGDMC6AB8AHxwMbAZa62dbowZDAw3xjS52P+arJ7wC1XbP+x8alN0xGnWTRlKluxh5C5WHoBS9dsya2Bv5g/pR+HK9fHyC/hvvZfcK8bN3R3j5pZi5UxyUhJLRnyXqm90xOlUty/lLub42R99/swl+2QvUBwPbx9iLvZJD08fP8o2uYeyTe4h8swJNs4ezYYZo5j0+YtM/fo1ilZrTLMnP0zxFKmM3qMm5vxZfn+5A2ePHqDbJ8MpUL7WZfuf2r8DNw9PsuYp5GyLPncGv6CsKfolxMWw4PfPwRiK1WiarnpF5MZQUCNyC2lVuSB9xqyk61fTaFWpIGej4hixaEeatxU926ICY5bt4tmf5rF6zwmK5Q5m+c5jrNh5jNAAnxSrkPNkDeDT+2rzym+LqPPWn3SqVYywrAGcOh/DxgOnmL5uP9u/eZAAn6vfOLdknqy826k6b99djcXbjzBqyU7GrdjNe52rO4OajN6jBuDZFuWZtHov741czu5j5yidL5TlO48xetku6oaH0a7aPxOotXtP0L7fJO6t/c9Tr6LiEqjy2ghaVCxAsdzBBPl6s+PoWf5YsJ34xCQ+f6JuuoOrjGCMKQ28BTQFvgWKWmsjbloBIiJyy7DWJgNjjDFjgdbAOzgCmz7Ax0BN4EMcwf818QkI4scnm1KhRTdsUjJrJv9G9PkzdHrvZ9zcHT/fg3LkpdlTHzLtm9f5oWddyjXrTJbsYZw/cZitCybR7ZMRBOfOn+b4Jeu1Ycv8Cfz2UnvKNbuXxLgYNs/9K80nRfV/sAZ5S1UhT3hlArPl4sLp46yZNAR3T29KN+wAwMTPX+D8ySMUrtqQ4Jx5SYiLZfPcccRHR1KuWedr+hoEZM1BzU5PUbPTU5zYu5UNM0axcdafnNi7NUVQk9F71Pz+SkeO795M+eZduHDqGBtmjEpxvHCVBgRk/WcPvf4P1iAoZz5eGPnPh3VDX+tMYGguchcvR2BoLs6fPML6GSOJOLqfOt1fcu43JCKuoaBG5BbybIvyJCVZhi/azpvDlhCWNYCutYtTuXAO7vliSoq+oYE+THqjLe+NXMawhdsxBuqUDGNcr9Y0+3BcqlUz99cPp2juYL6ftoFf5mzhfEw8oYE+FM8dwvuda+DrlfJ2pavl5maoG56HuuF56Hd/Hbw9rm+8Kwn09WLi6235dNxKpq7dz9CFjlUwL7SqwMttK10xZPHx9KBVpYKs2XOCyav3ER2fQGiAL03K5eO5lhUoVyDbDa3/b8aYisDbQG3gS+Bxa+2Fm/LmIiJyS7u4R81EY8wkHEH/O8D7OAL/V4wxS6y1E69l7CZPvM++dYtZMWYQURGnyJa/OJ0/GEJ43dYp+lXv+BiheQqzZGR/lo8eQFJCAoHZclOkasNUKzr+rWzju4mNPMfy0QOZ8f07+AeHUrphByq2vI/ve6RcQVKz89PsXD6T5WMGEht1noCQ7OQtVYU6971IzotPgSrXrDPrpg1n/bThRJ87jbd/FrIXKEGn3r86b5e6HjkKhdPk8fdo/Ni7JMZd/gEM1+voDkfgsn76CNZPH5Hq+INfTkgR1KQlvF4bti+azIqxg4mNPIeXrz+5i5en6RO9M+TrISLXx6SVSouIaxhj7JX2X7leZyJjKfHcbzzYIJzPH6h7Q99LIPvDg7DWplrXbRxrvX8Axllrp6dxvDqOgKYS8DkwyFobdaPrFRGR29fFnz31cfx8KQ34A9WstdsuHrfvzbv8bUDrpg5jfN9n0r2Xity+ejfImuYcR0Sun1bUiNzGYuIT8fVK+X/zb6asA6B+qcs/oUBuuCdwLD1/6d+Nxpi6OD7xLAH0BTpZa13/eCkREbnlGGOKAUsBL8D9X3/cLv4Bx4b0tV1SoIiIpElBjchtrNMXUyiYIwvlC2QjKdmyYMthZm44QLWiOWlZqaCry7tjGWOq4tjgsZa1NvriJ5yNcQQ0eXHsH/C7tTb+MsOIiIhclrV2pzGmCGCBZCDpX38nWS2tFxHJlBTUiNzG7qpQgLHLdzFt7T6i4xLJk9Wfp+8qxyttK9/UjXDlH8aYrMAoHCtqdhljWuFYgh4C9AGGX89TOERERP7NWnvO1TWIiMjVUVAjcht7pkV5nmlR3tVlyEXGGDfgN2Acjk80VwGewEfAGGttkgvLExERuaIKLbpRoUU3V5chInJbU1AjInLzvAEUAwoA9XDc/jTx4mNURUREREREFNSIiNwMxph7caycOQMsBPYCdYFaxpi/9wsYZ61d7boqRURERETE1RTUiIjcHFuA/wH7cDxpw/1ff//9b62sERERERG5wymoEZE0JSdbBs3ayJB5Wzlw6gLZAn3pUL0IvdpVwc/78t86Dp2O5OOxK1i/7xTHIqJJSEoiT9YAmpbLzzMtypMjyC/VOat2H+eTsatYvecEbm5QrWgu3rmnGqXzhabot3DrYQbP2sTmg2c4dT4GD3c3CmQPpEvtEjzYIBxvT/cM/TpkFGvtRuBlV9chIiJyO7LJySwbM4DVE4YQcWw//sHZKN2oIw0feh1Pn9Tzjn87d/wQc378iCM71nHh1DGSEhMIypGXYjWbUrvLcwRkzZHyvaxl46zRrBw3mNOHdpOUmEBwznyUaXIP1Ts+hpevf6r3OLlvGwt+/4J9axcRc+EsfkGh5AmvTOuX/4d/cLYM/VqIyK1PQY2IpOntEUsZPGsTrSoV5Knm5dhxNIKBMzey6cBp/ny5JY4nSqft5PloDp2OonmFAuTJGoCnuxtbD59hyPytjF+5hznv301ooI+z/6rdx2nfdxK5Q/x4vUNlAH6avZnWn0xg2lvtKZEnxNl3x5EIkq2la53i5AzyIy4xiaXbj/HW8CXM3niQkS+1uHFfFBEREcmUpvV/kxVjBlGybmtq3vsUp/bvYPnoARzftZHun4+97Lwl8uwJzp04RIlaLciSIw/uHh6c2LuN1ROGsGXuXzw+eD5+wf98cDT3549Z+PsXFKpUjwY9Xse4u7Nn1TzmDP6QvasX8MD/xqUYf9eK2Yx8+35CwgpQ7e7HCAjJTtTZUxzaspL46EgFNSKSioIaEUll2+Ez/Dh7E60qF+TXp5s52/NnC+TNYUsYv3IP7asVueT5FQvlYMLrbVK1Vy+Wi0cHzGbUkh082bycs/2tYUvw9HBjwuttyR3i+BSqXdUi1HprFO+NWsaIF/8JX3o2Lk3PxqVTjPtI4zL0+n0Rv8zdwvr9pyhfQBMeERGRO8WJvVtZMXYw4fVa0/mD35ztwbkLMO2b19ky7y9KN+xwyfPzlKxEj68npWrPX7Y6o3v3ZP2MEdTs/DTgWLmzfPRAchcvz/2fj8W4uQFQtd3DjHirO9sXTyHi6AGCc+cHIOrsScZ+9Bj5y9Wg2ycjcPf0yshLF5HblJurCxCRzGfc8t1YC483LZui/f76JfHz8mDMsl3XNG6B7IEARETFOdv2njjPmr0naVulsDOkAcgd4k/bKoWZu+kQpy/EXnHs/NkcY5/719giIiJy+9s0ZyxYS/V7nkzRXrnVA3j6+LFx1uhrGjc4dwEAYi5EONuSkxJJiIsmIGsOZ0jzt8BsuQDw9PF1tq2a8Asx58/S7MkPcff0IiE2mqTEhGuqR0TuHFpRIyKprN13EjdjqFQo5T3ZPp4elM4fytq9J9M1TlxCEpGxCcQnJrH9yFk+HL0CgMbl8jn7rNt7AoAqRXOmOr9KkRwMW7SdDftP0bBM3hTHImMTLo4fz8pdx/l26jpCA3yoWCj7VV2riIiI3NqObFuLcXMjT8lKKdo9vH3IVbQMh7etTdc4ifFxxEdHkpgQx8n925k96AMAilVv4uzj7ulF/rI12bViNouGfU2pem1wc/dg9+q5rJs6jKrtH8E/5J+5yM5lM/H2DyQ28hwDetbj+O5NGDc38pWuRrOnP0pVs4gIKKgRkTQcOxtFaKBPmhvz5g72Z+Wu4yQlJ+PudvlFeWOX7+K5n+c7X+cLDaD/Iw2oVjSXs+3o2eiL46be6C/XxRU2R85Gpjr2+tDFjFy8w/m6UqHs9O1eh0BfLSkWERG5k1w4dRS/oFA8vLxTHQvMlpuDm1aQnJSEm/vlHziwafYYxvd9xvk6KGc+2r/5A/nKVE/Rr8NbPzCuz5PMHtSb2YN6A2Dc3Kjf4zXqP/Bqir6nD+4iOSmJoa91plT9dtR74BUijh1g4e9fMOSFtjzyw0xyFAq/1ksXkduUghoRSSUmPhEvj7RDGJ+L4U1MfBIBPpcPahqWycfol1sSGZvA2n0nmb5uP5GxKZf7xsQnAqQZCv3zXompjj17V3k61SjKqQuxzNl0kF1HI4iK01JiERGRO01CXMwl937x8HI8vCAxLgYvv4DLjlOkWiPu/3wscTGRHNm2lu2LpxIfnfrDIm/fQLIXLIFPQBCl6rfFw8ubHUunM+/nT0hKiKdRz7ecfeOiI7HJSZRr2pn2b/R3tocVr8CQF9uy4LfPuOe9n6/lskXkNqagRkRS8fb0ICou7X1hYhOSAPD1uvJjsHMF+5Hr4kqZVpUL0bBMXtr3nYSXhzvd65W8+F6OceIujpvWe/l4pv5WVSJPiPNpUHfXKMpn41fT6YspzOt9N8XDQlL1FxERkduTh5c38TFRaR5LjHfMZzy8fdM8/m+BobkIDHWs+g2v25oiVRsx5IU2uHt6UanV/QAkJyXx28vt8fDy4aFvpzifJlWqQTs8vHxY+Mf/CK/XhtzFyl2szYeE2CjKN++S4r0KVqxDUM587Fu3+NouWkRua9pMWERSyR3iz+kLsWmGJ0cjosgR5HvF257SUrtEGGEh/gxbtN3ZFnbx9qajEdGp+h8765h0hWX1T3Xsv+6pWYyEpGT+XLrzqusSERGRW1eW7GFEnztNYnzqBwpcOHWUgKw5r3jbU1oKVqhNluxhrJs61Nm2f8MSju5YT3i91qke+V2qQTuwlv3rlzjbgnKEARCQNeW+f3+3/XujYhGRvymoEZFUKhTMRrK1rLm40e/fYhMS2XzgNBUKXvuGvbEJiSmezFT+4ua/q3YdT9V31e4TuBlDufxXftx27MXbo85Fx19zbSIiInLryV2iIjY5mcPb1qRoT4yL5diuTYSVqHDNYyfExaYIUyLPOOZGyUmpP8xKTkpM8TdAnvDKAJw/eSRV//Mnj+AffOU5jojceRTUiEgqHaoXxRgYOHNjivbf528jOj6Re2oUdbYdOh3JzqMRJCQmO9tOnEu9OgZg3PJdnImMo1Lhfz5VKpIziPIFsjFh1R7nChpwrKaZsGoP9UvnIVuWf5YrX2rsn+ZsBkgxtoiIiNz+yjTqCMawfPQPKdpXT/6NhNhoyja5x9l27vghTu3fkeIR2X+HL/+1afYYYs6fIe/FsAUge4ESzmPJiSn30Fs/bThAiic5lWvaGYBVE35N0Xf7kmlcOHWUYjWbpfcyReQOoj1qRCSVUnmz8nCj0vw0ezM9vptB43L52XnkLINnb6JueBjtqxVx9n36x7ks2X6U1f26kj9bIAAfjF7B9sNnqV86D/lDA4mOT2DV7hNMXLWXnEF+9GpXOcX7fXxfLTr0m0SbTyfQs3EZAH6avQlroXfnGin6tvp4PCXyhFCxYA5yBvtx+kIs09fvZ+Wu49QsnjtFiCQiIiK3v5yFS1G1/SOsHDeYke88QLHqTTh5YAcrxgyiUKV6lG7U0dl33MdPsn/9Yp4fvo7g3PkBmDWwNyf3baNwlQYE58pHfGw0h7esYsv8CQSE5qJ+j9ed5+cqWoaSdVqxbdFkBj/RmLJNO+Hh6c2OpdPYvXIuRas3oUD5Ws7+has0oEzju9k0ewxDX+tM8ZrNiTh+kBVjBxMQmosGD/a6eV8oEbllKKgRkTT16VqT/KGB/DZ/KzM3HCA00JfHmpSlV/vKqe7J/q82lQtxLiqOP5fs5PSFWNzcIF9oIE80K8szLcqTPUvKDf2qFc3FuF6t+WTsKj4ZtxI3Y6hWNBc/P12V8LxZU/R9qGFppq3bz09zNnM2KhYfTw9KhIXwYZeaPNyoFB7uWigoIiJyp7nrmY8JzpWPNZN+Y+eyGfgFhVL97sdp8NDrV5y3hNdvQ2xkBBtmjCQq4jTGzY3gXPmocc+T1O76HP4hKW/5vuf9n1kz6TfWTR3Gwj/+R0JsNCG5C9Dgodep3fX5VON3eOMHchYpw7qpQ5n23ZvOp0U1euQtArPlztCvg4jcHoy11tU1iMhFxhh78ufHXF2GZKDsDw/CWnv5GaKIiEgmYIyx78074+oy5BbRu0FWzXFEbhB99CwiIiIiIiIikkkoqBERERERERERySQU1IiIiIiIiIiIZBIKakREREREREREMgkFNSIiIiIiIiIimYSCGhERERERERGRTEJBjYiIiIiIiIhIJuHh6gJE5PZw/Fw0td4cxfmYeD7sUpMnmpVN1WfUkh38Om8rWw+dIdla8mcLpEO1IrzUppKzT7u+E1my/egl36d7vZJ82aPeDbkGERERuf0c3bGeDbP+ZN+ahZw9up+kxASyFyhOpVYPULltD4wxlzx3dO+H2Tz3L3IWKcMTPy1IcWzf2kUMebFtmueVbdKJjm8PzNDrEJE7h4IaEckQbw1bQlKyveTx536ex4jFO2hduRD31CiKu5th/8kLHD4TmaLfi60r0r1eyVTn/zZ/K8t2HKNZ+fwZXruIiIjcvhYP/4Y9q+dRsm5rKrfpQWJCHFvm/cXkL1/m6M71tHnlqzTP27l8JlvmT8DD2/ey41dq8yAFytZM0RYSViCjyheRO5CCGhG5bjM3HGDiqr28fU9VPvhzRarjfyzYxvBFO/jm4fp0rVPismM1KJ03VVtCYjLvjlhK9iy+NC2noEZERETSr1rHR2n/en88vH2cbdU7PsaQF9uxZtJvVL/7cXIUCk9xTkJsNFO+fJUqbR9mx9Lplx0/X6mqlGvW+YbULiJ3Ju1RIyLXJToukdf/WMwD9UtSqVCOVMettXw9ZR1l84c6Q5rImHisvfTqm/+asX4/py7Ecm+tYni469uWiIiIpF/+sjVShDQAxs2N8PptADixZ0uqc+b+8ikJcbE0euTtdL1HfEwUifFx11+siAhaUSMi16nvX6uIiU/krbursfng6VTHdx07x74T53m4USk+n7CaQTM3cTYqjkBfTzpWL8r7nWsQ4ON52fcYtmg7AN3qpr4lSkRERORanD95BAC/4Gwp2o/t2sTy0QNo/8b3+ARkueI4U799nfF9nwEgNF9RqnV4lKodHrns3jciIpejoEZErtnGA6cYNGsjX/WoT7C/d5p9dh2LAGDCyj3EJybzUpuK5M8WyIz1Bxgybyu7jkUw7tXWl5zMHD8XzZxNB6laJCfFcgffoCsRERGRO8mF08dYM3EIQTnzUaDcP/vL2ORkJn3xAgXK16Jsk3suO4abhwfFajSjWI2mZMmRh/Mnj7Bm4hCmfvMaJw/soNULn93oyxCR25SCGhG5JsnJlpeHLKRa0VzcW7v4JftFxiYAcOpCLGNeaUW9UnkAaFOlMBYYuXgHszcepMkl9p4ZtWQHiUmWbnUvv7eNiIiISHokxsfx53sPERd9gU7v/4K7p5fz2Iq/fuTYrk088eOCy4zgkL9sDbp9OiJFW+XWDzLkhTas+usnKrd+kFxFy2R4/SJy+9NmDyJyTX6cvZlNB07Tr3udy/bz9nQHIHeIvzOk+VvXiwHP5R7HPXzRDvy8PWhfrch1ViwiIiJ3uqTEBP58rwcHN6+g1UtfULhKA+ex8yePMOfHj6h177NkK3DpD6Eux83dndrdXgBg98o5GVCxiNyJtKJGRK7a+eh4Phm3kg7ViuDp4cae4+cAOHo2CoAzkbHsOX6OXMH+5AkJACBHltSPtswR5AdARFTam++t3HWcnUcj6Fqn+BX3sRERERG5nOTERMZ80JMdS6dz13OfUrn1gymOzx78IR6e3pRu1IEzh/b8c15SIkmJ8Zw5tAcvX38CQnNe9n2Cc+UDIPpc6r37RETSQ0GNiFy1iOg4ImMTGLV0J6OW7kx1/MtJa/ly0lqGPtecOuF58PF058jFEOffDp+JBCBbGiEO/GsT4TraRFhERESuXXJSEmP7PM7WBZNo+uQHVO/4WKo+544fIvrcaQY8nHq18IVTR/m2exXC67Wh8wdDLvtef4c8/iHZM6Z4EbnjKKgRkauWLdCXn55qkqp9++Gz9Bu/mi61i9O0fH7KF8qOn7cHrSsXYvSyXUxevZdWlQs5+/86z/E4zCbl8qUaKzoukfErd1MkZxA1iue6cRcjIiIitzWbnMz4vs+wee44Gj36DrXufSbNfg0eep3oiFOp2id/9SpePn40faI3WbKHOdujz53BLyhrir4JcTEs+P1zMIZiNZpm7IWIyB1DQY2IXDU/bw/aVimcqn1xgOMxl6XzhaY4/tbd1Zi/5TBPDJrDI41Lky9bILM2HGTmhgPcW7s41YqmDmImrtrDhZgEXmilTYRFRETk2s0Y8C4bZowkrGQlgrLnYcOMUSmO5yxSmpxFSlOwQu20z//hXbz9s1CqQbsU7UNf60xgaC5yFy9HYGguzp88wvoZI4k4up863V8iewHNYUTk2iioEZEbLm9oANPebs/HY1cyfNEOzsfEUzBHFt7vXJ0nm5VL85zhi7fj7mboXOvaNvMTERERATi6fT0AR7atYdzHT6Q6Xv/BXuQsUvqqxw2v14btiyazYuxgYiPP4eXrT+7i5Wn6RG9K1W973XWLyJ3LWGtdXYOIXGSMsSd/Tn3PtNy6sj88CGutcXUdIiIiV2KMse/NO+PqMuQW0btBVs1xRG4QPZ5bRERERERERCSTUFAjIiIiIiIiIpJJKKgREREREREREckkFNSIiIiIiIiIiGQSCmpERERERERERDIJBTUiIiIiIiIiIpmEh6sLEJGM1++vVXw2YY3z9dS32lGlSE4XVpS5FXjyZ6LjEgGoVSI3419r4+KKRERE7hzzfvmU+UP6OV/37D+dvKWrurCizO3ju/KREBsFQIHytenx9UQXVyQiGU1Bjcht7MMuNQkN9KFQjiBn26HTkXw8dgXr953iWEQ0CUlJ5MkaQNNy+XmmRXlyBPmlGMNay5hlu/hpzmZ2HztHQlIy+UID6FijKI82KYO/t2eK/uej4/l43EomrdpLRFQchXJm4ZHGpXmwQanrvp6ZGw7w/bQNbD9ylqjYBMKy+tOyUiGevqscWQN8nP2e+WkeIxfvuOQ49UvlYfQrrZyvv3qoPolJybwzfOl11ygiIiLXpvnTffALCiVrnsKpjsWcP8vCP/7HtkVTOH/yCN5+AeQoFE6jR94iX5nqlxxzdO+H2Tz3L3IWKcMTPy24rvpWTfiV/esXc3THek4f2o23XyCvT953yf47l81kycjvOLlvG/ExUWTJnoeSdVtR695n8AvK6uwXHx3JklH9Obp9HUd2rCfy9DFK1G5Jlz5/pDlu215fk5yYyPT+b13X9YhI5qWgRuQ21rJSQfJnC0zRdvJ8NIdOR9G8QgHyZA3A092NrYfPMGT+Vsav3MOc9+8mNPCf0OPTcav436S11A0Po1f7yri7uTF/8yH6jFnJwi1HGPPqP4FHfGIS93wxmY0HTvFI4zIUzx3M7I0HeeW3RZy6EMvLbSpd87X8sWAbL/66gPIFsvFcy/L4eXmyas9xvp26junr9jPn/Y54ebgD8GD9cOqXypNqjMlr9jJ59T6als+for1DtSIAfDJ25TXXJyIiItenZJ1WBOfOn6o94thBhrzQhviYKCq0vI9s+YoSG3WeE7s3c/7U0UuOt3P5TLbMn4CHt2+G1Ldo6JfEXDhL7mLliYu6QEJczCX7rpn8OxM/e57cxStQu9vzePn4cWjLKhYP/5odS6by+OD5uHt6ARB97gzzf+1LQGguwoqXZ8fSY5eto0yjjgDM+alPhlyXiGQ+CmpE7jAVC+Vgwuupb+2pXiwXjw6YzaglO3iyeTkAkpMtA2duolyBbIx+uRVubgaAhxqW4oFvpzN17X4OnLrgDIOGLtzO2r0n+bhbLR5tUgaA++uH06P/DP43cQ1daxcnLGvANdU9YMZGcgb5MenNtvh4Or51PdAgnEAfLwbN2sTKXcepXTIMgKpFc1K1aOpbvb6fvgEvDzc61Sx2TTWIiIjIzTeuz+MkJSbw+I/zyZI9LF3nJMRGM+XLV6nS9mF2LJ2eIXX0+GoiQbnyYYzh1+fbcGzXxkv2Xfbn9wSE5uLhb6fg4e34AKxymx54+wWyfMxADm5aQcGKdQAICM3Ji39ucl5b7wZZLzmuiNwZtJmwiABQILsjbImIinO2JSYnExOfSI4gX2dI87dcwf4A+Hr9k/eOWbYLPy8P7q9fMkXfx5uWJT4xmQmr9lxzfedj4gn293aGNM46QvxS1ZGWDftPsenAae6qUDDFbVIiIiKSee1fv4QDG5dRu+tzZMkeRlJiAgmx0Vc8b+4vn5IQF0ujR97OsFqCc+fHGHPljkBs5Hl8A4OcIc3fArPlBsDT559VPh5e3ukOoETkzqAVNSJ3qLiEJCJjE4hPTGL7kbN8OHoFAI3L5XP28fJwp0bxXMzZeIhvpqyjdeVCeLg7bn0avmg7DzcqRfYsjolGcrJl4/5TlMkfmipMqVQoB27GsHbvyWuut16pPIxcvIN3Ryzl/vrh+Hl7sHLXcb6bup5m5fNTqXCOy54/bNF2ALrVLXHNNYiIiMjNtXPZTACCcuZj+Btd2bl8FjY5iax5i1D/gVcp16xzqnOO7drE8tEDaP/G9/gEZLnZJQNQuHID1k8fzvTv36Zyqwfw9PXj0OaVLB7+DcVrNidPeGWX1CUitwYFNSJ3qLHLd/Hcz/Odr/OFBtD/kQZUK5orRb/vH23IU4Pn8uHoFc4wx80YerWrzMtt/9lzJiI6juj4RHKH+Kd6L29Pd7IGeHPkbNQ11/tRl5pciI5n4MxN/DDjn6XGPRqE82n32pc9Nz4xibHLdhEW4k/D0nmvuQYRERG5uU4f3AXAxM9fIDRvYdq/8T1JCXEsHfU94z5+gqSkBCq2uM/Z3yYnM+mLFyhQvhZlm9zjqrJp/kwf4qLOs3z0AJaN+t7ZXrntQ7R8vt9lzhQRUVAjcsdqWCYfo19uSWRsAmv3nWT6uv1Exiak6hfg40mJsBCC/LxoU6Uw3p7uTF+3n0//WkV8YhJvdHQ8PjMm3vF4a++LG/r+l7enOzEXH4F9LXy83CmaO5h68Ql0qFaUID8vFm07wq/zthAdl0j/Rxte8twpa/ZxNiqOhxqWSnULl4iIiGRecdGRAHj7BfDglxOcG/CWrNuab7pVYs7gj6jQvCvGzbGjw4q/fuTYrk088eP1PeHpenl6+RCavxiFYqMo0/hufAKC2Ld2EavG/0xCbDQd3vzBpfWJSOamoEbkDpUr2I9cwY79XVpVLkTDMnlp33cSXh7udK/n2GMmKTmZjp9NxsfTnUlvtHXel922SmF8vTz4cvJaWlUuRLkC2ZwBTVxiUprvF5eQhM8V9pG5nEd/mM22w2dY+FEn561VrSoXIlewPx+NWUHrKoVoUbFgmucOW7QdY6BrHd32JCIicivx8PIGoEyju50hDYBvYDAlarVg/fThnDq4k+wFSnD+5BHm/PgRte59lmwFiruqZABGf9CTE3u38tQvS5z71ITXbU1gaC5mD/6A8HptKFmnpUtrFJHMS5sJiwgAtUuEERbi79zLBWDp9mNs2H+K1pULpdo8r22VwlgLS3c4HouZNcAHXy93jqZxe1NcQhJnIuMIS+O2qPQ4cOoC09btp0m5/Kn2v2lbtTAAi7cdSfPco2ejmL/5MLVLhFEwh2vuUxcREZFrkyVHHgACsqbei+7vttgLEQDMHvwhHp7elG7UgTOH9jj/JCclkpQYz5lDe4g8ffyG1xxx9ADbF0+lWI1mqTYTLtWgHQD71i264XWIyK1LK2pExCk2IZFz/3rq04lzjqcqJCYnp+r7d1tSkgXAzc1QJn82Nh04TVxCEt6e/9wCtWbvCZKtpULB7NdU1/EIRx1JyTbVsaSk5Iv1pD4GMHzRdpKt1SbCIiIit6A84ZVYPeEXzp9M/YHM+ZOHAfAPdswvzh0/RPS50wx4uE6qvhdOHeXb7lUIr9eGzh8MuaE1XzhzDIDkpNS3fP/dlpyU9gpkERHQihqRO87f4ct/jVu+izORcSmenlQ8LASAsct3k5iUMqwZsWgHABUK/RO+dKxehOj4RH6bvzVF34EzN+Lp7uZc/XK1iuQKwt3NMHXtPs5Hx6c4Nnyxo46KlwiBRizeQRZfL1pXLnRN7y0iIiKuU7JOK7z8AtgwcxTxF/erAbhw+hjbFk0lNF9RsuZ1zC8aPPQ6nd7/JdUfv+BsBOfKT6f3f6HWvc/c8JpD8xbFuLmzffFUYiPPpzi2btpwAPKUrHjD6xCRW5dW1IjcYT4YvYLth89Sv3Qe8ocGEh2fwKrdJ5i4ai85g/zo1e6fx0WWyR9Ky4oFmbJ2H00/HEenGsXw8nRj+roDzNt8iMZl81GrRG5n/wfqhzNi0Q7eHbmUg6cuUCwshNkbDjB5zT56tatM3tCAFLW06zuRJduPsrpfV/JnC7xkzVkDfHikcWkGztxE495juK9eSYL9vFm07QjjV+6hTP5QOlQvkuq8JduPsvfEeXo0CMf3OvbHEREREdfwDQym2ZMfMOmLl/jxqWZUbHkfSQkJrJrwM0mJ8bR47lNn34IV0n4K5Iwf3sXbP4vztqO/RRw9wNddK1CgfG16fD3xirVsXzKN47s2AXDu+EGSEuJZ8NvnAPgEBFGt46MA+AVlpVrHR1k+egCDHmtAxVb34xsQzL51C9k89y9yFS1LmUYdU4y9YuxgYiPPOV+fPrTLOXbOomUoUeuuK9YnIrcP/eYicodpU7kQ56Li+HPJTk5fiMXNDfKFBvJEs7I806I82bP4puj/45NN+H3BVoYv2sGXk9cSHZdAgexZeK19ZZ5tUSFFXy8Pd8a82oo+Y1YyZvkuIqLiKJQjiH731+GhhqVS1RIZm4CflwdBfl6pjv3Xh11qUqlQDn6as5mBMzZyLjqePFn9ebJZWV5pWxmvNJ42Nfzifju67UlEROTWVblND/yCQlk8/Bvm/vwJxriRt3QVOr49iPxla1zzuHExjhU6WbLnvkJPh63zJ7J++vAUbXN//hiAoJz5nEENQPOn+5AnvDIrx/3Isj9/IDbyHEE58lCj81PUf6BXio2RAZaM/I5zxw86X5/av8M5dvnmXRXUiNxhFNSI3MYiouLw9/YkyM8LD3fHnY7NKxSgeYUC6R7D08ONhxuV5uFGpdPVP8jPm37316Hf/anvD/9vbZsPnubF1hUJ8vO+4rjGGDrWKErHGkXTVQfAtz0b8G3PBlfsdyYyFmsh2aa9z42IiIjceDGREXhF+OMTEISbR8pfU8LrtSG8XptrGveFkevTbN+3diFu7h7Uf7BXusZp/0Z/2r/RP119jTGUbXw3ZRvffV01piX63BmwFmtT7yEoIrcHBTUit7HGvccCMPWtdlQpktPF1aQ0f8thQgN9ePqu8q4uhYqvDiM6zrG5X4HsejKUiIiIKwx6tAEAPftPJ2/pqjf8/XavnEPltg8Rmi/9HwJlBl/dW56EWMdTNkNyF3RtMSJyQxirT5BFMg1jjD3582PXPc6+E+fZf/KfzesqFc5BoO+Vby+6Uy3edsS5WXKwvzflr/HpVGnJ/vAgrLXmyj1FRERcyxhj35t35qa/79kj+zh7ZJ/zdZ7wSnj764OTS9m3dpHz6VE+gcGElajgkjp6N8iqOY7IDaIVNSK3oYI5slAwhyY46VW7ZJirSxAREbljhYQVJCSsoKvLuGUUrHj528tF5Nanx3OLiIiIiIiIiGQSCmpERERERERERDIJBTUiIiIiIiIiIpmEghoRyXQWbztC9ocHMXzRdleXIiIiIneoeb98Su8GWYk4esBlNfz1ydP0bpDVZe8vIq6hzYRF5JIWbztC+36TnK/djCHQ15PcIf6UK5CNjtWL0qhMXozRhv8iIiKSfrGR51n25/dsWzSZM4f3ARASVoCSdVpSs9PT+AQGubZAEREXUlAjIlfUqWZRGpbJh7WWyNgEdhyNYOqafYxaspP6pfLw01NNCPLzdnWZIiIicgs4uX87Q3t14vzJI5Sq347KbR/CYNi/fjEL//gf66eP4L5+f5K9QAlXlyoi4hIKakTkisoVyE6nmsVStH14b03eGbmUn2Zv5vGBcxjxYosrjhMdl8iynUdpVCbfjSpVREREMrGE2GhGvNWdyDMn6PbpSIpWa+w8VqXdQ1Ro0Y3hb3ZjxFvdeeLH+Xj6+N30GuNjovDy9b/p7ysi8jcFNSJyTTw93PikWy027DvF7I0HWbbjGDWK5wJg04HT9P1rFct2HiMxKZkSYSE83KgUU9fuJy4hKUVQM3XtPvqNX83OIxFky+LDfXVLUq1ozjTfMz4xif7TNjBm2S72nTiPr7cHtYrn5s2OVSmRJ+SmXLeIiIhcuzWTf+fMod3U7vZCipDmb0WqNqLGPU+yePjXrJn8O9Xvfpydy2Yy7PV7afni51Rt93Cqc77tXhVj3Hjm9+XOtiPb17Hgt885sHEZ8TGRhOQuQMWW3anZ+WmM2z/bdH51b3mCc+Wn2VMfMmtgbw5vW03WsEI8/uP8S15D5OnjzBvSj53LZhB55gT+wdkoWacVDXu+iW9gMAAzB7zHkhHf8tSQpalWBp0/cZivupSnUqsHaP3y/wBIjItlzs8fs3HWaGIjz5GzcCka9XzrkjWcPrSb+b/2Y8/q+cRcOEuW7GGUaXw39e9/BQ9vn0ueJyK3Bm0mLCLXzBhD93olAZi10bHR3rq9J2n18XiW7TzGQw1L8c491Qj09eLpH+exfOcxBjzWyHn+5NV7efC7GUTGxPNKu0r0bFyacSt288HoFaneKzEpma5fTuOLCWuoUTwXfbrV5ImmZVm15zh39fmLHUfO3pyLFhERkWu2dcFEACq1uv+Sff4+tm3hZMAR3viH5GDDjJGp+h7asoozh3ZTrllnZ9uu5bP4+Zm7iDh2gFpdnqX5Mx+TvWBJZg54j4lfvJhqjHMnDvH7Kx0JzVeEZk9+QMXL1HbuxCEGPd6IbQsnUa7ZvbR8oR/h9duwZvLvDHmhDQlxMQCUb3YvABtmjEo1xoZZo7HJySlqHvPhoywd+R15Slai6RO9yVemGiPevp+jO9enOv/ozg0MfrwxBzevoGqHnrR8vi8FK9Zh8bCvGPH2fdjk5EvWLyK3Bq2oEZHrUjp/KAC7jkUA8ObwJcQnJTH9nfaUzON4SkGIvzdLth/h9IVYTp6PJoufF0nJybw1fAmhAT5Mf6cDWQMcn/48WL8U9d8bnep9fpy9mYXbDjPmlVbUDc/jbO9Spzh13v6TPmNWMuTZZjf4akVEROR6nNi7FW//QLLmKXTJPlnzFsbLL4Dje7YA4ObuTtkmd7Pszx84c2gPWfMWdvbdMGMUGEO5po7QIzEulvF9nyV/2Rp0/2wMbu7uAFRt9zDTvnuT5aMHUK39I+QqVtY5RsTR/bR/43vKN+9yxfqnfv06yUlJPPHjAgJC/1kBXKhiPUa+3Z3VE4dQ454nyFG4FLmKlWPjrD9p9MjbKR68sGHGSELCCpK/bA0Adq+cw7ZFk6nQ8j7a9frW2a9AuVqMfCd1aDSh77NkyZ6bR36Y5bxFq3KbHuQsXJrp373J9iXTKFmn5RWvRUQyL62oEZHrEujjCUBkTAInz8ewctdxmlco4AxpVu46zrsjl/HzU01Jtpa/Vu4BYP2+Uxw+E0W3uiWdIQ1AFj8vHmwQnup9Ri/dScmwEErlDeX0hVjnHx9PD6oUycG8zYduwtWKiIjI9YiLuoC3X+AV+3n7BRIXdd75utzfK1Rm/rNCJSkxgc1zx1GgXC2Cczluq96zej6RZ45T/q6uxF6IIDritPNP8RqOD3R2r5qb4r38gkKdQc/lxEaeZ8dSRwji5u6RYuz8Zarj6ePP7pVz/lVzZ84dP8T+dYudbUd3buDkvm0p3m/boikA1O7yXIr3K1m3FaH5Uu4ReGLPFo7t2kjZJp1IjItNUUOx6k0c1/evGkTk1qQVNSJyXS7EJgAQ4OvJgZMXACgZ5ghp9p88z8Pfz+T7RxtS9eK+M/tPnk/xd7HcwanGLBGWer+ZHUfPEhOfRMnnf7tkLZEx8QT4el37xYiIiMgN5eUXQFz0hSv2i4u+gLd/Fufr3MXKkaNQOBtmjqLBQ68Djlucos+dpnzze539Tu7fDsBfHz95ybEjz55I8To4d4EU+9ZcyumDO7HJyaye+CurJ/6aZp+osyed/y7b+B5mDXif9TNHUrBiHQDn7Vt/B08AZ4/sw83dg6x5CvNf2QsU5/TBnc7Xf1/fnB8/Ys6PH12ihhNptovIrUNBjYhcl00HTgFQNFcwXp6OSY6ftwfno+Pp9tU0XmhVkbrheTgbGQtAbHwSANY6zjeph3Qe+7fkZCiTP5T3O1W/ZC0+XvqWJiIikpnlKBTOgQ1LOXtkHyFhBdPsc+bwXuKjIylQvnaK9nLN7mXWwPc5uGk5+cpUZ8OMkXh4+1Kqfltnn7/3Z2n29EfkLFQqzfGDcuZN8drT2zddtf89dvnmXSnXtFOafbz8Apz/Dsiag8JVGrB1/gRaPt8Pdw8vNs0eS74y1f9z61caE5+/j/xnUvR3DbW6PkeRyg3SPMc/JHs6rkZEMjP9ViMi18xay9CFjk92mpbLT4Fsjk++th85y8Pfz6RG8Vz0bFwagG0XN/vNn92x3LlgDkffHUcjUo2742jqjYEL58zC6Qux1CuVJ8V93iIiInLrCK/bmgMblrJmyh80fuTtNPusnfKHo2+91inayzXtxOzBH7B+xiiyFyjJ9iXTCa/bKsXKm7/3r/Hy9adwlQYZWnvWPIXBGJKTEtI9dvlm97Jr+Sy2L56Kj38WIs8cp36P11L0CQkrxO6VczlzeA/Z8qe81enUgZ0pXmfNWwQAN3ePDL8+Eck8tEeNiFyTxKRk3hmxlJW7jtOkXD6qF8tFFj8vGpfNx6glO4lLTOLT+xzLfJOTLd9MWQdAiwoFAShfMBu5Q/wZvmg7Zy6utgG4EBPPkHlbU71fp1rFOHo2ikGzNqVZz8nzMRl7gSIiIpLhKrW6n5Cwgiwd2Z89q+alOr5n1TyWjupP1rxFUj0ZKjBbbgpVqsfmuePYMHMUSQlxlPvXbU8ARas1xi8olEVDvyLmQkSq8eOjI0mIjb6m2v2CQylarTGb543n8LY1qY4nJyURfe5MiraSdVrh7R/Ihhmj2DBzFO6e3pRu2D5FnxK17gJgyYhvU7RvWzg5xW1PALmLlyd7wRKs+usnIo4eSFVDYnwcsZHnU7WLyK1FK2pE5Io27D/Jn0t3Yq0lKi6RnUcjmLp2H4dOR9KgdF4GPtbY2bds/lBmbzzI7mPn+G7aegJ8PJm8Zi+Ltx3lvrolqFwkBwDubm581LUmj/wwi+YfjqN7vXDc3QzDFm0nxN+bQ6cjU9TweNOyzNt0mLeHL2XBlsPULhGGn7cHh85EMnfTIfJnC+SXp5ve1K+LiIiIXB0vvwC69BnK0F6d+KPXPZRu2IEC5WoBcGDjUjbNGUtgttx06fMHnj5+qc4v1+xe9qyax5yfPsI/JAdFqjRKOb6vP+3f+J6R7zxA/weqU+GuboTkKUjM+QhO7d/O1gWT6Nl/GjkKp31b1JW0evELfnm2Bb8825LyzbuQq2hZkhITOHtkH9sWTqJ21+ep1vFRZ38Pbx/C67dlw/SRuHl4UrxmM3wDg1OMWbR6E4rXuou1U/4g+twZilRtyJkje1k9YQg5CoVzYu8/H2AZY2j/xg/8/nIHfuhZh4ot7iNbgRLEx0Ry+tButs6fSPvX+1O8VvNruj4RyRwU1IjIFf25dBd/Lt2FmzH4+3gQFhJArRK56Vi9KI3L5nP2m7PpIL/M3cJvzzZjzLJd/DR7MxFRcRTMkYUPu9TgsSZlU4zbtkphfn6qKZ9PWEO/8avIFuhLl9rFqVkiN52+mJKir5eHOyNfasGPszfz59Kd9P1rFRjIFexP1aI5ua9uiZvytRAREZHrk6NQOE/8vIhlf37PtkVT2L54KgAhuQtQt/tL1Oz0ND6BQWmeG163NVN8XyUu6gIVW3Z3Pn7734rVaMqjA2ezaOiXrJ8+gujzZ/ANDCE0b2Hq3v8ywbnyX3Ptwbny8djgeSwa9hU7Fk9j/fQReHr7EpQzL6UbdaRYjdQfGpVv1oV1U4aSnJR4yUeA3/PeT8z5qQ8bZ45m98o55CgUTucPfmXT7LEpghqAsBIVeHzwfBYO/R/bFk3mwvif8fHPQnDuAlTt0JM84ZWu+fpEJHMw/92gSkRcxxhjT/78mKvLuGYnz8ew61gENYvndnUpmUb2hwdhrdWmOiIikukZY+x7885cuaMI0LtBVs1xRG4QragRkQyTPYsv2bOk78kJIiIiIiIikpo2ExYRERERERERySQU1IiIiIiIiIiIZBIKakREREREREREMgkFNSIiIiIiIiIimYSCGhERERERERGRTEJBjYiIiIiIiIhIJqGgRkREREREREQkk1BQI5JJGGNed3UNIiIiIiIi4loKakRczDi8C/RwdS1yYxhjsrm6BhERERERuTUYa62raxC5YxljDPAR0A5o7OPpvj42ISmni8uSDOTt6R4Vl5C0D2hsrT3u6npEREQuxdPb91hifKzmIZIuHl4+xxPiYnK5ug6R25GCGhEXuRjSfAY0AZpaa0+6uCS5AS7+7/wO0BVHWHPExSWJiIhcNc1b7gyat4hkDh6uLkDkTnTxh+DXQC2gkbX2jItLkhvEOtLwD4wx8cB8Y0wja+1BV9clIiKSXv+at9RE85bbmuYtIpmDghqRm8wY4wZ8D5QHmlhrI1xbkdwM1tpPjTFx/DPp2efqmkRERK4kjXnLOReXJDeB5i0irqWgRuQmMsa4A4OBYkBza+15F5ckN5G19st/fULV2Fq7y9U1iYiIXMp/5i3NrLUXXFyS3ESat4i4joIakZvEGOMB/AqEAS2stZGurUhcwVrb3xiTAMw1xjS11m5zdU0iIiL/9Z95y13W2ijXViSuoHmLiGsoqBG5CYwxnsAfQAjQ2lob7eKSxIWstYMufkI12xjTzFq72dU1iYiI/O3ivGUoEITmLXc8zVtEbj4FNSI3mDHGCxgBeAFtrbWxLi5JMgFr7a8XJz2zjDF3WWvXu7omERGRi/OWkYAn0E7zFgHNW0RuNgU1IjeQMcYHGA0kAB2ttfEuLkkyEWvtsIvLiacbY1pZa1e7uiYREblz/WveEo/mLfIfmreI3Dxuri5A5HZgjPEzxrT/bxswHogGOmuyI2mx1v4JPA5MMcbU+PcxY0xRY0xV11QmIiJ3kn/NW6KAezVvkbRo3iJycyioEckY9wAP/f3CGOMPTAJOAt2stQmuKkwyP2vteBz//UwwxtT516HiwP9cU5WIiNyOjMOvF+cqf7f9PW85AdyneYtcjuYtIjeeghqRjNEVxz40GGMCgWnAfuBBa22iKwuTW4O1dgpwHzDWGNPgYvMsINwYk99VdYmIyG2nHNAAx4pfjDFZcMxb9gE9NG+R9NC8ReTGUlAjcp2MMdmBmjg+VQgGZgBbgJ7W2iRX1ia3FmvtTKAzMOriIzDjgbHAva6tTEREbiNdgRHWWntx3jId2AQ8onmLXA3NW0RuHGOtdXUNIrc0Y8yTQD3gaRwhzVLgOav/c8k1uriMeCzQA4gBvrDWVnJpUSIicsszxhhgL9AOOIhj3rIYeEHzFrlWmreIZDytqBG5ft1w3Nc9B5jHxZDGGBNujKnt0srklmGMyWmMaWaM8bbWLgLaAL8AIUAuY0xJ11YoIiK3gZo4bnk6gmPeMheFNHINNG8RubEU1Ihch4v34JYG3gQm49inpo8xZiswE6juwvLk1pIDeBc4ZowZBuQD7ga+B9bgWKouIiJyPboCE3EENJOAXkBWY0wPY8xPxhhvl1YntxLNW0RuIN36JHIdjDEfAq8A64EwIBbH0s+xwCprbbILy5NbkDEmF44l6R1xfPK5GqgGnAfC9KmniIhcC2OMB46VNBeAMTgeetARqIJjE9hRwCj9nJGroXmLyI2hoEbkOhhj9gDewAAc4cwW/UCSjGKMCQFaAQ8CjYDi1trdrq1KRERuRcaYrsBQ4BAQgGNFzVhghrU22pW1ye1B8xaRjKOgRuQ6GGOMghm5GfTfmoiIXA9jzAs4Vj58Asy7+IQekRtC8xaR66OgRkREREREREQkk/BwdQG3Cy8f32MJcbE5XV2HuJant8/x+NiYXK6uQ25Nvl4ex2ITkvR9RK7Ix9P9eEx8or7XSIZz9/I5lpwQp+9DtxE3T+/jSfGx+n4hN4Wvr++x2Fj9TnSn8/HxOR4To9+JrodW1GQQY4ztv/Kcq8sQF3u6ahDWWuPqOuTWZIyxJwY+6Ooy5BaQ4/Eh+l4jN4QxxjYccsTVZUgGmvtgmL5fyE1jjLHJcVGuLkNczM3bX993rpMezy0iIiIiIiIikkkoqBERERERERERySQU1IiIiIiIiIiIZBIKakREREREREREMgkFNSIiIiIiIiIimYSCmkzk9JH9PF01iMmDPnG27Vi9kKerBrF04lAXViby//buOzyKqovj+HfSKwnpCYSE3nvvvYOigFJUBEVU7L2LHetrAcWCiiBdQem999577yEJ6T3Z949IcE0hgSS7gd/neXhk7965cybeHHbOztyRW9Xp8Dj8Rkzgkzk7LR2KiIiICCdPnsLG0ZVR732Q1bZy1WpsHF359beJFoxMpPjYWToAkZsVFXaejfMms3/9UsJOHyMxNgpP/zLU73AH3Ya9iJOre77G+XJET45sX5vje2//uR2/4IqFGbaIlECXohP4aflBdp2OYPepCCLjk3mkQ3Xev7dJvsdYd+gid32xKMf3+japwHcPtS6scEXEQtJTErm07g/Cdy4m7swBUqIvY+/qSekarQi963lc/Mvna5wTsz7j5Owvcnyv6tBPCWo3uDDDFpFbwPwFC3n/o4/ZvWcvTk5OdOrQno8/fJ+QkHL52r59526sWr0mx/cO79tNpUo6JyoOKtRYEa/Acny59hI2tvrfUhB71ixgwY8fU7NlF+q17429kzNHt69j6cSv2b9hGS/8vBQHJ+d8jeXm6U3fZz/K1l7K27+wwxaREujoxRi+WriHYG9X6oR4s3L/+Rse6/7WVWhWyc+sLcQ3f4VlEbFuSeFnOfTrS3hUbkxQ28E4ePqRcP4I55b/RsSupTR4429cy1TJ93iVBr2DvZuXWZtHpYaFHbaIVQgJKUdCdAR2djonKqg/Z/9F/wGDqVunNp989AHRMdF89c1YWrXvyJb1awgICMjXOD4+Pnzx6ehs7QEBOicqLpr9VsQwDOwdnSwdRqHKyMjg/NF9lK1Su8j2UbFeC979ey8ePtcSR+u7h+FbtgILxn/Chr8n0fae4fkay8HZlSY97i2qUEWkCIXFJGIymfD3cCmyfdQN8ebA5/fi7ebE6fA4Gr3+xw2P1biCL/2b6VspEUuIP3sI54AK2NjZF8n4DqW8afTuYtxDapm1e9ftyM6P7+HErM+o9cQP+R7Pp0E3nH2DCztMEatkGAZOTrfeOdGevXupW6dOke0jNTWVp597geDgsqxevgQ3NzcAunftQqNmrXj3g9F8+82X+RrL1dWF+wYNLLJY5fpUqCkmqclJLJ7wP7YumsmVS+ewc3CgtF8ZarbsQp8n3wEy16h568469Bj+Cj0feTXbGCumjmPV9O+5cvEs3mVC6Tj4CVr2GWLW5/iuTSwY/wlnDu0iMTYaV09vylapTY/hrxBaM/Obl99GPcameZMZvfgYf/zvNfavX0xqcjIV6zXn7mc+IKhi9Zs+3vPHDrB5/lS2LJyBq4cXr03O+ZaiwpBbvPU79WHB+E84f2xfgcbLyMggOSEOJ1d3DMMojBBFCsXU9Ud5asI6ZjzTmY1Hwpi6/ijhsYlUDvTkxV516V4v+yWtqw6c59vF+9hxMpyk1HQCPF1oUz2QUX0b4eaU8wlKRoaJrxbuYfm+cxy7FEN0QgqBpV3oVT+El+6oh4vDtX86TCYTPyw7wOT1RzkdHothGAR4ONO0kj+f3dcMW5vMpdCW7DnLNwv3cPhCNAkpafi4O1E3xJs3725IBb9SN/wzSUhJY8HO08zYeJxVB84zfkQ7euTwcygsbk72uFF4J3bxyanY2djgaG9baGOKFKW0xDhOzxtL5N5VJIadIiMlASefYPxb9iOk50gMG/O5nHj5DMemvkPk3tVgGJSu1pxKg99l5+h+OPkEU/9V82Jn5L41nJ43htgTu8hITcYlsBJluw4nsNU9Nx17clQYYRtnc3H9TOJO7aXVtwewsfO46XFzYu/mle0KGIDSNVph51qa+LMHCjxmWmIsto4u2X7GIiVJUlISoz/9nKnTZnDm7FkcHR0pWyaIHt27MfqD94DMNWoqVK3BW2+8xqg3X882xtdjvmXMt+M4feYMFcqX57lnnuLhYQ+a9Vm/YSPvfzia7Tt3EhUVjY+PN/Xq1OGtN16jSeNGAAx9+BEmTPydS2dP8vxLrzB/4WKSkpJo3bIFn33yETVr1Ljp4923fz8Tf5/C5KnT8PbyYseWjTc9Zm5Wr1nLuXPneeftN7OKNAD16talXZvWTJsxk2++/Bxb2/zlkIyMDOLi4nB31zmRJahQU0ymffI8m+ZNoWWfBwmuWofUlGQunznO4a2r87X9qmnjiL0SQau7HsTB2YVN86Yy+YOnSElMoP3AxwC4dPII3zzRB5+y5el435O4lipNTGQYx3Zs4PzRfVmFmqvGPnkXbqV96fHIa0RdOsuq6T/yv0e68fJvq/ApE1rgY4wOv8S2xTPZPH8qZw7txs7egRotOmcrJqWmJJOcEJevMW3t7HB2u7EPUVGXMm9JcPP0yf82Yed5rk0QqcmJODi7UqN5R+4cOQq/cvrWW6zHu39sIzktnWHtq5GRYWLS2sM8OG4FP49oR8/6IVn9fll1kFembCLYy41h7aoRVNqVs5FxzN95msi45FwLNSnpGXy7ZB+9G4TQs345HOxs2XT0Et8t3cf+c1eY/nTnrL5fzN/Nx3/vpG+TCgxtWxUTJk6Hx7Fw1xlS003Y2sD6wxe5f+xyGlXw5bmedXBxtOPClQTWHLzAqfDYAhdqMjJMrD10kRmbjjF3+ynik9MI9XXn6e61aVzB16xvVHwy6SZTvsYt5eyAvW3xrbH/2rTNPDVhHQAV/UvxcPtqDGtXTR+GxKolX7nAhdVT8G3ck4CW/cCUQcTeVZyYOZrk8LNUHfpJVt/UuEh2fNiHlOhwgjrcj2tgZaIOb2Ln6H6kJydkG/v8qskc+uVFPKo0JeSOZ7CxcyB8+0IO/vgMyZEXCL3j6QLHm56cQPj2hVxc9wdX9q3GlJFOqUoNqXz/B9g5XzuRMWVkkBp/Jd/jOrh7FzgWgLSEGNKT4rAvU7lA2215oyPpSXEYNraUqtiA0D7P4VWr7Q3FIGJJI59+lt8m/s7wh4ZRv15dkpKSOHrsGCtWrsrX9t+M/Y7L4eEMf2gYri4uTPx9Mo88NpL4+HiefnIkAIcOHaZLj95UrFCe5595Gi8vLy6FhbF27Tr27N2XVai5qluvO/Hz9WXUm69z5uxZxn73PW06dGHrhrWULx9a4GO8ePEiU6bNYNLkKezYuQsHBwe6d+3Cw8OGmvVLTk4mNjY2X2Pa29vj4ZH3OdGWbdsAaN40+7p5TZs2YfnKVRw7dpwqVa6ff86dO4+7lx+JiYm4urrSrUtnPnzvHSpXrpSveOXmqVBTTHatnEuLPkMY8ErOC8Jdz+WzJ3hzxhY8fQMBaN13GB8/0I6/v32Xpr0G4uLuyf6Ny0hJSuDJMbMp5f2vdQ+G5jymT9nyPPTRhKyTghotOvPVo72Y8937DH3/p3zFlZKUwK6V89g8fyoHN6/AlJFBxXotGPjqlzTo1AeXUqWzbbN10Uwmvft4vsav3KAVz3w/L199/y0jPZ0F4z/BxtaWRl375Wsbr8ByhNZqRNkqtbGxs+P4rk2smfkTh7eu5oWfl+EfosQk1iE6IYUVb/bG3dkBgPtaV6blW7N5Y9oWutUNxtbGhvNX4nlz+haqlynNnBe6ZfUFeK1PA0x5FC8c7WzY/XF/nP915cywdtWo4OfB5/N2sf3EZRqUzyyIzN9xmg41y2RbAPftvtc+BC3YeQYXRztmPd/VrBDyYu96BTruA+euMGPjcf7YfJwLUQn4uDsxoHkl+jatQKP/FGiu6vjBHM5ExOdr/FnPdaVl1fzdu30z7Gxt6Fy7LB1rlaFMaVfOR8Uzcc0RXp26mcMXovl4ULMij0HkRjn7hdD8f1vN1tMr2+VhDvzwNOdXTSb0rudx9My8Ffn0vG9JjrxAjUfH4N/8bgDKdBzC0WnvcWb+d2bjJkeFcWTiGwS07E/14V9eG7vzMPZ8NYyTf/2PoHaDcSh1/S9fTBkZXDmwjkvr/+Dy1nmkJ8XjEliJ0D7P4d/8bpz9QrJtkxRxjo0vNM33z6H9hBtbn+rUnK8xpafi36JvvvrbuXgQ2GYgHpUbY+9Wmvjzhzmz6Ed2fTaIGo99i3/TO28oDhFLmf3XHB4eNjTft+D819FjxzmwewdBQZnnRI8+8jCNm7fm9bdGMeT+wXh6erJoyVISEhJYPH8O/v7/WlPl5RdzHLNihQpMmzwx65yoe9cudOjSnTdHvcOkCb/kK66EhARm/z2HSb9PYcmy5WRkZNC6VUvGjf2G/n3vonTp7OdEU6ZNZ9jwR/M1fts2rVmxZGGefc6duwBAmaCgbO9dbTt77tx1CzWhIeVo2qQxdevUxt7ennXrN/Dd9z+yfOUqNqxeka9Cj9w8FWqKibNbKU7t20bE+VN4B2X/gHA9jbr1zyrSADg4udD2nkeY9vHzHNy0ggad7sLZLfNb6Z0r/qZlnwexvc4CXB3ve8rsm9sqDVsTUrMhe9cuJCMjAxub3L9ZDjtzjIXjP2Pnir9JTogjqFJNej/2Jo279qd0QNk891ujeUeeHDM7H0cNLqU889Xvv2Z/8xYn9mym+0MvEVihWr62eWCU+YfGBh37UKN5R8Y+1Ze/xrzNI5/qEeliHR5oU8Ws8OLt5sSglpUZs3gvu09HUj/UhznbTpGSlsELPeua9b0qr6s2DMPIKtKkpWcQl5RKuslE62oB/xRqwrMKNaWcHTh8IYoD565QvUz2DyGZfexJTElj6Z6zdKsbXOArRn5ZdZCJa46w90wkLo52dKsbTL8mFWhXIwi761wB8+2wNiSlpuVrPzXL5hx/YWtayY/fn+ho1vZA6yr0+XwRv6w6xP2tq1ArOPstEyLWwMbuWj7JSEslPSkOkymD0jXbcHHdDGJP7MKxfhcAwncsxrF0IH7N7jIbo1z3x7IVai5vmUtGahIBre8lJTbC7D2f+l0I376QqAPr8Wt6R66xpScncHL2F1zaMIvkKxdw8PQnsO1gAprfjXv5vNeFcPDwpe5LU/P1M7hR4dsXcXrBODyrNSeobf6e1hTc1XyNPZ8GXQlodQ+bX+vAkUlv4tuwR5GtsyNSFDxKlWLL1q2cPHmK0NCCnxMNGnBvVpEGwMXFhScef5SRTz3DkmXL6d/3bjw8Ms+J/pz9N8MfGnrdRYmff/Zps88m7dq2oUnjRsyZt+C650RHjx7jg9Ef88esv4iLi6N2rZq8/+7bDLr3XoKD8z4n6tq5E4vnz8nPYedY6PmvhMTMKxUdHR2zvefklNmWkJB43XF++cl8/ax+d99Fty6d6d67D6++8RZ/TJ+Sn5DlJqlQU0z6Pjea394ewVt31iGwQnUq1m9OrRZdqNmqa56//FcFhGR/MkBg+cwCRPi5kwA07NKXLQumMe3j5/lrzDtUrNeMyg1a0rBLX7wCsi9AFxCavRoaWL4ap/ZtI+5KuPlVOf9xbOdGNs2bjI2tLd0feomuQ5/P90LIHj4BePgU3bfWi375nGW/j6FJjwH0HPHaTY1Vo3knylWvz4GNywspOpGbVzkg+6WvVYIy205djqV+qA/HwmIAbviE/8/Nx/luyX72nY0kLcP86puohJSsv7/Wpz5DvltB23f/JtTXnWaV/GhXI4heDUJwsMu8B/qh9tVYuOsMQ75bgbebI00r+dOqagB3NSmPt9v188aYRXs5ExFP1UAPxgxtTd2Q/N9y0LRS7nnMmtja2PBUt9oMHrOMFfvPq1AjVu3skvGcWz6RhAtHwZRh9l5afHTW35PCz1CqUqNsxVmHUj7YuZjnsfjzRwDY+VHuV5qkxFzOM66UmAhOz/8WyCxoVBnyMY6e+csBtg5OeNVsk6++N+LK/rXs+/YxXMtUpdaTP2Hk47Nfbhw9/Qlscy9nFowj7tReSlWsX4iRihSt/332CQ8Me5gKVWtQs0Z1WrVsSY9uXenZo1u+zomqVc1+TlSjeuY50fETJwAYcE9/fp88lZFPPcOrb7xFqxbNadO6FQPu6U+5ctnPiXIbc/OWrVy+fNn8qpz/WLt+PRMm/o6trS1vvPYKr738Yr4XQg4MDCQwMPD6HfPJ6Z9zseTk5GzvJSVltjk739gizV27dKZRwwYsWrL0xgOUAlGhppjUbduTd//azb51SziyfS0HNixl7R8/U6l+S5769i9sr/dtSA7fQJswP3myd3DkybF/cXLfNg5sWMbRHeuYO+4D5n7/IQ+P/o3arbtdN868bof4tzptutP32Q/ZPH8qC8Z/woqp31G3XS8ade1HtSbtscljkaqUpEQS42LytR87e3tcPfJ/wrLs9zH8/e27NOh0F/e/9W2hrPXgHVSO0wd2kJKUgINT0T1NRiS/cpzW//nVvfq7fCO/AnO2neTR8WtoVMGXjwY2Jai0Kw52NlyISuCpX9eR8a880biiH5vfv5sV+8+z7tAF1h26yNQNx6gyfzfzX+5BKWcHvNycWPxaTzYeCWPVgfNsOHKJN6Zv4aO/dvDHs12oF5r3rQzfPNiKKeuPMm/HaTp/OJfawV7c3aQ8dzUuT1Bp1zy3DY9NIj0jf3mttKtDVnHJEoK9M48lMi7JYjGIXM/p+d9xbNp7eNXpQLnuI3Dw8MOwsyf25B6OT/8A038KN/n2z3Y1Hh2DfS63N7kE5L1enKNXIDUeHcPFdX8QsXMpG3Y1onSN1vg3vwufht2xc8o9X5gy0kmJicj1/Wz7ymcBCCDq0Cb2fPkgTr7B1Ht5GvZuN3/1npNP5slmalzkTY8lUpzuvKMXJw7vZ/7CRaxas5ZFi5fw/Y8/0aZ1K5YsmIu9fd7nRDl9tv/v+YujoyOLF8xl85atLFqylDVr1vLWO+/x9rvvM2PK7/Tq2f26ceb3nOiOXj35/JPRTJo8hfc/HM1X34zlrjt7M/Dee+jUsUOeC/cmJiYSHR2d6/v/5uDggJdX3udEZctm3t507vx5qlc3v6Pg3PnM2zXLlimTr/3lJDQkhK3btpOQkICLi86JipoKNcXI1cOLJj3upUmPezGZTPw15m2W/PYVe9cuom67Xnlue/HkoextJzLb/rvwb2jNhlkLB1+5eJaP7mvFnO/ez1aouXjyCOVrNfpP2yEcXdxwK533iZOrhxcdBo2kw6CRZk942jRvCu5efjTofBeNu/anfO3G2bbdtuTPIlmjZuX0H/jzy9ep264XD773U57FooIIO30cRxc3FWnEahy+EE23utnbAEJ83YHMxWkB9p29QoiPe4HGn7n5OE72tvzxbBezdWqW7zuXY383J3t6Nwihd4PMS5h/Xpm5iPGUdUcZ0SnziQm2Nja0rBqQtQbM3jORdPlwLl/M381vj3fIM54WVQJoUSWAjwdde8LT+7O2896f22le2Z+7m5Snd4MQPF2zX+rb9aO5VrdGTW6Oh2UuKOhbytliMYhcz6UNf+LkW446z/5mdlVIYtipbH2dfMqSePE4JpPJ7OQqJSactATzkxNn//IA2Lt73/CVLTa2dvg3vxv/5nebPeHpwA9PYePghE+9zvg1vwvvOh3MbuECSIo4XyRr1EQf3cbuL+7HwTOAei9Pz9caO/mReCnzygGHUjmvzyVizby8vLhv0EDuGzQQk8nEK6+/yaef/4958xfS587eeW574GD2c6KrbRXKlzdrb9K4UdbCwWfOnKV+k+a8OeqdbIWag4cO07SJ+TnLgYOHcHNzw9c3798xLy8vnn36SZ59+kmzJzz9Nmky/v5+9O/bl0ED7qFZDgv8Tpsxs1DXqGnUoAEAGzZtplNH889WmzZtxtPTk0qVbvwBKUeOHsXNzU1FmmKiQk0xyEhPJykhFhd3z6w2wzAoWzXzfun46Ot/G7J14Qy6P/RS1jo1KUkJrJr+A/aOzlRr0g6AuKgI3DzNbwkoHVAWt9K+Oe5j2aSvzRYTPrxtDaf2baNhl775uvTwqqCK1enz5DvcMfJtjmxbw+b509g0dzKrpn2PT5lQ2vQfTsfBT2T1L4o1atbN+pWZn71ErVbdeOijX/NcnycuKoK4qAg8fPyzniiVGBeNo7NbtuLOtiV/cu7IHhp2yd+ifyLF4bfVhxnWrlrWU5si4pKYsv4IQaVdqFMu89uW3g1Cee/P7Xw2dxdtqgVme8LTf0+c/s3OxgYbwzC7ciY9I4Oxi7M/6j4iLinb7Ut1ymXmoSvxybn2qRLogZODXVaf/HBxsKNvkwr0bVKBsJhE/tx8nBkbj/P8pA28OnUTHWqWYVS/RmZPkbL0GjVHLkZjZ2tQ3vdaTJFxSXj95+eRmJLGF/N2YRjQqdaNf9slUtQMWzvA4N+X8aWnJHJ28fhsfb3rdebMgnGEbZyVtZgwwOkF32Xr69ekN8dnjubEn5/hUaUptg7mvyOpcZHYuXjk+9HUjp5+BHd7hOBujxB/9hAX18/k0oY/Cds8BztXT3wb9aTKAx9kFWyKYo2amBO72P35YOzdvan3yvSsRZZzkp6cQFLEOexcSmX1y0hPIyMlETtn82J7wqUTXFg9FUevQNxCahZqzCJFKT09ndjYWDw9PbPaDMOgfr3Mb58iIq9/TjR56jTefO2VrHVqEhISGPPtOJydnenUoT0A4eHh+PiYF0WDg8vi5+ub4z4+/99XZosJr1y1ms1btjLgnn4FOieqWaMGoz94jw/fe4eVq1YzafIUJkycxJhvv6NC+fI8/ugjPPfMU1n9C3uNmnZt2xAYGMD4X37l2aeeyHpE967du1m5eg0PDxtqdoVPeHg44eERBAYGZD1RKjo6Gjc3t2xXAk2f+Qe7du9hwD35e0iL3DwVaopBUkIsr3WvSu3W3QmuWgc3L18izp1izR/jcfUoTc2WXa87hk+ZUD59sCOt7h6Kg5Mzm+dP5eKJQ9z9zAdZT1ZaOP5TDmxaTq1WXTMXLDaZ2LNmIZdOHqbLg89lG/PymeOMfaovtVp3I+rSOVZN/wFndw96P/bGDR2njY0NVRu3pWrjttz78ufsXjWPTfOnsnXRDLNCTWGvUbN71XymfPQMLqVKU7ddT7Yt/tPsfXdvX6o3vVZVXjX9B+b/OJr73vqW5r0zF/M7vHUNf375OrVbd8e7TCiGjQ0ndm9m2+KZePgEcOcTowotXpGbVcrFgW6j5zGgeSUyTCYmrjlMZHwyPw1vi+0/HyjKeLnyTr9GvDZtM+3e+5v+TSsSVNqFc1fimb/jNJNGdqScj1uO4/esX44520/R73+L6de0Ikmpafy19SQ5XQXc6u3ZNCzvS4PyPgR4unApOpGJaw7jaGfDHY1CAXhu4nouXEmgXY0gynq5kZSaxuytJ4lLSqV/0xv7ZsevlDOPdqrJo51qcvD8tadBHTwfZVaoKYo1ar6YtwuA6MTMtXq2nwzPamte2Z/mVa7lt5ZvzybY25VtH177YDPwm6X4e7hQp5w3AZ7OnL+SwPSNxzgdHscz3WtTJdCz0GMWKSy+DXtwfOZH7P7ifnwadictLooLa6dh55Q9n5TrOZJLG2Zz4MdniTm2A5fASkQf2Uz0kS3Yu3uRWfDJ5ORdhir3f8ChX19m82vtCGjRF0evIFJiI4g7tZfwHYtpNXZfnrcv5ca1bFUq3vM6Ffq9StTB9VxcN5OwTX9R8d43sgo1hb1GTVL4WXZ9Ooi0xDiCuz9G1IEN2foEtLz2JVDM8Z3sHN2PgFb3ZD31Kj0pno0vNsenQVdcAith7+JB/PkjXFg9mYzUFKo++F2+C1ci1iA2NpagkIrc0asn9erVwc/XlxMnTzHuh5/w8vKiZ/frnxNVrFCeZq3b8sjDD+Hi7MykyVM4cPAgn338UVYx4/2PPmbJ0uX07NGN8qGhmEwm5s6bz8FDh3jlpReyjXn02DF69O5Dzx7dOXvuHGO+HYenpyfvjXr7ho7TxsaGDu3b0aF9O8Z+/WXW06CmTJtuVqgp7DVq7O3t+fLzTxkw+AHadOjMw8OGEhMbw5dfj8Hf34+333jVrP+Y777n3fc/5Ocfx/HgA/cDsGLlal54+VV69exOhfLlsbGxYeOmTUyZNoPAwAA+ev+9QotX8qZCTTFwcHKh/YDHOLRlFYe2rCQ5MYFS3v7UbtODrkOfw8Mn929Yrmp376MkxEaxesaPRIWdxyuwHANf/ZJWd1979naddj2JDr/I9qWziY0Mw97RCd/gigx6/Wta3PlAtjFHfv0nf/zvVeZ9/wFpKSlUqNuUvs98iG/ZCoVwzM406tqPRl37kZQQd9Pj5eXMoV2YTCbioyP5/f0ns71fuUErs0JNTvxDKhNcrS571iwgJiKMjPQ0SgeUpe09I+g69Pk8F1YWKW5v3d2Q9Ycv8tOKA4THJlE5wIOfR7SjZ33zpyc83KE6FfxKMXbJPn5Ytp/U9AwCPF1oVyMIL7fstwlddXeTCkQnpvDjsgOMmrkFb3cn7mwUyqAWlWn9zl9mfR/rXJOle87y4/IDxCSm4lvKiYblfXm6e21q/PMUqP5NKzJtw1GmbThGRFwSpZwdqBLowfgR7bJul7oZ1YJK8+bdDXnjrgYkpqbf9HjXM/rvnWavtx6/zNbjmYucvtCrrlmhJic964ewYOcZxq84QHRCCq5O9tQJ9uLtvo0K5echUpTK9XwcU0YaF9ZM48ikN3HyCiKg9b2UqlifXZ8MMOvr4O5Ngzdmc3TKO1xYMxUwKF29BfVemcm2Ud2x+c9VM0HtBuMSWIkzC77j3PIJpCXEYu/ujWtQJSoNeDPbVTYFZdjYULpGK0rXaEWVIR9hY5d7HrxZiZdPkxZ/BYATf3ycY59/F2pyYuvghG/D7sQc30H4tgWkJydg7+6Nd50OlOv1BO4htQs9bpGi5OLiwtNPjmT5ipUsXb6C+Ph4AgL86d2rB6+99CIBAdf/IvfJkY9x5UoU3477gbPnzhEaEsK4sd/wyMPDsvr0uaM3Fy9eYsYff3LpUhjOzs5UrlSRH74by0NDh2Qbc8Gc2Tz34su8/e77JCcn07J5Mz7/dDQVK978OZGzszMD772HgffeQ1xc0Z4TAfTvezfOTs58MPpjXnzlNRwdHencsQOjP3gvX0WhqlUq06B+PebOW8DFS5dIS0ujXHAwTzz+KK+9/GKeCytL4TLyu1CS5M0wDNPYLflbDMrSfhv1GJvmTaakxFuSjGzsgclkuvkVjOW2ZBiGKez77B8grpq6/ihPTVhn8bVUxPL8RkxQrpEiYRiGKb/rr9yo1LhI1o6sRVD7+6n6YM5FDCk8K4YEKV9IsTEMw5SRnL+14Sxt6MOPMGHi75SUeEsSG0dX5Z2bdOPPBhQRERERyUN6SmK2tlNzxwBQuggfhy0iIlKS6dYnERERESkSuz4diLNfKO6htTFlZHBl3xoidi3Fo3JjfBt2u/4AIiIityEVakRERESkSPjU78KljbMJ376I9OQEHL2CCO7+KKF9ntdCuCIiIrnQGjWFpCStUSNFR2vUyM243ho1IldpjRopKsWxRo0UL61RI8WpJK1RI0VHa9TcPK1RIyIiIiIiIiJiJVSoERERERERERGxEirUiIiIiIiIiIhYCS0mfBvJyMhg5dTvWPvnL0ScP4VbaV8adrmbXiNew8HJpUBjRYdf4r3+jUmMi6bvsx/RYdDjZu/P//FjDmxazuUzx0iMjcattA9lq9Sm8wPPUKl+izzH3rd+Kd8+3ReAVyatIbhqnYIdqIgUq4wMEz8s389vqw9zOiIOH3cn+jQqz0t31MPFIe9/ZnafjmDmpuOsPXSR0+GxpKZlUDnQg/taVWFImyoYxrXbm0+Hx9Ho9T/yHG/Oi91pWskPgEvRCfy0/CC7Tkew+1QEkfHJPNKhOu/f2+TmD1pEipwpI4Ozi3/i/MqJJF4+g0Mpb/ya3kn5u17A1vH6n1vyu33i5TNsfKFpnmPVf302nlVyzh0Ru1ew+/PBADR6dzHuIbUKcJQiYu0yMjL46pux/PDTz5w4eRI/P1/u7d+Pd956AxeX6+ciG0fXHNvLlAnizPEjhR2u3CJUqLmN/PHFq6ycNo667XrRcfATXDx5mBVTvuPc4T08MWa22QnR9cz8/GUyMtJzff/U/m0EhFahbrteuJTyJDYijM0LpvHliB48+N5PNOraL8ftUpISmPbxczi6uJGcEFfgYxSR4vfmjC38uPwAPeqV47HONTl8IZoflu1n79lIZjzdOc/cMmbRXlYduEDP+uV4oHUVUtLS+WvbSV6avJE9pyP4/P5rhV1vd0fGDm2VbYz0DBPPT9qAh4sDDcr7ZLUfvRjDVwv3EOztSp0Qb1bu1wKpIiXJ0clvc3bJeHwadie426PEnz/C2cU/EXd6H3VfnHrdzy353d6hlDfVH/km2/amjDQO/fISdi6lKFWhfo77SE9O4PBvr2Lr5Ep6khZQFbkVPfvCS3wz9jvuuvMOnnvmKQ4cPMhX34xl167dLJo/J1/nUK1btWT4Q0PN2lxdcy7giIAKNbeN88cOsGr699Rr35vhn0zKavcOCmHGZy+xfeksGna+O19j7V23mB3L/+LOkW8z+5u3c+zz2P+mZ2tre+8IRt1Vj0W/fpFroWbeDx+RlpJMyz5DWD55bL7iERHLOXj+Cj+tOEDP+uX45dH2We0hPm68Nm0zf287xZ2NQnPd/qH21fn6wVY42V97TO/D7atz9/8WMXHtEYZ3rE61oNIAuDra079ZxWxjzN95mtT0DPo1rYC97bU7euuGeHPg83vxdnPK19U4ImI94s8e4uzSn/Ft1INaT/6U1e7sG8yRSW9yefMc/JreUSjb2zq6ENCyb7YxLm9bgCk9lYCW/bCxs89xPydmf05GajKBbQdzdtEPN3q4ImKl9u3fz5hvx3F3nzuZOW1yVnv50FCefu4FZvzxJ/f0y54//qtC+VDuGzSwKEOVW4zWqLlNbFv8ByaTifYDzW9RatlnCA5OLmxZOCNf46QkJTD9k+dpedeDhNRsWKAYnFzccPXwJiEmKsf3zx7ew/LJ39L32Q9xcnUv0NgiYhmzt5zEZIIRHWuYtd/XugouDnb8sfl4nts3reRnVqQBsLEx6FU/BIAD56KuG8PU9UcBGNSyklm7m5M93m5O191eRKzPpU1/gclE2S7DzdoD2w7GxsGZSxv+LNLtAS6umZa5TesBOb4fd3ofZxf9SKVBo7BzdrvueCJS8kydPhOTycTTT440ax/+0FBcXFyYPGVavsdKSUkhLk53DEj+qFBzmzi1fzuGjU224oq9oxNlq9Tm9P7t+Rpn7rgPSElK5M7H38pX/7ioCGIjL3PuyF5mfPYyF08cpGaLTtn6ZWRkMPnDp6nSqDUNu1y/Ki0i1mHHyXBsDIP6oT5m7U72ttQMLs2Ok+E3NO75KwkA1y20hMUksnTPWRqW98m68kZESr7YEzvBsKFUhXpm7bYOTriVq0nMiV1Fun1K9GUidi+nVMUGuJatmu19U0YGB395Cc9qLfBvemc+jkhESqKtW7dhY2NDk8aNzNqdnJyoV7cOW7Zty9c4M/+cjYuHN6W8/QkIDuXZF14iNja2KEKWW4RufbpNRF++gJunN/YOjtne8/AL5PjuTWSkp2Nja5vD1pnOHNrNiqnjuO/NMbiUyt8J0cudK2T93d7RmRZ3PkDf5z7K1m/1zJ84d2Qvr0/ZkK9xRcQ6XIxKwMvNEUf77Lkj0NOFLccuk56Rga1N/r8XuBSdwMS1hwn2dqVZZb88+87YeIy0DBMDW1QucOwiYr2Sr1zE3t0LG/vsn1scSwcSc3Qrpox0DJucP7fc7PYX183ElJ6W69U055b9SvyZ/TR+f1kBjkpESppz58/j4+ONo2P2XFImKIj1GzaSnp6ObR7nUI0bNeTuu+6kauUqRMdEM2fufL76Zixr161nzYqlODnp6l/JToWa20RKUgJ2OXxYAbB3yEwOKcmJOLnkfOluRkYGUz58mop1m9G0Z/7vr3xyzGzS09OJOH+SjXMnk5qSTHpqCjhfWzwrKuw8c759j84PPINfuezrT4iI9UpIScPRLucPJ1eLN4kp6bg55a9Qk5yazkPfryI2MZWfHmmLQy5jXzV1/VFcHOy4q3FogeIWEeuWnpyIjZ1Dju9dLb6kpyRh55TzYpw3u/2FNdOwcXDGr1n2q2WSIy9w/I+PKdfjcVwCKuSwtYjcKhISEnMs0gA4OWW2JyYm4uaW++2Pm9atNns95P77eO3Ntxn9yWf88NPPPPXE47lsKbcz3fp0m7BzcCItNTnH91JTkgBwcHTOdftV03/g7OE93Pvy5wXab7Wm7anZohNt+j3MM+PmcebgLsY9b17omf7pi7iV9qbrg88VaGwRsTwne1uS03J+Alxyama7s0PexZarUtMzeOj7lWw5Hsang5vRtnpQnv23Hr/MoQvR9GoQgrtzzidkIlIy2dg7kpGWkuN7Gf98nrF1yP1b6JvZPvroNhLOH8avcS/snLOvmXd40hs4uHtTrteTeR6DiJR8Tk5OJCfnfA6VlJTZ7uyc+zlUbl57+UUMw2DR4iU3FZ/culSouU2U9g8iLiqC1JTsiSY67AKlvP1zve0pMS6auePep2GXvtja2xN25hhhZ44RFXYBgPjoCMLOHCMlKSHPGBycnKnXvjfHdm4g7PQxAA5tWcWulXPpMHAkV8LOZY0dH3MFgKhLmW0mk+lmDl9EikhgaVci45KzijL/diEqAb9Szvm67SktPYNHflzF4j1n+eCeJtzfusp1t5nyzyLCg/+ziLCIlHyOXoGkxkZmFVX+LfnKBRw8/HK9belmt89aRLhN9iuIr+xfS/i2BZTtOpzkKxdIuHSChEsnSI2Pyhw78jwJl07oc4vILaJsmSDCwyNyLNacO3+egAD/PG97yo2bmxve3t6ER0QURphyC9KtT7eJctXrc2Djck7t20al+i2y2lOTkzh7eA9VGrXJdduEmCiS4mPZPH8qm+dPzfb+wp8/Y+HPn/HoF9Oo3bpbnnGkJidmjhkbBUDkxbMATP/0hRz7j3s+897wz1edy/W2LBGxnHoh3qzcf54dJ8NpVtk/qz0pNZ19Z67QqmrAdcdIz8jg8Z/XMG/HaUb1a8TDHapfd5vElDT+2nqC8n7uNK9y/X2ISMlSqnxdruxdRczxnXhWbZrVnp6SRNzpfZSu0bJItk9PSSRs8984+5fHs1qzbO8nRZwD4MjE13Pcfs+XDwLQ+vsjud5WJSIlR8OGDVi8dBmbt2yldatreSMpKYmdu3bToV3bGxo3KiqK8PBwmjVpXFihyi1GhZrbRMMufVn86xesmPKtWaFm3ewJpCQl0Lh7/6y2yItnSElKxLdseWzt7HH38uWh0ROyjXnh+EHm//ARzXoNpmarLpSrXh+AxLgY7OwdsHc0v6Q4LiqCbUtm4eDsSlDFzBOxKo1a5zj29qWz2LF0Nnc99R5eQeXyvC1LRCynT+PyfLVwD98v229WqJm05jAJKWn0bXpt/YazkXEkpqQT6uuOvW3mVTYZGSaemrCO2VtP8nqfBjzeuWa+9jt3+yliElN5smvtwj0gEbEKfk3v5NTcbzi7+EezQsuFVb+TkZKIf/O7s9qSIs6SnpyIs18oNnb2Bd7+3y5vmU9aQgzleozM8f3S1VtS84kfsrWHbZrD5S1zqHjvmzj5Bud5W5aIlBwD7unH6E8+46tvxpoVan4c/wsJCQkMGnhvVtvp02dISEigYsUK2Ntn5qKIiAi8vb2zjfvam6MA6Nmje9EegJRYKtTcJspUqkmb/sNZNf0HfnhxMDVbduHiicOsnDaOKo3a0LDztUdi//b2oxzZvpZ3/9qNd1AIDk4uNOjYJ9uYhz3XZI5duZbZ+2cO7WL8K0Oo1/FO/MtVwsHJhctnj7Nx7mTiroQz8NUvcXByAcA7sBzegeWyjX3h2AF2AFWbtCO4ap1C/VmISOGpUaY0w9pWY/zKgzz43Qo61S7D4QvR/LT8AK2rBtCnUWhW3yd+Wcv6w5fY+kFfyvlkXiE36o+tzNh4nPqh3gSVdmHGxmPm45ctTc2yXtn2O2X9UWxtDO5tnvcC5F/My3wEb3Ri5loV20+GZ7U1r+yvq3FErJRbcHXKdHyQc0t/Yc/XD+FdpwMJF45ydsl4PGu0wu9fj8Q+8MPTRB3cQLPPNuHsG1zg7f/twpqpGDa2BLTqn+P7Tj5lcfIpm609/uxBLm+B0jVb4x5SqxB+AiJiDWrXqsXjj45g7Hfj6HvPQLp368qBgwf5Zux3dGjXlnv798vqO+Sh4axavYbjh/YTGhoCwPsffczmLVtp26Y1IeXKER0dzbwFC1mzdh3t2rZh2IMPWOrQxMqpUHMb6ffcaLwCy7Fu1q/sW7cYt9I+tB/wKD1HvIZhGIW2H9+yFajbvjdHt69n68KZpCQl4F7ah4p1m9F+wGNUbtiq0PYlIpb3/r2NCfZxY+KawyzdexZvNyeGd6zOS73rXTe37D6deW/2jpMRjPxlbbb3X+hVN1uh5nR4HOsOX6RjzTIEeLrkOf7ov3eavd56/DJbj1/OGluFGhHrVXnwuzj5BHN+5SQidi3Dwd2bsp0fovzdL+brc0tBt0+8fIaog+vxqtMBx9LKDSKS6cvPPyE0pBw/jv+FeQsW4uvrw1NPPM47b71x3VzUrk0bDhw4yG+Tfic8PAI7OzuqVa3Cxx++z9NPjsy68kbkvwwtdlY4DMMwjd0SbekwxMJGNvbAZDIVXtVLbiuGYZjCvh9i6TCkBPAbMUG5RoqEYRim9hPOWzoMKUQrhgQpX0ixMQzDlJEcb+kwxMJsHF2Vd26SnvokIiIiIiIiImIlVKgREREREREREbESKtSIiIiIiIiIiFgJFWpERERERERERKyECjUiIiIiIiIiIlZChRoRERERERERESuhQo2IiIiIiIiIiJWws3QAYv1OH9zJlgUzOLx1FRHnT5OWmkJA+Sq07DOEVncPwzAMABJirrBx7hT2rVvEhROHiLsSTimfAGq26ETPR16jlLefhY9ERKzFpehEWr49i5jEVN7r35gRnWrk2nf4D6v4a9tJapYtzYo37zB7b92hi9z1xaIct+vbpALfPdS6UOMWEetyas43xJ7cTezJXSSFn8WtXA0av7c0x74nZn/Blb2rSLh0grSEGBzcvXErV5NyPUfiWbVptv5pCTEc/+NjLm+dT1p8FM5+oZTpPIwy7e8v6sMSEQv76JNP2b59J1u3b+fUqdPUrVObHVs25th38ZKl/DHrL7Zt387efftJSUlh++b11KtbN1vflatW06FL9xzHGTzwXib++nOhHoeUXCrUyHUt/e0rDm5eQd12vWl191DSUlLYvnQWU0c/x5mDuxj0+tcAnNi7jVlfv0HVxm1pP+BRXNw9OXVgB+v/msi+dUt4acIKFWtEBIA3pm0mPcN03X7L9p5lzvZTONvb5tnv/tZVaFbJPL+E+LrfVIwiYv2Oz/wIO9fSuJevQ2rclTz7xh7fiUtQZXwadsfe1YOU6HAurp/Jjo/upsaIMfg3vyurb0ZaCjs/GUDc6b2U6TQM16DKROxezuFfXyY1JoLQO58p4iMTEUt6/c1ReHl50ahBfSIiIvPsO2XadKZMm0GtmjWoWqUye/buu+74wx8aRutWLczaKpQvf1Mxy61FhRq5rrb3juD+t7/D3tHJrO3rx3qzbvYE2g14jKCK1QkIrcxbM7fiW7ZCVr+Wdz1IaK1G/P7eEyyd9DV3P/2+JQ5BRKzI0j2ZxZfX72rAe39uy7VfQkoaL0/exINtq7Bkz9k8x2xcwZf+zSoWdqgiYuWafboBZ78QADY83yTPvnWe+y1bW5nOw9j4YnNOzTUv1FxYNYXYEzupfN97lO38EABB7Qaz95uHOfn3lwS0vgcnr6BCPBIRsSZHD+ylQoXMwkn5KtXz7Pv+O6MYN/YbHB0dGfXeB/kq1DRv1oT7Bg0slFjl1qQ1auS6KtZtZlakAbCxsaFeh8xbEM4fy0xG3kEhZkWaqxp07JPZ7+j+og1URKxeQkoar0zZxP2tK9Mg1CfPvp/8vZPE1DRe69MgX2PHJ6eSnJpeGGGKSAlxtUhzo+ycXLF38yItIcqs/dLGWdg4OBPYdrBZe9kuwzGlpXB589yb2q+IWLerRZr8KFMmCEdHxwLvIz4+nuTk5AJvJ7cHFWrkhkWFnQPAzTPvk62osPOZ/Urn3U9Ebn0f/72DhJQ0Xr9O8WXvmUh+WLafd/s3ppSzw3XHfW3aZso/NZngJybR/K1ZjF9xAJPp+rdWicjtJyU2gpSYcOJO7+fIpDdJOH8Yr9odst43ZWQQe3IP7iG1sHUw/6KqVIV6YNgQc2Jn8QYtIreUp597EXcvP5xLeVGtVj3GfDtOn1vEjG59khsSHX6RtbN+xSuwHJXqt8iz77wfPgKgSfd7iiM0EbFSe85E8uOyA/zvgZZ4uub+zVNGhokXJm2geWV/+jbJfpXev9nZ2tC5dlk61ipDmdKunI+KZ+KaI7w6dTOHL0Tz8aBmhX0YIlLCrXuidtbfbRycCGw7iMqD38lqS0uIIiMlEcfSAdm2tbF3xN6tNMmRF4olVhG5tdjb29Ozeze6d+tKcNmynD13jh/H/8xTzz7PgYOHGPv1/ywdolgJFWqkwFJTkvnplSEkxcfy8EcTsLPP/dvuldN/YPvSWTTpMYAazTsVY5QiYk0yiy/raVLJj3ub572WzM8rD7L3bGS2JzzlpGklP35/oqNZ2wOtq9Dn80X8suoQ97euQq1gr5uKXURuLXVfmoopPZ2ky6e5sHY6GanJZKSlYOvoAkB6ciIAhl3OBWUbe0cyUhKLLV4RuXW0bNGcObP/MGt75OFhtO/cje++/4FHHh5K3Tp1LBSdWBPd+iQFkp6Wyk8vP8CJ3ZsY+Mr/qNa0fa59Ny+YzszPX6Zq47YMeu2rYoxSRKzN+JUH2XvmCh8PzPsKlwtX4vnwrx2M7FyTygEeN7QvWxsbnuqW+Y35iv3nb2gMEbl1edVsg3ed9pTpOIT6r84k9uQe9nz5YNb7NvaZtzuZ0nJeOyIjNRmb/9wSJSJyo2xtbXn5hecBWLR4qYWjEWuhQo3kW3paGj+/NpS9axfS7/mPaXnXg7n23b50FhPfeZQKdZvx6BdTsy1GLCK3j5jEFD76awd9Godib2fD8bAYjofFcCEqAYDIuCSOh8WQkJLG+7O342hnw52Ny2f1Ox4WQ1q6idT0DI6HxXAp+vrfZAd7u2aNLSKSG1sHZ3wb9SD68GYSLh4HwN6tNDYOTiRfuZitf0ZqMqlxV3AsHVjcoYrILSw0tBwA4RERFo5ErIVufZJ8yUhPZ8Jbw9m5Yg53Pf0+7e4dkWvfXSvn8ssbDxNSoyGPfzkDByeXYoxURKxNVHwKcUmpzNh4nBkbj2d7/38L9vC/BXuYNLID5yLjiYhLpt27f2frdyEKmr05i14NQvh5RLs893k8LBYA31LOhXEIInILu3obU1p8NACGjQ1u5WoRe2pv5tUz9tdugYo5vhNMGbiXr2uJUEXkFnXkyDEA/P38LByJWAsVauS6MjIymPju42xb8id3PP4Wne57Mte+e9ct5ufXhhJctQ4jv/4DJxe3YoxURKyRTyknxj/SNlv7wfNRfDp3FwOaV6Rz7bLUDfHhpd71iIjNfhXMy1M24eJgx9t9GxJY2jWrPTIuCS838yv2ElPS+GLeLgwDOtUqU/gHJCIlTlpiLIatfbanOKXERhC2+W9sHV1wLVs1q92/WR9ijm7l/MpJlO38UFb72cU/Ytja49ekV7HFLiK3joiICLy9vc3aEhMTef+j0RiGQY9uXS0UmVgbFWrkumZ99Sab508lpEYDSvuXZfP8aWbvl6lckzKVa3Fq/3Z+evl+DBtbmvQYwJ7VC8z6Obq4UredPtiI3G5cHOzo3TA0W7uX20VgFzXLemW97++R8xUwo/7YiruzfbZxBn6zFH8PF+qU8ybA05nzVxKYvvEYp8PjeKZ7baoEehbqsYiIdbm4biZJ4WcBSEuIJSM1hZN/fQmAk09ZAlr2AyD25B72jX0E30a9cAmogK2jCwlhJ7i4ZjqpsRFUffCTrMWEAYLa38fFtdM5OuUdksLP4hJYiYjdywnftoDQPs/j5F222I9VRIrPxN8nc+r0GQCio2NITk7m/Y8+BiCkXDD3Dx6U1Xf3nj38PXc+AGvWrgXgp58nEBDgD8CTjz+Kh0fmuns97riLoMBA6tevR1BgIGfPnWPipMmcOHmSV19+kerVqxXbMYp1U6FGruvMwZ0AnNq/nQlvP5Lt/R7DX6FM5VqcP3aA1OTMb8JnfPZStn5egeVUqBGRQtWzfggLdp5h/IoDRCek4OpkT51gL97u24jeDUIsHZ6IFLELq6cQdXCDWduJPz8BwLNa86xCjbN/KL4NexB1aCOXNs4iIyURe3dvPKo0oWyXhyldrbnZGDZ2DtR9aRon/hjNpQ2zSI2PwtkvlCoPfESZjkOK5+BExGJ+/vU3Vq1eY9b21qh3AWjbprVZoWb7jp1Z71317bjvs/5+38ABWYWau++6k7/+nsuYb8cRFRWFm5sbDerV5ZPRH9D3rj5FdDRSEhkmk8nSMdwSDMMwjd0SbekwxMJGNvbAZDIZlo5DSibDMExh3+sEQK7Pb8QE5RopEoZhmNpP0NPSbiUrhgQpX0ixMQzDlJEcb+kwxMJsHF2Vd26SnvokIiIiIiIiImIlVKgREREREREREbESKtSIiIiIiIiIiFgJFWpERERERERERKyECjUiIiIiIiIiIlZChRoRERERERERESuhQs0tat4PHzGysUfWnxN7tlg6pJv23bP3mB2TiBSOT+bsxG/EhKw/W49ftnRIVi30qd+zflZ9Pl9o6XBESpQTsz5jxZCgrD/RR7dZOqRiFbZlrtnxX1gzzdIhidwSRr33ATaOrll/Nm7abOmQitXMP2eZHf+vv020dEhyk+wsHYAUrb7PfoSbpze+wRWy2ub98BHzfxyd6za+wRUY9eeOG9pfdPhFVk77njMHd3L6wE7ioyNpP+Ax+j2f8/7evKM2kRdO5/je1xsisLW7NkU73vckDTv3Ze3sXzm2Y/0NxSciuXuvf2O83Bwp7+ee1XY2Mo4PZ+9g9+kILkYlkJqWQRkvVzrVLssTXWvhV8o5q+/p8Dgavf5HnvuY82J3mlbyA2DNwQv8uPwA+89eITw2CTtbgxAfdwa0qMQDravgaG97w8fiN2JCnu9/O6w1/Zpm5sV1hy4ye+sJNh65xJnIeAygZlkvhneozp2NQrNt++X9LUhNz+CtGSW/AC5iKZUGvYO9mxfO/qFm7SuGBOXY37F0IC2+vPGiTnLUJc4u+ZnYk7uJO7mb1LgrlO3yMJUHv5utb8LFY1xcO5PIfatJCjtJenICTr4hBLToS3D3EdjYOZj1PzHrM07O/iLH/VYd+ilB7QZnvS5VoR7VH/mGhAtHODXn6xs+HhHJ2ReffoyPjzeVKlYwa7dxdM2xf5kyQZw5fsSszWQy8e24H/hx/M8cOnwEZ2dn2rRqyQfvjaJmjRo3FV/5KtU5dSrnc5+U+Gjs7LKfns+bv5Avv/6GbTt2kpycTNkyZejapTNf/++zrD5NGjXit19+4sDBQ3z08ac3FaNYBxVqbnF12/XEOyjErK1e+974lq2Qre/RnetZN+tXarXqdsP7u3TqCIt//QKvwHKUq16PAxuXX3cb/9AqdBv6QrZ2G1vzk7QqDVsDcHDzShVqRIpA93rlKOfjZtZ2OSaJc5HxdK0TTFBpV+xtbTh4/gq/rTnM39tOsuyN3ni7OQHg7e7I2KGtso2bnmHi+Ukb8HBxoEF5n6z2wxeiMZlMDGhRCX8PZ1LS0tlw5BKvT9vMsr3nmPpUpxs+lpziAHhrxhZiElNpV+PayeD7s7Zx/koCPeuXo3qZ0sQkpjB1/VGG/7iKE2ExPNOjjtkYfRqXB2D03zdW0BYR8GnQDWff4Bzf86jSlKB295m12Tq63NT+Ei4c4/Tcb3DyKYtbaB2u7F2Va98Lq6dybtmv+NTvQkCLvmAYROxaxvGZHxF1aAN1nv8dwzCybXe1+GR2LJUamr128i5LQMuyXDmwXoUakSLQ547ehIaG5Phe61YtGf7QULM2V9fsBZwRjz/JTz//Qsf27Rj+0DCuREXx7bjvadGmA2tXLqV2rVo3FWO1qlV57ZUXs7Xb2mb/guqd9z/knfc+oEunjox683VcXFw4feYM+/btN+tXrlww9w0ayMpVq1WouUWoUHMbKlO5FmUqZ08wO5b/BUDzO+7L9l5+latWj4+XHMfN05uI86d46846192mlJcfTXrce8P7FJGiUz/Uh79eyF68bVrJn+E/rmL6hmM81rkmAK6O9vRvVjFb3/k7T5OankG/phWwt712x+1D7avxUPtqZn0fal+dlyZv5NdVh9h9OoI65bxvKO6c4th7JpKIuGR61i+Hj7tTVvsbdzWkWWU/bG2uxTasXTU6vD+Hz+bt4sG2VfF0dbyhOESk4Jz9Qgho2bdQx3QPrUPLMXtwcPcm8fIZNr7QNNe+vo17EdLrSexcSmW1le00lP3fP8Wl9TOJ2LUMn3rZC8l5FZ9ExPIqlA/lvkED8+yzY+dOfvr5F3p068rcv/7Mar9v4ABq1mvIM8+/yLJFC24qDn9/v+vGAbB02XLeee8D3nrjNUa9+fpN7VNKHq1RIwDERl5m37rFhNRoQJlKNW94HCdXd9w8C35ilZ6WRlJ87A3vV0SK19Urb6ITUq7bd+r6owAMalkpf2N7Z44dFX/9sQtiyj9xDG5Z2ay9ZdUAsyINgLODHZ1rlyUlLYOjl2IKNQ4Rub6MtBTSkuILbTw7Zzcc3PP3+aRU+bpmRZqr/Jr0AiD+7IFct01LjMWUkX5jQYpIkUtJSSEuLi7X91euWgPAfYPNCymhoSG0btmCFStXc/r0mZuOIy0tjdjYvM99PvrkU/z8fHn9lZcAiIuLIyMj46b3LSWDCjUCwKb5U0lPS72pq2lu1Ml9W3m2dQDPtyvLCx3KMfGdx4mJCCv2OEQkd8mp6UTEJXHhSjwr95/nxd83ANChVpk8twuLSWTpnrM0LO9DtaDSOfaJS0olIi6JU+GxzNx0nDGL9uLt5kj90Bu7miYnKWnp/LHpOAGezrSvmfMaGP914UoCkHlLl4gUn8tb5rLq4QqsGVGZtU/W4cjvb5OWmPuJVXFJjrwAgH0uBZ8tb3RkzaNVWfVQKNvfv5PIPG6vEpHiN/PP2bh4eFPK25+A4FCefeGlbMWS5JRkAFycs99uefU2qc1bt95UHJs2b8HV0wcPnwC8/MswbPgILl26ZNYnPj6e1WvW0bRxY8b/MoGy5StRytsfdy8/Bt43JFt/ufXo1icBYOOc37F3dKZR137Fut+A8lVp1nswgRWqkZ6ayqEtK9k453cOb1vDSxNW4F7a5/qDiEiRm7XlBE9NWJf1OtjblTFDW9Gkol+e283YeIy0DBMDW1TOtc+rUzcxbcOxrNcNQn0YPbAp7s4OuW5TUIt2nSEyPpmnu9XOdvVMTvadjWTejlM0LO9Led/s36yLSNFwL18P38Y9cAmoSFpiLBE7FnN28Y9EH95E/ddnY+vgdP1BikB6cgKnF3yHrZMbPg26mr1n5+JBYJuBeFRujL1baeLPH+bMoh/Z9dkgajz2Lf5N77RIzCJyTeNGDbn7rjupWrkK0THRzJk7n6++GcvadetZs2IpTk6ZuaV61cxbsleuXs0dvXtmbZ+YmMimLZkPEbiZK2pqVKvGgw/cT80a1UlJSWHZipX8OmEiK1atZvO61fj6+gJw9Ngx0tPT2bh5M4uXLuPlF5+nbp3arFm7jq/HfMuu3XvYunEtLi43t36XWC8VaoST+7Zx4fgBGne/F2e34n3s9civZpq9btytP6E1GzHlo2dY/OsX9H32w2KNR0Ry1r5mEDOe6UxcUio7T0awaPcZ4pJSr7vd1PVHcXGw467Gobn2eaJLLfo1rUB4bBIr9p3n6MVo4pPTCjF6mPzPbU8D83H71ZX4ZB76fhX2tjZ8cX/zQo1DRPLWaNR8s9eBre7h2IyPOD33Gy6snETZLg8Xe0wmk4kDPz5L0uXTVHvo82y3UAV3HW722qdBVwJa3cPm1zpwZNKb+DbsgY2dfXGGLCL/sWndarPXQ+6/j9fefJvRn3zGDz/9zFNPPA5Aj+5dqVK5MmO/+56yZcpwZ+9eREVH8857H3D5cjgACYmJNxzHvL9nmb0eNOBemjZuzKMjn+SjTz7ji08/BiA2NvMqwsuXw/lx3Lc8NHQIAHfdeQelSpXi3fc/ZMLE33lshHn+kVuHbn0SNvw9EYAWFrjtKSet7h6KW2kf9m9YaulQROQf/h4utK0eRM/6Ibx+VwNGD2zKK1M28fvaI7lus/X4ZQ5diKZXg5A8r46pGuRJ2+pB9G1SgTFDW9GxVhnu+WoJhy9EFUrsF6MSWLn/PM0r+1PBL++rY2ITUxjw9RLORsYxfkQ7qpfJ+XYtESk+Ib2fynzy0p6VFtn/4QmvcHnLHEJ6P01gm+svAArg6OlPYJt7SY0JJ+7U3iKOUERuxGsvv4hhGCxavCSrzd7engVzZtO4UUNeePlVKteoTePmrYiIjOSlF54DoJS7e6HG8cjDw/D19WHR4mvnPlev8LGxseH+/6yX8+D9medsq1avKdQ4xLqoUHObS01OYtviP/EpE0rlfx5/bQ28AoKJi4qwdBgikosWVQIIKu3C5PW5F2quLd6bv0WEr+rXrAKp6RnM3HT8pmK8atqGY6RnmBjUMvfbryBzrZwB3yxlz+lIvn+4DZ1qly2U/YvIzbFzcsXerTSpsZHFvu8jk97k/IqJBHcbQYV+LxdoWyefzCdApcYVf9wicn1ubm54e3sTHmF+zlG+fChrVy7j2MF9rFy6iAO7d7Bu1XJSUjIfclC1St6fJ25ESLlyhEeEZ70OLpu5BmDp0qVxcDD/sisgwB+AK1euFHocYj1UqLnN7Vj+N4lx0TTrfR+GYVg6HAAyMjKIOH+SUl55r30hIpaVlJKe61OfElPS+GvrCcr7udO8SkCBxwWIyscTpfJj6oajuDvZ07thSK59ElLSGDxmGdtPhPPdQ23oWT/3viJSvFLjo0mNjcTBo3jXrTs69V3OLhlPmc7DqDTw7QJvn3jpBAAOpXwLOzQRKQRRUVGEh4fj75fzOUf58qG0ad2KqlWrALB4yVLc3d1p2aJwb4vOyMjg+ImTZnH4+/tTrlwwkZGRJCQkmPU/c+YsAH5+yi23MhVqbnMb50zCsLGhWa9Bxb7v+Oicv2FaOvEr4qOvUKtV1xzfF5HiExaT833Ys7acIDI+mQahOZ84zd1+ipjEVAblsYhwbmOPX3kQgAblb/6kbOPRSxy7FEOfxuVxcch5Wbak1HTuH7ucTUfD+ObBVtzZKPSm9ysiBZfblSfHZ44GwLte52KL5fjMjzmzYBxB7e+n8uD3cu2XkZ5GWmL2R+wmXDrBhdVTcfQKxC2kZlGGKiLXERGR81X6r705CoCePbpfd4wfx//Crt17eOqJx3Fzc7uhOCIjc85xn37xPyIjI7PFcd+ggZhMJr7/cbxZ+7gffwKgR/duNxSHlAxaTPg2FnHhNIe3rqZ6s46U9s/9EbvzfviI+T+O5r63vqV578HXHXfB+E8BSIyNAjIXK77aVql+Cyo3aAnApnlT2TBnEjWad8Q7sBxpqSkc2rKavWsXElC+Gp2HPHNzBygiN+29P7dx6HwUbasHEeztRkJKKtuOhzNn+yn8PZx5sXe9HLebsv4otjYG9zavmOvYPT+eT7UgT+qF+hDg4UJEXBKLdp9hy7HLNK/sT78mFcz69/l8IesPX2LrB30p55O/D0lT1mXefjUoj9uvHhu/mjUHL9CpVhlMJhMzNh4ze79xRT9CfQv3fnQRye7kX18Rc3w7ntVa4ORTlrSEGCJ2LiX68CY8q7UgsPUAs/4nZn3GydlfUO3h/xHY+t58jP8lAGkJ0QDEHN+R1eZZtRme1ZoBcHbJeE7N+Qon3xA8Kjfm0vo/zcZx9g/Bo1IjANKT4tn4YnN8GnTFJbAS9i4exJ8/woXVk8lITaHqg99h2NjezI9FRG7S+x99zOYtW2nbpjUh5coRHR3NvAULWbN2He3atmHYgw+Y9X/40cyFhevVqYO9vT3LV6xk5p+z6NKpI2++9opZ35MnT1Ghag3atmnNiiUL84zjt0mT+WXCb3Tt0pnQkBCSk5NZsXIVc+cvoEb16rz8zxo4V730/LP8OesvXnzlNQ4fOUrdOrVZt349v0+ZRod2bbmnX99C+OmItVKh5ja2ce5kTCYTza+ziHBSfOaq455+gfkad+64981en9izmRN7NgPQY/grWYWakJoNOLx1NdsW/0lcVOY9md5BoXQb9iKdH3gaJ1edGIlYWq/6IUQnpDBj0zEiYpOwMQyCfdwY0ak6T3SphW8p52zbnA6PY93hi3SsWYYAz9wfGzm0XTUW7TrD+BUHiYpPxsnBjqqBHrzXvzFD21XFztb8os+4pFRcHOzwcMnfY7vjk1P5e9tJqgZ60LB87pcH7z6d+U3b0r3nWLr3XLb3vx7SUoUakWLgWb058ecPc3HtDFLjIjFsbHEJrETFe9+gbJeHsz05KT0pHgDH0vm7vfLEn5+YvY45uo2Yo9sACO3zXFahJvbkHgCSLp/iwA9PZRsnoNU9WYUaWwcnfBt2J+b4DsK3LSA9OQF7d2+863SgXK8ncA+pXYCfgIgUhXZt2nDgwEF+m/Q74eER2NnZUa1qFT7+8H2efnIk9vbmuaVxw4Z8/+NPzJj5J2lpaVStUpkvPv2YkY+NwM7O/PQ5Ni7ziroyQdc/T2rcqCErVq5i2oyZWU+QqlC+PK+/+jIvPf8s7v9ZpLhUqVKsXr6YN0e9x99z5/LzrxMoW6YMr778Im++9gq2tioC38pUqLnFJcRG4RjlhrObB7b/SSw9h79Cz+Gv5LLlNUe2raZS/ZZUb9ohX/scuyU6X/0q1m1GxS+m5qsvQGJcDOlpqaSlJud7GxHJv+iEZCLi7PBwdsgqknStG0zXusEFGqecjxuXxg25br/HO9fk8c75uyUgKj6ZfWev8Ez3Ovku1Lg62nPi6+tfBbjtw375Gu+qyLgkTEBGRoE2E5F/SUuIIiXWBTsXD2xsMz+f+Dbohm+D/F/Kf+XAOjyqNsOrVtt89W8/4Xy++lUf/iXVh3+Zr7429o5Ue+jzfPUFyEhLIS0xlrTEmHxvIyL5dyXqCm7hrnh6emYVVe68oxd33tEr32OMGP4QI4Y/lK++K1auxs7Ojrdef+26fVu2aM5ff87IdxwAPj4+fDfmK74b81We/VJSUoiJiSE6WrnlVqFCzS1u9H1tAHjh56WUr924wNvHRl7m7JG9vPjLssIOrcB+ffNh9q5dZOkwRG5ZHT+YC8D8l3vQqIJ1LVC3+uAFvN2cGNnF8ms9NHjtDxKS0wAI8b2x+9RFbndb38pch67Bm3PwqNSwwNunxIQTd3o/Dd+eV9ihFanwHYvZN+YRS4chcstq2DTzyv31q1fQrGmTIt/f4iVLGTH8YaoUwZOgCuLvufO4Z2Ded0lIyWKYTCZLx3BLMAzDlN8rSYpD+NkThJ87mfU6pGZDnN1KWS6gQnD28B7irlx7bF21pu0tGE3ORjb2wGQyWcfjs6TEMQzDFPb99a9EKWwnL8dyKvzaYpgNQn1wd87fVSu3o3WHLpL2z+U0ni6O1A3xLvYY/EZMUK6RImEYhim/V57ciMSwUyRePpX1ulSF+tg53z63FqbEhBN3Zn/Wa9cyVXH09C/Sfa4YEqR8IcXGMAxTRnJ8se/3+PETHD9xIut1k8aNKFWqZJ/7FERYWBi79+zNel2zRnUCA/O3bEVRsHF0Vd65SSrUFBJrK9SIZahQIzfDUoUaKXlUqJGiUtSFGil+KtRIcbJUoUasiwo1N0+P5xYRERERERERsRIq1IiIiIiIiIiIWAkVakRERERERERErIQKNXLT5v3wESMbexBx/tT1OxeR30Y9xsjGHhbbv4hYzrpDF/EbMYGp649aOhQRKQFOzPqMFUOCSLx8xmIxHPjxGVYMCbLY/kXEclauWo2Noyu//jbR0qGIFdPjua1cYlw0yyd/y66Vc7l8NnMlc58yodRt25MOg0fi4u5p2QBFRP6x7tBF7vpiUdZrG8PA3dmeQE8X6pTz5u7G5WlfMwjD0NpyIreqtIQYziz6gcvbFpIUdhIAJ98QfBp2JbjrCOxd9aWKiFiHlatW06FL96zXNjY2lCpVijJBgTRsUJ8B9/Sna5fO+twiFqFCjRW7eOIQY57qS1TYORp07EOru4diGAZHtq9j4S+fsXHeFJ74+g8Cyle1dKgiIln6Na1A+xpBmIC4pFSOXIhmwa7TTN94jDbVAxn/SDs8XPT4b5FbTfz5I+z6bBDJkRfwa9KLMu3vB8Mg6uAGTv39NRfXzqDuC5NxDaps6VBFRLLcN2gAXTp3wmQyERsbx4GDh/hrzhx+mzSZTh3aM33KJDw9PS0dptxmVKixUilJCXz/wkBiIy7x+JczqNG8U9Z7rfs+RPPegxn33AC+f2Egr/6+Fgcnl2KPMTkxHkdn12Lfr4hYt7rlvOnfrKJZ27v3NOat6VsYv/Igj45fzZQnO+Wy9TUJKWlsPHKJDjXLFFWoIlJI0pMT2PPlUFKiL1Pn+Ul4126X9V6ZDg8Q2Ppedn/5IHu+HErj9xZj61j8n1vSkxMssl8RsW4N6tfnvkEDzdq++HQ0z734CmO/G8fgB4Yy7+9Z1x0nISGBNWvX0bVL56IKVW4jWqPGSq2b/Rthp4/RYdBIsyLNVdWbdaT9wMcJO32MdbN/A2DvusWMbOzB6pk/5TjmO30b8G6/RmZtpw/s4PsXBvFSp/I83cKXd/s3ZunEr8nIyDDr9+YdtflyRE9OH9jB14/fwfPtyvLFw13zPIbo8EtMGf0sb/SqyVPNfXi9Z3WmffICCTFXsvrM+vpNRjb24OKJQ9m2v3LpHE80Lc2Uj57JaktNTuLPr97gte5VeaZVAJ8O7cjBTStyjSHs9DF+fXM4r3StzFPNfXjrzjr8/e27pCYn5Rm7iBQue1sbPhzQhEYVfFm29xwbj17Kem/vmUge+HY5VZ6dQoWnJ9N99DymbzzGE7+sZfyKg2bjLNh5mg7vzyF45ETqvzKTT+fsJO0/+eqqlLR0vpy/m9ajZhM8ciJVnp3CkO+Wc+h8VFEeqsht6cKqySReOk5w10fMijRXedVuR3DX4SReOs6FVZMBiNi1jBVDgji3bEKOY258qRWbXmlt1hZ7Yjd7vhrK2pE1WflQKJteacPp+d9h+k8e2PB8E3Z81JfYE7vZ+fE9rB5Rhe3v35nnMSRHhXHo11dY/2wjVg4LYf0zDTn822ukxkdl9Tk67T1WDAki/vyRbNsnRZ5nxYNlOfTry1lt6SlJHJ36Luuers+q4RXY9m4vIvetzjWGhIvH2T/uCdY9VZeVw0LY8EIzjs8cTXqKPreIFCd7e3u+/t9nNG/WlAWLFrN23fqs93bt3k2fvvfgHVAWD58Amrdux8TfJzNk2HDGfDvObJy//p5LgybNcS7lRUilqrzz/oekpaXluM+UlBQ+/PhTatVrhHMpL7wDynJ3/wHsP3CgSI9VrJOuqLFSO5f/DUCLPg/k2qdFnwdY8tuX7Fo5l/YDHqVGs464e/mxef402vR72Kzvib1bCTt9jN6PvZHVtm/9Un54YSD+oVXpdP9TOLm6c2jLKmZ9/SaXTh1h8BvfmI0RefEM3zzRh4ad+9Kg012k55JkAK5cPMtnD3UmPS2VFnc+gHdgOc4fO8DaWb9wbOcGXvh5KQ5OzjTtMZClE79m0/yp3DnybbMxtiycjikjgyY9BmS1/fLGQ+xaOZc6bXtSrUl7ws+d4PsXB+NTJjRbDGcO7eKrR3vjUsqTtv2H4+7ly8l9W1k84X+cPrCDx7/6Axsb1SpFiothGNzfqjJbj19m2Z5zNKvkz86T4fT5fBEOdjYMbVsVf08XFu46wxO/rMXH3YmN792Vtf28HacY9v1Kynm78UKvetjYGExdf5RFu7MvCJqWnsHAb5ax+egl7m1RiYc7VCc8NolfVh6i+8fzWfhKD6oEehbj0Yvc2sK2zgcgqO2gXPsEth3E6XljubxtIWW7PIxX7XY4ePhycf1MynQcYtY3+th2Ei8dp3zfa0WPiN0r2PPVUFyDKhHc4zHsnNy5sn8tx6a9R8LFY1Qb9pnZGEkR59j56QD8mt6JX5M7yEhPzTW2pIhzbH8vs09Q20E4+QQTf/Yg51dOIurwZhq+NQdbB2cCWvbnzPzvuLhuJhX7v2o2xqUNf4IpA/8WfbPa9n/3OOHbF+LToCula7YhMewUe78ahpNvSLYYYk/tYefo/ti5elKm44M4lPIl5vh2Ts0dQ8yJXdR9/ncMfW4RKTaGYfDwsAfZsHET8xcuolXLFmzdtp12nbri6OjIYyOGExQYyN9z5jJk2HD8/Hw5tHdX1vaz/vqbfvcOonxoKG+98Sq2Nrb8+tsk5sydl21faWlp9LzjLtau38CQ++/jyZGPEXb5Mt99/wPNW7dn45qVVK9erRiPXixNhRordeH4fpxcS+FbtkKuffyCK+Lk6s75o/sAsLG1pXG3/iyfPJawM8fwC75268Hm+VMxDIPG3e8FMq9MmfTu41So24wnx8zGxtYWgDb9HmbmF6+yYsq3tOk/nOCqdbLGiDh/igdGjaNpT/NLA3My/bOXSE9L49Xf1+Hh45/VXqVxG354YRDrZv1K+4GPEVSpBsFV67Bl4QzuePwts8W6Ns+fhk+ZUCrWbQbAgY3L2LVyLs3vuI/73hyb1a9S/Rb88OLgbDFMenckHr6BvDRhedYtWq3uHkqZSrWY+cUr7FmzgLpte173WESk8NQM9gLg6KVoAF6fvpmUtHQWvtqDakGlASjt6sj6wxeJjEvmckwipZwdSM/I4I1pW/B2c2LRqz3xcnMCYEibKrR79+9s+xm/4iBrD11g5jNdaF0tMKt9QPNKtH7nLz6YvZ0Jj3Uo6sMVuW3Enz2ErbM7zv6hufZx8S+PrZMb8Wczvx02bGzxa3YXZxf9QMKlE7j4l8/qe2ndTDAMAv4peqSnJHHwp2fxqNKEei9OwbDJ/NxSpuMQjvz+NmcX/0iZjg/iHlIra4yky6epPvwrAlr1v278Rya9gSkjjcbvLcXR0y+r3bNGS/Z+NYzzK38nuMvDuJWthltILS5t+JMK/V4x+9xyad0fOPmG4FmlCQCRe1YSvn0hgW0GUO2hL66NWbUpe79+KFsMB396DgfPABqNmp91i1ZQ+/twDa7B0d/fInznYnwbdLvusYhI4albpzYAhw9nXkX3zPMvkpKSwqZ1q6hZowYAXl6lWbl6DeHhEVy6FIaHhwfp6ek88/yL+Ph4s2ndKry9vQEYMfwh6jZqmm0/Y74dx/KVq1iyYC4d2rfLan/w/vuoVb8Rr781ij9nTC3agxWrorK8lUqMi8XJ1f26/Zxc3UmMi8l63aRHZiFmy4LpWW3paalsX/Inleq3xDuwHAAHN68kJuISzXoPJiE2irioiKw/tVp2yeyzabnZvtw8vbMKPXnHHp1ZBGnXE1s7O7OxK9ZthoOzK/s3LvtXzAO4cvEMR7avzWo7c2gXF44fMLuaZtfKzOpz5/ufMdtf3Xa98A8xX5jw/NH9nD28h8bd+5OanGQWQ40WmfeNHtiwDBEpXm5O9gDEJqVyOSaRLccu07VucFaRZsuxMN6euYXxj7Qjw2Tir60nAdh1KoJzV+IZ1LJSVpEGoJSzA0PaZF9Qfeam41QL9KRG2dJExCVl/XFysKVheR9W7b9Q9AcrchtJT4rFztntuv3snN1JS4zNeh3QMrMQc2n9H1ltGWmphG3+G8+qzXDyKQvAlf1rSIkOI7DVPaTGR5ESG5H1x7teRwAi964y25e9u5fZ1S25SUuIIXzHEnwadMOwtTUb26NyY2wdXYjcs/JazC36kRxxjqiDG7LaYk/tIf7coazjAbi8PfMpeOV6PG62P9+G3XEJNF/HK+7sQeJO78O/xd2kpySaH1+d9pnHt8f8+ESk6JVyLwVATEwMYWFhrN+wkTt69cwq0mzYuIkXXn6VGVN+JyMjg+l//AnAtu07OHPmLMMeHJJVpAHw8PBgxPDshdrfp0ylZo3q1Kldi/Dw8Kw/zs5ONGvSmMVLdd5yu9EVNVbKydWNpPjY6/ZLio/F2a1U1uvgqnUJqliDzfOn0vORzEty961bQlxUBE16Xit6XDyRue7Db2+PyHXsmIjLZq+9g0LydavQpVNHMWVksPbPX1j75y859omNDMv6e6Ou/Zn19Vtsnj+VKg0z70XfPH8acK3wBBB+7iQ2tnb4Bme/yiigfFUunbp2v/iFf45vzrfvMefb964bg4gUj7ikzFsP3J3sOR0RB0DVIE8AToXH8tAPKxk7tDWNK/r90xZn9t9KAdkf7VslMHvb4QtRJKamU/35aXnGcrVwJCI3x9bJjbTEuOv2S0uMxc752hdR7iG1cS1bjYvr/qD8XS8AELl7OamxkQS07JfVL/7cYQAO/PBUrmOnxoSbvXbyKZevW4USLhwDUwbnV0zk/IqJOfZJib72mci/+V0cm/4+l9bPpHT1FgBcXJdZaApocS3mpMunMGztcP7XlUJXuQRWztzv1Rj+Ob4TM0dzYuboXI7vco7tIlJ0YmIzvxAvVaoUJ06eAqBGjeoAnDhxkv4DB/Pbzz/RonnmHQDHT5ww+2+1qlWyjVmjWvVsbfsPHCQxMRG/Mtlvi7wqNjYWd/frf5EvtwYVaqxUYMUaHNuxnvCzJ/Apm/0feIDLZ4+TFB9L5QatzNqb9LiX2d+8zfFdm6hQtymbF0zF3tGZ+h2uLaJ3ddG9vs9+SFDFGjmOXzog2Ox1fp8sdXXspj0H0aT7PTn2cfzX1UKlvP2o1rQ9O5b9zT0vfoadvQNbF82kQt1m/7n1y5T7Pk2m/7zOjKHzA09TrUn7HLdx9/LNz+GISCHaeyYSgEr+HjjYZd664OJgR0xiCoPHLOPpbnVoXS2QK/HJACSlZq6FdfV33MDINmZOmSHDZKJWsBdv922YayxO9rY3cygi8i+uZaoSfXgTiWGncPbL+UQj8dJJ0pPicK/W3Kzdv0Vfjk//gOgjW/Co3JiL6//AxsEJ38a9rnX659/1SgNH4Rqc8zoNTt7mT4izdXTOV+xXPzMEtLoH/xZ359jH1una1UIOHr6UrtmGsC3zqHz/B9jYORC2cTYelRub3fr1388m/9lrjjGU6/E4pWu1yXELB3effByNiBSmnbt2A1ClSmUcHR0AcHV1ITo6ml59+vLqSy/SoX07IiMzP98kJSYC//rcYuTwuSWH3JCRkUG9unX45KMPco3F2Tl/OU1uDSrUWKl67XpzbMd61v89kTsefyvHPuv/yvzWp2773mbtjbvfy19j32HTgqkEVKjKnjULqduul9mVN77lMi+5dXR2pVrTnAsZN8o3uAKGYZCelprvsZv2HMD+9UvYs3o+Tm4exERcoscjr5j18SlTngMbl3P5zHH8Q81vdbp08rDZ66vr89jY2hX68YnIjTGZTPy+LvPKt061yxLik3nic/hCNMO+X0nTSv481D7zBOzqk5nKeWcWdUN9M/975GJUtnGPXIjO1lbBrxQRsUm0qRaY44ckESlcvo16EH14ExdWT6FCv1dy7HN+9ZTMvg27m7UHtOjL8RkfcXHdH7gEVSFiZ+ZtSP++8sbZP/OLG1snV7xq5lzIuFHO/qFgGJjSU/M9dkDLfkTuXk74jsXYOZciJTqM0LueNx/XL5Qre1eReOkELoGVzN5LuHDU7LXLP8dn2NoV+vGJyI0xmUz8/Gvm03V7du9G+dBQAA4cOEj/AYNp1bIFIx/LvDth3/7MtbdC/+lTsULm7/SBg9mfbHvg0MFsbZUrVeRyeDgdO7TX5xYBtEaN1WrR5wF8yoSy7PcxOT5++uCmFSz/fQx+5SrS8j9PhvL0DaRq47ZsX/InmxdMJy0lmaY9zBcArtG8E26e3iz69Quzx2VflZQQR0pSwg3F7ubpTfXmndixbDan9m3L9n5GejpxUZFmbXXb9sLJtRSbF0xj8/yp2Dk40rDTXWZ9arfpAcDSSV+Zte9aOdfstieA4Gr1CChfjdUzfyLi/KlsMaSmJJMYl/3kTkSKRlp6Bm/N2MKWY5fpVKsMTSv5UcrZgY61yjB94zFSUtMZPTBzcb2MDBNfL9wDQLd6mVf21Q3xJtDThcnrjhIZd+0xtbGJKUxYnf1DUL9mFbkQlcCPy3N+pOXlmMTCPkSR21pg20E4+YZwZuH3OT5+OnLfas4s/B5n/woE/ufJUI6lAyhdoxVhm//m0vo/yEhNJqCl+QLA3nXaY+/uxam535g9LvuqtKR40pNv7HOLg7s3XrXbE7Z5LjHHd2Z735SRTmqc+ecWnwbdsHV259K6P7i0fiY29o74NTH/4synfuaaf6fnf2fWfnnbArPbngDcQmvjElSFc8smkHg5+5PsMlKTSUuIydYuIkUjLS2N5158mfUbNtKjW1datmiOh4cH3bt24bdJk0lOSWHMV5mLhGdkZPDxp58DcGfvzCsBGzaoT5kyQfwy4TciIiKyxo2JieH7H8dn2999gwZy7tx5vh7zbY7xhIVpyYbbja6osVJOLm6M+HwqY5/qy5in7qZh57upVD/zPuijOzawbckfePoGMeKzKTnektSkxwAOblrBnG/fw93Lj+rNzJ9u4ujsyv2jxvHjS/fxbv/GNOs1GN+y5YmPucLFE4fYuWIOL4xfQlClnG+Lup4Br3zBFw9344vh3WjacyBlq9QmPS2Ny+dOsGvFXDoPeYZ29zyS1d/e0Yn6He9g07yp2NrZU6tVV1xKlTYbs2aLTtRu3Z31f00kLiqS6k3bc/nsSdbO+oWgijU4f2x/Vl/DMBjyzji+HnknHw5qSfPe9+FfvgrJCfGEnT7KzuV/c//b31G7tZ6eIFLYdp2OYMbGY5iA+ORUjl6MYcHO05yNjKddjSDGPXzt2+LawV4s23uOY2ExjF20Fzcne+btOM26wxcZ3LIyDctn3qJoa2PD+/c05uEfV9H1o3nc37oKNobBlPVHKe3qyNnIeLMYRnSszsr953lj+hZWH7hAi6oBuDjYcS4ynhX7z1HOx52fR7Qrxp+KyK3NzsmVOs/8yq7PB7Hr00H4Nb0Dz6qZazZEH97EpY1/4Vg6gNrP/JL1RKN/C2jZjyv7VnP8j49x8PDFq3Zbs/dtHV2oPvwr9n7zMJteaUNg63tx9gslNf4KCeeOcHnbfBq8OQe3sjf2+NqqQ0az/YM72f5BHwJa9sc9pCYZ6Wkkhp0kfNsCyvUYSdnOw67F4+CEX+OeXFw3E8PWDu+6nbB39TQb07tOe7zrdebC6imkxkXiVastiWGnOL9iIq5lqxF/9tq36oZhUOORr9n5yb1seaMjgW0G4BJUmfSkeBIvHufy1nlUG/4lPvU639DxiUjutu/YwaTJUzCZTMTFxXPw0CH+mjOX06fP0KVTR37/7dqam/Xq1WXBosUcPnKET7/4Enc3N2b99TcrV61m2NAhNG3SGABbW1v+99kn3Dvofpq2bMvDDz2IrY0tv0yYiLeXF6dPmxdkn3nqCZYsXcazL7zEsuUraNumNa6urpw+c4bFS5ZSPjSUGVN/L9afi1iWCjVWLKhidV6fso7lk79l16p57F41HwCfMqF0G/oCHQaPxMXdM8dt67XvzbSPnycpPoYWd96f9fjtf6vVsgsvTVjB4l+/YNO8KcRHR+JSqjR+5SrSbdgLeAWVu+HYvQPL8cqk1Sz+9X/sWTOfTfOmYO/kjFdAMA273E2tFtk/aDTtMZANf08iIz0t2xVAVw378BfmfPc+WxZO58DGZQRWqM7wj39j66I/zAo1AOWq1+fVSWtY9Mvn7Fw5l5iZF3F2K4V3UAht+g8ntGbua1eIyI2buek4Mzcdx8YwcHW0I6i0Cy2qBHB34/J0qHVtDYnl+87xy6pDTHisPX9uPsH4lQeJik8m1Nedd/s34pEO5oXi3g1DGW8YfD5vF5/M2YmPuxMDmleiWWV/7vlqiVlfBztbpj3VifErDjJj0zE++XsnGBDg4ULjir4Mbml++6SI3DzXslVp/P4yziz6gfBtiwj/56lHzn4hhNzxFMFdR2Dvmn3xb8i8derwb6+SnhhLYJuBWY/f/jfvuh1p+PZ8Ts39hotrZ5AadwV7N0+c/csTcsfTOPkE5zBy/jj5lKXRO4s5PW8M4TsWc3HdDGwdnHH0LoNf0zvxrtsx2zb+LftzYfVUTOlpZgsf/1vNkeM48ccnXNrwJ5F7VuFatio1n/yJsI2zzQo1AO7l69Do3cWcmvM1l7ctIGXZBOxc3HHyKUeZjg9SqkL9Gz4+EcndpMlTmTR5KjY2Nri5uVG2TBnatWnNgHv6061rl6x+ixYv4bvvf2TWjGlMmTadsd+NIzLyChUrVODzT0bz9JMjzcbtd/ddzJj6O+998BGj3v0APz9fhtx/H21ataRrzzvM+jo4OLBg7l+M+XYckyZP4e1338cwDIICA2nRvCnDHhxSLD8LsR5G3gudSX4ZhmEau0W30tzuRjb2wGQy6cZSuSGGYZjCvr99/iG+HJPIsUsxNKvsb+lQShy/EROUa6RIGIZhaj/hvKXDkEK0YkiQ8oUUG8MwTBnJ8dfvWAKFhYVx6PARWrdqaelQrJ6No6vyzk3SFTUiImIRvqWc8S2lJxiIiIiI9fPz88PPz8/SYchtQosJi4iIiIiIiIhYCRVqRERERERERESshAo1IiIiIiIiIiJWQoUaEREREREREREroUKNiIiIiIiIiIiVUKFGRERERERERMRKqFAjIiIiIiIiImIlVKgREREREREREbESKtSIiIiIiIiIiFgJw2QyWTqGW4KDk/PF1OQkf0vHIZZl7+h0KSUpMcDScUjJ5OxgdzEpNV15RK7Lyd72UmJKmnKNFDpbB6eLGanJykO3EBt7x0vpKUnKF1IsnJ2dLyYl6Zzodufk5HQpMVHnRDdDhZpbiGEYTwGdTSZTb0vHUlwMw7gDeB+oZzKZMiwdj8itSLlFuUWkKCi3KLeIFAXlFuWWW4FufbpFGIbhArwCvGXpWIrZHCAJ6GfpQERuRcotyi0iRUG5RblFpCgotyi33CpUqLl1jATWm0ymHZYOpDiZMi8JexN4xzAMW0vHI3ILUm5RbhEpCsotyi0iRUG5RbnllqBbn24BhmG4A0eBDiaTaZ+l4yluhmEYwBrge5PJNNHS8YjcKpRblFtEioJyi3KLSFFQblFuuZWoUHMLMAzjDaC6yWQabOlYLMUwjHbAeKCayWRKtWw0IrcG5RblFpGioNyi3CJSFJRblFtuJSrUlHCGYXiSWTluYTKZDls4HIsyDGMZMMVkMv1k6VhESjrllmuUW0QKj3LLNcotIoVHueUa5ZZbgwo1JZxhGO8CZU0m0zBLx2JphmG0AKYAVUwmU7Kl4xEpyZRbrlFuESk8yi3XKLeIFB7llmuUW24NKtSUYIZh+ACHgEYmk+mEpeOxBoZhzAfmmUymsZaORaSkUm7JTrlF5OYpt2Sn3CJy85RbslNuKflUqCnBDMP4GPAwmUyPWjoWa2EYRiPgL6CSyWRKtHQ8IiWRckt2yi0iN0+5JTvlFpGbp9ySnXJLyadCTQllGEYAsB+oYzKZzlo6HmtiGMYsYI3JZPrC0rGIlDTKLblTbhG5ccotuVNuEblxyi25U24p2VSoKaEMw/iSzP9/T1s6FmtjGEYdYDGZFeQ4S8cjUpIot+ROuUXkxim35E65ReTGKbfkTrmlZFOhpgQyDKMssAuoaTKZLlo6HmtkGMZUYKfJZBpt6VhESgrllutTbhEpOOWW61NuESk45ZbrU24puVSoKYEMw/gOiDWZTC9ZOhZrZRhGNWANmRXkaEvHI1ISKLdcn3KLSMEpt1yfcotIwSm3XJ9yS8mlQk0JYxhGKLANqGoymcItHI5VMwzjN+CYyWR6x9KxiFg75Zb8U24RyT/llvxTbhHJP+WW/FNuKZlUqClhDMMYD5w3mUxvWjoWa2cYRkVgE1DFZDJFWjoeEWum3JJ/yi0i+afckn/KLSL5p9ySf8otJZMKNSWIYRiVgQ1AZZPJdMXS8ZQEhmH8CFw2mUyvWToWEWul3FJwyi0i16fcUnDKLSLXp9xScMotJY8KNSWIYRiTgIMmk+l9S8dSUhiGUQ7YAVQ3mUxhlo5HxBoptxSccovI9Sm3FJxyi8j1KbcUnHJLyaNCTQlhGEZNYAVQ0WQyxVo6npLEMIwxQLLJZHre0rGIWBvllhun3CKSO+WWG6fcIpI75ZYbp9xSsqhQU0IYhjED2GIymT6xdCwljWEYQcBeoJbJZDpv6XhErIlyy41TbhHJnXLLjVNuEcmdcsuNU24pWVSoKQEMw6gHLCDzsWrxFg6nRDIM43PAwWQyPWnpWESshXLLzVNuEclOueXmKbeIZKfccvOUW0oOFWpKAMMw/gaWmUymrywdS0llGIYfcACobzKZTls6HhFroNxy85RbRLJTbrl5yi0i2Sm33DzllpJDhRorZxhGE+APMlc1T7J0PCWZYRgfAj4mk+kRS8ciYmnKLYVHuUXkGuWWwqPcInKNckvhUW4pGVSosXKGYSwCZplMpnGWjqWkMwzDCzgMNDWZTMcsHY+IJSm3FB7lFpFrlFsKj3KLyDXKLYVHuaVksLF0AJI7wzBaAVWAny0dy63AZDJFAmOAtywdi4glKbcULuUWkUzKLYVLuUUkk3JL4VJuKRl0RY2VMgzDIPPRcxNMJtMvlo7nVmEYhgdwFGhtMpkOWjoekeKm3FI0lFvkdqfcUjSUW+R2p9xSNJRbrJ+uqLFeHYAgYKKlA7mVmEymaOALYJSFQxGxFOWWIqDcIqLcUhSUW0SUW4qCcov10xU1VuifyvE6YIzJZJps6XhuNYZhuJFZQe5iMpl2WzoekeKi3FK0lFvkdqXcUrSUW+R2pdxStJRbrJuuqLFO3QEPYJqlA7kVmUymOOAT4B1LxyJSzJRbipByi9zGlFuKkHKL3MaUW4qQcot1U6HGChiGMc4wjIB//m4A7wJvm0ymdMtGdkv7DmhiGEbDqw2GYXxpGEao5UISKVzKLRah3CK3POUWi1BukVuecotFKLdYKRVqrENrwOefv98J2AJ/Wi6cW5/JZEoEPiTzH4CrmgBlLBORSJFQbilmyi1ym1BuKWbKLXKbUG4pZsot1kuFGutgC6QbhmEDvAe8ZTKZMiwc0+3gJ6CWYRjN/3mdTub/C5FbhXKLZSi3yK1OucUylFvkVqfcYhnKLVZIhRrrYEvmL0R/IAGYC2AYxp2GYbS0ZGC3GsMwHA3DeNkwDDeTyZRM5j8C7/3zdjr6nZBbi3JLMVFukduMcksxUW6R24xySzFRbrF++h9gHa5WLN8B3gScDMMYB3wOXLFYVLemVKAasNUwjHrABCDUMIx2qHostx7lluKj3CK3E+WW4qPcIrcT5Zbio9xi5VSosQ42QC/gMnAO2AKUAhqYTKb9lgzsVmMymTJMJtNQ4H1gCTCCzHsy3wMyUFKSW4tySzFRbpHbjHJLMVFukduMcksxUW6xfnaWDkCAzF+Ep4HpwErgJeBXk8lksmRQtzKTyTTJMIxNwFTgDOAHxKDipdxalFuKmXKL3CaUW4qZcovcJpRbiplyi/XS/wDr4A64AV2ANiaT6RclpKJnMpmOAC2AE4AXUAtVj+XWotxiAcotchtQbrEA5Ra5DSi3WIByi3VSocY6OAErgGYmk+mApYO5nZhMpmSTyfQsMAywB8paOCSRwqTcYiHKLXKLU26xEOUWucUpt1iIcov1MVSktDzDMDxMJlO0peO43RmGUQqIVeVebhXKLdZBuUVuNcot1kG5RW41yi3WQbnFOqhQIyIiIiIiIiJiJXTrk4iIiIiIiIiIlShRT32yt7e/mJaW5m/pOKyFnZ3dpdTU1ABLx2GtNF+u0VzJm+aKOc2XvGm+XKO5kjfNFXOaL3nTfLlGcyVvmivmNF/ypvlyTUmaKyXq1ifDMEyjRo2ydBhWY9SoUZhMJsPScVgrzZdrNFfyprliTvMlb5ov12iu5E1zxZzmS940X67RXMmb5oo5zZe8ab5cU5Lmim59EhERERERERGxEirUiIiIiIiIiIhYCRVqRERERERERESshAo1IiIiIiIiIiJWQoUaEREREREREREroUKNiIiIiIiIiIiVUKFGRERERERERMRKqFAjIiIiIiIiImIlVKgREREREREREbESKtSIiIiIiIiIiFgJFWpERERERERERKyECjUiIiIiIiIiIlZChRoRERERERERESuhQo2IiIiIiIiIiJVQoUZERERERERExEqoUCMiIiIiIiIiYiVUqBERERERERERsRIq1IiIiIiIiIiIWAkVakRERERERERErIQKNSIiIiIiIiIiVkKFGhERERERERERK6FCjYiIiIiIiIiIlVChRkRERERERETESqhQIyIiIiIiIiJiJVSoERERERERERGxEirUiIiIiIiIiIhYidu+UJOSksLnn3/O6tWrC3XcQ4cO8e677xIREVGo44plab5IfmmuSEFovkh+aa5IQWi+SH5prkhBaL4Uvdu+ULN+/XrS0tJo2rRpoY5btWpV/P39WbZsWaGOK5al+SL5pbkiBaH5IvmluSIFofki+aW5IgWh+VL0butCTUpKChs2bKB+/fo4OjoW+vjNmjVj//79hIeHF/rYUvw0XyS/NFekIDRfJL80V6QgNF8kvzRXpCA0X4rHbV2o2bt3L8nJydSpU6dIxq9WrRr29vZs27atSMaX4qX5IvmluSIFofki+aW5IgWh+SL5pbkiBaH5Ujxu60LN/v37cXd3JyAgoEjGd3R0pFy5cuzbt69Ixpfipfki+aW5IgWh+SL5pbkiBaH5IvmluSIFoflSPG7bQk1GRganT5+mbNmyRbqf4OBgYmJitCBSCaf5IvmluSIFofki+aW5IgWh+SL5pbkiBaH5Unxu20JNdHQ0KSkplC5dukj3c3X8y5cvF+l+pGhpvkh+aa5IQWi+SH5prkhBaL5IfmmuSEFovhSf27ZQEx8fD4Czs3OR7sfFxcVsf1Iyab5IfmmuSEFovkh+aa5IQWi+SH5prkhBaL4Un9u2UGMYRrHsx2QyFct+pGhpvkh+aa5IQWi+SH5prkhBaL5IfmmuSEFovhSf27ZQc7VKl5iYWKT7uTq+q6trke5Hipbmi+SX5ooUhOaL5JfmihSE5ovkl+aKFITmS/G5bQs1Hh4eODg4EBkZWaT7uTq+n59fke5Hipbmi+SX5ooUhOaL5JfmihSE5ovkl+aKFITmS/G5bQs1NjY2BAcHc+7cuRzfv3z5crYJmJSUxOXLl7PdKxcVFcXly5dJT0/PNs7Zs2dxd3fHy8ur8IKXYqf5IvmluSIFofki+aW5IgWh+SL5pbkiBaH5Unxu20INQM2aNYmNjeXixYvZ3hs7diwTJkwwaztw4ABjx45l8+bNZu2zZs1i7NixxMTEmLUnJydz+vRpatasWfjBS7HTfJH80lyRgtB8kfzSXJGC0HyR/NJckYLQfCket3WhplatWjg6OrJ79+4iGf/gwYOkpqbSsGHDIhlfipfmi+SX5ooUhOaL5JfmihSE5ovkl+aKFITmS/Gws3QAluTg4EDz5s3ZtGkTbdu2xdHRMeu9UaNGZetfv3596tevn6196NChOY6/adMmqlevjq+vb6HFLJaj+SL5pbkiBaH5IvmluSIFofki+aW5IgWh+VI8busragBatGiBnZ0dmzZtKtRxDx06xMWLF+nUqVOhjiuWpfki+aW5IgWh+SL5pbkiBaH5IvmluSIFoflS9IyS9IxywzBMOVXpblejRo3CZDIVz8PsSyDNl2s0V/KmuWJO8yVvmi/XaK7kTXPFnOZL3jRfrtFcyZvmijnNl7xpvlxTkubKbX9FjYiIiIiIiIiItVChRkRERERERETESqhQIyIiIiIiIiJiJVSoERERERERERGxEirUiIiIiIiIiIhYCRVqRERERERERESshAo1IiIiIiIiIiJWQoUaEREREREREREroUKNiIiIiIiIiIiVUKFGRERERERERMRKqFAjIiIiIiIiImIlVKgREREREREREbESKtSIiIiIiIiIiFgJFWpERERERERERKyECjUiIiIiIiIiIlZChRoRERERERERESuhQo2IiIiIiIiIiJVQoUZERERERERExEqoUCMiIiIiIiIiYiVUqBERERERERERsRIq1IiIiIiIiIiIWAkVakRERERERERErIQKNSIiIiIiIiIiVkKFGhERERERERERK6FCjYiIiIiIiIiIlVChRkRERERERETESqhQIyIiIiIiIiJiJVSoERERERERERGxEirUiIiIiIiIiIhYCcNkMlk6hnyzt7e/mJaW5m/pOKyFnZ3dpdTU1ABLx2GtNF+u0VzJm+aKOc2XvGm+XKO5kjfNFXOaL3nTfLlGcyVvmivmNF/ypvlyTUmaKyWqUCMiIiIiIiIicivTrU8iIiIiIiIiIlZChRoRERERERERESuhQo2IiIiIiIiIiJVQoUZERERERERExEqoUCMiIiIiIiIiYiVUqBERERERERERsRIq1IiIiIiIiIiIWAkVakRERERERERErIQKNSIiIiIiIiIiVkKFGhERERERERERK6FCjYiIiIiIiIiIlVChRkRERERERETESqhQIyIiIiIiIiJiJVSoERERERERERGxEirUiIiIiIiIiIhYCRVqRERERERERESshAo1IiIiIiIiIiJWQoUaEREREREREREroUKNiIiIiIiIiIiVUKFGRERERERERMRKqFAjIiIiIiIiImIlVKgREREREREREbESKtSIiIiIiIiIiFgJFWpERERERERERKyECjUiIiIiIiIiIlZChRoRERERERERESuhQo2IiIiIiIiIiJVQoUZERERERERExEqoUCMiIiIiIiIiYiVUqBERERERERERsRIq1IiIiIiIiIiIWAkVakRERERERERErIQKNSIiIiIiIiIiVkKFGhERERERERERK6FCjYiIiIiIiIiIlVChRkRERERERETESvwfIiRjuduLs6QAAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(20,10))\n", + "titanic.pop('survived')\n", + "tree.plot_tree(modell, max_depth=2, feature_names=titanic.columns, class_names=['Døde', 'Overlevde'], filled=True, label=None,) \n", + "None" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- Bruk visualiseringen av modellen ovenfor til å forklare hvordan modellen vår fungerer." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Lagre og åpne modellen vår\n", + "Vi kan også lagre modellen vår, slik at vi kan bruke den seinere:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "filnavn = \"titanicmodell.sav\"\n", + "joblib.dump(modell, filnavn)\n", + "\n", + "modell = joblib.load(filnavn)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/oppgaver/modelleringsprosjekt1.ipynb b/_sources/docs/oppgaver/modelleringsprosjekt1.ipynb new file mode 100644 index 00000000..4862ad90 --- /dev/null +++ b/_sources/docs/oppgaver/modelleringsprosjekt1.ipynb @@ -0,0 +1,195 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Modelleringsoppgave I\n", + "## Smittespredning\n", + "\n", + "Vi utforsker her en modell for smittesprendning av sykdommer. Vi kan tenke oss at antall smittede indivier *I* (\"Inceptibles\") utvikler seg slik:\n", + "\n", + "$$I_{t+1} = I_t + aI_t$$\n", + "\n", + "Bildet nedenfor viser spike-proteinet som ligger på overflaten til coronaviruset, og som gir viruset dets karakteristiske form:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "scrolled": true, + "tags": [ + "remove-input" + ] + }, + "outputs": [ + { + "data": { + "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", + "text/html": [ + "
\n", + "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", + " jupyter labextension install jupyterlab_3dmol

\n", + "
\n", + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import py3Dmol\n", + "\n", + "spike_prot = py3Dmol.view(query='pdb:6B7N')\n", + "spike_prot.setStyle({'cartoon':{'color':'spectrum'}})\n", + "spike_prot" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Oppgave 1\n", + "\n", + "- Forklar med ord hva modellen sier. Hva betyr de ulike symbolene i likningen?\n", + "- I hvilke sammenhenger kan det være hensiktsmessig å bruke en slik modell? Hvilke begrensninger har modellen?\n", + "- Lag et program som simulerer smitteutviklingen over 48 uker i en populasjon med 157759 individer og en kontaktrate på 0.2 per uke. Hvis du trenger hjelp, kan du trykke på hintet nedenfor.\n", + "\n", + "````{admonition} Hint 1\n", + ":class: dropdown\n", + "En pseudokode for programmet kan være:\n", + "\n", + "```{code-block} text\n", + "# Sett opp startverdier\n", + "populasjonsstørrelse, kontaktrate og slutt-tid\n", + "antall smittede til å begynne med\n", + "\n", + "# Lag lister for å spare på verdiene\n", + "smittede = []\n", + "tid []\n", + "\n", + "gjenta til tid er lik tid_slutt:\n", + " # Beregn antall smittede vha. modellen\n", + " # Legg verdiene i lister\n", + " \n", + "plott antall smittede mot t\n", + "```\n", + "````\n", + "- Beskriv utviklingen. Varier systematisk *a* og antall smittede til å begynne med. Kommenter hva som skjer.\n", + "- Hvorfor er det viktig at kontaktraten har en *enhet* (her: uker)?\n", + "\n", + "### Oppgave 2\n", + "Vi utvider modellen ved å innføre en kategori for de som er *mottakelige*, *S* (\"susceptibles\"). Det vil si at de som allerede er smittet, ikke kan bli smittet igjen. Vi modifiserer da modellen for de smittede, slik at den også tar hensyn til den nye kategorien:\n", + "\n", + "$$I_{t+1} = I_t + aI_tS_t$$\n", + "\n", + "- Forklar hva som er endret i modellen. Hvorfor kan vi gjøre dette?\n", + "- Lag en modell for *S* (mottakelige) basert på modellen for *I*. Hint: Når en person er smittet, hva skjer med antall mottakelige?\n", + "- Utvid programmet ditt til å beregne og plotte antall mottakelige og smittede i samme koordinatsystem. Bruk merkelapper (labels og legend) slik at vi ser hvilken kurve som beskriver hva. Beskriv grafen med ord.\n", + "- Varier systematisk *a* og antall smittede til å begynne med. Kommenter hva som skjer.\n", + "- I hvilke sammenhenger kan det være hensiktsmessig å bruke en slik modell? Hvilke begrensninger har modellen?\n", + "\n", + "### Oppgave 3\n", + "Vi legger nå til muligheten for å bli frisk (hurra!). Da trenger vi også å innføre en *bedringsrate*, *b*. Et uttrykk for antall smittede kan nå være:\n", + "\n", + "$$I_{t+1} = I_t + aI_tS_t - bI_t$$\n", + "\n", + "Da får vi også følgende modell for antall friskmeldte _R_:\n", + "\n", + "$$R_{t+1} = R_t + bI_t$$\n", + "\n", + "- Forklar alle leddene i modellen for smittede og friskmeldte. Hva er betydningen til *b*? Hva kan være en ok størrelse for b i dette tilfellet? Diskuter.\n", + "- Lag en modell for antall friske med utgangspunkt i modellen ovenfor.\n", + "- Simuler og plott utviklingen. Hvis grafen ikke ser fornutftig ut, bør du eksperimentere med andre verdier av *b*.\n", + "- Beskriv grafen med ord.\n", + "- I hvilke sammenhenger kan det være hensiktsmessig å bruke en slik modell? Hvilke begrensninger har modellen?\n", + "\n", + "Det er vanskelig å fastsette parametrene *a* og *b*. Ofte fastsettes de ved å løpende sammenlikne modellene med reelle data fra observasjoner eller eksperimenter. I fila 'influensa.txt' (se \"Datafiler\" i sidemenyen) finner du en oversikt over antall smittede av influensaviruset H3N2 i en populasjon med 157 759 personer. \n", + "\n", + "- Les av fila og plott dataene sammen med modellen og prøv å variere *a* og *b* slik at modellen stemmer så godt som mulig med dataene.\n", + "- Diskuter om modellen kan si noe mer generelt om smittespredning enn akkurat dette tilfellet.\n", + "\n", + "### Oppgave 4\n", + "Vaksiner kan redusere antall mottakelige betraktelig.\n", + "- Hvordan kan du utvide modellen slik at den tar hensyn til vaksinering?\n", + "- Lag et program der du utforsker effekten av ulike grader av vaksinasjon (i %).\n", + "\n", + "### Rapport\n", + "Skriv en rapport i Jupyter notebook der du redegjør gradvis for de ulike modellene dine. Rapporten skal IKKE struktureres som svar på oppgavene ovenfor, men skal heller være en helhetlig og strukturert rapport der svar på spørsmålene ovenfor integreres på en naturlig måte. Rapporten skal følge denne malen:\n", + "\n", + "- Hensikt: Hva skal du gjøre i prosjektet. 1-2 linjer.\n", + "- Teori: Redegjør for de ulike modellene du bruker.\n", + "- Resultater: Her skal du ta med programmene du har lagd, visualiseringer og eventuelle tabeller. Det skal ikke være noen drøfting her!\n", + "- Drøfting: Her bør du drøfte forutsetninger for og begrensninger ved modellene. Hva beskriver modellene? Parameternes betydning i modellen må diskuteres her.\n", + "- Konklusjon: Gjør rede for hovedfunnet i de ulike modellene." + ] + } + ], + "metadata": { + "celltoolbar": "Edit Metadata", + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/oppgaver/modelleringsprosjekt2.ipynb b/_sources/docs/oppgaver/modelleringsprosjekt2.ipynb new file mode 100644 index 00000000..d7d1030a --- /dev/null +++ b/_sources/docs/oppgaver/modelleringsprosjekt2.ipynb @@ -0,0 +1,301 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Modelleringsoppgave II" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "I dette prosjektet skal dere modellere en naturvitenskapelig sammenheng ved å bruke differensiallikninger. Prosjektet skal presenteres på en ryddig måte med teori, programkode og drøfting i Jupyter Notebook. Oppgavene er ment som en veiledning til momenter dere bør ha med, men rapporten skal ikke struktureres etter oppgavene. Alle oppgaver og sentrale momenter skal være en integrert del av en helhetlig rapport. Dere vil bli vurdert etter følgende kriterier:\n", + "\n", + "- Koden virker og er lagt opp på en god måte.\n", + "- Koden er strukturert og oversiktlig.\n", + "- Det kommer fram at dere kan anvende grunnleggende programmering på en hensiktsmessig måte.\n", + "- Det kommer fram at dere forstår det realfaglige innholdet. \n", + "- Modellene som er brukt, er differensiallikninger.\n", + "- Rapporten er ryddig og oversiktlig. Rapporten skal ikke være inndelt etter _oppgaver_, men ha en klar struktur:\n", + " 1. Introduksjon: Hva dreier prosjektet seg om. Hva skal du vise/gjøre?\n", + " 2. Hvilke metoder bruker du? Utled metodene.\n", + " 3. Beskrivelse, resultater og drøfting: Gjør rede for framgangsmåte og programmer. Drøft de ulike modellene: Begrensninger, forutsetninger, antakelser, konsekvenser. Hva innebærer en endring av de ulike parametrene?\n", + " 5. Konklusjon: Hva har du gjort, og hvordan? Kort oppsummering.\n", + "- Alle figurer og grafer er oversiktlige med figurtekst, aksetitler o.l.\n", + "- Alle resultater er drøfta og redegjort for.\n", + "\n", + "## Oppgaver\n", + "Velg én av oppgavene nedenfor, eller foreslå en problemstilling for læreren. Problemstillingen må bli godkjent før dere går i gang med prosjektet.\n", + "\n", + "### Oppgave 1: Zombie-apokalypse (biologi)\n", + "\n", + "Denne oppgava tar utgangspunkt i å modellere og simulere en menneskepopulasjon under en zombie-apokalypse. Gjør rede for begrensninger for modellene dine, og drøft hva de forteller oss om populasjonen.\n", + "\n", + "#### Utgangspunkt\n", + "\n", + "Vi befinner oss i en postapokalyptisk situasjon der verden har blitt utsatt for et virus som gjør mennesker om til zombier. Viruset smitter kun via blod, f.eks. ved bitt eller kloring fra zombier. Vi skal studere en avsideliggende landsby, Alexandria, som ligger i nærheten av Washington D.C., og som etter et zombie-utbrudd har blitt et tilfluktssted for 500 mennesker. De har tilgang til en del mat og våpen, og de har en mur rundt hele landsbyen som holder zombiene unna. Men de må også ut for å finne nye ressurser og andre mennesker som trenger hjelp, så de er aldri helt trygge.\n", + "\n", + "#### Oppgave\n", + "\n", + "Modellen din kan inneholde mange ulike faktorer, og du står fritt til å legge til flere, dersom du begrunner det. Legg til én og én faktor, og test modellen etter hver gang. Kommenter populasjonsutviklinga etter hver nye faktor er lagt til. Her er et forslag til framgangsmåte:\n", + "\n", + "1. Lag først et program der menneskene er trygge mot zombier, og der nye mennesker kan komme til ved fødsel og (mer sannsynlig) innvandring. Lag gjerne ett ledd i likninga som inkluderer begge disse faktorene.\n", + "\n", + "2. Legg inn en ressursbegrensning (bæreevne) for populasjonen. Hvilke faktorer påvirker denne?\n", + "\n", + "3. Menneskene kan også dø av sykdom, skade og alderdom (naturlig død). Legg dette inn i modellen, og tenk på hvor sannsynlig dette er (hvor god er tilgangen på medisiner, lege o.l.?).\n", + "\n", + "4. Nå skal du legge inn en zombiepopulasjon som lever i nærheten av Alexandria. Du kan selv bestemme hvor mange zombier som finnes og hvor sannsynlig det er at mennesker blir drept av en zombie. Zombiene fungerer som rovdyr, slik at menneskene ikke blir til zombier i denne modellen.\n", + "\n", + "5. Nå kan du legge inn muligheten for at mennesker blir til zombier hvis de blir bitt, men ikke revet i fillebiter. Det vil si at noen mennesker vil bli smitta, mens andre vil bli drept av zombiene. De som blir smitta, blir til zombier, og dermed øker zombiepopulasjonen.\n", + "\n", + "6. Alexandria kan slå tilbake mot zombiene. Legg inn en faktor som bidrar til at menneskene kan ta livet av zombier.\n", + "\n", + "7. I nærheten av Alexandria finner vi landsbyene Hilltop og Kingdom. Fra disse kan det komme forsterkninger til Alexandria ved behov. Inkluder dette i modellen din." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Oppgave 2: Klimamodell 1 -- Ozonlaget (kjemi)\n", + "\n", + "Vi kan også simulere kjemiske reaksjoner ved hjelp av modeller for reaksjonsfart. Disse modellene lar oss forutsi hvordan og hvor fort en kjemisk reaksjon vil gå. Dette kan brukes til å simulere alt fra industrielle prosesser til viktige reaksjoner i miljøet. Her skal vi se på modeller som kan forutsi hvordan det vil gå med ozonlaget i framtida.\n", + "\n", + "#### Farstlover\n", + "\n", + "Modeller for reaksjonsfart kaller vi _fartslover_. En fartslov beskriver endringen i konsentrasjon i en kjemisk reaksjon. La oss ta et enkelt eksempel der vi har to reaktanter og ett produkt:\n", + "\n", + "$$A + B \\rightarrow C$$\n", + "\n", + "Fartsloven for denne reaksjonen må bestemmes eksperimentelt, og er derfor en _empirisk_ lov. For eksempel kan endringen i konsentrasjonen til C være gitt ved:\n", + "\n", + "$$\\frac{d[C]}{dt} = k[A][B]$$\n", + "\n", + "Her betyr $\\frac{d[C]}{dt}$ den deriverte av [C] med hensyn på tid (c'(t)). Det vil si at endringen i konsentrasjonen til produktet C er avhengig av konsentrasjonen til begge reaktanter i like stor grad. Men det kunne jo være at endringen i [C] varierte mer med [A] enn med [B], eller for eksempel ikke med [A] i det hele tatt. Da kunne vi henholdsvis fått disse modellene:\n", + "\n", + "$$\\frac{d[C]}{dt} = k[A]^2[B]$$\n", + "\n", + "$$\\frac{d[C]}{dt} = k[B]$$\n", + "\n", + "Eksperimenter avgjør hvilken form vi gir fartslovene. Og dersom endringen av [C] er gitt ved $\\frac{d[C]}{dt} = k[A][B]$, kan vi ut fra reaksjonslikningen utlede følgende sammenhenger (forklar hvorfor!):\n", + "\n", + "$$\\frac{d[A]}{dt} = -k[A][B]$$\n", + "\n", + "$$\\frac{d[B]}{dt} = -k[A][B]$$\n", + "\n", + "#### Fartslover for dannelse og nedbrytning av ozon i stratosfæren\n", + "\n", + "Den såkalte _Chapman-modellen_ kan benyttes for å simulere produksjon og nedbrytning av ozon i stratosfæren. Den er basert på følgende reaksjonslikninger med tilhørende reaksjonskoeffisienter:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$O_2 \\xrightarrow{uv} 2O$$\n", + "$$O_2 + O + M \\rightarrow O_3 + M$$\n", + "$$O_3 \\xrightarrow{uv'} O + O_2$$\n", + "$$O + O_3 \\rightarrow 2O_2$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "hvor O, O$_2$ og O$_3$ er henholdsvis oksygen, dioksygen og ozon. M er en ikke-reagerende støtpartner, mens $h \\nu$ og $h \\nu '$ er energi tilført av UV-stråling med bølgelengde, $\\lambda$, under 242 nm og 336 nm, henholdsvis.\n", + "\n", + "Den første reaksjonslikningen beskriver spaltingen av O$_2$ til 2 O-atomer som resultat av UV-stråling. Den andre reaksjonslikningen viser den påfølgende reaksjonen mellom O$_2$ og O som krever en kollisjon med M for å danne O$_3$, mens de to siste reaksjonslikningene viser hvordan O$_3$ brytes ned henholdsvis som resultat av UV-stråling for å danne O og O$_2$, og gjennom reaksjon med O for produksjon av 2 O$_2$-molekyler.\n", + "\n", + "Fartslovene for [O], [O$_2$] og [O$_3$] er gitt ved henholdsvis\n", + "\n", + "$$\\frac{d[\\textrm{O}]}{dt} = 2 k_1 [\\textrm{O}_2] - k_2 [\\textrm{O}_2] [\\textrm{O}] [\\textrm{M}] + k_3 [\\textrm{O}_3] - k_4 [\\textrm{O}] [\\textrm{O}_3$$\n", + "\n", + "$$\\frac{d[\\textrm{O}_2]}{dt} = - k_1 [\\textrm{O}_2] - k_2 [\\textrm{O}_2] [\\textrm{O}] [\\textrm{M}] + k_3 [\\textrm{O}_3] + 2 k_4 [\\textrm{O}] [\\textrm{O}_3]$$\n", + "\n", + "$$\\frac{d[\\textrm{O}_3]}{dt} = k_2 [\\textrm{O}_2] [\\textrm{O}] [\\textrm{M}] - k_3 [\\textrm{O}_3] - k_4 [\\textrm{O}] [\\textrm{O}_3]$$\n", + "\n", + "Ratekonstantene er gitt som følger:\n", + "\n", + "$$k_1 = 3.0 \\times 10^{-12} \\textrm{ s}^{-1}$$\n", + "$$k_2 = 1.2 \\times 10^{-33} \\textrm{ cm}^6 \\textrm{ molekyler}^{-2} \\textrm{ s}^{-1}$$\n", + "$$k_3 = 5.5 \\times 10^{-4} \\textrm{ s}^{-1}$$\n", + "$$k_4 = 6.9 \\times 10^{-16} \\textrm{ cm}^3 \\textrm{ molekyler}^{-1} \\textrm{ s}^{-1}$$\n", + "\n", + "Ratekonstantene er gitt ved omtrent 25 km høyde, hvor $[\\textrm{M}] \\approx 9.0 \\times 10^{17}$ molekyler cm$^{-3}$. Systemet har følgende initialbetingelser:\n", + "\n", + "$$[\\textrm{O}_2]_{t=0} = 0.21[\\textrm{M}]$$\n", + "$$[\\textrm{O}]_{t=0} = 0$$\n", + "$$[\\textrm{O}_3]_{t=0} = 0$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Oppgaver\n", + "\n", + "a) Lag et program som beregner og plotter [O$_3$] og [O] som funksjon av tid i intervallet $t \\in [0,100]$ ved å benytte Forward Euler-algoritmen på fartslovene i teoridelen med de gitte initialbetingelsene og tidssteg $h = 0.001$. Plott med logaritmisk skala på $y$-aksen (_plt.yscale('log')_).\n", + "\n", + "b) Beregn og plott de samme verdiene med en backward-metode ('BDF) ved å bruke funksjonen _scipy.integrate.solve\\_ivp_ fra Scipy-biblioteket for $t \\in [0,10^8]$. Evaluer punktene for t = np.linspace(t0,tid_slutt,int(1E6)).\n", + "\n", + "c) Legg til justeringer i modellen eller søk og finn andre modeller du kan bruke. Ideer til endringer kan være å innkludere et økt utslipp av KFK-gasser (begrunn eventuelt hvorfor) og sammenlikninger av modellen med data og med andre modeller på internett." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Oppgave 3: Klimamodell II -- Drivhuseffekten (fysikk)\n", + "\n", + "Det som hovedsakelig varmer opp planeten vår, er sollys. Sola sender ut energi i form av elektromagnetisk stråling som treffer jordkloden. All elektromagnetisk stråling som treffer toppen av atmosfæren, har blitt målt til ca 1361 kW/m$^2$ Hvor mye energi som treffer toppen av atmosfæren er nesten konstant, og har bare variert med 0.2 prosent på 400 år. Strålingen blir kalt for _solkonstanten_ (K$_s$).\n", + "\n", + "![sunlight_angle.png](https://www.uio.no/studier/emner/matnat/ifi/IN-KJM1900/h20/datafiler/sunlight_angle.png)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Energien som treffer planeten kan beregnes slik:\n", + "\n", + "$$ E_{inn} = K_s \\cdot \\pi R_{jorda}^2$$\n", + "\n", + "a) Forklar hva vi forutsetter om modellen vår dersom vi bruker uttrykket ovenfor til å beregne hvor mye energi som treffer jorda.\n", + "\n", + "Ikke all energi som treffer jorda, blir absorbert av jordas overflate. En del energi reflekteres tilbake på grunn av jordas _albedo_. Den absorberte energien kan beregnes slik:\n", + "\n", + "\n", + "$$E_{absorbert} = K_s \\cdot (1 - albedo) \\cdot \\pi R{_E}^2$$\n", + "\n", + "b) Forklar hvorfor vi kan uttrykke den absorberte energien som ovenfor.\n", + "c) Beregn energien som treffer jorda, og energien som jorda absorberer. Hvor mange prosent blir absorbert?\n", + "\n", + "Alle legemer sender også ut (emitterer) energi. Dette kan beskrives med Stefan-Boltzmann-loven:\n", + "\n", + "$$\\phi=\\sigma T^4$$\n", + "\n", + "$\\sigma$ er Stefan-Boltzmann constant. $\\sigma = 5.670373 \\cdot 10^{-8} W / (m^2K^4)$\n", + "\n", + "$$E_{emittert} = \\sigma T^4 \\cdot 4\\pi R{_E}^2$$\n", + "\n", + "På grunn av energiprinsippet, loven om at energi er konstant, må energi inn på planeten være det samme som energi ut. Da har vi at:\n", + "\n", + "$$ E_{absorbert}= E_{emittert}$$\n", + "\n", + "d) Bruk dette energiprinsippet og uttrykkene ovenfor til å finne et uttrykk for den gjennomsnittlige temperaturen til jordkloden. Kommenter svaret og forklar hvilken modell du nå har brukt. \n", + "\n", + "Modellen vi nå har brukt, tar ikke hensyn til atmosfæren. Når vi legger til atmosfæren, kan vi først gjøre følgende forenklinger:\n", + "\n", + "1) Atmosfæren har en konstant temperatur. Det vil si at vi modeller atmosfæren som en stor blokk hvor hele blokken har den samme temperaturen.
\n", + "2) Atmosfæren er fullstendig gjennomsiktig for stråling fra sola. Det vil si at all stråling fra sola treffer jordoverflaten.
\n", + "3) Atmosfæren tar imot all strålinga fra jorden.\n", + "\n", + "![Atmosfære.png](https://www.uio.no/studier/emner/matnat/ifi/IN-KJM1900/h20/datafiler/atmosferestraling.png)\n", + "\n", + "e) Legg til atmosfæren i modellen din. Du må fortsatt bruke energibevaring som utgangspunkt, men beregne energi inn og ut av atmosfæren hver for seg. Da får du to likninger som du kan kombinere for å få en løsning or temperaturen.\n", + "\n", + "f) Nå kan du legge til flere faktorer i modellen din, f.eks. flere lag i atmosfæren. Her kan du lage modeller selv, eller du kan søke opp informasjon om ulike klimamodeller. Finn temperaturen for hver modell, og drøft modellene og resultatene underveis." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Oppgave 4: Solsystemet (fysikk)\n", + "Solsystemet har lenge vært til fascinasjon og undring for mennesker. Selv i et så stort system som solsystemet kan en simulere planetenes baner med god tilnærming ved å kun bruke Newtons lover!\n", + "\n", + "#### Teoretisk bakgrunn\n", + "\n", + "Hvis vi ser på kraften som virker mellom to planeter, en med masse $m_1$ og én med masse $m_2$, kan vi bruke Newtons _universelle gravitasjonslov_. Loven forteller oss at for to legemer med masse $m_1$ og $m_2$ som kan ansees å ha perfekt kuleform, er kraften mellom dem $F = \\frac{Gm_1m_2}{r^2}$. Vi bruker denne loven til å finne kreftene som virker på dem. Vi kan anta at planetene beveger seg i to dimensjoner, det vil si langs $x$- og $y$-aksen. Hvis du vil ha en mer realistisk simulering ved å inkludere en tredje dimensjon, dvs. $z$-aksen, er det mulig å utvide modellen med å gjøre akkurat det samme for $z$-aksen som modellen har gjort for $x$- og $y$-aksen, men dette er valgfritt. Kraften som virker på en planet med masse $m_1$ langs $x$- og $y$-aksen, $F_{x}$ og $F_{y}$, blir påvirka av en planet med masse $m_2$. Kreftene langs $x$- og $y$-aksen kan uttrykkes ved:\n", + "\n", + "$$F_{x} = -\\frac{G\\cdot m_1\\cdot m_2\\cdot x(t)}{r^3}$$\n", + "\n", + "$$F_{x} = -\\frac{G\\cdot m_1\\cdot m_2\\cdot x(t)}{\\left((x(t) - x_2(t))^2 + (y(t) - y_2(t))^2\\right)^{\\frac{3}{2}}}$$\n", + "\n", + "$$F_{y} = -\\frac{G\\cdot m_1\\cdot m_2\\cdot y(t)}{r^3}$$\n", + "\n", + "$$F_{y} = -\\frac{G\\cdot m_1\\cdot m_2\\cdot y(t)}{\\left((x(t) - x_2(t))^2 + (y(t) - y_2(t))^2\\right)^{\\frac{3}{2}}}$$\n", + "\n", + "der $G$ er gravitasjonskonstanten, $r$ er avstanden mellom planetene og $x(t)$ og $y(t)$ er posisjonen til planeten med masse $m_1$ langs henholdsvis $x$- og $y$-aksen etter ei tid $t$. Vi har også at $x_2(t)$ og $y_2(t)$ er posisjonen til planeten med masse $m_2$ langs henholdsvis $x$- og $y$-aksen etter ei tid $t$. \n", + "\n", + "#### Oppgaver\n", + "1. Vis at akselerasjonen $a_{x}(t)$ og $a_y(t)$ til en planet med masse $m_1$ langs henholdsvis $x$- og $y$-aksen er:\n", + "\n", + "\t$$a_x(t) = -\\frac{G\\cdot m_2\\cdot x(t)}{r^3}$$\n", + "\t$$a_y(t) = -\\frac{G\\cdot m_2\\cdot y(t)}{r^3}$$\n", + " \n", + "\n", + "2. Forklar hvorfor vi får at disse likningene må løses for å finne posisjonene $x(t)$ og $y(t)$:\n", + "\t\n", + " $$x'(t) = v_x(t)$$\n", + "\t$$y'(t) = v_y(t)$$\t\n", + "\t$$v_x'(t) = -\\frac{G\\cdot m_2\\cdot x(t)}{r^3}$$\n", + "\t$$v_y'(t) = -\\frac{G\\cdot m_2\\cdot y(t)}{r^3}$$\n", + "\n", + "\tder $v_x(t)$ og $v_y(t)$ er farten til planeten med masse $m_1$. \n", + "\n", + " Nå skal vi se på et solsystem som består av kun jorda og sola. Modellen antar at sola står stille. Du kan derfor fokusere på hvordan jordas bane blir påvirket av sola.\n", + "\n", + " I denne modellen lar vi jordas masse $m_1 = 3\\cdot 10^{-6}$ solmasser og solas masse $m_2 = 1$ solmasse. Solmasser er en enhet som forteller stor en planet er i forhold til sola. Ved å bruke AU (enhet brukt som den gjennomsnittlige avstanden mellom sol og jord) og år som enheter i vår modell, kan vi finne at $G = 4\\pi^2$.\n", + "\n", + " La startbetingelsene til jorda være $x(0) = 1$, $y(0) = 0$, $v_x(0) = 0$ og $v_y(0) = 2\\pi$. Sola kan stå i origo. Det betyr at i dette tilfellet vil $x_2(t) = 0$ og $y_2(t) = 0$ for alle tider $t$.\n", + " \n", + "3. Skriv et program som først bruker Eulers metode til å finne jordas bane rundt sola for ett år ved å bruke $N = 1000$ tidssteg. La programmet plotte banen. \n", + "\t\n", + "4. Euler-Cromers metode er en liten justering av Eulers metode. Finn ut hva som menes med denne metoden. Skriv om programmet fra deloppgave c) slik at det bruker Euler-Cromer isteden med samme verdi for $N$. Hvordan er plottet nå, sammenlikna med plottet fra deloppgave c)?\n", + "\n", + " Men vi kan jo ikke ha bare én planet i solsystemet vårt! Nå skal vi se på hvordan simuleringa kan være dersom vi har med flere planeter i solsystemet. Merk at $x_2(t)$ og $y_2(t)$ nå vil være avhengig av hvilken planet vi ser på. Du kan fortsatt anta at sola står stille.\n", + " \n", + "\n", + "5. Skriv et program som modellerer planetenes bane for $P$ planeter. Du kan gjerne bruke fila [planetermalstruktur.py](https://raw.githubusercontent.com/andreasdh/Programmering-og-modellering/master/docs/programmer/planetermalstruktur.py) som forslag til programstruktur i programmet ditt, men du kan også utvide programmet ditt fra d). Hvis du skriver om programmet ditt fra d), er det viktig at det greier å lese en datafil med info over planetenes startposisjon, startfart og masse.\n", + "\t\n", + " Forslaget til programstrukturen henter ut eksempeldata fra ei fil som heter [_planeter\\_data.dat_](https://raw.githubusercontent.com/andreasdh/Programmering-og-modellering/master/docs/Datafiler/planeter.dat). Tallene er henta fra NASA og har blitt noe modifisert. Du kan finne sida her: https://ssd.jpl.nasa.gov/horizons.cgi. Sola er ikke tatt med, da simuleringa antar at den står i origo og ikke beveger seg.\n", + " \n", + "\t__Kommentar til struktur:__\n", + " \n", + " Vi har ikke jobba så mye med matrisestrukturer. Tankegangen bak strukturen til _pos_ og _fart_ i [planetermalstruktur.py](https://raw.githubusercontent.com/andreasdh/Programmering-og-modellering/master/docs/programmer/planetermalstruktur.py) kan illustreres slik: \n", + " \n", + " \"Matriser\" \n", + " \n", + " Illustrasjon viser tankegangen bak _pos_, som er helt den samme for _fart_. Her kan en tenke at vi lagrer informasjonen over planetene i et arkiv. Det $j$-te \"arket\" med informasjon til den $j$-te planeten hentes ut ved _pos[:,:,$j$]_. Skal vi se hvor den $j$-te planeten befinner seg langs både $x$- og $y$-aksen ved et tidssteg $i$, bruker vi _pos[$i$,:,$j$]_. Skal vi for eksempel bare se på $x$-verdien til den $j$-te planeten ved tidssteg $i$, bruker vi _pos[$i$,0,$j$]_, og _1_ istedenfor _0_ dersom vi skal se på $y$-verdien.\n", + "\n", + "\tDu kan sjekke om simuleringa di gir følgende planetbaner etter ett år ved å bruke informasjonen fra fil [_planeter\\_data.dat_](https://raw.githubusercontent.com/andreasdh/Programmering-og-modellering/master/docs/Datafiler/planeter.dat). Fildataene gir følgende resultater av simuleringa etter ett år:\n", + " \n", + " \"Planetbaner\"\n", + "\n", + "6. Bruk _pygame_ til å visualisere planetenes bane rundt sola. Du får et forslag til hvordan programstrukturen kan være, men utvid gjerne med mer om du har lyst. Her er det kun fantasien som setter grenser! Et forslag til programstruktur har filnavnet [_planetermalpygame.py_](https://raw.githubusercontent.com/andreasdh/Programmering-og-modellering/master/docs/programmer/planetermalpygame.py)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.12" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/oppgaver/statistikkprosjekt.ipynb b/_sources/docs/oppgaver/statistikkprosjekt.ipynb new file mode 100644 index 00000000..65af57af --- /dev/null +++ b/_sources/docs/oppgaver/statistikkprosjekt.ipynb @@ -0,0 +1,43 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "639adf89", + "metadata": {}, + "source": [ + "# Statistikkprosjekt\n", + "\n", + "Vårt første modelleringsprosjekt er et prosjekt der du skal samle inn et datasett og gjøre statistisk analyse og regresjonsanalyse med disse dataene. Oppgaven går ut på følgende:\n", + "\n", + "1. Samle inn data. Du bør måle minst 4 variabler og samle inn minst 25 målepunkter for hver av de fire variablene. Du kan bruke sensorer, spørreundersøkelser eller tilsvarende. Lagre dataene i en .txt-fil, .csv-fil eller .xlsx-fil (Excel). Hvis du finner et veldig godt datasett på internett som du heller ønsker å bruke, spør læreren om dere kan bruke det isteden.\n", + "2. Les dataene i Python og lag relevante visualiseringer som beskriver hva datasettet forteller oss.\n", + "3. Beregn relevante mål på sentraltendens og spredning. Presenter resultatene i en oversiktlig tabell. Forklar hva disse målene forteller om dataene dine. Lag gjerne visualiseringer som beskriver spredningen.\n", + "4. Regn ut korrelasjoner i datasettet og lag et korrelasjonsplott. Diskuter eventuelle korrelasjoner.\n", + "5. Gjør en lineær regresjon av to variabler der en lineær modell kan beskrive sammenhengen mellom variablene. Diskuter modellen.\n", + "\n", + "Prosjektet leveres som fullstendig rapport (lever en .ipynb-fil og .pdf av notebooken)." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/_sources/docs/programmering_intro.ipynb b/_sources/docs/programmering_intro.ipynb new file mode 100644 index 00000000..80e580f7 --- /dev/null +++ b/_sources/docs/programmering_intro.ipynb @@ -0,0 +1,235 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Programmering - en liten start\n", + "Programmering dreier seg om å få datamaskinen til å gjøre det vi ønsker. Her skal vi bruke programmeringsspråket Python til å utforske geometriske mønstre. Først får du en innføring i hvordan du kan bruke variabler og print-funksjonen. Deretter ser vi på hvordan du kan bruke løkker til å gjenta kode.\n", + "\n", + "## Variabler\n", + "\n", + "```{admonition} Variabel\n", + "En programmeringsvariabel er en størrelse som lagrer en verdi i et program.\n", + "```\n", + "\n", + "Du kan tenke på en variabel som en boks vi kan putte ting i, og som vi kan modifisere, endre og hente informasjon fra underveis.\n", + "\n", + "```{admonition} Oppgave\n", + ":class: tip\n", + "Nedenfor er et eksempel på en programkode i Python der vi beregner gjennomsnittshastigheten i m/s for ulike legemer som har beveget seg henholdsvis 3, 4.5, 7 og 14 meter i løpet av 3 sekunder. Hva er fordelen med å bruke variablen _t_ her?\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "t = 3\n", + "\n", + "v1 = 3/t\n", + "v2 = 4.5/t\n", + "v3 = 7/t\n", + "v4 = 14/t" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For å få noe ut av programmet vårt, må vi be datamaskinen om å \"skrive ut\" noe. Dette gjør vi med funksjonen _print_. Dersom vi ønsker å skrive ut flere variabler, må vi skille dem med komma i print-kommandoen. Her ser du to eksempler:\n", + "\n", + "\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Eksperimenter med programmet ovenfor og forklar hvordan print fungerer.\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Løkker\n", + "\n", + "Den kanskje viktigste strukturen i programmering er løkker. De lar datamaskinen gjenta en operasjon så mange ganger vi vil. Det er dette som er datamaskinens styrke.\n", + "\n", + "```{admonition} Løkker\n", + "En løkke er en struktur som gjør at vi kan gjenta kode. Ofte skiller vi mellom en _telleløkke_, som gjentar noe et visst antall ganger, og en _tilstandsløkke_, som gjentar seg så lenge noe er sant. I Python heter disse henholdsvis _for_-løkke og _while_-løkke.\n", + "```\n", + "\n", + "## Skilpaddegrafikk\n", + "Vi skal se hvordan løkker fungerer ved å introdusere deg for en skilpadde. Han heter Gunnar. Her er han:\n", + "\n", + "\n", + "\n", + "Gunnar følger enkle kommandoer, som \"forward\", \"backward\", \"right\" og \"left\".\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Endre programmet ovenfor slik at Gunnar tegner en trekant. Hva er sammenhengen mellom vinkelen som skilpadden snur og vinklene i trekanten?\n", + "```\n", + "\n", + "### Skilpadder i løkker\n", + "Å tegne en trekant krever få linjer kode, men hva hvis du vil tegne en åttekant, en førtitokant, eller en nittisekskant? Det er slitsomt og kjedelig å skrive samme kommando hundrevis av ganger. Og det er totalt unøvdendig. Vi bruker nemlig løkker til å gjenta kode, for eksempel slik:\n", + "\n", + "\n", + "\n", + "```{admonition} Oppgave\n", + ":class: tip\n", + "Prøv å forklare hvordan programmet ovenfor fungerer. \n", + "```\n", + "\n", + "```{admonition} Løsning\n", + ":class: tip, dropdown\n", + "Helt enkelt kan vi si at løkka repeterer alt som står rykket inn (med tab) _n_ ganger. \n", + "```\n", + "```{admonition} Mer komplisert/grundig løsning\n", + ":class: tip, dropdown\n", + "Vi kan forklare programmet ovenfor litt grundigere med at \"for i in range(n)\" betyr at for hver verdi av en variabel _i_, skal løkka gjentas. Variabelen _i_ får hver verdi i intervallet [0, 1, 2, 3, ..., n-1], som lages med funksjonen _range_. Det betyr at første gang løkka kjører, er $i = 0$, andre gang $i = 1$ og så videre. Løkka gjentas helt til $i = n - 1$, altså til, men ikke med verdien _n_.\n", + "```\n", + "\n", + "```{admonition} Oppgave\n", + ":class: tip\n", + "Modifiser programmet ovenfor slik at skilpadden Gunnar tegner en 20-kant.\n", + "```\n", + "\n", + "```{admonition} Oppgave\n", + ":class: tip\n", + "Få Gunnar til å tegne en blomst!\n", + "```\n", + "\n", + "```{admonition} Oppgave\n", + ":class: tip\n", + "Få Gunnar til å tegne en blomst!\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Litt mer om løkker\n", + "Vi har to typer løkker i Python: while-løkker (tilstandsløkker) og for-løkker (telleløkker). I programmene ovenfor har vi brukt en for-løkke, som teller et visst antall ganger. While-løkker gjentar derimot noe helt til et kriterium er nådd. Her er et eksempel:\n", + "\n", + "\n", + "\n", + "Programmet kjører så lenge variabelen _partall_ har en verdi som er mindre enn eller lik 10. Alt som er rykket inn, gjentas hver gang løkka går. Programmet skriver derfor ut alle positive partall (og 0) som er mindre enn eller lik 10.\n", + "\n", + "```{admonition} Oppgave\n", + ":class: tip\n", + "Modifiser programmet ovenfor slik at programmet skriver ut alle positive _oddetall_ under 10.\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Oppgaver\n", + "`````{tabbed} Grunnleggende\n", + "````{admonition} Oppgave 4.1\n", + ":class: tip\n", + "Sammenlikn programmene nedenfor. Beskriv eventuelle forskjeller og likheter.\n", + "\n", + "```{code-block} Python\n", + "partall = 0\n", + "\n", + "for i in range(5):\n", + " partall = partall + 2\n", + " print(partall)\n", + "```\n", + "```{code-block} Python\n", + "partall = 0\n", + "\n", + "while partall < 10:\n", + " partall = partall + 2\n", + " print(partall)\n", + "```\n", + "````\n", + "\n", + "```{admonition} Oppgave 4.2\n", + ":class: tip\n", + "Programmet nedenfor skal finne summen av de 100 første tallene i en tallfølge der hvert ledd er den dobbelte av det forrige. Forklar hvordan programmet fungerer. Endre gjerne på ulike variabler og test hva utfallet blir for å forstå hvordan programmet fungerer.\n", + "```\n", + "\n", + "\n", + "\n", + "\n", + "```{admonition} Oppgave 4.3\n", + ":class: tip\n", + "Skriv om programmet ovenfor slik at du benytter en while-løkke istedenfor en for-løkke.\n", + "```\n", + "\n", + "````{admonition} Oppgave 4.4\n", + ":class: tip\n", + "Hva skrives ut i følgende program? Prøv å undersøke dette for hånd. Til slutt kan du sjekke ved å kopiere programmet inn i en editor og kjøre det.\n", + "\n", + "```{code-block} Python\n", + "a = 0\n", + "\n", + "for i in range(5):\n", + " b = a*i\n", + " print(b)\n", + " a = a + 1\n", + "print(a)\n", + "```\n", + "````" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Videoer\n", + "I videoene nedenfor kan du få en innføring eller repetisjon i den grunnleggende teorien bak løkker:\n", + "\n", + "````{tabbed} For-løkker\n", + "\n", + "\n", + "Når du har sett videoen, kan du gjøre følgende oppgave for å sjekke om du forstår innholdet:\n", + "\n", + "```{admonition} Oppgave\n", + ":class: tip\n", + "Skriv et program som regner ut summen av tallene fra og med 1 til og med 449 ved hjelp av en for-løkke.\n", + "```\n", + "````\n", + "````{tabbed} While-løkker\n", + "\n", + "\n", + "Når du har sett videoen, kan du gjøre følgende oppgave for å sjekke om du forstår innholdet:\n", + "\n", + "```{admonition} Oppgave\n", + ":class: tip\n", + "Skriv et program som regner ut summen av tallene fra og med 1 til og med 449 ved hjelp av en while-løkke.\n", + "```\n", + "````" + ] + } + ], + "metadata": { + "celltoolbar": "Edit Metadata", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/tema1_grunnleggende_programmering/grunnleggende_programmering.ipynb b/_sources/docs/tema1_grunnleggende_programmering/grunnleggende_programmering.ipynb new file mode 100644 index 00000000..8cc12763 --- /dev/null +++ b/_sources/docs/tema1_grunnleggende_programmering/grunnleggende_programmering.ipynb @@ -0,0 +1,786 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Grunnleggende programmering (oppgaver)\n", + "Her er litt teori og oppgaver som kan hjelpe deg å komme i gang med det viktigste innen realfaglig programmering. Bruk gjerne de innebygde kodeboksene til å lage og kjøre programmer underveis.\n", + "\n", + "## 1. Variabler\n", + "\n", + "```{admonition} Variabel\n", + "En programmeringsvariabel er en størrelse som lagrer en verdi i et program.\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Den kinetiske energien er: 4 J.\n" + ] + } + ], + "source": [ + "m = 1 # Masse\n", + "v = 2 # Hastighet\n", + "\n", + "kinetisk_energi = m*v**2\n", + "\n", + "print(\"Den kinetiske energien er:\", kinetisk_energi, \"J.\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Vi kan også bruke matematiske funksjoner som kvadratrot og trigonometriske funksjoner. Da må vi importere et bibliotek som inneholder disse funksjonene. Det enkleste er å importere alt fra biblioteket pylab. Det gjør vi slik:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Kvadratrota av 4 er: 2.0 Sinus til 30 grader er: 0.49999999999999994\n" + ] + } + ], + "source": [ + "from pylab import *\n", + "\n", + "kvadratrot = sqrt(4)\n", + "sinus = sin(radians(30))\n", + "\n", + "print(\"Kvadratrota av 4 er:\", kvadratrot, \"Sinus til 30 grader er:\", sinus)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Merk at vi måtte gjøre om vinkelmålet til radianer (som er et vinkelmål man lærer om i R-matte) til grader. Det samme prinsippet gjelder for øvrig i GeoGebra." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```{admonition} Oppgave 1.1\n", + ":class: tip\n", + "Bruk kodeboksen nedenfor til å lage relevante variabler slik at programmet regner ut arealet av en trekant med grunnlinje 4 og høyde 2. Programmet inneholder litt kode fra før til å hjelpe deg på vei.\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "g = 4\n", + "h = 2\n", + "A = g*h/2\n", + " \n", + "print(\"Arealet til trekanten er:\", A)\n", + "```\n", + "````\n", + "\n", + "\n", + "```{admonition} Oppgave 1.2\n", + ":class: tip\n", + "Lag et program som regner ut radius til en sirkel med arealet 4.\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "A = 4\n", + "pi = 3.1415 # Vi skal se hvordan vi kan bruke en forhåndsdefinert pi seinere\n", + "r = (A/pi)**0.5 # Vi skal se på hvordan vi kan ta rota uten å opphøye i 0.5 seinere\n", + " \n", + "print(\"Radius til sirkelen er:\", r)\n", + "```\n", + "````\n", + "\n", + "```{admonition} Ekstra: Oppgave 1.3\n", + ":class: tip\n", + "For å ta input fra brukeren av programmet istedenfor å skrive variabelverdier rett inn i programmet, kan vi bruke input-funksjonen til Python.\n", + "\n", + "tall = float(input(\"Skriv et tall: \"))\n", + "\n", + "Lag et program som bruker en formel fra matematikken til å regne ut noe. Bruk input-funksjonen til å hente variabelverdier fra brukeren. Hvis du lurer på hva \"float\"-kommandoen foran _input_ gjør, kan du lese mer om det i 1.1 nedenfor.\n", + "```\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 1.1 Variabeltyper\n", + "I matematikk har vi ulike tallmengder, som _reelle tall_, _irrasjonale tall_, _rasjonale tall_, _naturlige tall_, _hele tall_ og _komplekse tall_. Disse tallmengdene er uendelig store, som betyr at de ikke kan eksistere på en datamaskin. Vi har derfor en del andre tallmengder og variabeltyper. For eksempel heter desimaltall _float_ fordi ikke alle desimaltall er representert på en datamaskin. Det er altså en annen tallmengde. De viktigste variabeltypene ser du her:\n", + "\n", + "| Datatype | Forklaring |Eksempel |\n", + "|--------|----------------------|-------------|\n", + "| Heltall (int) | Hele tall | 42 |\n", + "| Flyttall (float) | Desimaltall | 3.1415 |\n", + "| Streng (str) | Tekst | \"Hei!\"|\n", + "| Boolsk | Sannhet |True eller False |\n", + "\n", + "Når vi ønsker input fra en bruker av et program, må vi spesifisere hvilken variabeltype vi ønsker at inputen skal bli tolket som. Standard er tekst, men hvis vi for eksempel \"adderer\" teksten \"4\" med \"2\", får vi \"42\", mens tallet 4 + tallet 2 gir tallet 6. Eksempelet nedenfor illustrerer dette." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Skriv et tall: 4\n", + "Skriv et tall til: 2\n", + "Summen av teksten er: 42 og summen av tallene er: 6.0\n" + ] + } + ], + "source": [ + "tekst1 = input(\"Skriv et tall: \")\n", + "tekst2 = input(\"Skriv et tall til: \")\n", + "\n", + "tall1 = float(tekst1)\n", + "tall2 = float(tekst2)\n", + "\n", + "tullsvar = tekst1 + tekst2\n", + "tallsvar = tall1 + tall2\n", + "\n", + "print(\"Summen av teksten er:\", tullsvar, \"og summen av tallene er:\", tallsvar)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Input er ikke nødvendig for annet enn å lage et mer interaktivt program. Men hvis du lager et program med input, bør du legge til input helt til slutt. Start med å gi variablene verdier, og test at programmet fungerer. Deretter kan du bruke input på de variablene du ønsker. Dette er for å unngå å måtte taste inn input-verdier hver gang du kjører programmet ditt, spesielt hvis det inneholder feil du må rette opp!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2. Vilkår (if-tester)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```{admonition} Vilkår (if-test)\n", + "Et vilkår, eller en betingelse, er en logisk test for å sjekke om et kriterium er oppfylt. Dersom kriteriet er oppfylt, utføres det en handling. Dersom kriteriet ikke er oppfylt, blir ikke handlingen utført.\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tallet er passe stort.\n" + ] + } + ], + "source": [ + "tall = 42\n", + "\n", + "if tall < 5:\n", + " print(\"Tallet er veldig lite.\")\n", + "elif tall < 20:\n", + " print(\"Tallet er ganske lite.\") \n", + "elif tall < 50:\n", + " print(\"Tallet er passe stort.\")\n", + "elif tall < 100:\n", + " print(\"Tallet er ganske stort.\")\n", + "else:\n", + " print(\"Tallet er enormt!\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Det er noen ting å huske på her:\n", + "- Alt som er rykket inn utføres kun hvis if-testen ovenfor er sann. Innrykk er derfor viktig for strukturen.\n", + "- \"elif\" står for \"else if\", og sjekker noe nytt, mens \"else\" brukes for å gjøre noe dersom ingen av kriteriene under \"if\" og \"elif\" er sanne.\n", + "- Det er den første if-testen som er sann i en serie av if-elif-else som utføres. Alle andre overses. Dersom vi skriver \"if\" en gang til, begynner vi på en ny serie med if-elif-else.\n", + "- Vi _må_ begynne med \"if\", mens \"elif\" og \"else\" er valgfritt.\n", + "- De logiske operatorene vi kan velge mellom, er:\n", + "\n", + "| Symbol | Betydning |\n", + "|--------|----------------------|\n", + "| > | større enn |\n", + "| < | mindre enn |\n", + "| == | lik |\n", + "| != | ikke lik |\n", + "| <= | mindre enn eller lik |\n", + "| >= | større enn eller lik |" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```{admonition} Oppgave 2.1\n", + ":class: tip\n", + "Lag et program der du sjekker om et tall er positivt, negativt eller null, og skriver ut relevante setninger. Du kan ta utgangspunkt i programkoden i kodeboksen her:\n", + "```\n", + "\n", + "\n", + "```{admonition} Oppgave 2.2\n", + ":class: tip\n", + "Lag et program med en variabel kalt pH. Programmet skal skrive ut om løsningen med denne pH-en er sur, basisk eller nøytral.\n", + "```\n", + "\n", + "```{admonition} Oppgave 2.3\n", + ":class: tip\n", + "Forklar hvorfor de to ulike programmene nedenfor gir ulike output.\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "17\n" + ] + } + ], + "source": [ + "a = 10\n", + "if a > 5:\n", + " a = a + 5\n", + "a = a + 2\n", + "print(a)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "15\n" + ] + } + ], + "source": [ + "s" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```{admonition} Oppgave 2.4\n", + ":class: tip\n", + "I et programmeringspuslespill skal du bruke ferdige kodeblokker til å pusle sammen et program. [Dette puslespillet](http://parsons.problemsolving.io/puzzle/6e30d3320c8e4ba69b61a0e302754a3c) skal bli et program som skal regne ut hvor mange løsninger en andregradslikning på formen $ax^2 + bx + c = 0$ har. Prøv å sette sammen puslespillet. Pass på innrykk og rekkefølge! Hvis du blir fort ferdig, kan du prøve [denne varianten](http://parsons.problemsolving.io/puzzle/a56e0f5a917a4079aadffb571c3d411e). Hvis du har mer tid til overs, kan du jo prøve å lage programmet selv!\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3. Løkker\n", + "\n", + "Den kanskje viktigste strukturen i programmering er løkker. De lar datamaskinen gjenta en operasjon så mange ganger vi vil. Det er dette som er datamaskinens styrke.\n", + "\n", + "```{admonition} Løkker\n", + "En løkke er en struktur som gjør at vi kan gjenta kode. Ofte skiller vi mellom en _telleløkke_, som gjentar noe et visst antall ganger, og en _tilstandsløkke_, som gjentar så lenge noe er sant. I Python heter disse henholdsvis _for_-løkke og _while_-løkke.\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2\n", + "4\n", + "6\n", + "8\n", + "10\n" + ] + } + ], + "source": [ + "partall = 0\n", + "\n", + "for i in range(5): # Gjenta 5 ganger (i går igjennom intervallet [0, 1, 2, 3, 4])\n", + " partall = partall + 2\n", + " print(partall)" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2\n", + "4\n", + "6\n", + "8\n", + "10\n" + ] + } + ], + "source": [ + "partall = 0\n", + "\n", + "while partall < 10: # Gjenta så lenge partall er mindre enn 10\n", + " partall = partall + 2 # Øk partallsvariabelen med 2\n", + " print(partall) " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Studer løkkene og prøv å forstå hvordan de virker. Legg merke til at alt som er rykket inn til høyre, tilhører løkka og gjentas hver gang løkka kjører.\n", + "\n", + "Det er viktig å forstå hvordan løkkene fungerer. For å illustrere dette, kan vi sette opp en _løkketabell_ som viser verdien til de ulike variablene i ei løkke. La oss bruke følgende program som utgangspunkt:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "a = 0\n", + "\n", + "for i in range(5):\n", + " a = a + 1\n", + " b = a*i" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "En løkketabell som beskriver hva verdien til alle variabelene er før og underveis i løkka, er gitt nedenfor. Bruk løkka og tabellen og prøv å forstå hva som skjer!\n", + "\n", + "| Løkkerunde | i | a | b |\n", + "|------------|---|---|---|\n", + "| Startverdi | - | 0 | - |\n", + "| 1 | 0 | 1 | 0 |\n", + "| 2 | 1 | 2 | 2 |\n", + "| 3 | 2 | 3 | 6 |\n", + "| 4 | 3 | 4 | 12|\n", + "| 5 | 4 | 5 | 20|\n", + "\n", + "Vi kan printe ut variablene underveis i løkka og se at vi faktisk får det samme (husk at kategorien \"løkkerunde\" ikke er en variabel):" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "i | a | b\n", + "0 | 1 | 0\n", + "1 | 2 | 2\n", + "2 | 3 | 6\n", + "3 | 4 | 12\n", + "4 | 5 | 20\n" + ] + } + ], + "source": [ + "a = 0\n", + "print(\"i | a | b\") # Printer kun én gang\n", + "\n", + "for i in range(5):\n", + " a = a + 1\n", + " b = a*i\n", + " \n", + " print(i,\"|\", a,\"|\", b) # Printer hver gang i løkka" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```{admonition} Oppgave 3.1\n", + ":class: tip\n", + "Lag et program som skriver ut \"Du er flink til å programmere!\" tusen ganger. Hvilken funksjon har \"tellevariabelen\" (_i_) her?\n", + "```\n", + "\n", + "```{admonition} Oppgave 3.2\n", + ":class: tip\n", + "Programmet nedenfor skal finne summen av de 100 første tallene i en tallfølge der hvert ledd er den dobbelte av det forrige. Forklar hvordan programmet fungerer. Endre gjerne på ulike variabler og test hva utfallet blir for å forstå hvordan programmet fungerer.\n", + "```\n", + "\n", + "\n", + "\n", + "\n", + "```{admonition} Oppgave 3.3\n", + ":class: tip\n", + "Skriv om programmet ovenfor slik at du benytter en while-løkke istedenfor en for-løkke.\n", + "```\n", + "\n", + "```{admonition} Oppgave 3.4\n", + ":class: tip\n", + "Skriv om programmet ovenfor slik at du benytter en while-løkke istedenfor en for-løkke.\n", + "```\n", + "\n", + "```{admonition} Oppgave 3.5\n", + ":class: tip\n", + "Lag en løkketabell av programmet nedenfor:\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "a = 0\n", + "\n", + "for i in range(5):\n", + " b = a*i\n", + " a = a + 1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```{admonition} Oppgave 3.6\n", + ":class: tip\n", + "Hva skrives ut i følgende program? Prøv å undersøke dette for hånd. Til slutt kan du sjekke ved å kopiere programmet inn i en editor og kjøre det.\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "a = 0\n", + "\n", + "for i in range(5):\n", + " b = a*i\n", + " print(b)\n", + " a = a + 1\n", + "print(a)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```{admonition} Oppgave 3.7\n", + ":class: tip\n", + "Programmene nedenfor skal regne ut hvor lang tid det tar før du har doblet beløpet ditt i banken gitt en årlig rente på 5 \\% og en startkapital på 5000 kroner, men programmet fungerer ikke som det skal. Hva er feil? Rett opp programmet slik at det fungerer.\n", + "```\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 3.1 Løkker og lister\n", + "Lister er en datastruktur i Python som lar oss spare på ulike verdier i samme variabel. Eksempel på hvordan lister kan brukes, er slik:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "tom_liste = [] # Lager en tom liste\n", + "tall = [1, 2, 3.5] # Liste med tre tall\n", + "dyr = [\"Stumpneseape\", \"Lemur\", \"Sjøku\"] # Liste med tre dyr (tekststrenger)\n", + "\n", + "tom_liste.append(24)\n", + "print(\"Append-funksjonen legger til elementer i lista. Vi får:\", tom_liste)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Lister er en god kombinasjon med løkker, siden løkker kan generere ulike tallverdier som vi kan spare på i listene. For eksempel slik:" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "startkapital = 5000\n", + "penger = startkapital\n", + "år = 0\n", + "rente = 0.01\n", + "år_liste = [0]\n", + "penger_liste = [startkapital]\n", + "\n", + "while penger < startkapital*2:\n", + " penger = penger + penger*rente\n", + " år = år + 1\n", + " år_liste.append(år)\n", + " penger_liste.append(penger)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```{admonition} Oppgave 3.8\n", + ":class: tip\n", + "Forklar hvordan programmet ovenfor fungerer. \n", + "```\n", + "\n", + "Siden vi nå har en variabel som inneholder pengene ved et hvert år, er det en gyllen mulighet til å visualisere hvordan pengeutviklingen er. Da må vi først se litt på hvordan vi kan plotte." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 4. Plotting\n", + "Vi kan enkelt plotte lister med data på denne måten:" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "from pylab import * # Importerer relevante plotteverktøy\n", + "\n", + "tid = [0, 2, 4, 6, 8, 10, 12, 14] # dager\n", + "plantehøyde = [0, 1, 4.2, 7.9, 12.5, 13, 13.7, 13.9] # cm\n", + "\n", + "plot(tid, plantehøyde)\n", + "title(\"Forsøk: Plantevekst\")\n", + "xlabel(\"Tid (dager)\")\n", + "ylabel(\"Plantens høyde (cm)\")\n", + "show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Det finnes utrolig mange måter å modifisere et plott på. Programmet nedenfor plotter miljøgifter i ulike organismer i to innsjøer. Studer programmet og eksperimenter med ulike verdier. Du kan finne verdier for farger, linjestiler, markører og liknende ved å google «python plotting colors» og tilsvarende. Biblioteket som inneholder plotting, heter matplotlib, noe du kan se av søkeresultatene dine. Du må bruke internett flittig når du lurer på noe i programmering!\n", + "\n", + "\n", + "\n", + "Vi kan også plotte funksjoner. Da må vi spesifisere hvilke verdier av _x_ vi ønsker å plotte for. Disse x-verdiene kan vi generere enkelt ved å bruke en kommando som heter _linspace(a, b, n)_. Denne genererer et intervall fra _a_ til _b_ med _n_ punkter. Test programmet nedenfor og prøv for eksempel med _n_ = 4 (altså at antall _x_-verdier er 4). Hva skjer da, og hvorfor?\n", + "\n", + "\n", + "\n", + "```{admonition} Oppgave 4.1\n", + ":class: tip\n", + "Prøv å plotte verdiene fra renteprogrammet nedenfor. Eksperimenter med ulike verdier av startkapital og rente, og se hvordan utviklingen endrer seg.\n", + "```\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## *5. Funksjoner\n", + "\n", + "Funksjoner er å regne som en grunnstruktur i programmering, men det er ikke en _nødvendig_ grunnstruktur for å lage enkel kode for å utforske matematikk og naturfag. Til tross for dette er funksjoner nyttig å kunne, men husk at det er mer en kodeteknisk ferdighet enn en ferdighet vi kan bruke for å forstå realfag.\n", + "\n", + "Det er viktig å vite at funksjoner i programmering ikke er det samme som funksjoner i matematikk. De KAN ha samme virkemåte, men trenger ikke det. La oss representere den matematiske funskjonen $f(x) = 2x^2 - x + 1$ som en Python-funksjon:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "def f(x):\n", + " return 2*x**2 - x + 1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Vi definerer en funksjon med kodeordet _def_ og gir den et funksjonsnavn, her _f_. Deretter spesifiserer hva inn-verdien/variabelen til funksjonen skal hete. Her kaller vi den _x_. I programmering kaller vi en slik størrelse for en _parameter_. Gitt én verdi av _x_, skal funksjonen _returnere_ (spesifisert ved _return_-kommandoen) en funksjonsverdi.\n", + "\n", + "Her har vi bare _definert_ funksjonen. Vi har ikke brukt den enda, så vi får ikke noe output her. La oss bruke funksjonen:" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2\n" + ] + } + ], + "source": [ + "print(f(1))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Som vi ser, får vi funksjonsverdien til f(1). Nå har vi brukt funksjonen vi tidligere har definert. Dette heter å \"kalle på\" funksjonen. \n", + "\n", + "Poenget med funksjoner er i hovedsak to ting:\n", + "- Kodestrukturering.\n", + "- Gjenbruk av kode.\n", + "\n", + "Det er spesielt sistnevnte poeng som er sentralt. Ved å definere en funksjon kan vi bruke denne funksjonen flere ganger i programmet vårt, for eksempel slik:" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "6 -2\n", + "1\n", + "2\n", + "3\n", + "4\n", + "5\n" + ] + } + ], + "source": [ + "def f(x):\n", + " return x + 1\n", + "\n", + "addisjon = f(1) + f(3)\n", + "subtraksjon = f(1) - f(3)\n", + "\n", + "print(addisjon, subtraksjon)\n", + "\n", + "for x in range(5):\n", + " print(f(x))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```{admonition} Oppgave 5.1\n", + ":class: tip\n", + "Forklar hvordan programmet ovenfor fungerer.\n", + "```\n", + "\n", + "```{admonition} Oppgave 5.2\n", + ":class: tip\n", + "I programmet nedenfor definerer vi en funksjon som regner ut volumet til en sylinder. Lag en annen funksjon i samme program som regner ut volumet til ei kule.\n", + "```\n", + "($V_{kule} = \\frac{4}{3}\\pi r^3$)\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Filmer\n", + "\n", + "" + ] + } + ], + "metadata": { + "celltoolbar": "Edit Metadata", + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.12" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/tema1_grunnleggende_programmering/if-tester.ipynb b/_sources/docs/tema1_grunnleggende_programmering/if-tester.ipynb new file mode 100644 index 00000000..baa36b1a --- /dev/null +++ b/_sources/docs/tema1_grunnleggende_programmering/if-tester.ipynb @@ -0,0 +1,556 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Vilkår (if-tester)\n", + "\n", + "```{admonition} Læringsutbytte\n", + "Etter å ha arbeidet med dette temaet, skal du kunne:\n", + "1. bruke vilkår til å systematisere valg i programkode\n", + "2. illustrere og løse matematiske og naturvitenskapelige problemstillinger med sammensatt kode der vilkår inngår\n", + "```\n", + "````{admonition} Innledende oppgave\n", + ":class: tip\n", + "Før du går i gang med å programmere, prøv å forklare hva følgende kodesnutter gjør:\n", + "\n", + "```{code-block} Python\n", + "tall = 10\n", + "\n", + "if tall > 8:\n", + " print(\"Tallet er større enn 8.\")\n", + "```\n", + "\n", + "```{code-block} Python\n", + "tall = 10\n", + "\n", + "if tall < 8:\n", + " print(\"Tallet er mindre enn 8.\")\n", + "```\n", + "\n", + "```{code-block} Python\n", + "tall = 10\n", + "if tall < 8:\n", + " print(\"Tallet er mindre enn 8.\")\n", + "else:\n", + " print(\"Tallet er ikke mindre enn 8.\")\n", + "```\n", + "\n", + "```{code-block} Python\n", + "tall = 10\n", + "if tall < 8:\n", + " print(\"Tallet er mindre enn 8.\")\n", + "elif tall >= 8:\n", + " print(\"Tallet er ikke mindre enn 8.\")\n", + "```\n", + "````\n", + "\n", + "## Definisjon\n", + "\n", + "```{admonition} Vilkår\n", + "Et vilkår, eller en betingelse, er en logisk test for å sjekke om et kriterium er oppfylt. Dersom kriteriet er oppfylt, utføres det en handling. Dersom kriteriet ikke er oppfylt, blir ikke handlingen utført. Vilkår beskrives ofte i programmering som en «hvis-setning» («if» i Python).\n", + "```\n", + "Vilkår er sentrale i programmering, men også sentrale i hverdagen. Vi kan lage et enkelt eksempel ut fra billettpriser på bussen. Hvis du er under 18 år, blir prisen 31 kroner. Hvis ikke, regnes du som voksen, og må betale 62 kroner. Vi kan beskrive dette med følgende pseudokode:\n", + "\n", + "```{code-block} text\n", + "hvis alder er mindre enn 18:\n", + " pris = 31\n", + "hvis ikke:\n", + " pris = 62\n", + "```\n", + "\n", + "Dersom vi oversetter denne pseudokoden til Python-kode, ser vi at logikken og strukturen er ganske lik:\n", + "\n", + "```{code-block} Python\n", + "if alder < 18:\n", + " pris = 31\n", + "else: \n", + " pris = 62\n", + "```\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Vi kan illustrere hvordan vilkår fungerer med et puslespill. Puslespillet nedenfor er basert på billettpriseksempelet. Løs [dette puslespillet](https://parsons.problemsolving.io/puzzle/a93e44cd81be4657b9fbd3602d9e2de9) uten å se på Python-koden ovenfor. Pass på at innrykkene er riktig! Hva tror du innrykk betyr?\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Vilkår i Python\n", + "La oss se på et eksempel i Python:\n", + "\n", + "```{code-block} Python\n", + "tall = float(input(\"Tast inn et tall: \"))\n", + "if tall > 1:\n", + " print(\"Hurra, tallet er større enn 1!\")\n", + "```\n", + "\n", + "Programmet ber brukeren om å taste inn et vilkårlig tall som deretter konverteres til flyttall. Vilkåret starter med _if_, etterfulgt av variabelnavnet. Deretter gir vi et kriterium som skal sjekkes. Her tester vi om tallet er større enn 1. Dersom det er større enn 1, skrives det ut en beskjed. Vi må ha et kolon etter første linje, og innrykk på alt som hører til det spesifikke kriteriet. Dersom kriteriet ikke er oppfylt, skjer det ingen ting. Dersom vi vil at det skal skje noe selv om kriteriet ikke er oppfylt, kan vi legge til _else_-kommandoen:\n", + "\n", + "```{code-block} Python\n", + "tall = float(input(\"Tast inn et tall: \"))\n", + "if tall > 1:\n", + " print(\"Hurra, tallet er større enn 1!\")\n", + "else:\n", + " print(\"Tallet er ikke større enn 1.\")\n", + "```\n", + "Dersom kriteriet (tall > 1) ikke er sant, blir beskjeden etter _else_ skrevet ut. Vi kan legge til enda flere kriterier ved å bruke _elif_ (forkortelse for _else if_):\n", + "\n", + "```{code-block} Python\n", + "tall = float(input(\"Tast inn et tall: \"))\n", + "if tall > 1:\n", + " print(\"Hurra, tallet er større enn 1!\")\n", + "elif tall < 1:\n", + " print(\"Tallet er mindre enn 1!\")\n", + "else:\n", + " print(\"Tallet er 1!\")\n", + "```\n", + "\n", + "Det er en logisk konklusjon at tallet _er_ 1 dersom det verken er større eller mindre enn 1. For å være helt sikre, kan vi erstatte else-kommandoen med nok en elif-kommando:\n", + "\n", + "```{code-block} Python\n", + "tall = float(input(\"Tast inn et tall: \"))\n", + "if tall > 1:\n", + " print(\"Hurra, tallet er større enn 1!\")\n", + "elif tall < 1:\n", + " print(\"Tallet er mindre enn 1!\")\n", + "elif tall == 1:\n", + " print(\"Tallet er 1!\")\n", + "```\n", + "\n", + "Legg merke til at symbolet _==_ brukes for å teste om tallet er lik 1. Dersom vi bruker enkel likhetstegn (=) tror Python at vi prøver å tilordne en variabel. Da får vi en feilmelding. De ulike symbolene som brukes i vilkår, er oppsummert i tabellen nedenfor.\n", + "\n", + "| Symbol | Betydning |\n", + "| ------ | --------- |\n", + "| > | Større enn |\n", + "| < | Mindre enn |\n", + "| == | Er lik |\n", + "| <= | Mindre enn eller lik |\n", + "| >= | Større enn eller lik |\n", + "| != | Ikke lik |\n", + "\n", + "Det er noen ting å passe spesielt på når vi programmerer med vilkår:\n", + "- Alt som er rykket inn utføres kun hvis if-testen ovenfor er sann. Innrykk er derfor viktig for strukturen.\n", + "- \"elif\" står for \"else if\", og sjekker noe nytt, mens \"else\" brukes for å gjøre noe dersom ingen av kriteriene under \"if\" og \"elif\" er sanne.\n", + "- Det er den første if-testen som er sann i en serie av if-elif-else som utføres. Alle andre overses. Dersom vi skriver \"if\" en gang til, begynner vi på en ny serie med if-elif-else.\n", + "- Vi _må_ begynne med \"if\", mens \"elif\" og \"else\" er valgfritt.\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Lag et program der du sjekker om et tall er positivt, negativt eller null, og skriver ut relevante setninger når de ulike kriteriene er nådd. Du kan ta utgangspunkt i programkoden i kodeboksen her:\n", + "```\n", + "\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "tall = 2\n", + "\n", + "if tall > 0:\n", + " print(\"Tallet er positivt\")\n", + "elif tall < 0:\n", + " print(\"Tallet er negativt\")\n", + "else: # Eventuelt elif tall == 0:\n", + " print(\"Tallet er 0\")\n", + "```\n", + "````" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Nøstede vilkår\n", + "Vi kan også ha vilkår inni vilkår. Dette er spesielt nyttig hvis vi skal sjekke flere ting som er avhengige av hverandre. Nedenfor ser du en svært forenklet bestemmelsesnøkkel for grunnstoffer som illustrerer prinsippet. Kanskje du kan legge inn et kriterium til som gjør bestemmelsen mer presis?" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hvilken elektronegativitet har grunnstoffet? 2.0\n", + "Er grunnstoffet svært reaktivt (ja/nei)? nei\n", + "Grunnstoffet kan for eksempel være et innskuddsmetall eller et jordalkalimetall.\n" + ] + } + ], + "source": [ + "elektronegativitet = float(input(\"Hvilken elektronegativitet har grunnstoffet? \"))\n", + "if elektronegativitet > 2:\n", + " print(\"Grunnstoffet er mest sannsynlig et ikke-metall.\")\n", + "else:\n", + " reaktivt = input(\"Er grunnstoffet svært reaktivt (ja/nei)? \")\n", + " if reaktivt == \"ja\":\n", + " print(\"Grunnstoffet er mest sannsynlig et alkalimetall.\")\n", + " elif reaktivt == \"nei\":\n", + " print(\"Grunnstoffet kan for eksempel være et innskuddsmetall eller et jordalkalimetall.\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Bruk flytskjemaet nedenfor som utgangspunkt for et program som finner ut hva slags bergart du har oppdaget.\n", + "\n", + "\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "print(\"Velkommen til bestemmelsesnøkkel for bergarter!\")\n", + "prikker = input(\"Er mønsteret i steinen prikkete (ja/nei)? \")\n", + "if prikker == \"ja\":\n", + " print(\"Du har funnet en magmatisk bergart.\")\n", + "elif prikker == \"nei\":\n", + " striper = input(\"Er mønsteret i steinen stripete (ja/nei)? \")\n", + " if striper == \"ja\":\n", + " print(\"Du har funnet en metamorf bergart.\")\n", + " elif striper == \"nei\":\n", + " print(\"Du har funnet en sedimentær bergart.\")\n", + " else:\n", + " print(\"Vennligst svar 'ja' eller 'nei'\")\n", + "else:\n", + " print(\"Vennligst svar 'ja' eller 'nei'\")\n", + "```\n", + "````" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Oppgaver\n", + "```{admonition} Oppgave 3.1\n", + ":class: tip\n", + "Forklar hvorfor de to ulike programmene nedenfor gir ulike output.\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "a = 10\n", + "if a > 5:\n", + " a = a + 5\n", + "a = a + 2\n", + "print(a)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "a = 10\n", + "if a > 5:\n", + " a = a + 5\n", + "else:\n", + " a = a + 2\n", + "print(a)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "Verdien til _a_ er større enn 5. Dette gjør at programmet vil gjøre det som står under _if_ i begge programmene.\n", + "\n", + "Første program vil utføre _a = a + 2_ etter if -testen uansett om _a > 5_ stemmer eller ikke. Dette er fordi _a = a + 2_ ikke er en del av if-testen.\n", + "\n", + "Siden andre kodesnutt bruker en else-kommando, vil _a = a + 2_ utføres kun når _a_ ikke er større enn 5. Siden verdien til _a_ er større enn 5, vil programmet utføre det som står under _if_.\n", + "````\n", + "\n", + "```{admonition} Oppgave 3.2\n", + ":class: tip\n", + "Lag et program som spør brukeren om alderen til brukeren. Skriv ut en kommentar som avhenger av om alderen er under eller over 17. Utvid programmet til å skille mellom flere aldre.\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "alder = int(input(\"Hvor gammel er du? \"))\n", + "if alder < 17:\n", + " print(\"Dra tilbake til barnehagen!\")\n", + "elif alder == 17:\n", + " print(\"Du er i din beste alder\")\n", + "elif alder < 25:\n", + " print(\"Voksenlivet nærmer seg!\")\n", + "else:\n", + " print(\"Dra tilbake til gamlehjemmet!\")\n", + "```\n", + "````\n", + "\n", + "```{admonition} Oppgave 3.3\n", + ":class: tip\n", + "Lag et program som tar en poengsum som input. Programmet skal finne ut hvilken karakter du får dersom maks poengsum er 60 poeng. Finn på karaktergrenser selv.\n", + "\n", + "Utvid programmet med en maks poengsum. Programmet skal benytte prosenter av denne makssummen til å regne ut sluttkarakteren. Lag prosentgrensene selv.\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "maks_poeng = int(input(\"Hva er maks poengsum? \"))\n", + "poengsum = int(input(\"Hvor mange poeng fikk du? \"))\n", + "\n", + "prosent1 = 20\n", + "prosent2 = 40\n", + "prosent3 = 60\n", + "prosent4 = 80\n", + "prosent5 = 95\n", + "\n", + "grense1 = maks_poeng /100*prosent1\n", + "grense2 = maks_poeng /100*prosent2\n", + "grense3 = maks_poeng /100*prosent3\n", + "grense4 = maks_poeng /100*prosent4\n", + "grense5 = maks_poeng /100*prosent5\n", + "\n", + "if poengsum < grense1 :\n", + " karakter = 1\n", + "elif poengsum < grense2 :\n", + " karakter = 2\n", + "elif poengsum < grense3 :\n", + " karakter = 3\n", + "elif poengsum < grense4 :\n", + " karakter = 4\n", + "elif poengsum < grense5 :\n", + " karakter = 5\n", + "else: # poengsum må være større enn grense5\n", + " karakter = 6\n", + "\n", + "print(\"Du fikk karakteren\", karakter)\n", + "```\n", + "````\n", + "\n", + "```{admonition} Oppgave 3.4\n", + ":class: tip\n", + "Lag et program som tar to tall som input. Programmet skal skrive ut hvilket av de to tallene som er størst.\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "tall1 = int(input(\"Skriv et tall: \"))\n", + "tall2 = int(input(\"Skriv et til tall: \"))\n", + "\n", + "if tall1 > tall2:\n", + " største = tall1\n", + "else:\n", + " største = tall2\n", + "print(\"Det største tallet av\", tall1 ,\"og\", tall2,\"er:\", største)\n", + "```\n", + "````\n", + "\n", + "```{admonition} Oppgave 3.5\n", + ":class: tip\n", + "Løs [dette programmeringspuslespillet](https://parsons.problemsolving.io/puzzle/504b4747ca87467082de3065086f579f). Programmet skal skrive ut antallet løsninger i en andregradslikning. Når du er ferdig, kan du prøve [dette puslespillet](https://parsons.problemsolving.io/puzzle/a970c2ff61754fc890f786bf6db5ac61), som er en litt mer avansert variant. Forklar forskjellen på programmene.\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```{admonition} Oppgave 3.6\n", + ":class: tip\n", + "Lag et program som tar utgangspunkt i puslespillet ovenfor. Programmet skal også regne ut hva løsningene er.\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "a = 1\n", + "b = -3\n", + "c = 2\n", + "\n", + "rotuttrykk = b**2 - 4*a*c\n", + "\n", + "if rotuttrykk > 0:\n", + " x1 = (-b + rotuttrykk**0.5)/(2*a)\n", + " x2 = (-b - rotuttrykk**0.5)/(2*a)\n", + " print(\"Likningen har løsningene x1 =\", x1, \"og x2 =\", x2)\n", + "elif rotuttrykk == 0:\n", + " x = -b/(2*a)\n", + " print(\"Likningen har løsningen x = \", x)\n", + "else:\n", + " print(\"Likningen har ingen reelle løsninger.\")\n", + "```\n", + "````\n", + "\n", + "```{admonition} Oppgave 3.7\n", + ":class: tip\n", + "Lag en kalkulator der brukeren må taste inn to tall og en regneoperasjon. Du bestemmer selv hvor mange regneoperasjoner programmet skal håndtere.\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "tall1 = float(input(\"Første tall: \"))\n", + "op = input(\"Velg operasjon ( + , - , / , * ): \")\n", + "tall2 = float(input(\" Andre tall: \"))\n", + "\n", + "if op == \"+\":\n", + " resultat = tall1 + tall2\n", + "elif op == \"-\":\n", + " resultat = tall1 - tall2\n", + "elif op == \"/\":\n", + " resultat = tall1 / tall2\n", + "elif op == \"*\":\n", + " resultat = tall1 * tall2\n", + "else:\n", + " resultat = \"udefinert \"\n", + "print(tall1, op, tall2, \"=\", resultat)\n", + "```\n", + "````\n", + "\n", + "```{admonition} Fysikkoppgave\n", + ":class: tip\n", + "Lag et program der du kan taste inn bølgelengden til synlig lys i nm og få ut hvilken farge lyset har. Utvid eventuelt programmet med andre deler av det elektromagnetiske spekteret.\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "bl = float(input(\"Skriv inn lysets bølgelengde i nm: \"))\n", + "\n", + "if 380 <= bl < 420:\n", + " farge = \"fiolett\"\n", + "elif 420 <= bl < 490:\n", + " farge = \"blå\"\n", + "elif 490 <= bl < 575:\n", + " farge = \"grønn\"\n", + "elif 575 <= bl < 585:\n", + " farge = \"gul\"\n", + "elif 585 <= bl < 650:\n", + " farge = \"oransje \"\n", + "elif 650 <= bl <= 750:\n", + " farge = \"rød\"\n", + "else:\n", + " farge = \"udefinert \"\n", + "print(\"Fargen til lyset er:\", farge )\n", + "```\n", + "````\n", + "\n", + "```{admonition} Kjemioppgave\n", + ":class: tip\n", + "Lag et program som tar konsentrasjonen av oksoniumioner ($H_3O^+$) som input. Programmet skal skrive ut om løsningen med denne pH-en er sur, basisk eller nøytral.\n", + "\n", + "$$pH = -log([H_3O^+])$$\n", + "\n", + "Her står $[H_3O^+]$ for konsentrasjonen av $H_3O^+$-ioner. Test programmet med $[H_3O^+] = 1\\cdot 10^{-7}$. Dette bør gi nøytral løsning.\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "from numpy import log10\n", + "\n", + "oksonium = float(input(\"[H3O+]: \"))\n", + "pH = -log10(oksonium)\n", + "\n", + "if pH < 7:\n", + " print(\"Løsningen er sur.\")\n", + "elif pH > 7:\n", + " print(\"Løsningen er basisk.\")\n", + "elif pH == 7: # Eventuelt else:\n", + " print(\"Løsning er nøytral.\")\n", + "```\n", + "````\n", + "\n", + "```{admonition} Biologioppgave\n", + ":class: tip\n", + "Vi skal se på en populasjon av mennesker og ser på et gen som finnes i to varianter: $a$ og $A$. Andelen av populasjonen som har variant $A$ kan vi kalle for $p$ og andelen av populasjonen som har variant $a$ kan vi kalle for $q$. Verdiene til $p$ og $q$ må være mellom 0 og 1. \n", + "Siden alle i populasjonen vil ha enten $a$ eller $A$ (eller begge), må $p + q = 1$.\n", + "\n", + "Populasjonen sies å være i _Hardy-Weinberg-likevekt_ dersom verdiene til $p$ og $q$ ikke forandrer seg under forutsetningen at det foregår tilfeldig paring, ingen mutasjoner, ingen naturlig seleksjon og ingen evolusjon i populasjonen.\n", + "\n", + "Dersom populasjonen er i Hardy-Weinberg-likevekt kan en finne andelen til de tre mulige genotypene til menneskene i populasjonen:\n", + "- $AA$ : $p^2$ \n", + "- $Aa$ : $2pq$\n", + "- $aa$ : $q^2$\n", + "\n", + "Lag et program som ber brukeren om verdien til $p$ og $q$.\n", + "Programmet skal så teste om $ p + q = 1$. Hvis summen er 1, skal programmet regne ut andelene til de tre mulige genotypene, og skrive dem ut. Hvis summen ikke er 1, skal programmet skrive en feilmelding.\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "p = float(input(\" Hvor stor andel har genvariant A?: \"))\n", + "q = float(input(\" Hvor stor andel har genvariant a?: \"))\n", + "if p + q == 1:\n", + " AA = p**2\n", + " Aa = 2*p*q\n", + " aa = q**2\n", + " print(\" Andel som har genotype AA:\", round(AA,2))\n", + " print(\" Andel som har genotype Aa:\", round(Aa,2))\n", + " print(\" Andel som har genotype aa:\", round(aa,2))\n", + "else:\n", + " print(\"Summen av p og q er ikke lik 1!\")\n", + "```\n", + "````\n", + "\n", + "```{admonition} Sammensatt oppgave\n", + ":class:tip\n", + "Lag et lite eventyrspill der spilleren får ulike valg underveis, og historien formes av valgene spilleren tar. Du kan gjerne bruke input-funksjonen for å gi spilleren ulike valg. Det blir gjerne mange if-tester inni if-tester, så hold styr på innrykkene dine.\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Video\n", + "Se videoen nedenfor for å få en gjennomgang av det viktigste når vi skal programmere if-tester i Python:\n", + "\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "celltoolbar": "Edit Metadata", + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.12" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/tema1_grunnleggende_programmering/kom_i_gang.ipynb b/_sources/docs/tema1_grunnleggende_programmering/kom_i_gang.ipynb new file mode 100644 index 00000000..b0dcef61 --- /dev/null +++ b/_sources/docs/tema1_grunnleggende_programmering/kom_i_gang.ipynb @@ -0,0 +1,56 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# En første kodesnutt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Oppgaver for nybegynnere\n", + "1. Lag et program som skriver ut summen og produktet av to tall.\n", + "2. Definer tre variabler med hver sin datatype (streng, heltall og flyttall). Skriv så ut disse variablene.\n", + "3. Lag et program som regner ut volumet til ei kule: $V_{kule} = \\frac{4}{3} \\pi r^3$\n", + "4. Lag et program som regner ut radius til en sirkel med arealet 4.\n", + "\n", + "### Oppgaver for de som kan litt fra før\n", + "1. Lag et program som avgjør om et tall er positivt, negativt eller null, gitt input fra brukeren av programmet.\n", + "2. Lag et program som skriver ut alle partall fra og med 0 til 99.\n", + "3. Lag et program som regner ut summen av de 499 første heltallene.\n", + "4. Lag en funksjon som regner ut volumet av ei kule. Bruk funksjonen til å regne ut volumet til ei kule med radius 3 cm." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/tema1_grunnleggende_programmering/lister.ipynb b/_sources/docs/tema1_grunnleggende_programmering/lister.ipynb new file mode 100644 index 00000000..194d5dac --- /dev/null +++ b/_sources/docs/tema1_grunnleggende_programmering/lister.ipynb @@ -0,0 +1,244 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Lister\n", + "\n", + "```{admonition} Læringsutbytte\n", + "Etter å ha arbeidet med dette temaet, skal du kunne:\n", + "1. opprette lister\n", + "2. gjør ulike operasjoner på lister (NB: Du trenger ikke pugge operasjonene!)\n", + "3. trekke ut informasjon av lister ved hjelp av indekser\n", + "```\n", + "\n", + "Når vi trenger å spare på flere verdier i samme variabel, kan vi benytte _lister_. Lister er samlinger med tall, strenger eller annet. Lister i Python markeres ved å sette objektene i klammeparentes:\n", + "\n", + "```{code-block} Python\n", + "dyr = [\"gaupe\", \"torndjevel\", \"bjørnedyr\", \"blobfisk\", \"sjøkneler\"]\n", + "tall = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\n", + "```\n", + "\n", + "Lister defineres altså gjennom klammeparentesen, og elementene i lista skilles med komma. Vi kan også gjøre ulike listeoperasjoner, som å legge til og slette elementer. La oss bruke lista med dyr som eksempel:\n", + "\n", + "```{code-block} Python\n", + "dyr = [] \t\t # Lager ei tom liste\n", + "aper = [\"stumpneseape\", \"spøkelsesape\", \"neseape\"] # Lager ei liste\n", + "dyr.append(\"komodovaran\") # Legger til et element til dyrelista\n", + "dyr.append(\"glaucus atlanticus\")\t # Legger til et dyr til\n", + "dyr.extend(aper) # Legger hele apelista inn i dyrelista\n", + "dyr.remove(\"neseape\") # Sletter elementet \"neseape\"\n", + "dyr.pop(1) \t # Sletter element nr. 1 i lista\n", + "dyr.reverse() # Reverserer lista\n", + "\n", + "print(dyr)\n", + "```\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Hva slags output gir programmet ovenfor? Prøv å forstå hva som skjer uten datamaskin, og test så programmet for å se om du hadde rett.\n", + "```\n", + "\n", + "Plassnummeret til et element i lista kaller vi _indeks_. Indeksen angis ofte i klammeparentes. Vi kan også sortere lista, finne lengden av lista og finne de elementene vi ønsker. \n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Kjør programmet nedenfor og forklar hva som skjer.\n", + "```\n", + "\n", + "\n", + "Men vent nå litt! Vi ser at lista inneholder ni elementer -- hvorfor står det at nummer 94 står på plass nr. 7 når vi ser at det er nest sist i lista (altså på plass nr. 8)? Det er fordi indekser i Python, og mange andre språk, starter på 0. Det vil si at indeksen til det første totallet er 0, og til det siste elementet (102) er 8. Ei liste med $n$ elementer har elementer med indekser fra $0$ til $n - 1$.\n", + "\n", + "Vi kan finne og bruke ulike elementer i ei liste ved å bruke indeksene til elementet. Vi trenger med andre ord ikke behandle hele lista hver gang vi trenger noen elementer derfra:\n", + "\n", + "```{code-block} Python\n", + "liste = [1.3, 5.6, -2.0, 3.5, -3.5]\n", + "A = liste[2]\t\t# A får verdien til element 2 i lista \n", + "B = liste[1:3]\t\t# B blir ei liste med element 1 til og med 2\n", + "C = liste[2:]\t\t# C blir ei liste med element 2 og sluttelementet\n", + "D = liste[:2]\t\t# D blir ei liste med element 0 til og med 1 (til 2)\n", + "E = liste[-1] # E får verdien til det siste elementet i lista\n", + "F = liste[-2] # F får verdien til det nest siste elementet i lista\n", + "```\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Hvilken verdi får variablene A, B, C, D, E og F ovenfor?\n", + "```\n", + "\n", + "```{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "Indekser angir plasseringen i lista. Dersom indeksen er negativ, teller vi baklengs, altså fra det siste elementet og bakover. Husk at Python teller fra 0, ikke fra 1. Kolon angir \"til\", så 1:3 betyr fra og med element 1 til, men ikke med, element 3 (det vil si element 1 og 2). Når det ikke står noe foran kolon, tolkes det som fra det første elementet (element nummer 0). Når det ikke står noe etter kolon, tolkes det som til og med det siste elementet (element nummer -1). Vi får derfor:\n", + "\n", + "A: -2.0\n", + "B: [5.6, -2.0]\n", + "C: [-2.0, 3.5, -2.5]\n", + "D: [1.3, 5.6]\n", + "E: -3.5\n", + "F: 3.5\n", + "```\n", + "\n", + "Det er noen andre operasjoner som en kan gjøre med lister. I tillegg er det ofte flere måter å gjøre ting på. La oss lage et par tallister og gjøre noen operasjoner på disse.\n", + "\n", + "\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Prøv ut programmet ovenfor og forklar hva som skjer. Endre gjerne på noen av operasjonene og se hva utfallet blir. Utvid også programmet slik at det skriver ut det siste elementet i lista _c_. Skriv også ut alle elementer bortsett fra det første.\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "print(c[-1])\n", + "print(c[1:])\n", + "```\n", + "````\n", + "\n", + "Siden vi sletter element nr. 2 (som er tallet 3), får vi beskjed om at 3 ikke er i c lenger (\"False\"). Legg også merke til at når vi legger sammen listene, er det omtrent det samme som å bruke kommandoen _extend_.\n", + "\n", + "## Oppgaver\n", + "````{admonition} Oppgave 2.1\n", + ":class: tip\n", + "Forklar for hvert program hvorfor det gir følgende output:\n", + "```{code-block} Python\n", + "a = [1,2,3,4,5,6,7,8,9]\n", + "b = a[1] + a[5]\n", + "print(b)\n", + "```\n", + "*Output:* 8\n", + "\n", + "```{code-block} Python\n", + "liste = [1,2,3,4,5]\n", + "liste1 = liste[:3]\n", + "liste.pop(1)\n", + "liste1.reverse()\n", + "del liste1[2]\n", + "liste += liste1\n", + "print(liste)\n", + "```\n", + "*Output:* [1, 3, 4, 5, 3, 2]\n", + "````\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "1. Siden _a[1]_ henter ut andre element i lista _a_, vil _a[1] = 2_. Siden _a[5]_ henter ut sjette element i lista, vil _a[5] = 6_. Dette gir at _b = a[1] + a[5] = 2 + 6 = 8_.\n", + "\n", + "2. Vi kan beskrive programflyten steg for steg slik:\n", + "- Lista _liste[:3]_ består av de tre første elementene fra _liste_. Dette gir at _liste1 = [1,2,3]_.\n", + "- Ved å skrive _liste.pop(1)_, fjernes elementet med indeks 1 fra _liste_. Elementet med indeks 1 er 2. Nå er _liste = [1,3,4,5]_.\n", + "- Kommandoen _liste1.reverse()_ reverserer liste1. Nå er _liste1 = [3,2,1]_.\n", + "- Ved å skrive _del liste1[2]_ fjernes elementet med indeks 2 fra _liste1_, altså 1. Nå er _liste1 = [3,2]_.\n", + "- Siden _liste += liste1_ er det samme som _liste + liste1_, vil _liste_ bli utvida med _liste1_. Da vil _liste = liste + liste1 = [1,3,4,5] + [3,2] = [1,3,4,5,3,2]_.\n", + "````\n", + "\n", + "````{admonition} Oppgave 2.2\n", + ":class: tip\n", + "Du får gitt ei liste som ser slik ut:\n", + "\n", + "```{code-block} Python\n", + "['dette','er','en','ganske','lang','liste','med','ikke', 'så','viktig','innhold']\n", + "```\n", + "Lag ei ny liste der programmet henter relevante elementer fra den gitte lista. Når du skriver ut den nye lista, skal du få:\n", + "['dette','er','en','liste','med','viktig','innhold']\n", + "````\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "liste = [\"dette\", \"er\", \"en\", \"ganske\", \"lang\", \"liste\" ,\"med\" ,\"ikke\", \"så\", \"viktig\" ,\"innhold\"]\n", + "ny_liste = liste [:3] + liste [5:7] + liste [9:]\n", + "print(ny_liste)\n", + "```\n", + "````\n", + "\n", + "````{admonition} Oppgave 2.3\n", + ":class: tip\n", + "\n", + "Skriv om linja som endrer på lista _a_ slik at _i1_ og _i2_ har forskjellige verdier. \n", + "\n", + "```{code-block} Python\n", + "a = [1,5,2,5,2,4,4,2]\n", + "i1 = a.index(2)\n", + "print(\"i1 =\",i1)\n", + "del a[7]\n", + "i2 = a.index(2)\n", + "print(\"i2 =\",i2)\n", + "```\n", + "````\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "a = [1,5,2,5,2,4,4,2]\n", + "i1 = a.index(2)\n", + "print(\"i1 =\", i1)\n", + "del a[2]\n", + "i2 = a.index(2)\n", + "print(\"i2 =\", i2)\n", + "```\n", + "````\n", + "\n", + "## Video\n", + "Se videoen nedenfor for en innføring eller repetisjon til lister." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "tags": [ + "remove-input" + ] + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import IFrame\n", + "IFrame(\"https://www.youtube.com/embed/1ZeRsnlxU4A? autoplay=0&rel=0\", width=800, height=600)" + ] + } + ], + "metadata": { + "celltoolbar": "Edit Metadata", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/_sources/docs/tema1_grunnleggende_programmering/lokker.ipynb b/_sources/docs/tema1_grunnleggende_programmering/lokker.ipynb new file mode 100644 index 00000000..ed5d8370 --- /dev/null +++ b/_sources/docs/tema1_grunnleggende_programmering/lokker.ipynb @@ -0,0 +1,1028 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Løkker\n", + "\n", + "```{admonition} Læringsutbytte\n", + "Etter å ha arbeidet med dette temaet, skal du kunne:\n", + "1. bruke while- og for-løkker til å gjenta kode\n", + "2. tegne geometriske mønstre med turtle-grafikk\n", + "3. beregne rekkesummer\n", + "4. løse naturvitenskapelige problemer med løkker\n", + "```\n", + "\n", + "## Definisjon\n", + "\n", + "Den kanskje viktigste strukturen i programmering er løkker. De lar datamaskinen gjenta en operasjon så mange ganger vi vil. Det er dette som er datamaskinens styrke.\n", + "\n", + "```{admonition} Løkker\n", + "En løkke er en struktur som gjør at vi kan gjenta kode. Ofte skiller vi mellom en _telleløkke_, som gjentar noe et visst antall ganger, og en _tilstandsløkke_, som gjentar seg så lenge noe er sant. I Python heter disse henholdsvis _for_-løkke og _while_-løkke.\n", + "```\n", + "\n", + "## Skilpaddegrafikk\n", + "Vi skal se hvordan løkker fungerer ved å introdusere deg for en skilpadde. Han heter Gunnar. Her er han:\n", + "\n", + "\n", + "\n", + "Gunnar følger enkle kommandoer, som \"forward\", \"backward\", \"right\" og \"left\".\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Endre programmet ovenfor slik at Gunnar tegner en trekant. Hva er sammenhengen mellom vinkelen som skilpadden snur og vinklene i trekanten?\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "Du kan tegne hvilken som helst trekant, men dersom vi velger en likesidet trekant, må alle vinkler være 60 grader (slik at summen av de tre vinklene er 180 grader). Men vi kan ikke snu skilpadden 60 grader mot venstre. Da blir ikke den indre vinkelen i trekanten 60 grader. Det er altså forskjell på å snu 60 grader og lage en vinkel på 60 grader. Siden en helomvending er 180 grader, må skilpadden snu 180 - 60 = 120 grader for at vinklene i trekanten skal være 60 grader.\n", + "\n", + "```{code-block} Python\n", + "from turtle import *\n", + "\n", + "shape(\"turtle\") # gir pekeren skilpaddeform \n", + "color(\"limegreen\") # gjør skilpadden limegrønn\n", + "forward(100) # går framover 100 steg\n", + "left(120) # vender 30 grader mot høyre (går ikke framover)\n", + "forward(100) # går framover 100 steg\n", + "left(120)\n", + "forward(100)\n", + "```\n", + "````\n", + "\n", + "### Skilpadder i løkker\n", + "Å tegne en trekant krever få linjer kode, men hva hvis du vil tegne en åttekant, en førtitokant, eller en nittisekskant? Det er slitsomt og kjedelig å skrive samme kommando hundrevis av ganger. Og det er totalt unøvdendig. Vi bruker nemlig løkker til å gjenta kode, for eksempel slik:\n", + "\n", + "\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Prøv å forklare hvordan programmet ovenfor fungerer. Hva tror du \"for i in range(n)\" betyr? Hva tror du _i_ er?\n", + "```\n", + "\n", + "```{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "Programmet tegner en regulær (likesidet) mangekant. Vi velger først antall sider og en sidelengde. Vi regner så ut hva vinklene i mangekanten må være. Deretter går vi inn i en løkke. Helt enkelt kan vi si at løkka repeterer alt som står rykket inn (med tab) _n_ ganger. Skilpadden går altså framover (50) og snur (45), og dette gjentas _n_ ganger.\n", + "```\n", + "\n", + "```{admonition} Mer komplisert/grundig løsning\n", + ":class: tip, dropdown\n", + "Vi kan forklare programmet ovenfor litt grundigere med at \"for i in range(n)\" betyr at for hver verdi av en variabel _i_, skal løkka gjentas. Variabelen _i_ får hver verdi i intervallet [0, 1, 2, 3, ..., n-1], som lages med funksjonen _range_. Det betyr at første gang løkka kjører, er $i = 0$, andre gang $i = 1$ og så videre. Løkka gjentas helt til $i = n - 1$, altså til, men ikke med verdien _n_.\n", + "```\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Modifiser programmet ovenfor slik at skilpadden Gunnar tegner en 20-kant.\n", + "```\n", + "\n", + "```{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "Det er så enkelt som å endre _n_ til 20. Problemet er at 20-kanten blir litt stor, så vi kan også med fordel endre sidelengden, for eksempel til 25.\n", + "```\n", + "\n", + "```{admonition} Oppgave\n", + ":class: tip\n", + "Få Gunnar til å tegne et menneske eller en blomst.\n", + "```\n", + "\n", + "````{admonition} Løsning\n", + ":class: tip, dropdown\n", + "Mulighetene er uendelige, men her er et vakkert eksemplar av et menneske\n", + "```{code-block} Python\n", + "from turtle import *\n", + "\n", + "n = 100\n", + "vinkel = 360/n\n", + "\n", + "for i in range(n):\n", + " forward(3)\n", + " left(vinkel)\n", + " \n", + "right(90)\n", + "forward(50)\n", + "\n", + "for i in range(2):\n", + " left(120)\n", + " forward(75)\n", + " backward(75)\n", + "\n", + "left(120)\n", + "forward(50)\n", + "\n", + "right(30)\n", + "forward(75)\n", + "backward(75)\n", + "left(60)\n", + "forward(75)\n", + "```\n", + "````" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## While-løkker\n", + "Vi har to typer løkker i Python: while-løkker (tilstandsløkker) og for-løkker (telleløkker). While-løkker gjentar noe helt til et kriterium er nådd. Her er et eksempel:\n", + "\n", + "\n", + "\n", + "Programmet kjører så lenge variabelen _partall_ har en verdi som er mindre enn eller lik 10. Alt som er rykket inn, gjentas hver gang løkka går. Programmet skriver derfor ut alle positive partall (og 0) som er mindre enn eller lik 10.\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Modifiser programmet ovenfor slik at programmet skriver ut alle positive _oddetall_ under 10.\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "oddetall = 1\n", + "\n", + "while oddetall < 10:\n", + " print(oddetall)\n", + " oddetall = oddetall + 2\n", + "```\n", + "````" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## For-løkker\n", + "I for-løkker lager vi en _teller_ eller _tellevariabel_ som går igjennom en slags liste med tall. Denne listeliknende tallmengden kan vi lage med funksjonen _range_. Her er noen eksempler:\n", + "\n", + "| kommando | liste |\n", + "| -------- | --------- |\n", + "| range(3) | [0, 1, 2] |\n", + "| range(2,4) | [2, 3] |\n", + "| range(1,8,2) | [1, 3, 5, 7] |\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Forklar hvordan _range_-funksjonen fungerer med utgangspunkt i eksemplene ovenfor.\n", + "```\n", + "```{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "Vi kan skrive en generell range-kommando slik: range(fra og med, til, steglengde). Vi kaller de tre tallene i range-funksjonen for _argumenter_. Dersom vi kun bruker ett argument, for eksempel _range(3)_, får vi en mengde fra 0 til, men ikke med, 3 (som er spesifisert), med steglengde 1, altså er hvert heltall med. Dersom vi bruker to argumenter, som i _range(2,4)_, får vi en tallmengde fra 2 til, men ikke med, 4, med en automatisk steglengde på 1. Dersom vi bruker tre argumenter, gir vi også steglengden, for eksempel hvert andre tall mellom 1 og 8, som i _range(1,8,2)_.\n", + "```\n", + "\n", + "Et enkelt eksempel på en for-løkke er slik:\n", + "```{code-block} Python\n", + "for i in range(5):\n", + " print(i)\n", + "```\n", + "Vi kan også gjøre noe mer enn å telle i løkka:\n", + "\n", + "```{code-block} Python\n", + "a = 2\n", + "for i in range(5):\n", + " print(i)\n", + " a = a + i\n", + " \n", + "print(a)\n", + "```\n", + "Så hva betyr dette? Helt enkelt betyr det at alt som er rykket inn (med tab eller fire mellomrom), blir gjentatt 5 ganger. Operasjonen der vi oppdaterer _a_ er \n", + "\n", + "Hvis vi skal forklare litt mer presist hva som skjer, kan vi si at _range_-funksjonen lager en tallmengde [0, 1, 2, 3, 4], og at _i_ blir tilordnet hver av disse verdiene etter tur. Første gang løkka går, er $i = 0$. Da printes denne verdien, og $a = 2 + 0 = 2$. Deretter gjentas alt inni løkka på nytt, og _i_ får verdien 1. Så gjentas det som står rykket inn en gang til: Vi printer 1, og $a = 2 + 1 = 3$. Slik fortsetter det til og med $i = 4$. Når _i_ har hatt alle verdiene i tallmengden, avsluttes løkka.\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Vi kan systematisere løkkene med en _løkketabell_. Den holder styr på hva verdien til de ulike variablene er underveis i løkka. Fyll inn resten av løkketabellen for løkka ovenfor.\n", + "\n", + "| Løkkerunde | i | a |\n", + "|---|---|---|\n", + "|Startverdi| - | 2 |\n", + "| 1 | 0 | 2 |\n", + "| 2 | 1 | 3 |\n", + "| 3 | | |\n", + "| 4 | | | \n", + "| 5 | | |\n", + "```\n", + "\n", + "```{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "| Løkkerunde | i | a |\n", + "|---|---|---|\n", + "|Startverdi| - | 2 |\n", + "| 1 | 0 | 2 |\n", + "| 2 | 1 | 3 |\n", + "| 3 | 2 | 5 |\n", + "| 4 | 3 | 8 | \n", + "| 5 | 4 | 12 |\n", + "```\n", + "\n", + "I for-løkker kaller vi ofte tellevariabelen for _i_, _j_, _k_ eller liknende, men den kan egentlig hete hva som helst. I tillegg trenger vi ikke å _gjøre_ noe med tellevariabelen. Mange ganger brukes den bare for å telle. Her er et eksempel:\n", + "\n", + "\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Modifiser programmet ovenfor slik at det skriver ut hvor mye penger du har etter et visst antall år. Lag en variabel som inneholder antall år, og som du bruker i løkka. Legg også inn hensiktsmessige kommentarer.\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "penger = 100 # kroner i banken\n", + "renter = 1.025 # Rente (1+x%/100) \n", + "tid = 25 # Antall år pengene står i banken\n", + "\n", + "for år in range(tid):\n", + " penger = penger*renter\n", + " \n", + "print(\"Etter\", tid, \"år har du\", round(penger, 2), \"kroner i banken.\")\n", + "```\n", + "````\n", + "\n", + "## Å tenke i løkker\n", + "Løkker kan brukes til alt fra å summere tallrekker i matematikk til å finne ut hvor mange harer det er i økosystem etter en viss tid, finne posisjonen til et legeme eller utforske hvordan kjemiske reaksjoner foregår. Når vi skal bruke løkker, må vi dele opp problemer slik at de kan utføres trinnvis. I matematikk og naturvitenskapelige fag er det ofte slik at vi representerer sammenhenger med kontinuerlige funksjoner og formler, men når vi løser problemene med løkker, gjør vi det trinnvis. For hvert trinn, gjør vi en bestemt operasjon. Dette kalles å løse noe _iterativt_, fordi _iterasjon_ betyr gjentakelse. Litt mer uformelt kan vi kalle det å løse noe trinnvis med små, repeterende operasjoner \"å tenke i løkker\". La oss se på noen eksempler fra både matematikk og naturvitenskap.\n", + "\n", + "### Tallfølger\n", + "En tallfølge er en oppramsing av tall som kan være enten endelig eller uendelig. Et eksempel på en endelig tallfølge er 2, 4, 6, 8, 10, som er en tallfølge av de 5 første partallene. En berømt uendelig tallfølge er _Fibonacci-tallene_: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ..., der de tre siste prikkene sier oss at rekka er uendelig lang. Fibonacci-tallene starter på 1, og hvert tall er deretter summen av de to foregående tallene.\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Beskriv mønsteret i følgen 1, 4, 7, ... og skriv opp det neste tallet i følgen.\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "Hvert tall er lik summen av det forrige tallet og 3. Det neste tallet må derfor være 7 + 3 = 10.\n", + "````\n", + "\n", + "Hvert tall i en tallfølge kalles et _ledd_. Vi kan beskrive hvert ledd i en følge med symboler, for eksempel $a_n$, der _n_ er en indeks som beskriver leddnummeret. I tallfølgen 1, 3, 5, 7, ... kan for vi for eksempel si at $a_1 = 1$ og $a_2 = 3$. Poenget med å beskrive en følge med symboler, er at vi kan lage formler for hvert generelle ledd $a_n$. Følgen 1, 3, 5, 7, ... kan beskrives med den generelle formelen $a_{n+1} = a_n + 2$, der $a_1 = 1$. En slik formel kalles en _rekursiv formel_ fordi vi tar utgangspunkt i en tidligere verdi for å regne ut neste verdi.\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Forklar hvorfor $a_{n+1} = a_n + 2$ er det samme som $a_n = a_{n-1} + 2$.\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "Formlene beskriver det samme, men med ulike indekser. Begge sier at neste tall er lik forrige tall + 2. Den første formelen vil starte med _n = 0_. Da har vi at $a_1 = a_0 + 2$. Den andre formelen vil starte med _n = 1_. Da har vi også at $a_1 = a_0 + 2$.\n", + "````\n", + "Når vi først har kommet fram til en generell formel for en tallfølge, kan vi finne det _n_-te leddet ved hjelp av programmering. Vi bruker tallfølgen 1, 3, 7, 15, 31, ... som eksempel. Denne følgen kan vi beskrive med formelen $a_{n+1} = a_n + 2^n$. La oss finne det hundrede leddet i denne følgen:\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Forklar hva som skjer i programmet ovenfor. For å sjekke om programmet vårt fungerer, kan det være lurt å beregne tall som vi kjenner i følgen. Prøv å finne tall nr. 3, 4 og 5 for å sjekke at programmet gjør det det skal.\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "Programmet definerer først et tall som er med i tallfølgen, deretter hvilket ledd (nummer) vi ønsker å finne i følgen. Løkka går fra 1 til (men ikke med) _n_. Det er fordi vi allerede har et tall i følgen, $a_0 = 1$. Da trenger bare løkka å gå to ganger for å finne ledd nr. 3, og for eksempel 6 ganger for å finne ledd nr. 7, og så videre. Hvis vi teller fra 0, er tall nummer 3 lik $a_2 = 7$, tall 4 er $a_3 = 15$ og tall 5 er $a_4 = 31$\n", + "````\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Endre programmet ovenfor slik at det finner det 20. elementet i tallfølgen 1, 5, 11, 19, 29, ...\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "Tallfølgen ovenfor kan beskrives med den rekursive formelen $a_{n+1} = a_{n} + 2n + 2$. Vi kan finne det tjuende elementet slik:\n", + "```{code-block} Python\n", + "a = 1 # første verdi i tallfølgen\n", + "n = 20 # n-te ledd i tallfølgen\n", + "\n", + "for i in range(1, n):\n", + " a = a + 2*i + 2\n", + "\n", + "print(\"Tall nummer\", n, \"i følgen er:\", a)\n", + "```\n", + "Det tjuende elementet er 419.\n", + "````\n", + "\n", + "### Tallrekker\n", + "Når vi beskriver en tallfølge som en serie med tall som adderes med hverandre, kaller vi det for en _rekke_. For eksempel er 1, 5, 11, 19, 29, ... en tallfølge, mens 1 + 5 + 11 + 19 + 29 + ... er en tallrekke. Vi kan summere slike rekker, selv om de er uendelige.\n", + "\n", + "Noen rekkesummer går mot uendelig mens andre går mot en bestemt verdi. Vi kan utlede formler for å regne ut summen av slike rekker, men vi kan også lage programmer som gjør det. La oss si at vi har denne rekka (ei såkalt uendelig geometrisk rekke):\n", + "\n", + "$1 + \\frac{2}{3} + \\frac{4}{9} + \\frac{8}{27} + ...$\n", + "\n", + "Vi kan regne ut summen av denne rekka ved å først kjenne igjen et mønster i tallmengden. Vi kan vise at det _n_-te tallet i rekka er $\\left(\\frac{2}{3}\\right)^n$. Deretter kan vi programmere ei løkke som legger sammen så mange av disse tallene som mulig. Vi tilnærmer altså den uendelige rekka med et endelig antall ledd. Det kan vi gjøre slik" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2.9999999999999987\n" + ] + } + ], + "source": [ + "N = 100\n", + "S = 0\n", + "\n", + "for n in range(N):\n", + " S = S + (2/3)**n # summen er lik forrige sum + sum av nytt tall\n", + "print(S)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Den nøyaktive, analytiske verdien vi kan få dersom vi uleder en summeformel for rekka, er 3 (uten desimaltall). Men når vi legger sammen de 100 første tallene i programmet ovenfor, får vi faktisk et tall som er ganske nærme. Det er ikke verst! Vi får sjeldent helt nøyaktige svar når vi bruker slike metoder, men vi kommer ganske nærme." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Naturvitenskapelige problemer\n", + "\n", + "Det som er ekstra morsomt med å løse problemer iterativt, er at vi ofte løser ting på samme måte på tvers av ulike fag. Se bare på de tre ulike programmene nedenfor, fra fagområdene fysikk og biologi. Du kan også sammenlikne med det du har lært om følger og rekker." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "I løpet av 10 sekunder falt steinen 490.01960014606396 m.\n" + ] + } + ], + "source": [ + "# Fysikkeksempel\n", + "\n", + "tid = 10 # slutt-tid i sekunder\n", + "dt = 0.001 # tidssteg mellom hver iterasjon\n", + "t = 0 # start-tid\n", + "a = 9.8 # akselerasjonen til et legeme\n", + "\n", + "v = 0 # startfart i m/s\n", + "s = 0 # startposisjon i m\n", + "\n", + "while t <= tid:\n", + " v = v + a*dt # bevegelsesformel for hastighet (konstant a)\n", + " s = s + v*dt # bevegelsesformel for posisjon (konstant v)\n", + " t = t + dt # oppdaterer tida med dt\n", + "\n", + "print(\"I løpet av\", tid, \"sekunder falt steinen\", s, \"m.\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Beskriv hva programmet ovenfor gjør. Problemet kan løses relativt enkelt ved hjelp av formler, men kan du tenke deg hvorfor denne måten å gjøre det på kan være nyttig likevel?\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Antall bakterier er: 23737\n" + ] + } + ], + "source": [ + "B0 = 100 # antall bakterier ved t = 0\n", + "B = B0\n", + "antall_timer = 30 # slutt-tid i timer\n", + "t = 0 # start-tid\n", + "vekst = 1.20 # vekstfaktor\n", + "\n", + "for i in range(antall_timer):\n", + " B = B*vekst\n", + "\n", + "print(\"Antall bakterier er:\", int(B))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Forklar hva programmet ovenfor gjør. Dette programmet gjør det samme som å sette t = 30 inn i funksjonen $B(t) = 100\\cdot 1.20^t$. Hva beskriver denne funksjonen, og hvorfor kan det være nyttig å lage et program for å regne ut dette når det er såpass lett å løse analytisk?\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "De to programmene ovenfor benytter samme løsningsstrategi: Ut fra en startbetingelse (startposisjon og startfart eller antall bakterier til å begynne med) regner vi ut utviklingen over tid i et system (enten posisjonen til en stein som faller, eller antall bakterier til slutt), gitt noen premisser for systemet (henholdsvis akselerasjon og vekstfaktor). Det er altså mange likheter mellom måten vi løser problemene på.\n", + "\n", + "Fordelen ved å bruke programmering til å løse slike problemer, er at det er lett generaliserbart. Selv om det finnes formler som ganske nøyaktig kan beskrive posisjonen til steinen ved enhver tid, er det ikke så lett å forutse posisjonen til en fallskjermhopper, der akselerasjonen varierer ganske mye, eller veksten til bakterier hvis den avhenger av temperatur. Alt dette er relativt enkelt å legge til i programmene våre, mens de analytiske (formelbaserte) løsningene blir veldig kompliserte, og ofte uløselige.\n", + "\n", + "For eksempel kan vi enkelt legge inn en temperaturavhengighet i bakterieveksten vår slik:" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Antall bakterier er: 229430\n" + ] + } + ], + "source": [ + "B = 100\n", + "antall_timer = 30\n", + "vekst_liste = [1.20, 1.30, 1.42, 1.48]\n", + "temperatur = 30\n", + "\n", + "for i in range(antall_timer): \n", + " if 30 <= temperatur <= 40: \n", + " vekst = vekst_liste[0]\n", + " elif 40 < temperatur < 52: \n", + " vekst = vekst_liste[1]\n", + " elif 53 <= temperatur <= 65: \n", + " vekst = vekst_liste[2]\n", + " else:\n", + " vekst = vekst_liste[3] \n", + " B = B*vekst \n", + " temperatur = temperatur + 1\n", + "\n", + "print(\"Antall bakterier er:\", int(B))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Nå har vi egentlig lagd ulike modeller for to forskjellige systemer. Utvikling, testing og utforsking av modeller skal vi se mye på seinere. Her er hovedpoenget at du skal se hvordan løkker kan brukes til å løse problemer på en effektiv, robust og relativt intuitiv måte." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Nøstede løkker\n", + "Nøstede løkker er løkker inni løkker. Da gjelder det å holde tunga rett i munnen. La oss bruke et eksempel for å forklare hvordan det virker:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "i | j\n", + "-----\n", + "0 | 1\n", + "0 | 2\n", + "1 | 1\n", + "1 | 2\n" + ] + } + ], + "source": [ + "print(\"i | j\")\n", + "print(\"-----\")\n", + "for i in range(2):\n", + " for j in range(1,3):\n", + " print(i,\"|\", j)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Vi ser at den innerste løkka, som bruker _j_ som tellevariabel, gjentas to ganger for hver gang den ytterste løkka går. Først er altså _i = 0_. Det er første runde i den ytre løkka. Mens _i = 0_ går den indre løkka to ganger, en gang for _j = 1_ og en gang for _j = 2_. Deretter går neste runde i den ytre løkka, og _i = 1_. Den indre løkka går igjen to ganger, en gang for _j = 1_ og en gang for _j = 2_. Totalt har vi altså gått fire løkkerunder.\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Lag et program som printer ut denne løkketabellen:\n", + "\n", + "| a | b |\n", + "|---|---|\n", + "|1|0|\n", + "|1|2|\n", + "|1|4|\n", + "|2|0|\n", + "|2|2|\n", + "|2|4|\n", + "|3|0|\n", + "|3|2|\n", + "|3|4|\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "print(\"i | j\")\n", + "print(\"-----\")\n", + "for i in range(1,4):\n", + " for j in range(0,5,2):\n", + " print(i,\"|\", j)\n", + "```\n", + "````" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Oppgaver\n", + "``````{tab-set}\n", + "`````{tab-item} Grunnleggende oppgaver\n", + "````{admonition} Oppgave 4.1\n", + ":class: tip\n", + "Sammenlikn programmene nedenfor. Beskriv eventuelle forskjeller og likheter.\n", + "\n", + "```{code-block} Python\n", + "partall = 0\n", + "\n", + "for i in range(5):\n", + " partall = partall + 2\n", + " print(partall)\n", + "```\n", + "```{code-block} Python\n", + "partall = 0\n", + "\n", + "while partall < 10:\n", + " partall = partall + 2\n", + " print(partall)\n", + "```\n", + "````\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "Begge programmene gir samme input. I det første programmet bruker vi en telleløkke som gjentar en operasjon (legger til 2 til variabelen partall) 5 ganger. I det andre programmet bruker vi en tilstandsløkke som legger 2 til partallsvariabelene helt til partall ikke er mindre enn 10.\n", + "````\n", + "\n", + "````{admonition} Oppgave 4.2\n", + ":class: tip\n", + "Lag en løkketabell med utgangspunkt i følgende kode:\n", + "```{code-block} Python\n", + "a = 0\n", + "\n", + "for i in range(5):\n", + " a = a + 1\n", + " b = a*i\n", + "```\n", + "````\n", + "```{admonition} Løsningforslag\n", + ":class: tip, dropdown\n", + "| Løkkerunde | i | a | b |\n", + "|------------|---|---|---|\n", + "| Startverdi | - | 0 | - |\n", + "| 1 | 0 | 1 | 0 |\n", + "| 2 | 1 | 2 | 2 |\n", + "| 3 | 2 | 3 | 6 |\n", + "| 4 | 3 | 4 | 12|\n", + "| 5 | 4 | 5 | 20|\n", + "```\n", + "\n", + "```{admonition} Oppgave 4.3\n", + ":class: tip\n", + "Lag et program som skriver ut \"Du er flink til å programmere!\" tusen ganger. Hvilken funksjon har \"tellevariabelen\" (_i_) her?\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "for i in range(1000):\n", + " print(\"Du er flink til å programmere!\")\n", + "```\n", + "Vi bruker ikke tellevariabelen til utregning eller output, men den teller i bakgrunnen slik at løkka går 1000 ganger. Hver gang løkka går, får variabelen _i_ en ny verdi (først 0, så 1, så 2, osv. opp til 999).\n", + "````\n", + "\n", + "```{admonition} Oppgave 4.4\n", + ":class: tip\n", + "Programmet nedenfor skal finne summen av de 100 første tallene i en tallfølge der hvert ledd er den dobbelte av det forrige. Forklar hvordan programmet fungerer. Endre gjerne på ulike variabler og test hva utfallet blir for å forstå hvordan programmet fungerer.\n", + "\n", + "\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "Vi starter med å definere variablene våre. Variabelen _tall_ representerer et tall som dobles hver gang vi kjører løkka, _summen_ inneholder summen av alle disse tallene, og øker med _tall_ hver gang løkka kjører. Tellevariabelen _i_ sørger for at vi legger sammen 100 tall (den går fra 0 til 99), og har ingen funksjon utenom dette. Til slutt skriver vi ut summen av alle disse tallene.\n", + "````\n", + "\n", + "```{admonition} Oppgave 4.5\n", + ":class: tip\n", + "Skriv om programmet ovenfor slik at du benytter en while-løkke istedenfor en for-løkke.\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "tall = 1\n", + "summen = 0\n", + "i = 0\n", + "\n", + "while i < 100:\n", + " summen = summen + tall\n", + " tall = tall*2\n", + " i = i + 1\n", + "\n", + "print(summen)\n", + "```\n", + "````\n", + "\n", + "````{admonition} Oppgave 4.6\n", + ":class: tip\n", + "Hva skrives ut i følgende program? Prøv å undersøke dette for hånd. Til slutt kan du sjekke ved å kopiere programmet inn i en editor og kjøre det.\n", + "\n", + "```{code-block} Python\n", + "a = 0\n", + "\n", + "for i in range(5):\n", + " b = a*i\n", + " print(b)\n", + " a = a + 1\n", + "print(a)\n", + "```\n", + "````\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "Husk at print som skjer inni løkka gjør at vi får output hver gang løkka går, mens print utenfor løkka gir sluttverdien til variabelen etter at løkka har kjørt. Siden _i_ får verdien 0, 1, 2, 3 og 4, får _b_ verdien 0, 1, 4, 9 og 16, siden _a_ øker med 1 hver gang løkka går. Det betyr at 0, 1, 4, 9, 16 skrives ut, etterfulgt av sluttverdien til _a_, 5.\n", + "````\n", + "\n", + "```{admonition} Oppgave 4.7\n", + ":class: tip\n", + "Bruk turtle-grafikk til å tegne et hus. Du bestemmer selv hvor detaljert huset skal være.\n", + "```\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "Mulighetene er uendelige, men her er et enkelt forslag:\n", + "```{code-block} Python\n", + "from turtle import *\n", + "\n", + "for i in range(4):\n", + " forward(100)\n", + " right(90)\n", + " \n", + "for i in range(3):\n", + " forward(100)\n", + " left(120)\n", + "```\n", + "````\n", + "\n", + "`````\n", + "\n", + "`````{tab-item} Matematikk\n", + "```{admonition} Oppgave 4.8\n", + ":class: tip\n", + "Bruk turtle-grafikk til å tegne en hundrekant. Hva slags form minner dette deg om?\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "from turtle import *\n", + "\n", + "sidelengde = 5\n", + "n = 100\n", + "vinkel = 360/n\n", + "\n", + "for i in range(n):\n", + " forward(sidelengde)\n", + " left(vinkel)\n", + "```\n", + "Hundrekanten minner om en sirkel. Det er faktisk slik at når _n_ nærmer seg uendelig, får vi en perfekt sirkel! En sirkel er altså en slags uendeligkant.\n", + "````\n", + "\n", + "```{admonition} Oppgave 4.9\n", + ":class: tip\n", + "Programmet nedenfor skal regne ut hvor lang tid det tar før du har doblet beløpet ditt i banken gitt en årlig rente på 5 \\% og en startkapital på 5000 kroner, men programmet fungerer ikke som det skal. Hva er feil? Rett opp programmet slik at det fungerer.\n", + "\n", + "\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "Feilen er ikke kodeteknisk, men matematisk. Vi må enten definere rente som 1.05 eller gjøre slik i løkka:\n", + "```{code-block} Python\n", + "startkapital = 5000\n", + "penger = startkapital\n", + "år = 0\n", + "rente = 0.05\n", + "\n", + "while penger < startkapital*2:\n", + " penger = penger + penger*rente\n", + " år = år + 1\n", + " \n", + "print(\"Det tar\", år, \"år å doble beløpet.\")\n", + "```\n", + "````\n", + "\n", + "```{admonition} Oppgave 4.10\n", + ":class: tip\n", + "Lag et program som regner ut denne summen:\n", + "$\\sum_{n = 0}^{50} \\frac{1}{2^n}$\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "s = 0\n", + "n = 0\n", + "while n <= 50:\n", + " s = s + 1/2**n\n", + " n = n + 1\n", + "print(\"Summen er lik:\", s)\n", + "```\n", + "````\n", + "\n", + "```{admonition} Oppgave 4.11\n", + ":class: tip\n", + "Lag et program som regner ut denne summen:\n", + "\n", + "$\\sum_{n = 2}^{16} n^2 + n + 1$\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "s = 0\n", + "n = 2\n", + "while n <= 16:\n", + " s = s + (n**2 + 1 + n)\n", + " n = n + 1\n", + "print(\"Summen er lik:\", s)\n", + "```\n", + "````\n", + "\n", + "```{admonition} Oppgave 4.12\n", + ":class: tip\n", + "Fibonnacifølgen er en kjent tallfølge med heltall der hvert tall etter det første er summen av de to foregående. Følgen starter slik: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ...\n", + "\n", + "Lag et program som finner tall nr. _n_ i rekka.\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "x0 = 0\n", + "x1 = 1\n", + "n = 100\n", + "\n", + "for i in range(n):\n", + " print(f'Fibonaccitall nr. {i+1} er: {x1}')\n", + " x0_ny = x1\n", + " x1 = x1 + x0\n", + " x0 = x0_ny\n", + "```\n", + "````\n", + "\n", + "```{admonition} Oppgave 4.13\n", + ":class: tip\n", + "Lag et program som viser at summen av denne rekka er 4.5:\n", + "\n", + "$\\displaystyle 3 + 1 + \\frac{1}{3} + \\frac{1}{9} + \\frac{1}{27} + ...$\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "Rekka kan skrives slik: $3 + \\sum^{\\infty}{i=0} \\frac{1}{3**i}$. Vi kan ikke summere et uendelig antall ledd på en datamaskin. Derfor tilnærmer vi svaret ved å bruke svært mange ledd, for eksempel 10 000.\n", + "\n", + "```{code-block} Python\n", + "N = 10000\n", + "s = 3\n", + "for i in range(N+1): # for at rekka summes fra og med 0 til og med N\n", + " s = s + 1/3**i\n", + "print(s)\n", + "```\n", + "````\n", + "\n", + "```{admonition} Oppgave 4.14\n", + ":class: tip\n", + "I kombinatorikk er _n-fakultet_ definert som produktet av alle heltall fra og med 1 til og med _n_. Dette kan vi skrive slik:\n", + "\n", + "$n! = \\prod_{k=1}^{n} k$\n", + "\n", + "Lag en funksjon som regner ut fakultetet av et tall.\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "n = int(input(\"Skriv inn n:\"))\n", + "fakultet = 1\n", + "for k in range(1, n+1) :\n", + " fakultet = fakultet*k\n", + "print(\"n! =\", fakultet)\n", + "```\n", + "````\n", + "`````\n", + "\n", + "`````{tab-item} Naturvitenskap\n", + "```{admonition} Oppgave 4.15 (biologi)\n", + ":class: tip\n", + "Tøffeldyr formerer seg ukjønnet annenhver time dersom de befinner seg i en omgivelse med temperatur på $20 ^{\\circ}C$.\n", + "\n", + "Skriv et program som regner ut og skriver ut hvor mange tøffeldyr det vil være dersom vi begynner med 5 tøffeldyr som formerer seg ukjønnet i løpet av 24 timer. Du kan anta at ingen tøffeldyr dør.\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "toeffeldyr = 5\n", + "for time in range(2, 25, 2):\n", + " toeffeldyr = toeffeldyr*2\n", + "print(\"Antall tøffeldyr etter 24 timer :\", toeffeldyr)\n", + "```\n", + "````\n", + "\n", + "```{admonition} Oppgave 4.16 (fysikk)\n", + ":class: tip\n", + "Vi kan bruke Bohrs formel til å regne ut frekvensen til et foton som emitteres når et elektron i et hydrogenatom deeksiterer fra skall $n$ til $m$:\n", + "\n", + "$$f =\\frac{B}{h}\\cdot \\left( \\frac{1}{m^2} - \\frac{1}{n^2} \\right)$$\n", + "\n", + "der $B = 2.18\\cdot 10^{-18} J$ er Bohrs konstant, $h = 6.63\\cdot 10^{-34}$ m$^2$kg s$^{-1}$. Vi har også en sammenheng mellom frekvens og bølgelengden til fotonene:\n", + "\n", + "$$\\lambda = \\frac{c}{f}$$\n", + "\n", + "der $c = 3.00\\cdot10^8$ m/s er lysets hastighet i vakuum.\n", + "\n", + "a) Lag et program som skriver ut bølgelengden ti lyset som emitteres ved en gitt deeksitasjon. Test programmet ved deeksitasjon fra $n = 5$ til $n = 2$. Dette skal gi $\\lambda = 434.47 \\ nm$.\n", + "\n", + "b) Lag et program som regner ut alle bølgelengdene til fotonene som emitteres når atomet deeksiterer fra et skall _n_ til alle mulige energinivåer _m_.\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "a)\n", + "\n", + "```{code-block} Python\n", + "B = 2.18E-18\n", + "h = 6.63E-34\n", + "c = 3e8\n", + "\n", + "n = 5\n", + "m = 2\n", + "\n", + "f = B/h *(1/ m**2 - 1/n **2)\n", + "bl = c/f # bølgelengde i meter\n", + "bl_nm = bl*1E9 # bølgelengde i nanometer\n", + "print(\"Bølgelengden til fotonet fra n =\", n, \"til m =\", m, \":\", round(bl_nm,2), \"nm\")\n", + "```\n", + "\n", + "b)\n", + "```{code-block} Python\n", + "n = int(input(\"Skriv inn en verdi for n:\"))\n", + "\n", + "B = 2.18E-18\n", + "h = 6.63E-34\n", + "c = 3e8\n", + "for m in range(n-1, 0, -1): # Går baklengs, men kan godt gå forlengs med range(1, n)\n", + " f = B/h *(1/ m**2 - 1/n **2)\n", + " bl = c/f # bølgelengde i meter\n", + " bl_nm = bl*1E9 # bølgelengde i nanometer\n", + " print(\"Bølgelengden til fotonet fra n =\", n, \"til m =\", m, \":\", round(bl_nm,2), \"nm\")\n", + "```\n", + "````\n", + "\n", + "```{admonition} Oppgave 4.17 (fysikk)\n", + ":class: tip\n", + "Over tid vil den radioaktive strålingen i et radioaktivt stoff reduseres. Dette skjer fordi atomene i det radioaktive stoffet vil omdannes til andre grunnstoffer. Mengden $N(t)$ som gjenstår av det radioaktive stoffet etter ei tid $t$ kan finnes ved:\n", + "\n", + "$N(t) = N_0e^{-at}$\n", + "\n", + "der $N_0$ er hvor mye radioaktivt stoff vi starter med ved tida $t = 0$. Verdien til $a$ forteller hvor raskt det radioaktive stoffet omdannes til andre grunnstoffer. Hvis vi kjenner halveringstida $T$, vil $a = \\frac{\\ln(2)}{T}$. \n", + "\n", + "Plutonium-239 har halveringstid på omtrent $T = 24\\ 000$ år. \n", + "Skriv et program som skriver ut hvor mye Plutonium-239 som gjenstår etter hvert 5000. år over en periode på 50 000 år dersom $N_0 = 4$ kg. \n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "from numpy import log, exp\n", + "N0 = 4\n", + "a = log(2)/24000\n", + "\n", + "for t in range(0, 50001, 5000):\n", + " N = N0*exp(-a*t)\n", + " print(\"Etter \", t, \"år gjenstår\", N0*exp(-a*t), \"kg av Plutonium-239.\")\n", + "```\n", + "````\n", + "`````\n", + "``````{tab-set}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Videoer\n", + "I videoene nedenfor kan du få en innføring eller repetisjon i den grunnleggende teorien bak løkker:\n", + "\n", + "``````{tab-set} \n", + "`````{tab-item} For-løkker\n", + "\n", + "\n", + "Når du har sett videoen, kan du gjøre følgende oppgave for å sjekke om du forstår innholdet:\n", + "\n", + "````{admonition} Underveisoppgave\n", + ":class: tip\n", + "Skriv et program som regner ut summen av alle heltallene fra og med 1 til og med 449 ved hjelp av en for-løkke.\n", + "````\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "s = 0\n", + "\n", + "for tall in range(1, 450):\n", + " s = s + tall\n", + " \n", + "print(\"Summen er:\", s)\n", + "```\n", + "````\n", + "`````\n", + "\n", + "`````{tab-item} While-løkker\n", + "\n", + "\n", + "Når du har sett videoen, kan du gjøre følgende oppgave for å sjekke om du forstår innholdet:\n", + "\n", + "````{admonition} Underveisoppgave\n", + ":class: tip\n", + "Skriv et program som regner ut summen av tallene fra og med 1 til og med 449 ved hjelp av en while-løkke.\n", + "````\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "s = 0\n", + "tall = 1\n", + "\n", + "while tall <= 449:\n", + " s = s + tall\n", + " tall = tall + 1\n", + "\n", + "print(\"Summen er:\", s)\n", + "```\n", + "````\n", + "`````\n", + "``````" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "celltoolbar": "Edit Metadata", + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.12" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/tema1_grunnleggende_programmering/programmeringsverktoy.ipynb b/_sources/docs/tema1_grunnleggende_programmering/programmeringsverktoy.ipynb new file mode 100644 index 00000000..5d685522 --- /dev/null +++ b/_sources/docs/tema1_grunnleggende_programmering/programmeringsverktoy.ipynb @@ -0,0 +1,155 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Programmeringsverktøy\n", + "\n", + "Vi ser her på to mye brukte verktøy i forbindelse med programmering, Jupyter Notebook og GitHub. Jupyter Notebook brukes til å skrive tekst, lage rapporter og kjøre programmer i samme system, mens GitHub er en plattform som gir _versjonskontroll_. Versjonskontroll kjenner du gjennom Dropbox, Onedrive, Google Disk og liknende. Det er en måte å spare på og dele programmene deres for hver endring dere gjør i programmet. Dette gjør det lett å gjenopprette tidligere versjoner dersom ting har gått skeis.\n", + "\n", + "## Jupyter Notebook" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "tags": [ + "remove-input" + ] + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import IFrame\n", + "IFrame(\"https://www.youtube.com/embed/4CsRUI_MOBU? autoplay=0&rel=0\", width=800, height=600)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Vi kan også lage rapporter med Jupyter Notebook:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import IFrame\n", + "IFrame(\"https://www.youtube.com/embed/bQAMrj07MxQ? autoplay=0&rel=0\", width=800, height=600)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2. GitHub* (frivillig)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "tags": [ + "remove-input" + ] + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import IFrame\n", + "IFrame(\"https://www.youtube.com/embed/Or3xpe0G9aM? autoplay=0&rel=0\", width=800, height=600)" + ] + } + ], + "metadata": { + "celltoolbar": "Edit Metadata", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.8" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/tema1_grunnleggende_programmering/quiz1.ipynb b/_sources/docs/tema1_grunnleggende_programmering/quiz1.ipynb new file mode 100644 index 00000000..5837f4f1 --- /dev/null +++ b/_sources/docs/tema1_grunnleggende_programmering/quiz1.ipynb @@ -0,0 +1,1198 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Quiz 1: Variabler og aritmetikk" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "tags": [ + "remove-input" + ] + }, + "outputs": [], + "source": [ + "from jupyterquiz import display_quiz" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "tags": [ + "remove-input" + ] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "var questionsyouVCDPnIJSZ=[\n", + " {\n", + " \"question\": \"Hva er output fra følgende kode?\",\n", + "\t \"code\": \"a=\\\"1\\\"\\nb=\\\"2\\\"\\nprint(a+b)\",\n", + " \"type\": \"multiple_choice\",\n", + " \"answers\": [\n", + " {\n", + " \"answer\": \"1\",\n", + " \"correct\": false,\n", + " \"feedback\": \"Feil. Variablene inneholder strenger. Strenger slås sammen når de addderes.\"\n", + " },\n", + " {\n", + " \"answer\": \"2\",\n", + " \"correct\": false,\n", + " \"feedback\": \"Feil. Variablene inneholder strenger. Strenger slås sammen når de addderes.\"\n", + " },\n", + " {\n", + " \"answer\": \"3\",\n", + " \"correct\": false,\n", + " \"feedback\": \"Feil. Variablene inneholder strenger. Strenger slås sammen når de addderes.\"\n", + " },\n", + " {\n", + " \"answer\": \"12\",\n", + " \"correct\": true,\n", + " \"feedback\": \"Riktig. Variablene inneholder strenger. Strenger slås sammen når de addderes.\"\n", + " },\n", + " {\n", + " \"answer\": \"error\",\n", + " \"correct\": false,\n", + " \"feedback\": \"Feil. Variablene inneholder strenger. Strenger slås sammen når de addderes.\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"question\": \"Hva skjer når du kjører følgende kode?\",\n", + "\t \"code\": \"print = \\\"Hei\\\"\",\n", + " \"type\": \"multiple_choice\",\n", + " \"answers\": [\n", + " {\n", + " \"answer\": \"\\\"Hei\\\" blir skrevet ut.\",\n", + " \"correct\": false,\n", + " \"feedback\": \"Feil. Korrekt syntaks for utskrift er: print(\\\"Hei\\\")\"\n", + " },\n", + " {\n", + " \"answer\": \"En feilmelding blir skrevet ut.\",\n", + " \"correct\": false,\n", + " \"feedback\": \"Feil. Det er fullt tillatt å skrive over print-funksjonen. Men nå finnes ikke print-funksjonen i programmet ditt mer, og du må restarte Python.\"\n", + " },\n", + " {\n", + " \"answer\": \"Programmet krasjer.\",\n", + " \"correct\": false,\n", + " \"feedback\": \"Feil. Et program krasjer ikke med mindre det skjer noe teknisk feil.\"\n", + " },\n", + " {\n", + " \"answer\": \"Ingenting skjer.\",\n", + " \"correct\": true,\n", + " \"feedback\": \"Riktig. Det er fullt tillatt å skrive over print-funksjonen. Men nå finnes ikke print-funksjonen i programmet ditt mer, og du må restarte Python.\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"question\": \"Hva er output?\",\n", + " \"code\": \"print(3>4)\",\n", + " \"type\": \"multiple_choice\",\n", + " \"answers\": [\n", + " {\n", + " \"answer\": \"En feilmelding blir skrevet ut.\",\n", + " \"correct\": false,\n", + " \"feedback\": \"Feil. Dette er en gyldig syntaks.\"\n", + " },\n", + " {\n", + " \"answer\": \"True.\",\n", + " \"correct\": false,\n", + " \"feedback\": \"Feil. 3 er ikke større enn 4.\"\n", + " },\n", + " {\n", + " \"answer\": \"False.\",\n", + " \"correct\": true,\n", + " \"feedback\": \"Riktig. 3 er ikke større enn 4, og vi får den boolske verdien False (merk at det alltid er stor forbokstav).\"\n", + " },\n", + " {\n", + " \"answer\": \"Ingenting skjer.\",\n", + " \"correct\": false,\n", + " \"feedback\": \"Feil.\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"question\": \"Hva er output fra følgende kode hvis du taster inn 1 og 2 i konsollen når du kjører programmet?\",\n", + "\t \"code\": \"a = input(\\\"tall 1: \\\")\\nb = input(\\\"tall 1: \\\")\\nb = float(b) \\nprint(a + b)\",\n", + " \"type\": \"multiple_choice\",\n", + " \"answers\": [\n", + " {\n", + " \"answer\": \"3\",\n", + " \"correct\": false,\n", + " \"feedback\": \"Feil. Den ene variabelen er streng, og den andre er heltall. Disse kan ikke adderes.\"\n", + " },\n", + " {\n", + " \"answer\": \"12\",\n", + " \"correct\": false,\n", + " \"feedback\": \"Feil. Den ene variabelen er streng, og den andre er heltall. Disse kan ikke adderes.\"\n", + " },\n", + " {\n", + " \"answer\": \"1\",\n", + " \"correct\": false,\n", + " \"feedback\": \"Feil. Den ene variabelen er streng, og den andre er heltall. Disse kan ikke adderes.\"\n", + " },\n", + " {\n", + " \"answer\": \"Feilmelding\",\n", + " \"correct\": true,\n", + " \"feedback\": \"Ja. Den ene variabelen er streng, og den andre er heltall. Disse kan ikke adderes.\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"question\": \"Hva er output fra følgende program?\",\n", + " \"code\": \"a = 5.0 \\nb = 3.0 \\nc = a + b \\na = 3.0 \\nd = 2.0 \\ne = a + c * d \\nprint(e)\",\n", + " \"type\": \"multiple_choice\",\n", + " \"answers\": [\n", + " {\n", + " \"answer\": \"18.0\",\n", + " \"correct\": false,\n", + " \"feedback\": \"Feil. Pass på regnerekkefølge og hold styr på innholdet i variablene.\"\n", + " },\n", + " {\n", + " \"answer\": \"15.0\",\n", + " \"correct\": false,\n", + " \"feedback\": \"Feil. Pass på regnerekkefølge og hold styr på innholdet i variablene.\"\n", + " },\n", + " {\n", + " \"answer\": \"22.0\",\n", + " \"correct\": false,\n", + " \"feedback\": \"Feil. Pass på regnerekkefølge og hold styr på innholdet i variablene.\"\n", + " },\n", + " {\n", + " \"answer\": \"19.0\",\n", + " \"correct\": true,\n", + " \"feedback\": \"Riktig.\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"question\": \"Hva er verdien til variablene nedenfor?\",\n", + " \"code\": \"a = 10 \\nb = 20 \\na = b\",\n", + " \"type\": \"multiple_choice\",\n", + " \"answers\": [\n", + " {\n", + " \"answer\": \"a = 20, b = 20\",\n", + " \"correct\": true,\n", + " \"feedback\": \"Riktig. I tredje linje får a verdien til b.\"\n", + " },\n", + " {\n", + " \"answer\": \"a = 20, b = 10\",\n", + " \"correct\": false,\n", + " \"feedback\": \"Feil. I tredje linje får a verdien til b, men ikke motsatt.\"\n", + " },\n", + " {\n", + " \"answer\": \"a = 10, b = 10\",\n", + " \"correct\": false,\n", + " \"feedback\": \"Feil. I tredje linje får a verdien til b.\"\n", + " },\n", + " {\n", + " \"answer\": \"a = 10, b = 20\",\n", + " \"correct\": false,\n", + " \"feedback\": \"Feil. I tredje linje får a verdien til b.\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"question\": \"Hvilke(n) kodesnutt(er) skriver ut 20 % av verdien til en variabel x?\",\n", + " \"type\": \"many_choice\",\n", + " \"answers\": [\n", + " {\n", + " \"answer\": \"print(20 % x)\",\n", + " \"correct\": false,\n", + " \"feedback\": \"Feil. Dette er faktisk riktig Python-syntaks, men den regner ikke ut prosent. Her får vi resten etter en heltallsdivisjon mellom 20 og x.\"\n", + " },\n", + " {\n", + " \"answer\": \"print(20% * x)\",\n", + " \"correct\": false,\n", + " \"feedback\": \"Feil. Dette gir feilmelding.\"\n", + " },\n", + " {\n", + " \"answer\": \"print(1.20 * x)\",\n", + " \"correct\": false,\n", + " \"feedback\": \"Feil. Her får du 120 % av verdien.\"\n", + " },\n", + " {\n", + " \"answer\": \"print(x - 0.8 * x)\",\n", + " \"correct\": true,\n", + " \"feedback\": \"Riktig.\"\n", + " },\n", + " {\n", + " \"answer\": \"print(0.2 * x)\",\n", + " \"correct\": true,\n", + " \"feedback\": \"Riktig.\"\n", + " }\n", + " ]\n", + " }\n", + "]\n", + ";\n", + " // Make a random ID\n", + "function makeid(length) {\n", + " var result = [];\n", + " var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';\n", + " var charactersLength = characters.length;\n", + " for (var i = 0; i < length; i++) {\n", + " result.push(characters.charAt(Math.floor(Math.random() * charactersLength)));\n", + " }\n", + " return result.join('');\n", + "}\n", + "\n", + "// Choose a random subset of an array. Can also be used to shuffle the array\n", + "function getRandomSubarray(arr, size) {\n", + " var shuffled = arr.slice(0), i = arr.length, temp, index;\n", + " while (i--) {\n", + " index = Math.floor((i + 1) * Math.random());\n", + " temp = shuffled[index];\n", + " shuffled[index] = shuffled[i];\n", + " shuffled[i] = temp;\n", + " }\n", + " return shuffled.slice(0, size);\n", + "}\n", + "\n", + "function printResponses(responsesContainer) {\n", + " var responses=JSON.parse(responsesContainer.dataset.responses);\n", + " var stringResponses='IMPORTANT!To preserve this answer sequence for submission, when you have finalized your answers:
  1. Copy the text in this cell below \"Answer String\"
  2. Double click on the cell directly below the Answer String, labeled \"Replace Me\"
  3. Select the whole \"Replace Me\" text
  4. Paste in your answer string and press shift-Enter.
  5. Save the notebook using the save icon or File->Save Notebook menu item



  6. Answer String:
    ';\n", + " console.log(responses);\n", + " responses.forEach((response, index) => {\n", + " if (response) {\n", + " console.log(index + ': ' + response);\n", + " stringResponses+= index + ': ' + response +\"
    \";\n", + " }\n", + " });\n", + " responsesContainer.innerHTML=stringResponses;\n", + "}\n", + "function check_mc() {\n", + " var id = this.id.split('-')[0];\n", + " //var response = this.id.split('-')[1];\n", + " //console.log(response);\n", + " //console.log(\"In check_mc(), id=\"+id);\n", + " //console.log(event.srcElement.id) \n", + " //console.log(event.srcElement.dataset.correct) \n", + " //console.log(event.srcElement.dataset.feedback)\n", + "\n", + " var label = event.srcElement;\n", + " //console.log(label, label.nodeName);\n", + " var depth = 0;\n", + " while ((label.nodeName != \"LABEL\") && (depth < 20)) {\n", + " label = label.parentElement;\n", + " console.log(depth, label);\n", + " depth++;\n", + " }\n", + "\n", + "\n", + "\n", + " var answers = label.parentElement.children;\n", + "\n", + " //console.log(answers);\n", + "\n", + "\n", + " // Split behavior based on multiple choice vs many choice:\n", + " var fb = document.getElementById(\"fb\" + id);\n", + "\n", + "\n", + "\n", + "\n", + " if (fb.dataset.numcorrect == 1) {\n", + " // What follows is for the saved responses stuff\n", + " var outerContainer = fb.parentElement.parentElement;\n", + " var responsesContainer = document.getElementById(\"responses\" + outerContainer.id);\n", + " if (responsesContainer) {\n", + " //console.log(responsesContainer);\n", + " var response = label.firstChild.innerText;\n", + " if (label.querySelector(\".QuizCode\")){\n", + " response+= label.querySelector(\".QuizCode\").firstChild.innerText;\n", + " }\n", + " console.log(response);\n", + " //console.log(document.getElementById(\"quizWrap\"+id));\n", + " var qnum = document.getElementById(\"quizWrap\"+id).dataset.qnum;\n", + " console.log(\"Question \" + qnum);\n", + " //console.log(id, \", got numcorrect=\",fb.dataset.numcorrect);\n", + " var responses=JSON.parse(responsesContainer.dataset.responses);\n", + " console.log(responses);\n", + " responses[qnum]= response;\n", + " responsesContainer.setAttribute('data-responses', JSON.stringify(responses));\n", + " printResponses(responsesContainer);\n", + " }\n", + " // End code to preserve responses\n", + " \n", + " for (var i = 0; i < answers.length; i++) {\n", + " var child = answers[i];\n", + " //console.log(child);\n", + " child.className = \"MCButton\";\n", + " }\n", + "\n", + "\n", + "\n", + " if (label.dataset.correct == \"true\") {\n", + " // console.log(\"Correct action\");\n", + " if (\"feedback\" in label.dataset) {\n", + " fb.textContent = jaxify(label.dataset.feedback);\n", + " } else {\n", + " fb.textContent = \"Correct!\";\n", + " }\n", + " label.classList.add(\"correctButton\");\n", + "\n", + " fb.className = \"Feedback\";\n", + " fb.classList.add(\"correct\");\n", + "\n", + " } else {\n", + " if (\"feedback\" in label.dataset) {\n", + " fb.textContent = jaxify(label.dataset.feedback);\n", + " } else {\n", + " fb.textContent = \"Incorrect -- try again.\";\n", + " }\n", + " //console.log(\"Error action\");\n", + " label.classList.add(\"incorrectButton\");\n", + " fb.className = \"Feedback\";\n", + " fb.classList.add(\"incorrect\");\n", + " }\n", + " }\n", + " else {\n", + " var reset = false;\n", + " var feedback;\n", + " if (label.dataset.correct == \"true\") {\n", + " if (\"feedback\" in label.dataset) {\n", + " feedback = jaxify(label.dataset.feedback);\n", + " } else {\n", + " feedback = \"Correct!\";\n", + " }\n", + " if (label.dataset.answered <= 0) {\n", + " if (fb.dataset.answeredcorrect < 0) {\n", + " fb.dataset.answeredcorrect = 1;\n", + " reset = true;\n", + " } else {\n", + " fb.dataset.answeredcorrect++;\n", + " }\n", + " if (reset) {\n", + " for (var i = 0; i < answers.length; i++) {\n", + " var child = answers[i];\n", + " child.className = \"MCButton\";\n", + " child.dataset.answered = 0;\n", + " }\n", + " }\n", + " label.classList.add(\"correctButton\");\n", + " label.dataset.answered = 1;\n", + " fb.className = \"Feedback\";\n", + " fb.classList.add(\"correct\");\n", + "\n", + " }\n", + " } else {\n", + " if (\"feedback\" in label.dataset) {\n", + " feedback = jaxify(label.dataset.feedback);\n", + " } else {\n", + " feedback = \"Incorrect -- try again.\";\n", + " }\n", + " if (fb.dataset.answeredcorrect > 0) {\n", + " fb.dataset.answeredcorrect = -1;\n", + " reset = true;\n", + " } else {\n", + " fb.dataset.answeredcorrect--;\n", + " }\n", + "\n", + " if (reset) {\n", + " for (var i = 0; i < answers.length; i++) {\n", + " var child = answers[i];\n", + " child.className = \"MCButton\";\n", + " child.dataset.answered = 0;\n", + " }\n", + " }\n", + " label.classList.add(\"incorrectButton\");\n", + " fb.className = \"Feedback\";\n", + " fb.classList.add(\"incorrect\");\n", + " }\n", + " // What follows is for the saved responses stuff\n", + " var outerContainer = fb.parentElement.parentElement;\n", + " var responsesContainer = document.getElementById(\"responses\" + outerContainer.id);\n", + " if (responsesContainer) {\n", + " //console.log(responsesContainer);\n", + " var response = label.firstChild.innerText;\n", + " if (label.querySelector(\".QuizCode\")){\n", + " response+= label.querySelector(\".QuizCode\").firstChild.innerText;\n", + " }\n", + " console.log(response);\n", + " //console.log(document.getElementById(\"quizWrap\"+id));\n", + " var qnum = document.getElementById(\"quizWrap\"+id).dataset.qnum;\n", + " console.log(\"Question \" + qnum);\n", + " //console.log(id, \", got numcorrect=\",fb.dataset.numcorrect);\n", + " var responses=JSON.parse(responsesContainer.dataset.responses);\n", + " if (label.dataset.correct == \"true\") {\n", + " if (typeof(responses[qnum]) == \"object\"){\n", + " if (!responses[qnum].includes(response))\n", + " responses[qnum].push(response);\n", + " } else{\n", + " responses[qnum]= [ response ];\n", + " }\n", + " } else {\n", + " responses[qnum]= response;\n", + " }\n", + " console.log(responses);\n", + " responsesContainer.setAttribute('data-responses', JSON.stringify(responses));\n", + " printResponses(responsesContainer);\n", + " }\n", + " // End save responses stuff\n", + "\n", + "\n", + "\n", + " var numcorrect = fb.dataset.numcorrect;\n", + " var answeredcorrect = fb.dataset.answeredcorrect;\n", + " if (answeredcorrect >= 0) {\n", + " fb.textContent = feedback + \" [\" + answeredcorrect + \"/\" + numcorrect + \"]\";\n", + " } else {\n", + " fb.textContent = feedback + \" [\" + 0 + \"/\" + numcorrect + \"]\";\n", + " }\n", + "\n", + "\n", + " }\n", + "\n", + " if (typeof MathJax != 'undefined') {\n", + " var version = MathJax.version;\n", + " console.log('MathJax version', version);\n", + " if (version[0] == \"2\") {\n", + " MathJax.Hub.Queue([\"Typeset\", MathJax.Hub]);\n", + " } else if (version[0] == \"3\") {\n", + " MathJax.typeset([fb]);\n", + " }\n", + " } else {\n", + " console.log('MathJax not detected');\n", + " }\n", + "\n", + "}\n", + "\n", + "function make_mc(qa, shuffle_answers, outerqDiv, qDiv, aDiv, id) {\n", + " var shuffled;\n", + " if (shuffle_answers == \"True\") {\n", + " //console.log(shuffle_answers+\" read as true\");\n", + " shuffled = getRandomSubarray(qa.answers, qa.answers.length);\n", + " } else {\n", + " //console.log(shuffle_answers+\" read as false\");\n", + " shuffled = qa.answers;\n", + " }\n", + "\n", + "\n", + " var num_correct = 0;\n", + "\n", + "\n", + "\n", + " shuffled.forEach((item, index, ans_array) => {\n", + " //console.log(answer);\n", + "\n", + " // Make input element\n", + " var inp = document.createElement(\"input\");\n", + " inp.type = \"radio\";\n", + " inp.id = \"quizo\" + id + index;\n", + " inp.style = \"display:none;\";\n", + " aDiv.append(inp);\n", + "\n", + " //Make label for input element\n", + " var lab = document.createElement(\"label\");\n", + " lab.className = \"MCButton\";\n", + " lab.id = id + '-' + index;\n", + " lab.onclick = check_mc;\n", + " var aSpan = document.createElement('span');\n", + " aSpan.classsName = \"\";\n", + " //qDiv.id=\"quizQn\"+id+index;\n", + " if (\"answer\" in item) {\n", + " aSpan.innerHTML = jaxify(item.answer);\n", + " //aSpan.innerHTML=item.answer;\n", + " }\n", + " lab.append(aSpan);\n", + "\n", + " // Create div for code inside question\n", + " var codeSpan;\n", + " if (\"code\" in item) {\n", + " codeSpan = document.createElement('span');\n", + " codeSpan.id = \"code\" + id + index;\n", + " codeSpan.className = \"QuizCode\";\n", + " var codePre = document.createElement('pre');\n", + " codeSpan.append(codePre);\n", + " var codeCode = document.createElement('code');\n", + " codePre.append(codeCode);\n", + " codeCode.innerHTML = item.code;\n", + " lab.append(codeSpan);\n", + " //console.log(codeSpan);\n", + " }\n", + "\n", + " //lab.textContent=item.answer;\n", + "\n", + " // Set the data attributes for the answer\n", + " lab.setAttribute('data-correct', item.correct);\n", + " if (item.correct) {\n", + " num_correct++;\n", + " }\n", + " if (\"feedback\" in item) {\n", + " lab.setAttribute('data-feedback', item.feedback);\n", + " }\n", + " lab.setAttribute('data-answered', 0);\n", + "\n", + " aDiv.append(lab);\n", + "\n", + " });\n", + "\n", + " if (num_correct > 1) {\n", + " outerqDiv.className = \"ManyChoiceQn\";\n", + " } else {\n", + " outerqDiv.className = \"MultipleChoiceQn\";\n", + " }\n", + "\n", + " return num_correct;\n", + "\n", + "}\n", + "function check_numeric(ths, event) {\n", + "\n", + " if (event.keyCode === 13) {\n", + " ths.blur();\n", + "\n", + " var id = ths.id.split('-')[0];\n", + "\n", + " var submission = ths.value;\n", + " if (submission.indexOf('/') != -1) {\n", + " var sub_parts = submission.split('/');\n", + " //console.log(sub_parts);\n", + " submission = sub_parts[0] / sub_parts[1];\n", + " }\n", + " //console.log(\"Reader entered\", submission);\n", + "\n", + " if (\"precision\" in ths.dataset) {\n", + " var precision = ths.dataset.precision;\n", + " // console.log(\"1:\", submission)\n", + " submission = Math.round((1 * submission + Number.EPSILON) * 10 ** precision) / 10 ** precision;\n", + " // console.log(\"Rounded to \", submission, \" precision=\", precision );\n", + " }\n", + "\n", + "\n", + " //console.log(\"In check_numeric(), id=\"+id);\n", + " //console.log(event.srcElement.id) \n", + " //console.log(event.srcElement.dataset.feedback)\n", + "\n", + " var fb = document.getElementById(\"fb\" + id);\n", + " fb.style.display = \"none\";\n", + " fb.textContent = \"Incorrect -- try again.\";\n", + "\n", + " var answers = JSON.parse(ths.dataset.answers);\n", + " //console.log(answers);\n", + "\n", + " var defaultFB = \"\";\n", + " var correct;\n", + " var done = false;\n", + " answers.every(answer => {\n", + " //console.log(answer.type);\n", + "\n", + " correct = false;\n", + " // if (answer.type==\"value\"){\n", + " if ('value' in answer) {\n", + " if (submission == answer.value) {\n", + " fb.textContent = jaxify(answer.feedback);\n", + " correct = answer.correct;\n", + " //console.log(answer.correct);\n", + " done = true;\n", + " }\n", + " // } else if (answer.type==\"range\") {\n", + " } else if ('range' in answer) {\n", + " //console.log(answer.range);\n", + " if ((submission >= answer.range[0]) && (submission < answer.range[1])) {\n", + " fb.textContent = jaxify(answer.feedback);\n", + " correct = answer.correct;\n", + " //console.log(answer.correct);\n", + " done = true;\n", + " }\n", + " } else if (answer.type == \"default\") {\n", + " defaultFB = answer.feedback;\n", + " }\n", + " if (done) {\n", + " return false; // Break out of loop if this has been marked correct\n", + " } else {\n", + " return true; // Keep looking for case that includes this as a correct answer\n", + " }\n", + " });\n", + "\n", + " if ((!done) && (defaultFB != \"\")) {\n", + " fb.innerHTML = jaxify(defaultFB);\n", + " //console.log(\"Default feedback\", defaultFB);\n", + " }\n", + "\n", + " fb.style.display = \"block\";\n", + " if (correct) {\n", + " ths.className = \"Input-text\";\n", + " ths.classList.add(\"correctButton\");\n", + " fb.className = \"Feedback\";\n", + " fb.classList.add(\"correct\");\n", + " } else {\n", + " ths.className = \"Input-text\";\n", + " ths.classList.add(\"incorrectButton\");\n", + " fb.className = \"Feedback\";\n", + " fb.classList.add(\"incorrect\");\n", + " }\n", + "\n", + " // What follows is for the saved responses stuff\n", + " var outerContainer = fb.parentElement.parentElement;\n", + " var responsesContainer = document.getElementById(\"responses\" + outerContainer.id);\n", + " if (responsesContainer) {\n", + " console.log(submission);\n", + " var qnum = document.getElementById(\"quizWrap\"+id).dataset.qnum;\n", + " //console.log(\"Question \" + qnum);\n", + " //console.log(id, \", got numcorrect=\",fb.dataset.numcorrect);\n", + " var responses=JSON.parse(responsesContainer.dataset.responses);\n", + " console.log(responses);\n", + " if (submission == ths.value){\n", + " responses[qnum]= submission;\n", + " } else {\n", + " responses[qnum]= ths.value + \"(\" + submission +\")\";\n", + " }\n", + " responsesContainer.setAttribute('data-responses', JSON.stringify(responses));\n", + " printResponses(responsesContainer);\n", + " }\n", + " // End code to preserve responses\n", + "\n", + " if (typeof MathJax != 'undefined') {\n", + " var version = MathJax.version;\n", + " console.log('MathJax version', version);\n", + " if (version[0] == \"2\") {\n", + " MathJax.Hub.Queue([\"Typeset\", MathJax.Hub]);\n", + " } else if (version[0] == \"3\") {\n", + " MathJax.typeset([fb]);\n", + " }\n", + " } else {\n", + " console.log('MathJax not detected');\n", + " }\n", + " return false;\n", + " }\n", + "\n", + "}\n", + "\n", + "function isValid(el, charC) {\n", + " //console.log(\"Input char: \", charC);\n", + " if (charC == 46) {\n", + " if (el.value.indexOf('.') === -1) {\n", + " return true;\n", + " } else if (el.value.indexOf('/') != -1) {\n", + " var parts = el.value.split('/');\n", + " if (parts[1].indexOf('.') === -1) {\n", + " return true;\n", + " }\n", + " }\n", + " else {\n", + " return false;\n", + " }\n", + " } else if (charC == 47) {\n", + " if (el.value.indexOf('/') === -1) {\n", + " if ((el.value != \"\") && (el.value != \".\")) {\n", + " return true;\n", + " } else {\n", + " return false;\n", + " }\n", + " } else {\n", + " return false;\n", + " }\n", + " } else if (charC == 45) {\n", + " var edex = el.value.indexOf('e');\n", + " if (edex == -1) {\n", + " edex = el.value.indexOf('E');\n", + " }\n", + "\n", + " if (el.value == \"\") {\n", + " return true;\n", + " } else if (edex == (el.value.length - 1)) { // If just after e or E\n", + " return true;\n", + " } else {\n", + " return false;\n", + " }\n", + " } else if (charC == 101) { // \"e\"\n", + " if ((el.value.indexOf('e') === -1) && (el.value.indexOf('E') === -1) && (el.value.indexOf('/') == -1)) {\n", + " // Prev symbol must be digit or decimal point:\n", + " if (el.value.slice(-1).search(/\\d/) >= 0) {\n", + " return true;\n", + " } else if (el.value.slice(-1).search(/\\./) >= 0) {\n", + " return true;\n", + " } else {\n", + " return false;\n", + " }\n", + " } else {\n", + " return false;\n", + " }\n", + " } else {\n", + " if (charC > 31 && (charC < 48 || charC > 57))\n", + " return false;\n", + " }\n", + " return true;\n", + "}\n", + "\n", + "function numeric_keypress(evnt) {\n", + " var charC = (evnt.which) ? evnt.which : evnt.keyCode;\n", + "\n", + " if (charC == 13) {\n", + " check_numeric(this, evnt);\n", + " } else {\n", + " return isValid(this, charC);\n", + " }\n", + "}\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "function make_numeric(qa, outerqDiv, qDiv, aDiv, id) {\n", + "\n", + "\n", + "\n", + " //console.log(answer);\n", + "\n", + "\n", + " outerqDiv.className = \"NumericQn\";\n", + " aDiv.style.display = 'block';\n", + "\n", + " var lab = document.createElement(\"label\");\n", + " lab.className = \"InpLabel\";\n", + " lab.textContent = \"Type numeric answer here:\";\n", + " aDiv.append(lab);\n", + "\n", + " var inp = document.createElement(\"input\");\n", + " inp.type = \"text\";\n", + " //inp.id=\"input-\"+id;\n", + " inp.id = id + \"-0\";\n", + " inp.className = \"Input-text\";\n", + " inp.setAttribute('data-answers', JSON.stringify(qa.answers));\n", + " if (\"precision\" in qa) {\n", + " inp.setAttribute('data-precision', qa.precision);\n", + " }\n", + " aDiv.append(inp);\n", + " //console.log(inp);\n", + "\n", + " //inp.addEventListener(\"keypress\", check_numeric);\n", + " //inp.addEventListener(\"keypress\", numeric_keypress);\n", + " /*\n", + " inp.addEventListener(\"keypress\", function(event) {\n", + " return numeric_keypress(this, event);\n", + " }\n", + " );\n", + " */\n", + " //inp.onkeypress=\"return numeric_keypress(this, event)\";\n", + " inp.onkeypress = numeric_keypress;\n", + " inp.onpaste = event => false;\n", + "\n", + " inp.addEventListener(\"focus\", function (event) {\n", + " this.value = \"\";\n", + " return false;\n", + " }\n", + " );\n", + "\n", + "\n", + "}\n", + "function jaxify(string) {\n", + " var mystring = string;\n", + "\n", + " var count = 0;\n", + " var loc = mystring.search(/([^\\\\]|^)(\\$)/);\n", + "\n", + " var count2 = 0;\n", + " var loc2 = mystring.search(/([^\\\\]|^)(\\$\\$)/);\n", + "\n", + " //console.log(loc);\n", + "\n", + " while ((loc >= 0) || (loc2 >= 0)) {\n", + "\n", + " /* Have to replace all the double $$ first with current implementation */\n", + " if (loc2 >= 0) {\n", + " if (count2 % 2 == 0) {\n", + " mystring = mystring.replace(/([^\\\\]|^)(\\$\\$)/, \"$1\\\\[\");\n", + " } else {\n", + " mystring = mystring.replace(/([^\\\\]|^)(\\$\\$)/, \"$1\\\\]\");\n", + " }\n", + " count2++;\n", + " } else {\n", + " if (count % 2 == 0) {\n", + " mystring = mystring.replace(/([^\\\\]|^)(\\$)/, \"$1\\\\(\");\n", + " } else {\n", + " mystring = mystring.replace(/([^\\\\]|^)(\\$)/, \"$1\\\\)\");\n", + " }\n", + " count++;\n", + " }\n", + " loc = mystring.search(/([^\\\\]|^)(\\$)/);\n", + " loc2 = mystring.search(/([^\\\\]|^)(\\$\\$)/);\n", + " //console.log(mystring,\", loc:\",loc,\", loc2:\",loc2);\n", + " }\n", + "\n", + " //console.log(mystring);\n", + " return mystring;\n", + "}\n", + "\n", + "\n", + "function show_questions(json, mydiv) {\n", + " console.log('show_questions');\n", + " //var mydiv=document.getElementById(myid);\n", + " var shuffle_questions = mydiv.dataset.shufflequestions;\n", + " var num_questions = mydiv.dataset.numquestions;\n", + " var shuffle_answers = mydiv.dataset.shuffleanswers;\n", + "\n", + " if (num_questions > json.length) {\n", + " num_questions = json.length;\n", + " }\n", + "\n", + " var questions;\n", + " if ((num_questions < json.length) || (shuffle_questions == \"True\")) {\n", + " //console.log(num_questions+\",\"+json.length);\n", + " questions = getRandomSubarray(json, num_questions);\n", + " } else {\n", + " questions = json;\n", + " }\n", + "\n", + " //console.log(\"SQ: \"+shuffle_questions+\", NQ: \" + num_questions + \", SA: \", shuffle_answers);\n", + "\n", + " // Iterate over questions\n", + " questions.forEach((qa, index, array) => {\n", + " //console.log(qa.question); \n", + "\n", + " var id = makeid(8);\n", + " //console.log(id);\n", + "\n", + "\n", + " // Create Div to contain question and answers\n", + " var iDiv = document.createElement('div');\n", + " //iDiv.id = 'quizWrap' + id + index;\n", + " iDiv.id = 'quizWrap' + id;\n", + " iDiv.className = 'Quiz';\n", + " iDiv.setAttribute('data-qnum', index);\n", + " mydiv.appendChild(iDiv);\n", + " // iDiv.innerHTML=qa.question;\n", + "\n", + " var outerqDiv = document.createElement('div');\n", + " outerqDiv.id = \"OuterquizQn\" + id + index;\n", + "\n", + " iDiv.append(outerqDiv);\n", + "\n", + " // Create div to contain question part\n", + " var qDiv = document.createElement('div');\n", + " qDiv.id = \"quizQn\" + id + index;\n", + " //qDiv.textContent=qa.question;\n", + " qDiv.innerHTML = jaxify(qa.question);\n", + "\n", + " outerqDiv.append(qDiv);\n", + "\n", + " // Create div for code inside question\n", + " var codeDiv;\n", + " if (\"code\" in qa) {\n", + " codeDiv = document.createElement('div');\n", + " codeDiv.id = \"code\" + id + index;\n", + " codeDiv.className = \"QuizCode\";\n", + " var codePre = document.createElement('pre');\n", + " codeDiv.append(codePre);\n", + " var codeCode = document.createElement('code');\n", + " codePre.append(codeCode);\n", + " codeCode.innerHTML = qa.code;\n", + " outerqDiv.append(codeDiv);\n", + " //console.log(codeDiv);\n", + " }\n", + "\n", + "\n", + " // Create div to contain answer part\n", + " var aDiv = document.createElement('div');\n", + " aDiv.id = \"quizAns\" + id + index;\n", + " aDiv.className = 'Answer';\n", + " iDiv.append(aDiv);\n", + "\n", + " //console.log(qa.type);\n", + "\n", + " var num_correct;\n", + " if (qa.type == \"multiple_choice\") {\n", + " num_correct = make_mc(qa, shuffle_answers, outerqDiv, qDiv, aDiv, id);\n", + " } else if (qa.type == \"many_choice\") {\n", + " num_correct = make_mc(qa, shuffle_answers, outerqDiv, qDiv, aDiv, id);\n", + " } else if (qa.type == \"numeric\") {\n", + " //console.log(\"numeric\");\n", + " make_numeric(qa, outerqDiv, qDiv, aDiv, id);\n", + " }\n", + "\n", + "\n", + " //Make div for feedback\n", + " var fb = document.createElement(\"div\");\n", + " fb.id = \"fb\" + id;\n", + " //fb.style=\"font-size: 20px;text-align:center;\";\n", + " fb.className = \"Feedback\";\n", + " fb.setAttribute(\"data-answeredcorrect\", 0);\n", + " fb.setAttribute(\"data-numcorrect\", num_correct);\n", + " iDiv.append(fb);\n", + "\n", + "\n", + " });\n", + " var preserveResponses = mydiv.dataset.preserveresponses;\n", + " console.log(preserveResponses);\n", + " console.log(preserveResponses == \"true\");\n", + " if (preserveResponses == \"true\") {\n", + " console.log(preserveResponses);\n", + " // Create Div to contain record of answers\n", + " var iDiv = document.createElement('div');\n", + " iDiv.id = 'responses' + mydiv.id;\n", + " iDiv.className = 'JCResponses';\n", + " // Create a place to store responses as an empty array\n", + " iDiv.setAttribute('data-responses', '[]');\n", + "\n", + " // Dummy Text\n", + " iDiv.innerHTML=\"Select your answers and then follow the directions that will appear here.\"\n", + " //iDiv.className = 'Quiz';\n", + " mydiv.appendChild(iDiv);\n", + " }\n", + "//console.log(\"At end of show_questions\");\n", + " if (typeof MathJax != 'undefined') {\n", + " console.log(\"MathJax version\", MathJax.version);\n", + " var version = MathJax.version;\n", + " setTimeout(function(){\n", + " var version = MathJax.version;\n", + " console.log('After sleep, MathJax version', version);\n", + " if (version[0] == \"2\") {\n", + " MathJax.Hub.Queue([\"Typeset\", MathJax.Hub]);\n", + " } else if (version[0] == \"3\") {\n", + " MathJax.typeset([mydiv]);\n", + " }\n", + " }, 500);\n", + "if (typeof version == 'undefined') {\n", + " } else\n", + " {\n", + " if (version[0] == \"2\") {\n", + " MathJax.Hub.Queue([\"Typeset\", MathJax.Hub]);\n", + " } else if (version[0] == \"3\") {\n", + " MathJax.typeset([mydiv]);\n", + " } else {\n", + " console.log(\"MathJax not found\");\n", + " }\n", + " }\n", + " }\n", + " return false;\n", + "}\n", + "\n", + " //console.log(element);\n", + " {\n", + " const jmscontroller = new AbortController();\n", + " const signal = jmscontroller.signal;\n", + "\n", + " setTimeout(() => jmscontroller.abort(), 5000);\n", + "\n", + " fetch(\"https://raw.githubusercontent.com/andreasdh/Programmering-og-modellering/master/docs/quizer/quiz1.json\", {signal})\n", + " .then(response => response.json())\n", + " .then(json => show_questions(json, youVCDPnIJSZ))\n", + " .catch(err => {\n", + " console.log(\"Fetch error or timeout\");\n", + " show_questions(questionsyouVCDPnIJSZ, youVCDPnIJSZ);\n", + " });\n", + " }\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "display_quiz('https://raw.githubusercontent.com/andreasdh/Programmering-og-modellering/master/docs/quizer/quiz1.json')" + ] + } + ], + "metadata": { + "celltoolbar": "Edit Metadata", + "finalized": { + "timestamp": 1622574926456, + "trusted": true + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.12" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/tema1_grunnleggende_programmering/quiz2.ipynb b/_sources/docs/tema1_grunnleggende_programmering/quiz2.ipynb new file mode 100644 index 00000000..3f190b01 --- /dev/null +++ b/_sources/docs/tema1_grunnleggende_programmering/quiz2.ipynb @@ -0,0 +1,1023 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Quiz 2: Lister" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "scrolled": true, + "tags": [ + "remove-input" + ] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from jupyterquiz import display_quiz\n", + "\n", + "display_quiz('https://raw.githubusercontent.com/andreasdh/Programmering-og-modellering/master/docs/quizer/quiz2.json')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "celltoolbar": "Edit Metadata", + "finalized": { + "timestamp": 1622574926456, + "trusted": true + }, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/tema1_grunnleggende_programmering/quiz3.ipynb b/_sources/docs/tema1_grunnleggende_programmering/quiz3.ipynb new file mode 100644 index 00000000..43fa7383 --- /dev/null +++ b/_sources/docs/tema1_grunnleggende_programmering/quiz3.ipynb @@ -0,0 +1,1131 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Quiz 3: Vilkår (if-tester)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": true, + "tags": [ + "remove-input" + ] + }, + "outputs": [], + "source": [ + "from jupyterquiz import display_quiz" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "tags": [ + "remove-input" + ] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "display_quiz('https://raw.githubusercontent.com/andreasdh/Programmering-og-modellering/master/docs/quizer/quiz3.json')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "celltoolbar": "Edit Metadata", + "finalized": { + "timestamp": 1622574926456, + "trusted": true + }, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/tema1_grunnleggende_programmering/quiz4.ipynb b/_sources/docs/tema1_grunnleggende_programmering/quiz4.ipynb new file mode 100644 index 00000000..2073ecb0 --- /dev/null +++ b/_sources/docs/tema1_grunnleggende_programmering/quiz4.ipynb @@ -0,0 +1,1267 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Quiz 4: Løkker" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "tags": [ + "remove-input" + ] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from jupyterquiz import display_quiz\n", + "display_quiz('https://raw.githubusercontent.com/andreasdh/Programmering-og-modellering/master/docs/quizer/quiz4.json')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "celltoolbar": "Edit Metadata", + "finalized": { + "timestamp": 1622574926456, + "trusted": true + }, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/tema1_grunnleggende_programmering/quiz5.ipynb b/_sources/docs/tema1_grunnleggende_programmering/quiz5.ipynb new file mode 100644 index 00000000..21e4ca06 --- /dev/null +++ b/_sources/docs/tema1_grunnleggende_programmering/quiz5.ipynb @@ -0,0 +1,935 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Quiz 5: Funksjoner" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "scrolled": true, + "tags": [ + "remove-input" + ] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from jupyterquiz import display_quiz\n", + "display_quiz('https://raw.githubusercontent.com/andreasdh/Programmering-og-modellering/master/docs/quizer/quiz5.json')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "celltoolbar": "Edit Metadata", + "finalized": { + "timestamp": 1622574926456, + "trusted": true + }, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/tema1_grunnleggende_programmering/quiz6.ipynb b/_sources/docs/tema1_grunnleggende_programmering/quiz6.ipynb new file mode 100644 index 00000000..1c5f5514 --- /dev/null +++ b/_sources/docs/tema1_grunnleggende_programmering/quiz6.ipynb @@ -0,0 +1,976 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Quiz 6: Datasamlinger (arrayer og dictionarier)\n", + "\n", + "Regn med at alle nødvendige funksjoner er importert i disse spørsmålene." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "tags": [ + "remove-input" + ] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from jupyterquiz import display_quiz\n", + "display_quiz('https://raw.githubusercontent.com/andreasdh/Programmering-og-modellering/master/docs/quizer/quiz6.json')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "celltoolbar": "Edit Metadata", + "finalized": { + "timestamp": 1622574926456, + "trusted": true + }, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/tema1_grunnleggende_programmering/tall_variabler.ipynb b/_sources/docs/tema1_grunnleggende_programmering/tall_variabler.ipynb new file mode 100644 index 00000000..05b783a6 --- /dev/null +++ b/_sources/docs/tema1_grunnleggende_programmering/tall_variabler.ipynb @@ -0,0 +1,504 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Variabler og datatyper\n", + "\n", + "```{admonition} Læringsutbytte\n", + "Etter å ha arbeidet med dette temaet, skal du kunne:\n", + "1. kjøre enkle programmer med en programmeringseditor\n", + "2. definere og gjøre rede for ulike variabeltyper: heltall, flyttall og strenger\n", + "3. skrive ut output ved å bruke print-funksjonen\n", + "4. gjøre enkel aritmetikk i Python\n", + "5. ta input fra brukeren av programmet\n", + "6. importere og bruke biblioteker\n", + "```\n", + "\n", + "## Variabler\n", + "\n", + "```{admonition} Variabel\n", + "En programmeringsvariabel er en størrelse som lagrer en verdi i et program.\n", + "```\n", + "\n", + "Variabler er spesielt nyttig når vi skal bruke samme verdi flere ganger, eller når vi skal oppdatere en verdi underveis i programmet. Et enkelt eksempel er hvis vi ønsker å finne ti tall i en bestemt tallrekke. Dette kan vi beskrive slik med en pseudokode:\n", + "\n", + "```{code-block} text\n", + "tall = 0\n", + "gjenta 10 ganger:\n", + " tall = tall + 3\n", + " vis tall på skjermen\n", + "```\n", + "\n", + "Du kan tenke på en variabel som en boks vi kan putte ting i, og som vi kan modifisere, endre og hente informasjon fra underveis.\n", + "\n", + "```{admonition} Hva er en pseudokode?\n", + ":class: caution, dropdown\n", + "En pseudokode er en beskrivelse av en algoritme uten å bruke et bestemt programmeringsspråk. Pseudokode kan skrives på mange måter og kan beskrives med ord, bilder og symboler.\n", + "```\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Nedenfor er et eksempel på en programkode i Python der vi beregner gjennomsnittshastigheten i m/s for ulike legemer som har beveget seg henholdsvis 3, 4.5, 7 og 14 meter i løpet av 3 sekunder. Hva er fordelen med å bruke variablen _t_ her?\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "t = 3\n", + "\n", + "v1 = 3/t\n", + "v2 = 4.5/t\n", + "v3 = 7/t\n", + "v4 = 14/t" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Print\n", + "For å få noe ut av programmet vårt, må vi be datamaskinen om å \"skrive ut\" noe. Dette gjør vi med kommandoen _print_. Dersom vi ønsker å skrive ut flere variabler, må vi skille dem med komma i print-funksjonen. Her ser du tre måter å bruke print-kommandoen på:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.0\n", + "1.0 1.5 2.3333333333333335 4.666666666666667\n", + "Gjennomsnittsfarten for legeme 4 er: 4.666666666666667 m/s.\n" + ] + } + ], + "source": [ + "print(v1)\n", + "print(v1, v2, v3, v4)\n", + "print(\"Gjennomsnittsfarten for legeme 4 er: \", v4, \"m/s.\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Lag et program som regner ut arealet av et rektangel og skriver ut en svarsetning med enheter.\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "side1 = 5\n", + "side2 = 3\n", + "A = side1*side2\n", + " \n", + "print(\"Arealet til rektangelet er:\", A, \"kvadratmeter\")\n", + "```\n", + "````" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Kommentarer\n", + "Bruk av kommentarer i koden er viktig for at en selv skal huske hva koden illustrerer, hvilke enheter som brukes, og liknende. I tillegg er det viktig dersom andre skal bruke koden din til noe, for eksempel i store samarbeidsprosjekter. Kommentarer legges til ved å sette en \\# foran kommentaren. Eventuelt, dersom du kommenterer over flere linjer, kan du bruke triple anførselstegn før og etter kommentarene. Her er et eksempel:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Den kinetiske energien er 1.0 J.\n" + ] + } + ], + "source": [ + "\"\"\"\n", + "Regner ut kinetisk energi i én dimensjon \n", + "for et legeme med masse m og hastighet v\n", + "\"\"\"\n", + "\n", + "m = 2.0 # masse i kg\n", + "v = 1.0 # fart i m/s\n", + "\n", + "E = 0.5*m*v**2 # Kinetisk energi i J\n", + "print(\"Den kinetiske energien er\", E, \"J.\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Aritmetikk\n", + "Vi kan bruke Python som en enkel kalkulator. Vi har blant annet følgende operatorer:\n", + "\n", + "|Operator | Forklaring |\n", + "|---------|------------|\n", + "| + | Addisjon (a + b) |\n", + "| - | Subtraksjon (a - b) |\n", + "| * |Multiplikasjon (a\\*b) |\n", + "| / | Divisjon (a/b) |\n", + "| ** | Eksponent (a\\*\\*b) |\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Det finnes også to spesielle operatorer: // og %. Finn ut hva disse operatorene gjør ved å prøve dere fram i koderuta nedenfor. Vi har lagt til fire linjer som du kan bruke som utgangspunkt.\n", + "```\n", + "\n", + "

    \n", + "\n", + "```{admonition} Løsning\n", + ":class: tip, dropdown\n", + "// utfører heltallsdivisjon, det vil si at operatoren finner det høyeste heltallet divisjonen går opp i. 24 // 5 = 4 fordi 4 * 5 = 20, som er det nærmeste vi kommer 24 i 5-gangen uten å overskride 24. Resten etter denne divisjonen er 4. Det får vi fram ved å bruke «modulusoperatoren» %, som ikke har noe med prosent å gjøre. 24 % 5 er altså 4.\n", + "```\n", + "\n", + "### Biblioteker\n", + "De fleste matematiske operatorer og funksjoner finnes ikke i standard Python. For å få tilgang til mer avansert matematikk, må vi importere _biblioteker_ (eller _moduler_) inn i Python-programmet vårt. Et bibliotek er en pakke med ekstra kommandoer og funksjoner som vi kan bruke, som _sqrt_, _cos_, _log_ og så videre. Det finnes ulike måter å importere på. Her er noen måter vi kan importere det svært nyttige _nympy_-biblioteket (**num**erical **py**thon):" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# Første metode: Importerer kun funksjonene du trenger\n", + "from numpy import log10\n", + "\n", + "pH = -log10(1E-7)\n", + "\n", + "# Andre metode: Importere hele biblioteket\n", + "import numpy\n", + "\n", + "A = 2 \n", + "radius = numpy.sqrt(A/numpy.pi)\n", + "\n", + "# Tredje metode: Importere hele biblioteket med et alias. Dette er den mest brukte metoden.\n", + "import numpy as np\n", + "\n", + "A = 2\n", + "radius = np.sqrt(A/np.pi)\n", + "\n", + "# Fjerde metode: Importere alt fra biblioteket uten å spesifisere hvor funksjonene kommer fra\n", + "from numpy import *\n", + "\n", + "vinkel = arccos(0.5) # Invers cosinus av 0.5\n", + "pH = -log10(1E-7) # pH = -log([H3O+]), log10 er tierlogaritmen" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Lag et program som regner ut radius til en sirkel med arealet 4 ved å importere sqrt og pi fra numpy-biblioteket. Kunne du gjort beregningene uten disse funksjonene?\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "from numpy import pi, sqrt\n", + "\n", + "A = 4\n", + "r = sqrt(A/pi) # Vi kunne også skrevet (A/pi)**0.5\n", + " \n", + "print(\"Radius til sirkelen er:\", r)\n", + "```\n", + "````" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " ## Brukerinput\n", + "Vi kan også få programmet vårt til å spørre brukeren av programmet om å taste inn enkelte variabler selv. Dette gjøres i samme ruta som du får _output_ i editoren din. For å få brukerinput, bruker vi funksjonen _input_. Kjør programmet nedenfor og beskriv hvordan det fungerer. Prøv å bytte ut ulike kodelinjer og se hva slags output du får. Du må skrive inn input-verdiene i konsollen til høyre i koderuta.\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Input er ikke nødvendig for annet enn å lage et mer interaktivt program. Men hvis du lager et program med input, bør du legge til input helt til slutt. Start med å gi variablene verdier, og test at programmet fungerer. Deretter kan du bruke input på de variablene du ønsker. Dette er for å unngå å måtte taste inn input-verdier hver gang du kjører programmet ditt, spesielt hvis det inneholder feil du må rette opp!\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Modifiser programmet fra forrige underveisoppgave slik at det tar arealet som input fra brukeren.\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "from numpy import pi, sqrt\n", + "\n", + "A = input(\"Skriv arealet til sirkelen: \")\n", + "A = float(A)\n", + "r = sqrt(A/pi) # Vi kunne også skrevet (A/pi)**0.5\n", + " \n", + "print(\"Radius til sirkelen er:\", r)\n", + "```\n", + "````" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Variabeltyper\n", + "I matematikk har vi ulike tallmengder, som _reelle tall_, _irrasjonale tall_, _rasjonale tall_, _naturlige tall_, _hele tall_ og _komplekse tall_. Disse tallmengdene er uendelig store, som betyr at de ikke kan eksistere på en datamaskin. Vi har derfor en del andre tallmengder og variabeltyper. For eksempel heter desimaltall _float_ fordi ikke alle desimaltall er representert på en datamaskin. Det er altså en annen tallmengde. De viktigste variabeltypene ser du her:\n", + "\n", + "| Datatype | Forklaring |Eksempel |\n", + "|--------|----------------------|-------------|\n", + "| Heltall (int) | Hele tall | 42 |\n", + "| Flyttall (float) | Desimaltall | 3.1415 |\n", + "| Streng (str) | Tekst | \"Hei!\"|\n", + "| Boolsk | Sannhet |True eller False |\n", + "\n", + "Når vi ønsker input fra en bruker av et program, må vi spesifisere hvilken variabeltype vi ønsker at inputen skal bli tolket som. Standard er tekst, men hvis vi for eksempel \"adderer\" teksten \"4\" med \"2\", får vi \"42\", mens tallet 4 + tallet 2 gir tallet 6. Eksempelet nedenfor illustrerer dette." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Skriv et tall: 4\n", + "Skriv et tall til: 2\n", + "Summen av teksten er: 42 og summen av tallene er: 6.0\n" + ] + } + ], + "source": [ + "tekst1 = input(\"Skriv et tall: \")\n", + "tekst2 = input(\"Skriv et tall til: \")\n", + "\n", + "tall1 = float(tekst1)\n", + "tall2 = float(tekst2)\n", + "\n", + "tullsvar = tekst1 + tekst2\n", + "tallsvar = tall1 + tall2\n", + "\n", + "print(\"Summen av teksten er:\", tullsvar, \"og summen av tallene er:\", tallsvar)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Lag et program som skriver \"Hei, _navn_!\" til skjermen. Brukeren skal bes om å taste inn navnet sitt. Dette navnet skal lagres i en variabel, og så skrives ut som i setningen ovenfor.\n", + "\n", + "Utvid programmet til å spørre om alderen din. La programmet skrive ut en kommentar til alderen din til slutt, for eksempel \"_din alder_ er jammen gammelt!\"\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "navn = input(\"Hva heter du? \")\n", + "print(\"Hei,\", navn, \"!\") # Du kan eventuelt bruke + istedenfor komma mellom strenger for å unngå mellomrom\n", + "\n", + "alder = input(\"Hvor gammel er du? \")\n", + "print(alder, \"år er jammen gammelt!\")\n", + "```\n", + "````" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Datamaskinen krever nøyaktige instrukser\n", + "Når du lager sammensatte programmer med Python, må du huske på følgende:\n", + "- Programmet leses fra topp til bunn og fra venstre til høyre.\n", + "- Små bokstaver er IKKE lik store bokstaver (p $\\neq$ P).\n", + "- Python bryr seg lite om mellomrom, med mindre det er på starten av ei linje. Bruk mellomrom for å gjøre programmet ditt mer lesbart.\n", + "- Øv deg på å lese feilmeldinger: Du får beskjed om linja der feilen befinner seg og typen feil.\n", + "\n", + "````{admonition} Underveisoppgave\n", + ":class: tip\n", + "Forklar hva som er feil med følgende programmer:\n", + "\n", + "```{code-block} Python\n", + "tall1 = 1\n", + "print(tall1 + tall2)\n", + "tall2 = 3\n", + "```\n", + "```{code-block} Python\n", + "navn = \"Gunnar\"\n", + "print(Navn)\n", + "```\n", + "```{code-block} Python\n", + "a = 2\n", + "b = 3\n", + "\n", + "print(\"Differansen mellom\" a \"og\" b \"=\" a + b)\n", + "```\n", + "````\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "1. Programmet leser fra topp til bunn. Derfor må vi definere tall2 før vi bruker det til addisjon. Linje 2 og 3 må derfor bytte plass.\n", + "\n", + "2. Variabelen _navn_ har liten _n_. Variabelen _Navn_ finnes ikke.\n", + "\n", + "3. For det første trenger vi komma mellom alle variabler i print-funksjonen. For det andre må det stå \"summen\", ikke differansen!\n", + "\n", + "```{code-block} Python\n", + "print(\"Summen av\", a, \"og\", b, \"=\", a + b)\n", + "```\n", + "````\n", + "\n", + "```{figure} https://live.staticflickr.com/3136/2842497804_f2684b2dcf_c.jpg\n", + "---\n", + "height: 500px\n", + "name: bug\n", + "---\n", + "En av de første \"bugs\" ble funnet av Grace Hopper, som også lagde den første kompilatoren, en oversetter fra programmeringsspråk til maskinkode. Bugs var altså faktiske insekter som satt seg fast i de mekaniske delene og lagde krøll. Forhåpentligvis får du ingen feilmeldinger om insekter i datamaskinen din.\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Oppgaver\n", + "```{admonition} Oppgave 1.1\n", + ":class: tip\n", + "Bruk kodeboksen nedenfor til å lage relevante variabler slik at programmet regner ut arealet av en trekant med grunnlinje 4 og høyde 2. Programmet inneholder litt kode fra før til å hjelpe deg på vei.\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "g = 4\n", + "h = 2\n", + "A = g*h/2\n", + " \n", + "print(\"Arealet til trekanten er:\", A)\n", + "```\n", + "````\n", + "\n", + "```{admonition} Oppgave 1.2\n", + ":class: tip\n", + "Lag et program som regner ut farten i m/s gitt følgende formel:\n", + "\n", + "$$v = v_0 + at$$\n", + "\n", + "Utvid programmet slik at startfarten, akselerasjonen og tida blir tatt som input.\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "\n", + "Løsning uten input:\n", + "```{code-block} Python\n", + "v0 = 1 # startfart i m/s\n", + "a = 10 # akselerasjon i m/s^2\n", + "t = 5 # slutt-tid i s\n", + "\n", + "v = v0 + a*t\n", + "\n", + "print(\"Sluttfarten blir:\", v, \"m/s\")\n", + "```\n", + "\n", + "Løsning med input:\n", + "```{code-block} Python\n", + "v0 = float(input(\"startfart i m/s: \"))\n", + "a = float(input(\"akselerasjon i m/s^2: \"))\n", + "t = float(input(\"slutt-tid i s: \"))\n", + "\n", + "v = v0 + a*t\n", + "\n", + "print(\"Sluttfarten blir:\", v, \"m/s\")\n", + "```\n", + "````\n", + "\n", + "```{admonition} Ekstra: Oppgave 1.3\n", + ":class: tip\n", + "Lag et program som bruker en valgfri formel fra matematikken til å regne ut noe. Bruk input-funksjonen til å hente variabelverdier fra brukeren.\n", + "```\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Videoer\n", + "Her kan du se videoer som introduksjon og/eller repetisjon til fagstoffet:\n", + "\n", + "````{tab-set} \n", + "```{tab-item} Variabler\n", + "\n", + "```\n", + "\n", + "```{tab-item} Aritmetikk\n", + "\n", + "```\n", + "\n", + "```{tab-item} Biblioteker og matematiske operasjoner\n", + "\n", + "```\n", + "\n", + "```{tab-item} Input\n", + "\n", + "```\n", + "````" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.12" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/tema1_grunnleggende_programmering/tall_variabler_videoer.ipynb b/_sources/docs/tema1_grunnleggende_programmering/tall_variabler_videoer.ipynb new file mode 100644 index 00000000..189ecfbb --- /dev/null +++ b/_sources/docs/tema1_grunnleggende_programmering/tall_variabler_videoer.ipynb @@ -0,0 +1,255 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Tall og variabler (videoer)\n", + "\n", + "```{admonition} Læringsutbytte\n", + "Etter å ha arbeidet med dette temaet, skal du kunne:\n", + "1. Kjøre enkle programmer med en programmeringseditor.\n", + "2. Definere og gjøre rede for ulike variabeltyper: heltall, flyttall og strenger.\n", + "3. Skrive ut output ved å bruke print-funksjonen.\n", + "4. Gjøre enkel aritmetikk i Python.\n", + "5. Ta input fra brukeren av programmet.\n", + "```\n", + "\n", + "## Variabler og output\n", + "I videoen nedenfor forklares hvordan vi oppretter variabler og gir dem verdier. Du lærer også hvordan du håndterer output med print-funksjonen." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "tags": [ + "remove-input" + ] + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import IFrame\n", + "IFrame(\"https://www.youtube.com/embed/LF4JNPfNGgs? autoplay=0&rel=0\", width=800, height=600)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Når du har sett videoen, kan du gjøre følgende oppgave for å sjekke om du forstår innholdet:\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Lag et program der du definerer to variabler *tall1* og *tall2* med hver sitt tall. Regn ut differansen i en egen variabel. Skriv ut \"Differansen mellom *tall1* og *tall2 er *differansen*\".\n", + "```\n", + "\n", + "\n", + "\n", + "## Aritmetikk\n", + "Her skal vi se på hvordan vi utfører enkel matematikk som addisjon, subtraksjon, divisjon og multiplikasjon i Python." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "tags": [ + "remove-input" + ] + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import IFrame\n", + "IFrame(\"https://www.youtube.com/embed/BASO7iHDV54? autoplay=0&rel=0\", width=800, height=600)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Når du har sett videoen, kan du gjøre følgende oppgave for å sjekke om du forstår innholdet:\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Lag et program der du definerer massen til et legeme i en variabel, regner ut energien ved hjelp av formelen $E = mc^2$ og skriver dette ut.\n", + "```\n", + "\n", + "\n", + "\n", + "## Matematiske operasjoner\n", + "I denne videoen skal vi gjennomgå import av biblioteker og flere matematiske operasjoner som logaritmer, trigonometriske funksjoner og røtter." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "tags": [ + "remove-input" + ] + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import IFrame\n", + "IFrame(\"https://www.youtube.com/embed/VnFNYt2D2Ng? autoplay=0&rel=0\", width=800, height=600)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Når du har sett videoen, kan du gjøre følgende oppgave for å sjekke om du forstår innholdet:\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Lag et program regner ut pH-en i en løsning gitt $[H_3O^+]$.\n", + "```\n", + "\n", + "\n", + "\n", + "\n", + "## Input\n", + "Her skal vi se hvordan du kan ta input fra brukeren av programmet." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "tags": [ + "remove-input" + ] + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import IFrame\n", + "IFrame(\"https://www.youtube.com/embed/nwncCwwcV4s? autoplay=0&rel=0\", width=800, height=600)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Når du har sett videoen, kan du gjøre følgende oppgave for å sjekke om du forstår innholdet:\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Lag et program som tar masse og hastighet som input, og som regner ut kinetisk energi vha. formelen $E_k = \\frac{1}{2}mv^2$.\n", + "```\n", + "\n", + "" + ] + } + ], + "metadata": { + "celltoolbar": "Edit Metadata", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/tema1_grunnleggende_programmering/testquiz.ipynb b/_sources/docs/tema1_grunnleggende_programmering/testquiz.ipynb new file mode 100644 index 00000000..9d6a7385 --- /dev/null +++ b/_sources/docs/tema1_grunnleggende_programmering/testquiz.ipynb @@ -0,0 +1,46 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Testquiz (Forms)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/tema2_kodestrukturering/funksjoner.ipynb b/_sources/docs/tema2_kodestrukturering/funksjoner.ipynb new file mode 100644 index 00000000..6565f7f9 --- /dev/null +++ b/_sources/docs/tema2_kodestrukturering/funksjoner.ipynb @@ -0,0 +1,835 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Funksjoner\n", + "\n", + "```{admonition} Læringsutbytte\n", + "Etter å ha arbeidet med dette temaet, skal du kunne:\n", + "1. bruke funksjoner til å strukturere og gjenbruke kode.\n", + "2. forklare hva som menes med globale og lokale variabler.\n", + "```\n", + "\n", + "## Definisjon\n", + "I tillegg til innebygde funksjoner i Python som _print_ og _input_ kan vi lage funksjoner selv. Dette kan være svært nyttig fordi det kan gjøre programmet mer oversiktlig og håndterbart. I tillegg er det nyttig med funksjoner når vi skal gjøre samme ting flere ganger. Si at vi for eksempel har en vilkårlig matematisk funksjon $f(x) = x^2 + x - 5$. Dersom vi vil regne ut $f(x)$ for alle heltallsverdier av $x$ mellom 1 og 50, kan vi gjøre dette med funksjoner. Først definerer vi funksjonen:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "def f(x):\n", + " return x**2 + x - 5" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Vi definerer her en funksjon med kodeordet _def_ og gir den et funksjonsnavn, her _f_. Deretter spesifiserer vi hva inn-verdien/variabelen til funksjonen skal hete i parentes. Her kaller vi den _x_. I programmering kaller vi en slik størrelse for en _parameter_. Gitt én verdi av _x_, skal funksjonen _returnere_ (spesifisert ved _return_-kommandoen) en funksjonsverdi. Legg merke til at syntaksen er ganske lik vilkår (if-tester), while- og for-løkker, med et kolon etter funksjonsnavnet og innrykk på alt som tilhører funksjonen. \n", + "\n", + "Vi får derimot ikke noe output av å definere en funksjon. For å få et output, må vi bruke (vi sier også \"kalle på\") funksjonen:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n", + "1\n" + ] + } + ], + "source": [ + "funksjonsverdi = f(2) # Kaller på funksjonen\n", + "print(funksjonsverdi)\n", + "\n", + "# Eller\n", + "print(f(2)) # Kaller på funksjonen inni en print-funksjon" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Lag en Python-funksjon som representerer den matematiske funksjonen $f(x) = \\frac{-x}{2} + \\sqrt{x}$. Lag ei løkke som skriver ut 100 ulike funksjonsverdier.\n", + "```\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "import numpy as np\n", + "\n", + "def f(x):\n", + " return -x/2 + np.sqrt(x)\n", + " \n", + "for x in range(100):\n", + " print(f(x))\n", + "```\n", + "````\n", + "\n", + "Vi kan også lage funksjoner uten returverdi, for eksempel funksjoner som skriver ut noe:" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n", + "Gratulerer med dagen, Silje\n" + ] + } + ], + "source": [ + "# Definerer to funksjoner\n", + "def f(x):\n", + " print(x**2 + x - 5)\n", + " \n", + "def gratulerer(navn):\n", + " print(\"Gratulerer med dagen,\", navn)\n", + "\n", + "# Kaller på funksjonene\n", + "f(2)\n", + "gratulerer(\"Silje\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Her ser vi at vi ikke trenger å skrive _print_ når vi kaller på funksjonene. Dette ser da enda enklere ut enn å bruke retur-verdier, så hvorfor bruker vi _return_ i det hele tatt?\n", + "\n", + "Det er faktisk bedre å bruke return enn print, der det er mulig. Hvis vi for eksempel er interessert i å gjøre noe annet med funksjonsverdiene enn å printe dem, må vi ha konkrete verdier å jobbe med. La oss si at vi ønsker å finne differansen mellom to funksjonsverdier. Hvis vi skal regne med funksjonsverdier, må vi ha en returverdi. Det fungerer nemlig ikke å trekke fra hverandre to print-funksjoner. Eksempelet nedenfor illustrerer dette." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "````{panels}\n", + ":column: col-6\n", + ":card: border-2\n", + ":header: bg-success\n", + " \n", + "Riktig\n", + "^^^\n", + "```{code-block} Python\n", + "def f(x):\n", + " return x**3 - 1/x\n", + " \n", + "print(f(3) - f(1))\n", + "```\n", + "---\n", + ":header: bg-danger\n", + "Feil\n", + "^^^\n", + "Følgende kode vil gi feilmelding:\n", + "\n", + "```{code-block} Python\n", + "def f(x):\n", + " print(x**3 - 1/x)\n", + " \n", + "f(3) - f(1)\n", + "```\n", + "````\n", + "\n", + "Vi kan også representere matematiske formler som Python-funksjoner, for eksempel slik:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "\n", + "def areal_sirkel(r):\n", + " A = np.pi*r**2\n", + " return A\n", + "\n", + "def volum_sylinder(r, h):\n", + " V = np.pi*r**2*h\n", + " return V" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Vi kan også skrive _np.pi\\*r\\*\\*2_ og _np.pi\\*r\\*\\*2\\*h_ direkte etter return i funksjonene ovenfor, istedenfor å gjøre det på to linjer. Dette er litt smak og behag, men ofte kan det være mer oversiktlig å gjøre ting på flere linjer enn på én. Dessuten kan man skrive formelen direkte slik den forekommer i matematikken.\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Volumet til ei kule er gitt ved $\\frac{4}{3}\\pi r^3$. Lag en funksjon som beregner dette volumet og finner differansen mellom volumet til ei kule med radius 10 og ei kule med radius 5.\n", + "```\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "import numpy as np\n", + "\n", + "def volum_kule(r):\n", + " V = (4/3)*np.pi*r**3\n", + " return V\n", + " \n", + "volumforskjell = volum_kule(10) - volum_kule(5)\n", + "```\n", + "````\n", + "\n", + "Her ser vi også at den siste funksjonen tar to parametre. Det er mulig å bruke så mange parametre i en funksjon som du ønsker. Det går også an å lage funksjoner uten parametre, for eksempel slik:" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hei på deg!\n" + ] + } + ], + "source": [ + "def hei():\n", + " print(\"Hei på deg!\")\n", + " \n", + "hei()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Parameternavn\n", + "La oss se på et eksempel der vi kaller på en funksjon på tre måter." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Farten er 5.0 m/s.\n", + "Farten er 5.0 m/s.\n", + "Farten er 5.0 m/s.\n" + ] + } + ], + "source": [ + "def fart(s, t):\n", + " v = s/t\n", + " return v\n", + "\n", + "# Funksjonskall 1\n", + "s = 10 # Strekning i meter\n", + "t = 2 # Tid i s\n", + "print(\"Farten er\", fart(s, t), \"m/s.\")\n", + "\n", + "# Funksjonskall 2\n", + "strekning = 10\n", + "tid = 2\n", + "print(\"Farten er\", fart(strekning, tid), \"m/s.\")\n", + "\n", + "# Funksjonskall 3\n", + "print(\"Farten er\", fart(10, 2), \"m/s.\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Vi ser at vi får samme output for alle funksjonskallene. Vi trenger ikke å definere variabler før vi setter dem inn i funksjonen, så funksjonskall 3 er kanskje det enkleste. Men hvis vi for eksempel skal bruke verdien for tid flere steder, kan det være lurt å ha det som en egen variabel. Denne variabelen kan vi kalle hva vi vil, for den blir uansett overført til variabelen _t_ inni funksjonen. Så om vi kaller variablene for strekning og tid eller s og t, har ingenting å si. Inni funksjonen blir likevel verdien til _strekning_ overført til variabelen _s_ og variabelen _t_ får verdien til _tid_." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Funksjoner med flere returverdier\n", + "I motsetning til funksjoner i matematikk kan en funksjon i programmering ha flere retur-verdier. Disse kan vi tilordne til variabler adskilt med komma, som vist nedenfor.\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Forklar hvordan programmet ovenfor fungerer. Modifiser programmet slik at det også returnerer renta, og skriv ut \"Det tar {tid} år før du har {penger} kroner i banken med en rente på {renter*100} prosent.\"\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Lokale og globale variabler\n", + "\n", + "Hva skjer hvis vi ikke returnerer verdier i funksjonen ovenfor? Vil vi uansett kunne printe renta og antallet år? La oss undersøke dette." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'år' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_39764/3569527658.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 8\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 9\u001b[0m \u001b[0mpenger\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mpenger_i_banken\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m1000\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m3000\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m0.01\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 10\u001b[1;33m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"Det tar\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mår\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m\"år før du har\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mround\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mpenger\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m\"kroner med en rente på\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mrenter\u001b[0m\u001b[1;33m*\u001b[0m\u001b[1;36m100\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m\"prosent\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mNameError\u001b[0m: name 'år' is not defined" + ] + } + ], + "source": [ + "def penger_i_banken(startkapital, sluttkapital, renter):\n", + " kapital = startkapital\n", + " år = 0\n", + " while kapital <= sluttkapital:\n", + " kapital = kapital + kapital*renter\n", + " år = år + 1\n", + " return kapital\n", + "\n", + "penger = penger_i_banken(1000, 3000, 0.01)\n", + "print(\"Det tar\", år, \"år før du har\", round(penger,2), \"kroner med en rente på\", renter*100, \"prosent\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Her får vi visst en feilmelding, selv om vi klart kan se at \"år\" er definert som en variabel inni funksjonen. Dette handler om at alle variabler som defineres i en funksjon, kun er tilgjengelig inni denne funksjonen. De kalles derfor _lokale_ variabler. Variabler som er definert utenfor funksjoner, kaller vi da for _globale_ variabler. Disse er tilgjengelig både inni og utenfor en funksjon. Her er to eksempler som viser dette:" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Her er jeg!\n", + "Her er jeg!\n" + ] + } + ], + "source": [ + "def funksjon():\n", + " print(a)\n", + "\n", + "a = \"Her er jeg!\"\n", + "\n", + "funksjon()\n", + "print(a) # Skriver ut den globale variabelen a" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Her er jeg!\n" + ] + }, + { + "ename": "NameError", + "evalue": "name 'b' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[0mfunksjon\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 6\u001b[1;33m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mb\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;31m# Prøver å skrive ut den lokale variabelen. Vi får dermed en feilmelding\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mNameError\u001b[0m: name 'b' is not defined" + ] + } + ], + "source": [ + "def funksjon():\n", + " b = \"Her er jeg!\" # b defineres lokalt inni funksjonen\n", + " print(b)\n", + "\n", + "funksjon()\n", + "print(b) # Prøver å skrive ut den lokale variabelen. Vi får dermed en feilmelding" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Vi kan gjøre en lokal variabel til en global variabel, dersom vi trenger det. Dette er ikke vanlig så vanlig å gjøre, men vi kan gjøre det slik:" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Energien til legemet er: 9e+16 joule.\n", + "Lysets hastighet i vakuum: 300000000.0 m/s.\n" + ] + } + ], + "source": [ + "def masseenergi(m):\n", + " global c\n", + " c = 3E8 # lyshastigheten i m/s\n", + " E = m*c**2\n", + " return E\n", + "\n", + "print(\"Energien til legemet er:\", masseenergi(1), \"joule.\")\n", + "print(\"Lysets hastighet i vakuum:\", c, \"m/s.\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Oppgaver\n", + "\n", + "````{admonition} Oppgave 5.1\n", + ":class: tip\n", + "Forklar hvordan programmet nedenfor fungerer.\n", + "```{code-block} Python\n", + "def f(x):\n", + " return x + 1\n", + "\n", + "addisjon = f(1) + f(3)\n", + "subtraksjon = f(1) - f(3)\n", + "\n", + "print(addisjon, subtraksjon)\n", + "```\n", + "````\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "Vi definerer først en funksjon _f_ som skal returnere funksjonsverdien _x + 1_. Deretter kaller vi på (bruker) funksjonen ved å beregne summen av _f(1)_ og _f(3)_ og differansen mellom de samme funksjonsverdiene. Da henter programmet informasjon fra funksjonen ovenfor, og beregner slik: _addisjon = (1 + 1) + (3 + 1) = 6_ og _subtraksjon = (1 + 1) - (3 + 1) = -1_. Resultatene fra dette skrives så ut.\n", + "````\n", + "\n", + "```{admonition} Oppgave 5.2\n", + ":class: tip\n", + "I programmet nedenfor definerer vi en funksjon som regner ut volumet til en sylinder. Lag en annen funksjon i samme program som regner ut volumet til ei kule.\n", + "\n", + "($V_{kule} = \\frac{4}{3}\\pi r^3$)\n", + "\n", + "\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "from numpy import pi\n", + "\n", + "def volum_kule(r):\n", + " V = 4/3*pi*r**3\n", + " return V\n", + "\n", + "# Tester funksjonen\n", + "print(volum_kule(2))\n", + "```\n", + "````\n", + "\n", + "````{admonition} Oppgave 5.3\n", + ":class: tip\n", + "Hvert program i denne oppgava inneholder noen feil. Finn feilene og rett på dem slik at programmene kan kjøres korrekt.\n", + "\n", + "1. Funksjonen skal regne ut $f(x) = \\frac{1}{2x} + 1$ og returnere svaret. I programmet skal funksjonen kalles på for $x = 4$:\n", + "\n", + "```{code-block} Python\n", + "def f(x):\n", + " 1/2*x + 1\n", + "\n", + "print(\"f(x) = \",f(x))\n", + "```\n", + "2. Programmet ber brukeren om å skrive en verdi for _x_ og regner ut $f(x) = 3x + \\cos(x)$:\n", + "\n", + "```{code-block} Python\n", + "def f(x):\n", + "return 3x + cos(x)\n", + "\n", + "y = input(\"Skriv inn verdi for x i radianer: \")\n", + "print(\"f(x) =\",f(y))\n", + "```\n", + "\n", + "3. Programmet skal skrive ut funksjonsverdien _G(1)_.\n", + "\n", + "```{code-block} Python\n", + "def G(t):\n", + " a = t**2 - 2\n", + " return a\n", + "\n", + "t = 1\n", + "print(a)\n", + "```\n", + "````\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "1. Uttrykket $1/2*x + 1$ regner ut $f(x) = x + 1$, og ikke den ønskede funksjonen. For at programmet skal regne ut hva _x_ blir i den ønskede funksjonen, må parentes brukes i uttrykket for nevneren. Variabelen _x_ er heller ikke definert. Variabelen kan settes til å være lik 4. Vi kan også kalle funksjonen direkte med f(4).\n", + "```{code-block} Python\n", + "def f(x):\n", + " return 1/(2* x) + 1\n", + "print(\"f(x) = \",f(4))\n", + "```\n", + "\n", + "2. Her må cosinus importeres fra et passende bibliotek. Vi må også ha et innrykk på _return_ i $f(x)$, fordi _return_ tilhører funksjonen. Leddet $3x$ må omskrives til $3*x$. Til slutt må variabelen $y$ omgjøres til float for at programmet skal kunne gjøre flytallsoperasjoner på den gitte verdien fra brukeren.\n", + "```{code-block} Python\n", + "from numpy import cos\n", + "def f(x):\n", + " return 3*x + cos (x)\n", + "y = float(input(\" Skriv inn verdi for x i radianer: \"))\n", + "print(\"f(x) =\",f(y))\n", + "```\n", + "\n", + "3. For å finne hva funksjonsverdien til _G_, må vi huske å _kalle på_ funksjonen:\n", + "```{code-block} Python\n", + "def G(t):\n", + " a = t**2 - 1\n", + " return a\n", + "t = 1\n", + "print(G(t))\n", + "```\n", + "````\n", + "\n", + "````{admonition} Oppgave 5.4\n", + ":class: tip\n", + "Lag et program eller flere programmer som bruker funksjoner til å regne ut:\n", + "1. Arealet til en sirkel.\n", + "2. Radius til en sirkel gitt arealet.\n", + "3. Omkretsen til en sirkel.\n", + "4. Volumet til ei kule.\n", + "5. Overflatearealet til ei kule.\n", + "\n", + "Du kan lage en enkel versjon først uten funksjoner. Lag så en versjon som inneholder funksjoner av hver av formlene. Ikke ta input fra brukeren, men sett verdiene direkte inn i funksjonskallene.\n", + "````\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "from numpy import pi\n", + "\n", + "# 1\n", + "def sirkel_areal(r):\n", + " return pi*r**2\n", + "# 2\n", + "def sirkel_radius(A):\n", + " return (A/pi)**0.5 # Opphøyer i 0.5 eller kan bruke sqrt fra numpy\n", + "# 3\n", + "def sirkel_omkrets(r):\n", + " return 2*pi*r\n", + "# 4\n", + "def kule_volum (r):\n", + " return 4/3*pi*r**3\n", + "# 5\n", + "def kule_overflate (r):\n", + " return 4*pi*r**2\n", + "```\n", + "````\n", + "\n", + "````{admonition} Oppgave 5.5\n", + ":class: tip\n", + "Forklar hvorfor programmet under gir _None_ som output.\n", + "```{code-block} Python\n", + "def f(x):\n", + " x = 2*x\n", + "x = 12\n", + "x = x + 12\n", + "x = f(x)\n", + "print(x)\n", + "```\n", + "````\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "Verdien til _x_ blir _None_ fordi funksjonen _f_ ikke returner en verdi. For å sørge for at _x_ får en tallverdi etter å ha kalt på _f_, må _f_ returnere noe – i dette tilfellet et tall.\n", + "```{code-block} Python\n", + "def f(x):\n", + " return 2*x\n", + "x = 12\n", + "x = x + 12\n", + "x = f(x)\n", + "print(x)\n", + "```\n", + "````\n", + "\n", + "````{admonition} Oppgave 5.6\n", + ":class: tip\n", + "_Karvonens formel_ kan brukes til å finne pulsen til en person gitt hvilepuls $H_{hvile}$ og treningsintensitet $p$ (i prosent):\n", + "\n", + "$hjerteslag \\ per \\ minutt = \\left(H_{maks} - H_{hvile}\\right)\\cdot\\frac{p}{100} + H_{hvile}$\n", + "\n", + "der $H_{maks}$ er maks antall hjerteslag personen kan ha. Den maksimale pulsen kan en finne ved $H_{maks} = 220 - \\textit{alder til person}$. Lag et program som regner ut pulsen til en 20 år gammel person som trener med 60 \\% intensitet og hvilepuls på $70$ slag per minutt. Lag Karvonens formel som en funksjon.\n", + "````\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "def karvonen(hvilepuls, intensitet, alder):\n", + " p = intensitet\n", + " maks = 220 - alder\n", + " puls = (maks - hvilepuls)*p/100 + hvilepuls\n", + " return puls\n", + "\n", + "puls = karvonen(70, 60, 20)\n", + "print(\" Personen vil ha en puls på\",puls )\n", + "```\n", + "````\n", + "\n", + "````{admonition} Oppgave 5.7 (kjemi)\n", + ":class: tip\n", + "I kjemi har vi ofte bruk for molregning. Lag et enkelt program som regner ut antall mol dersom brukeren taster inn molmasse og masse av et bestemt stoff. Du kan også be brukeren taste inn stoffet det gjelder, slik at du får dette som output også. Lag formelen som en funksjon.\n", + "````\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "def antall_mol (masse , molmasse ):\n", + " return masse/molmasse\n", + "stoff = input(\" Hvilket stoff vil du finne antall mol til ?: \")\n", + "masse = float(input(\" Skriv inn massen ( gram ): \"))\n", + "molmasse = float(input(\" Skriv inn molmassen ( gram /mol): \"))\n", + "mol = antall_mol (masse , molmasse )\n", + "print(\"Stoffet\", stoff, \"består av\", mol ,\"mol.\")\n", + "```\n", + "````\n", + "\n", + "````{admonition} Oppgave 5.8 (kjemi)\n", + ":class: tip\n", + "Lag et program som regner ut pH fra $[H_3O^+]$ ved hjelp av en funksjon.\n", + "````\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "from numpy import log10\n", + "def ph_H3O(konsentrasjon):\n", + " return -log10 (konsentrasjon)\n", + "\n", + "ph = ph_H3O(1E-5)\n", + "print(\"pH av den gitte konsentrasjonen er:\", ph)\n", + "```\n", + "````\n", + "\n", + "````{admonition} Oppgave 5.9 (fysikk)\n", + ":class: tip\n", + "Programmer én av bevegelsesformlene (kinematikklikningene) som en funksjon. Du kan selv velge hva programmet skal regne ut.\n", + "````\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "def posisjon(v0 , a, t):\n", + " return v0 + a*t\n", + "\n", + "v = posisjon(2, 10, 5) # Tester funksjonen med v0 = 2, a = 10 og t = 5.\n", + "print(\"Farten til legemet er:\", v, \"m/s.\")\n", + "```\n", + "````\n", + "\n", + "````{admonition} Oppgave 5.10 (fysikk)\n", + ":class: tip\n", + "Bruk Bohrs formel for spektrene til hydrogenatomet:\n", + "$f =\\frac{B}{h}\\cdot \\left( \\frac{1}{m^2} - \\frac{1}{n^2} \\right)$\n", + "\n", + "Lag et program som regner ut bølgelengden til fotonet som emitteres når et elektron deeksiterer fra skall _m_ til _n_. Bruk en funksjon.\n", + "\n", + "Husk at vi har følgende sammenheng mellom frekvens og bølgelengde ($\\lambda$):\n", + "\n", + "$\\lambda = \\frac{c}{f}$\n", + "\n", + "$B = 2.18\\cdot10^{-18}$, $c = 3.00\\cdot10^8$ m/s og $h = 6.63\\cdot10^{-34}$.\n", + "````\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "# Konstanter\n", + "B = 2.18E-18\n", + "h = 6.636E-34\n", + "c = 3e8\n", + "\n", + "#Bohrs formel\n", + "def Bohr(n,m):\n", + " f = B/h *(1/ m**2 - 1/n **2)\n", + " bl = c/f # bølgelengde i meter\n", + " bl_nm = bl*1E9 # bølgelengde i nanometer\n", + " return bl_nm\n", + "\n", + "#Energinivåer\n", + "n = int(input(\"Skriv inn en verdi for n:\")) #skallet det eksiteres fra\n", + "m = int(input(\"Skriv inn en verdi for m:\")) #skallet det eksiteres til\n", + "\n", + "print(\"Bølgelengden til lyset fra n =\",n ,\"til m =\", m, \n", + " \"er:\", round(Bohr(n,m)),\"nm\")\n", + "```\n", + "````\n", + "\n", + "````{admonition} Oppgave 5.11 (matematikk)\n", + ":class: tip\n", + "Lag en funksjon som tar tre variabler _a_, _b_ og _c_, tilsvarende koeffisientene i andregradsfunksjoner av typen $f(x) = ax^2 + bx + c$. La funksjonen løse andregradslikninger av typen $f(x) = 0$ ved hjelp av andregradsformelen.\n", + "````\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "def andregradsformelen(a, b, c):\n", + " rotuttrykk = b**2 - 4*a*c\n", + " if rotuttrykk > 0:\n", + " x1 = (-b + rotuttrykk**0.5)/(2*a)\n", + " x2 = (-b - rotuttrykk**0.5)/(2*a)\n", + " return x1, x2\n", + " elif rotuttrykk < 0:\n", + " return \"Likningen har ingen reelle løsninger.\"\n", + " elif rotuttrykk == 0:\n", + " x = -b/(2*a)\n", + " return x\n", + "\n", + "print(andregradsformelen(1, 2, 3))\n", + "print(andregradsformelen(1, -2, 1))\n", + "print(andregradsformelen(1, -4, 3))\n", + "```\n", + "````\n", + "\n", + "````{admonition} Oppgave 5.12\n", + ":class: tip\n", + "Hvorfor har _x_ samme verdi før og etter funksjonen _f_ har blitt kalt på i programmet under?\n", + "```{code-block} Python\n", + "def f(x):\n", + " x = x + 3\n", + " return 9*x\n", + "x = 3\n", + "print(x) # Skriver ut 3\n", + "y = f(x)\n", + "print(x) # Skriver ut 3\n", + "```\n", + "````\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "$_x_$ er en global variabel utenfor funksjonen. Den får verdien 3. I tillegg finnes det en lokal variabel med samme navn inni funksjonen. Denne variabelen får verdien $_x = x + 3 = 3 + 3 = 6_$, men denne variabelen er ikke tilgjengelig utenfor funksjonen. \n", + "````\n", + "\n", + "````{admonition} Oppgave 5.13\n", + ":class: tip\n", + "De fleste gasser kan modelleres med _tilstandslikninga for idelle gasser_:\n", + "\n", + "$PV = nRT$\n", + "\n", + "der _P_ er trykket i pascal, _V_ er volumet i kubikkmeter, _n_ er stoffmengden i mol, $R = 8.3144598 J/(mol\\cdot K)$ er gasskonstanten og _T_ er temperaturen i Kelvin. \n", + "\n", + "Lag et program der du bruker denne likninga til å lage en funksjon for P og en annen for T. Test funksjonene.\n", + "````\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "def trykk(V, n, T):\n", + " R = 8.3144598 # J/(mol*K)\n", + " P = n*R*T/V\n", + " return P\n", + "\n", + "def temperatur(P, V, n):\n", + " R = 8.3144598 # J/(mol*K)\n", + " T = P*V/(n*R)\n", + " return T\n", + "\n", + "print(trykk(100, 1, 300))\n", + "print(temperatur(100, 1, 1))\n", + "```\n", + "````\n", + "\n", + "````{admonition} Oppgave 5.14*\n", + ":class: tip\n", + "Studer programmet nedenfor. Hvilke variabler er lokale, og hvilke er globale? Hva skrives ut?\n", + "\n", + "```{code-block} Python\n", + "def f(x,y):\n", + " global e\n", + " e = x + y + e\n", + " return e\n", + "\n", + "c = 1\n", + "d = 2\n", + "e = 3\n", + "\n", + "print(f(c, d) + e)\n", + "```\n", + "````\n", + "\n", + "```{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "Variablene c_, _d_ og _e_ er globale variabler, mens _x_ og _y_ er lokale variabler som kun eksisterer inni funksjonen. Når vi printer _f(c, d) + e_, overføres verdien av _c_ og _d_ til de lokale variablene _x_ og _y_ i funksjonen. Deretter beregnes _e_ ved hjelp av _x_, _y_ og den globale _e_, som har verdien 3. Variabelen _e_ fra funksjonen (nå med verdien 6) defineres som global, og overskriver dermed den tidligere _e_ (med verdien 3). Det er denne _e_-en som legges til _f(c, d)_ i print-kommandoen til slutt.\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Filmer\n", + "I videoen nedenfor kan du få en innføring eller repetisjon i den grunnleggende teorien bak funksjoner.\n", + "\n", + "" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.12" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/tema2_kodestrukturering/funksjoner_filmer.ipynb b/_sources/docs/tema2_kodestrukturering/funksjoner_filmer.ipynb new file mode 100644 index 00000000..6400086f --- /dev/null +++ b/_sources/docs/tema2_kodestrukturering/funksjoner_filmer.ipynb @@ -0,0 +1,92 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Funksjoner (teori)\n", + "\n", + "```{admonition} Læringsutbytte\n", + "Etter å ha arbeidet med dette temaet, skal du kunne:\n", + "1. Bruke funksjoner til å strukturere og gjenbruke kode.\n", + "2. Forklare hva som menes med globale og lokale variabler.\n", + "```\n", + "\n", + "## Funksjoner" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "tags": [ + "remove-input" + ] + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import IFrame\n", + "IFrame(\"https://www.youtube.com/embed/PTsF6AIKIjg? autoplay=0&rel=0\", width=800, height=600)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Når du har sett videoen, kan du gjøre følgende oppgave for å sjekke om du forstår innholdet:\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Lag en funksjon som benytter arealsetningen til å regne ut arealet av en trekant.\n", + "```\n", + "\n", + "\n", + "" + ] + } + ], + "metadata": { + "celltoolbar": "Edit Metadata", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/tema2_kodestrukturering/klasser_objekter.ipynb b/_sources/docs/tema2_kodestrukturering/klasser_objekter.ipynb new file mode 100644 index 00000000..07612a98 --- /dev/null +++ b/_sources/docs/tema2_kodestrukturering/klasser_objekter.ipynb @@ -0,0 +1,443 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Klasser og objekter\n", + "\n", + "```{admonition} Læringsutbytte\n", + "Etter å ha arbeidet med dette temaet, skal du kunne:\n", + "1. gjøre rede for hva som menes med objektorientert programmering\n", + "2. konstruere enkle klasser og objekter\n", + "```\n", + "\n", + "Objektorientert programmering er en måte å organisere og gjenbruke kode på som er enda litt mer abstrakt og enda litt nyttigere enn funksjoner. Python er et objektorientert språk, så du har brukt objekter allerede uten å nødvendigvis vite om det. Det første objektorienterte programmeringsspråket i verden var _Simula_, som var utviklet av nordmennene Ole-Johan Dahl og Kristen Nygaard. I populære programmeringsspråk som Java og C++ er objektorientering så grunnleggende at vi ikke kan programmere i disse språkene uten å bruke det. I Python kan vi derimot velge om vi ønsker å bruke objektorientert kode eller ikke.\n", + "\n", + "Det er ikke sikkert du forstår meningen med objekter med det første. Koden blir ofte mer komplisert og teknisk, og det realfaglige innholdet kan noen ganger drukne litt i koden. Det viktigste er derimot at du får litt kjennskap til hva det er og hvordan det kan brukes, slik at du forstår når du faktisk bruker objekter og hvordan de fungerer. Om du vil bruke objektorientert programmering for å strukturere din egen kode eller ikke, kan du velge helt selv.\n", + "\n", + "Objektorientert programmering tar utgangspunkt i _klasser_, som er oppskrifter på _objekter_. Disse objektene har egenskaper gitt av denne klassen, og vi kan endre på objektene og gi dem nye egenskaper med funksjoner som vi kaller _metoder_.\n", + "\n", + "```{admonition} Definisjoner\n", + ":class: caution\n", + "En _klasse_ er en oppskrift på _objekter_. Et objekt er en _instans_ (utgave) av en klasse. Objekter er størrelser som er definert via et sett med data (_attributter_), det vil si egenskaper ved objektene. Objektene kan vi endre og manipulere ved å bruke klassens _metoder_. Metoder er funksjoner som virker på objektene.\n", + "```\n", + "\n", + "Et enkelt eksempel på et objekt, er heltallsobjekter. For eksempel er tallet 42 et objekt som tilhører klassen \"int\" (integer = heltall). Metodene du kan bruke på disse objektene, er blant annet addisjon og multiplikasjon.\n", + "\n", + "__Eksempel:__\n", + "\n", + "klasse = int\n", + "\n", + "objekt = 42\n", + "\n", + "metoder = +, -, *, /\n", + "\n", + "Vi kan se at 42 tilhører klassen _int_ ved å skrive ut typen til objektet:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "print(type(42))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Skilpaddeobjekter\n", + "Vi har allerede også håndtert objekter gjennom skilpaddegrafikk (turtle). Når vi lager en skilpadde som skal tegne noe, lager vi en instans (et objekt) av klassen \"Turtle\". Tidligere skreiv vi bare kommandoene \"forward\", \"left\" og så videre, så da er det kanskje ikke åpenbart at vi bruker metoder _på_ dette objektet. Det blir dermed litt enklere å se dersom vi faktisk kaller objektet noe. La oss returnere til en skilpadde som heter Rafael. Istedenfor å bare skrive kommandoene, lager vi nå et skilpaddeobjekt helt eksplisitt:\n", + "\n", + "\n", + "\n", + "Her ser vi at vi bruker metodene på objektet ved å skrive \"objektnavn.metodenavn()\". Dette gjør også at vi kan lage flere skilpadder i samme kodevindu!\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Lag en ny skilpadde som heter Leonardo. Skilpadden skal være blå, og den skal lage gå slik at den danner et rektangel (200 x 100) sammen med figuren som Rafael har tegna.\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "leonardo = Turtle()\n", + "leonardo.shape(\"turtle\")\n", + "leonardo.color(\"blue\")\n", + "\n", + "leonardo.backward(100)\n", + "leonardo.left(90)\n", + "leonardo.forward(100)\n", + "leonardo.right(90)\n", + "leonardo.forward(100)\n", + "```\n", + "````" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Klasser\n", + "La oss prøve å lage vår egen klasse med ulike egenskaper. Vi vil definere en klasse som lager objekter med egenskapene til et glass. Det er god skikk å lage klassenavnet med stor forbokstav, og det gjør vi slik:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "tags": [ + "remove-output" + ] + }, + "outputs": [], + "source": [ + "class Glass:\n", + " def __init__(self):\n", + " self.innhold = 0" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Nå har vi definert klassen \"Glass\" og gitt det en egenskap (attributt) som heter \"innhold\", en vanlig egenskap ved de fleste glass. Metodene i en klasse defineres på samme måte som funksjoner. Den metoden vi har lagd her, \\_\\_init\\_\\_ (som står for \"initiering\"), er en spesiell metode som inneholder alle egenskaper som objekter av klassen Glass alltid får. Parameteren i denne funksjonen/metoden er \"self\". Dette er en litt merkelig konstruksjon. \"self\" brukes nemlig for å henvis til at dette er en egenskap ved objektet selv. Det tar litt tid å bli vant til at vi må henvise til objektet selv inni klassen som er oppskriften på objektene. Men når du har sett nok eksempler på hvordan klasser blir konstruert, får du antakelig en forståelse av det. La oss legge til en metode til, som sjekker innholdet i glasset:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "class Glass:\n", + " def __init__(self):\n", + " self.innhold = 0 \n", + " def sjekkInnhold(self):\n", + " return self.innhold" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "La oss nå lage et glass-objekt og sjekke innholdet:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n" + ] + } + ], + "source": [ + "vannglass = Glass() # laget et vannglass av typen \"Glass\"\n", + "print(vannglass.sjekkInnhold()) # skriver ut innholdet i glasset" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Lag en metode \"fyll\" som legger til innhold i glasset. Test metoden ved å legge til 5 (dl) og sjekke innholdet.\n", + "```\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "class Glass:\n", + " def __init__(self):\n", + " self.innhold = 0\n", + " \n", + " def fyll(self, mengde):\n", + " self.mengde = mengde\n", + " self.innhold += self.mengde\n", + " \n", + " def sjekkInnhold(self):\n", + " return self.innhold\n", + " \n", + "vannglass = Glass()\n", + "vannglass.fyll(5)\n", + "print(vannglass.sjekkInnhold())\n", + "```\n", + "````" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "tags": [ + "hide-input", + "remove-output" + ] + }, + "source": [ + "Når du har gjort oppgaven ovenfor, kan vi legge til enda en metode som tømmer glasset:\n", + "\n", + "\n", + "\n", + "Men hva skjer hvis glasset er fullt eller tomt? Prøv å løse dette problemet i oppgaven nedenfor:\n", + "\n", + "````{admonition} Underveisoppgave\n", + ":class: tip\n", + "Legg inn en ny egenskap ved glasset som du kaller \"kapasitet\". Denne egenskapen skal si noe om hvor mye volum glasset rommer. Fyll også ut det som mangler i metodene \"fyll\" og \"tøm\" nedenfor. Metodene skal si fra om glasset er fullt eller tomt. Dersom glasset er tomt, skal innholdet settes til 0, og dersom glasset er fullt, skal innholdet settes til kapasiteten til glasset. Skriv gjerne også ut en melding om at glasset er fullt eller tomt.\n", + "\n", + "```{code-block} Python\n", + " def fyll(self, mengde):\n", + " self.mengde = mengde\n", + " self.innhold += self.mengde\n", + " if #...\n", + " \n", + " def tøm(self, mengde):\n", + " self.mengde = mengde\n", + " self.innhold -= self.mengde\n", + " if # ...\n", + "```\n", + "````\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "class Glass:\n", + " def __init__(self, kapasitet):\n", + " self.kapasitet = kapasitet\n", + " self.innhold = 0\n", + " \n", + " def fyll(self, mengde):\n", + " self.mengde = mengde\n", + " self.innhold += self.mengde\n", + " if self.innhold >= self.kapasitet:\n", + " print(\"Glasset er fullt!\")\n", + " self.innhold = self.kapasitet\n", + " \n", + " def tøm(self, mengde):\n", + " self.mengde = mengde\n", + " self.innhold -= self.mengde\n", + " if self.innhold <= 0:\n", + " print(\"Glasset er tomt!\")\n", + " self.innhold = 0\n", + " \n", + " def sjekkInnhold(self):\n", + " return self.innhold\n", + " \n", + "mittGlass = Glass(5)\n", + "mittGlass.fyll(6)\n", + "mittGlass.tøm(1)\n", + "mittGlass.sjekkInnhold()\n", + "print(\"Glasset inneholder:\", mittGlass.sjekkInnhold(), \"dl.\")\n", + "```\n", + "````" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Eksempel: Objekter i spill\n", + "Moderne spill lages med objektorientert kode. En av årsakene er at vi lettere kan gjenbruke kode. Ta for eksempel skilpaddene i Mario. De har noen felles egenskaper, og det er derfor nyttig å kunne plassere dem rundt omkring ved å lage nye objekter fra en klasse istedenfor å gjenta masse kode. Vi kan også ta hensyn til små variasjoner, som farge på skallet, evnen til å gjøre skade eller helsepoeng (HP).\n", + "\n", + "```{image} http://oyster.ignimgs.com/mediawiki/apis.ign.com/new-super-mario-bros-u/a/a5/New-Super-Mario-Bros.-Game-Character-Official-Artwork-Koopa-Troopa.jpeg\n", + ":alt: koopa\n", + ":class: bg-primary mb-1\n", + ":width: 200px\n", + ":align: center\n", + "```\n", + "\n", + "I programmet nedenfor lager vi en skilpaddeklasse med noen egenskaper og to metoder, \"harm\" og \"heal\". Gå gjennom linje for linje og prøv å forstå hvordan programmet fungerer.\n", + "\n", + "\n", + "\n", + "````{admonition} Underveisoppgave\n", + ":class: tip\n", + "Legg inn et vilkår i programmet ovenfor som skriver ut at skilpadden er død hvis den går under 0 i hp. Lag også en attributt/egenskap som sier noe om skilpadden lever eller ikke.\n", + "````\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "class Skilpadde:\n", + " def __init__(self):\n", + " self.artsnavn = \"Chelonia mydas\"\n", + " self.farge = \"green\"\n", + " self.levende = True\n", + " if self.farge == \"green\":\n", + " self.hp = 15\n", + " elif self.farge == \"red\":\n", + " self.hp = 20\n", + " def harm(self, skade):\n", + " self.hp -= skade\n", + " if self.hp <= 0:\n", + " self.levende = False\n", + " self.hp = 0\n", + " print(\"Skilpadden døde.\")\n", + " def heal(self):\n", + " self.hp += 5\n", + "\n", + "skilpadde1 = Skilpadde()\n", + "skilpadde1.farge = \"green\"\n", + "\n", + "print(\"HP:\", skilpadde1.hp)\n", + "skilpadde1.harm(13)\n", + "print(\"HP:\", skilpadde1.hp)\n", + "skilpadde1.harm(16)\n", + "print(\"HP:\", skilpadde1.hp)\n", + "```\n", + "````" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Eksempel: Vektorobjekt\n", + "Her skal vi se på en klasse som lager et objekt med egenskapene til en matematisk vektor med tre komponenter: $\\vec{v} = [x, y, z]$. Vi ønsker at vi skal kunne regne ut lengden til denne vektoren, og at vi skal kunne addere vektoren med en annen vektor. Lengden av en vektor kalles også for _normen_ til vektoren, og er definert slik:\n", + "\n", + "$|\\vec{v}| = \\sqrt{x^2 + y^2 + z^2}$\n", + "\n", + "En vektorklasse med en metode for addisjon kan se slik ut:\n", + "\n", + "\n", + "\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Legg en metode i vektorklassen ovenfor som returnerer lengden/normen til vektoren. Test ut ved å sjekke at normen til vektoren $\\vec{u} = [1, 2, 2]$ er 3.\n", + "```\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "class Vektor:\n", + " def __init__(self,x,y,z):\n", + " self.x = x\n", + " self.y = y\n", + " self.z = z\n", + " \n", + " def norm(self):\n", + " lengde = (self.x**2 + self.y**2 + self.z**2)**0.5\n", + " return lengde\n", + " \n", + " def add(self, vektor):\n", + " x = self.x + vektor.x\n", + " y = self.y + vektor.y\n", + " z = self.z + vektor.z\n", + " return [x, y, z]\n", + " \n", + "u = Vektor(1,2,2)\n", + "v = Vektor(4,4,4)\n", + "print(u.norm())\n", + "```\n", + "````" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Arv\n", + "Hvis vi ønsker å lage en klasse som har alle egenskaper til en annen klasse, i tillegg til noen ekstra egenskaper, kan vi la klassen _arve_ egenskaper fra den andre klassen. La oss lage en termosklasse som arver fra glassklassen (kalt _superklasse_). Klassen som arver, kaller vi en _subklasse_." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Glasset er fullt!\n", + "62.0\n", + "54.0\n", + "46.0\n", + "38.0\n", + "30.0\n" + ] + }, + { + "data": { + "text/plain": [ + "5" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "class Termos(Glass):\n", + " def __init__(self, kapasitet, isolasjonsverdi, temperatur):\n", + " super().__init__(kapasitet) # Her arver termosen kapasitet fra klassen Glass (superklassen)\n", + " self.isolasjonsverdi = isolasjonsverdi\n", + " self.temperatur = temperatur\n", + " def økTemperatur(self):\n", + " self.temperatur += 5/self.isolasjonsverdi\n", + " def senkTemperatur(self):\n", + " self.temperatur -= 10/self.isolasjonsverdi\n", + " def hentTemperatur(self):\n", + " print(self.temperatur)\n", + "\n", + "termos = Termos(10, 1.25, 70)\n", + "termos.fyll(10)\n", + "\n", + "for timer in range(5):\n", + " termos.senkTemperatur()\n", + " termos.tøm(1)\n", + " termos.hentTemperatur()\n", + "termos.sjekkInnhold()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Forklar hvordan programmet ovenfor fungerer.\n", + "```" + ] + } + ], + "metadata": { + "celltoolbar": "Edit Metadata", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/tema3_datahandtering/datasamlinger.ipynb b/_sources/docs/tema3_datahandtering/datasamlinger.ipynb new file mode 100644 index 00000000..6f921322 --- /dev/null +++ b/_sources/docs/tema3_datahandtering/datasamlinger.ipynb @@ -0,0 +1,422 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "9a05ddbb", + "metadata": {}, + "source": [ + "# Datasamlinger\n", + "\n", + "```{admonition} Læringsutbytte\n", + "Etter å ha arbeidet med dette temaet, skal du kunne:\n", + "1. opprette ulike arrayer\n", + "2. gjøre vektoroperasjoner med arrayer\n", + "3. gjøre rede for hva tupler er\n", + "4. opprette og bruke dictionarier\n", + "```\n", + "\n", + "Vi har flere måter å organisere data på i Python. Her er en kort oversikt over de viktigste datasamlingene:\n", + "1. Lister (fleksible samlinger av like eller ulike data)\n", + "2. Arrayer (samlinger av tall som kan opereres på som vektorer).\n", + "3. Tupler (statiske lister som ikke kan endres)\n", + "4. Dictionarier (lister med strenger, ikke tall, som nøkler)\n", + "\n", + "Vi har allerede sett hvordan lister fungerer. La oss se på de tre andre datatypene.\n", + "\n", + "## Arrayer\n", + "Vi begynner med et eksempel som illustrerer forskjellen mellom lister og arrayer. For å kunne bruke arrayer, må vi først importere _numpy_ eller _pylab_." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "fb736924", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "listesum: [1, 2, 3, 2, 3, 1]\n", + "arraysum: [3 5 4]\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "\n", + "liste1 = [1, 2, 3]\n", + "liste2 = [2, 3, 1]\n", + "\n", + "print(\"listesum:\", liste1 + liste2)\n", + "\n", + "array1 = np.array(liste1)\n", + "array2 = np.array(liste2)\n", + "\n", + "print(\"arraysum:\", array1 + array2)" + ] + }, + { + "cell_type": "markdown", + "id": "af0b8ed0", + "metadata": {}, + "source": [ + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Bruk koden ovenfor til å forklare forskjellen mellom listeaddisjon og arrayaddisjon.\n", + "```\n", + "```{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "Når to lister adderes, legges den ene lista til slutten på den andre. Når to arrayer adderes, får vi komponentvis addisjon av elementene: [1+2, 2+3, 3+1]. Dette er det samme som vektoraddisjon.\n", + "```\n", + "\n", + "### Opprette arrayer\n", + "Vi kan opprette arrayer på flere måter:\n", + "\n", + "\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Forklar de ulike måtene å opprette arrayer på ved å endre på forskjellige parametre i programmet ovenfor.\n", + "```\n", + "\n", + "```{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "Vi kan oppsummere måter å opprette arrayer på slik:\n", + "| Operasjon | Forklaring |\n", + "| --------- | ---------- |\n", + "| array([x1,x2,x3,...]) | gjør om en liste med tall til en array |\n", + "| arange(a,b,c) | lager en array med tallene a til, men ikke med, b, der c er steglengden |\n", + "| linspace(a,b,c) | lager en array med c elementer fra a til og med b |\n", + "| zeros(n) | lager en array med _n_ nuller |\n", + "| ones(n) | lager en array med _n_ enere |\n", + "```\n", + "\n", + "### Behandle arraydata\n", + "I motsetning til med lister, kan vi ikke bruke listeoperasjoner som _append_, _remove_ og liknende når vi opererer med arrayer. Vi kan derimot få tilgang til elementene ved å bruke indekser, akkurat som med lister.\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Hva tror du koden nedenfor skriver ut? Bruk det du husker om listeindeksering.\n", + "```\n", + "\n", + "\n", + "\n", + "Vi kan også lage flerdimensjonale arrayer, ved å sette inn arrayer i arrayer. Dette kan i noen tilfeller ses på som tabeller med kolonner og rader, slik som nedenfor.\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "1. Prøv å forklare/forutse hva koden nedenfor gjør.\n", + "2. Kjør koden og se om det stemmer med slik du hadde tenkt. Hvis ikke, hva er forskjellen?\n", + "3. Undersøk hva du får som output når du endrer på tallene i print-kommandoene. Beskriv hva som skjer.\n", + "4. Modifiser programmet slik at det kun skriver ut de fire første elementene i kolonne 2.\n", + "5. Lag et program med en array som representerer dataene i tabellen nedenfor.\n", + "Skriv så ut alt i kolonne nummer 3 (hvis vi teller fra 1) og elementet 6.7.\n", + "```\n", + "\n", + "| Kolonne 1 | Kolonne 2 | Kolonne 3 | Kolonne 4 |\n", + "|-----|-----|-----|-----|\n", + "| 0 | 1 | 2 | 3 |\n", + "| 2 | 9.1 | 2.2 | 4 |\n", + "| 3.5 | 9.1 | 6.7 | 5.5 |\n", + "| 1.1 | 0.2 | 8.9 | 7.8 |\n", + "\n", + "\n", + "\n", + "````{admonition} Løsningsforslag\n", + "Vi har en array med to arrayer i, som vi kaller _data_. Vi kan plukke ut elementer fra denne arrayen slik:\n", + "\n", + "```{code-block} Python\n", + "print(data[1,2]) # Printer element 2 (det tredje elementet) fra array 1 (den andre arrayen i arrayen)\n", + "print(data[1,:]) # Printer alle elementer fra array 1 (den andre arrayen i arrayen)\n", + "print(data[:,0]) # Printer element 0 (det første elementet) fra alle (begge) arrayene\n", + "```\n", + "````" + ] + }, + { + "cell_type": "markdown", + "id": "f2a249ad", + "metadata": {}, + "source": [ + "### Matematikk med arrayer\n", + "Noe som er praktisk med arrayer, er at de kan opppføre seg matematisk som vektorer eller matriser. Eksempler på en matematiske vektor og en matrise er:\n", + "\n", + "$\\vec{v} = [1, 4, 5]$\n", + "\n", + "$M = \\begin{bmatrix}1\\ 2\\ 2\\\\0\\ 4\\ 5\\\\ 6\\ 1\\ 1\\end{bmatrix} = \\begin{bmatrix}\\vec{v} \\\\\\vec{u} \\\\ \\vec{w}\\end{bmatrix} $\n", + "\n", + "Vi skal ikke se så mye på matriser her, men det er nyttig å vite at det finnes matematiske størrelser som kan representeres som flerdimensjonale arrayer. Matriser kan også ses på som en samling vektorer.\n", + "\n", + "La oss se på de vanligste vektoroperasjonene gjennom et eksempelprogram:\n", + "\n", + "\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Test programmet ovenfor og beskriv hvordan de ulike operasjonene fungerer.\n", + "```" + ] + }, + { + "cell_type": "markdown", + "id": "6137ab00", + "metadata": {}, + "source": [ + "### Vektorisering\n", + "En annen ting som er svært nyttig med arrayer, er at de er svært raske å behandle. Vektorisering betyr å bruke arrayer istedenfor å bruke løkker til å repetere operasjoner. Arrayaddisjon er et eksempel på vektorisering. Vi kunne jo ha addert komponentene trinnvis i en løkke. Nedenfor ser du et eksempel på både ikke-vektorisert og vektorisert kode. For å illustrere forskjellen i tida det tar å gjøre de to ulike kodene har vi importert _time_-biblioteket. Det lar oss registrere start- og slutt-tida i programmet, og vi kan derfor beregne tida det tar å kjøre koden ved å ta differansen mellom disse.\n", + "\n", + "\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Forklar hva som foregår i programmet ovenfor. Test programmet ovenfor og beskriv hvordan de ulike operasjonene fungerer. Sjekk også forskjellen i tid mellom komponentvis multiplikasjon av arrayer i en løkke og vektorisert multiplikasjon.\n", + "```" + ] + }, + { + "cell_type": "markdown", + "id": "d92839fa", + "metadata": {}, + "source": [ + "## Tupler\n", + "Tupler blir brukt til å lagre statisk innhold som ikke skal endres. Et typisk eksempel er når vi skal spesifisere en fargekode i RGB (rød, grønn, blå). Da angis intensiteten til rød, grønn og blå som et tall mellom 0 og 255. Dette kan vi beskrive i en liste, men lister kan endres og er derfor ikke så robuste som tupler. Vi bruker derfor tupler til å lagre slike data. Istedenfor klammeparenteser bruker vi runde parenteser når vi lager tupler:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "213479d7", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(255, 0, 255)\n" + ] + } + ], + "source": [ + "svart = (0, 0, 0)\n", + "hvit = (255, 255, 255)\n", + "rød = (255, 0, 0)\n", + "magenta = (255, 0, 255)\n", + "\n", + "print(magenta)" + ] + }, + { + "cell_type": "markdown", + "id": "6740d721", + "metadata": {}, + "source": [ + "## Dictionarier\n", + "\n", + "Dictionarier er en samling av data som indekseres med strenger istedenfor tall. Istedenfor klammeparenteser bruker vi krøllparenteser når vi lager dictionarier. Vi kaller indeksene i en dictionary for _nøkler_, og hver nøkkel har en _verdi_.\n", + "\n", + "```{code-block} Python\n", + "dictionary = {\"nøkkel1\": verdi1, \"nøkkel2\": verdi2, \"nøkkel3\": verdi3, ...}\n", + "```\n", + "\n", + "Dictionarier er spesielt nyttig når vi skal lagre informasjon om bestemte kategorier, som ulike arter, grunnstoffer eller radioaktive nuklider. Programsnutten nedenfor viser hvordan vi bruker en dictionary der vi oppgir atommassen til ulike grunnstoffer." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "b678d981", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "6.94\n" + ] + } + ], + "source": [ + "atommasse = {\"H\": 1.01, \"He\": 4.00, \"Li\": 6.94, \"Be\": 9.01}\n", + "\n", + "print(atommasse[\"Li\"]) # Skriver ut atommassen til litium" + ] + }, + { + "cell_type": "markdown", + "id": "1167d578", + "metadata": {}, + "source": [ + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Forklar forskjellen mellom hvordan vi får ut elementer fra en liste sammenliknet med en dictionary.\n", + "```\n", + "\n", + "Dictionarier blir ekstra nyttige når vi forstår hvordan vi kan lagre dictionarier i dictionarier. Da kan vi for eksempel lagre høyde, bredde og vekt til en bestemt art, eller ulike egenskaper ved grunnstoffene. Programmet nedenfor viser hvordan du kan gjøre dette. Vi ser også at vi enkelt kan skrive ut alle nøkler og verdier i en dictionary\n", + "\n", + "\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Legg inn et ekstra valgfritt grunnstoff i programmet ovenfor i tillegg til hydrogen og vanadium. Legg også til kokepunkt for alle grunnstoffene. Skriv ut kokepunktet til det nye grunnstoffet.\n", + "```" + ] + }, + { + "cell_type": "markdown", + "id": "10eb8b21", + "metadata": {}, + "source": [ + "## Oppgaver\n", + "\n", + "```{admonition} Oppgave 6.1\n", + ":class: tip\n", + "Lag to arrayer. Fyll den ene med oddetall fra 1 til 101 og den andre med partall fra 0 til og med 100. Legg sammen arrayene.\n", + "```\n", + "\n", + "```{admonition} Oppgave 6.2\n", + ":class: tip\n", + "Et program skal regne ut $c = a + b$. Forklar hva $c$ vil bli dersom\n", + "1. $a = [1,2,3,4]$ og $b = [1,2,3,4]$\n", + "2. $a = [1,2,3,4]$ og $b = 1$\n", + "3. $a = array([1,2,3,4])$ og $b = 1$\n", + "4. $a = array([1,2,3,4])$ og $b = array([1,2,3,4])$\n", + "```\n", + "\n", + "```{admonition} Oppgave 6.3\n", + ":class: tip\n", + "Et program skal regne ut $c = a * b$. Forklar hva $c$ vil bli dersom\n", + "1. $a = [1,2,3,4]$ og $b = [1,2,3,4]$\n", + "2. $a = [1,2,3,4]$ og $b = 4$\n", + "3. $a = array([1,2,3,4])$ og $b = array([1,2,3,4])$\n", + "```\n", + "\n", + "```{admonition} Oppgave 6.4\n", + ":class: tip\n", + "Lag en array med alle tall i 9-gangen opp til 1000. Skriv ut tallene til slutt\n", + "```\n", + "\n", + "````{admonition} Oppgave 6.5 (kjemi)\n", + ":class: tip\n", + "Følgende kode regner ut pH i en løsning gitt ulike verdier av konsentrasjonen av oksoniumioner. Vektoriser koden.\n", + "\n", + "```{code-block} Python\n", + "import numpy as np\n", + "\n", + "H3O = [1E-10, 2.4E-9, 1E-8, 3.5E-7, 7E-6, 1.2E-5, 1E-4, 1E-2, 1.2]\n", + "\n", + "def surhet(oksonium):\n", + " pH = -np.log10(oksonium)\n", + " return pH\n", + " \n", + "pH = []\n", + "\n", + "for kons in H3O:\n", + " pH.append(surhet(kons))\n", + " \n", + "```\n", + "````\n", + "\n", + "```{admonition} Oppgave 6.6 (matematikk)\n", + ":class: tip\n", + "Vi har vektorene $\\vec{v} = [2, 2]$ og $\\vec{w} = [1, -3]$. Avgjør om vektorene er ortogonale ($\\vec{v}\\cdot \\vec{w} = 0$). Kontroller ved å regne ut for hånd.\n", + "```\n", + "\n", + "```{admonition} Oppgave 6.7\n", + ":class: tip\n", + "Lise prøver å lage tre arrayer: én med alle partall fra og med 0 til og med 10, én med 1000 jevnt fordelte tall fra og med 0 til og med 10 og én med alle heltall fra og med 100 til og med 1 i synkende rekkefølge. Men programmet hennes gir feil output. Hva er feil? Rett opp programmet slik at Lise får gjort det hun ønsker.\n", + "\n", + "\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "import numpy as np\n", + "\n", + "partall = np.arange(0, 11, 2)\n", + "mange_tall = np.linspace(0, 10, 1000)\n", + "heltall_synkende = np.arange(100, 0, -1)\n", + "\n", + "print(\"Første array:\", partall)\n", + "print(\"Andre array:\", mange_tall)\n", + "print(\"Tredje array:\", heltall_synkende)\n", + "```\n", + "````\n", + "\n", + "```{admonition} Oppgave 6.8\n", + ":class: tip\n", + "Programmet nedenfor tegner fire sirkler, men sirklene trenger farge. Lag fire tupler som inneholder RGB-verdiene til fire valgfrie farger.\n", + "\n", + "\n", + "```\n", + "\n", + "```{admonition} Oppgave 6.9\n", + ":class: tip\n", + "Lag en dictionary med farger som nøkler og RGB-verdier som verdier (som tupler). Lag minst fem farger og skriv ut \"RGB-koden for FARGE er: (R, G, B)\" for hver farge i dictionarien.\n", + "```\n", + "\n", + "````{admonition} Oppgave 6.10\n", + ":class: tip\n", + "Følgende program har noen variabler som inneholder informasjon om noen elever som har en bestemt lærer. Legg dem inn i en dictionary isteden. Hva er fordelen med å bruke dictionarier her?\n", + "```{code-block} Python\n", + "elever = [\"Gunnar\", \"Marius\", \"Kristian\"]\n", + "lærer = [\"Andreas\"]\n", + "```\n", + "````\n", + "\n", + "````{admonition} Oppgave 6.11 (biologi)\n", + ":class: tip\n", + "Lag en dictionary med ulike arter og forskjellige egenskaper til disse artene. Det bør være minst 3 ulike arter med 3 egenskaper hver.\n", + "````" + ] + }, + { + "cell_type": "markdown", + "id": "42228742", + "metadata": {}, + "source": [ + "## Videoer\n", + "I videoene nedenfor kan du få en innføring eller repetisjon i den grunnleggende teorien bak arrayer og dictionarier:\n", + "\n", + "````{tab-set}\n", + "```{tab-item} Arrayer og tupler\n", + "\n", + "```\n", + "```{tab-item} Dictionarier\n", + "\n", + "```\n", + "````" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "52f533e8", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/_sources/docs/tema3_datahandtering/lese_filer.ipynb b/_sources/docs/tema3_datahandtering/lese_filer.ipynb new file mode 100644 index 00000000..61e872cf --- /dev/null +++ b/_sources/docs/tema3_datahandtering/lese_filer.ipynb @@ -0,0 +1,820 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Datahåndering II: Håndtere og visualisere data\n", + "\n", + "```{admonition} Læringsutbytte\n", + "Etter å ha arbeidet med dette temaet, skal du kunne:\n", + "1. lese data fra fil\n", + "2. rydde og sortere data\n", + "3. visualisere fildata\n", + "```\n", + "\n", + "```{epigraph}\n", + "In God we trust; all others must bring data.\n", + "\n", + "-- Statistiker W. Edwards Deming (1900–1993)\n", + "```\n", + "\n", + "Data er over alt. Til daglig prosesserer vi store mengder med data i hjernen vår, og vi lærer og konstruerer nye oppfatninger og sammenhenger basert på disse inntrykkene. Dersom vi snubler i en høy dørterskel tilstrekkelig mange ganger, lærer vi etter hvert å ta høyere skritt over akkurat denne terskelen. Vi klarer også stort sett å kjenne igjen dyr som hunder, katter og aper, og vi klarer å skille dem fra hverandre. Det er fordi vi har samlet masse data i løpet av livet som gjør oss egnet til å trekke slutninger og gjøre (som regel?) gode valg. Samfunnet og internett samler også data om oss, blant annet for å tilpasse seeropplevelser på Netflix eller annonser på Google. Heldigvis er datainnsamling ganske regulert gjennom lover og regler (GDPR = General Data Protection Regulation).\n", + "\n", + "Vi kan også bruke data til å illustrere sammenhenger i natur og samfunn, og som utgangspunkt for modellering. Vi skal derfor her se på hvordan vi kan lese, bearbeide og visualisere data på en god måte." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Datafiler\n", + "Vi ønsker ofte å oppbevare og overføre data i _råtekstformat_ fordi de er robuste og kan leses av alle. Det betyr at dataene ikke har noen formatering eller annen informasjon enn de faktiske dataene. En Word-fil er for eksempel ikke råtekst, fordi den inneholder formatering av tekst som farger, kursivering og tekststørrelse. Eksempler på råtekstfiler er .txt-filer og .csv-filer. Råtekstdata kan vi lage manuelt, eller vi kan få dem fra sensorer eller laste dem ned fra internett. De fleste store datafiler lagres i råtekst.\n", + "\n", + "Vi kan bruke Python til å lese slike data på mange ulike måter. Vi skal se på tre ulike metoder å gjøre det på, slik at du kan benytte det som er best i en gitt situasjon. Alle metodene har fordeler og ulemper, som vi også skal adressere. Vi kommer derimot til å bruke metoden fra det mye brukte _Pandas_-biblioteket som standard seinere, så det kan være en fordel at du lærer deg denne metoden best. Det er også den enkleste måten å lese filer på.\n", + "\n", + "Vi tar utgangspunkt i en liten fil med få datapunkter, slik at det er enkelt å se hva som skjer når vi leser fila. Fila beskriver temperaturen i en kaffekopp (i $^oC$) med tida (i minutter), og ser slik ut:\n", + "\n", + "```{code-block} text\n", + "tid (min), temperatur (grader celsius)\n", + "0,90\n", + "1,80\n", + "2,72\n", + "3,64\n", + "4,59\n", + "5,51\n", + "6,45\n", + "7,42\n", + "8,39\n", + "9,37\n", + "10,36\n", + "```\n", + "\n", + "Vi ser at fila skiller datapunktene med komma, og at første linje som fungerer som overskrift. Dette er viktig informasjon når vi skal lese fila. For å lese en datafil, må den enten ligge i samme mappe som programmet som leser fila, eller så må du spesifisere hvilken filbane fila har. Det enkleste er å legge den i samme mappe som programmet, eller i en mappe som for eksempel heter \"datafiler\", som ligger i samme mappe som programmet ditt. Alternativt går det an å lese rett fra en nettadresse som peker direkte på en datafil (f.eks. \"https://www.uio.no/studier/emner/matnat/ifi/IN-KJM1900/h20/datafiler/temperatur.txt\").\n", + "\n", + "Nedenfor ser vi tre måter å lese filer på. Vi skal primært bruke Pandas-metoden videre, men vi skal likevel gjennomgå alle metodene slik at du kjenner til litt ulike framgangsmåter." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "``````{tab-set} \n", + "`````{tab-item} Standard Python\n", + "Vi kan bruke grunnstrukturer i Python til å lese filer uten å bruke biblioteker. Da må vi benytte løkker for å gjenta operasjoner for hver linje i fila:\n", + "\n", + "\n", + "\n", + "Her bruke vi kommandoen _open_, med nøkkelordet _\"r\"_ (read). I løkka leser programmet hver linje, og deler dataene ved hvert komma, spesifisert i kommandoen _split_. Dette genererer ei liste med to elementer, siden det er to elementer på hver rad. Disse elementene blir tolket som tekst. Derfor konverterer vi dem til flyttall og legger dem i hver sin liste, som vi plotter til slutt. Vi lukker også fila til slutt.\n", + "````{admonition} Underveisoppgave\n", + ":class: tip\n", + "Kjør programmet nedenfor i Trinket-vinduet ovenfor. Hva viser programmet deg?\n", + "```{code-block} Python\n", + "import matplotlib.pyplot as plt\n", + "\n", + "fil = open(\"temperatur.txt\", 'r')\n", + "fil.readline() \n", + "t = []\t\t\t\t\t\t \n", + "T = []\t\t\t\t\t \n", + "\n", + "for rad in fil:\t\t\t\t \n", + " print(\"rad:\", rad)\n", + " data = rad.split(\",\")\t\t \n", + " print(\"splittet rad:\", data)\n", + " print(\"radelement 1:\", data[0], \"radelement 2:\", data[1])\n", + "fil.close()\n", + "```\n", + "````\n", + "`````\n", + "\n", + "`````{tab-item} Numpy-biblioteket\n", + "Det finnes også en nyttig funksjon som heter _loadtxt_ i _numpy_-biblioteket, som lar deg lese filer på en vektorisert måte uten løkker. Da lages det en array av dataene, med en array for hver kolonne inni denne arrayen. Arrayen er altså todimensjonal, og vi må derfor trekke ut de relevante kolonnene i hver sin endimensjonale array.\n", + "\n", + "\n", + "\n", + "Her utfører vi \"array-slicing\", det vil si at vi plukker ut elementer fra en todimensjonal array og lager en ny endimensjonal array av det.\n", + "\n", + "````{admonition} Underveisoppgave\n", + ":class: tip\n", + "Kjør programmet nedenfor i Trinket-vinduet ovenfor. Hva viser programmet deg om array-slicing? Eksperimenter gjerne med å bytte ut verdiene, slik at du forstår hvordan verdiene plukkes ut\n", + "\n", + "```{code-block} Python\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "data = np.loadtxt(\"temperatur.txt\", skiprows = 1, delimiter = \",\") # Får to arrayer (kolonner) i en array\n", + "print(data)\n", + "t = data[0:3,0]\n", + "T = data[0:3,1] \n", + "print(t)\n", + "print(T)\n", + "\n", + "plt.scatter(t, T)\n", + "plt.xlabel(\"Tid (s)\")\n", + "plt.xlabel(\"Temperatur ($^o$C)\")\n", + "plt.show()\n", + "```\n", + "````\n", + "`````\n", + "\n", + "`````{tab-item} Pandas-biblioteket\n", + "Et svært mye brukt bibliotek er Pandas-biblioteket. Det benyttes mye i datahåndtering og maskinlæring, og er kanskje den enkleste måten å lese filer på. Med funksjonen _read\\_csv_ leses filer av typen .txt eller .csv, og vi får en ny datatype som kalles en _dataramme_ (_dataframe_). En slik datatype kan ses på som en slags dictionary, der kolonneoverskriftene fungerer som nøkler. Dermed skriver vi _data[\"temperatur\"]_ for å få tilgang til kolonnen med overskriften \"temperatur\".\n", + "\n", + "\n", + "\n", + "Pandas gir penest og ryddigst output dersom du bruker det i Jupyter Notebook. Vi skal bruke Pandas videre her, så da får du en smakebit på hva som er mulig.\n", + "`````\n", + "``````" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Håndtere data med Pandas\n", + "\n", + "Noen ganger trenger vi å rydde, utforske og omstrukturere datasettene våre før vi visualiserer dem. Dette egner Pandas seg svært godt til. La oss se på et eksempel. Datafila _penguins.txt_ inneholder ulik informasjon om pingviner som er registrert på ulike øyer. Vi kan lese fila slik:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "\n", + "pingvindata = pd.read_csv(\"https://www.uio.no/studier/emner/matnat/ifi/IN-KJM1900/h21/datafiler/penguings.txt\", delimiter = \",\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Nå kan vi ta en kikk på de første eller siste linjene i datasettet vårt ved å bruke funksjonene _head_ eller _tail_. Dersom vi ikke gir disse funksjonene en parameterverdi, får vi de 5 første eller siste linjene:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    speciesislandbill_length_mmbill_depth_mmflipper_length_mmbody_mass_gsex
    0AdelieTorgersen39.118.7181.03750.0MALE
    1AdelieTorgersen39.517.4186.03800.0FEMALE
    2AdelieTorgersen40.318.0195.03250.0FEMALE
    3AdelieTorgersenNaNNaNNaNNaNNaN
    4AdelieTorgersen36.719.3193.03450.0FEMALE
    \n", + "
    " + ], + "text/plain": [ + " species island bill_length_mm bill_depth_mm flipper_length_mm \\\n", + "0 Adelie Torgersen 39.1 18.7 181.0 \n", + "1 Adelie Torgersen 39.5 17.4 186.0 \n", + "2 Adelie Torgersen 40.3 18.0 195.0 \n", + "3 Adelie Torgersen NaN NaN NaN \n", + "4 Adelie Torgersen 36.7 19.3 193.0 \n", + "\n", + " body_mass_g sex \n", + "0 3750.0 MALE \n", + "1 3800.0 FEMALE \n", + "2 3250.0 FEMALE \n", + "3 NaN NaN \n", + "4 3450.0 FEMALE " + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pingvindata.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Her ser vi både kolonnenavnene og verdier til de fem første pingvinene. Vi kan også se at vi får en litt merkelig verdi, nemlig NaN. Dette står for \"Not a Number\" og er en vanlig måte å markere at vi mangler data. Det betyr for eksempel at pingvinene er registrert, men at vi ikke fikk undersøkt den. Vi ser for øvrig at _read\\_csv_ fra Pandas kan lese både NaN-verdier, tekst og tall samtidig." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Rydde data\n", + "\n", + "Mange ganger har vi behov for å utforske og rydde litt i datasettet vårt. Det kan hende vi kun trenger noen utvalgte verdier, eller det kan hende vi ønsker å slette noe. Programmet nedenfor viser deg noen muligheter. Husk at hvis du skal lagre verdier, må du tilordne dem til variabler. For eksempel _finner_ vi kun damepingvinene ved å skrive _pingvindata[pingvindata[\"sex\"] == \"FEMALE\"]_. Hvis vi vil lage en dataframe som kun inneholder damepingvinene, må vi skrive _pingvindata_damer = pingvindata[pingvindata[\"sex\"] == \"FEMALE\"]_. Nedenfor ser du et utvalg muligheter vi har med pandas. Studer eksempelen nøye og test dem gjerne ut selv! En god måte å jobbe med dette på, er å skrive ut _pingvindata.head()_ hver gang du har gjort en endring i datasettet for å se hva som har skjedd." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    speciesislandbill_length_mmbill_depth_mmflipper_length_mmbody_mass_gsex
    0AdelieTorgersen39.118.7181.03750.0MALE
    1AdelieTorgersen39.517.4186.03800.0FEMALE
    2AdelieTorgersen40.318.0195.03250.0FEMALE
    3AdelieTorgersenNaNNaNNaNNaNNaN
    4AdelieTorgersen36.719.3193.03450.0FEMALE
    \n", + "
    " + ], + "text/plain": [ + " species island bill_length_mm bill_depth_mm flipper_length_mm \\\n", + "0 Adelie Torgersen 39.1 18.7 181.0 \n", + "1 Adelie Torgersen 39.5 17.4 186.0 \n", + "2 Adelie Torgersen 40.3 18.0 195.0 \n", + "3 Adelie Torgersen NaN NaN NaN \n", + "4 Adelie Torgersen 36.7 19.3 193.0 \n", + "\n", + " body_mass_g sex \n", + "0 3750.0 MALE \n", + "1 3800.0 FEMALE \n", + "2 3250.0 FEMALE \n", + "3 NaN NaN \n", + "4 3450.0 FEMALE " + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Sjekke hvilke kolonnekategorier vi har\n", + "pingvindata.columns\n", + "\n", + "# Teller ulike forekomster i kolonnen\n", + "pingvindata[\"sex\"].value_counts()\n", + "\n", + "# Finne en spesifikk kolonne\n", + "pingvindata[\"flipper_length_mm\"]\n", + "\n", + "# Finne et utvalg elementer [fra:til] av en spesifikk kolonne\n", + "pingvindata[\"flipper_length_mm\"][0:10]\n", + "\n", + "# Finne flere kolonner\n", + "pingvindata[[\"bill_length_mm\", \"bill_depth_mm\", \"flipper_length_mm\"]]\n", + "\n", + "# Finne spesifikke elementer\n", + "pingvindata.loc[1] # Element 1 (andre element)\n", + "pingvindata.loc[100][2] # Element 100, kolonneverdi 2\n", + "pingvindata[pingvindata[\"sex\"] == \"FEMALE\"] # Damepingviner\n", + "\n", + "# Sortere verdier etter stigende (ascending = True) rekkefølge (først nebblengde, så nebbdybde)\n", + "pingvindata.sort_values([\"bill_length_mm\", \"bill_depth_mm\"], ascending = True)\n", + "\n", + "# Velger ut kun de pingvinene med nebblengde under 40 mm\n", + "pingvindata_kort_nebb = pingvindata[pingvindata[\"bill_length_mm\"] < 40]\n", + "\n", + "# Sletter alle pingviner som har mangelfull info (NaN)\n", + "pingvindata.dropna()\n", + "\n", + "# Legger til en ny kolonne\n", + "pingvindata[\"total_mm\"] = pingvindata[\"bill_length_mm\"] + pingvindata[\"bill_depth_mm\"] \n", + "\n", + "# Lagre fila i en ny csv-fil\n", + "pingvindata.to_csv(\"ny_pingvinfil.csv\", index = False)\n", + "\n", + "# Sletter kolonnen har lagt til\n", + "pingvindata.pop(\"total_mm\")\n", + "pingvindata.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Bruk pingvindatafila (du finner den under datafiler på nettsidene her) og les dataene med Pandas. Finn ut hvor mange hankjønnspingviner det er med kroppsmasse under 3000 g.\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "En mulig løsning er å gjøre det slik, eller kun sortere kroppsmasse og så bruke _count\\_values_ til å telle antall av hvert kjønn.\n", + "\n", + "```{code-block} Python\n", + "data1 = pingvindata[pingvindata[\"sex\"] == \"MALE\"]\n", + "data1 = data1[data1[\"body_mass_g\"] < 3500]\n", + "print(\"Antall hankjønnspinginver:\", len(data1))\n", + "```\n", + "````\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Vi kan beskrive frekvens som antall forekomster av en verdi som tilhører en variabel. Relativ frekvens er antallet forekomster av noe delt på totalt antall verdier innenfor den samme variabelen. Regn ut relativ frekvens av antall pingviner av arten Adelie.\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "En mulig løsning er å gjøre det slik, eller kun sortere kroppsmasse og så bruke _count\\_values_ til å telle antall av hvert kjønn.\n", + "\n", + "```{code-block} Python\n", + "arter = pingvindata[\"species\"].value_counts()\n", + "print(arter) # ser at Adelie er element 0 i lista over antall arter\n", + "adelie = arter[0]\n", + "n = len(pingvindata)\n", + "print(\"Relativ frekvens:\", round(adelie/n,2))\n", + "```\n", + "````" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Visualisering\n", + "Visualisering av data er viktig. Det gir oss mulighet til å enkelt se sammenhenger og tolke data. En illustrasjon bør være så klar og enkel som mulig, uten unødvendige detaljer. Vær derfor kritisk når du skal lage dine egne figurer. Vi skal bruke et bibliotek som heter _seaborn_ til å lage fine visualiseringer. Seaborn-biblioteket inneholder noen ekstra fine plott som utvidelse til matplotlib, og vi kan bruke vanlige matplotlib-kommandoer som _xlabel_ og _title_ sammen med seaborn-kommandoene. La oss på noen få nyttige plott her. Vi skal se nærmere på andre plott ettersom de blir nyttige.\n", + "\n", + "Her er et eksempel på et relasjonsplott (\"relplot\"), som viser sammenhengen mellom to variabler. Vi kan lage ulike markører og modifisere størrelsen til markørene. I plottet nedenfor er det kanskje litt i overkant mye informasjon som formidles, men det viser i hvert fall hva som er mulig." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt \n", + "import seaborn as sns\n", + "\n", + "sns.relplot(data=pingvindata, x=\"bill_length_mm\",y=\"bill_depth_mm\", hue=\"species\", size=\"body_mass_g\", style=\"island\")\n", + "plt.xlabel(\"Nebblengde (mm)\")\n", + "plt.ylabel(\"Nebbdybde (mm)\")\n", + "plt.title(\"Sammenheng mellom nebbdybde og nebblengde hos pingviner\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Forklar hva plottet ovenfor formidler. Foreslå eventuelt forbedringer av visualiseringen.\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Visualiseringen nedenfor formidler noe av det samme, men med fokus på hvilke verdier som er mest vanlig hos de ulike artene. Vi kaller det for et \"tetthetsplott\" (kde = kernel density estimate), siden det viser fordelingen (tettheten) av de ulike verdiene. En slik visualisering kan leses omtrent som et kart med høydenivåer – den innerste \"ringen\" viser området der det er \"høyest\", altså har flesteparten av pingvinene denne fordelingen." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "sns.jointplot(data=pingvindata, x=\"bill_length_mm\",y=\"bill_depth_mm\", hue=\"species\", kind = \"kde\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plottet nedenfor er en variant av et tetthetsplott for én variabel:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "sns.kdeplot(data=pingvindata, x=\"bill_length_mm\", hue=\"species\", fill=True, palette=\"crest\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "En annen nyttig visualisering er histogrammer. Det er figurer som viser fordeling av verdier ved å gruppere ulike verdier i intervaller . Du kan velge hvor mange søyler/intervaller som skal være med i histogrammet ved å justere parameteren _bins_. " + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "sns.histplot(data=pingvindata, x='flipper_length_mm', bins = 12)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Istedenfor antall søyler, kan vi for eksempel justere bredden på søylene:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "sns.histplot(data=pingvindata, x='flipper_length_mm', binwidth=10)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Dersom det er bedre å bruke søylediagram istedenfor histogram, kan vi bruke \"barplot\" istedenfor \"histplot\":" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "sns.barplot(data=pingvindata, x=\"species\", y=\"body_mass_g\", hue=\"sex\", ci=\"sd\") # ci = \"sd\" gir standardavviket som svarte streker" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Søylediagrammer egner seg godt til å illustrere forskjeller mellom ulike kategorier, mens histogrammer viser fordelingen av en bestemt variabel. Vi ser også at søylediagrammene kan vise spredningen i datasettet (de svarte linjene)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Som sagt finnes det mange andre mulige visualiseringer og måter å pynte plottene på, men vi nøyer oss i første omgang med disse." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Oppgaver\n", + "```{admonition} Oppgave 1: Visualisere data\n", + ":class: tip\n", + "Fila `titrering.txt` (som du finner [her](https://realprog.no/docs/datafiler.html)) inneholder en kolonne med tilsatt volum NaOH i mL til en løsning med eddiksyre og en kolonne med pH. \n", + "\n", + "Les av fila og plott titrerkurven.\n", + "```\n", + "\n", + "```{admonition} Oppgave 2: Undersøke data\n", + "Les inn data fra fila `antall-meldte-covid-19.txt` (som du finner [her](https://www.uio.no/studier/emner/matnat/natfag/NAT3000/h21/datafiler/antall-meldte-covid-19.txt)) ved hjelp av Pandas.\n", + "\n", + "1. Hva beskriver datasettet?\n", + "2. Vis de første 5 radene i datasettet.\n", + "3. Finn ut hvor mange rader og kolonner datasettet inneholder.\n", + "```\n", + "\n", + "```{admonition} Oppgave\n", + ":class: tip\n", + "Den molare massen til et grunnstoff kan beregnes ved å ta summen av den molare massen til hvert av isotopene til grunnstoffet multiplisert med andelen/forekomsten av denne istopen:\n", + "\n", + "$$\\sum_i m_iw_i$$\n", + "\n", + "Her er $m_i$ massen til den $i$-te isotopen av grunnstoffet, og $w_i$ er forekomsten av denne istopen (fra 0 til 1, der 1 er 100 prosent forekomst). Fila _tinn.txt_ inneholder forekomsten i \\% av ulike isotoper av tinn, som er grunnstoffet med mest stabile isotoper.\n", + "\n", + "1. Les av fila.\n", + "2. Bruk informasjonen til å regne ut den molare massen til tinn. Print ut massen med fire desimaler og korrekt enhet.\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "I videoene nedenfor kan du få en innføring eller repetisjon i den grunnleggende teorien bak lesing av filer:\n", + "\n", + "````{tab-set} \n", + "```{tab-item} Lese filer med loadtxt\n", + "\n", + "```\n", + "\n", + "```{tab-item} Lese filer med pandas\n", + "\n", + "```\n", + "````" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.12" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/tema3_datahandtering/maskinlaring.ipynb b/_sources/docs/tema3_datahandtering/maskinlaring.ipynb new file mode 100644 index 00000000..a548f3b6 --- /dev/null +++ b/_sources/docs/tema3_datahandtering/maskinlaring.ipynb @@ -0,0 +1,458 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Datahåndtering IV: Maskinlæring\n", + "\n", + "```{admonition} Læringsutbytte\n", + "Etter å ha arbeidet med dette temaet, skal du kunne:\n", + "1. gjør rede for hva som menes med maskinlæring\n", + "2. lage, teste og evaluere enkle modeller ved hjelp av maskinlæring\n", + "```\n", + "\n", + "Når et barn har sett en hund som har blitt omtalt som en hund, generaliserer det ofte slik at det oppfatter alle dyr som hund. Men ettersom barnet ser flere ulike hunder og andre dyr, klarer det etter hvert å skille hund som en egen kategori. Vi danner oss forestillinger og generaliseringer basert på observasjoner i virkeligheten. Dette kalles _induksjon_. Slutningene vi tar, følger ikke med nødvendighet, men med sannsynlighet. Og ganske ofte kan vi ta feil. Men desto flere uttrykk vi utsettes for, desto større sannsynlighet er det som regel at vi har rett.\n", + "\n", + "Vi kan bruke induktiv læring på datamaskinen også. Da kaller vi det _maskinlæring_. Med de store mengdene digitale data vi omgir oss med, kan datamaskinen lære og trekke slutninger om verden rundt oss. Så istedenfor å eksplisitt kode alle valg en datamaskin kan ta, lar vi datamaskinen lære fra data og trekke slutninger selv.\n", + "\n", + "I dette kapitlet skal vi se på hvordan vi kan benytte biblioteket _scikit-learn_ og _keras_, som er en del av _tensorflow_. Disse bibliotekene må installeres først – du kan skrive for eksempel _pip install scikit-learn tensorflow_ i et terminalvindu for å gjøre dette. Bibliotekene fungerer svært godt sammen med Pandas med Jupyter Notebook som programmeringsplattform, så vi kommer til å benytte dette her.\n", + "\n", + "Vi vender atter tilbake til pingvinene våre. Vi skal her lage en maskinlæringsmodell for å artsbestemme ringpingviner, bøylepingviner og adeliepingviner.\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "## Steg 1: Les av og utforsk dataene" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    speciesislandbill_length_mmbill_depth_mmflipper_length_mmbody_mass_gsex
    0AdelieTorgersen39.118.7181.03750.0MALE
    1AdelieTorgersen39.517.4186.03800.0FEMALE
    2AdelieTorgersen40.318.0195.03250.0FEMALE
    3AdelieTorgersenNaNNaNNaNNaNNaN
    4AdelieTorgersen36.719.3193.03450.0FEMALE
    \n", + "
    " + ], + "text/plain": [ + " species island bill_length_mm bill_depth_mm flipper_length_mm \\\n", + "0 Adelie Torgersen 39.1 18.7 181.0 \n", + "1 Adelie Torgersen 39.5 17.4 186.0 \n", + "2 Adelie Torgersen 40.3 18.0 195.0 \n", + "3 Adelie Torgersen NaN NaN NaN \n", + "4 Adelie Torgersen 36.7 19.3 193.0 \n", + "\n", + " body_mass_g sex \n", + "0 3750.0 MALE \n", + "1 3800.0 FEMALE \n", + "2 3250.0 FEMALE \n", + "3 NaN NaN \n", + "4 3450.0 FEMALE " + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import seaborn as sns\n", + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "pingvindata = pd.read_csv(\"data/penguins.txt\", delimiter = \",\")\n", + "pingvindata.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Når vi har lest inn fila, kan det være lurt å visualisere ulike sammenhenger i datasettet. Vi skal bestemme oss for hvilke _kriterier_ eller _attributter_ (\"features\") vi ønsker å legge til grunn for å plassere pingvinen i en eller kategori (\"label\"). Vi velger her å lage en modell som skal forutsi hvilken pingvinart vi har med å gjøre gitt bestemte verdier av et utvalg variabler. Her er det nyttig å visualisere sammenhenger slik at du har en formening om hvilke kategorier som er mest egnet til en bestemmelsesnøkkel.\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Bruk pairplot-funksjonen til seaborn-biblioteket til å lage noen hypoteser på hvilke kriterier som er mest avgjørende for å bestemme hva slags art vi har med å gjøre.\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Siden det mangler noen verdier (NaN), må vi gjøre noe med dem. Enten kan vi bytte dem ut med for eksempel medianverdien eller gjennomsnittet, eller så kan vi fjerne alle pingvinene med NaN-verdier. Sistnevnte er ganske drastisk, men går ofte greit dersom datasettet er stort. Vi gjør det slik for enkelhets skyld:" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "pingvindata.dropna(inplace=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Steg 2: Velge treningssett og testsett\n", + "For å lage en modell som skal forutsi pingvinarten, må vi først importere noen nyttige funksjoner fra scikit-learn-biblioteket. Vi skal gradvis se hva disse funksjonene gjør." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.model_selection import train_test_split, cross_val_score\n", + "from sklearn import tree\n", + "from sklearn.metrics import accuracy_score, confusion_matrix" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Nå er vi klare for litt maskinlæring. Grunnprinsippene er som følger:\n", + "1. Bestem hvilke kriterier som skal ligge til grunn for kategorien vi ønskerat maskinlæringsalgoritmen skal sortere etter.\n", + "2. Velg ut en del av datasettet som datamaskinen skaltrenepå og en avdatasettet vi skaltestemed til slutt. Datamaskinen ser på kriteriene ogde tilhørende kategoriene, og bestemmer en sannsynlighet for sammen-hengen mellom ulike kriterier og kategorier.\n", + "3. Lag en modell. Dette gjør vi ved å bruke ferdige algoritmer fra et ma-skinlæringsbibliotek.\n", + "4. Tren modellen med treningssettet. Nå har du lagd en modell som ertilpasset det vi ønsket.\n", + "5. Valider modellen ved å bruke testsettet.\n", + "6. Analyser modellen og gjør eventuelle endringer slik at forutsigelsene mo-dellen gjør, blir så gode som mulig" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Først velger vi altså ut kriterier og bestemmer kategorier. La oss bare begynne med to kriterier: nebblengde og nebbdybde." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "kriterier = pingvindata[['bill_length_mm', 'bill_depth_mm']] # features\n", + "kategorier = pingvindata['species'] # labels" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Legg merke til at det er dobbel klammeparentes i første linje. Dette gir et objekt med to kolonner. Maskinlæringsalgoritmene krever et objekt (en array eller dataramme) som består av både kolonner og rader, derfor er disse doble klammeparentesene alltid nødvendig.\n", + "\n", + "La oss nå velge ut hvor stor andel av datasettet vi skal trene med. Det er ofte lurt å trene med 70–80 \\% av datasettet, og bruke resten til å teste med. Det finnes en funksjon som gjør dette automatisk, nemlig _train\\_test\\_split_:" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "# Velge ut data til trening og testing\n", + "treningsandel = 0.8 # Velger 80 prosent av datasettet til trening\n", + "ml_data = train_test_split(kriterier, kategorier, train_size=treningsandel, random_state=42)\n", + "\n", + "treningskriterier = ml_data[0]\n", + "testkriterier = ml_data[1]\n", + "treningskategorier = ml_data[2]\n", + "testkategorier = ml_data[3]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Det funksjonen ovenfor gjør, er å velge ut 80 \\% av dataene fra tilfeldige steder i datasettet til trening og 20 \\% til testing. Vi lagrer kriterier (lengden og dypbden til pingvinnebbet) og tilsvarende kategori (art) i variabelen _ml\\_data_. Denne består nå av fire separate elementer, som vi sorterer i linjene nederst i fire ulike variabler: kategorielementene (altså verdien til nebbdybde og nebblengde) og de tilsvarende kategoriene (hvilken art det tilsvarer) som ble valgt ut til trening, og tilsvarende for testing.\n", + "\n", + "En litt merkelig parameter er _random\\_state_. Den er ikke nødvendig for å dele opp datasettet, men den er nyttig. Hvis vi velger et tilfeldig tall her, låser vi algoritmen slik at den plukker ut de samme tallene hver gang vi kjører programmet. Det kan være en fordel dersom vi ønsker å teste og tilpasse modellen, men ønsker å ha det samme utvalget av datasettet hver gang. Hvis vi ikke velger et fast utvalg, vil modellen gi ulike resultater hver gang vi kjører programmet.\n", + "\n", + "```{admonition} Underveisoppgave\n", + "Skriv ut de ulike kategoriene og kriteriene for å se hva programmet har generert så langt. Prøv å bytte ut eller fjerne random\\_state-parameteren og kjør programmet flere ganger. Observer hva som skjer.\n", + "\n", + "\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Steg 3: Lag modellen\n", + "Nå kan vi velge en algoritme som grunnlag for modellen vår. Det finnes mange ulike algoritmer, og de benytter statistikk og lineær algebra til å optimere ulike parametre. Vi skal ikke se på algoritmene her, men heller fokusere på å forstå hvordan de fungerer. Derfor starter vi med en enkel beslutningstrealgoritme. Denne fungerer som et slags valgtre, der hvert valg utføres fra et gitt kriterium (for eksempel nebblengde mindre enn 40 mm), og som brukes til å sannsynliggjøre hvilken art vi har med å gjøre.\n", + "\n", + "Vi lager og trener modellen slik:" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "DecisionTreeClassifier()" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "modell = tree.DecisionTreeClassifier() # Lager modellen\n", + "modell.fit(treningskriterier, treningskategorier) # Trener modellen" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Nå har vi (eller datamaskinen) faktisk lagd modellen vår, og vi har brukt treningsdataene til å trene modellen slik at den best mulig kan forutsi kategorier basert på gitte kriterier." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Steg 4: Test og evaluer modellen\n", + "Vi skal nå teste og evaluere modellen vår:" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.9402985074626866" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "forutsigelser = modell.predict(testkriterier)\n", + "accuracy_score(testkategorier, forutsigelser)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Her bruker vi altså testkriteriene og lar modellen forutsi hvilke kategorier dette tilsvarer (forutsigelser). Så sammenlikner vi dette med de faktiske kategoriene (testkategorier) med funksjonen \\texttt{accuracy\\_score}. I dette tilfellet får vi en treffsikkerhet på ca. 94 \\%. Det betyr at modellen vår gir riktig pingvinart 94 \\% av gangene. Det er ikke verst!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Vi kan også bruke modellen til å forutsi en art gitt helt nye data, for eksempel slik:" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['Adelie'], dtype=object)" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "nebblengde = 35\n", + "nebbdybde = 15\n", + "modell.predict([[nebblengde, nebbdybde]]) # Husk to klammer her!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Dette betyr at en pingvin med nebblengde 35 mm og nebbdybde 15 mm mest sannsynlig er en Adelie-pingvin." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Steg 5: Videre analyse\n", + "Noen ganger blir modellen ganske dårlig, og da kan det hende du bør gå tilbake og velge andre, eller flere attributter (kriterier) for modellen. For å analysere videre hva modellen feiler på, kan det være fint å lage en forvirringsmatrise(også kalt feilmatrise). Tallene for forvirringsmatrisen kan vi lage med en funksjon som heter _confusion\\_matrix_, og selve matrisen kan vi lage med heatmap-funksjonen til seaborn-biblioteket:" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "cm = confusion_matrix(forutsigelser, testkategorier)\n", + "sns.heatmap(cm, annot=True, cmap=\"viridis\",\n", + " xticklabels=[\"Adelie\", \"Chinstrap\", \"Gentoo\"], yticklabels=[\"Adelie\", \"Chinstrap\", \"Gentoo\"])\n", + "plt.xlabel(\"Predikerte verdier\")\n", + "plt.ylabel(\"Sanne verdier\")\n", + "plt.savefig(\"forvirringsmatrise.pdf\", dpi = 600)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Hvis vi ikke benytter _ticklabels_, får vi verdiene 0, 1 og 2, som vi selv må tolke som de ulike artskategoriene etter rekkefølgen de har i datasettet. \n", + "\n", + "Totalt har vi brukt 20 \\% av datasettets 333 datapunkter til testing, det vil si 67 datapunkter. Matrisen sammenlikner de predikerte kategoriene og de sanne testkategoriene. Vi kan se at den for eksempel forutså at arten tilhørte Adelie 29 riktige ganger, men forutså Chinstrap (ringpingvin) én gang der arten skulle vært Gentoo (bøylepingvin)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Maskinlæring kan brukes til ufattelig mye rart, og det finnes mange ulike modeller som man kan prøve ut. Her var hovedpoenget å bli litt kjent med hva maskinlæring er og hvor enkelt det er å utføre enkel maskinlæring med dagens verktøy." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/tema3_datahandtering/plotting.ipynb b/_sources/docs/tema3_datahandtering/plotting.ipynb new file mode 100644 index 00000000..5ec9c036 --- /dev/null +++ b/_sources/docs/tema3_datahandtering/plotting.ipynb @@ -0,0 +1,448 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Datahåndtering I: Visualisering\n", + "\n", + "```{admonition} Læringsutbytte\n", + "Etter å ha arbeidet med dette temaet, skal du kunne:\n", + "1. bruke matplotlib-biblioteket til visualisering\n", + "2. plotte datapunkter og funksjoner\n", + "3. lage og tolke ulike visualiseringer\n", + "```\n", + "Håndtering av data blir stadig viktigere i dagens samfunn. En viktig del av datahåndtering er å kunne generere fine og informative figurer som beskriver dataene på en god måte. Det blir stadig vanligere å bruke programmering til dette. Det finnes flere typer biblioteker som kan gi oss fine og profesjonelle figurer. Vi begynner med et mye brukt bibliotek som heter _matplotlib_. Hvis du foretrekker å importere _pylab_ istedenfor, kan du godt gjøre det. Pylab-biblioteket inneholder også alle de samme plotteverktøyene.\n", + "\n", + "## Plotting av lister\n", + "Hvis vi har få datapunkter, kan vi skrive dem inn i lister direkte i programmet vårt og plotte dem. La oss si at vi har samlet data for hvor raskt en hurtigvoksende plante vokser annenhver dag. Vi registerer dagene og høyden til planten i cm, og legger disse verdiene inn i lister." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt # importerer relevante plotteverktøy\n", + "\n", + "tid = [0, 2, 4, 6, 8, 10, 12, 14] # tid i dager\n", + "plantehøyde = [0, 1, 4.2, 7.9, 12.5, 13, 13.7, 13.9] # høyde i cm\n", + "\n", + "plt.plot(tid, plantehøyde) # plotter plantehøyde mot tid\n", + "plt.show() # viser plottet" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Hvis vi har lyst til å modifisere og pynte på plottet, har vi mange muligheter til det. Her er noen forslag til en del nyttige endringer av plottet ovenfor:" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(tid, plantehøyde, color = 'limegreen', marker = 'o', linestyle = '--')\n", + "plt.title(\"Forsøk: Plantevekst\") # tittel\n", + "plt.xlabel(\"Tid (dager)\") # x-aksetittel\n", + "plt.ylabel(\"Plantens høyde (cm)\") # y-aksetittel\n", + "plt.xlim(0,15) # definisjonsmengde\n", + "plt.ylim(0,20) # verdimengde\n", + "plt.grid() # tegner rutenett\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Det finnes utrolig mange måter å modifisere et plott på. Tabellene nedenfor viser en oversikt over nyttige plottekommandoer, linjestiler, markører og farger, som du kan bruke for å lage akkurat den figuren du ønsker. Du bør også søke litt rundt på nettet for å finne andre muligheter, for eksempel ved å søke på «python plotting colors» og liknende. Du må bruke internett flittig når du lurer på noe i programmering!\n", + "\n", + "En veldig nyttig kommando når vi skal representere flere grafer i samme koordinatsystem, er _legend_. Denne kommandoen viser merkelappene (\"labels\") til de ulike plottene. Programmet nedenfor gir et eksempel på dette.\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Programmet nedenfor plotter miljøgifter i ulike organismer i to innsjøer. Studer programmet og eksperimenter med ulike verdier fra tabellen nedenfor.\n", + "```\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "````{tabbed} Nyttige plottekommandoer\n", + "```{code-block} Python\n", + "plot(x,y) # plotter x mot y og trekker rette linjer mellom\n", + "scatter(x,y) # plotter kun punkter\n", + "show() # viser plottet\n", + "\n", + "title(\"tittel\") # tittel på plottet\n", + "xlabel(\"tekst\") # x-aksetittel\n", + "ylabel(\"tekst\") # y-aksetittel\n", + "xlim(fra, til) # definisjonsmengde\n", + "ylim(fra, til) # verdimengde\n", + "grid() # rutenett på\n", + "\n", + "axhline(y=0, color='black') # x-akse\n", + "axvline(x=0, color='black') # y-akse\n", + "\n", + "savefig(\"filnavn.png\") # lagrer bildet med god oppløsning\n", + "```\n", + "Inni plottekommandoen kan vi også legge til farger, linjestiler, markører, merkelapper og liknende:\n", + "\n", + "```{code-block} Python\n", + "plot(x,y,color=\"\",marker=\"\",linestyle=\"\",label=\"\")\n", + "```\n", + "```` \n", + "\n", + "````{tabbed} Markører\n", + "| Markør | Forklaring |\n", + "| ----- | ---------- |\n", + "| \".\" | punkt |\n", + "| \"o\" | sirkel |\n", + "| \" \" (mellomrom) | ingen markør |\n", + "| \"^\" | triangel opp |\n", + "| \"v\" | triangel ned |\n", + "| \"s\" | firkant |\n", + "| \"p\" | femkant |\n", + "```` \n", + "\n", + "````{tabbed} Linjestiler\n", + "| Linjestil | Forklaring |\n", + "| ----- | ---------- |\n", + "| \"-\" | heltrukket linje |\n", + "| \"--\" | stipla linje (lange) |\n", + "| \";\" | stipla linje (korte) |\n", + "| \"-.\" | stilpa linje (annenhver kort/lang) |\n", + "| \" \" (mellomrom) | ingen linje |\n", + "```` \n", + "\n", + "````{tabbed} Farger\n", + "![farger](https://matplotlib.org/2.0.2/_images/named_colors.png)\n", + "```` " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plotting av funksjoner\n", + "En datamaskin kan bare håndtere _diskrete_ verdier, altså ikke-uendelige tallmengder. En matematisk funksjon kan derimot være kontinuerlig og ha uendelig mange funksjonsverdier. På en datamaskin må vi tilnærme denne uendelige mengden med et ganske stort antall. Dette kan vi gjøre med for eksempel _linspace_-kommandoen. Programmet nedenfor plotter funksjonen $f(x) = 2x^2 - 2x + 1$ for $x\\in[-2, 3]$" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "\n", + "x = np.linspace(-2, 3, 1000) # lager 1000 x-verdier mellom -2 og 3\n", + "y = 2*x**2 - 2*x + 1 # lager 1000 tilsvarende y-verdier til en funksjon\n", + "\n", + "plt.plot(x,y)\n", + "plt.xlabel('x')\n", + "plt.ylabel('y')\n", + "plt.grid()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Det Python egentlig gjør når den plotter funksjoner, er å plotte et bestemt antall punkter og \"tegne\" rette linjer mellom disse punktene. Dette kalles \"lineær interpolasjon\". Det blir tydelig dersom vi kun velger ut fem punkter å plotte funksjonen i." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "x = np.linspace(-2, 3, 5) # lager 5 x-verdier mellom -2 og 3\n", + "y = 2*x**2 - 2*x + 1 # lager 5 tilsvarende y-verdier til en funksjon\n", + "\n", + "plt.plot(x,y,marker='o')\n", + "plt.xlabel('x')\n", + "plt.ylabel('y')\n", + "plt.grid()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Dersom vi definerer en Python-funksjon, kan vi også bruke denne til å generere _y_-verdier: " + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "def f(x):\n", + " return 2*x**2 - 2*x + 1 \n", + "\n", + "x = np.linspace(-2, 3, 1000) # lager 5 x-verdier mellom -2 og 3\n", + "y = f(x) # lager 1000 tilsvarende y-verdier til en funksjon\n", + "\n", + "plt.plot(x,y,)\n", + "plt.xlabel('x')\n", + "plt.ylabel('y')\n", + "plt.grid()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Plott tre funksjoner i samme koordinatsystem. Eksperimenter med farger, linjestiler og annet. Husk aksetitler!\n", + "```\n", + "\n", + "```{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Flere plott i samme figur\n", + "Dersom vi ønsker å lage flere plott i samme figur, kan vi bruke kommandoen _subplot(antall rader, antall kolonner, figurnummer)_ for å plotte flere grafer samtidig. Her er et eksempel:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "\n", + "x = np.linspace(0, 10, 50)\n", + "y = np.sin(x)\n", + " \n", + "plt.subplot(2, 1, 1) # To rader, én kolonne, figur 1\n", + "plt.plot(x, y, color = \"green\", linestyle = \"--\")\n", + "plt.title(\"Grønn stiplekurve\")\n", + "\n", + "plt.subplot(2, 1, 2) # To rader, én kolonne, figur 2\n", + "plt.plot(x, y, color = \"red\", linestyle = \" \", marker = \"o\")\n", + "plt.title(\"Rød prikkekurve\")\n", + "plt.tight_layout() # Fikser slik at det ikke blir overlapp mellom f.eks. aksetitler\n", + "\n", + "plt.show()\n", + "#plt.savefig(\"kulfigur.png\") # Lagrer figuren på datamaskinen din" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Vi kan også lage flere funksjoner i samme koordinatsystem. Da bruker vi _labels_ (merkelapper) for å skille mellom de ulike grafene, og _legend_ for å vise merkelappene i koordinatsystemet." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "\n", + "x = np.linspace(-2, 3, 10)\n", + "\n", + "def f(x):\n", + " return x**2 - 2*x\n", + "\n", + "def g(x):\n", + " return np.sin(x)\n", + "\n", + "def h(x):\n", + " return - x + 6\n", + "\n", + "y1 = f(x)\n", + "y2 = g(x)\n", + "y3 = h(x)\n", + "\n", + "plt.plot(x,y1,color='lawngreen',label='f(x)', marker='^') # Bruker merkelapp (label) for å skille mellom kurvene\n", + "plt.plot(x,y2,color='maroon',label='g(x)', marker='o')\n", + "plt.plot(x,y3,color='deepskyblue',label='h(x)', marker='s')\n", + "plt.legend() # Viser merkelappene\n", + "plt.xlabel('x')\n", + "plt.ylabel('y')\n", + "plt.axhline(y=0,color='black') # Tegner x-akse\n", + "plt.axvline(x=0,color='black') # Tegner y-akse\n", + "plt.grid()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Plott tre av dine favorittfunksjoner i samme koordinatsystem. Tilpass akser og tittel og pynt på plottet.\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Modifiser figuren ovenfor slik at plottene vises ved siden av hverandre i samme figur istedenfor under hverandre.\n", + "```\n", + "\n", + "```{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "Spesifiser subplottene som _subplot(1, 2, 1)_ og _subplot(1, 2, 2)_. Da blir det to kolonner istedenfor to rader. \n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Videoer\n", + "I videoen nedenfor kan du få en innføring eller repetisjon i hvordan du plotter i Python.\n", + "\n", + "" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/tema3_datahandtering/statistikk.ipynb b/_sources/docs/tema3_datahandtering/statistikk.ipynb new file mode 100644 index 00000000..3bffac51 --- /dev/null +++ b/_sources/docs/tema3_datahandtering/statistikk.ipynb @@ -0,0 +1,951 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Datahåndering III: Statistikk\n", + "\n", + "```{admonition} Læringsutbytte\n", + "Etter å ha arbeidet med dette temaet, skal du kunne:\n", + "1. bruke deskriptiv statistikk til å beskrive data med tall og visualiseringer\n", + "2. utføre regresjonsanalyse og tolke resultatene\n", + "```\n", + "\n", + "```{epigraph}\n", + "If your experiment needs a statistician, you need a better experiment.\n", + "\n", + "-- Fysikeren Ernest Rutherford (1871–1937)\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Deskriptiv statistikk\n", + "Vi kan bruke statistikk til å oppsummere, beskrive og tolke data. Vi skiller mellom to typer statistikk:\n", + "1. Deskriptiv statistikk: oppsummere og beskrive data\n", + "2. Statistisk interferens: trekke slutninger fra data\n", + "\n", + "Vi skal mest se på deskriptiv statistikk her. La oss vende tilbake til pingvindataene våre. Vi kan få en enkel statistisk oversikt over datasettet vårt ved å bruke funksjonen _describe_." + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    bill_length_mmbill_depth_mmflipper_length_mmbody_mass_g
    count342.000000342.000000342.000000342.000000
    mean43.92193017.151170200.9152054201.754386
    std5.4595841.97479314.061714801.954536
    min32.10000013.100000172.0000002700.000000
    25%39.22500015.600000190.0000003550.000000
    50%44.45000017.300000197.0000004050.000000
    75%48.50000018.700000213.0000004750.000000
    max59.60000021.500000231.0000006300.000000
    \n", + "
    " + ], + "text/plain": [ + " bill_length_mm bill_depth_mm flipper_length_mm body_mass_g\n", + "count 342.000000 342.000000 342.000000 342.000000\n", + "mean 43.921930 17.151170 200.915205 4201.754386\n", + "std 5.459584 1.974793 14.061714 801.954536\n", + "min 32.100000 13.100000 172.000000 2700.000000\n", + "25% 39.225000 15.600000 190.000000 3550.000000\n", + "50% 44.450000 17.300000 197.000000 4050.000000\n", + "75% 48.500000 18.700000 213.000000 4750.000000\n", + "max 59.600000 21.500000 231.000000 6300.000000" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "\n", + "pingvindata = pd.read_csv(\"data/penguins.txt\", delimiter = \",\")\n", + "pingvindata.describe()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Vi kan forklare disse størrelsene slik:\n", + "- count = antall registrerte tilfeller\n", + "- mean = gjennomsnittet for alle individer\n", + "- std = standardavviket (dette skal vi se nærmere på seinere)\n", + "- min = minste registrerte verdi\n", + "- 25 % = \"nedre kvartil\". Her har 25 % av pingvinene for eksempel en kroppsmasse mellom 3550 og minste verdi (2700).\n", + "- 50 % = \"midtre kvartil\". Her har 50 % av pingvinene for eksempel en kroppsmasse mellom 3550 og 4050.\n", + "- 75 % = \"øvre kvartil\". Her har 75 % av pingvinene for eksempel en kroppsmasse på 4750 eller under. Det betyr også at 25 % har en kroppsmasse på 4750 til maksverdien 6300.\n", + "- max = høyeste registrerte verdi\n", + "\n", + "Vi kan også finne mange av disse størrelsene ved å bruke ulike funksjoner:\n", + "\n", + "\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Prøv ut programmet ovenfor og utforsk de ulike variablene slik at du forstår hva alle de statistiske størrelsene betyr. Forklar begrepet kvartil.\n", + "```\n", + "\n", + "### Mål på spredning\n", + "Det finnes mange måter å beskrive spredningen i en variabel på. Vi skal se på følgende måter:\n", + "- Variasjonsbredde\n", + "- Interkvartilbredde\n", + "- Varians og standardavvik\n", + "\n", + "Variasjonsbredde er et enkelt mål på spredning, nemlig differansen mellom største og minste verdi ($x_{maks} - x_{min})$. De to andre målene må vi se litt nøyere på.\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Regn ut variasjonsbredden i nebbdybde hos pingvinene.\n", + "```\n", + "\n", + "#### Interkvartilbredde\n", + "Vi har sett hvordan vi kan regne ut kvartiler.\n", + "\n", + "```{admonition} Kvartiler og persentiler\n", + "Kvartiler er fjerdedeler av et utvalg. For eksempel er nedre kvartil ($Q_1$) den høyeste verdien av en variabel som tilhører de 25 \\% minste verdiene innenfor en variabel. Midtre kvartil ($Q_2$) er verdien midt i datasettet, det vil si at 50 \\% av dataene ligger over og under dette punktet. Den midtre kvartilen kalles også for _medianen_. Tredje kvartil ($Q_3$) markerer verdien som 75 \\% av dataene ligger under (og de resterende 25 \\% av dataene ligger over).\n", + "\n", + "Dersom vi bruker en vilkårlig prosent som ikke representerer en fjerdedel, kaller vi det en _persentil_.\n", + "```\n", + "\n", + "Differansen mellom første og tredje kvartil er et godt mål på spredning. Dette er et mål på spredningen til de 50 \\% midtre dataene, og påvirkes derfor ikke av data som ligger langt unna de andre dataene (såkalte \"uteliggere\"). Dette målet kalles _interkvartilbredde_ (_IQR_) eller bare _kvartilbredde_:\n", + "\n", + "$IQR = Q_3 - Q_1$\n", + "\n", + "Kvartiler kan visualiseres enkelt med et _boksplott_:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import seaborn as sns\n", + "\n", + "sns.boxplot(data = pingvindata, x = \"species\", y = \"bill_depth_mm\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Vi kan forklare dette plottet slik:\n", + "\n", + "- Den svarte linja midt i boksene er medianen.\n", + "- 50 \\% av verdiene ligger innenfor boksene. Boksene markerer altså interkvartilområdet, fra $Q_1$ til $Q_3$.\n", + "- Vi har to utstikkere på hver side av boksen. De viser $IQR\\cdot1.5 = 1.5(Q_3 - Q_1)$ i begge retninger.\n", + "- Verdier som ligger utenfor disse utstikkerne, kalles _uteliggere_. Dette er unormalt store eller små verdier. Dette kan si oss noe om vi har mange unormale verdier eller om vi har noen få som vi kanskje kan fjerne ved nærmere statistisk analyse. Vi ser kun én uteligger hos Adelie-pingvinene, med unormalt dypt nebb.\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Lag et boksplott over kroppsmasse som funksjon av øya pingvinene er funnet på. Identifiser eventuelle uteliggere.\n", + "```\n", + "\n", + "````{admonition} Underveisoppgave\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "sns.boxplot(data = pingvindata, x = \"island\", y = \"body_mass_g\")\n", + "```\n", + "````" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Et alternativ til boksplott er fiolinplott. Prinsippet er ganske likt som med boksplott, men det viser i tillegg fordelingen av de ulike verdiene ved å angi \"tynne\" og \"tykke\" områder. Medianen markeres med en hvit prikk, og IQR med en tykk, svart linje. Uteliggere markeres ofte ikke i fiolinplott." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX8AAAEGCAYAAACNaZVuAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Z1A+gAAAACXBIWXMAAAsTAAALEwEAmpwYAABELUlEQVR4nO3dd3hUVfrA8e87JZNKDb2F3ouCLIqCFVRQYVdRd2VVBGzY1rb+bLiylrUrooK6a1t3FbAgFoooRYr00IuG3iGkZ9r5/TETN2ICSZiZO5N5P88zD5M7d+59MxPeOXPuOe8RYwxKKaXii83qAJRSSkWeJn+llIpDmvyVUioOafJXSqk4pMlfKaXikMPqACoqPT3dZGRkWB2GUkrFlGXLlh00xtQ7dnvMJP+MjAyWLl1qdRhKKRVTRGRbWdu120cppeKQJn+llIpDmvyVUioOafJXSqk4pMlfKaXikCZ/pZSKQ5r8lVIqDmnyjwLGGLS0tlIqkjT5R4HHHx/H4Esuobi42OpQlFJxQpN/FJg1aya5OTkcPnzY6lCUUnFCk38UycvLszoEpVSc0OQfRY4ePWp1CEqpOKHJ32L5+fm/3D906JCFkSil4klYk7+INBOROSKyTkTWisgdwe3PiMgGEVktIp+ISK1wxhHNDhw48Mv9/fv3WxiJUiqehLvl7wXuNsZ0AvoAt4pIJ2Am0MUY0w3YBDwQ5jii1u7du8u8r5RS4RTW5G+M2WOMWR68nwusB5oYY2YYY7zB3RYBTcMZRzTbti1QatufVJtt27dbHI1SKl5ErM9fRDKAU4DFxzw0AviqnOeMFpGlIrK0dPdIdfLTTz8hrhR8aQ3ZumUrfr/f6pCUUnEgIslfRFKBKcCdxpicUtsfJNA19EFZzzPGTDTG9DLG9KpX7zerkFULa9etw5NUF39KOoWFBezatcvqkJRScSDsyV9EnAQS/wfGmKmltl8HDAb+ZOK0tkF2djY7d+zAn1ofX2p9ADIzMy2OSikVD8I92keAt4D1xpjnS22/ELgPuNQYUxDOGKLZypUrAfDVaIhJqoUkJLF8+XJrg1JKxYVwt/z7AsOBc0VkZfB2MTAeSANmBre9HuY4otKSJUsQhwt/Sn0QwZPWmEWLl2i/fwzZvHkzVw27giefeMLqUJSqlHCP9plvjBFjTDdjTI/g7UtjTBtjTLNS224KZxzRyO/3M3/BAjw1GoMt8DZ4azUj52g269evtzg6VVFr1qxh9959fPX111aHolSl6Axfi6xdu5bsI0fw1s74ZZuvVjOw2Zg7d651galKOXjw4C/3tSqriiWa/C3y7bffIjZHIOGXcLjw1WjCzFmztesnRpSela0ztFUs0eRvAa/Xy8xZs/HUbAqOhF8/VqcVBw/sZ+3atRZFpypj186d2CUwWE1naKtYosnfAsuXLyfnaDbe9Na/ecxbpwVidzBjxgwLIlOVYYxh27YsTq3nAf43W1upWKDJ3wLffPMN4nThq9X8tw/aE/DUas6s2d/i8XgiH5yqsP3795Obl0+n2l5quoStW7daHZJSFabJP8IKCwuZO3ce7loZYLOXuY83vS35ebksXnxsJQwVTTZs2ABAyxpeMlLdrF+nXXUqdmjyj7AFCxZQXFyEN71Nufv4ajRBnEnMnDkzgpGpysrMzMRpgxZpPtrW9LJt+w5ycnJO/ESlooAm/wibPXs24krBn9aw/J1sNty1M1jwww8UFhZGLjhVKcuXLaVNTS9OG3So7cUYw4oVK6wOS6kK0eQfQQUFBSxavBh37QwQOe6+3jotcRcXs2jRosgEpyrl4MGDbNn6E13rugFoU9NLkkO0q07FDE3+EbR48WJ8Xu+vJnYBJGxbSMK2hb/a5q/REHEmMn/+/AhGqCpqwYIFAJySHrgo77BB1zrFLJg3F5/PZ2VoSlWIJv8IWrhwIeJ04U9r8KvttvxD2PKPWb9XbLhrNuWHhYs0mUSh2bNm0ijF0DTlf5PxftfAzZGjOb8U7FMqmmnyjxBjDIsXL8GT1gSkYi+7r2Yz8vNy2bhxY5ijU5Wxe/duVq5azRkNin7Ve3dKuockp/DVV2WuTaRUVNHkHyHbt2/nyJHD+Go2rvBzfDUbAehFxCjzxRdfYBPo1/jXtXwS7HBGg0K+mzNHR/2oqKfJP0JWrVoFgC+tUcWf5EyG5Nq/PFdZr6ioiM8/+5RT0t3UTfztGkTnNy3G7fHw+eefWxCdUhWnyT9C1qxZgyQkYRJrVOp5npT6ZGauIU4XO4s606ZNIyc3j4tbFJX5eLNUP13revn4v//RKp8qqmnyj5C169bhSU4/4RDPY/lT65Gfn8fOnTvDFJmqqMLCQj54/z061PbRvlb5F+EvyyjkyNEcPvnkkwhGp1TlaPKPgIKCgsBavSmVX4S+5DklpQSUdT766CMOH8nmitb5x92vQ20vXet6ee/dd7TvX0UtTf4RsGnTJowx+FOrkPyTayM2h474sdi+ffv44P33OK2++1et/vc2JvHexqTf7H91mwLy8/N58803IxmmUhWmyT8CShK3L6Vu5Z8sNnwpdbTlbyFjDM899yzG6+GPbX9dbmNbrp1tub8t0Nc8zcf5TYv47LNPyczMjFSoSlWYJv8I2LhxI5KYGhi9UwW+5HQ2btqkk70sMn36dBYtWswVrfOpl1TxFdauaF1I3UT4+7jHKSgoCGOESlWeJv8IWLN2LZ6k9Co/359Sj+KiIrZv3x7CqFRFbN26lZdefIHOdbwMaFa50TtJDripUy579+4NfHPQEVsqimjyD7Ps7Gz27tlTpf7+Er7gc3Vpx8jKzc3l4YceJMnm4ebOedgqN1ALCFz8/X3LQmbOnMWUKVNCH6RSVaTJP8xK+nt9x9TzqQyTWBNxJmrfcQS53W4eeuhB9u7ZzW1dcqjlqnqr/dKWRfSs52H8K6+wcOHCEz9BqQjQ5B9mq1atQmz2Kg3z/IUIntQGLF+xMmRxqfL5fD6eeOLvrFixkpEd8487pr8ibAI3d86jeZqPRx95mDVr1oQoUqWqTpN/mP3441K8qfXLXbKxonw1GrFv7x727NkToshUWfx+P08//TTffjuHq9oUcGYjd0iOm+iAe7vnUNNRzL333K2jt5TlNPmH0aFDh/j555/w1Why0sfy1QwcY8mSJSd9LFU2r9fLE088wddff83vWxUyOCO05RlqugwPnHKUZAq568479BqOspQm/zAq6d/11m520scyibWQxDR++OGHkz6W+q3i4mLGjn2UGTNmcHmrQn7fquzaPScrPdHw4KnZpFLAX+66k6VLl4blPEqdiCb/MJo7dy4kpmGS6pz8wURw12zG0qXLdMx4iOXm5nLvvfcwd+48rmlXwJAwJf4S6YmGh3oeJd1ZyH333svs2bPDej6lyqLJP0xyc3P5celSPLVaVLqYW3m8dVri8bi19R9C+/bt49ZbbiZz9Spu6ZLHhc0jU4mztsvw0Kk5tK7h5rHHHuPf//63zgNQEaXJP0y+/fbbwHq96W1Cdkx/WkNwpfL1N9+E7JjxbMOGDdw4ehT7du/gvh65nNHQE9HzpzgN9/fIoU8DN6+//jrPPvssXq83ojGo+BXW5C8izURkjoisE5G1InJHcHsdEZkpIpuD/9YOZxxW+PzzaZBSB39yFer5lEcEd902/LhkCfv27QvdcePQ3LlzuW3MrdiKsnm0Zzad61iTdBPscEuXfC7NKGTatGncd9+95OXlWRKLii/hbvl7gbuNMZ2APsCtItIJ+Csw2xjTFpgd/LnaWLt2LZs3b6I4vUPIunxKeOt3wIDWiq8iYwwffvghDz/8EM2SinisVzZNUyteryccbALD2hQxqlM+K5Yt45abbmT37t2WxqSqv7Amf2PMHmPM8uD9XGA90AS4DHgnuNs7wJBwxhFp77//PuJMxFuvbciPbVypeGtn8Mknn2oLsZK8Xi/PPvssr732Gr3ru/m/U3OoeRIzd0Otf2M395+Sy4E9O7jpxtGsW7fO6pBUNRaxPn8RyQBOARYDDYwxJbOV9gJl1j4QkdEislRElh44cCAygZ6kdevWsWDBAorrdwK7Myzn8DTuTmFhAf/5z3/CcvzqqKCggAce+CvTpk3jkoxCbu2ST8LJzbsLi051vDza6ygJnhzuuP025s+fb3VIqpqKSPIXkVRgCnCnMeZXSxuZwBCHMptfxpiJxphexphe9eqdRHmECPH7/bz66gQkIQlPoy7hO09KOt66rfjPf/+rff8VkJ2dzV133sGPS5YwokM+V7YpqlKRtkhpnOLn0V7ZNE0q5qEHH2T69OlWh6SqobAnfxFxEkj8HxhjpgY37xORRsHHGwH7wx1HJHz55ZdkZq6mqEkvsCeE9VzuZqfh8fp57vnndYjgcRw6dIjbbxvDlk0buaNbHuc2DU25hnCrmRCYDdy5joenn36ajz/+2OqQVDUT7tE+ArwFrDfGPF/qoc+Ba4P3rwU+C2cckbBz505efuUV/DUa4a3XLuznM640ipqcyqKFC7VlWI7Dhw9z+21j2LNrB/f2yKVnvcgO5TxZiQ64u3sup9Vz88orr/Df//7X6pBUNRLuln9fYDhwroisDN4uBp4CLhCRzcD5wZ9jVlFREY88+ijFXj9FrfqHfIRPebwNu+Cr2YQXXnyRTZs2ReScsSI3N5e77ryD/Xt2c2/3HDpZNJTzZDlsMKZrPr3ru3n11Vf57LOYbyepKBHu0T7zjTFijOlmjOkRvH1pjDlkjDnPGNPWGHO+MeZwOOMIJ7/fz7hx49iyeQuFLftjXKmRO7kIxa3647UlcN/99xMrF8XDze128+D/PcCO7du4q3sOHWrHZuIvYbcF5gL0SPfwwvPPs2DBAqtDUtWAzvA9CX6/n2eeeYa5c+dS3Lw3vtrNIx6DSUimoM0FHDmaw5133cWRI0ciHkO0efHFF1m5ajWjO+XRJUZb/McKfAPIIyPNx98eG0tWVpbVIakYp8m/inw+H88//zzTp0/H3bgH3kZdLYvFn1KXgrYD2LlrN3fceSeHDh2yLBarff3113zxxRdcmlEY8XIN4ZZohzu75ZBginnowf+jqCi8BehU9abJvwrcbjdjx47l888/x92oO56mPa0OCX+NRhS0vYBt23dy0823sHPnTqtDirg9e/bwwvPP0aG2j8tbV8/EWCfRcHPnXHbs2MmECROsDkfFME3+lXT48GFuv+MOvv/+e4qb/w5P89MidoH3RPw1m1DQ4SL2HzrC6BtvYuXKlVaHFDHGGJ5//jn8Xjc3daraYuuxoksdLwObFfHpp5/qus6qyjT5V8KGDRsYOXIU6zdspKjNuZZ29ZTHn1qf/E6XkOe1ceddd/HJJ5/ExTyARYsWsXjxEq5olU96UmRq9by3MYltuXa25doZtzSV9zYmReS8AJe3LqROErz04gv4/dbWJlKxSZN/BRhj+PTTT7n5lls4mFtIQcfB+Oq2sjqscpnEmuR3uhRPWmNeeOEF/va3v1XrBWD8fj+vTZhAoxTD+U0jU48fYFuunUKfjUKfjQ3ZTrblRq5eRKIDhrXKZ9PmLcyZMydi51XVhyb/E8jNzeWRRx7h+eefx53aiPzOQ/CnpFsd1ok5EihqNwB3057M/vZbbrhhZLWdCzB37lyytm1jaMt8HHH0F31GQzdNUw3/+ufb2vpXlRZH/1UqLzMzk2uvu57v587D3ew0itoNAGei1WFVnAieJqdQ2OEidh88wo033cRHH31U7RLFhx/+mwYphj4NqtfonhOxCVzSooBt23ewePFiq8NRMUaTfxm8Xi+TJk1izJgxHMwtorDTYDyNu0fNhd3K8tdoTF7noRSnNWb8+PHcfc89HDx40OqwQmLjxo2sX7+BgU0Kq/VF3vL8roGbWokwZcoUq0NRMUaT/zF27tzJzbfcwnvvvYe7bhvyuwzBn1rf6rBOnjOR4rYXUJzRl+UrVvLnP1/LvHnzrI7qpH3xxRck2IUzG0eurz+aOGxwdqNCfvzxR63wqipFk3+QMYavvvqK668fwaatP1PU5lzcrfuHvTpnRIngbdCR/M5DyDUuHnzwQZ555pmYnSzkdruZPWsmveoVkeywOhrr9GvkxhjDrFmzrA5FxRBN/gQW+nj88XE8+eSTFLpqk995aFSP5jlZJqkWBZ0uwd2oG9OmfcHIUaP5+eefrQ6r0n788Ufy8gs4o2FslGkOl/rJftrU9DF71kyrQ1ExpFLJX0S6icilIvL7klu4AouUrKwsRtwwklmzZ+Fu2pPCDhdFtDhbwraF2AoOYSs4ROK6L0jYtjAyJ7bZ8TTvTWGHgezYs5+Ro0YxY8aMyJw7RObNm0eyU6pN/Z6T0bt+MVu2/qRr/6oKq3DyF5G3gbeBPwCXBG+DwxRXRMydO5dRo0ez58BhCjtcjKfJKSCR/TJkyz+E+DyIz4M9dy+2/MjW5fHXbEp+5yEUJ9Zl3LhxvPzyy3i90Z9M/X4/CxfMp1ud4rga3lmeU4NrFSxcGKHGg4p5lekp7WOM6RS2SCLso48+Yvyrr2JS6lHY9jxMQorVIVnGJCRT2P4iEnYsYfLkyezavZuxjz5KUlLkZqxW1tatWzlyNIduTeJreGd5Gib7aZAc6Ar7wx/+YHU4KgZUps20UESqRfJ/8803GT9+PN7aLSjoeHFcJ/5f2Gy4W/ShOOMMFi5cyJ133RXVs4JXrFgBQOc6mvxLdKpdzMoVK6rdPA4VHpVJ/u8S+ADYKCKrRSRTRFaHK7Bwee+993j33Xfx1GtPcZtzwRbHw0TK4G3QiaI257J+/Xruu//+qB0JtHbtWtKToG5i9a9bVFHta3kpKCzUWv+qQiqT/N8isCTjhfyvv/+ScAQVLt9//z2TJk3CW7c17pZnRrx/P1b46rSkqNXZrF61mueeey4qC8NtWL+OVmnxPcrnWK1qBK7VbNy40eJIVCyoTPY7YIz53BjzszFmW8ktbJGF2N69e3niiScxqfUpbtUvZmfrRoovvTXuJj345ptv+Prrr60O51cKCgrYs3cfzVN9VocSVRom+3Ha4aeffrI6FBUDKpP8V4jIv0Xk6lgc6vnGG29Q5HZT2OYcsEWu+mIs8zQ5BX9aA16d8FpU9f+XDGdslKLJvzSbQMNkw44dO6wORcWAyiT/JKAYGECMDfXcsWMHs2fPprhBF4wrzepwYofYKG7eh5yj2Xz++edWR/OLvXv3ApCeqBc2j5Xu8rBv7x6rw1AxoMJXO40x14czkHCaOTMw89HboKPFkcQef2o9TGp9vv7mG6666iqrwwH4ZZH6mi5N/seqmWDYdviw1WGoGFDh5C8iLYHbgIzSzzPGXBr6sEIrMzMTk5KuQzqryFOrGT9tXUZBQQHJyclWh0NeXh4AKY7ouxBttWSnIT+KuuhU9KrMOMdPCYz4mQbEVJNr+46d+BJrWh1GzPIHX7vdu3fTpk0bi6MJFHQDcOpgrd9IsBmK3Tr3QZ1YZZJ/kTHm5bBFEkY+nw+jF3mrTgKvnc8XHRdYS4aeWl2/v9ArJCUlMWjQIKZPn05hFJTFKHlJjDGIjmhTx1GZttNLIvKoiJwuIqeW3MIWWQilpaUinkKrwyibz01SUhKXX355oJyCL/rGros3MNErLS06LpY7nU4APBZ//yzwCoMGDeL2229n0KBBFHitT7Yev+Cw2zXxqxOqTMu/K4FJXufyv24fE/w5qrVq2ZLtC5cSjct9iNfNoEsDCQTgo8+ja0w9gK3gMM6EBBo0aGB1KACkpASu3RR4BZfdun7/ZIdh+vTpAEyfPp36UXANotAHycnRW5NJRY/KJP8rgFbGmOhrmp5A9+7dmTNnDlJ4FJMUXX3/xpHwqwRiHNH3H9eZu5tu3bpht0dH11mtWrUAyHHbqO2yrisqyWEozCtk8uTJgZ9rWZ/8c4pt1K5dy+owVAyoTLfPGqBWmOIIqzPOOAMAx+EonPloT6CwMJBACgsLo27lMCk4DAVH6Bt8DaNB/fqBZTUPFukV32MdKnZQv0Ejq8NQMaAy/3tqARtE5BsR+bzkFqa4Qqphw4Z079GDhIObwcTUQCXLOQ9sxG63c/7551sdyi+aNm0KwJ58Tf6lGQN7Cu2/vD5KHU9lun0eDVsUETB0yBBWjR2L/ch2fHUyrA4nNniLSTi4iXPOOeeXrpZoUKNGDdLr1mF7XjRexbHOgUIbhR5D69atrQ5FxYDKzPD9/niPi8hCY8zpx2x7m0AJiP3GmC7BbT2A14FEwAvcYoxZUsm4K61fv340aNCQvXtWUVC7hRZ2qwDnvnUYr4crr7zS6lB+o1PnLmxYehjQCU0lNh8N/Hfu2FFnsqsTC+X35sQytv2LQAno0v4BPGaM6QE8Evw57BwOB3/+83Ak7wD2ozsjccrY5nXj2reWPn360L59e6uj+Y3u3buzvyDQ2lUB6444SE1JplWrVlaHEjOWLFnCpEmT4nLt41D+z/nNUAdjzFzg2EIjBqgRvF8TiNirfuGFF1K/QQNcu5YFOkhVuZx712A8RVx/fXSWdOrduzcAKw86LY4kOvgNrDrsomev06JmVFYseOHFF3jvvfeYOnWq1aFEnBXNpjuBZ0RkB/As8EB5O4rIaBFZKiJLDxw4cNIndjqd3DBiBJJ3EPuRrJM+XrXlKcK1bw1nnnlm1HYhtGjRgubNmrJkf3SNjrLK5qN2sosC3ZuqYrxeL3v3BCrEbt++3eJoIi+Uyb+ineg3A3cZY5oBdxGoF1QmY8xEY0wvY0yvevXqhSJGBgwYQLPmzUnctUxH/pTDuWcV+DyMGjXK6lCO6/wLBrDhiIODRXr9Zv4eF64EJ3379rU6lJiRlZUVKP2CYeOm+Fv9LJTJf3gF97sWKPmO9THQO4QxnJDdbmfUyJFQkI3j4JZInjomiDsf1771XHDBBbRs2dLqcI5r4MCBIML3u1xWh2KpQi8s3JfIOeeeFxVVV2NFZmYmAKat4cjhI7+sExEvKpz8gyt3bRaRoyKSIyK5IpJT8rgxZk0FD7Ub6B+8fy6wueLhhkb//v1p07Ytrt0rwa+t/9Kcu1chYhgxYoTVoZxQo0aN6PO73/Ht7iTL6/xYad4eF0Vew5AhQ6wOJaYs+XEJkiKYloHrf0uWhH3QYVSpTMv/H8Clxpiaxpgaxpg0Y0yN4z1BRD4EFgLtRWSniNwAjAKeE5FVwBPA6KoGX1UiEmj9F+XgOBjxz56oJe58Eg5s5OKLLqJx48ZWh1MhVwwbxtFi+GFPfPb9+/zw9Y5kOnXsSKdOnawOJ2YUFBSwZPESfI18UAMkVfj+++OOZq92KjPJa58xZn1lDm6Mubqch3pW5jjh0KdPH9q1a8+mHavw1msLokMGnXtWIwLDh1e0B896PXv2pF3bNkzbvpmzGrstL/McaYv3O9lfALf/6U9WhxJT5syZg8fjwTQzIOBr6mPp0qUcOHCAUF1fjHYnzHilFmpfKiL/jdUF3I8lIlx77Z+hMAf7oZ+tDsd6niISDmxkwAUX0KhR7NSGERGuGf5n9uYLC/fGV+vfb+DTrBQyWrTgzDPPtDqcmGGMYcrUKUgNgbrBbS0Nxhg+++wza4OLoIo0d0sWa69BYDplzC3gXp6+ffvSpGkzXHsz437cv3PfOozPyx//+EerQ6m0fv360aplBp9mJeOLo77/Rfuc7M4Trrv+emw2/eZaUcuWLWPL5i342vr+N0YxFUxjw9RPplIQJ8tgnvAvxhhzfXDx9jdL7pfaVu4wzVhgs9m4+qorkfyD2HL3WB2OdfxeXAfW87vf9SEjI8PqaCrNZrMx4oaR7MkXFsRJ69/nh6k/p9CqZQZnn3221eHEDGMMb739FpIsmBa/bvD5O/rJy81jypQpFkUXWZVpLrxSwW0xZeDAgaSm1cC5t6KDlaofx8GtGHchV145zOpQquyss86iXds2fJKVgjcOWv/z9ySwN1+4YeQobfVXwqJFi1i7Zi2+Dj44diJ0HTCNDB988AE5OTllPr86qUif/+kicjdQT0T+Uuo2lt++fDHH5XIxdMhlOI5sR4qOWh1O5BmDa/9aMlq2pGdPy6/DV5mIMGr0jRwogDnVfNy/xw+fZKXQoX077euvBK/Xy6sTXkXS/je881j+rn4KCgp49913Ixxd5FWkyZAApBIYGZRW6pYDXB6+0CJn6NCh2B0OnHvir/VvP7oL8g9z1ZVXxvy6r71796Zr1y58ti0Zd3SsNR8Wc3a5OFgIo0bfGPPvWSR9+eWXbN+2HW9Xb/mZryb4W/qZMmUKu3btimh8kVaRPv/vjTGPAX2C/74APG+Med4YUy0Gyaenp3PhwIEkHNyMuCN7scefUhdjd2LsTnxpDfGn1I3o+Z17VlG7Tt2oWqylqkSEUaNGk10Es3aGv/XfIs1Hkt1Pkt1Ph1oeWqSF/xOn2AefZyXTo3s3evXqFfbzVRcFBQVMenMSpAOlprDISkFW/voD1HQ2+MXPG2+8EdkgI6wynYX1RCQTWA1kisgqEYndfoJj/OlPf0LwB+raRJC7xen4k+viT65LUafBuFucfuInhYjt6G7sOXv40x+vJiGhelwo7dGjB7169WTatmSKvOE91/D2hbRI89EizcdDvfIY3r4wvCck8KGWXQw3jBylrf5K+O9//8vR7KP4uvl+VYVMsgXJPuZ1TAJfOx/fffcd69ati2ygEVSZ5P82gYVXMowxGcCtwD/DEpUFmjZtykUXXUTC/g3x0fdv/CTu/JE6dety2WWXWR1NSI0cOYpcN8zYUdYSE7Gr0AtfbEvmtF696N69u9XhxIycnBw+/M+HmCbml3H9J2LaGSRRAt8WqqnKJH+fMWZeyQ/GmPkEVuKqNkaOHInLlYAra2G1H/fv2L8ByTvAmFtvxeWqXhdIO3XqxOl9+jB9RzIF1egvdMaORHLdcMPIkVaHElM+/vhjigqL8HeuxDAwZ6D1v2zpMtauXRu+4CxUmeT/vYi8ISJni0h/EZkAfCcip4rIqeEKMJLq1q3LjaNHYz+6E8eB6lviVYpySNzxI6eeeirnnXee1eGExYgbbiDfbfhqW/Vo/ed7hC+3J3H66adrDZ9KKCwsZPKUyZjGJrB0VCWY1gZxCf/+97/DE5zFKpP8uwPtCCzkPhboCJwCPEdgUZZqYejQoZzasyeJ2xdhyz9kdTih5/OStPVbEl0JPPDAA9W237h9+/b079+fr3Ykk+OO/d9x+jYX+Z7At1NVcd988w35efn421dh8ocDfC19zJ8/v1ou81jh5G+MOec4t3PDGWQk2Ww2Hnn4YerUrkXSllkRH/0TVsbg+nkekn+IsY8+QoMGDayOKKxGjhyJ2y98+nNst/6PFAtf70jmvPPOo23btlaHEzOMMUyeMhmpIxXu6//NMdoYDIZPP/00pLFFg8rU828gIm+JyFfBnzsFSzRXO3Xq1OGpJ5/EZTwkbfoGvMVWh3TyjCFh2yIch7Zy4+jRnH565EYVWaVFixYMHjyY2TsT2Z0fu7NgP9qShB9b1K+sFm1WrlzJ9m3b8bXyVXydwWMlgWli+GL6FxQXV4M8UEpl/kf8C/iG/42S3URgPd5qqX379jzxxN9xFGWTvPFr8BZZHVLVGYNzxxKc+9YybNiwmCzeVlUjRozAlZjE+5tSYvIa/pajdubtcXHFsGExs8ZCtJgyZQriEkzzk3vj/a0DNX9mzpwZosiiQ2WSf7ox5iPAD2CM8QLVeB4lnHbaaYwbNw5H0RGSN3wFnhjsAjJ+ErJ+IGFPJkOHDuWWW26ptv38ZalTpw43jBzJ6kMOFu9zWh1OpXj98PaGVNLr1uHaa6+1OpyYsmPHDubNm4evZRk1fCqrHkht4cP/fIjPV31SXmWSf76I1AUMgIj0Aar9gPi+ffvy9FNP4fLmkbLui9iaA+D34toyB+f+9Vx99dXceeedcVkEbOjQobRv15Z3NqVyNIYu/k7LSmR7ro077/qLrs1bSW+//TbYA+vznjQBX3sfO7bvYPbs2Sd/vChRmUzwF+BzoLWILADeBW4LS1RRpnfv3rz80kukJUDKumnYcmNgoWdPIUkbvsJx+GduvfVWbr755rhq8ZfmcDj4vwcfosg4mLguNrp/thy188nPSZx33nn069fP6nBiyooVK5g9e3agXn+IrvWbpgapI7w64VXy8vJCc1CLVWa0z3ICC6+fAdwIdDbGrA5XYNGmU6dOvPH66zSqn07yhq+wR/Hav1J4hJR103AVHWHs2LFceeWVVodkuZYtW3LrrWNYddDJF9uie1Jbjlt4ZU0N6tevz1/+8herw4kpubm5PD7ucSRVMB1C+Ckv4D3Fy5EjR3j22WcxsdCCOIEKL+MYXLLxUqA9gfH+l8TyMo5V0bRpUya+8TrdunUlcev3OHf8GHUzge3ZO0lZN40aLhuvvPIy555bbUbhnrShQ4dy7rnn8PHWZFYerMzy1ZHj9cMrmankeB08Pu7vpKWlWR1SzPB4PDz40IMcOnQI7++8lVuhvCLqgL+zn2+//Zb3338/xAePvMos43gDgZW7/hS8vQmMCF9o0alGjRo8/9xzDBo0iITdq3BtmQ2+6Kgh4Ni7jsRN35DRvClvvTlJZ4IeQ0S4//6/0rp1a8avqUFWTnQtR2EMvLU+mfVHHNx//19p37691SHFDLfbzUMPP8TKFSvx9fJBnfCcx3Qw+Jv7mTRpEh999FF4ThIhlVnG0Ql0Msb8wRjzB6BzcFvccTqd3HfffYwZMwbnkW0kb5hu7WQw4ychayGubT/Qp08fXpswodpP4KqqpKQknnr6H9SoXZd/rKrB3oLouABuDPxnSxLz9ri4/vrrGTBggNUhxYycnBzuvuduFv6wEP+p/t8szxhSAuY0g2liGD9+PJMmTcLvj82l4yrzl9/MGFN6odt9QPMQxxMzRIRhw4bxxBNPkOjJJXn9NKQwO/KB+L24Ns/+ZQz/k088oSNDTqBevXo89/wLiCuNJ1bUZH+h9R8AU39KZPq2RIYMGcJ1111ndTgxY8uWLYwaPYrVmavx9/ZjWkegG9YG/j5+/K38vPfeezz00EPk5uaG/7whVpm/+tki8o2IXCci1wHTgVnhCSt29O3bl1deeZkaLjsp67/Alrc/cif3FgdG9GRv5/bbb2fMmDHY7dHVlRGtWrRowQsvvoTHnsITy2uyz6JvAMbA5K2JfPJzEhdffDF33nln3I7KqgxjDFOnTuXGG29kb/ZevP284W3xH8sG5lSDv4ef+T/MZ8QNI8jMzIzc+UOgMqN9xgCvEyjw1h2YaIyJi6GeJ9KhQwcmvvE69evWJnnjV9hy9pz4SSfLU0Tyhq9wFhzksbFjufzyarGiZkS1adOGF196GbcjlXHLa7IrL7IfAMbAh1uS+PTnJAYNGsS9994bl/MwKmvfvn3cc889vPjii3jqevCe5w2s0BVpEphH4Dvbx/68/YwZM4Y33ngjZspAVOovzRjziTHmruDtk9KPicjC0IYWWxo3bsyEV8fTtHEjkjfNCO9cAG8xyRu/IsGdw5NPPsk555wTvnNVc23btuXlV8YjSbUYt7wmP1fyInDJSl6V5Tfw9oZkvtyWyNChQ7n33nv1W9sJ+P1+PvvsM4b/eThLVyzFf4of35mhG8tfZXXBe74XX4aPDz74gOtHXB8T3wJC2cyw+i2wXL169Xj5pZdo1LBB4AMgHCWhfV6SN36Do/goTz75BH369An9OeJMq1atGP/qBJJr1eOJ5TVZd7jiYwSHty+s9PKNXj+8uiaFObtcDB8+PG5nXldGVlYWt465leeee46iGkV4B3gxbUzVC7aFmhNML4PvLB+7Du/i1lsDsUbzhLBQ/sVF14B3i9StW5eXX3qRurVqkrx5BlKcH7qDGz+urXOw5R/gsbFj6d27d+iOHeeaNm3KhNdep0HjpjyzKo2l+8MzkK3IC8+tSmPxvgRuueUWRo3StXiPp7i4mLfeeovrr7+edZvX4T/Nj+8sH6RYHVk5GoJ3gBd/Wz+fff4Zf7rmT3z33XdROSlMmxthUL9+fZ555h+4bH6StswCf2iKQTl3rcBxZBu33XabTvkPg3r16vHKqxNo064DL2emMm93aBe1z/cIT62owdrDTv76179y1VVXhfT41U1mZibXj7ied955B08TT6C1nxFFrf3yOMD0MPjO9ZFtsnnkkUd48MEHOXjwoNWR/Uook3+0vyUR1bp1ax5+6CEk7wAJ2xad9PHs2TtJ2LWCiy66SC/uhlHNmjV54YUXOeWUU3ljXQqzdobmAyDHLfx9eQ225Sfwt8cf5+KLLw7Jcauj4uJixo8fz5gxY9h1eBe+s3yY35nY61iuA95zvfi7+lmwcAHD/zycGTNmRM23gFAm/+HHbhCRt0Vkv4isOWb7bSKyQUTWisg/QhhDVDnrrLMYNmwYzv3rsWfvqPqBvEUkZc2jRYsMrfUSAcnJyTz19NOcccYZ/GtDCl9vP7laQEeLhb8vr8m+YhdPPf0P/dZ2HD/99BMjR43ko48+wtfKh3eAFxpaHdVJsAVmBXsv8JLvymfcuHGMfWxsVFwLqEhtn1wRySnjlisiOSX7GWPWlPH0fwEXHnO8c4DLgO7GmM5Uo/V/yzJq1ChatMggKWs++NxVOkbCtsWIt4iHH34Ilyu6i5JVFy6Xi8cff5x+/c7i/U3JzNxRtdc91y08uaImhzwu/vHMs5x22mkhjrT6mDFjBqNGjWL73u2B1v6pJvT1eaySBr5zfPi7+JkzZw4jbhjBzz//bGlIFSnvkGaMqVHGLc0YU+MEz50LHD5m883AU8aY4uA+EZwVFXkul4v7778PU5yPc9eKSj/flrMX58HN/PHqq2nXrl0YIlTlcTqdPProWPr2PYN3Nibzw97KXQQu8sIzq2qwvziBJ596mlNOOSVMkcY2Ywxvvvkm48aNw1PLg/eCGG/tl0fAdAzMC9iXvY/RN45myZIlloVTkZZ/nePdqnDOdsBZIrJYRL4XkXKbQiIyWkSWisjSAwcOVOFU0aFLly5cfPHFJOxbixTlnPgJJYwhccdi6qanM3z4b3rVVAQ4nU7Gjn2MHt278cbaVNYfqVhT1G9g/JpUsnIdPPa3v9GzZ88wRxqbjDG8/PLLvPvuu/hb+vH1i4Jx++GWDt7zvLgT3dx///3Mnz/fkjAq0ue/DFga/PfY29IqnNNBoOZeH+Be4CMpZ6ybMWaiMaaXMaZXvXr1qnCq6DFy5EicDgcJO5dV+Dn2wz8jeQe4cfRokpKSwhidOh6Xy8Xfn3iSxk2a8HJmGgeLTjy24eOtiaw86OTOO++kb9++EYgyNr3//vtMmTIFf1s/pqeJn/GHSeDt78VX08ejjz7KmjVl9ZqHV0W6fVoaY1oF/z321qoK59wJTDUBSwisCWzF5OyISk9P5/I//AHH4Z8qVgDOGBJ3r6Rps2ZccMEFYY9PHV9aWhpPPf0PfPZEXl2Thu84hRxXHXQwLSuJwYMHM2TIkIjFGGuWL1/Om2++ib+5H9M9BoZwhloC+M704U308vAjD5OTU4legRCoSLdPh+C/p5Z1q8I5PwXOCR6zHZAARNcA2DC56qqrcDqcOPeceOq3PXsHFBzmumuv1Wn/UaJZs2bcfc+9bM6281U5I4DyPcKbG9LIaNGCO+64I8IRxg63281TTz8FqQRa/PGW+Eu4wPs7L4cOHWLixIkRPXVFvmSVjC18jsDInJJbyc/lEpEPgYVAexHZKSI3AG8DrYLDP/8DXGuiZeBrmNWuXZuLLrqQhENbwHP8kgAJe9dQNz1dV+KKMueffz5nnXUWU39O4VAZ3T9Tf0rkaLHwfw8+qCOzjmP69Ons3bMXb48wrLhVQbJSIBvIBtt3tsDPVqgN/jZ+pk2bxq5duyJ22op0+4wO3r2YQBnnowRess+D24733KuNMY2MMU5jTFNjzFvGGLcx5hpjTBdjzKnGmG9P8neIKZdffjnG78N5YFO5+0jhEWw5u/nD73+Pw1FdxrpVDyLCbbfdhrHZmbz119dh9hfYmLUzkUGDB9OhQweLIox+xhg+nvxx4MqfhWsOSbYgnuDtgCDZ1n39MO0D334++eSTE+8cIpW5vPIO0BF4GXgF6AS8G46gqrOMjAy6d+9OwoGN5a7/69y/EbvdzqBBgyIcnaqIhg0bctllQ1iw18XBUgvBfLEtEZvDwfXXX29hdNFv8+bN7NyxE39Lf/x29xwrCfwN/cycNTNiK4NVJvl3McaMNMbMCd5GAV3CFVh1NnjwYCjKKbvss99PwqGt9O17JrVr1458cKpCrrzySkD4dleg/EOBFxbsS+SCCwaQnl7txy+clIULA9XfTeO46O2tMNPUcOTwETZtKr9XIJQqk/yXi8gv9YNF5HdUbahn3OvXrx8uVyKOQ1t/85g9ZxfGU8iFFw60IDJVUQ0aNOC03r35YV8SxsCy/QkUew2XXHKJ1aFFvcVLFge6fKr7eP5KMg0CH4ZLl0YmrVZktE+miKwGegI/iEiWiPxM4EJur3AHWB0lJSVx5pl9STiSBebXX/Hsh34iOSVFyzXHgHPPPZeDhbAt186yA07qpdelU6dOVocV1QoKCli3bh3++rG56HlYJYLUkojN+q3I1cTBYY8iDvXv35/Zs2djy92LP6VuYKPxk3B0B2ee04+EhNCWE1ahV1KnZ81hB+uzXZw9oI/W5j+BJUuW4Pf5MQ21y6csvgY+VmeuJi8vj9TU1LCe64TJ3xizLawRxKnevXtjt9uxZ+/A3eJ0AGy5ezGeIp0RGiPS09Np2KA+n2Xto9Br6Nq1q9UhRb3vvvsOcQnUtTqS6GQaG/wb/fzwww8MGDAgrOeKl8nUUSc5OZmu3bqRkLP7l232o7sQEXr10t60WHHDyFH07ns2AwcO5IwzzrA6nKiWm5vLvPnz8DXxaeYpT12QFOHLL78M+6l0ELmFep56KitXrABPETgTceTsoW3bdqSlpVkdmqqggQMHMnCgXpyviC+//BKP24NppV0+5RLwZfhYvnw5WVlZZGRkhO1U+vlroe7duwNgz9sPfh+2/AP06NHd4qiUCr3i4mI+/M+HUB/QEczHZVobxCG8//77YT2PJn8LtW/fHpvNhi1vP7aCw+D36WgRVS199tlnHD50GF/H0KxnXa25wNfKx8yZM8nKygrbaTT5WygpKYmmzZpjKziEreAQEPhAUKo6yc3N5V/v/CtQyqG+1dHEBtPBgBMmvDYhbOfQ5G+xtm1a4yzKxlZ4hASXi0aNGlkdklIh9c9//pO8vDx83bTVX2Eu8LX3sWjhorCN+9fkb7EWLVpginKx5R+iWbNm2Gz6lqjq46effmLq1KmBOj61rI4mtpi2BkkTXnzxRTweT8iPr5nGYk2aNAHAnruX5s2aWRyNUqFjjOGFF1/AOA2mSxSO8PEEul4vv/zywEp5oc+vJ8cO3u5edu7cyeTJk0N+eE3+FmvYsGGZ95WKdd999x2rVq7C19kH0bi0gQcGDRrE7bffHqigG23JH6BRYOLX2/98m4MHQ7vmlSZ/i5VemzjW1ylWqkRxcTGvvPoKUkuid1y/M7CozMsvv8z06dPBaXVAZfN39+P2uEO+0pcmf4vVqVOnzPtKxbLJkydzcP9BvN290Vuz3wmFhYVMnjyZwsLCqE3+pIKvtY9vvvmGLVu2hOywmvwtVrqAW82aNS2MRKnQyM3N5b3338M0Mjq0M0RMx8DQz1C2/jX5RxEt66Cqg6lTp1KQX4C/s5ZtDpkE8LXzsWjRIjZu3BiSQ2ryjyIpKSlWh6DUSfF4PEyeMjlQslnLOISUaWMQp/DRRx+F5Hia/KNIUlLSiXdSKor98MMPHM0+ir+NtvpDzgm+Fj7mfDeH3Nzckz6cJv8okpio69qp2DZ//nxsLluglIMKOdPc4PV4QzLrV5N/FHjooYcYMmSItvxVzFu1ehW+elqvP2zqgDiFzMzMkz6U1vOPAgMGDAj7qj1KhZvf72ff3n2BomQqPARIhd27d59w1xPRz2elVEj4/X6MMZpVwszYDF6v96SPo2+TUiokHA4HqWmpUGB1JNWYAVuhjbp1T34RZE3+SqmQ6dqlK/b9dtCen/DIAX+Bn86dO5/0oTT5K6VCZsCAAZh8AyffJa3KIJsFh8NB//79T/pYmvyVUiHTv39/mjZrimO1A06+W1qVdhhsWTYuu+wyatc++Rl0mvyVUiHjcDi47977IB9kmWj3T6i4wbHYQd26dRkxYkRIDhnW5C8ib4vIfhFZU8Zjd4uIEZH0cMaglIqsHj16cMMNN2DbbkPW6AfASfOCfb4dW5GNx//2eMhqgIW75f8v4MJjN4pIM2AAsD3M51dKWWD48OFceuml2DbYkNX6AVBlbrDPtSOHhbGPjqVLly4hO3RYk78xZi5wuIyHXgDuQ/8klKqWRIS//OUvDBkyBNsmG7JYIMrWbze1TGCJSafB1DOYWlGWjvLAMceBPdvOY489FpKLvKVFfIaviFwG7DLGrBI5/ioPIjIaGA3QvHnzCESnlAoVm83GXXfdRf369Zk4cSKSL3j7eCFKiteaHgbJDuQg/9lRVohuDzh+dJDsTObJF56kR48eIT9FRC/4ikgy8H/AIxXZ3xgz0RjTyxjTS5c4VCr2iAjXXHMNf//730ksSsQxy4HsiNalvaKAD2S1YJ9vJ6NJBpMmTgpL4ofIj/ZpDbQEVolIFtAUWC4iunK5UtXYWWedxdtvvU27Vu2wLQp2A7mtjirKZIPjWwe2jTYuvfRS3nj9DZo2bRq200W028cYk0mphd2CHwC9jDGhXZZeKRV1mjRpwmsTXuPdd9/l3ffexRwwgTV+mxK96/xGgg9kvWDbaKNGjRrc/8T9nHnmmWE/bbiHen4ILATai8hOEbkhnOdTSkU3h8PBiBEjmDRxEq2atMK+yI5tgQ3yrI7MInvBMdOBbb2NAecP4IP3P4hI4gcQY6LsCnc5evXqZZYuXWp1GEqpEPF6vUydOpVJb07C7XHja+cLlIOOYH+E7btA+zfiF3zzwLbKhuwWGjdpzL333EvPnj3DcioRWWaM6XXsdq3nr5SyhMPhYNiwYZx77rlMmDCBWbNmIdsEX2cfpoWpnl1BnkAXj32zHafTyXWjr2PYsGEkJCREPBRt+SulokJmZiYvvfwSmzZuQmoL3q7esC8HGbGWvx/kJ8G+3o4pMlx44YWMGjWKSIxi1Ja/Uiqqde3alYlvTGT27Nm89sZrHJx7EBqCr6sPalkdXRUZYCc41jowuYZuPbpx6y230qFDB6sj0+SvlIoeNpuNCy64gH79+vHJJ5/wzrvvkD8zH39zP6aLiZoJYhWyH+yZdjgMzTOac/ODN3P66adzosmtkaLJXykVdVwuF1dddRWDBg3igw8+4OOPP8a7y4uvlQ/T0YDL6giPIzuY9PdCer10Rj0wigEDBmC3262O7Fe0z18pFfX279/PP//5T7788ktwEhgZ1M7ASebTkPb5F4CsEWzbbKSkpvDn4X/m97//PS6XtZ9U5fX5a/JXSsWMrKwsXn/jdX5Y8AOSLPi6+DDNqz4yKCTJ3wOyITCCx26zc8XlV3DNNdeErPTyydILvkqpmJeRkcFTTz7FypUrGf/qeDYt2QRbwNfDBye/pnnlGJAswb7Wjik0nH/B+YwePZoGDcI8RClENPkrpWJOjx49mPjGRGbMmMFrr7/GkW+P4M/wY7pF6HrAEbCvsMMh6NipI3fccQcdO3aMwIlDR5O/Uiom2Ww2LrzwQvr168c777zDfz/6L2aPwdctjJPEvCBrBdtmGzVr1uTW/7uVgQMHRs0InsrQNXyVUjEtOTmZm2++mbffepuOrTti+9EWqBdUFOITHQTHLAe2TTYuveRS/v3Bv7nwwgtjMvGDJn+lVDXRqlUrJkyYwJgxY3AedOKY6YC9ITiwAVkn2L+zk56UzksvvcQ999wTNRd0q0qTv1Kq2rDZbAwbNoy333qb5g2bY59nR9aVv4awqXWC5RvdwcXT19o4/7zzefeddznllFPCE3yEafJXSlU7GRkZvDnpTQYMGIBtbXDxmDJGc5oeBtOjnOSfH1hD13bAxt13383DDz9MSkosTTE+Pr3gq5SqllwuFw8++CAZGRlMnDgRPOA7w1exiWG54JjrIIkknnrhqbAtpWglbfkrpaqtkjWE77vvPtgLtkW2Mr8B/EpBIPGnOlJ59dVXq2XiB03+Sqk4MHjwYO666y5ktyCrjjM6xwuOBQ4SSeSlF1+idevWkQsywjT5K6XiwtChQ7niiiuwbbHBzrL3kRUCR+Hxvz1OmzZtIhtghGnyV0rFjZtvvpl27dvhWOEA9zEP7gVblo1rrrmG3r17WxJfJGnyV0rFDYfDwQN/fQBxS2AIaAkDjtUOGjdpzLXXXmtdgBGkyV8pFVdat27NwIEDsf9kh+LANtkpmKOGm268yZL1dK2gyV8pFXf++Mc/YnwG+TnQ+rdttdGwUUP69etncWSRo8lfKRV3WrRoQafOnbDvsEMBcAAGXTwImy1+UmL8/KZKKVVKv7P6YbINkhVo/Z911lkWRxRZmvyVUnGppEaPbBRq1KxBy5YtLY4osjT5K6XiUps2bbDZbIhX6NC+Q8yWZq4qTf5KqbjkdDpp2KghELgGEG80+Sul4larlq0A4q7LB7Sqp1Iqjj366KPs27ePZs2aWR1KxGnyV0rFLZfLRfPmza0OwxLa7aOUUnEorMlfRN4Wkf0isqbUtmdEZIOIrBaRT0SkVjhjUEop9Vvhbvn/C7jwmG0zgS7GmG7AJuCBMMeglFLqGGFN/saYucDhY7bNMMZ4gz8uApqGMwallFK/ZXWf/wjgq/IeFJHRIrJURJYeOHAggmEppVT1ZlnyF5EHAS/wQXn7GGMmGmN6GWN61atXL3LBKaVUNWfJUE8RuQ4YDJxnjDFWxKCUUvEs4slfRC4E7gP6G2MKKvq8ZcuWHRSRbeGLzHLpwEGrg1BVou9dbKvu71+ZtSsknA1vEfkQOJvAi7sPeJTA6B4XcCi42yJjzE1hCyJGiMhSY0wvq+NQlafvXWyL1/cvrC1/Y8zVZWx+K5znVEopdWJWj/ZRSillAU3+0WOi1QGoKtP3LrbF5fsX1j5/pZRS0Ulb/kopFYc0+SulVBzS5B9iIjJERIyIdCjn8e9E5LjDykrvIyJfauXT0BCRhiLyHxHZKiLLgq/taBH5opz93xSRTlU4Tw8RufjkI1YnIiINROTfIvJT8D1dKCJDq3isO0UkOdQxRitN/qF3NTA/+O9JM8ZcbIzJDsWx4pkEVuf+BPjOGNPaGNOTwJyTBuU9xxgz0hizrgqn6wGUmfxFRBdQCpHge/opMNcY0yr4nl5F1YtF3glo8leVJyKpwJnADQT+CBGRpGBrc72IfAIkldp/QLClslxEPg4+/9hjZolIevD+NSKyRERWisgbImKPzG9WLZwDeIwxr5dsMMasAuYBqSIyObjOxAfBpHLsN7A8Efm7iKwSkUUi0iC4/QoRWRPcPldEEoC/AVcG36crRWSsiLwnIguA90QkQ0TmBd/35SJyRvBYZwePMV1ENorI6yKi/0fLdy7gPuY93WaMeUVE7MG1Q34Mrh1yI/zyGn937PstIrcDjYE5IjInuO/VIpIZfH+fLjlHedtjjjFGbyG6AX8C3gre/wHoCfwFeDu4rRuBYna9CMx6ngukBB+7H3gkeP87oFfwflZw347ANMAZ3D4B+LPVv3Os3IDbgRfK2H42cJRAa9EGLATOLON9MMAlwfv/AB4K3s8EmgTv1wr+ex0wvtQ5xgLLgKTgz8lAYvB+W2BpqViKgFaAncDaF5db/dpF66289zT42OhS75ELWAq0PMH7nQWkB+83BrYD9QhMhv0WGFLedqtfi6rc9CtoaF0NvBS8/5/gz22AlwGMMatFZHXw8T5AJ2BBsKGZQOAPsTznEfgw+TG4fxKwP8Txx6slxpidACKyEsgg0HVXmhsouTawDLggeH8B8C8R+QiYepxzfG6MKQzedwLjRaQH4APaHRPLT8FYPiTwTXJy5X+l+CMirxJ4vdzANqCbiFwefLgmgQ9aNxV7v08j0EV4ILjfB0A/Ao2AsrZ/Gq7fK1w0+YeIiNQh8DW0q4gYAi03A6wo7ynATFN2CYzy9n/HGKMrn1XNWuDych4rLnXfR9n/Lzwm2CQsvY8x5iYR+R0wCFgmIj3LOUd+qft3Eah11Z1A67Oo1GPHTrzRiTjlWwv8oeQHY8ytwS7SpQRa57cZY74p/QQROZuKvd/VnvYnhs7lwHvGmBbGmAxjTDPgZwKtxD8CiEgXAl0/EFjFrK+ItAk+liIi7co4bonZwOUiUj+4fx0RKbNanyrTt4BLREaXbBCRbsBZJ3NQEWltjFlsjHkEOAA0A3KBtOM8rSawxxjjB4YTaCiU6C0iLYN9/Vfy2xap+p9vgUQRubnUtpILtt8AN4uIE0BE2olIygmOV/p9WwL0F5H04LW1q4Hvj7M95mjyD52rCYwmKW0KgX7GVBFZT+BC4DKA4NfG64APg11BC4Eyh4cG918HPATMCO4/E2gU4t+h2gq22ocC50tgqOda4Elg70ke+pmSi38ErvOsAuYAnUou+JbxnAnAtSKyisB7XvpbwY/AeGA9gcbDsX9TKij4ng4hkIx/FpElwDsErp+9CawDlgffmzc4cQt/IvC1iMwxxuwB/krgvVwFLDPGfFbe9tD/duGn5R2UihLBLol7jDGDLQ5FxQFt+SulVBzSlr9SSsUhbfkrpVQc0uSvlFJxSJO/UkrFIU3+SoWBaDVWFeX0gq9SSsUhbfmruBWcVT09WJFzTbACZ5aI/CM4cWtJqRnY9URkSrBK5I8i0je4PVVE/hncf7WI/CG4/bjVWIO3fwXPmykid1n3Sqh4FJc1LZQKuhDYbYwZBCAiNYGngaPGmK4i8mfgRWAwgYJ9Lxhj5otIcwLlAzoCD5fsHzxG7dInEJGOBMo09DXGeERkAoHqr2sJVAPtEtyvVrh/WaVK0+Sv4lkm8FywJvsXxph5wYqpHwYf/xB4IXj/fAIlG0qeW0MC6y+cT3DtBgBjzJFjzlFeNdZpQCsReQWYDswI7a+m1PFp8ldxyxizSUROJbDq1jgRmV3yUOndgv/agD7GmNIVOCn1YVCecquxikh3YCBwEzAMGFHpX0KpKtI+fxW3RKQxUGCMeR94Bjg1+NCVpf4tWWNhBnBbqef2CN6dCdxaavuvun0opxpr8HqAzRgzhUDBvlNRKoK05a/iWVcCVTn9gAe4mcDCKbWDlVOL+d9azLcDrwa3OwiswnYTMC64fQ2B2vCPUWpRF2PMOhEpqcZqC57nVqAQ+Kf8b5lGXadBRZQO9VSqFBHJIrB040GrY1EqnLTbRyml4pC2/JVSKg5py18ppeKQJn+llIpDmvyVUioOafJXSqk4pMlfKaXi0P8DYkyzAJLzHi0AAAAASUVORK5CYII=\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "sns.violinplot(data=pingvindata, x='species', y='bill_depth_mm')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Varians og standardavvik\n", + "\n", + "I motsetning til IQR, som tar utgangspunkt i medianen, tar varians og standardavvik utgangspunkt i gjennomsnittet. Varians ($\\sigma^2$) er et mål på variasjonen i et datasett og skrives ofte som $\\sigma^2$. Det er definert som den gjennomsnittlige kvadrerte avstanden til gjennomsnittet av variabelen:\n", + "\n", + "$\\sigma^2 = \\frac{1}{n-1}\\sum_{i=1}^n(x_i-\\bar{x})^2$\n", + "\n", + "Her er _n_ totalt antall målinger, $x_i$ er hver måleverdi og $\\bar{x}$ er gjennomsnittet av alle måleverdier. Egentlig bør vi jo dele på $n$ når vi skal finne gjennomsnittet av denne differansen. Men vi deler på $n - 1$ istedenfor $n$ fordi datasettet vårt inneholder et utvalg måledata fra en tenkt fullstendig populasjon. Når vi deler på $n - 1$ får vi en større varians enn når vi deler på $n$. En forklaring på dette er at dersom vi hadde samlet inn data fra hele populasjonen, eller gjort tusenvis av målinger av den samme parameteren, ville spredningen (variansen) av målingene vært litt mindre sammenliknet med når vi har færre datapunkter. Vi kaller derfor variansen som er definert ovenfor, for _empirisk varians_.\n", + "\n", + "Kort oppsummert gjør vi følgende for å regne ut varians:\n", + "1. Finner differansen mellom hver måleverdi/hvert datapunkt og trekker fra gjennomsnittet. Dette gir avstanden mellom et målepukt og den gjennomsnittlige verdien.\n", + "2. Kvadrerer differansen for å kun få positive verdier. Om vi ikke hadde gjort dette, ville mange negative og positive verdier utlignet hverandre, slik at for eksempel to ekstreme verdier på hver sin side av gjennomsnittet ville gitt 0 i varians.\n", + "3. Summerer alle de kvadrerte differansene og deler på antallet målinger (her antallet målinger minus 1). Dette gir den gjennomsnittlige variansen for hele variabelen.\n", + "\n", + "Siden vi kvadrerer avstanden mellom verdier og gjennomsnittet når vi regner ut varians, blir ofte variansen svært stor dersom det finnes noen verdier som ligger et stykke unna gjennomsnittet. I tillegg får den kvadrerte enheter (som $g^2$ og $mm^2$, og det er vanskelig å sammenlikne den med måledataene. Derfor er det vanligere å bruke _standardavvik_ som et mål på spredning. Det er definert som den posive kvadratrota av variansen:\n", + "\n", + "$\\sigma = \\sqrt{\\frac{1}{n-1}\\sum_{i=1}^n(x_i-\\bar{x})^2}$\n", + "\n", + "Vi kan enkelt finne variansen og standardavviket med Pandas. Pandas deler på $n-1$, og ikke $n$, slik som vi også har gjort." + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "varians = pingvindata[\"bill_depth_mm\"].var()\n", + "standardavvik = pingvindata[\"bill_depth_mm\"].std()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```{admonition} Underveisoppgave\n", + "Forklar hva varians og standardavvik er. Lag to Python-funksjoner som regner ut henholdsvis gjennomsnitt og standardavvik. Funksjonene skal gi samme svar som _std_- og _mean_-funksjonen i Pandas.\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Visualisering av feil\n", + "En enkel visualisering av standardavviket når vi gjør flere ulike målinger, er ved hjelp av usikkerhetsstolper. Usikkerhetsstolper kan vi bruke når vi har gjort flere målinger på samme variabel. Vi kan ta som eksempel et eksperiment der vi skal konstruere en standardkurve for magnesiumkonsentrasjonen i en vannprøve. Vi bruker en serie på 0.2, 0.3, 0.4, 0.5 og 0.6 $\\mu$g/mL Mg$^{2+}$ som vi analyserer tre ganger hver med et flammeatomabsorpsjonsspektrofotometer (for øvrig et nydelig ord!). Da har vi tre målinger for absorpsjon per konsentrasjon. Nedenfor ser du en måte å gjøre dette på. Vi bruker funksjonen _errorbar_ som tar $x$-verdier, gjennomsnittet og standardavviket som parametre. I tillegg kan vi sette streker på toppen av feilen med _capsize_ i en ønsket størrelse. Hvis vi ikke ønsker strekene mellom datapunktene i plottet ovenfor, kan vi legge inn argumentet _fmt='none'_." + ] + }, + { + "cell_type": "code", + "execution_count": 92, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "konsentrasjon = [0.2, 0.3, 0.4, 0.5, 0.6]\n", + "absorbans = [[0.21, 0.22, 0.19], [0.26, 0.29, 0.24], [0.33, 0.33, 0.34], [0.41, 0.42, 0.45], [0.56, 0.61, 0.58]]\n", + "\n", + "standardavvik = []\n", + "snitt = []\n", + "\n", + "for element in absorbans:\n", + " snitt.append(np.mean(element))\n", + " standardavvik.append(np.std(element, ddof = 1)) # ddof = 1 betyr at vi deler på n - 1.\n", + "\n", + "plt.errorbar(konsentrasjon, snitt, yerr = standardavvik, capsize=5)\n", + "plt.errorbar\n", + "plt.xlabel('Konsentrasjon ($\\mu g/mL$)')\n", + "plt.ylabel('Absorbans')\n", + "plt.title('Magnesiuminnhold i vann')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Det finnes også tilsvarende plott i seaborn-biblioteket, som er enklere å bruke dersom vi har dataene som en data frame:" + ] + }, + { + "cell_type": "code", + "execution_count": 97, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 97, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "sns.pointplot(data=pingvindata,x=\"species\", y=\"flipper_length_mm\", capsize=.1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Regresjon\n", + "Alle måledata er _diskrete verdier_. Det betyr at de er ikke-kontinuerlige, altså at det ikke finnes uendelig mange verdier mellom punktene vi har. Vi representerer diskrete data som punkter dersom vi plotter det, mens kontinuerlige data/funksjoner plotter vi som linjer og kurver. Noen ganger kan vi derimot lage kontinuerlige modeller som representerer de diskrete dataene våre. En slik modell kan beskrive både verdier imellom datapunktene, men også utenfor datasettet vi har samlet. En enkel form for modellering er _regresjon_.\n", + "\n", + "```{admonition} Regresjon\n", + "Regresjon er en prosess der vi tilnærmer diskrete data med en kontinuerlig funksjonsmodell. \n", + "```\n", + "\n", + "La oss ta et eksempel der vi har brukt et spektrometer til å måle absorbansen til ulike standardløsninger med permanganationer $MnO_4^{-}$. Vi har gjort dette fordi vi har en løsning med ukjent innhold av permanganationer. Da trenger vi å gjøre en lineær regresjon for å kunne avgjøre hvilken konsentrasjon absorbansen til den ukjente prøva tilsvarer. Programmet nedenfor lager en standardkurve/kalibreringskurve med funksjonen _polyfit_ fra numpy-biblioteket. Denne funksjonen bruker _minste kvadraters metode_ til å tilpasse funksjonsverdier til datapunktene på en måte som gir minst mulig varians." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "permanganat = [4.0, 8.0, 12.0, 16.0, 20.0] # konsentrasjon i ppm\n", + "absorbans = [0.18, 0.32, 0.51, 0.68, 0.85]\n", + "\n", + "reg = np.polyfit(permanganat, absorbans, 1) # får koeffisientene a og b i en lineær regresjon (grad 1)\n", + "x = np.linspace(0, 25, 1000) # nye x-verdier for regresjonslinja\n", + "y = np.polyval(reg, x) # gir et uttrykk på formen y = ax + b, der x = permanganatkonsentrasjonen\n", + "\n", + "plt.scatter(permanganat,absorbans,label='Datapunkter')\n", + "plt.plot(x, y, color = 'red',label='Tilpasset kurve')\n", + "plt.legend()\n", + "plt.title('Standardkurve')\n", + "plt.xlabel('Konsentrasjon av MnO$_4^-$ (ppm)')\n", + "plt.ylabel('Absorbans')\n", + "plt.grid()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Funksjonen _polyfit_ utfører polynomregresjon på dataene våre, og tar som argument $x$- og $y$-verdiene i datasettet, og deretter graden av polynomet. Her har vi brukt grad 1 for lineær regresjon. Dette gir en array med koeffisientene _a_ og _b_ for uttrykket $y = ax + b$. Tilsvarende vil en andregradsregresjon gi koeffisientene _a_, _b_ og _c_ for $ax^2 + bx + c$ og så videre. Vi kan dermed bruke disse koeffisientene videre til å lage nye $y$-verdier basert på de opprinnelige $x$-verdiene. Til det kan vi bruke funksjonen _polyval_, som tar to parametre: koeffisientene som er gitt av polyfit-funksjonen og de nye _x_-verdiene som vi skal regne ut funksjonsverdier til.\n", + "\n", + "La oss si at den ukjente prøva med permanganationer ga en absorbans på 0.40. Vi kan bruke regresjonskurven vår til å finne hva slags konsentrasjon dette tilsvarer på følgende måte:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Konsentrasjonen til permanganat = 9.5 ppm.\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "permanganat = [4.0, 8.0, 12.0, 16.0, 20.0] # konsentrasjon i ppm\n", + "absorbans = [0.18, 0.32, 0.51, 0.68, 0.85]\n", + "ukjent_abs = 0.40\n", + "\n", + "# Gjør regresjonen\n", + "reg = np.polyfit(permanganat, absorbans, 1) # får koeffisientene a og b i en lineær regresjon (grad 1)\n", + "x = np.linspace(0, 25, 1000) # nye x-verdier for regresjonslinja\n", + "y = np.polyval(reg, x) # gir et uttrykk på formen y = ax + b, der x = permanganatkonsentrasjonen\n", + "\n", + "# Regner ut den ukjente konsentrasjonen\n", + "ukjent_kons = (ukjent_abs - reg[1])/reg[0]\n", + "print(\"Konsentrasjonen til permanganat =\", round(ukjent_kons,1), \"ppm.\")\n", + "\n", + "plt.scatter(permanganat,absorbans,label='Datapunkter')\n", + "plt.plot(x, y, color = 'red',label='Tilpasset kurve')\n", + "plt.plot(ukjent_kons, ukjent_abs, linestyle = \" \", marker = \"o\", color = 'seagreen', label = \"Ukjent løsning\")\n", + "plt.legend()\n", + "plt.title('Standardkurve')\n", + "plt.xlabel('Konsentrasjon av MnO$_4^-$ (ppm)')\n", + "plt.ylabel('Absorbans')\n", + "plt.grid()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Fritt klor ($Cl_2$) finnes i en del drikkevann fordi klorforbindelser blir tilsatt klorforbindelser for å desinfisere vannet. I programmet nedenfor har vi lagt inn en serie målinger som er gjort på standardløsninger av konsentrasjonen av fritt klor i vann gitt i ppm. Gjør en regresjon av dataene og lag en standardkurve. Regn ut konsentrasjonen av fritt klor i en drikkevannsprøve med absorbans 0.656 ppm.\n", + "\n", + "\n", + "\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + "```{code-block} Python\n", + ":class: tip, dropdown\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "klor = [0, 0.50, 1.00, 1.50, 2.00] # konsentrasjon i ppm\n", + "absorbans = [0.000, 0.270, 0.543, 0.813, 1.084]\n", + "ukjent_abs = 0.656\n", + "\n", + "# Gjør regresjonen\n", + "reg = np.polyfit(klor, absorbans, 1) # får koeffisientene a og b i en lineær regresjon (grad 1)\n", + "x = np.linspace(0, 2.2, 1000) # nye x-verdier for regresjonslinja\n", + "y = np.polyval(reg, x) # gir et uttrykk på formen y = ax + b, der x = permanganatkonsentrasjonen\n", + "\n", + "# Regner ut den ukjente konsentrasjonen\n", + "ukjent_kons = (ukjent_abs - reg[1])/reg[0]\n", + "print(\"Konsentrasjonen til fritt klor =\", round(ukjent_kons,2), \"ppm.\")\n", + "\n", + "plt.scatter(klor,absorbans,label='Datapunkter')\n", + "plt.plot(x, y, color = 'red',label='Tilpasset kurve')\n", + "plt.plot(ukjent_kons, ukjent_abs, linestyle = \" \", marker = \"o\", color = 'seagreen', label = \"Ukjent løsning\")\n", + "plt.legend()\n", + "plt.title('Standardkurve')\n", + "plt.xlabel('Konsentrasjon av Cl$_2$ (ppm)')\n", + "plt.ylabel('Absorbans')\n", + "plt.grid()\n", + "plt.show()\n", + "```\n", + "````\n", + "\n", + "Når vi har utført regresjon, kan vi også forutsi datapunkter som er utenfor datapunktene våre. Dette kaller vi _ekstrapolering_. Ved å ekstrapolere kan vi forutsi hvordan et system _har vært_ eller _kommer til å bli_. En skal derimot være svært forsiktig med å trekke slutninger basert på ekstrapolering! Det kan likevel være en god indikasjon på trender og utviklingen i et system." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Vi kan også lage visualiseringer med automatiske regresjonskurver. La oss vende tilbake til pingvinene våre. For å se om det kan være noen sammenhenger som er verdt å lage en modell av, kan vi enkelt visualisere mange ulike variabler mot hverandre ved å bruke et parplott (_pairplot_) fra seaborn-biblioteket:" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import seaborn as sns\n", + "\n", + "sns.pairplot(data = pingvindata, hue = \"species\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```{admonition}\n", + ":class: tip\n", + "Studer plottet ovenfor. Hva forteller de ulike plottene deg? Hvilke variabler ser det ut som det er en lineær sammenheng mellom?\n", + "```\n", + "\n", + "Vi tar utgangspunkt i kroppsmasse og vingelengde, som ser ut til å være lineært avhengig av hverandre. Et plott med regresjonslinje kan vi lage ved å bruke funksjonen _lmplot_ (eller _regplot_) fra seaborn-biblioteket:" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 58, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "sns.lmplot(data = pingvindata, x = \"body_mass_g\", y = \"flipper_length_mm\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Vi ser at vi får en regresjonslinje med et svakt blått område på hver side av linja. Dette området indikerer usikkerheten i verdiene. Desto større dette området er, desto mer usikkert er det at regresjonslinja er en god modell i dette området. Vi kan gjøre dette tydeligere ved å velge to variabler som ikke varierer så godt lineært:" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 59, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "sns.lmplot(data = pingvindata, x = \"bill_depth_mm\", y = \"flipper_length_mm\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Vi kan også gjøre regresjon på ulike variabler, slik som ulike arter, for seg:" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 61, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "sns.lmplot(data = pingvindata, x = \"bill_depth_mm\", y = \"flipper_length_mm\", hue = \"species\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Korrelasjon\n", + "Korrelasjoner kan brukes til å analysere sammenhenger mellom parametre. Korrelasjon beregnes som en verdi mellom -1 og 1. En verdi som brukes ofte som mål på korrelasjon, er _Pearsons korrelasjonskoeffisient_. Positiv korrelasjon betyr at det er en proporsjonal sammenheng mellom parametrene, og en negativ korrelasjon betyr at det er en omvendt proporsjonal sammenheng. Desto større absoluttverdien til korrelasjonen er, desto større sammenheng er det mellom parametrene. Vi kan visualisere korrelasjon gjennom et korrelasjonsplott:" + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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OZdQthU+yUm6ALggbtNAMxtYyJc3MLP50f0FQIOtHKsLUAH4eWs79iTnnHMuoW2px0UJbbNJTdJHQMMET91UYD8mabOHltQIeAE408y22lLqSc4551xCxTmFwMwO29xzkhZKamRm86Mktmgz5WoA7wI3mdnYwhzXB54455xLKFmjK4HhwJnR/TOBtwoWkFQBGAYMMbPXCrtjT3LOOecSSuLoyvuAwyX9BBwWPUZSZ0nPRGVOAg4GzpI0Obq139qOvbnSOedcQjlJmg5uZouBQxNsHw+cF91/EXhxW/ftSc4551xC6bDiiSc555xzCdk2TCEorTzJOeecS8gXaHbOOZe2vLnSOedc2vIrgzvnnEtbOVtfUKTU8yTnnHMuobKf4jzJOeec2wxvrnTOOZe2fHSlc865tOXz5JxzzqUtr8k555xLWz660jnnXNoq+/U4T3LOOec2w5srnXPOpS1Pci6tZbbYkwpHnA7KIHvyZ2wY886mZdp0oULXYwEjtnA26956IvmBlqA77v07PQ7vypo1a7nq0puY+u13my373EuPslPzphx24LEAPP7sv2i5a3MAatSszorlKznykBOSEXaxGz35e+4fMpxYLMax3btw7jE98j0//4+l3PzEf1j55xpisRhXnNKbrh3a8O6XExn8zqd55X6ctYCh91zB7s2bJPkdJMfN9zzE56O/pk7tWrz54pOpDqfIfHSlS18SFXr2Z+3L/8RWLKHSOf8g+6eJ2B/zNhap3YDyB/RhzZA7Ye1qqFI9hQEXvx6HdWWXljtxUOfedOy8F/c+eAt9Dj81YdleRx/G6j9X59t2ybnX5t2/5c5rWbliVYnGW1JyYjHueX4YT914AQ2yanLqTf+mW6d2tGzaIK/M08NGceR+e3HS4Qfw85yFXHb/s7z3aBuOOqgjRx3UEYCfZs3nygcHpW2CA+jX+3BOPb4vN975r1SHUiySddHUkpSR6gBySWouaep2vrabpE2rGW67ZTRuSWzJImzZ7xDLIWf6WMq17pivTLkO3cie8FFIcACrVyY/0BJ0RO/uvDZ0OAATx39LjRrVqd+g7iblqlStzPmX9OeRB5/a7L769OvJW6+PKLFYS9LUGbNo1rAuTRtkUb5cOXru355Px0/LX0iwas06AFatXkO92jU22c97/5tMzwPaJyHi1Oncfk9q1kifH3tmVuhb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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "corr = pingvindata.corr() # Regner ut korrelasjonskoeffisientene\n", + "sns.heatmap(corr, annot=True) # Lager visualisering. Parameteren annot = True gir tallene i boksene.\n", + "plt.xticks(rotation=45) # Roterer x-akseteksten 45 grader\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 108, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    bill_length_mmbill_depth_mmflipper_length_mmbody_mass_g
    bill_length_mm1.000000-0.2350530.6561810.595110
    bill_depth_mm-0.2350531.000000-0.583851-0.471916
    flipper_length_mm0.656181-0.5838511.0000000.871202
    body_mass_g0.595110-0.4719160.8712021.000000
    \n", + "
    " + ], + "text/plain": [ + " bill_length_mm bill_depth_mm flipper_length_mm \\\n", + "bill_length_mm 1.000000 -0.235053 0.656181 \n", + "bill_depth_mm -0.235053 1.000000 -0.583851 \n", + "flipper_length_mm 0.656181 -0.583851 1.000000 \n", + "body_mass_g 0.595110 -0.471916 0.871202 \n", + "\n", + " body_mass_g \n", + "bill_length_mm 0.595110 \n", + "bill_depth_mm -0.471916 \n", + "flipper_length_mm 0.871202 \n", + "body_mass_g 1.000000 " + ] + }, + "execution_count": 108, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pingvindata.corr()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Vi ser for eksempel at det er ganske stor positiv korrelasjon mellom nebblengde og lengden på vingene (luffene). Det betyr at dersom en pingvin har langt nebb, har den ofte også lange vinger. Det er derimot negativ korrelasjon mellom nebbdybde og vingelengde, som betyr at desto dypere nebb, desto kortere vinger har pingvinen.\n", + "\n", + "Det er derimot viktig å ikke blande korrelasjon med årsak-virkning (kausalitet). Den ene tingen forklarer ikke nødvendigvis den andre (selv om det kan gjøre det), det er bare en sammenheng mellom parametrene.\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "I programmet nedenfor finner du datasettet \"iris.txt\". Les inn datasettet og gjør en korrelasjonsanalyse av variablene. Hvilke faktorerer korrelerer positivt og negativt med hverandre? Finnes det logiske forklaringer på det?\n", + "\n", + "\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block}\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "iris = pd.read_csv(\"iris.txt\")\n", + "corr = iris.corr()\n", + "\n", + "sns.heatmap(corr, annot=True,)\n", + "plt.xticks(rotation=45) \n", + "plt.show()\n", + "```\n", + "````" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Videoer\n", + "\n", + "I videoen nedenfor kan du få en innføring eller repetisjon i den grunnleggende teorien bak regresjonsanalyse:\n", + "\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.12" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/tema4_algoritmer/algoritmer.ipynb b/_sources/docs/tema4_algoritmer/algoritmer.ipynb new file mode 100644 index 00000000..f16cc22a --- /dev/null +++ b/_sources/docs/tema4_algoritmer/algoritmer.ipynb @@ -0,0 +1,386 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "c661fd79", + "metadata": {}, + "source": [ + "# Matematiske algoritmer og stokastiske simuleringer\n", + "\n", + "```{admonition} Læringsutbytte\n", + "Etter å ha arbeidet med dette temaet, skal du kunne:\n", + "1. forklare noen matematiske algoritmer\n", + "2. programmere matematiske algoritmer\n", + "3. utføre og tolke stokastiske simuleringer\n", + "```\n", + "\n", + "Algoritmer er presise, systematiske oppskrifter, og vi kjenner mange eksempler fra hverdagen. Eksempler er strikkeoppskrifter, kakeoppskrifter og algoritmene som gir oss anbefalte filmer på Netflix og annonser på Facebook. I matematikk er algoritmer framgangsmåter som lar oss løse et matematisk problem. Vi skal her se på noen gamle, klassiske matematiske algoritmer som har fått en renessanse med datamaskinen. Vi skal også se på hvordan vi bruker tilfeldige tall til å gjøre simuleringer. Først og fremst skal vi forstå hvordan algoritmene fungerer og hva de kan brukes til. Vi skal også prøve å programmere noen av algoritmene.\n", + "\n", + "## Primtall med Eratosthenes sil\n", + "\n", + "La oss først se på en gammel metode som kan brukes til å finne primtall. Eratosthenes sil er en metode som ble utviklet av den greske matematikeren Eratosthenes i ca. 200 f. Kr. Metoden er enkel og systematisk, og er derfor også programmerbar. Metoden fungerer slik:\n", + "\n", + "1.\tLag ei liste av påfølgende heltall fra 2 til 100 med ti tall på hver rad (bortsett fra den første). Se tabellen nedenfor.\n", + "2.\tLa p til å begynne med være lik 2, det første primtallet.\n", + "3.\tStryk ut alle multipler av p som er større enn eller lik $p^2$.\n", + "4.\tFinn det første tallet større enn p som står igjen på lista. Dette tallet er det neste primtallet. Sett p lik dette tallet.\n", + "5.\tGjenta trinn 3 og 4 inntil $p^2$ er større enn 100.\n", + "6.\tAlle gjenværende tall på listen er primtall!\n", + "\n", + "| | | | | | | | | | |\n", + "|-----------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|------------|\n", + "| | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |\n", + "| 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |\n", + "| 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 |\n", + "| 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 |\n", + "| 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 |\n", + "| 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 |\n", + "| 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 |\n", + "| 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 |\n", + "| 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 |\n", + "| 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 |\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Utfør [algoritmen for hånd](https://view.officeapps.live.com/op/view.aspx?src=https%3A%2F%2Fraw.githubusercontent.com%2Fandreasdh%2FProgrammering-og-modellering%2Fmaster%2Fdocs%2Ftema4_algoritmer%2FEratosthenes_ark.docx&wdOrigin=BROWSELINK). Å programmere algoritmen er litt ufordrendende, men du kan prøve på det når du er ferdig med å gjøre algoritmen for hånd.\n", + "```\n", + "\n", + "````{admonition} Slik kan du programmere algoritmen\n", + ":class: tip, dropdown\n", + "Her lager vi en funksjon, men du kan godt gjøre det uten funksjoner.\n", + "\n", + "```{code-block} Python\n", + "from pylab import *\n", + "\n", + "def eratosthenes_sil(n):\n", + " tall = list(arange(2,n+1,1)) # Lager array med heltall fra 2 til og med n\n", + " i = 0\n", + " # Algoritmen begynner\n", + " p = tall[i]\n", + " while p**2 <= n:\n", + " for element in tall:\n", + " if element%p == 0 and element >= p**2:\n", + " tall.remove(element)\n", + " i = i + 1\n", + " p = tall[i]\n", + " return tall\n", + "\n", + "primtall = finn_primtall(100)\n", + "print(primtall)\n", + "```\n", + "````\n", + "" + ] + }, + { + "cell_type": "markdown", + "id": "9041cfc9", + "metadata": {}, + "source": [ + "## Kvadratrøtter med gammel babylonsk algoritme\n", + "\n", + "En annen gammel algoritme kommer fra Babylonia, og er godt over 2000 år gammel. Den ble brukt til å finne kvadratrota av et tall. Du kan se utledning av algoritmen i videoen nedenfor:\n", + "\n", + "\n", + "\n", + "Algoritmen fungerer slik:\n", + "\n", + "Gjør en kvalifisert gjetning på hva $\\sqrt{a}$ er, og kall gjetningen $x_0$. Gjenta følgende algoritme $n$ ganger:\n", + "\n", + "$x_{n+1} = \\frac{1}{2}\\left(x_n+\\frac{a}{x_n}\\right)$\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Test algoritmen på $\\sqrt{12} \\approx 3.46410161514$. Regn ut feilen for hver iterasjon (gjentakelse i løkka). Eksperimenter med algoritmen på andre tall.\n", + "```\n", + "\"Kvadratrøtter\"" + ] + }, + { + "cell_type": "markdown", + "id": "c900740a", + "metadata": {}, + "source": [ + "## Stokastiske simuleringer: Monte-Carlo-metoder\n", + "\n", + "En stokastisk simulering er en simulering der tilfeldige hendelser inntreffer med en viss sannsynlighet. Det er mange prosesser i naturen som er tilfeldige eller delvis tilfeldige, f.eks. radioaktivt henfall, mutasjoner og diffusjon. Slike simuleringer er oppkalt etter kasinoet i Monte Carlo, og kalles Monte Carlo-metoder, fordi de benytter tilfeldige tall som grunnlag for det de skal tilnærme. Det er enormt mange anvendelser av MC-metoder. Vi skal se på noen av dem her. Men først skal vi ta en kikk på hvordan vi kan bruke simuleringer til å illustrere hva sannsynlighet er. Da trenger vi å kunne generere tilfeldige tall på datamaskinen. Dette kan vi gjøre slik:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9d4e0d8d", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "\n", + "heltall = np.random.randint(1, 10) # lager et tilfeldig heltall i intervallet [1, 9]\n", + "flyttall = np.random.uniform(-1, 1) # Lager et tilfeldig flyttall mellom -1 og 1" + ] + }, + { + "cell_type": "markdown", + "id": "d974dcfb", + "metadata": {}, + "source": [ + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Lag en funksjon som tar som parameter antallet ganger _n_ du skal kaste en terning. Funksjonen skal returnere ei liste med _n_ terningkast.\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "import numpy as np\n", + "\n", + "def terningkast(n):\n", + " resultater = []\n", + " for i in range(n):\n", + " kast = np.random.randint(1,7)\n", + " resultater.append(kast)\n", + " return resultater\n", + "\n", + "print(terningkast(6))\n", + "```\n", + "````" + ] + }, + { + "cell_type": "markdown", + "id": "59ba705a", + "metadata": {}, + "source": [ + "## Sannsynlighetsbegrepet\n", + "\n", + "Vi bruker sannsynlighet til vurderinger av hva vi skal gjøre i hverdagen hele tida. Er det trygt å gå over gata? Bør jeg spille Lotto? Er det lurt å klatre opp denne bratte, glatte fjellskrenten? Men hva er sannsynlighet egentlig? La oss prøve å bruke programmering for å finne ut av dette.\n", + "\n", + "`````{tabbed} Informasjon om oppgava\n", + "Vi skal studere et program som simulerer myntkast. Klikk på de ulike fanene for å gjøre oppgava tilpasset din kompetanse i programmering. Dersom du for eksempel forstår programmering godt, kan du prøve å lage programmet helt fra scratch. Da klikker du deg inn på nivå 5. Du kan starte på det nivået som passer deg. Prøv også gjerne de andre nivåene etter hvert. Det kan være mye lærering i å gå nedover i nivå også!\n", + "\n", + "- Nivå 1: Forklar og modifiser\n", + "- Nivå 2: Programmeringspuslespill\n", + "- Nivå 3: Feilsøk\n", + "- Nivå 4: Fyll inn\n", + "- Nivå 5: Lag programmet\n", + "`````\n", + "\n", + "`````{tabbed} Nivå 1: Forklaring\n", + "1. Forklar hva programmet nedenfor gjør før du kjører programmet. \n", + "2. Kjør deretter programmet og forklar hva det kan fortelle deg om sannsynlighet. \n", + "3. Modifiser programmet slik at det kaster mynten 100 ganger, 1000 ganger og 10000 ganger. Hva blir utfallet, og hvorfor?\n", + "\n", + "\n", + "````` \n", + "\n", + "`````{tabbed} Nivå 2: Puslespill\n", + "Løs [dette puslespillet](http://parsons.problemsolving.io/puzzle/23b61bf4e8954761993aa9200fb95ac2). Programmet skal simulere et myntkast og finne relativ frekvens av antall mynt, dersom kron = 0 og mynt = 1.\n", + "````` \n", + "\n", + "`````{tabbed} Nivå 3: Feilsøk\n", + "Programmetet nedenfor skal simulere et myntkast og finne relativ frekvens av antall mynt, med kron = 0 og mynt = 1, men programmet fungerer ikke som det skal. Forklar hva som er feil, og hvorfor. Rett opp programmet slik at det fungerer. Kjør programmet flere ganger med ulikt antall kast. Hva forteller resultatene deg om sammenhengen mellom relativ frekvens og sannsynlighet?\n", + "\n", + "\n", + "````` \n", + "\n", + "`````{tabbed} Nivå 4: Fyll inn\n", + "Programmet nedenfor skal simulere et myntkast og finne relativ frekvens av antall mynt, med kron = 0 og mynt = 1. Fyll inn det som mangler. Kjør deretter programmet flere ganger med ulikt antall kast. Forklar hva programmet kan fortelle deg om sammenhengen mellom relativ frekvens og sannsynlighet.\n", + "\n", + "\n", + "````` \n", + "\n", + "`````{tabbed} Nivå 5: Lag programmet\n", + "Lag et program som skal simulere et myntkast og finne relativ frekvens av antall mynt. Varier antallet kast. Hva forteller resultatene deg om sammenhengen mellom relativ frekvens og sannsynlighet?\n", + "\n", + "\n", + "````` " + ] + }, + { + "cell_type": "markdown", + "id": "37549e46", + "metadata": {}, + "source": [ + "## Sannsynlighet og nedarving\n", + "\n", + "Vi kan også bruke tilfeldige tall til å modellere enkel nedarving av egenskaper. Her skal vi bruke funksjonen _choice_ istedenfor _randint_, som plukker ut et tilfeldig element fra ei liste, for eksempel slik:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f5859bb3", + "metadata": {}, + "outputs": [], + "source": [ + "from pylab import *\n", + "\n", + "genotype_far = [\"B\", \"b\"]\n", + "print(choice(genotype_far))" + ] + }, + { + "cell_type": "markdown", + "id": "6e74097a", + "metadata": {}, + "source": [ + "````{admonition}\n", + ":class: tip\n", + "Lag et program som regner ut sannsynligheten for å få barn med fenotypen blå øyne gitt at både mor og far har genotypen \"Bb\". Du kan ta utgangspunkt i pseudokoden nedenfor, eller prøve helt uten hjelp.\n", + "\n", + "1. Hvilke forutsetninger tar du for simuleringen?\n", + "2. Plott antall blåøyde som funksjon av antall barn. Beskrive det du ser.\n", + "3. Finn ut hvor mange barn må du får for at fordelingen av blåøyde og brunøyde skal bli noenlunde stabil.\n", + "```` \n", + "\n", + "````{admonition} Pseudokode\n", + ":class: tip, dropdown\n", + "```{code-block} text\n", + "genotype_mor = [\"B\", \"b\"]\n", + "genotype_far = [\"B\", \"b\"]\n", + "blaa = 0\n", + "N = 100\n", + "\n", + "gjenta N ganger:\n", + " trekk et allel fra mor\n", + " trekk et allel fra far\n", + " hvis allel_far + allel_mor er lik \"bb\":\n", + " øk blaa med 1\n", + "\n", + "Skriv ut forholdet melllom antallet blåøyde og N.\n", + "```\n", + "````\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "from pylab import *\n", + "\n", + "genotype_mor = [\"B\", \"b\"]\n", + "genotype_far = [\"B\", \"b\"]\n", + "blaa = 0\n", + "N = 100\n", + "\n", + "for i in range(N): \n", + " allel_mor = choice(genotype_mor) \n", + " allel_far = choice(genotype_far) \n", + " genotype = allel_mor + allel_far\n", + " if genotype == \"bb\": \n", + " blaa = blaa + 1\n", + " \n", + "print(\"Sannsynligheten er:\", blaa/N)\n", + "```\n", + "````\n", + "\n", + "\"Øyenfarge\"" + ] + }, + { + "cell_type": "markdown", + "id": "d404cc7b", + "metadata": {}, + "source": [ + "## Tilnærming av pi med Monte Carlo-metoder\n", + "\n", + "Selv om $\\pi$ er et bestemt tall, kan vi faktisk tilnærme $\\pi$ med tilfeldige tall. En Monte Carlo-algoritme for å estimere pi baserer seg på følgende:\n", + "\n", + "1. $A=\\pi r^2$, så hvis $r = 1$, er $A = \\pi$.\n", + "2. Lag et kvadrat med sidelengder = 2 og en innskrevet sirkel med radius = 1:\n", + "\n", + "\n", + "\n", + "\n", + "3. Trekk N tilfeldige tall av et _x_-koordinat og et _y_-koordinat. \n", + "4. Sjekk om $(x, y)$ ligger inni eller på sirkelen ($x^2+y^2\\leq 1$).\n", + "5. Sett M lik antall punkter som treffer sirkelen.\n", + "6. Nå er $\\pi = A_{sirkel} = A_{kvadrat} \\cdot \\frac{M}{N}$\n", + "7. Beregn $\\pi$ og regn avviket fra den «eksakte» verdien." + ] + }, + { + "cell_type": "markdown", + "id": "d6e7d211", + "metadata": {}, + "source": [ + "## Brownske bevegelser (enkel diffusjon)\n", + "\n", + "Vi skal her se på en MC-tilnærming til tilfeldig bevegelse av store partikler i løsning. Dette er en enkel modell for diffusjon av ikke-reagererende partikler som kan beskrive såkalte _Brownske bevegelser_. Brownske bevegelser ble først beskrevet av botanisten Robert Brown i 1827. Han oppdaga at små pollenkorn i løsning beveget seg fram og tilbake i et tilfeldig mønster. I dag veit vi at dette skyldes at de små vannmolekylene dytter på pollenkornet i mange tilfeldige retninger. Det samme gjelder større partikler som enkelte luktmolekyler (parfyme) og røyk, som vi jo kan lukte og noen ganger observere direkte i makroskala.\n", + "\n", + "\"Rutenett1\"\n", + "\n", + "For å simulere det som skjer på mikroskala, kan vi lage et program der vi for hvert tidssteg trekker tilfeldige tall som bestemmer retningen til partikkelen. Vi kan først se på hvordan vi kan gjøre dette ved å konstruere et rutenett der en partikkel kan bevege seg i fire retninger (opp, ned, høyre og venstre). Skråbevegelser kan beskrives som en kombinasjon av disse bevegelsene:\n", + "\n", + "\"Rutenett1\"\n", + "\n", + "Disse bevegelsene kan vi representere med posisjonsarrayer $x$ og $y$. Posisjonen kan starte i origo, $(0, 0)$, og så kan vi øke eller redusere med 1 i en tilfeldig retning. Dette kan vi gjøre ved å trekke et tilfeldig tall mellom 1 og 4 som representerer bevegelse i rutenettet slik:\n", + "\n", + "\"Rutenett2\"\n", + "\n", + "Hvis vi for eksempel trekker tallet 4, vil partikkelen bevege seg én rute nedover i $y$-retning. Da trekker vi fra 1 i arrayen som inneholder $y$-koordinatene. \n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Bruk programmet nedenfor som utgangspunkt for å simulere bevegelsen til partikkelen:\n", + "\n", + "\n", + "```\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Bruk skilpaddegrafikk (turtle) til å simulere bevegelsen til partikkelen. Du skal lage en skilpadde som beveger seg i en tilfeldig retning (tilfeldig vinkel) en bestemt avstand (for eksempel 5) for hvert tidssteg.\n", + "\n", + "\n", + "```" + ] + }, + { + "cell_type": "markdown", + "id": "02dbfebf", + "metadata": {}, + "source": [ + "## Oppgaver\n", + "\n", + "```{admonition} Oppgave 1\n", + "Utled og forklar den gamle babylonske algoritmen for å finne kvadratrøtter.\n", + "```\n", + "\n", + "```{admonition} Oppgave 2\n", + "Lag spillet Yatzy.\n", + "```\n", + "\n", + "```{admonition} Oppgave 3\n", + "Bruk simuleringer til å regne ut hva sannsynligheten for at det i vår klasse er minst 2 personer som har samme bursdag. Hvilke forutsetninger må ta gjøre for å utføre simuleringen?\n", + "```\n", + "\n", + "```{admonition} Oppgave 4 (__utfordring__)\n", + "Det er 100 plasser i et fullbooket fly, men fordi du kommer for seint, er du den siste personen i køen som kommer inn. Den første i køen er litt idiot, og velger derfor en tilfeldig plass på flyet. Så kommer 98 Hell's Angels (én etter én). Disse bikergjengmedlemmene er ganske tydelige, og så fort de ser noen på plassen deres, grynter de, og idioten (som sitter i setet deres) må flytte seg (tilfeldig) til et annet sted. Til slutt, når alle er inne, så kommer du.\n", + "\n", + "1. Hva er sannsynligheten for at noen sitter i setet ditt?\n", + "\n", + "2. Hvor mange ganger i snitt bytter den første personen sete?\n", + "```" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.8" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/_sources/docs/tema4_algoritmer/derivasjon.ipynb b/_sources/docs/tema4_algoritmer/derivasjon.ipynb new file mode 100644 index 00000000..39df41ba --- /dev/null +++ b/_sources/docs/tema4_algoritmer/derivasjon.ipynb @@ -0,0 +1,656 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Numerisk derivasjon\n", + "\n", + "```{admonition} Læringsutbytte\n", + "Etter å ha arbeidet med denne delen av emnet, skal du kunne:\n", + "1. forklare den teoretisk bakgrunnen for numerisk derivasjon, og forskjellen på numerisk og analytisk derivasjon\n", + "2. implementere framoverdifferansen, bakoverdifferansen og sentraldifferansen for numerisk derivasjon\n", + "3. derivere funksjoner og data\n", + "```\n", + "\n", + "## Derivasjonsbegrepet\n", + "Derivasjon handler om endring. Den deriverte kan beskrive stigningen og forandringen i et forløp. Nærmere bestemt handler det om momentan endring, altså endringen mellom to tilstander (funksjonsverdier) over en svært liten endring i en annen tilstand: \n", + "\n", + "$$f'(x) = \\frac{df}{dt} = \\lim_{\\Delta x \\rightarrow 0} \\frac{f(x+dx) - f(x)}{dx}$$\n", + "\n", + "Vi har derfor nytte av derivasjon i mange tilfeller der vi ønsker å beskrive en utvikling. Vi kan derimot ikke alltid derivere analytisk for hånd, så det er en stor verdi i å beherske numerisk derivasjon. Da kan vi enklest tilnærme den analytisk deriverte med en numerisk derivert:\n", + "\n", + "```{admonition} Numerisk derivasjon (framoverdifferansen)\n", + "For en liten verdi av $dx$ kan vi tilnærme den førstederiverte slik:\n", + "\n", + "$$f'(x) = \\frac{df}{dx} \\approx \\frac{f(x+dx) - f(x)}{dx}$$\n", + "```\n", + "der vi tilnærmer grenseverdien med en svært liten verdi av dx. Her skal vi se på denne metoden og andre metoder som kan brukes til å tilnærme den deriverte numerisk.\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Bruk definisjonen ovenfor og regn ut $f'(1)$ for $f(x) = 2x + 2$. Sett $dx = 1\\cdot 10^{-8}$.\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "def f(x):\n", + " return x**2\n", + "\n", + "dx = 1E-8\n", + "x = 1\n", + "fder = (f(x + dx) - f(x))/dx\n", + "\n", + "print(\"f'(1) =\", fder)\n", + "```\n", + "````" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Løsningsforslaget ovenfor viser en enkel måte å implementere den numeriske deriverte på. Det kan også være nyttig å kunne lage metoden som en funksjon:" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "def deriver(f, x, dx = 1E-8):\n", + " dy = f(x + dx) - f(x)\n", + " return dy/dx" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Legg merke til at vi ikke deriverer symbolsk. Det betyr at vi ikke får en annen funksjon når vi deriverer en funksjon. Vi får bare _funksjonsverdier_. Vi må altså deriverere i gitte punkter, for eksempel $f'(1)$ eller $f'(-5)$. Dersom vi ønsker å visualisere den deriverte til en funksjon, må vi derfor derivere funksjonen i flere punkter. Dette kan vi gjøre vektorisert ved hjelp av arrayer:" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "def f(x):# Definerer en funksjon vi skal derivere\n", + " return 3*x**3 + x**2 - 1\n", + "\n", + "x = np.linspace(-2,2,100)\n", + "y = f(x)\n", + "yder = deriver(f,x)\n", + "\n", + "plt.plot(x,y,label=\"f(x)\") # Plotter funksjonen\n", + "plt.plot(x,yder,label=\"f'(x)\") # Plotter den deriverte funksjonen\n", + "plt.xlabel(\"x\")\n", + "plt.ylabel(\"y\")\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Feilanalyse\n", + "La oss nå ta en titt på hvilke verdier av $\\Delta x$ som gir best resultat. Det må vel være den verdien som ligger nærmest 0, altså en så liten verdi som mulig -- eller? La oss teste dette ved å skrive ut den deriverte for ulike verdier av $\\Delta x$:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "For delta_x = 0.1 er feilen: 4.000000000000092 %\n", + "For delta_x = 0.01 er feilen: 0.40000000000048885 %\n", + "For delta_x = 0.001 er feilen: 0.03999999998569592 %\n", + "For delta_x = 0.0001 er feilen: 0.003999999920267783 %\n", + "For delta_x = 1e-05 er feilen: 0.00040000068821655077 %\n", + "For delta_x = 1e-06 er feilen: 3.999977025159751e-05 %\n", + "For delta_x = 1e-07 er feilen: 4.010780685348436e-06 %\n", + "For delta_x = 1e-08 er feilen: 6.07747097092215e-07 %\n", + "For delta_x = 1e-09 er feilen: 8.274037099909037e-06 %\n", + "For delta_x = 1e-10 er feilen: 8.274037099909037e-06 %\n", + "For delta_x = 1e-11 er feilen: 8.274037099909037e-06 %\n", + "For delta_x = 1e-12 er feilen: 0.008890058234101161 %\n", + "For delta_x = 1e-13 er feilen: 0.07992778373591136 %\n", + "For delta_x = 1e-14 er feilen: 0.524016993585974 %\n", + "For delta_x = 1e-15 er feilen: 6.581410364015028 %\n", + "For delta_x = 1e-16 er feilen: 100.0 %\n", + "For delta_x = 1e-17 er feilen: 100.0 %\n" + ] + } + ], + "source": [ + "def f(x):\n", + " return 2*x**2 + x - 5\n", + "\n", + "def fder_analytisk(x):\n", + " return 4*x + 1\n", + "\n", + "x = 1\n", + "delta_x = [10**-i for i in range(1,18)] # liste med verdier fra 10^-18 til 10^-1\n", + "analytisk = fder_analytisk(x)\n", + "\n", + "for i in range(len(delta_x)):\n", + " numerisk = deriver(f, x, delta_x[i]) \n", + " feil = abs(numerisk-analytisk)/analytisk * 100\n", + " print(\"For delta_x =\", delta_x[i],\"er feilen:\", feil, \"%\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Vi ser at \"store\" verdier som 0.1 og 0.01 gir en del feil. Men vi ser også faktisk at nøyaktigheten er størst ved $dx = 10^{-8}$, og at den synker både med økende og med minkende $dx$. Og attpåtil gir $dx \\leq 10^{-16}$ null som svar! Dette gir naturlig nok en feil på 100 \\%, siden den analytiske verdien er 5.\n", + "\n", + "Vi forventer kanskje ikke dette resultatet. Dersom vi kun ser på definisjonen av den deriverte, er det ikke spesielt logisk at det skal slå slik ut. Men det hele handler om at tall ikke er representert eksakt i en datamaskin, og når datamaskinen skal operere med svært små tall, kan det bli en liten avrundingsfeil når den regner med tallene. Denne avrundingsfeilen gjør at vi får feil dersom vi velger for små verdier av $dx$. Dersom vi gjør en mer generell feilanalyse, viser det seg at $10^{-8}$ er en god verdi å velge her. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "````{admonition} Underveisoppgave\n", + ":class: tip\n", + "Lag et plott med feilen som funksjon av _dx_ med utgangspunkt i programmet ovenfor. Bruk logaritmiske akser – dette får resultatene tydeligere fram. Du kan lage logaritmiske akser slik:\n", + "```{code-block} Python\n", + "plt.yscale('log')\n", + "plt.xscale('log')\n", + "```\n", + "````\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "import matplotlib.pyplot as plt\n", + "\n", + "def f(x):\n", + " return 2*x**2 + x - 5\n", + "\n", + "def fder_analytisk(x):\n", + " return 4*x + 1\n", + "\n", + "x = 1\n", + "delta_x = [10**-i for i in range(1,18)] # liste med verdier fra 10^-18 til 10^-1\n", + "analytisk = fder_analytisk(x)\n", + "avvik = []\n", + "\n", + "for i in range(len(delta_x)):\n", + " numerisk = deriver(f, x, delta_x[i]) \n", + " feil = abs(numerisk-analytisk)/analytisk * 100\n", + " avvik.append(feil)\n", + " print(\"For delta_x =\", delta_x[i], \"er feilen:\", feil, \"%\")\n", + "\n", + "plt.plot(delta_x, avvik)\n", + "plt.yscale('log')\n", + "plt.xscale('log')\n", + "plt.xlabel('dx')\n", + "plt.ylabel('Feil (%)')\n", + "plt.show()\n", + "```\n", + "````" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Andre tilnærminger\n", + "\n", + "Tilnærmingen til den deriverte som vi har sett på, tar utgangspunkt i punktene $(x, f(x))$ og $(x+dx, f(x+dx))$ for å regne ut den momentane vekstfarten (altså den deriverte) i punktet $x$. Men vi kan like godt bruke andre punkter. Metoden vi har sett på, kalles _framoverdifferansen_ fordi den tar utgangspunkt i punktet $x$ og _neste_ punkt $x + dx$. Tilsvarende kan vi ta utgangspunkt i punktet $x$ og _forrige_ punkt $x - dx$. Dette kaller vi _bakoverdifferansen_. Bakoverdifferansen gir samme feil som framoverdifferansen, men er teoretisk nyttig for å utlede andre metoder.\n", + "\n", + "```{admonition} Numerisk derivasjon (bakoverdifferansen)\n", + "For en liten verdi av $dx$ kan vi tilnærme den førstederiverte slik:\n", + "\n", + "$$\\frac{df}{dx} \\approx \\frac{f(x) - f(x-dx)}{dx}$$\n", + "```\n", + "\n", + "En metode som derimot gir mindre feil enn både framover- og bakoverdifferansen, er _sentraldifferansen_. Det er en slags kombinasjon av framover- og bakoverdifferansen, der vi tar utgangspunkt i gjennomsnittet (midtpunktet) av $x+dx$ og $x-dx$.\n", + "\n", + "```{admonition} Numerisk derivasjon (sentraldifferansen)\n", + "For en liten verdi av $dx$ kan vi tilnærme den førstederiverte slik:\n", + "\n", + "$$\\frac{df}{dx} \\approx \\frac{f(x+dx) - f(x-dx)}{2\\cdot dx}$$\n", + "```\n", + "\n", + "\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Implementer bakover- og sentraldifferansen som Python-funksjoner. Gjør en feilanalyse med de tre ulike tilnærmingene for ulike verdier av $\\Delta x$. Bruk funksjonen $f(x) = \\sin{(x)}$ og sammenlikn med den analytiske verdien av den deriverte, $f'(x) = \\cos{(x)}$\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Numerisk derivasjon av data\n", + "Nå kommer vi til den nyttigste delen av numerisk derivasjon, nemlig derivasjon av diskrete data. Vi kan derivere på samme måte som vi gjorde med kontinuerlige funksjoner, men vi har gitt en $dx$ som er gitt av avstanden mellom datapunktene våre. Hvis målefrekvensen er lav, blir $dx$ høy, og motsatt. La oss se på hvordan vi kan derivere noen posisjonsdata:" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    tid_sposisjon_m
    00.000000.000000
    10.010010.000060
    20.020020.000240
    30.030030.000541
    40.040040.000962
    \n", + "
    " + ], + "text/plain": [ + " tid_s posisjon_m\n", + "0 0.00000 0.000000\n", + "1 0.01001 0.000060\n", + "2 0.02002 0.000240\n", + "3 0.03003 0.000541\n", + "4 0.04004 0.000962" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "\n", + "# Leser og sjekker ut dataene\n", + "data = pd.read_csv(\"https://raw.githubusercontent.com/andreasdh/NAT3000/master/docs/datafiler/posisjon.txt\")\n", + "data.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Plotter dataene\n", + "import matplotlib.pyplot as plt\n", + "\n", + "x = data[\"tid_s\"]\n", + "y = data[\"posisjon_m\"]\n", + "\n", + "plt.scatter(x, y)\n", + "plt.title(\"Bevegelse av legeme\")\n", + "plt.xlabel(\"Tid (s)\")\n", + "plt.ylabel(\"Posisjon (m)\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Husk at $v(t) = s'(t)$. Hvis vi deriverer, får vi altså farten til legemet:" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "dydx = []\n", + "for i in range(len(y)-1):\n", + " dy = y[i+1]-y[i]\n", + " dx = x[i+1]-x[i]\n", + " der = dy/dx\n", + " dydx.append(der)\n", + "\n", + "dydx.append(None)\n", + "plt.plot(x, y, label='Posisjon (m)')\n", + "plt.plot(x, dydx, label='Fart (m/s)')\n", + "plt.xlabel('Tid (s)')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "I løkka bruker vi samme framgangsmåte som vi gjorde da vi deriverte funksjoner, men nå tar vi verdiene fra ei liste med verdier. Vi kan kun kjøre løkka til lengden av lengden av listene minus 1, fordi vi skal ta forskjellen mellom verdier. Da blir det nemlig én verdi mindre enn i _y_- og _x_-listene. Derfor legger vi til en ekstra verdi \"None\" til slutt i lista, slik at alle listene blir like lange." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Som du ser, kan vi benytte numerisk derivasjon på både kontinuerlige funksjoner og diskrete data. Hovedpoenget er at vi finner ut noe om endringen i en funksjon eller i et datasett. Og desto mindre _dx_ er, desto bedre tilnærming er denne endringen til den momentante endringen i et punkt, altså den deriverte.\n", + "\n", + "```{admonition} Didaktisk oppgave\n", + "1. Kan programmering og numeriske metoder være en måte å forstå derivasjon på? I så fall hvordan?\n", + "2. I denne delen har du sett på enkel numerisk derivasjon, feilanalyse, ulike tilnærminger til den deriverte og derivasjon av diskrete data. Hvilke deler av dette egner seg for elever, og i hvilke(n) sammenheng(er)?\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Derivasjon med numeriske biblioteker\n", + "\n", + "Selvfølgelig har noen også lagd funksjoner som kan derivere for oss. Vi finner dem i scipy-biblioteket. Funksjonen _derivative_ finner den numerisk deriverte ved hjelp av midtpunktstilnærmingen:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "f'(1) = 2.0\n" + ] + } + ], + "source": [ + "from scipy.misc import derivative\n", + "import numpy as np\n", + "\n", + "def f(x):\n", + " return x**2 - 4\n", + "\n", + "derivert = derivative(f, 1)\n", + "print(\"f'(1) =\", derivert)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Oppgaver\n", + "\n", + "```{admonition} Oppgave 1\n", + ":class: tip\n", + "Beregn f'(1) numerisk for følgende funksjoner. Kontroller ved å derivere for hånd.\n", + "\n", + "1. $f(x) = x^2 - 4x + 5$\n", + "2. $f(x) = e^x$\n", + "3. $f(x) = \\sqrt{\\ln(x)}$\n", + "```\n", + "\n", + "````{admonition} Oppgave 2\n", + ":class: tip\n", + "Skriv om funksjonen _deriver_ slik at _dx_ har en standardverdi. Velg en standardverdi som sannsynligvis vil gi gode resultater. \n", + "```{code-block} Python\n", + "def deriver(f, x, dx = 1E-8):\n", + " dy = f(x + dx) - f(x)\n", + " return dy/dx\n", + "```\n", + "````\n", + "\n", + "```{admonition} Oppgave 3\n", + ":class: tip\n", + "En partikkel følger posisjonsfunksjonen $x(t) = t^3 + \\frac{1}{3}\\cdot t$. Plott både posisjon, hastighet og akselerasjon for $t = [0,10]$. Husk at $v(t) = s'(t)$ og $a(t) = v'(t)$.\n", + "```\n", + "\n", + "```{admonition} Oppgave 4\n", + ":class: tip\n", + "Forklar hva som er forskjellen mellom analytisk og numerisk derivasjon.\n", + "```\n", + "\n", + "```{admonition} Oppgave 5\n", + ":class: tip\n", + "Temperaturen $T(t)$ (i celsius) etter $t$ minutter til en nylig lagd te følger denne modellen, som vi har kommet fram til ved regresjon av eksperimentelle data:\n", + "\n", + "$$T(t) = 70e^{-0.065t}$$\n", + "\n", + "a) Bruk Newtons kvotient for å tilnærme den deriverte til $T(t)$ for 1000 jevnt fordelte verdier av $t$ i intervallet $[0, 60]$\n", + "b) Plott resultatet fra a) sammen med grafen for $T(t)$. Bruk merkelapper (labels og legend) for grafene.\n", + "c) Hvor mye synker temperaturen med ved element nr. 42 i lista over verdier for $t$ (vi teller med 0-te element)?\n", + "```\n", + "\n", + "````{admonition} Oppgave 6\n", + ":class: tip\n", + "Programmet nedenfor leser av fila \"heistur_kjemi_fysikk.txt\" og finner fart og akselerasjon ved hjelp av numerisk derivasjon. Programmet fungerer derimot ikke helt som det skal. Rett opp feilen. Lag også en ny kolonne \"fart\" og en ny kolonne \"akselerasjon\" i dataframen.\n", + "\n", + "\n", + "\n", + "````\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "\n", + "data = pd.read_csv(\"heistur_kjemi_fysikk.txt\")\n", + "p = data[\"height_m\"]\n", + "t = data[\"time_s\"]\n", + "v = [] # fart i m/s\n", + "a = [] # akselerasjon i m/s^2\n", + "\n", + "# Vi trenger to løkker fordi a tar utgangspunkt i v, som derfor må lages først\n", + "for i in range(len(p)-1):\n", + " dt = t[i+1] - t[i]\n", + " fart = (p[i+1] - p[i])/dt\n", + " v.append(fart)\n", + "\n", + "for i in range(len(v)-1):\n", + " dt = t[i+1] - t[i]\n", + " akselerasjon = (v[i+1] - v[i])/dt\n", + " a.append(akselerasjon)\n", + "\n", + "v.append(None)\n", + "a.append(None)\n", + "a.append(None)\n", + "\n", + "# Legger til verdiene i dataframen\n", + "data[\"fart\"] = v\n", + "data[\"akselerasjon\"] = a\n", + "\n", + "plt.subplot(3,1,1)\n", + "plt.ylabel(\"Posisjon (m)\")\n", + "plt.plot(t, p, color = \"limegreen\")\n", + "plt.subplot(3,1,2)\n", + "plt.ylabel(\"Fart (m)\")\n", + "plt.ylim(-1,1)\n", + "plt.plot(t, v, color = \"navy\")\n", + "plt.subplot(3,1,3)\n", + "plt.ylabel(\"Akselerasjon (m)\")\n", + "plt.plot(t, a, color = \"firebrick\")\n", + "plt.ylim(-1,1)\n", + "plt.xlabel(\"Tid (s)\")\n", + "plt.tight_layout()\n", + "plt.show()\n", + "```\n", + "````\n", + "\n", + "```{admonition} Oppgave 7\n", + ":class: tip\n", + "Løs puslespillet nedenfor, som skal illustrere derivasjon av diskrete data.\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "tags": [ + "remove-input" + ] + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import IFrame\n", + "IFrame('https://parsons.herokuapp.com/puzzle/cd36da48d9cc4fcbbaf13103d84454bf', width=1000, height=750)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Video\n", + "````{tab-set}\n", + "```{tab-item} Numerisk derivasjon\n", + "\n", + "```\n", + "````" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "celltoolbar": "Edit Metadata", + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/tema4_algoritmer/feilhandtering.ipynb b/_sources/docs/tema4_algoritmer/feilhandtering.ipynb new file mode 100644 index 00000000..37fb33ba --- /dev/null +++ b/_sources/docs/tema4_algoritmer/feilhandtering.ipynb @@ -0,0 +1,35 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Numeriske metoder og feilhåndtering\n", + "\n", + "\n", + "\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/tema4_algoritmer/integrasjon.ipynb b/_sources/docs/tema4_algoritmer/integrasjon.ipynb new file mode 100644 index 00000000..da58cd28 --- /dev/null +++ b/_sources/docs/tema4_algoritmer/integrasjon.ipynb @@ -0,0 +1,459 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Numerisk integrasjon (ekstrastoff)\n", + "\n", + "```{admonition} Læringsutbytte\n", + "Etter å ha arbeidet med dette temaet, skal du kunne:\n", + "1. Forklare forskjellen på ulike tilnærminger til rektangelmetoden (venstre-, høyre- og midtpunktstilnærming).\n", + "2. Forklare og utlede trapesmetoden.\n", + "3. Implementere rektangelmetoden og trapesmetoden.\n", + "4. Integrere funksjoner numerisk.\n", + "```\n", + "\n", + "## Integrasjon\n", + "Du kjenner kanskje integrasjon som en metode å regne ut arealet under en graf eller volumet til legemer på. I tillegg kjenner du antakelig til integrasjon som den motsatte operasjonen av derivasjon. At derivasjon og integrasjon er motsatte operasjoner, er bevist gjennom _analysens fundamentalteorem_. Termen _analyse_ brukes her om den greinen av matematikk som omhandler derivasjon og integrasjon (_kalkulus_). Siden datamaskinen kun kan operere med bestemte verdier, kan vi med numeriske algoritmer kun tilnærme _det bestemte integralet_. Vi antideriverer derfor ikke her.\n", + "\n", + "\n", + "## Rektangelmetoden\n", + "\n", + "Vi kan enklest gjøre en tilnærming til det bestemte integralet ved å utnytte at det kan skrives som en grenseverdi av Riemann-summer. En Riemann-sum kan beskrives som en tilnærming til arealet under en graf ved hjelp av arealet til geometriske figurer. En vanlig tilnærming er å bruke rektangler:\n", + "\n", + "\n", + "\n", + "Her benyttes $N = 10$ rektangler for å tilnærme integralet av $f(x) = \\cos{(x)} +2$ for $x\\in[2,12]$. Bredden av rektanglene må være $(b-a)/N = (12-2)/10 = 1$. Vi ser også at høyden av hvert rektangel er $f(x_n)$ der $n\\in[2,11]$, det vil si at vi lar venstresiden av rektangelet gå opp til grafen. Dersom vi regner ut arealet til hver av disse rektanglene, får vi 18.046675645664006, noe som ligger et lite stykke unna den analytiske verdien ($(\\sin{(12)} + 2\\cdot 12)-(\\sin{(2)} + 2\\cdot 2) \\approx 18.554129655173885$. Dersom vi øker antall rektangler, her til 50, får vi naturlig nok et bedre estimat (her har vi inkludert resultatene i figuren):\n", + "\n", + "\n", + "\n", + "Det er åpenbart, spesielt i den første figuren, at flere områder av rektanglene ligger utenfor grafen. De ligger både for langt over og under grafen flere steder. Men feilen blir ikke så stor som det kan se ut som fordi vi nettopp har områder både over og under grafen. Relativ feil er her ca. 2.7 \\% med 10 rektangler og 0.65 \\% med 50 rektangler. \n", + "\n", + "La oss illustrere feilen vi får med en lineær funksjon, $f(x) = 10x$:\n", + "\n", + "\n", + "\n", + "Vi har i disse modellene målt rektangelhøyden på venstre ytterkant av rektangelet. Dette gir oss her en underestimering av integralet for hvert rektangel. Vi kan også måle høyden av rektanglene på høyre ytterkant. Da får vi en tilsvarende overestimering:\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Vi ser her at vi får en stor underestimering med venstretilnærmingen og en stor overestimering med høyretilnærmingen, med en relativ feil på ca. 7.1 \\%. Det samme skjer for alle funksjoner i intervaller som er enten voksende eller synkende i hele intervallet. En måte å kompensere for dette, er å benytte høyden til rektangelet i midten istedenfor i endepunktet til venstre eller høyre:\n", + "\n", + "\n", + "\n", + "Det aller beste resultatet får vi altså med denne _midtpunktstilnærmingen_. For lineære funksjoner vil vi få en eksakt verdi (selv med ett rektangel!) fordi rektanglene er like store over og under grafen. Men midtpunktstilnærmingen er generelt bedre også på for eksempel polynomer av høyere grad og trigonometriske funksjoner. La oss nå se på implementering av metodene." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Implementering av rektangelmetodene\n", + "\n", + "```{admonition} Rektangelmetoden (venstretilnærming)\n", + "Det bestemte integralet til en funksjon $f(x)$ fra $x = a$ til $x = b$ kan tilnærmes ved arealet til $n$ rektangler med bredden $h = \\frac{b-a}{n}$:\n", + "\n", + "$$\\int_a^b f(x) \\ \\mathrm{d}x \\approx h \\sum_{k=1}^{n} f(x_k)$$\n", + "```\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Programmet nedenfor gir en funksjon som bruker venstretilnærmingen av rektangelmetoden til å beregne det bestemte integralet av en funksjon _f_ mellom _a_ og _b_. Fyll inn det som mangler i metoden.\n", + "```\n", + "\n", + "\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "def f(x):\t\t\t\t#Definerer en funksjon som vi skal integrere.\n", + " return x**3\n", + " \n", + "def f_analytisk(x): #Definerer analytisk verdi for sammenlikning.\n", + " return (1/4)*x**4\n", + "\n", + "def rektangelmetoden(f, a, b, n):\n", + " A = 0.0\t\t\t\t\t\t\t \n", + " h = (b-a)/n\t\t\t#Bredden til rektanglene\n", + " for k in range (n):\t\n", + " A = A + f(a + k*h)*h\n", + " return A\n", + " \n", + "print(\"Numerisk verdi:\", rektangelmetoden(f, 0, 5, 1000))\n", + "print(\"Analytisk verdi:\", f_analytisk(5)-f_analytisk(1))\n", + "```\n", + "````\n", + "\n", + "Tilsvarende kan vi beskrive høyretilnærmingen slik:\n", + "\n", + "```{admonition} Rektangelmetoden (høyretilnærming)\n", + "Det bestemte integralet til en funksjon $f(x)$ fra $x = a$ til $x = b$ kan tilnærmes ved arealet til $n$ rektangler med bredden $h = \\frac{b-a}{n}$:\n", + "\n", + "$$\\int_a^b f(x) \\ \\mathrm{d}x \\approx h \\sum_{k=1}^{n} f(x_{k+1})$$\n", + "```\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Implementer algoritmen for høyretilnærmingen som en Python-funksjon. Test og sammenlikn med venstretilnærmingen på integralet $\\int_2^8 f(x) = x^2 - 2x + 4 \\ dx$. \n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "def rektangelmetoden_høyre(f, a, b, n):\n", + " A = 0.0\t\t\t\t\t\t\t \n", + " h = (b-a)/n\n", + " for k in range (n-1):\t\n", + " A = A + f(a + (k+1)*h)*h\n", + " return A\n", + "```\n", + "````\n", + "\n", + "Den beste tilnærmingen med rektangler får vi med midtpunktstilnærmingen:\n", + "\n", + "```{admonition} Rektangelmetoden (midtpunktstilnærming)\n", + "Det bestemte integralet til en funksjon $f(x)$ fra $x = a$ til $x = b$ kan tilnærmes ved arealet til $n$ rektangler med bredden $h = \\frac{b-a}{n}$:\n", + "\n", + "$$\\int_a^b f(x) \\ \\mathrm{d}x \\approx h \\sum_{k=1}^{n} f(x_{k+1})$$\n", + "```\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Implementer algoritmen for høyretilnærmingen som en Python-funksjon. Test og sammenlikn med venstretilnærmingen på integralet $\\int_2^8 f(x) = x^2 - 2x + 4 \\ dx$. \n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "def rektangelmetoden_midt(f, a, b, n):\n", + " A = 0.0\t\t\t\t\t\t\t \n", + " h = (b-a)/n\n", + " for k in range (n):\t\n", + " A = A + f(a + (1+2*k)*(h/2))*h\n", + " return A\n", + "```\n", + "````\n", + "\n", + "Dersom vi har funksjoner med stor stor stigning eller minking ($|f'(x) >> 0|$), trenger vi mange rektangler for å få et godt resultat. Dette kan gi langsomme programmer dersom integrasjonen må gjentas flere ganger. Vi skal derfor nå se på noen forbedringer av rektangelmetoden." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Trapesmetoden\n", + "\n", + "Vi kan legge merke til at toppstykket i et rektangel er ei rett, horisontal linje. Ei slik linje kan representeres som et polynom av nullte grad, $f(x) = ax^0 = a$, der $a$ er et reellt tall. La oss se på mulighetene for å bytte ut dette toppstykket med et polynom av første grad, $f(x) = ax^1 = ax$. Da får vi \\textit{trapeser} istedenfor rektangler. En algoritme for dette er litt mindre intuitiv og litt mer jobb å utlede, men vi spanderer på oss det. La oss ta utgangspunktet i trapesmetoden illustrert med ett trapes i intervallet $[a, b] = [2, 12]$ på $f(x) = cos(x) + 2$:\n", + "\n", + "\n", + "\n", + "La oss utlede en algoritme for trapesmetoden. Vi tar utgangspunkt i at arealet av et trapes er gitt ved følgende formel:\n", + "\n", + "$$A_{trapes} = \\frac{side 1+side 2}{2}\\cdot h$$\n", + "\n", + "De to sidene $x_1$ og $x_2$ er gitt ved henholdsvis $f(a)$ og $f(b)$. Høyden i trapeset blir stykket langs hele x-aksen, altså $b-a$. Arealet blir derfor:\n", + "\n", + "$$A = \\frac{f(a) + f(b)}{2}\\cdot(b-a)$$\n", + "\n", + "La oss nå utvide til $n$ trapeser. Da blir høyden av hvert trapes $h = (x_1+x_2)/n$, noe som gir dette arealet for hvert $i$-te trapes:\n", + "\n", + "$$A_i = \\frac{f(x_i) + f(x_i)}{2}\\cdot h$$\n", + "\n", + "Summen blir da slik for $n$ trapeser:\n", + "\n", + "$$\\frac{f(a)+f(a+h)}{2}h + \\frac{f(a+h)+f(a+2h)}{2}h + \\frac{f(a+2h)+f(a+3h)}{2}h + ... + \\frac{f(a+ih)+f(b)}{2}h$$\n", + "\n", + "Vi multipliserer så alle ledd med $h$ og dividerer dem på 2. Dette setter vi utenfor uttrykket:\n", + "\n", + "$$\\frac{h}{2}\\cdot (f(a)+f(a+h)+f(a+h)+f(a+2h)+f(a+2h)+ ... + f(a+ih) + f(b))$$\n", + "\n", + "Trekker vi sammen like ledd, får vi:\n", + "\n", + "$$\\frac{h}{2}\\cdot (f(a)+2f(a+h)+2f(a+2h)+2f(a+3h)+ ... + 2f(a+ih) + f(b))$$\n", + "\n", + "Siden det bare er $f(a)$ og $f(b)$ som ikke er multiplisert med 2, kan vi forenkle:\n", + "\n", + "$$h\\left(\\frac{f(a)+f(b)}{2} + (f(a+h)+f(a+2h)+f(a+3h)+ ... + f(a+ih))\\right)$$\n", + "\n", + "Den siste samlingen av ledd kan vi skrive som en sum. Da får vi trapesmetoden:\n", + "\n", + "\n", + "```{admonition} Trapesmetoden\n", + "Det bestemte integralet til en funksjon $f(x)$ fra $x = a$ til $x = b$ kan tilnærmes ved arealet til $n$ trapeser med bredden $h = \\frac{b-a}{n}$:\n", + "\n", + "$$\\int_a^b f(x) dx \\approx h\\left( \\frac{f(a)+f(b)}{2} + \\sum_{i=1}^{n-1} f(x_i) \\right)$$\n", + "```\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Implementer trapesmetoden og test den på funksjonene $f(x) = x^3 + 2x$ og $f(x) = \\sqrt(x)$ i intervallet $[2,4]$. Sammenlikn med resultatene du får fra rektangelmetoden (gjerne flere av dem!) med samme antall geometriske figurer. \n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "def trapesmetoden(f, a, b, n):\n", + " h = (b-a)/n\n", + " A = (f(a) + f(b))/2.0\n", + " for k in range(1, n):\n", + " A = A + f(a + k*h)\n", + " return A*h\n", + "```\n", + "````\n", + "\n", + "Dersom vi øker antallet trapeser, blir naturlig nok også tilnærmingen bedre, som vi kan se av denne figuren:\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Simpsons metode\n", + "Vi har nå sett på to tilnærminger til integralet som bruker henholdsvis nullte- og førstegradspolynomer som toppstykke på de geometriske figurene som vi beregner arealet av. For å få en enda bedre tilnærming, spesielt til oscillerende funksjoner, kan vi bruke et toppstykke av et polynom med høyere grad enn 1. Alle disse metodene kan utledes ved hjelp av interpolasjon, men vi skal ikke gjøre det her. Her nøyer vi oss med å vise og implementere algoritmen for tredjegradstilnærmingen. Denne algoritmen kalles _Simpsons metode_:\n", + "\n", + "```{admonition} Trapesmetoden\n", + "Det bestemte integralet til en funksjon $f(x)$ fra $x = a$ til $x = b$ kan tilnærmes med $n$ geometriske figurer, der $n$ er et partall:\n", + "\n", + "$$\\int_a^b f(x) dx \\approx \\frac{h}{3} \\left( f(a) + f(b) + 2\\sum_{k = 1}^{\\frac{n}{2} - 1} f(x_{2k}) + 4\\sum_{k=1}^{\\frac{n}{2}} f(x_{2k-1}) \\right)$$\n", + "```\n", + "\n", + "Metoden kan implementeres slik:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "def simpsons(f, a, b, n):\n", + " h = (b-a)/n\n", + " total = f(a) + f(b)\n", + " for k in range(1,n,2):\n", + " A += 4 * f(a + k*h)\n", + " for k in range(2,n,2):\n", + " A += 2*f(a + k*h)\n", + " return A*h/3" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```{admonition} Oppgave\n", + ":class: tip\n", + "Studer koden ovenfor og prøv å finne igjen leddene i definisjonen av Simpsons metode.\n", + "```\n", + "\n", + "Metodene vi har sett på, bygger på samme prinsipp, nemlig tilnærming av arealet under grafen ved hjelp av geometriske figurer med rektangelbase og et polynom av grad $n$ som toppstykke. Siden prinsippet er det samme, kaller vi dem en _familie_ av metoder (hyggelig, ikke sant?). Denne familien heter _Newton-Cotes_. Det vil si at for eksempel trapesregelen kalles en Newton-Cotes-metode av første grad, mens Simpsons metode er en Newton-Cotes-metode av andre grad. Det finnes mange andre metoder og familier innenfor numerisk integrasjon, men disse lar vi ligge foreløpig." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Bruk av biblioteker for å integrere\n", + "Vi vender tilbake til scipy-biblioteket, som også inneholder metoder for numerisk integrasjon. Vi kan bruke biblioteket slik:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Trapesmetoden: 151.2501565629694\n", + "Simpsons metode: 151.25000015671972\n", + "Gauss kvadratur: (151.25, 1.6959623319719519e-12)\n" + ] + } + ], + "source": [ + "from scipy import integrate\n", + "import numpy as np\n", + "\n", + "def f(x):\n", + " return x**3 - 1\n", + "\n", + "n = 1000\n", + "x = np.linspace(0,5,n)\n", + "y = f(x)\n", + "\n", + "# Integrasjon\n", + "trapes = integrate.trapz(y,x) # Trenger arrayer som parameter\n", + "simpsons = integrate.simps(y,x) # Trenger arrayer som parameter\n", + "gauss_kvadratur = integrate.quad(f,0,5) # Trenger funksjon som parameter\n", + "print(\"Trapesmetoden:\",trapes)\n", + "print(\"Simpsons metode:\",simpsons)\n", + "print(\"Gauss kvadratur:\",gauss_kvadratur) #Skriver ut svar og absolutt feil med Gauss kvadratur, en metode vi ikke har sett på" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Studer koden ovenfor. Hvordan fungerer de ulike funksjonene? Test gjerne ut funksjonene selv.\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Oppgaver\n", + "\n", + "```{admonition} Oppgave 1\n", + ":class: tip\n", + "Løs puslespillet nedenfor. Programmet skal definere rektangelmetoden som en Python-funksjon.\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "tags": [ + "remove-input" + ] + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import IFrame\n", + "IFrame('https://parsons.herokuapp.com/puzzle/e6f9400da6d54c1389d6a1f7489eca36', width=1000, height=550)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n", + "```{admonition} Oppgave 2\n", + ":class: tip\n", + "Implementer algoritmen for rektangelmetoden som en Python-funksjon. Test metoden på integralet \n", + "\n", + "$$\\int_2^8 f(x) = x^2 - 2x + 4 \\ dx$$\n", + "```\n", + "\n", + "```{admonition} Oppgave 3\n", + ":class: tip\n", + "Implementer trapesmetoden og ulike tilnærminger for rektangelmetoden som Python-funksjoner. Gjør en feilanalyse av metodene og sammenlikn svarene du får på integralet\n", + "\n", + "$$\\int_2^8 f(x) = x^2 - 2x + 4 \\ dx$$\n", + "```\n", + "\n", + "```{admonition} Oppgave 4\n", + ":class: tip\n", + "Utled rektangelmetoden ved hjelp av definisjonen av integralet og en figur.\n", + "```\n", + "\n", + "```{admonition} Oppgave 5\n", + ":class: tip\n", + "Utled trapesformelen med utgangspunkt i definisjon av det bestemte integralet og formelen for arealet av et trapes. Bruk gjerne en figur.\n", + "```\n", + "\n", + "```{admonition} Oppgave 6\n", + ":class: tip\n", + "En _sannsynlighetsfordeling_ er en matematisk beskrivelse av hvor sannsynlig det er at ulike utfall vil skje. Det finnes mange forskjellige sannsynlighetsfordelinger. I denne oppgava skal vi se på en fordeling $f(x)$ som kalles en _standard normalfordeling_. Den er definert ved:\n", + "\n", + "$$f(x) = \\frac{1}{\\sqrt{2\\pi}}\\cdot e^{-\\frac{x^2}{2}}$$\n", + "\n", + "Skriv et program som bruker trapes- eller rektangelmetoden for å integrere $f(x)$ i området mellom $a = -k\\cdot\\sigma = -k$ og $b = k\\cdot\\sigma = k$ for $k \\in {1, 2, 3}$ og skriver ut resultatene. Du kan sette $\\sigma = 1$.\n", + "\n", + "For å forsikre deg om at du bruker en grei verdi for $n$, kan du se om resultatene blir omtrent lik 0.68, 0.95 og 0.997 for henholdsvis $k \\in {1, 2, 3}$. \n", + "```\n", + "\n", + "```{admonition} Oppgave 7*\n", + ":class: tip\n", + "Noen funksjoner oppfører seg trøblete ved at de går mot minus eller pluss uendelig, eller ved at funksjonen varierer svært mye mot en bestemt verdi. La oss her ta denne funksjonen:\n", + "\n", + "$$f(x) = \\sin\\left(\\frac{1}{x}\\right)$$\n", + "\n", + "Funksjonen oppfører seg turbulent like ved 0. Plott funksjonen med \\(D_f = [-5, 0) \\cup (0,5]\\) og studer grafen. Prøv å derivere og integrere med ulike metoder i punkter et stykke fra 0 og deretter punkter nær 0. Sammenlikn ulike metoder med den analytiske løsninga og kommenter resultatene.\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Videoer\n", + "Bruk videoene nedenfor som en innføring eller en reptisjon til numerisk integrasjon.\n", + "\n", + "````{tab-set}\n", + "```{tab-item} Integrasjon\n", + "\n", + "```\n", + "\n", + "```{tab-item} Ulike metoder\n", + "\n", + "```\n", + "````" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "celltoolbar": "Edit Metadata", + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/tema4_algoritmer/likninger.ipynb b/_sources/docs/tema4_algoritmer/likninger.ipynb new file mode 100644 index 00000000..97390f3e --- /dev/null +++ b/_sources/docs/tema4_algoritmer/likninger.ipynb @@ -0,0 +1,651 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Likninger og nullpunkter\n", + "\n", + "```{admonition} Læringsutbytte\n", + "Etter å ha arbeidet med denne delen av emnet, skal du kunne:\n", + "1. forklare den teoretisk bakgrunnen for halveringsmetoden og Newtons metode\n", + "2. implementere halveringsmetoden og Newtons metode\n", + "3. drøfte feil og begrensninger ved metodene\n", + "4. bruke metodene til å finne nullpunkter og løse likninger\n", + "```\n", + "\n", + "## Likninger\n", + "Å finne nullpunktene til en funksjon er det samme som å løse en likning $f(x) = 0$. Dersom vi for eksempel ønsker å løse en likning $x^4 + 3x = 2x^2 - 10$, kan vi løse denne ved å finne nullpunktet til funksjonen $f(x) = x^4 + 3x - 2x^2 + 10$. Vi kan si at vi formulerer likningen som et nullpunktsproblem.\n", + "\n", + "Likninger kan løses med mange spesialiserte løsningsmetoder og algebraiske \"triks\", for eksempel kjenner vi en løsningsformel for andregradslikninger:\n", + "\n", + "$$x = \\frac{-b \\pm \\sqrt{b^2 - 4ac}}{2a}$$\n", + "\n", + "Denne funksjonen kan kun brukes til å løse andregradslikninger. Det kreves andre funksjoner for å løse likninger av tredje og fjerde grad, og likninger av femte grad og over er ikke analytisk løsbare. Når vi løser likninger numerisk på en datamaskin, bruker vi derimot generelle metoder som i prinsippet kan brukes på alle typer likninger.\n", + "\n", + "Det finnes mange ulike måter å løse slike likninger på, og hver av metodene har sine styrker og svakheter. To metoder som er basert på relativt enkle prinsipper, er halveringsmetoden og Newtons metode. Vi skal se på implementering av disse metodene. I tillegg ser vi litt på styrker og svakheter ved metodene. Til slutt ser vi hvordan vi kan løse likninger ved å bruke ferdige algoritmer som finnes i scipy-biblioteket.\n", + "\n", + "## Praktiske anvendelser\n", + "\n", + "Det finnes flere praktiske anvendelser med likninger. Hvis vi for eksempel skal finne ut hvor to funksjoner skjærer hverandre, kan vi løse likningen $f(x) = g(x)$ som et nullpunktsproblem: $f(x) - g(x) = 0$. Disse funksjonene kan representere mange ulike ting.\n", + "\n", + "La oss for eksempel si at vi har to uttrykk som for eksempel beskriver konsentrasjon til to produkter over tid:\n", + "\n", + "$$c_1(t) = e^{-t} + t + 5$$\n", + "\n", + "$$c_2(t) = \\ln(0.006t + 1) + t^{0.3} + 10$$\n", + "\n", + "For å finne ut ved hvilken tid de to produktene har lik konsentrasjon, kan vi løse likningen $c_1(t) = c_2(t)$. Formulert som et nullpunktsproblem får vi:\n", + "\n", + "$$e^{-t} + t + 5 - \\ln(0.006t + 1) - t^{0.3} - 10 = 0$$\n", + "\n", + "Dette er en likning som ikke er analytisk løsbar. Her skal vi se på metoder for å finne nullpunktene til funksjoner. Dette er en strategi som også kan brukes til å løse likninger." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Visualisere løsningen\n", + "Før vi løser likninger, kan det være lurt å visualisere funksjonene som representerer likningen. For eksempel kan vi plotte funksjonen $f(t) = e^{-t} + t + 5 - \\ln(0.006t + 1) - t^{0.3} - 10$ og se hvor den skjærer _x_-aksen:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "\n", + "t = np.linspace(0,10,1000)\n", + "y = np.exp(-t) + t + 5 - np.log(0.006*t + 1) - t**0.3 - 10\n", + "\n", + "plt.plot(t,y)\n", + "plt.axhline(y = 0, color = \"red\") # x-akse\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Vi ser at grafen skjærer _x_-aksen i omtrent $x \\approx 6.5$. Vi kan også plotte $c_1(t) = e^{-t} + t + 5$ og $c_2(t) = \\ln(0.006t + 1) + t^{0.3} + 10$ i samme koordinatsystem for å se hvor de skjærer hverandre. Vi ser at dette gir samme estimat for _x_." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "\n", + "t = np.linspace(0,10,1000)\n", + "y1 = np.exp(-t) + t + 5 \n", + "y2 = np.log(0.006*t + 1) + t**0.3 + 10\n", + "\n", + "plt.plot(t,y1)\n", + "plt.plot(t,y2)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## En enkel metode for å finne nullpunktet\n", + "Nå har vi en viss peiling på hvor nullpunktet befinner seg, som er løsningen på likninga. La oss prøve en veldig enkel metode for å finne dette nullpunktet. Metoden vi viser nå, brukes ikke i særlig grad, fordi den både er langsom og lite robust. Den er derimot ganske intuitiv og fin å starte med. La oss begynne med en pseudokode som beskriver algoritmen:\n", + "\n", + "```{code-block} text\n", + "x = startverdi\n", + "y = f(x)\n", + "dx = steglengde (avstand mellom punktene vi vil sjekke)\n", + "\n", + "gjenta så lenge y*y_forrige > 0: (det vil si inntil produktet er mindre enn 0).\n", + " x_forrige = x\n", + " x = x + dx\n", + "\n", + "nullpunkt = (x+x_forrige)/2\n", + "skriv ut nullpunktet\n", + "```\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Tolk pseudokoden ovenfor og forklar hvordan algoritmen fungerer.\n", + "```\n", + "\n", + "Vi kan illustrere metoden med følgende figur:\n", + "\n", + "\n", + "\n", + "Vi beveger oss altså oppover (eller nedover) grafen ved å gradvis øke _x_-verdiene med en steglengde _dx_. Underveis sjekker vi om funksjonsverdien til de to _x_-verdiene (_x_ og _x + dx_) har motsatt fortegn. Dersom de har det, må nullpunktet ligge mellom de to _x_-verdiene. I figuren ser vi at $f(x_7)$ og $f(x_8)$ har motsatt fortegn, altså ligger nullpunktet mellom disse verdiene et sted. Ofte kan det være lurt å tippe på midtpunktet mellom de to, men her ser vi at det ikke stemmer helt – nullpunktet ligger svært nært $x_7$. Dette kan vi bøte på ved å velge en _dx_ som er mye mindre. Vi har valgt en stor avstand mellom _x_-verdiene i figuren for å gjøre den tydeligere, men du bør velge en _dx_ som er liten nok til å få et godt svar. Hva som er \"liten nok\" _dx_, er avhengig av funksjonen. Dette er en åpenbar svakhet med metoden.\n", + "\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Vi kan implementere algoritmen som nedenfor. Fyll inn det som mangler.\n", + "\n", + "\n", + "```\n", + "\n", + "```{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "\n", + "```\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Diskuter fordeler og svakheter med algoritmen ovenfor.\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Halveringsmetoden\n", + "La oss se på en annen metode for å finne nullpunkter og dermed løse likninger. Vi går rett til programkoden:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Nullpunktet er x = 1.0\n" + ] + } + ], + "source": [ + "def f(x):\n", + " return 2*x - 2\n", + "\n", + "# Intervallet vi skal lete etter nullpunktet i\n", + "a = -5\n", + "b = 5\n", + "\n", + "m = (a+b)/2 # Regner ut midtpunktet mellom a og b\n", + "\n", + "while f(m) != 0:\n", + " if f(a)*f(m) < 0:\n", + " b = m\n", + " elif f(b)*f(m) < 0:\n", + " a = m\n", + " m = (a+b)/2\n", + "\n", + "print(\"Nullpunktet er x =\", m)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```{amonition} Underveisoppgave\n", + ":tip: tip\n", + "Forklar linje for linje hva programmet ovenfor gjør. Tegn en figur som illustrerer hvordan metoden fungerer.\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Metoden som er brukt ovenfor, heter _halveringsmetoden_. Halveringsmetoden går ut på å velge et intervall $[a, b]$ der $f(a)$ og $f(b)$ har motsatte fortegn. Vi kan bruke grafen til å vurdere hvilket intervall som egner seg dersom vi plotter den først. Deretter skal vi finne et nytt intervall $[a, b]$ som er mindre, men slik at $f(a)$ og $f(b)$ fortsatt har motsatte fortegn. Det kan vi gjøre ved å finne midten mellom _a_ og _b_. Da får vi et punkt $m = (a + b)/2$, og vi kan finne $f(m)$. \n", + "\n", + "Vi undersøker så om $f(m_1) = 0$. Hvis ikke, evaluerer vi fortegnene til $f(a)$, $f(b)$ og $f(m)$. Dersom $f(a)$ og $f(m)$ har samme fortegn, setter vi det nye intervallet til $[m, b]$ fordi da må $f(m)$ og $f(b)$ ha motsatte fortegn. Motsatt setter vi intervallet til $[a, m]$ dersom $f(b)$ og $f(m)$ har samme fortegn. Prosessen gjentas _n_ ganger til vi har at $f(m_n) \\approx 0$. Figuren nedenfor illustrerer metoden med to trinn\n", + "\n", + "\n", + "\n", + "Algoritmen kan mer generelt beskrives slik:\n", + "\n", + "```{admonition} Halveringsmetoden\n", + "La _f_ være en kontinuerlig funksjon med motsatte fortegn på funksjonsverdiene $f(a)$ og $f(b)$ i intervallet $[a,b]$. Da kan nullpunktene finnes slik:\n", + "\n", + "1. Finn midtpunktet $c_k$ mellom punktene _a_ og _b_.\n", + "2. Undersøk hvilke av $f(a)$ og $f(b)$ som har motsatt fortegn til $f(c_k)$, og sett det nye intervallet til $[a,c_k]$ eller $[c_k, b]$, der start- og sluttverdien i intervallet skal ha motsatt fortegn.\n", + "3. Gjenta prosessen _n_ ganger til $f(c_k) \\approx 0$.\n", + "```\n", + "\n", + "### Forbedringer av metoden\n", + "Når vi bruker numeriske metoder, får vi sjeldent nøyaktige svar. Derfor er det aldri en god idé å undersøke hvorvidt $f(x) = 0$ helt nøyaktig. Vi bør heller sjekke om $f(x) \\approx 0$. Dette kan vi gjøre med å innføre en _toleranse_ som forteller programmet hvor nærme nullpunktet vi vil være. Dette kan vi gjøre slik:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Nullpunktet er x = 0.9999999962747097\n" + ] + } + ], + "source": [ + "def f(x):\n", + " return 2*x - 2\n", + "\n", + "# Intervallet vi skal lete etter nullpunktet i\n", + "a = -5\n", + "b = 5\n", + "toleranse = 1E-8\n", + "\n", + "m = (a+b)/2 # Regner ut midtpunktet mellom a og b\n", + "\n", + "while abs(f(m)) >= toleranse:\n", + " if f(a)*f(m) < 0:\n", + " b = m\n", + " elif f(b)*f(m) < 0:\n", + " a = m\n", + " m = (a+b)/2\n", + "\n", + "print(\"Nullpunktet er x =\", m)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```{amonition} Underveisoppgave\n", + ":class: tip\n", + "Hvorfor tar vi absoluttverdien til f(m) når vi skal sjekke om funksjonsverdien er nærmere 0 enn toleransen?\n", + "```\n", + "\n", + "```{amonition} Underveisoppgave\n", + ":class: tip\n", + "Utvid programmet gradvis ved å legge til elementene nedenfor. Programmet skal\n", + "1. printe ut antall runder løkka går (det vil si antall _iterasjoner_).\n", + "2. stoppe dersom et visst antall iterasjoner er nådd.\n", + "3. pakkes inn i en Python-funksjon med _f_, _a_, _b_, _toleranse_ og maks antall iterasjoner som parametre. Funksjonen skal returnere antall iterasjoner og løsningen.\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "Her ser du en mulig løsning der alle punktene ovenfor er lagt inn. I tillegg er det lagt inn en \"docstring\", altså en forklaring på hva funksjonen gjør øverst i funksjonen.\n", + "```{code-block} Python\n", + "def f(x):\n", + " return x**2 - x -2\n", + "\n", + "def halveringsmetoden(f,a,b,tol=1E-10,n=100):\n", + " \"\"\"\n", + " Algoritme som benytter halveringsmetoden til å \n", + " finne nullpunktet til en funksjon f i intervallet [a,b].\n", + " \n", + " Parametre\n", + " ---------\n", + " f: funksjonen\n", + " a: laveste x-verdi i intervallet\n", + " b: høyeste x-verdi i intervallet\n", + " tol: toleranseparameter/feilmargin\n", + " n: maks antall iterasjoner\n", + " \n", + " Returnerer\n", + " ----------\n", + " m: nullpunktet\n", + " i: antall iterasjoner brukt\n", + " \"\"\"\n", + " i = 0\n", + " m = (a+b)/2\t\t\t# Finner første halveringspunkt\n", + " while i < n and abs(f(m)) > tol:\t\n", + " if f(a)*f(m) < 0:\n", + " b = m\n", + " elif f(b)*f(m) < 0:\n", + " a = m\n", + " m = (a+b)/2\n", + " i += 1\n", + " return m, i\n", + "\n", + "m, i = halveringsmetoden(f,-10,10)\n", + "print(\"Nullpunktet er x =\", m, \"og løkka gikk\", i, \"ganger.\")\n", + "```\n", + "````" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "La oss nå se om vi kan benytte halveringsmetoden til å finne ut ved hvilken tid konsentrasjonen er lik i reaksjonene representert ved likningene vi startet med i dette kapitlet. Vi lager en litt enklere utgave av funksjonen i løsningsforslaget ovenfor, men vi legger i tillegg inn en standardverdi for toleransen (her $10^{-8}$). Det betyr at hvis vi ikke spesifiserer toleransen når vi kaller på funksjonen, vil toleransen automatisk settes til dette.\n", + "\n", + "\n", + "\n", + "```{admonition} Oppgave\n", + ":class: tip\n", + "Test og studer programmet ovenfor og forklar hva som skjer. Modifiser programmet slik at det også plotter nullpunktet og funksjonen for å sjekke at løsningen stemmer.\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "Du kan legge til følgende plottekommandoer for å visualisere løsningen:\n", + "\n", + "```{code-block} Python\n", + "import matplotlib.pyplot as plt\n", + "\n", + "x = np.linspace(0,20)\n", + "plt.axhline(y=0)\n", + "plt.plot(x,c(x)) # Plotter funksjonen\n", + "plt.plot(t,c(t), marker=\"o\", color=\"red\") # Plotter nullpunktet\n", + "plt.show()\n", + "```\n", + "````" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Newtons metode\n", + "Det finnes flere måter å løse likninger på. En metode som ofte fungerer godt, og som er mye raskere enn halveringsmetoden, er _Newtons metode_, også kalt _Newton-Raphsons metode_. Den bruker nullpunktet til _tangenten_ i et punkt på en funksjon _f_ som en tilnærming til nullpunktet til _f_. Metoden fungerer slik:\n", + "\n", + "1. Vi velger oss først et startpunkt $x_0$ og regner ut nullpunktet til tangenten i $f(x_0)$. Dette punktet kaller vi $x_1$. \n", + "2. Dersom $x_1$ tilsvarer nullpunktet til funksjonen $f$, sier vi oss ferdige. \n", + "3. Hvis ikke, regner vi ut nullpunktet til en ny tangent i $f(x_1)$ og kaller det $x_2$. \n", + "4. Slik fortsetter vi til vi er så nært nullpunktet til $f$ som vi ønsker. \n", + "\n", + "Figuren nedenfor viser to iterasjoner av metoden med funksjonen $f(x) = x^2 - x - 2$ og startgjett $x_0 = 5$:\n", + "\n", + "\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Bruk figuren ovenfor til å forklare hvorfor Newtons metode konvergerer mot (går mot) nullpunktet raskt.\n", + "```\n", + "\n", + "La oss utlede en algoritme for metoden. Stigningen til en linje kan gis ved:\n", + "\n", + "$$a = \\frac{\\Delta y}{\\Delta x} = \\frac{f(x) - f(x_0)}{x - x_0}$$\n", + "\n", + "Her setter vi $x$ til å være en variabel størrelse og $x_0$ til et fast punkt. Dersom vi gjør om dette til et uttrykk for linja $f(x)$, får vi følgende:\n", + "\n", + "$$f(x) = f(x_0) + a(x - x_0)$$\n", + "\n", + "Dette er likningen for ei linje som går igjennom punktet $(x_0, f(x_0))$. Siden den deriverte i et punkt er lik stigningen i det samme punktet, kan vi skrive:\n", + "\n", + "$$f(x) = f(x_0) + f'(x_0)(x - x_0)$$\n", + "\n", + "som er likningen til en tangent gjennom punktet $(x_0, f(x_0))$ på funksjonen $f$. Vi ønsker å finne nullpunktet til tangenten, og setter derfor $f(x) = 0$:\n", + "\n", + "$$f(x_0) + f'(x_0)(x - x_0) = 0$$\n", + "\n", + "Dersom vi omformer uttrykket slik at den ukjente er nullpunktet $x$, får vi:\n", + "\n", + "$$x = x_0 - \\frac{f(x_0)}{f'(x_0)}$$\n", + "\n", + "Dette er Newtons metode. Siden vi ønsker å gjenta prosessen med å finne nullpunktene til tangentene i $(x_0, f(x_0))$, $(x_1, f(x_1))$, $(x_2, f(x_2))$ og så videre, kan vi formulere algoritmen iterativt:\n", + "\n", + "```{admonition} Newtons metode\n", + "La _f_ være en kontinuerlig, deriverbar funksjon, og la $(x_n, f(x_n))$ være et punkt på funksjonen. Nullpunktet til funksjonen _f_ kan tilnærmes ved nullpunktet til den $n$-te tangenten til funksjonen. Bruk først et startgjett, $x_0$. Finn så nullpunktet $x_{n+1}$ til den $n$-te tangenten ved å bruke nullpunktet, $x_n$, til den forrige tangenten. Gjenta til $f(x_{n+1}) \\approx 0$\n", + "\n", + "$$x_{n+1} = x_n - \\frac{f(x_n)}{f'(x_n)}$$\n", + "```\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Bruk beskrivelsen ovenfor og prøv å implementere Newtons metode før du ser på hvordan vi gjør det nedenfor.\n", + "```\n", + "\n", + "Vi ser at vi trenger den deriverte for å beregne nullpunktet. Det er en åpenbar ulempe ved metoden dersom den deriverte er vanskelig å finne. Vi kan bruke en tilnærming til den deriverte med numeriske metoder, men da får vi enda en feil i beregningen vår. En fordel med Newtons metode er at den konvergerer raskt mot nullpunktet, og at vi kun trenger å oppgi ett punkt som vi skal starte med. Halveringsmetoden konvergerer mer langsomt og trenger to punkter (et intervall) for å fungere. Hastigheten har lite å si når vi gjør så enkle beregninger som her, men dersom vi skal gjøre tunge beregninger, er Newtons metode, og varianter av denne, mye brukt.\n", + "\n", + "Et annet problem med Newtons metode kan oppstå ved lokale ekstremalpunkter. Her kan metoden gi tangenter på hver sin side av for eksempel bunnpunktet, uten at de konvergerer mot nullpunktet. Vi kan for så vidt også få et problem dersom $f'(x) = 0$ et eller annet sted i iterasjonen, fordi vi da må dele på null i algoritmen. Dette oppstår ikke så ofte, men det kan være lurt å tenke på, spesielt med hensyn til startgjettet vårt.\n", + "\n", + "Her er en enkel implementering av Newtons metode uten å pakke metoden inn i en funksjon:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Nullpunktet er x = 1.0\n" + ] + } + ], + "source": [ + "def f(x):\n", + " return 2*x - 2\n", + "\n", + "def fder(x):\n", + " return 2\n", + "\n", + "toleranse = 1E-8\n", + "x = 0 # startgjett\n", + "\n", + "while abs(f(x)) > toleranse:\n", + " x = x - f(x)/fder(x)\n", + "\n", + "print(\"Nullpunktet er x =\", x)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Hvis vi ønsker å lage en funksjon av Newtons metode, kan vi gjøre det slik:" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "def newtons_metode(f,fder,x,tol=1E-10):\n", + " while abs(f(x)) > tol:\n", + " x = x - f(x)/fder(x)\n", + " return x" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Både Newtons metode og halveringsmetoden er grunnleggende, men relativt robuste metoder som kan gi gode nok tilnærminger i mange tilfeller. Newtons metode er en såkalt _Householder-metode_ av første orden. Vi kan få enda bedre tilnærminger ved å bruke metoder av høyere orden $n$. Med $n=2$ får vi en algoritme som kalles _Halleys metode_. Ulempen med slike metoder er at vi trenger den $n-$te-deriverte av funksjonen. Fordelen er at de trenger svært få iterasjoner for å oppnå veldig gode tilnærminger. \n", + "\n", + "Vi kan også benytte numeriske biblioteker som allerede inneholder implementeringer av metodene. Et mye brukt bibliotek for numeriske metoder er _Scipy_ (forkortelse for _Scientific Python_). Her er et eksempel på hvordan vi kan bruke noen metoder for å løse likninger og finne nullpunkter med funksjoner fra dette biblioteket:\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Returverdien \"root\" viser nullpunktet vi får fra metodene. Metodene gir her \"converged: True\" hvis den finner nullpunktene. Da står det også \"converged\" under \"flag\" hvis alt gikk som det skulle. Hvis vi får \"converged: False\", dukker det opp en beskjed om feilen under \"flag\". \"Iterations\" angir antall ganger løkka går, altså hvor mange ganger metoden gjentas. Dette skiller seg litt fra \"function calls\", som ofte er høyere fordi flere funksjoner blir brukt, blant annet $f(x)$ og $f'(x)$ i Newtons metode, og $f(x)$, $f'(x)$ og $f''(x)$ i Halleys metode.\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Kjør programmet ovenfor og forklar hvordan funksjonen _root\\_scalar_ fungerer. Prøv å endre parametrene og test funksjonen på andre problemer med ulike metoder.\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Likningssett\n", + "\n", + "Likningssett kan løses med litt ulike metoder. Broydens metode fungerer stort sett fint for både lineære og ikke-lineære likningssett. Vi må definere likningene på formen $f(x) = 0$, og variablene skal settes som elementer av en array. Nedenfor har vi f.eks. disse likningene:\n", + "\n", + "$$x + 2y + 3z - 6 = 0$$\n", + "\n", + "$$y + 2z - 2 = 0$$ \n", + "\n", + "$$x + 6y + 2z - 5 = 0$$\n", + "\n", + "Vi definerer variablene slik: $x = x[0]$, $y = x[1]$ og $z = x[2]$. Vi må også velge noen punkter vi skal starte i, slik som vi gjør med halveringsmetoden og Newtons metode. Her velger vi vilkårlig startverdiene $(1, 1, 1)$." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[3.00000000e+00 3.55271368e-15 1.00000000e+00]\n" + ] + } + ], + "source": [ + "import scipy.optimize as opt\n", + "\n", + "def fun(x):\n", + " return [x[0] + 2*x[1] + 3*x[2] - 6, \n", + " x[1] + 2*x[2] - 2,\n", + " x[0] + 6*x[1] + 2*x[2] - 5]\n", + "\n", + "løsning = opt.broyden1(fun, [1,1,1])\n", + "print(løsning)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Oppgaver\n", + "\n", + "```{admonition}\n", + ":class: tip\n", + "Løs puslespillet nedenfor slik at funksjonen som benytter halveringsmetoden blir riktig.\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "tags": [ + "remove-input" + ] + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import IFrame\n", + "IFrame('https://parsons.herokuapp.com/puzzle/267d396f643145f6891e3965b75b93b2', width=1000, height=750)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```{admonition} Oppgave 2\n", + ":class: tip\n", + "Bruk halveringsmetoden og vis at løsningene til likningen $x^5 = 5x^3 + 3$ er $x_1 \\approx -2.169, x_2 \\approx -0.894$ og $x_3 \\approx 2.291$. Sammenlikn med \"bisect\" (halveringsmetoden) fra Scipy-biblioteket.\n", + "```\n", + "\n", + "```{admonition} Oppgave 3\n", + ":class: tip\n", + "Implementer Newtons metode som en Python-funksjon med toleranse, maks antall iterasjoner og relevant feilhåndtering dersom vi når maks iterasjoner uten å nå gitt toleranse. Test funksjonen på likningen $x^2 = x^3 - 4$.\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Videoer\n", + "\n", + "````{tab-set}\n", + "```{tab-item} Halveringsmetoden\n", + "\n", + "```\n", + "```{tab-item} Newtons metode\n", + "\n", + "```\n", + "````" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "celltoolbar": "Edit Metadata", + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/tema4_algoritmer/likninger_oppgave1.ipynb b/_sources/docs/tema4_algoritmer/likninger_oppgave1.ipynb new file mode 100644 index 00000000..7df6072b --- /dev/null +++ b/_sources/docs/tema4_algoritmer/likninger_oppgave1.ipynb @@ -0,0 +1,69 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "af18522a", + "metadata": {}, + "source": [ + "# Numerisk løsing av likninger (oppgave)\n", + "Gå sammen i grupper på ca. fire personer og diskuter oppgavene nedenfor.\n", + "\n", + "## Oppgave 1\n", + "a) Diskuter følgende spørsmål parvis i gruppa:\n", + "1.\tHva er en likning?\n", + "2.\tHva betyr det å løse en likning?\n", + "3.\tHva er felles for alle nullpunkter?\n", + "\n", + "b) Se på grafen til funksjonen f(x) nedenfor. Du kjenner ikke funksjonsuttrykket til denne grafen. Hvilke av følgende intervaller finnes nullpunktet i?\n", + "\n", + "[-1, 0.5], [-1, 2], [0, 1], [0.5, 1], [1, 2], [-1, 2]\n", + "\n", + "![graf](https://github.com/andreasdh/NAT3000/blob/master/docs/tema4_numeriske_metoder/bilder/graf1.png?raw=true)\n", + "\n", + "c) Hva er forskjellen mellom funksjonsverdien til funksjonen i randpunktene på de intervallene som inneholder nullpunktene og de som ikke gjør det? Er det noen systematisk sammenheng her?\n", + "\n", + "d) Ta utgangspunkt i intervallet [0, 2]. Hvordan kan du justere dette intervallet systematisk for å komme nærmere og nærmere nullpunktet? Prøv å anvende generaliseringen om funksjonsverdiene ovenfor.\n", + "\n", + "e) Prøv å formulere en enkel systematisk algoritme for å finne nullpunktet gitt et intervall.\n", + "\n", + "f) Dere får utdelt noen grafer. En på gruppa får se grafene. Denne personen kan kun oppgi funksjonsverdier, mens de andre kan teste algoritmen dere lagde ovenfor ved å systematisk oppgi ulike x-verdier. Fungerte metoden på alle grafene?" + ] + }, + { + "cell_type": "markdown", + "id": "69c9cbbc", + "metadata": {}, + "source": [ + "## Oppgave 2\n", + "Følgende funksjon blei gitt på eksamen i 2009:\n", + "\n", + "$$f(x)=2\\ln⁡\\left((x^4+4)-\\frac{1}{2}x\\right) - 5$$\n", + "\n", + "a) Prøv å løse likninga $f(x) = 0$ for hånd. Hvor langt kommer du med det? Dette kaller vi analytisk løsning av likninger, og vi ender opp med et eksakt svar hvis vi får det til.\n", + "\n", + "b) Tegn grafen for funksjonen ovenfor og bruk metoden dere formulerte i oppgave 1 til å finne en tilnærma løsning. Dette kaller vi numerisk løsning av likninger." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/_sources/docs/tema4_algoritmer/numeriske_biblioteker.ipynb b/_sources/docs/tema4_algoritmer/numeriske_biblioteker.ipynb new file mode 100644 index 00000000..a587dc84 --- /dev/null +++ b/_sources/docs/tema4_algoritmer/numeriske_biblioteker.ipynb @@ -0,0 +1,236 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Numeriske biblioteker\n", + "\n", + "Det finnes mange ferdige biblioteker i Python som vi kan bruke til å gjøre numeriske beregner. Vi har tidligere sett på hvordan vi kan implementere algoritmer selv. Dette gjorde vi for å forstå algoritmene og hva som ligger til grunn for dem. Men når vi først forstår hva de gjør og begrensninger og forutsetninger for dem, kan vi i mange tilfeller bruke algoritmer fra veletablerte biblioteker. Her ser du noen muligheter." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. Løse likninger" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " converged: True\n", + " flag: 'converged'\n", + " function_calls: 44\n", + " iterations: 42\n", + " root: 1.9999999999993179\n", + "-----------------------------------------\n", + " converged: True\n", + " flag: 'converged'\n", + " function_calls: 14\n", + " iterations: 7\n", + " root: 2.0\n" + ] + } + ], + "source": [ + "from scipy.optimize import root_scalar\n", + "\n", + "def f(x):\n", + " return x**2 - 4\n", + "\n", + "def dfder(x):\n", + " return 2*x\n", + "\n", + "# Halveringsmetoden\n", + "nullpunkt_halvering = root_scalar(f,method=\"bisect\",bracket=[0,5])\n", + "nullpunkt_newton = root_scalar(f,method=\"newton\",fprime=dfder,x0=10)\n", + "print(nullpunkt_halvering)\n", + "print(\"-----------------------------------------\")\n", + "print(nullpunkt_newton)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Likningssett" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Likningssett kan løses med litt ulike metoder. Broydens metode fungerer stort sett fint for både lineære og ikke-lineære likningssett. Vi må definere likningene på formen $f(x) = 0$, og variablene skal settes som elementer av en array. Nedenfor har vi f.eks. disse likningene:\n", + "\n", + "$$x + 2y + 3z - 6 = 0$$\n", + "\n", + "$$y + 2z - 2 = 0$$ \n", + "\n", + "$$x + 6y + 2z - 5 = 0$$\n", + "\n", + "Vi definerer variablene slik: $x = x[0]$, $y = x[1]$ og $z = x[2]$. Vi må også velge noen punkter vi skal starte i, slik som vi gjør med halveringsmetoden og Newtons metode. Her velger vi vilkårlig punktet $(1, 1, 1)$." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[3.00000000e+00 3.55271368e-15 1.00000000e+00]\n" + ] + } + ], + "source": [ + "import scipy.optimize as opt\n", + "\n", + "def fun(x):\n", + " return [x[0] + 2*x[1] + 3*x[2] - 6, \n", + " x[1] + 2*x[2] - 2,\n", + " x[0] + 6*x[1] + 2*x[2] - 5]\n", + "\n", + "løsning = opt.broyden1(fun, [1,1,1])\n", + "print(løsning)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2. Derivere" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2.0\n" + ] + } + ], + "source": [ + "from scipy.misc import derivative\n", + "import numpy as np\n", + "\n", + "derivert = derivative(f, 1)\n", + "print(derivert)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3. Integrere" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-5.333331997329328\n", + "-5.333333331995993\n" + ] + } + ], + "source": [ + "from scipy import integrate\n", + "\n", + "x = np.linspace(0,2,1000)\n", + "y = f(x)\n", + "\n", + "trapes = integrate.trapz(y,x)\n", + "print(trapes)\n", + "\n", + "simpsons = integrate.simps(y,x)\n", + "print(simpsons)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 4. Løse difflikninger" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from scipy.integrate import solve_ivp\n", + "\n", + "def dy_dt(t, y):\n", + " return t - y\n", + "\n", + "a = 0\n", + "b = 4\n", + "t = np.linspace(a,b,1000)\n", + "y0 = 1\n", + "y_int = solve_ivp(dy_dt, [a,b], [1], t_eval=t)\n", + "\n", + "plt.xlabel(\"t\")\n", + "plt.ylabel(\"y\")\n", + "plt.plot(y_int.t, y_int.y[0])\n", + "\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/tema4_algoritmer/symbolsk_utregning.ipynb b/_sources/docs/tema4_algoritmer/symbolsk_utregning.ipynb new file mode 100644 index 00000000..21c6ea12 --- /dev/null +++ b/_sources/docs/tema4_algoritmer/symbolsk_utregning.ipynb @@ -0,0 +1,560 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Symbolsk utregning (CAS)\n", + "## Bruk av CAS (Computer Algebra System) i Python\n", + "Her er en liten oversikt over hva du kan gjøre i CAS-verktøyet i Python. Det stjernemerkede stoffet er for spesielt interesserte, og er ikke pensum." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from sympy import *\n", + "\n", + "#x = symbols(\"x\")\n", + "#y = symbols(\"y\")\n", + "\n", + "x, y = symbols(\"x y\") #Definerer symboler/variabler\n", + "uttrykk = x + 2*y*x #Definerer et uttrykk" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Faktorisering" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle x \\left(2 y + 1\\right)$" + ], + "text/plain": [ + "x*(2*y + 1)" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "factor(uttrykk)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Løse likninger\n", + "\n", + "$x^2 - 4 = 0$. Løs med hensyn på x." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[-2, 2]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "solve(x**2 - 4, x) # Kan utelate x her, fordi vi ikke har andre bokstaver i uttrykket" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Løse likningssett\n", + "Vi kan løse likningssett som er lineære ved å bruke funksjonen _solve_, og ikke-lineære likningssett ved å erstatte _solve_ med _nonlinsolve_. Prinsippet er det samme." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{x: 3, y: 0, z: 1}" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sympy import *\n", + "\n", + "x,y,z = symbols('x,y,z')\n", + "likning1 = Eq(x + 2*y + 3*z, 6)\n", + "likning2 = Eq(y + 2*z, 2)\n", + "likning3 = Eq(x + 6*y + 2*z, 5) \n", + "resultat = solve([likning1, likning2, likning3],(x,y,z)) # Bruker nonlinsolve ved ikke-lineære likninger\n", + "resultat" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Derivere\n", + "Deriver $x + 2yx$ med hensyn på x." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle 2 y + 1$" + ], + "text/plain": [ + "2*y + 1" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "diff(uttrykk, x)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Difflikninger\n", + "\n", + "$y'' - y = e^x$." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle y{\\left(t \\right)} = C_{2} e^{- t} + \\left(C_{1} + \\frac{t}{2}\\right) e^{t}$" + ], + "text/plain": [ + "Eq(y(t), C2*exp(-t) + (C1 + t/2)*exp(t))" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y = Function('y')\n", + "t = symbols('t')\n", + "difflikning = Eq(y(t).diff(t, t) - y(t), exp(t))\n", + "dsolve(difflikning, y(t))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Integrere (for elever med R2)*\n", + "\n", + "$$\\int 4x^3 dx$$" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle x^{4}$" + ], + "text/plain": [ + "x**4" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "uttrykk2 = 4*x**3\n", + "integrate(uttrykk2, x)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Bestemt integrasjon:\n", + "\n", + "$$\\int_{-\\infty}^{\\infty} cos(x^2) dx$$" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\frac{\\sqrt{2} \\sqrt{\\pi}}{2}$" + ], + "text/plain": [ + "sqrt(2)*sqrt(pi)/2" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "integrate(cos(x**2), (x, -oo, oo))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Vektorregning (R1 og R2)*\n", + "\n", + "For vektorregning anbefaler jeg å bruke innebygde numpy-funksjoner (ikke CAS):" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "\n", + "vektor1 = np.array([1,-1,0])\n", + "vektor2 = np.array([2,2,3])\n", + "\n", + "prikkprodukt = np.dot(vektor1, vektor2) # Skalarprodukt\n", + "kryssprodukt = np.cross(vektor1, vektor2) # Vektorprodukt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Det er også mulig å bruke CAS-verktøyet i sympy:" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle (3)\\mathbf{\\hat{i}_{N}} + (5)\\mathbf{\\hat{j}_{N}} + (5)\\mathbf{\\hat{k}_{N}}$" + ], + "text/plain": [ + "3*N.i + 5*N.j + 5*N.k" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sympy.vector import CoordSys3D\n", + "N = CoordSys3D('N') # Lager et kartesisk koordinatsystem å plassere vektorene i\n", + "# N.i, N.j og N.k er basisvektorer i det kartesiske rommet\n", + "\n", + "# Lager vektoren v = [2, 3, 4]\n", + "v = 2*N.i + 3*N.j + 4*N.k\n", + "# Lager vektoren v = [1, 2, 1]\n", + "u = N.i + 2*N.j + N.k\n", + "\n", + "# Enkel vektoraddisjon\n", + "u + v" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle (-5)\\mathbf{\\hat{i}_{N}} + (2)\\mathbf{\\hat{j}_{N}} + \\mathbf{\\hat{k}_{N}}$" + ], + "text/plain": [ + "(-5)*N.i + 2*N.j + N.k" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "v.cross(u) # Vektorprodukt" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle 12$" + ], + "text/plain": [ + "12" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "v.dot(u) # Skalarprodukt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Matematikk for spesielt interesserte**\n", + "\n", + "Nedenfor ser du eksempler på hvordan en kan gjøre litt lineær algebra og finne Taylor-rekker. Dette er ekstrastoff for de som allerede har litt kjennskap til matematikk på universitetsnivå." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Matriseregning** (lineær algebra)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\left[\\begin{matrix}1 & 2\\\\3 & 4\\end{matrix}\\right]$" + ], + "text/plain": [ + "Matrix([\n", + "[1, 2],\n", + "[3, 4]])" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "matrise = Matrix([[1,2],[3,4]])\n", + "matrise" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\left[\\begin{matrix}1 & 2\\end{matrix}\\right]$" + ], + "text/plain": [ + "Matrix([[1, 2]])" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "matrise.row(0)\n", + "# matrise.col(0)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle -2$" + ], + "text/plain": [ + "-2" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "matrise.T # Transponer matrisen\n", + "matrise.rref() # Radreduser\n", + "matrise.eigenvals() # Egenverdier\n", + "matrise.eigenvects() # Egenvektorer\n", + "matrise.diagonalize() # Diagonalisering\n", + "matrise.det() # Determinanten" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Du kan også bruke numpy-biblioteket til lineær algebra:" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "m1 = np.array([[1,2],[3,4]])\n", + "m2 = np.array([[3,3],[5,5]])\n", + "egenverdi = np.linalg.eig(m1) # Egenverdier og egenvektorer\n", + "norm = np.linalg.norm(m1)\n", + "determinant = np.linalg.det(m1)\n", + "invers = np.linalg.inv(m1)\n", + "likning = np.linalg.solve(m1, m2)\n", + "likning2 = np.linalg.tensorsolve(m1, m2[:,0]) # Løser ax = b for x" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Taylor-rekker**" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle 1 + x + \\frac{x^{2}}{2} + \\frac{x^{3}}{6} + \\frac{x^{4}}{24} + O\\left(x^{5}\\right)$" + ], + "text/plain": [ + "1 + x + x**2/2 + x**3/6 + x**4/24 + O(x**5)" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "funksjon = exp(x)\n", + "funksjon.series(x, 0, 5)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle 1 + \\frac{x^{2}}{2} + \\frac{5 x^{4}}{24} + \\frac{61 x^{6}}{720} + \\frac{277 x^{8}}{8064} + O\\left(x^{10}\\right)$" + ], + "text/plain": [ + "1 + x**2/2 + 5*x**4/24 + 61*x**6/720 + 277*x**8/8064 + O(x**10)" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "f = 1/cos(x)\n", + "f.series(x, 0, 10)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.12" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/tema5_modellering/differensiallikninger.ipynb b/_sources/docs/tema5_modellering/differensiallikninger.ipynb new file mode 100644 index 00000000..ddfd33a6 --- /dev/null +++ b/_sources/docs/tema5_modellering/differensiallikninger.ipynb @@ -0,0 +1,989 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Differensiallikninger og kontinuerlige modeller\n", + "\n", + "```{admonition} Læringsutbytte\n", + "Etter å ha arbeidet med dette temaet, skal du kunne:\n", + "1. Forklare hva som menes med differensiallikninger, og hvordan slike likninger kan brukes til å modellere ulike systemer.\n", + "2. Forklare og implementere Eulers metode (Forward Euler).\n", + "3. Løse ordinære differensiallikninger med egne Python-funksjoner og funksjoner fra Scipy-biblioteket.\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Differensiallikninger\n", + "\n", + "Vi har tidligere sett på modeller som beskriver endringer ved bestemte tidssteg, for eksempel den enkleste modellen for utviklingen i antall smittede ved et influensautbrudd:\n", + "\n", + "$$I_{n+1}=I_n+aI_n$$\n", + "\n", + "Vi kan beskrive modellen ovenfor med ord slik: Antall smittede ved neste tidspunkt er lik antall smittede ved forrige tidspunkt pluss en endring i antall smittede. Endringen er her gitt ved en vekstfaktor ganger antall smittede ved forrige tidspunkt. Det betyr at endringen er proporsjonal med antall smittede. Dette er et eksempel på en _differenslikning_, der vi finner en tallfølge, som for eksempel beskriver antall smittede i en populasjon eller antall gauper i et økosystem. Differenslikninger kan brukes der vi kan nøye oss med å beskrive systemet vårt på _diskrete_, altså bestemte, tider. Men hva hvis vi ønsker å beskrive systemet på ethvert tidspunkt, altså den _momentane endringen_? Da må vi bruke den deriverte. La oss første skrive differenslikningen på en annen form:\n", + "\n", + "$$I_{n+1} - I_n = aI_n$$\n", + "\n", + "$$\\Delta I = aI_n$$\n", + "\n", + "Nå har vi et uttrykk for endringen i systemet. Delta ($\\Delta$) betyr her endring eller forskjell. Dersom denne endringen skjer mellom to tidspunkter som er så nær hverandre som mulig ($\\Delta t$ nærmer seg null), får vi den momentane endringen. Dette skriver vi slik:\n", + "\n", + "$$I'(t) = aI(t)$$\n", + "\n", + "Dette er ikke lenger en differenslikning, for her beskriver vi systemet med en kontinuerlig funksjon, og ikke funksjonsverdier på bestemte tidspunkter. Vi kaller slike likninger for _differensiallikninger_. En differensiallikning (også kalt _difflikning_) er en likning som inneholder den deriverte av en funksjon. Det vil si at differensiallikninger beskriver den momentane endringen i et system, altså endringen på ethvert tidspunkt. Når vi løser en differensiallikning, får vi en funksjon, eller funksjonsverdiene til en funksjon.\n", + "\n", + "Differensiallikninger er svært anvendelige. De brukes til å beskrive endring i alt fra molekyler i en kjemisk reaksjon til bakterier i en petriskål eller bevegelsen til satelitter og planeter. De brukes også til å modellere overføring av informasjon i hjernen, smitteutvikling, økonomisk vekst, inntekt og investeringer, klima, miljø og vær. De fleste difflikninger er ikke løsbare for hånd. Derfor er det svært nyttig å kunne løse dem numerisk.\n", + "\n", + "```{admonition} Differensiallikninger\n", + "En differensiallikning er en likning som inneholder den deriverte av en funksjon. I de fleste praktiske situasjoner beskriver slike likninger sammenhengen mellom endringen, $f'(t)$, og tilstanden, $f(t)$, til et system ved tida $t$.\n", + "```\n", + "Det vil altså si at en difflikning er en sammenheng mellom den deriverte til en funksjon, altså endringen i funksjonen, og funksjonen selv. Når vi løser en difflikning, får vi ikke et uttrykk for $x$, som når vi løser likninger – vi får et uttrykk for $f(x)$. Siden vi som oftest løser difflikninger på datamaskinen, får vi heller ikke et _uttrykk_ for $f(x)$, men vi får funksjons_verdier_.\n", + "\n", + "Siden både endringen og tilstanden i et system er avhengig av hvordan systemet er til å begynne med, trenger vi alltid _initialbetingelser_ (startbetingelser) for å løse difflikninger. For eksempel trenger vi antall smittede ved t = 0 for å kunne regne ut antall smittede ved neste tidssteg. Vi må derfor alltid oppgi initialbetingelser når vi skal simulere et system.\n", + "\n", + "### Eksempler på differensiallikninger\n", + "\n", + "Dersom du møter på differensiallikninger i matematikk, er de ofte satt opp som enkle uttrykk, for eksempel slik:\n", + "\n", + "1. $y' = 1$\n", + "2. $y' = y$\n", + "3. $y' - 2x = -1$\n", + "\n", + "Dersom likningene betyr noe praktisk, pleier vi å skrive dem litt annerledes. Her er eksempler på differensiallikninger som kan brukes til å beskrive ulike systemer:\n", + "\n", + "1. Bakterievekst: $B'(t) = kB(t)$\n", + "2. CO$_2$-utslipp: $U'(t) = aU(t)\\left(1 - \\frac{U(t)}{b}\\right)$\n", + "3. Fallende ball: $v'(t) = -g - \\frac{kv(t)^2}{m}$\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Studer differensiallikningene ovenfor og forklar med ord hva de beskriver (både overordnet og hvert ledd for seg).\n", + "```\n", + "\n", + "Legg merke til at modellene ikke kan bevises eller utledes. Det er matematiske modeller som vi kan ha en hypotese om at stemmer godt med virkeligheten. Hvis vi for eksempel tror at veksten til bakteriene vil flate ut, justerer vi dette ved å legge til et ledd som gir logistisk vekst. Modellene må så etterprøves ved for eksempel å sammenlikne med reelle data. Modellering er derfor en prosess der vi kontinuerlig sammenlikner modell med virkelighet for å forbedre modellen.\n", + "\n", + "### Newtons 2. lov\n", + "\n", + "Et annet viktig eksempel på en differensiallikning er Newtons 2. lov. Newtons 2. lov er grunnlaget for simuleringer av alt fra satellitt- og planetbaner til molekyler, som vi snart skal se eksempler på. Loven sier at summen ($\\Sigma$) av krefter som virker på et legeme er lik produktet av massen og akselerasjonen til legemet:\n", + "\n", + "$$\\sum F = ma$$\n", + "\n", + "$$a = \\frac{\\sum F}{m}$$\n", + "\n", + "Dersom vi har en modell som beskriver kreftene som virker på et legeme, kan vi derfor regne ut akselerasjonen. Og siden $a(t) = v'(t) = s''(t)$, kan vi formulere Newtons 2. lov som en differensiallikning. Da kan vi løse denne likningen og finne farten og posisjonen til et legeme på en hvilken som helst tid, gitt en startposisjon og en startfart (initialverdier).\n", + "\n", + "$$v'(t) = \\frac{\\sum F}{m}$$\n", + "\n", + "Vi kan til og med formulere dette som en difflikning som inneholder den andrederiverte. Dette kaller vi en _andreordens_ difflikning:\n", + "\n", + "$$s''(t) = \\frac{\\sum F}{m}$$\n", + "\n", + "La oss modellere et enkelt system, for eksempel en fallende kule. I modellen vår ønsker vi å ta hensyn til både gravitasjon og luftmotstand. Da er $\\sum F = - G + L$, dersom vi velger positiv retning oppover. Vi skriver også akselerasjonen som en funksjon, siden den varierer med tida. Da får vi at:\n", + "\n", + "$\\sum F = ma(t)$\n", + "\n", + "$a(t) = \\frac{\\sum F}{m}$\n", + "\n", + "$a(t) = - \\frac{G}{m} + \\frac{L}{m}$\n", + "\n", + "Deretter må vi sette inn modeller for gravitasjonskraften og luftmotstanden. Gravitasjonen på jorda kan enkelt beskrives med modellen $G = mg$, der $m$ er massen i kg og $g \\approx 9.8$ m/s$^2$, som er tyngdeakselerasjonen. En enkel modell for luftmotstand er $L = -kv$, der _k_ er en konstant som varierer med legemets form og massetetthet, og $v$ er farten til legemet. Konstanten $k$ må bestemmes eksperimentelt.\n", + "\n", + "$a(t) = \\frac{mg}{m} - \\frac{kv(t)}{m}$\n", + "\n", + "$v'(t) = g - \\frac{kv(t)}{m}$\n", + "\n", + "Her ser vi at den siste likningen inneholder den deriverte av farten (altså akselerasjonen). Altså er dette en differensiallikning. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Eulers metode\n", + "Vi har altså en startverdi $f(x_0)$ og ønsker å finne $f(x_0 + dx)$, altså neste funksjonsverdi. I tillegg har vi et uttrykk for den deriverte av funksjonen, nemlig differensiallikningen. Du kjenner faktisk allerede til et uttrykk som inneholder en funksjon og dens deriverte, nemlig definisjonen av den deriverte. La oss bruke den til å utlede en metode for å finne $f(x + dx)$. Vi bruker den numeriske definisjonen der vi tilnærmer grenseverdiene med en _dx_ ($\\Delta x$) som er så liten som mulig:\n", + "\n", + "$$f'(x) \\approx \\frac{f(x+dx) - f(x)}{dx}$$\n", + "\n", + "Til å begynne med kjenner vi $f(x)$, altså $f(x_0)$. Dette er initialbetingelsen, for eksempel startkonsentrasjonen $c(t_0)$ i eksempelet ovenfor. Vi kjenner også et uttrykk for den deriverte, nemlig differensiallikningen. I tillegg bestemmer vi selv tidssteget _dx_, men husk at det verken bør være for lite eller for stort. Den eneste ukjente i den numeriske tilnærmingen til den deriverte er altså $f(x+dx)$. Det er jo nettopp $f(x+dx)$ vi prøver å finne, fordi det beskriver tilstanden til systemet ved neste tidssteg. Med litt enkel algebra får vi omformet uttrykket slik at det blir et uttrykk for $f(x+dx)$. Vi ganger først med $dx$ på begge sider:\n", + "\n", + "$$f'(x)\\cdot dx \\approx f(x+dx) - f(x)$$\n", + "\n", + "Deretter får vi $f(x+dx)$ aleine på høyre side og ender opp med følgende likning:\n", + "\n", + "$$f(x+dx) \\approx f(x) + f'(x)\\cdot dx$$\n", + "\n", + "Dette er _Eulers metode_, eller nærmere bestemt _Forward Euler_. Metoden kalles dette fordi den tar utgangspunkt i framoverdifferansen til den deriverte. Den brukes til å løse differensiallikninger, det vil si å _integrere_ den deriverte slik at vi finner funksjonsverdiene. Siden vi ofte har å gjøre med funksjoner som varierer med tid, kaller vi gjerne _dx_ for _dt_.\n", + "\n", + "Eulers metode er en iterativ algoritme. Vi starter derfor med $f(x_0)$ og finner de påfølgende funksjonsverdiene slik:\n", + "\n", + "$$f(x_1) \\approx f(x_0) + f'(x_0)\\cdot \\Delta x$$\n", + "$$f(x_2) \\approx f(x_1) + f'(x_1)\\cdot \\Delta x$$\n", + "$$f(x_3) \\approx f(x_2) + f'(x_2)\\cdot \\Delta x$$\n", + "$$...$$\n", + "\n", + "```{admonition} Eulers metode (Forward Euler)\n", + "Vi kan finne funksjonsverdiene $f(t_{k+1})$ ved å bruke funksjonsverdien $f(t_k)$ og den deriverte av funksjonen ved tida $t_k$, $f'(t_k)$ sammen med en steglengde $dt$ som representerer en liten $\\Delta t$.\n", + "\n", + "$$f(t_{k+1}) = f(t_k) + f'(t_k)\\cdot dt$$\n", + "```\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Implementering\n", + "Vi starter med et enkelt eksempel der vi løser difflikningen $f'(x) = x$ (som er det samme som $y' = x$). Vi gjør det først med en while-løkke der vi appender til lister for å spare på og til slutt plotte verdiene. Stort sett er det sammme framgangsmåte hver gang vi løser en difflikning:\n", + "\n", + "1. Definer initialbetingelser (for eksempel $y_0$).\n", + "2. Definer hvilke verdier vi skal evaluere funksjonen i, altså et intervall $[x_0, x_{slutt}]$. Husk at vi bare kan derivere og integrere numerisk i bestemte _punkter_. Vi får altså ikke funksjoner når vi integrerer en differensiallikning – vi får funksjonsverdier.\n", + "3. Definer en steglengde. Denne bør være \"ganske\" liten, som da vi så på numerisk derivasjon. Som regel er $dx = 1\\cdot 10^{-8}$ en god verdi, men du kan gjerne kjøre med for eksempel $dx = 1\\cdot 10^{-3}$, slik at det ikke skal ta så lang tid å kjøre programmet.\n", + "4. Lag lister eller arrayer og legg initialbetingelser og startverdier inn i disse. Disse trenger vi for å kunne plotte resultatene til slutt. Dersom du bare er interessert i slutt-tilstanden, trenger du ikke dette trinnet.\n", + "5. Lag ei løkke som går igjennom hele det definerte intervallet:\n", + " - Regn ut neste verdi av endringen $f'(x)$, gitt av differensiallikninga vår.\n", + " - Løs difflikninga med Eulers metode (eller en annen metode, når du lærer om det).\n", + " - Oppdater den uavhengige variabelen (_x_, _t_ eller liknende) med tidssteget.\n", + "6. Skriv ut eller visualiser resultatene. " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "y0 = 1 # intitialbetingelse for y\n", + "x0 = 0 # startverdi for x\n", + "x_slutt = 5.0 # sluttverdi for x\n", + "dx = 1E-5 # steglengde\n", + "\n", + "x_liste = [x0] # Legger inn første x-verdi i en liste for å spare på verdiene\n", + "y_liste = [y0] # Legger inn initalbetingelsen for y i en liste for å spare på verdiene\n", + "\n", + "# Disse variablene skal oppdateres i løkka, mens x0 og y0 holdes konstante\n", + "x = x0 \n", + "y = y0\n", + "\n", + "while x < x_slutt:\n", + " yder = x # Difflikningen vi skal løse\n", + " y = y + yder*dx # Eulers metode for å finne neste y-verdi\n", + " x = x + dx # Oppdaterer x-verdien med steglengden\n", + " x_liste.append(x)\n", + " y_liste.append(y)\n", + "\n", + "plt.plot(x_liste,y_liste)\n", + "plt.xlabel(\"x\")\n", + "plt.ylabel(\"y\")\n", + "plt.grid()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For å rydde opp litt i programmet vårt, kunne vi også definert difflikninga som en funksjon. Dette gjør det litt enklere å finne igjen og endre likningen." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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OTk5WrFihdlRglbPnj31zjvvqEWLFjpw4ICefvpp9e7dW2vXrlVCQoLP81BmztH/rsBtGIbHV+UGfGn06NH66aef9P3335sdJWi1bNlSubm5Onr0qGbPnq0RI0Zo4cKFFBoP2rVrlx544AHNnz9fkZGRZscJWgMHDqz+dfv27dWrVy81bdpU06dP19ixY32ehzJTQ4mJibJarScdhcnPzz/paA0QKO677z7NmzdPixYt8voq86EsIiJCzZo1kyR169ZNK1as0EsvvaQ33njD5GTBIzs7W/n5+eratWv1NpfLpUWLFmnKlClyOByyWq0mJgxOMTExat++vTZv3mzK9+eamRqKiIhQ165dlZmZecL2zMxM9e7d26RUwLkxDEOjR4/Wxx9/rG+//VYZGRlmRwophmHI4XCYHSOoXHrppVq9erVyc3OrP7p166ZbbrlFubm5FBkvcTgcWr9+verXr2/K9+fIzDkYO3ashg8frm7duqlXr16aOnWqdu7cqbvvvtvsaEGlpKREW7ZsqX6cl5en3NxcxcfHq2HDhiYmCx6jRo3SzJkz9cknnyg2Nrb6iGPt2rUVFRVlcrrg8thjj2ngwIFKT09XcXGxZs2apQULFujLL780O1pQiY2NPemar5iYGCUkJHAtmAc99NBDGjx4sBo2bKj8/Hw9/fTTKioq0ogRI0zJQ5k5BzfddJMOHTqkp556Svv27VO7du30+eefq1GjRmZHCypZWVnq27dv9ePj52FHjBiht99+26RUweX47QX69OlzwvZp06Zp5MiRvg8UxA4cOKDhw4dr3759ql27tjp06KAvv/xS/fv3NzsaUGO7d+/W0KFDVVBQoHr16uk3v/mNli5datrPQe4zAwAAAhrXzAAAgIBGmQEAAAGNMgMAAAIaZQYAAAQ0ygwAAAholBkAABDQKDMAACCgUWYAAEBAo8wAAICARpkBAAABjTIDAAACGmUGQEA5ePCgUlJSNGHChOpty5YtU0REhObPn29iMgBmYaFJAAHn888/15AhQ7RkyRK1atVKnTt31qBBgzR58mSzowEwAWUGQEAaNWqUvv76a3Xv3l2rVq3SihUrFBkZaXYsACagzAAISMeOHVO7du20a9cuZWVlqUOHDmZHAmASrpkBEJC2bdumvXv3yu12a8eOHWbHAWAijswACDgVFRXq0aOHOnXqpFatWmnSpElavXq1kpOTzY4GwASUGQAB5+GHH9ZHH32kVatWqVatWurbt69iY2P12WefmR0NgAk4zQQgoCxYsECTJ0/WjBkzFBcXp7CwMM2YMUPff/+9XnvtNbPjATABR2YAAEBA48gMAAAIaJQZAAAQ0CgzAAAgoFFmAABAQKPMAACAgEaZAQAAAY0yAwAAAhplBgAABDTKDAAACGiUGQAAENAoMwAAIKBRZgAAQED7f72vReK/b/O3AAAAAElFTkSuQmCC\n", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "\n", + "y0 = 1 # intitialbetingelse for y\n", + "x0 = 0 # startverdi for x\n", + "x_slutt = 5.0 # sluttverdi for x\n", + "dx = 1E-5 # steglengde\n", + "\n", + "x_liste = [x0] # Legger inn første x-verdi i en liste for å spare på verdiene\n", + "y_liste = [y0] # Legger inn initalbetingelsen for y i en liste for å spare på verdiene\n", + "\n", + "# Disse variablene skal oppdateres i løkka, mens x0 og y0 holdes konstante\n", + "x = x0 \n", + "y = y0\n", + "\n", + "# Definerer difflikningen som en funksjon\n", + "def fder(x):\n", + " return x\n", + "\n", + "while x < x_slutt:\n", + " yder = fder(x) # Difflikningen vi skal løse\n", + " y = y + yder*dx # Eulers metode for å finne neste y-verdi\n", + " x = x + dx # Oppdaterer x-verdien med steglengden\n", + " x_liste.append(x)\n", + " y_liste.append(y)\n", + "\n", + "plt.plot(x_liste,y_liste)\n", + "plt.xlabel(\"x\")\n", + "plt.ylabel(\"y\")\n", + "plt.grid()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Modifiser programmet ovenfor slik at du løser difflikningen $f'(x) = \\frac{1}{y+1} - lg(x+2)$. Bruk samme initialbetingelse og løsningsintervall.\n", + "```\n", + "\n", + "````{admonition} Løsningsforslag\n", + ":class: tip, dropdown\n", + "\n", + "Her er det bare å endre funksjonen slik at den representerer den nye difflikninga. Husk å importere tierlogaritmen.\n", + "\n", + "```{code-block} Python\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "\n", + "y0 = 1 # intitialbetingelse for y\n", + "x0 = 0 # startverdi for x\n", + "x_slutt = 5.0 # sluttverdi for x\n", + "dx = 1E-5 # steglengde\n", + "\n", + "x_liste = [x0] # Legger inn første x-verdi i en liste for å spare på verdiene\n", + "y_liste = [y0] # Legger inn initalbetingelsen for y i en liste for å spare på verdiene\n", + "\n", + "# Disse variablene skal oppdateres i løkka, mens x0 og y0 holdes konstante\n", + "x = x0 \n", + "y = y0\n", + "\n", + "# Definerer difflikningen som en funksjon\n", + "def fder(x):\n", + " return 1/(y+1) - np.log10(x+2)\n", + "\n", + "while x < x_slutt:\n", + " yder = fder(x) # Difflikningen vi skal løse\n", + " y = y + yder*dx # Eulers metode for å finne neste y-verdi\n", + " x = x + dx # Oppdaterer x-verdien med steglengden\n", + " x_liste.append(x)\n", + " y_liste.append(y)\n", + "\n", + "plt.plot(x_liste,y_liste)\n", + "plt.xlabel(\"x\")\n", + "plt.ylabel(\"y\")\n", + "plt.grid()\n", + "plt.show()\n", + "```\n", + "````" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Vi kan også bruke arrayer istedenfor lister. Dette gir en raskere kode, og kan være en fordel i mange tilfeller. Da appender vi ikke til lister, men bruker indeksering. Vi bruker også gjerne en for-løkke, og da må vi vite hvor mange ganger løkka skal gå. Dette kan vi regne ut ved å ta differansen mellom $x_0$ og $x_{slutt}$, som vi dividerer på steglengden $dx$. Da får vi antall intervaller mellom $x_0$ og $x_{slutt}$ med avstand $dx$. For å finne antall punkter, må vi derfor ta antall intervaller og legge til 1: \n", + "\n", + "$N_{punkter} = \\frac{x_{slutt} - x_0}{dx} + 1$\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "\n", + "Forklar hvorfor antallet punkter _N_ kan regnes ut som ovenfor.\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "\n", + "# Plotteverdier\n", + "x0 = 0 # startverdi for x\n", + "x_slutt = 5.0 # sluttverdi for x\n", + "dx = 1E-5 # steglengde\n", + "N = int((x_slutt - x0)/dx) + 1 # antall punkter\n", + "\n", + "# Initialbetingelser\n", + "y0 = 1 # intitialbetingelse for y\n", + "\n", + "# Differensiallikningen\n", + "def yder(y,x):\n", + " return x\n", + "\n", + "# Lager arrayer for å spare på verdiene\n", + "x = np.zeros(N)\n", + "y = np.zeros(N)\n", + "y[0] = y0 # Legger inn initalbetingelsen for y\n", + "x[0] = x0\n", + "\n", + "# Eulers metode\n", + "for i in range(N-1):\n", + " y[i+1] = y[i] + yder(y[i],x[i])*dx\n", + " x[i+1] = x[i] + dx\n", + "\n", + "plt.plot(x,y)\n", + "plt.xlabel(\"x\")\n", + "plt.ylabel(\"y\")\n", + "plt.grid()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "\n", + "Forklar programmet ovenfor linje for linje. Modifiser også programmet slik at det løser difflikninga $f'(x) = 1$.\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Ulike initialbetingelser\n", + "Dersom vi endrer initialbetingelsene, får vi naturlig nok andre løsninger. Her har vi et program som regner ut og plotter ut " + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Plotteverdier\n", + "x0 = 0 # startverdi for x\n", + "x_slutt = 5.0 # sluttverdi for x\n", + "dx = 1E-3 # steglengde\n", + "N = int((x_slutt - x0)/dx) + 1 # antall punkter\n", + "\n", + "# Initialbetingelser\n", + "y0 = 1 # intitialbetingelse for y\n", + "\n", + "# Differensiallikningen y' = 1\n", + "def yder(y,x):\n", + " return 1 \n", + "\n", + "# Lager arrayer for å spare på verdiene\n", + "x = np.zeros(N)\n", + "y = np.zeros(N)\n", + "x[0] = x0\n", + "\n", + "y_liste = [0, 1, 2, 3]\n", + "for y0 in y_liste:\n", + " y[0] = y0 \n", + " for i in range(N-1):\n", + " y[i+1] = y[i] + yder(y[i],x[i])*dx\n", + " x[i+1] = x[i] + dx\n", + " plt.plot(x,y,label=f\"y0={y0}\")\n", + "plt.grid()\n", + "plt.legend()\n", + "plt.xlabel(\"x\")\n", + "plt.ylabel(\"y\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Det er enkelt å se at funksjonene vi får ovenfor er $y = x + C$, der $C$ avhenger av initialbetingelsene. Vi får derimot ikke selve funksjonsuttrykket som output, men vi får, som nevnt før, _funksjonsverdiene_. Vi kan også løse likningen $y' = y + x$ på samme måte. Den analytiske løsningen for denne likningen er $y = Ce^x - x - 1$. Resultatene blir da slik for de samme initialbetingelsene som ovenfor:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "def yder(y,x):\n", + " return y + x\n", + "\n", + "y_liste = [0, 1, 2, 3]\n", + "for y0 in y_liste:\n", + " y[0] = y0 \n", + " for i in range(N-1):\n", + " y[i+1] = y[i] + yder(y[i],x[i])*dx\n", + " x[i+1] = x[i] + dx\n", + " plt.plot(x,y,label=f\"y0={y0}\")\n", + "plt.grid()\n", + "plt.legend()\n", + "plt.xlabel(\"x\")\n", + "plt.ylabel(\"y\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Løs differensiallikninga $y' + y^3 = \\sin(x)$ med Eulers metode fra $x = 0$ til $x = 10$. Bruk initialbetingelsen $y(0) = 0$. Vær nøye med hvordan du definerer funksjonen.\n", + "```\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Kontinuerlige modeller\n", + "\n", + "Modeller som er basert på differensiallikninger, er kontinuerlige. Det betyr at de har funksjonsverdier for alle verdier av _x_ (eller tilsvarende variabler). Nå skal det sies at når vi simulerer med utgangspunkt i kontinuerlige matematiske modeller på en datamaskin, blir resultatene ikke helt kontinuerlig. Det er fordi datamaskinen ikke kan operere med uendelig mange eller uendelig små (eller store) verdier. Vi sier at vi _diskretiserer_ problemet når vi benytter en numerisk algoritme for å løse det. Men dersom stegene er tilstrekkelig små, er det en god _tilnærming_ til en kontinuerlig løsning.\n", + "\n", + "Vi har allerede sett på diskrete modeller for blant annet CO$_2$-utslipp. Da tok vi utgangspunkt i følgende diskrete modell:\n", + "\n", + "$$u_{n+1} = u_n + au_n$$\n", + "\n", + "som er det samme som:\n", + "\n", + "$$u_{n+1} - u_n = au_n$$\n", + "\n", + "Vi ser at vi på venstresiden har forskjellen i utslipp fra en tid til en annen. Det kan vi skrive som $\\Delta u$, som jo er et uttrykk for (gjennomsnittlig) endring. Da får vi:\n", + "\n", + "$$\\Delta u = au_n$$\n", + "\n", + "Dersom vi ønsker den _momentane_ endringen istedenfor den gjennomsnittlige, kan vi uttrykke dette ved den deriverte:\n", + "\n", + "$$u'(t) = au(t)$$\n", + "\n", + "Dermed har vi en kontinuerlig modell som beskriver den momentane endringen i et system! Vi kan da bruke denne modellen til å finne tilstanden til systemet ved ethvert lite tidssteg _dt_. Da kan vi bruke Eulers metode, som ovenfor. Her er et eksempel på hvordan vi kan løse modellen ovenfor:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt \n", + "\n", + "tid_slutt = 2100 # År etter 1825\n", + "tid = 1825 # Startår\n", + "a = 0.045 # Utslippsrate\n", + "u = 0.01 # Utslipp i 1825 (tonn per innbygger)\n", + "dt = 1E-5\n", + "\n", + "utslipp = [u]\n", + "årstall = [tid]\n", + "\n", + "while tid <= tid_slutt:\n", + " uder = a*u # Differensiallikningen\n", + " u = u + uder*dt # Eulers metode\n", + " tid = tid + dt # Går fram ett tidssteg\n", + " utslipp.append(u)\n", + " årstall.append(tid)\n", + "\n", + "plt.plot(årstall, utslipp)\n", + "plt.title(\"Utslipp av CO$_2$ i Norge\")\n", + "plt.xlabel(\"År\")\n", + "plt.ylabel(\"Tonn CO$_2$ per innbygger\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Hvis vi sammenlikner med den diskrete modellen for det samme systemet, kan vi se at de to modellene ikke gir det samme resultatet. Dette er fordi utslippsraten _a_ ikke har samme enhet. I det diskrete systemet representerte _a_ vekstraten _per uke_, mens i den kontinuerlige modellen gir _a_ den momentane vekstraten. De to parameterne må derfor bestemmes uavhengig av hverandre.\n", + "\n", + "````{admonition} Underveisoppgave\n", + ":class: tip\n", + "Følgende modell kan beskrive størrelsen til en populasjon med bæreevnen _b_, vekstrate _a_ og populasjonsstørrelse _N_:\n", + "\n", + "$$N'(t) = aN(t)\\left(1-\\frac{N(t)}{b}\\right)$$\n", + "\n", + "Tida _t_ er gitt i timer.\n", + "\n", + "1. Lag et program som simulerer utviklingen i en bakteriekoloni med N(t$_0$) = 100, _a_ = 0,005 og en bæreevne på 120 000 bakterier. \n", + "2. Hvilke forutsetninger og begrensninger ligger til grunn for modellen? \n", + "3. Når vil populasjonen nå bæreevnen?\n", + "4. Lag programmet med arrayer istedenfor lister. Husk at _append_ ikke fungerer med arrayer, og at vi må forhåndsdefinere størrelsen til disse arrayene på forhånd. Størrelsen på disse bør være gitt ved (forklar hvorfor!):\n", + "\n", + "```{code-block}\n", + "N = int((tid_slutt-tid_start)/dt) + 1 # Antall punkter\n", + "```\n", + "````\n", + "\n", + "````{admonition} Løsningsforslag (deloppgave 4)\n", + ":class: tip, dropdown\n", + "```{code-block} Python\n", + "import matplotlib.pyplot as plt \n", + "import numpy as np\n", + "\n", + "a = 0.045 # Utslippsrate\n", + "u0 = 0.01 # Utslipp i 1825 (tonn per innbygger)\n", + "\n", + "tid_slutt = 2100 # År etter 1825\n", + "tid_start = 1825 # Startår\n", + "dt = 1E-3 # tidssteg\n", + "N = int((tid_slutt-tid_start)/dt) + 1 # Antall punkter\n", + "\n", + "u = np.zeros(N)\n", + "t = np.zeros(N)\n", + "\n", + "u[0] = u0\n", + "t[0] = tid_start\n", + "\n", + "for i in range(N-1):\n", + " uder = a*u[i] # Differensiallikningen\n", + " u[i+1] = u[i] + uder*dt # Eulers metode\n", + " t[i+1] = t[i] + dt # Går fram ett tidssteg\n", + "\n", + "plt.plot(t, u)\n", + "plt.title(\"Utslipp av CO$_2$ i Norge\")\n", + "plt.xlabel(\"År\")\n", + "plt.ylabel(\"Tonn CO$_2$ per innbygger\")\n", + "plt.show()\n", + "```\n", + "````" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Newtons 2. lov\n", + "\n", + "Vi så at Newtons 2. lov gir oss differensiallikninger når vi omformulerer akselerasjonen som den deriverte av farten.\n", + "\n", + "$$a(t) = v'(t) = s''(t)$$\n", + "\n", + "Vi kan altså få både en førsteordens og en andreordens difflikning ut av Newtons 2. lov. Det betyr også at vi kan finne akselerasjon og fart ut fra strekning ved å derivere, og motsatt finne fart og posisjon fra akselerasjon ved å integrere (løse difflikningen). Vi kan med andre ord skrive Newtons 2. lov slik:\n", + "\n", + "$$\\sum F = ma(t) = mv'(t) = ms''(t)$$\n", + "\n", + "La oss løse Newtons 2. lov for det enkle systemet vi så på tidligere: Når vi slipper ei kule fra en viss høyde, kan vi regne med at to krefter virker på kula, nemlig tyngdekraften og luftmotstand. For en lett ball som faller, kan vi si at summen av krefter er summen av gravitasjonskraften og luftmotstanden i $y$-retning på en graf. Vi definerer positiv retning oppover $y$-aksen.\n", + "\n", + "$$\\sum F = - G + L = ma(t) = mv'(t) = ms''(t)$$\n", + "\n", + "Vi ser at vi nå har den deriverte av hastigheten, som er akselerasjonen. For å kunne løse denne likningen, må vi finne ut hva summen av kreftene er. Du husker kanskje at $G = mg$, og at en mulig modell for luftmotstand er $L = -kv$, der $k$ er en konstant som blant annet er avhengig av legemets form. Da kan vi skrive uttrykket slik:\n", + "\n", + "$$ma(t) = - mg + (- kv(t))$$\n", + "\n", + "$$a(t) = \\frac{- mg - kv(t)}{m} = - g - \\frac{kv(t)}{m}$$\n", + "\n", + "Dette er en førsteordens difflikning der vi har en funksjon $v(t)$, og dens deriverte $a(t)$ (det vil si $v'(t)$). La oss løse denne numerisk:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "\n", + "# Konstanter\n", + "k = 0.1 # Luftmotstand\n", + "g = 9.81 # Tyngdeakselerasjon i m/s^2\n", + "m = 1 # Masse i kg\n", + "v0 = 0 # Starthastighet i m/s\n", + "s0 = 0 # Startposisjon i m\n", + "\n", + "# Tidsvariabler\n", + "dt = 1E-5 # Tidsintervall i s\n", + "tid_start = 0\n", + "tid_slutt = 10\n", + "N = int((tid_slutt-tid_start)/dt) + 1 # Antall punkter\n", + "\n", + "# Arrayer\n", + "t = np.zeros(N)\n", + "a = np.zeros(N)\n", + "v = np.zeros(N)\n", + "s = np.zeros(N)\n", + "\n", + "# Startverdier\n", + "t[0] = tid_start\n", + "v[0] = v0\n", + "s[0] = s0\n", + "\n", + "for i in range(N-1):\n", + " a[i] = - g - k*v[i]/m\n", + " v[i+1] = v[i] + a[i]*dt\n", + " s[i+1] = s[i] + v[i]*dt + 0.5*a[i]*dt**2\n", + " t[i+1] = t[i] + dt\n", + "\n", + "plt.plot(t,s)\n", + "plt.title('Fallende kule')\n", + "plt.xlabel('Tid (s)')\n", + "plt.ylabel('strekning (m)')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Studer programmet ovenfor og forklar hvordan det fungerer linje for linje. Test programmet med andre modeller for luftmotstand. Vurder de ulike modellene opp mot hverandre.\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## ODE-løsere\n", + "La oss se nå se på hvordan vi kan løse differensiallikninger med funksjoner fra scipy-biblioteket. De differensiallikningene vi har sett på, kaller vi for _ODE-er_ (ordinary differential equations) for å skille dem fra _PDE-er_ (partial differential equations). Vi skal ikke se på partielle differensiallikninger her, men mange av prinsippene for å løse dem er like som for ODE-er. Vi kommer til å bruke ODE som forkortelse videre.\n", + "\n", + "Vi starter med enkle differensiallikninger for å illustrere de grunnleggende prinsippene. En enkel differensiallikning vi kan begynne med, er:\n", + "\n", + "$$y' = t - y$$\n", + "\n", + "Denne kan vi ganske enkelt definere som en funksjon og løse med en annen funksjon som heter _solve\\_ivp_ (\"solve initial value problem\")." + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from scipy.integrate import solve_ivp\n", + "\n", + "def dy_dt(t, y):\n", + " return t - y\n", + "\n", + "a = 0\n", + "b = 4\n", + "t = np.linspace(a,b,1000)\n", + "y0 = 1\n", + "y_int = solve_ivp(dy_dt, [a,b], [1], t_eval=t)\n", + "\n", + "plt.xlabel(\"t\")\n", + "plt.ylabel(\"y\")\n", + "plt.plot(y_int.t, y_int.y[0])\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Vi definerer her et sett med t-verdier slik at vi får et intervall å integrere over. Dernest er det viktig å ha en startbetingelse for $y$ (husk: vi trenger den forrige $y$-verdien for å finne den neste). Funksjonen _solve\\_ivp_ er en generell løser for differensiallikninger og tar som første parameter en funksjon av typen $f(t,y)$ – legg merke til rekkefølgen på parameterne. Deretter legger vi inn tidsintervallet som vi skal integrere over. Dette legges inn som en liste.\n", + "\n", + "Etter tidsintervallet legges startbetingelsene inn. Siden _solve\\_ivp_ er en løser som kan løse systemer av differensiallikninger, må vi lage startbetingelsen som en liste. Deretter har vi en del valgfrie parametre. Vi har brukt parameteren _t\\_eval_ her fordi den sier hvilke $t$-verdier vi skal regne ut $y$-verdier for. Hvis vi ikke gjør dette, får vi integralet kun evaluert i noen få punkter. Det kan være greit hvis vi for eksempel bare ønsker sluttverdien, men ikke hvis vi ønsker å plotte resultatene.\n", + "\n", + "Dersom du prøver å printe ut resultatene fra _solve\\_ivp_, får du mye ulik informasjon. Derfor henter vi ut spesifikke _t-_ og _y-_verdier ved å skrive _y_int2.t_, som henter ut tidsverdiene, og _y_int2.y[0]_, som henter ut _y_-verdiene. Legg merke til at $y$ kan inneholde flere elementer ettersom vi kan løse systemer av differensiallikninger. Her må vi eksplisitt be om det første elementet (element 0 med Python-språk), selv om arrayen ikke inneholder flere $y$-verdier.\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Løs differensiallikningen $f'(t) = \\cos(t)$ med $f(t_0) = 0$ med _solve\\_ivp_ fra $t=0$ til $t=\\pi$. Plott den analytiske løsningen $f(t) = \\sin(t)$ i samme koordinatsystem for å sammenlikne.\n", + "```\n", + "\n", + "Algoritmene som brukes i slike biblioteker, er ofte sammensatte algoritmer som benytter seg av flere prinsipper enn en enkelt metode. Som standard benytter _solve\\_ivp_ seg av en blanding av Runge-Kutta 4 og Runge-Kutta 5, kalt RK45. Dette er gode \"go to\"-metoder." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Oppgaver\n", + "\n", + "```{admonition} Oppgave 1\n", + ":class: tip\n", + "Utled Eulers metode og skriv et program for hånd som implementerer denne metoden.\n", + "```\n", + "\n", + "```{admonition} Oppgave 2\n", + ":class: tip\n", + "Løs differensiallikningene nedenfor med Eulers metode (og analytisk hvis du får til). Bruk initialbetingelse $f(0) = 0$, og velg løsningsområde/løsningsintervall selv.\n", + "1. $f'(x) = 1$\n", + "2. $f'(x) = x$\n", + "3. $f'(x) = 4 + 3\\cdot f(x)$\n", + "4. $y' + 4y + 3x = 0$\n", + "5. $xy' + y = 3x^2 + 4x$\n", + "6. $f'(x) = x + y^2$\n", + "```\n", + "\n", + "```{admonition} Oppgave 3\n", + ":class: tip\n", + "Hvorfor må vi ha initialbetingelser for å løse en differensiallikning numerisk?\n", + "```\n", + "\n", + "````{admonition} Oppgave 4\n", + ":class: tip\n", + "Det er alltids fint å ha definert funksjoner i et program -- da kan du gjenbruke dem i andre programmer!\n", + "a. Skriv et program der Eulers metode er definert som en funksjon. Funksjonen skal ta inn som argument _yder_, som antas å være en funksjon av to variable $x$ og $y$. Funksjonen skal også ta inn en initialbetingelse _y0_, startverdien og sluttverdien til _x_ og steglengden _dt_. Funksjonene skal så returnere resultatene, altså lister eller arrayer med verdier av _y_ og _x_. __Tips:__ For at en funksjon skal returnere to verdier, kan du skrive _return x,y_.\n", + "\t\n", + "b. Bruk funksjonen til å løse likninga $y'(x) = -\\dfrac{xy}{x^2+1}$ der $y(0) = 1$ og $x \\in [0,7]$.\n", + "__Tips:__ Funksjonen returnerer to verdier:_y_ og _x_. Du kan hente to eller flere verdier fra en funksjon, ved å gjøre slik:\n", + "\n", + "```{code-block} Python\n", + "x, y = # Her kaller du på funksjonen din med riktige parametre\n", + "```\n", + "Da vil variabelen _x_ settes til å være lik den returnerte verdien for _x_, og variabelen _y_ settes til å være lik den returnerte verdien for _y_. \n", + "\t\n", + "c. Plott resultatet ditt sammen med den analytiske løsninga for å se om funksjonen din er implementert riktig:\n", + "\n", + "$$y(x) = \\frac{1}{\\sqrt{x^2 + 1}}$$\n", + "````\n", + "\n", + "````{admonition} Oppgave 5\n", + ":class: tip\n", + "Programmet under løser likninga $f'(x) = 2f(x)$ der $f(0) = 2$ for $x\\in[0,1]$:\n", + "\n", + "```{code-block} Python\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "\n", + "N = 1000\n", + "a = 0\n", + "b = 1\n", + "x = np.linspace(a,b,N)\n", + "dx = x[1]-x[0]\n", + "\n", + "fder = np.zeros(N)\n", + "f = np.zeros(N)\n", + "\n", + "f[0] = 2\n", + "for i in range(N-1):\n", + "\tfder[i] = 2*f[i]\n", + "\tf[i+1] = f[i] + dx*fder[i]\n", + "plot(x,f)\n", + "xlabel(\"x\")\n", + "ylabel(\"f(x)\")\n", + "title(\"Plott av f(x)\")\n", + "show()\n", + "```\n", + "````\n", + "\n", + "```{admonition} Oppgave 6\n", + ":class: tip\n", + "Kari begynner med å ha en årsinntekt på $I(0) = 500 000$ kroner og har nylig oppretta en sparekonto. Hun har derfor $S(0) = 0$ kroner i sparekontoen.\n", + "\n", + "Vi velger å prøve ut følgende modeller for forandringen i inntekten hennes $I'(t)$ og sparekontoen hennes $S'(t)$:\n", + "\n", + "$$I'(t) = I(0) \\cdot \\ln(1.006)\\cdot 1.006^t$$\n", + "$$S'(t) = 0.01\\cdot I(t)$$\n", + "\n", + "Lag et program som finner ut hvordan $S(t)$ vil utvikle seg i løpet av 15 år. Visualiser resultatet.\n", + "```\n", + "\n", + "```{admonition} Oppgave 7\n", + ":class: tip\n", + "Lag et program som regner ut posisjon, hastighet og akselerasjon til et legeme som faller. Bruk luftmotstandskoeffisienten 0.1 og masse 1 kg.\n", + "\n", + "a. Benytt først en enkel modell uten luftmotstand, det vil si kun fritt fall.\n", + "\n", + "b. Legg inn luftmotstand og plott i samme koordinatsystem som beregninga uten luftmotstand. Sammenlikn resultatene og kommenter svaret.\n", + "\n", + "c. Varier systematisk massen og luftmotstandskoeffisienten og se hva dette gjør med resultatene.\n", + "```\n", + "\n", + "```{admonition} Oppgave 8\n", + ":class: tip\n", + "Lag et program som modellerer en fiskepopulasjon. Du kan selv bestemme modellen du bruker og initialbetingelsene. Forklar hvorfor du brukte akkurat denne modellen.\n", + "```\n", + "\n", + "```{admonition} Oppgave 9\n", + ":class: tip\n", + "Newtons avkjølingslov forteller oss at temperaturen $T(t)$ etter ei tid $t$ til et objekt i en omgivelse forandrer seg på følgende måte:\n", + "\n", + "$$T(t) = -k(T(t) - T_o)$$\n", + "\n", + "der $k$ er er en konstant som forteller hvor raskt temperaturen forandrer seg og $T_o$ representerer temperaturen til omgivelsen objektet befinner seg i. \n", + "\n", + "a. Et varmeanlegg i en bil påvirker innetemperaturen $T(t)$ i bilen. Temperaturen inni bilen kan uttrykkes ved:\n", + "\n", + "$$T'(t) = -0.16(T(t) - 20)$$\n", + "\n", + "der $T(0) = 7^oC$. \n", + "\t\n", + "Lag et program som bruker Eulers metode til å finne funksjonsverdiene til $T(t)$ for $t \\in [0, 30]$. Plott resultatene.\n", + "\t\n", + "b. Som du kanskje så i deloppgave _a_, tar det fryktelig lang tid før temperaturen i bilen når vanlig romtemperatur som ligger på $20^oC$. Du finner derfor en som prøver å fikse på varmeanlegget billigst mulig. Uheldigvis greier personen å gjøre varmeanlegget verre. Etter noen målinger finner du at temperaturen forandrer seg på følgende måte:\n", + "\n", + "$$T'(t) = -0.16(T(t) - T_o(t))$$\n", + "\n", + "der $T_o(t) = 5\\cdot\\cos\\left(\\frac{\\pi^2}{15}\\cdot t\\right) + 19$\n", + "\n", + "Utvid programmet ditt slik at det plotter bilens temperatur med det (enda mer) ødelagte varmeanlegget. Sammenlikn utfallene.\n", + "```\n", + "\n", + "```{admonition} Oppgave 10\n", + ":class: tip\n", + "Arne skal på familiemiddag og har lovet familien sin å ta med sin smakfulle tilberedelse av en kalkun. Fem timer før middagen kommer han plutselig på middagsavtalen. Uheldigvis bruker han vanligvis fire timer på å kjøre til familien hvis han kjører omtrent 80 km i timen.\n", + "\n", + "Problemet er at kalkunen må være i en ovn på 180$^o$C i tre timer for å bli spiseklar. Han veit at under panseret på bilen kan det bli varmere enn dette. Han bestemmer seg derfor for å prøve å tilberede kalkunen under panseret mens han kjører. \n", + "\n", + "Arne har lagd følgende modell for temperaturen under panseret etter ei tid $t$:\n", + "\n", + "$$T_o(t) = 35\\log(v(t)+1)+0.4v(t)\\sin(2\\pi p\\cdot t) + 37.7$$\n", + "\n", + "der $v(t)$ er farten til bilen og $p$ er et tilfeldig flyttall mellom 1 og 2. Verdien til $p$ forandrer seg for hver tid $t$\n", + "\n", + "Fra Newtons avkjølingslov vil temperaturen $T(t)$ til kalkunen forandre seg på følgende måte:\n", + "\n", + "$$T'(t) = -4\\cdot(T(t) - T_o(t))$$\n", + "\n", + "Akselerasjonen $a(t)$ til bilen etter ei tid $t$ vil følge modellen\n", + "\n", + "$$a(t) = 2000e^{-500t^2}$$\n", + "\n", + "Lag et program som finner kalkunens temperatur etter fire timer under panseret. Plott temperaturen og forklar ut fra plottet om kalkunen vil være spiseklar eller ikke etter kjøreturen (I episoden _Food Fables_ fra Mythbusters kan du se at dette faktisk er mulig!).\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Videoer\n", + "\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "celltoolbar": "Edit Metadata", + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.12" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/tema5_modellering/diskret_modellering.ipynb b/_sources/docs/tema5_modellering/diskret_modellering.ipynb new file mode 100644 index 00000000..86d5aec1 --- /dev/null +++ b/_sources/docs/tema5_modellering/diskret_modellering.ipynb @@ -0,0 +1,133 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Modellering\n", + "\n", + "```{epigraph}\n", + "Kun virkeligheten er virkeligheten i seg selv.\n", + "\n", + "-- Andreas Haraldsrud (og sikkert mange andre også)\n", + "```\n", + "\n", + "Når vi mennesker skal beskrive virkeligheten, lager vi en modell som beskriver noe, men ikke alt, om det vi observerer. Hver modell har sine styrker og svakheter, og ingen modeller representerer virkeligheten eksakt. Modeller er _bare_ forenklinger, men dette er egentlig en nødvendighet for å kunne systematisere virkeligheten. Som sagt er virkeligheten for kompleks til å representeres eksakt. \n", + "\n", + "Se på bildene nedenfor. Hva viser bildene?\n", + "\n", + "```{tabbed} Bilde 1\n", + "\n", + "```\n", + "```{tabbed} Bilde 2\n", + "\n", + "```\n", + "```{tabbed} Bilde 3\n", + "\n", + "```\n", + "```{tabbed} Bilde 4\n", + "\n", + "```\n", + "\n", + "```{admonition} Hva viser bildene?\n", + ":class: tip, dropdown\n", + "Det er ikke et enkelt fasitsvar her. Bildene er _representasjoner_ av noe. Du ser for eksempel ikke en motorsykkel eller et atom, men en representasjon av begge. Du kan si noe om den faktiske virkeligheten med hver av disse representasjonene, men du kan ikke si alt. Dette er altså modeller som kan fortelle oss om utvalgte ting ved virkeligheten.\n", + "```\n", + "\n", + "For hver enkelt modell er det viktig å være oppmerksom på begrensningene og forutsetningene som gjelder. Dette er enklere å bli bevisst på når vi lager og/eller utforsker modellene selv, og dette er lettere å få til med programmering. Programmering er et viktig verktøy for å forstå og utforske matematiske modeller, og på den måten få bedre innsikt i et naturvitenskapelig problem.\n", + "\n", + "En modelleringsprosess innebærer flere trinn. For det første må vi ha en observasjon eller et fenomen vi ønsker å studere. Ut fra visse egenskaper ved dette systemet lager vi en modell som skal beskrive systemet under visse betingelser. En modell er en forenklet representasjon av virkeligheten. Denne modellen kan vi teste, for eksempel gjennom eksperimenter eller simuleringer. Da får vi data som vi kan bruke til å evaluere modellens gyldighet. Deretter kan vi eventuelt justere modellen og gjøre nye simuleringer og målinger.\n", + "\n", + "Modellering er altså en kontinuerlig prosess der modeller hele tiden evalueres og justeres opp mot virkeligheten. Programmering kan gjøre denne prosessen enklere fordi vi med noen tastetrykk kan endre modellen og observere utfallet av dette. \n", + "\n", + "Når en arbeider med modeller, åpner det for utforsking og kritisk refleksjon. En kan endre både rammebetingelser og variabelverdier med et tastetrykk og utforske konsekvensene for modellen. Det finnes ikke riktige og gale svar, og differensiering er en naturlig del av arbeidsformen. Modeller kan variere i kompleksitet, og en viktig del av modelleringsprosessen er å undersøke modellene opp mot virkeligheten, for eksempel med systematiske eksperimenter og observasjoner.\n", + "\n", + "## Diskrete modeller\n", + "\n", + "En diskret modell er en modell som beskriver tilstanden i et system på gitt tidspunkter. Det vil si at vi ikke har en kontinuerlig funksjon som beskriver tilstandene i systemet på et hvert tidspunkt. Et eksempel er en diskret populasjonsmodell som beskriver størrelsen på en gaupebestand hver andre måned. En kontinuerlig modell vil derimot beskrive populasjonen på _ethvert_ tidspunkt. Regresjonsmodeller er kontinuerlige modeller fordi modellene er kontinuerlige funksjoner. Det samme er modeller basert på _differensiallikninger_, som vi skal se på seinere.\n", + "\n", + "Diskrete modeller kan beskrives med _differenslikninger_. Eksempelet med gaupepopulasjonen kan beskrives som en differenslikning: Antall gauper er lik antall gauper ved forrige tidssteg pluss en endring. Det er denne endringen vi skal finne ut av når vi modellerer. Et annet eksempel på sammenhenger som kan beskrives som differenslikninger, er mønsteret i tallfølger. \n", + "\n", + "```{admonition} Differenslikninger\n", + "En differenslikning er en likning som beskriver forskjellen mellom etterfølgende verdier til en funksjon av diskrete variabler.\n", + "```\n", + "La oss se på et eksempel på en diskret modell. Her ser vi på modeller som beskriver utslipp av CO$_2$. Vi bygger opp modellen gradvis.\n", + "\n", + "````{admonition} Oppgave\n", + ":class: tip\n", + "Vi ser først på en diskret modell der utslippet øker med en prosentvis andel hvert år. Følgende modell kan da beskrive utslippet:\n", + "\n", + "$$u_{n+1} = u_n + au_n$$\n", + "\n", + "Her er _u_ antall tonn CO$_2$ som slippes ut per innbygger, og _a_ er en parameter som bestemmer utslippsraten (vekstfaktoren). Tilpasning av slike parametere er en viktig del av modellering. Parameterne representerer ulike forhold i det virkelige livet, men det kan være vanskelig å finne gode verdier for dem. Ofte bruker vi reelle data til dette. \n", + "\n", + "__Oppgave 1:__\n", + "\n", + "Forklar for hverandre med ord hva modellen sier. Drøft også i hvilke sammenhenger det kan være hensiktsmessig å bruke en slik modell. Er det en realistisk modell i noen sammenhenger?\n", + "\n", + "__Oppgave 2:__\n", + "\n", + "Fyll inn det som mangler i programmet nedenfor for å simulere utslippet. Dersom du vil, kan du selvfølgelig viske ut alt og bygge programmet fra grunnen av. Varier med ulike verdier av _a_ og forklar betydningen av denne parameteren.\n", + "\n", + "\n", + "\n", + "__Oppgave 3:__\n", + "\n", + "Hva er utslippet i 2100? Tror du dette er realistisk? Finn utslippet i 2018 etter denne modellen, og sammenlikn med det reelle utslippet i Norge og India ved hjelp av data som er gitt i disse tekstfilene: [Norge](https://raw.githubusercontent.com/andreasdh/Programmering-og-modellering/master/docs/Datafiler/CO2_Norge.txt) og [India](https://github.com/andreasdh/Programmering-og-modellering/blob/master/docs/Datafiler/CO2_India.txt).\n", + "\n", + "__Oppgave 4:__\n", + "\n", + "Varier utslippsraten _a_ slik at modellen passer best mulig med utslippet til enten Norge eller India. Du kan lese inn filene i programmet og plotte de reelle dataene i samme graf som modellen din. Kommenter hvor godt modellen passer med dataene. Hva er i så fall gyldighetsområdet til modellen? \n", + "\n", + "__Oppgave 5:__\n", + "\n", + "La oss utvide modellen og innføre flere parametere. Vi kan tenke oss en begrensningsparameter b som sier oss hva hver person maksimalt kan oppnå av utslipp. Følgende modell tar hensyn til dette:\n", + "\n", + "$$u_{n+1} = u_n + au_n\\left(1 - \\frac{u_n}{b}\\right)$$\n", + "\n", + "Beskriv modellen, og prøv å forklare alle leddene og faktorene. Hva skjer med uttrykket i parentesen når _u_ øker?\n", + "\n", + "__Oppgave 6:__\n", + "\n", + "Erstatt den gamle modellen med den nye modellen. Beskriv det du ser.\n", + "\n", + "\n", + "__Oppgave 7:__\n", + "\n", + "Eksperimenter med a og b slik at modellen passer godt med dataene.\n", + "\n", + "__Oppgave 8:__\n", + "\n", + "I 2015 setter vi inn tiltak som gjør at veksten stagnerer og blir negativ (minker med 4,5 % hvert år). Legg dette inn i simuleringen og kommenter utviklingen. Er utviklingen realistisk?\n", + "\n", + "__Ekstraoppgaver: Utforsk modellen__\n", + "\n", + "- Finn ut hvor store tiltakene (a) må være for at vi bare skal slippe ut 2 tonn CO2 per innbygger i Norge i 2100.\n", + "\n", + "- Gjenta simuleringene med India. Lag en modell som følger omtrent samme utvikling som en av modellene for Norge. Når vil India nå samme topputslipp som Norge?\n", + "````" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.12" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git "a/_sources/docs/tema5_modellering/maskinl\303\246ring_titanic.ipynb" "b/_sources/docs/tema5_modellering/maskinl\303\246ring_titanic.ipynb" new file mode 100644 index 00000000..8b219ef0 --- /dev/null +++ "b/_sources/docs/tema5_modellering/maskinl\303\246ring_titanic.ipynb" @@ -0,0 +1,645 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Maskinlæring" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import seaborn as sns\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# Lese dataene\n", + "titanic = pd.read_csv(\"Datafiler/titanic.csv\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Utforsking og opprydding av datasettet\n", + "La oss undersøke dataene og rydde litt, dersom vi trenger det." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    survivedpclasssexagesibspparchfareembarkedclassdeckembark_townalivealone
    003022.0107.2500SThirdNaNSouthamptonnoFalse
    111138.01071.2833CFirstCCherbourgyesFalse
    213126.0007.9250SThirdNaNSouthamptonyesTrue
    311135.01053.1000SFirstCSouthamptonyesFalse
    403035.0008.0500SThirdNaNSouthamptonnoTrue
    \n", + "
    " + ], + "text/plain": [ + " survived pclass sex age sibsp parch fare embarked class deck \\\n", + "0 0 3 0 22.0 1 0 7.2500 S Third NaN \n", + "1 1 1 1 38.0 1 0 71.2833 C First C \n", + "2 1 3 1 26.0 0 0 7.9250 S Third NaN \n", + "3 1 1 1 35.0 1 0 53.1000 S First C \n", + "4 0 3 0 35.0 0 0 8.0500 S Third NaN \n", + "\n", + " embark_town alive alone \n", + "0 Southampton no False \n", + "1 Cherbourg yes False \n", + "2 Southampton yes True \n", + "3 Southampton yes False \n", + "4 Southampton no True " + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Skriver ut fem første linjer\n", + "titanic.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Vi ser at det ikke er alle kategoriene vi trenger. Siden vi er interessert i hvem som overlevde, og hvorfor, kan det også være lurt å sjekke hvor mange dette var." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "38.38 % overlevde\n" + ] + } + ], + "source": [ + "# Hvor mange overlevde?\n", + "overlevde_prosent = (titanic['survived'].sum()/titanic['survived'].count())*100\n", + "print(f'{overlevde_prosent:.2f} % overlevde')" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 Southampton\n", + "1 Cherbourg\n", + "2 Southampton\n", + "3 Southampton\n", + "4 Southampton\n", + " ... \n", + "886 Southampton\n", + "887 Southampton\n", + "888 Southampton\n", + "889 Cherbourg\n", + "890 Queenstown\n", + "Name: embark_town, Length: 891, dtype: object" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Sletter kategorier vi ikke er interessert i\n", + "titanic.pop('deck')\n", + "titanic.pop('fare')\n", + "titanic.pop('embarked')\n", + "titanic.pop('embark_town')" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "survived 0\n", + "pclass 0\n", + "sex 0\n", + "age 177\n", + "sibsp 0\n", + "parch 0\n", + "class 0\n", + "alive 0\n", + "alone 0\n", + "dtype: int64\n" + ] + } + ], + "source": [ + "# Print antall manglende verdier i kolonnene\n", + "print(titanic.isna().sum())" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "# Fyller inn manglende alder med gjennomsnittet\n", + "gjennomsnitt = titanic['age'].mean()\n", + "titanic['age'].fillna(gjennomsnitt, inplace = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Visualiseringer\n", + "La oss først se hvilken effekt klasse og kjønn hadde på overlevelsessjansene:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Passasjerklasse\n", + "sns.countplot(x='pclass', hue='survived', data=titanic, palette='ocean')\n", + "plt.title(\"Antall døde (0) og overlevende (1) av hver klasse\")\n", + "plt.xlabel(\"Klasse\")\n", + "plt.ylabel(\"Antall\")\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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WLJkCcOGDSvG7du3L0OHDuU3v/kNALfccgsjRoygV69enHzyyVx66aXMnj2biy66iFNPPRWASZMm8ZWvfIWHHnqInXaq+murG8RJwcysHfbee29uv/12zjzzTO655x769u3b5vijR49miy22AGDs2LHccMMNAMyYMYMxY8a8Y/xx48YxfXr6yepp06Yxbtw4XnrpJe69914+//nPM3ToUE455RSWLFkCwO9//3vGjx8PwIQJEzpsPTf5NgUzs/bYfffdmTNnDrfeeivnnHMOhx56KD179iyqfFo/D/De97636B4wYAD9+vVj3rx5TJ8+nSuvvPId8x89ejRnn302K1euZPbs2RxyyCG8/PLLbLPNNjz44INVY6rHbbO+UjAza4dnnnmGLbfcki9+8Yt885vfZM6cOTQ3NzN79mwAbrzxxjanHzduHBdeeCEvvPAC++yzzzuG9+nTh/32249JkyYxatQoevTowdZbb82gQYP42c9+BqSnlOfOnQvAQQcdxLRp0wCYMmVKh62nk4KZWTs89NBD7L///gwdOpTzzz+fc845h3PPPZdJkyYxbNgwevTo0eb0Y8aMYdq0aYwdO7bmOOPGjeOnP/0p48aNK8qmTJnC1VdfzZAhQ9hzzz25+eabAbjkkku4/PLL2XvvvVm8eHHHrCTd/Deahw0bFu/2R3Z8S+rbfEuqWbJgwQI+9KEPNTqMDlFtXSTNjohh1cb3lYKZmRWcFMzMrOCkYGZmBScFMzMrOCmYmVnBScHMzAp+otnMbD119K3s7b0d/LbbbmPSpEmsWbOGk046ibPOOqtD4wBfKZiZdQtr1qzhtNNO45e//CXz589n6tSpzJ8/v8OX46RgZtYNPPDAA+y2227suuuubLbZZhx99NHF080dyUnBzKwbWLx4MQMHDiz6m5qaOvT1FhVOCmZmVnBSMDPrBgYMGMCiRYuK/paWFgYMGNDhy3FSMDPrBvbbbz/+9Kc/8cQTT/DGG28wbdq0uvy+s29JNTNbT414o3DPnj257LLLGDFiBGvWrOHEE09kzz337PjldPgczcysLg4//HAOP/zwui7D1UdmZlZwUjAzs4KTgpmZFZwUzMysUPekIKmHpD9KuiX3D5J0v6SFkqZL2iyXb577F+bhzfWOzczM1tYZVwqTgAWl/u8CF0fEbsAqYGIunwisyuUX5/HMzKwT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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Passasjerklasse\n", + "sns.countplot(x='sex', hue='survived', data=titanic, palette='ocean')\n", + "plt.title(\"Antall døde (0) og overlevende (1) av hvert kjønn\")\n", + "plt.xlabel(\"Kjønn (0 = han, 1 = hun)\")\n", + "plt.ylabel(\"Antall\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Vi ser, ikke overraskene at menn på 3. klasse hadde særdeles dårlige odds. Vi har alderen til passasjerene, men ikke " + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEGCAYAAACKB4k+AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Z1A+gAAAACXBIWXMAAAsTAAALEwEAmpwYAAAXBklEQVR4nO3dfbRddX3n8ffHJBgwyEMIFHIzJgpWQCSVgCCjRXAEAQPTAQJTEARWHME2LluBcVgjdE1XkdpaBNShxQKVIeFBhVJIiyg+IIoJjyHoEEVLYoAQHiw4VIjf+ePsu7mGm3BD7rknuXm/1jrr7P3bv73P92SdnM/dT7+TqkKSJIDX9LoASdKGw1CQJLUMBUlSy1CQJLUMBUlSa2yvC1gf2223XU2dOrXXZUjSRmXhwoVPVNWkwZZt1KEwdepUFixY0OsyJGmjkuTna1rm4SNJUstQkCS1DAVJUmujPqcgSd3wwgsvsHTpUp5//vlel7Jexo8fT19fH+PGjRvyOoaCJK1m6dKlbLnllkydOpUkvS7nVakqVq5cydKlS5k2bdqQ1/PwkSSt5vnnn2fixIkbbSAAJGHixInrvLdjKEjSIDbmQOj3at6DoSBJahkKktQjN9xwA+edd96wbGvChAnDsp1N/kTzhAmH9bqEDcazz/5Tr0uQRp0XX3yRsWMH/6qdOXMmM2fOHOGK1s49BUkagueee47DDjuMPffck7e+9a3MmzePqVOn8sQTTwCwYMECDjjgAADOOeccTjjhBPbff39OOOEE9t13Xx544IF2WwcccAALFizgsssu46Mf/SjPPPMMb3jDG/jNb37TvtaUKVN44YUX+MlPfsIhhxzCXnvtxbve9S5+9KMfAfDwww+z3377sccee3D22WcP2/s0FCRpCObPn89OO+3Evffey6JFizjkkEPW2n/x4sV8/etf56qrrmLWrFlcffXVACxfvpzly5czY8aMtu9WW23F9OnT+da3vgXAjTfeyMEHH8y4ceOYPXs2F154IQsXLuQzn/kMp512GgBz5szhIx/5CPfffz877rjjsL3ProZCkp8luT/JPUkWNG3bJrklyUPN8zZNe5J8LsmSJPcleXs3a5OkdbHHHntwyy23cOaZZ/Kd73yHrbbaaq39Z86cyeabbw7AMcccw7XXXgvA1VdfzVFHHfWy/rNmzWLevHkAzJ07l1mzZvHss8/yve99j6OPPprp06fz4Q9/mOXLlwNw++23c9xxxwFwwgknDNv7HIlzCu+pqicGzJ8F3FpV5yU5q5k/E3g/sEvzeAfwheZZknruzW9+M3fddRc33XQTZ599NgcddBBjx45tD/msfj/A6173unZ68uTJTJw4kfvuu4958+bxxS9+8WXbnzlzJp/85Cd58sknWbhwIQceeCDPPfccW2+9Nffcc8+gNXXjstleHD46Ari8mb4cOHJA+xXV8X1g6yTDt08kSevhF7/4BVtssQXHH388n/jEJ7jrrruYOnUqCxcuBOC6665b6/qzZs3i/PPP55lnnuFtb3vby5ZPmDCBvffemzlz5nD44YczZswYXv/61zNt2jSuueYaoHOX8r333gvA/vvvz9y5cwG48sorh+19djsUCviXJAuTzG7adqiq5c30o8AOzfRk4JEB6y5t2n5LktlJFiRZsGLFim7VLUm/5f7772efffZh+vTpnHvuuZx99tl86lOfYs6cOcyYMYMxY8asdf2jjjqKuXPncswxx6yxz6xZs/jyl7/MrFmz2rYrr7ySSy+9lD333JPdd9+d66+/HoALLriAiy++mD322INly5YNz5sEUlXDtrGXbTyZXFXLkmwP3AL8EXBDVW09oM9TVbVNkhuB86rqu037rcCZVbXGX9GZMWNGre+P7HhJ6ku8JFXqePDBB9l11117XcawGOy9JFlYVTMG69/VPYWqWtY8Pw58FdgHeKz/sFDz/HjTfRkwZcDqfU2bJGmEdC0UkrwuyZb908D7gEXADcCJTbcTgeub6RuADzZXIe0LPDPgMJMkaQR08+qjHYCvNmfHxwL/p6rmJ/khcHWSU4CfA/0H2G4CDgWWAL8CPtTF2iRJg+haKFTVT4E9B2lfCRw0SHsBp3erHknSK/OOZklSy1CQJLU2+VFSJWldDfel7EO9HHz+/PnMmTOHVatWceqpp3LWWWcNax3gnoIkbRRWrVrF6aefzs0338zixYu56qqrWLx48bC/jqEgSRuBO++8k5133pk3vvGNbLbZZhx77LHt3c3DyVCQpI3AsmXLmDLlpft7+/r6hnV4i36GgiSpZShI0kZg8uTJPPLIS2OGLl26lMmTXzZm6HozFCRpI7D33nvz0EMP8fDDD/PrX/+auXPnduX3nb0kVZLWUS9GFB47diwXXXQR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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Sortere etter alder\n", + "aldersklasse = []\n", + "\n", + "for alder in titanic['age']:\n", + " if alder > 15:\n", + " aldersklasse.append(\"voksen\")\n", + " else:\n", + " aldersklasse.append(\"barn\")\n", + " \n", + "titanic['aldersklasse'] = aldersklasse\n", + "\n", + "sns.countplot(x='aldersklasse', hue='survived', data=titanic, palette='ocean')" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "# *Frivilling: Erstatte kategorier for visualisering med nye kategorier\n", + "\"\"\"\n", + "overlevende = {0: \"døde\", 1: \"overlevde\"}\n", + "titanic[\"survived\"] = titanic[\"survived\"].map(overlevende)\n", + "titanic.head(5)\n", + "\"\"\"\n", + "# *Frivillig: Telle forekomster av ulike tilfeller\n", + "\"\"\"\n", + "titanic[\"survived\"].count()\n", + "titanic[\"survived\"].value_counts()\n", + "\"\"\"\n", + "None # Printer None for å unngå output" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Maskinlæring\n", + "Vi skal nå lage en modell som kan forutsi hvorvidt en person overlever på Titanic eller ikke, gitt data om personen. Vi velger ut hvilke data vi ønsker å bruke som kriterium for overlevelse, og spesifiserer kategorien \"survived\" som målkategorien vår:" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.model_selection import train_test_split, cross_val_score\n", + "from sklearn import tree\n", + "from sklearn.metrics import accuracy_score, confusion_matrix" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "kriterier = titanic[['pclass', 'sex', 'age', 'sibsp', 'parch']]\n", + "kategorier = titanic['survived'] " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "I maskinlæring er det viktig at modellen vår klarer å forutsi data som kommer utenfra datasettet vi trener modellen med. Derfor deler vi ofte opp dataene i et treningssett og et testsett. Treningssettet bruker vi til å trene modellen, testsettet til å teste og evaluere modellen i etterkant. Vi blander ikke disse dataene. Vi kan generere slike data med funksjonen _train\\_test\\_split()_. Her bruker vi 80 \\% av dataene til trening og 20 \\% til testing. Du bør bruke minst 70 \\% av dataene dine til trening." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "testandel = 0.2 # Andel brukt til testing\n", + "ml_data = train_test_split(kriterier, kategorier, test_size=testandel, random_state=42)\n", + "\n", + "treningskriterier = ml_data[0]\n", + "testkriterier = ml_data[1]\n", + "treningskategorier = ml_data[2]\n", + "testkategorier = ml_data[3]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Nå kan vi lage modellen vår. Vi bruker en algoritme som heter _Decision Tree Classifier_. Det er basert på sammensatte og forgreinede valgtrær, der alle kombinasjoner av kriterier blir utforsket. Betingede sannsynligheter for ulike hendelser blir beregnet, og de mest sannsynlige utfallene blir framhevet basert på kombinasjonen av kriteriene. Først trener vi modellen:" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "DecisionTreeClassifier()" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "modell = tree.DecisionTreeClassifier()\n", + "modell.fit(treningskriterier, treningskategorier)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Det var det - da har vi en modell! Den ligger nå i et objekt som vi har kalt _modell_. Vi kan få innsyn i hvordan modellen ser ut, men det kan fort bli litt uoversiktlig og teknisk. La oss først nøye oss med å sjekke hvordan modellen takler testsettet vårt.\n", + "\n", + "## Test og validering av modellen" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.7653631284916201" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "modellkategorier_forutsett = modell.predict(testkriterier)\n", + "accuracy_score(testkategorier, modellkategorier_forutsett)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Dette betyr at modellen forutsier riktig ca. 76 % av gangene. Det er en ok modell. For å få bedre oversikt over hva modellen forutsier riktig og hva den feiler på, kan vi konstruere en såkalt \"Confusion Matrix\" (forvirringsmatrise/feilmatrise):" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "cm = confusion_matrix(modellkategorier_forutsett, testkategorier)\n", + "\n", + "import seaborn as sns\n", + "sns.heatmap(cm, annot=True, cmap='viridis')\n", + "plt.title(\"Forvirringsmatrise\")\n", + "plt.xlabel(\"Predikerte verdier\")\n", + "plt.ylabel(\"Sanne verdier\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "La oss benytte disse dataene og telle hvor mange datapunkter vi har, hvor mange som overlevde og døde, og deretter beregne hvor stor prosentandel av overlevende og døde som modellen klarte å forutsi korrekt." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(Andel korrekt forventet død 77.68 %)\n", + "(Andel korrekt forventet overlevelse 73.13 %)\n" + ] + } + ], + "source": [ + "presisjon_død = (87/(87+25))*100\n", + "presisjon_overleve = (49/(49+18))*100\n", + "print(f'(Andel korrekt forventet død {presisjon_død:.2f} %)')\n", + "print(f'(Andel korrekt forventet overlevelse {presisjon_overleve:.2f} %)')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Det er større presisjon i å forutsi død. Dette er forventet, siden modellen har trent på flere tilfeller av død enn av overlevelse. \n", + "\n", + "La oss helt til sist visualisere modellen vår. Vi velger maks dybde på modellen til 3 for at vi ikke skal få alt for mange forgreininger." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABGoAAAIuCAYAAADnru5GAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Z1A+gAAAACXBIWXMAAAsTAAALEwEAmpwYAAD0aElEQVR4nOzddXgVxx7G8e9EiAsJgeDu7u5upbQUKVXq7u5ChbrRQimUlgLFWtyd4u4Q3J0kxG3uHwfS5iZAgISTwPt5Hp5LZmdnf5tLYfOe2RljrUVERERERERERJzPxdkFiIiIiIiIiIiIg4IaEREREREREZEcQkGNiIiIiIiIiEgOoaBGRERERERERCSHUFAjIiIiIiIiIpJDKKgREREREREREckhFNSIiIiIiIiIiOQQCmpERERERERERHIIBTUiIiIiIiIiIjmEghoRERERERERkRxCQY2IiIiIiIiISA6hoEZEREREREREJIdQUCMiIiIiIiIikkMoqBERERERERERySEU1IiIiIiIiIiI5BAKakREREREREREcgg3ZxcgIiIi2c/L0+NYXHxCAWfXIdfO0yPP8di4+FBn1yEiIiLZw1hrnV2DiIiIZDNjjI1eM9HZZUgW8KndDWutcXYdIiIikj306pOIiIiIiIiISA6hoEZEREREREREJIdQUCMiIiIiIiIikkMoqBERERERERERySEU1IiIiIiIiIiI5BAKakREREREREREcggFNSIiIiIiIiIiOYSbswsQERERyQ1SUlL4cfRUfhk/g31HjhMU4MetrRvx9mN98ff1ztQYPrW7ZdheKH8wYdOHZmW5IiIikkspqBERERHJhNe//pXv/phI5+b1ePquboQdOMLAUZNZsyWM2UM+xs3NNVPjNK5Ziftva5+mzcfTIztKFhERkVxIQY2IiIjkauHnogiPjKZE4QLZdo1tew7ww6jJ3NKyAaM+fy21vVyJIjz+/nf8NmkO/f4vfLmYEoVD6dOpRTZVKiIiIrmd1qgRERER4uIT6D9oFDVue4x8je6gUPM7qdvzad76dni6vvNWrKfr4+9QqPmdBDXsQb1eTzNk3PQ0fe56+VP863Vn6bqtadonzVuGT+1uvDhg8DXVm5CYyJQFK+j78ieUancfUxauuKbxLmfsjMWkpKTwZN9b0rT37dyS4AA/Rk9bcEXjJSQmEhUT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iIiIiIiIiI24qt765OjoGJmdnR1c1nHYCgcHh6isrKyQso7DVmm8nKexcnEaK5Y0Xi5O4+U8jZWL01ixpPFycRov52msXJzGiiWNl4vTeDnvahorV9WjT4ZhmCNHjizrMGzGyJEjMU3TKOs4bJXGy3kaKxensWJJ4+XiNF7O01i5OI0VSxovF6fxcp7GysVprFjSeLk4jZfzrqaxokefRERERERERERshAo1IiIiIiIiIiI2QoUaEREREREREREboUKNiIiIiIiIiIiNUKFGRERERERERMRGqFAjIiIiIiIiImIjVKgREREREREREbERKtSIiIiIiIiIiNgIFWpERERERERERGyECjUiIiIiIiIiIjZChRoRERERERERERuhQo2IiIiIiIiIiI1QoUZERERERERExEaoUCMiIiIiIiIiYiNUqBERERERERERsREq1IiIiIiIiIiI2AgVakREREREREREbIQKNSIiIiIiIiIiNkKFGhERERERERERG6FCjYiIiIiIiIiIjVChRkRERERERETERqhQIyIiIiIiIiJiI1SoERERERERERGxESrUiIiIiIiIiIjYCBVqRERERERERERshAo1IiIiIiIiIiI24rov1GRlZTFq1CiWLVtWrP3u37+ft956i9jY2GLtV8qWxotYS2NFikLjRaylsSJFofEi1tJYkaLQeCl5132hZs2aNWRlZdGqVati7bdmzZqEhISwaNGiYu1XypbGi1hLY0WKQuNFrKWxIkWh8SLW0liRotB4KXnXdaEmMzOTNWvW0LhxY1xcXIq9/5YtW7J3717Onj1b7H1L6dN4EWtprEhRaLyItTRWpCg0XsRaGitSFBovpeO6LtTs3LmTjIwMGjZsWCL916pVC0dHRzZv3lwi/Uvp0ngRa2msSFFovIi1NFakKDRexFoaK1IUGi+l47ou1OzZswcvLy+Cg4NLpH9nZ2cqVKjA7t27S6R/KV0aL2ItjRUpCo0XsZbGihSFxotYS2NFikLjpXRct4Wa3NxcTpw4QVhYWIkep3z58iQlJWlBpKucxotYS2NFikLjRaylsSJFofEi1tJYkaLQeCk9122hJiEhgczMTHx9fUv0OP/2f70/Y3e103gRa2msSFFovIi1NFakKDRexFoaK1IUGi+l57ot1KSkpADg6upaosdxc3OzOJ5cnTRexFoaK1IUGi9iLY0VKQqNF7GWxooUhcZL6bluCzWGYZTKcUzTLJXjSMnSeBFraaxIUWi8iLU0VqQoNF7EWhorUhQaL6Xnui3U/FulS0tLK9Hj/Nu/u7t7iR5HSpbGi1hLY0WKQuNFrKWxIkWh8SLW0liRotB4KT3XbaHG29sbJyenEl+gKC4uDoCgoKASPY6ULI0XsZbGihSFxotYS2NFikLjRaylsSJFofFSeq7bQo2dnR3ly5fn1KlThX5+9uzZ/AHyr/T0dM6ePVvgWbn4+HjOnj1LTk5OgX5OnjyJp6cnfn5+xRe8lDqNF7GWxooUhcaLWEtjRYpC40WspbEiRaHxUnqu20INQN26dUlOTub06dMFPhszZgxjx4612LZ3717GjBnDhg0bLLZPnz6dMWPGkJiYaLE9IyOD48ePU7du3eIPXkqdxotYS2NFikLjRaylsSJFofEi1tJYkaLQeCkd13Whpl69eri4uLBjx44S6X/fvn1kZWXRtGnTEulfSpfGi1hLY0WKQuNFrKWxIkWh8SLW0liRotB4KR0OZR1AWXJycqJ169asXbuWTp064eLikv/ZyJEjC7Rv3LgxjRs3LrD93nvvLbT/9evXU7t2bQIDA4stZik7Gi9iLY0VKQqNF7GWxooUhcaLWEtjRYpC46V0XNczagDatGmDk5MT69atK9Z+9+/fT2RkJF27di3WfqVsabyItTRWpCg0XsRaGitSFBovYi2NFSkKjZeSZ1xN7yg3DMMsrEp3vRo5ciSmaZbOy+yvQhov52msXJzGiiWNl4vTeDlPY+XiNFYsabxcnMbLeRorF6exYknj5eI0Xs67msbKdT+jRkRERERERETEVqhQIyIiIiIiIiJiI1SoERERERERERGxESrUiIiIiIiIiIjYCBVqRERERERERERshAo1IiIiIiIiIiI2QoUaEREREREREREboUKNiIiIiIiIiIiNUKFGRERERERERMRGqFAjIiIiIiIiImIjVKgREREREREREbERKtSIiIiIiIiIiNgIFWpERERERERERGyECjUiIiIiIiIiIjZChRoRERERERERERuhQo2IiIiIiIiIiI1QoUZERERERERExEaoUCMiIiIiIiIiYiNUqBERERERERERsREq1IiIiIiIiIiI2AgVakREREREREREbIQKNSIiIiIiIiIiNkKFGhERERERERERG6FCjYiIiIiIiIiIjVChRkRERERERETERqhQIyIiIiIiIiJiI1SoERERERERERGxESrUiIiIiIiIiIjYCBVqRERERERERERshGGaZlnHYDVHR8fI7Ozs4LKOw1Y4ODhEZWVlhZR1HLZK4+U8jZWL01ixpPFycRov52msXJzGiiWNl4vTeDlPY+XiNFYsabxcnMbLeVfTWLmqCjUiIiIiIiIiItcyPfokIiIiIiIiImIjVKgREREREREREbERKtSIiIiIiIiIiNgIFWpERERERERERGyECjUiIiIiIiIiIjZChRoRERERERERERuhQo2IiIiIiIiIiI1QoUZERERERERExEaoUCMiIiIiIiIiYiNUqBERERERERERsREq1IiIiIiIiIiI2AgVakREREREREREbIQKNSIiIiIiIiIiNkKFGhERERERERERG6FCjYiIiIiIiIiIjVChRkRERERERETERqhQIyIiIiIiIiJiI1SoERERERERERGxESrUiIiIiIiIiIjYCBVqRERERERERERshAo1IiIiIiIiIiI2QoUaEREREREREREboUKNiIiIiIiIiIiNUKFGRERERERERMRGqFAjIiIiIiIiImIjVKgREREREREREbERKtSIiIiIiIiIiNgIFWpERERERERERGyECjUiIiIiIiIiIjZChRoRERERERERERuhQo2IiIiIiIiIiI1QoUZERERERERExEaoUCMiIiIiIiIiYiNUqBERERERERERsREq1IiIiIiIiIiI2AgVakREREREREREbMT/AIkgmXKGm3LWAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(20,10))\n", + "titanic.pop('survived')\n", + "tree.plot_tree(modell, max_depth=2, feature_names=titanic.columns, class_names=['Døde', 'Overlevde'], filled=True, label=None,) \n", + "None" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/tema5_modellering/modelleringsrapport.ipynb b/_sources/docs/tema5_modellering/modelleringsrapport.ipynb new file mode 100644 index 00000000..38d46866 --- /dev/null +++ b/_sources/docs/tema5_modellering/modelleringsrapport.ipynb @@ -0,0 +1,408 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Rapporteksempel: Smittemodellering\n", + "_Navn Navnesen_\n", + "\n", + "_Rapport 11.4.2023_\n", + "\n", + "(Nedenfor følger et eksempel på hvordan du kan lage en modelleringsrapport. Rapporten er ikke helt perfekt, men står til høy måloppnåelse - karakteren 5. Spesielt burde det vært mer utforsking og variasjon av ulike parametre (som _a_ og _b_). Eulers metode kunne også vært beskrevet i teoridelen, og det kunne vært mer drøfting og forklaring underveis. Men alt i alt viser rapporten hvordan strukturen og oppsettet på din rapport bør være).\n", + "\n", + "## 1. Hensikt\n", + "Vi skal her utforske ulike modeller for smitteutvikling. Smittemodellering kan være nyttig for å forutsi smitte ved årlige sykdomsforløp, slik som influensa, og for å undersøke effekten av ulike tiltak, slik som vaksinasjon.\n", + "\n", + "## 2. Teori\n", + "Vi ser her på tre ulike modeller for smittespredning.\n", + "\n", + "### Modell 1\n", + "Vi starter med en smittespredningsmodell er der ingen blir friske av den smittsomme sykdommen. Da antar vi at antall smittede utvikler seg slik:\n", + "\n", + "$$I_{n+1}=I_n+aI_n$$\n", + "\n", + "Her er _I_ antall smittede (infected) og _a_ er en parameter som bestemmer spredningsraten. Smitteraten _a_ kan variere med blant annet sykdommens spredningsmønster, hvor smittsom spredningen er, hvilke tiltak vi har i samfunnet (hygiene, munnbind, kontaktmønster), befolkningstetthet og mobilitet.\n", + "\n", + "### Modell 2\n", + "Vi kan utvide modellen vår og innføre en ny kategori av individer som er mottakelige for smitte. Vi kaller dem _S_ (susceptibles).\n", + "\n", + "Vi kan anta at de smittede da utvikler seg slik.\n", + "\n", + "$$I_{n+1}=I_n+aI_nS_n$$\n", + "\n", + "Her multipliserer vi de smittede med de mottakelige for å simulere hendelsen der et smittet individ møter et mottakelig individ og kan overføre smitten. Hvorvidt smitten overføres eller ikke, bestemmes av _a_. Siden smittede individer ikke lenger er mottakelige, kan de mottakelige individene beskrives slik:\n", + "\n", + "$$S_{n+1}=S_n-aI_nS_n$$\n", + "\n", + "### Modell 3\n", + "La oss deretter utforske en modell som også tar hensyn til at det går an å bli frisk fra sykdommen. Da innfører vi en kategori til, nemlig de friske og tidligere smittede. Disse har da immunitet og kan ikke bli smittet igjen. Vi kaller dem _R_ (\"recovered\"), og de kan beskrives slik:\n", + "\n", + "$$R_{n+1}=R_n+bI_n$$\n", + "\n", + "Da må de smittede utvikle seg slik:\n", + "\n", + "$$I_{n+1}=I_n+aS_nI_n-bI_n$$\n", + "\n", + "Antall usmittede, men mottakelige individer, _S_, må fortsatt følge denne modellen:\n", + "\n", + "$$S_{n+1}=S_n-aI_nS_n$$\n", + "\n", + "Disse tre likningene utgjør det vi kaller \"SIR-modellen\" for smitteutvikling. Parameteren _b_ beskriver her _bedringsraten_, altså hvor stor andel av de smittede som blir friske, beskrevet av leddet $b\\cdot I_n$. Bedringsraten kommer an på sykdommen som spres, og hvor fort folk blir friske av sykdommen." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3. Resultater og drøfting\n", + "Vi ser på tre modellene for seg, og plotter resultatene gitt bestemte verdier av parameterne _a_ og _b_. Først importerer vi nødvendige biblioteker:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import pandas as pd" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Modell 1\n", + "\n", + "Vi starter med å se på den enkleste modellen, som forutsetter at ingen dør eller blir friske, og/eller at det ikke finnes noen immunitet mot sykdommen." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "N = 157759 # Populasjonsstørrelse\n", + "a = 0.2 # Kontaktrate per uke\n", + "tid_slutt = 48 # Antall uker vi ønsker å simulere\n", + "\n", + "# Startverdier\n", + "I = 3 # Antall smittede til å begynne med\n", + "\n", + "# Lister for å spare på verdiene\n", + "smittede = [I]\n", + "t = [0]\n", + "\n", + "for tid in range(tid_slutt):\n", + " I = I + a*I # Modellen\n", + " smittede.append(I)\n", + " t.append(tid)\n", + "\n", + "plt.plot(t,smittede,label='Smittede')\n", + "plt.xlabel('Antall uker fra siste uke i september 2004')\n", + "plt.ylabel('Antall individer')\n", + "plt.legend() # Viser merkelapper\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Modellen sier at antall smittede individer ved neste tidssteg er lik antall smittede individer ved forrige tidssteg + en viss andel (_a_) av antall individer som sprer smitten videre.\n", + "\n", + "Modellen forutsetter enten at det ikke er noen immunitet innenfor smittemengden, altså at ingen smittede møter på personer som allerede er smittet. Det kan være et realistisk bilde i en stor populasjon i begynnelsen av et smitteforløp. Det er derfor usannsynlig at modellen beskriver utvikling langt fram i tid. Modellen forutsetter også at ingen blir friske i løpet av den tiden vi ser på. Igjen peker dette på at modellen kun kan gjelde for et kort tidsrom." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Modell 2\n", + "\n", + "Vi utvider modellen ved å legge til en kategori for mottakelige individer, altså individer som kan få sykdommen." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "N = 157759 # Populasjonsstørrelse\n", + "a = 0.5/N # Kontaktrate\n", + "tid_slutt = 48 # Antall uker vi ønsker å simulere\n", + "\n", + "# Startverdier\n", + "I = 3 # Antall smittede til å begynne med\n", + "S = N-I # Antall usmittede til å begynne med\n", + "\n", + "# Lister for å spare på verdiene\n", + "mulige = [S]\n", + "smittede = [I]\n", + "t = [0]\n", + "\n", + "for i in range(tid_slutt):\n", + " # Lager variabelen endring for å ikke endre I eller S før ny I eller S beregnes\n", + " endring = a*S*I \n", + " I = I + endring\n", + " S = S - endring\n", + " # Legger inn verdier i listene\n", + " smittede.append(I)\n", + " mulige.append(S)\n", + " t.append(i)\n", + " \n", + "plt.plot(t,smittede,label='Smittede')\n", + "plt.plot(t,mulige,label='Mulige')\n", + "plt.xlabel('Antall uker fra siste uke i september 2004')\n", + "plt.ylabel('Antall individer')\n", + "plt.legend() # Viser merkelapper\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "I modellen blir alle smittet, og ingen blir friske. Modellen er derfor lite egna til å studere smitteutvikling, verken over kort tid (individene smittes for langsomt) eller over lang tid (individene blir aldri friske), med mindre vi har å gjøre med en sykdom som gir betydelige langtidsvirkninger.\n", + "\n", + "Modellen sier at antall mottakelige er lik antall mottakelige ved forrige tidssteg minus andelen som er smittet. Årsaken til at vi også ganger inn de mottakelige her, er at smittespredningen nå avhenger av både mottakelige og de som allerede er smittet. At vi multipliserer disse faktorene er ikke nødvendigvis det eneste rette. Det kan vise seg at modellen avhenger enda mer av antall mottakelige enn smittede. Da kan vi for eksempel kvadrere antall mottakelige i modellen:\n", + "\n", + "$$I_{n+1}=I_n+aI_nS_n^2$$\n", + "\n", + "Husk at dette er modeller, og at det ofte er flere muligheter for å lage en modell som beskriver et system. Vi har ennå ikke validert modellen vår." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Modell 3\n", + "\n", + "Den siste modellen vi skal se på, innfører en kategori for friskmeldte, og dermed immune, individer." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZcAAAEGCAYAAACpXNjrAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Z1A+gAAAACXBIWXMAAAsTAAALEwEAmpwYAAA7SUlEQVR4nO3deXwV1d348c/33puNfbfKYlBBy65GQEFFQcAN6lOqYC2oCLXax2ofrdqfSkV9ik9brRsoCgUXBItUqbJqUdCKEBBFQEtkkSAIsi8Jyc39/v44J+ESshFucknyfeu8ZubMmZkzlyTfO2fOnCOqijHGGBNLgXgXwBhjTPVjwcUYY0zMWXAxxhgTcxZcjDHGxJwFF2OMMTEXincBThRNmjTR1NTUeBfDGGOqlGXLlv2gqk0Lp1tw8VJTU0lPT493MYwxpkoRkY1FpVu1mDHGmJiz4GKMMSbmKiy4iMhEEdkmIl8WSv9vEflKRFaJyP9Fpd8vIhki8rWI9ItK7+/TMkTkvqj01iLyqU+fJiKJPj3Jr2f47akVdY3GGGOKVpHPXCYBzwIv5yeIyCXAQKCzqh4SkWY+vR0wGGgPnAK8JyJt/W7PAZcBmcBSEZmpqquBx4EnVXWqiDwPDAfG+fkuVT1DRAb7fNdV4HUaYypZbm4umZmZZGdnx7soNUZycjItWrQgISGhTPkrLLio6sIi7hp+BYxR1UM+zzafPhCY6tPXi0gG0NVvy1DVdQAiMhUYKCJrgEuB632eycAfcMFloF8GmA48KyKi1omaMdVGZmYmdevWJTU1FRGJd3GqPVVlx44dZGZm0rp16zLtU9nPXNoCF/rqqg9F5Dyf3hzYFJUv06cVl94Y2K2q4ULpRxzLb9/j8x9FREaKSLqIpG/fvv24L84YUzmys7Np3LixBZZKIiI0btz4mO4UKzu4hIBGQHfgHuANieNPh6qOV9U0VU1r2vSoZtrGmBOYBZbKdayfd2W/55IJzPBVVEtEJAI0ATYDLaPytfBpFJO+A2ggIiF/dxKdP/9YmSISAur7/BXj6znw76eh9cUgAggIfp6/HnDLEjicLoGoqfB6EAJBNxc5vBwIQTDBrQcSjlwPJkIwCULR80QIJbvtxhhTiSo7uLwFXAIs8A/sE4EfgJnAFBF5AvdAvw2wBPdnuo2ItMYFjcHA9aqqIrIAGARMBYYBb/tzzPTrn/jt/6rQ5y27NsDGj910ogomQUIKJNQ6cp5UF5LrQVI9P6/v5imNoHYTqN3UTbUaQ9DetzUm2mOPPcaUKVMIBoMEAgFeeOEFunXrVup+3333HXfccQfTp09nxYoVfPfdd1xxxRUAfPDBByQmJnLBBRccU1nyXwJv0qRJua6lIlTYXwwReR3oBTQRkUxgFDARmOibJ+cAw/wf/lUi8gawGggDt6tqnj/Or4G5QBCYqKqr/CnuBaaKyKPAZ8AEnz4BeMU3CtiJC0gVp/ut0HUkoKBa/FwjfjkStY5fj5oieaB5fl44LeyW83L9cu7h9bwcN4UPQd4hCOf4+SHIzfLTwcPLOfshaxfs3gjZe+HQXgiXUJ+a0gjqNIP6LaHhqdCgFTQ41S+fCikN/Z2aMdXfJ598wjvvvMPy5ctJSkrihx9+ICcnp0z7nnLKKUyfPh2AFStWkJ6efkRwqVOnzjEHlxNRRbYWG1LMphuKyf8Y8FgR6bOAWUWkr+Nwi7Lo9GzgZ8dU2OMVqCbvooZzXJDJ2gUHtkdNP7j5vq2w+1vIXArZu4/ct1Zj+FFHOKkD/KgT/KgDNGnrqu2MqWa2bNlCkyZNSEpKAii4Y0hNTWXIkCHMnj2bUCjE+PHjuf/++8nIyOCee+7h1ltvZcOGDVx11VUsX76chx56iKysLD766COGDBnC888/TzAY5NVXX+WZZ57hrLPO4tZbb+Xbb78F4K9//Ss9evRgx44dDBkyhM2bN3P++ecTXTnz6quv8vTTT5OTk0O3bt0YO3YswWDlV41bXYc5LJQIoSauSqxJm5LzZu+BXRtdsNm9Ebatge+/hCUvujsmcM98mrWD1hfCaZdAq/MhsVbFX4epUR7+5ypWf7c3psdsd0o9Rl3dvtjtffv2ZfTo0bRt25Y+ffpw3XXXcfHFFwPQqlUrVqxYwV133cWNN97Ixx9/THZ2Nh06dODWW28tOEZiYiKjR48mPT2dZ599FoCsrCzq1KnD3XffDcD111/PXXfdRc+ePfn222/p168fa9as4eGHH6Znz5489NBDvPvuu0yY4Cpu1qxZw7Rp0/j4449JSEjgtttu47XXXmPo0KEx/XzKwoKLKZ/k+nByJzdFywvDjgzYuhK2fgGbl8Pi5+Hfz7hnP626uUBzWi84uUv1ueszNUqdOnVYtmwZixYtYsGCBVx33XWMGTMGgAEDBgDQsWNH9u/fT926dalbty5JSUns3r37mM7z3nvvsXr16oL1vXv3sn//fhYuXMiMGTMAuPLKK2nYsCEA77//PsuWLeO889xbHllZWTRr1ux4L7dcLLiY2AqGoNlZburkaydzDsDGT2DdAlj3Abz/sJvqNYfOQ6DL9dD49LgW21RdJd1hVKRgMEivXr3o1asXHTt2ZPLkyQAFVWWBQKBgOX89HA4XeaziRCIRFi9eTHJycpnyqyrDhg3jj3/84zGdpyLY10ZT8RJrQ5s+0O8x+NXHcPdauGY8NPsxfPQEPHMOTOwPy1+BQ/viXVpjSvX111+zdu3agvUVK1Zw6qmnHvNx6taty759+4pd79u3L88888wR5wG46KKLmDJlCgCzZ89m165dAPTu3Zvp06ezbZvr/GTnzp1s3Fhkj/gVzoKLqXx1mkHn6+CGN+GuVdB7lGswMPPX8Ocz4a3bYcc38S6lMcXav38/w4YNo127dnTq1InVq1fzhz/84ZiPc8kll7B69Wq6dOnCtGnTuPrqq/nHP/5Bly5dWLRoEU8//TTp6el06tSJdu3a8fzzzwMwatQoFi5cSPv27ZkxYwatWrUCoF27djz66KP07duXTp06cdlll7Fly5ZYXnqZiXW55aSlpakNFhZHqq4V2mevwsq/uybUXa6Hi3/nmj0bE2XNmjX8+Mc/jncxapyiPncRWaaqaYXz2p2LOTGIQMuuMOBp+M3n7t2hL6bBM+fCrHtcM2hjTJVhwcWceOo0g8vHwB2fuQf+SyfAU11g3oNwcGe8S2eMKQMLLubEVb+Fu5P59VL48dWuOfPY7vCfefEumTGmFBZczImv8enw0xdh5AeuJ4ApP4OZd1jLMmNOYBZcTNVxShcXYHrcCZ+9AuMugA0fxblQxpiiWHAxVUsoCS57GG6a44YhmHQVzPm964zTGHPCsOBiqqZW3dwLmecNh8XPwQsX27sxplKJCDfccLgf3nA4TNOmTbnqqqtK3bdOnTqA635/0KBBFVbGeLLgYqquxNpw5V/ghhnuJcyXesOGE3hcHVOt1K5dmy+//JKsLHfXPH/+fJo3b17KXkeK7n6/urHgYqq+M3rDiPfdwGYvD4QVU+JdIlNDXHHFFbz77rsAvP766wwZcnikkT/84Q/8+c9/Lljv0KEDGzZsOGL/DRs20KFDBwAOHjzItddeS7t27bjmmmvo1q0b+S92z5s3j/PPP59zzjmHn/3sZ+zfv7+Cr+z4WceVpnpodBoMnwdvDIW3fuV6Zr7kAet1uSaYfZ/rhTuWftTRvWtVisGDBzN69GiuuuoqvvjiC26++WYWLVpUrlOOHTuWhg0bsnr1ar788ku6dOkCwA8//MCjjz7Ke++9R+3atXn88cd54okneOihh8p1nspSYb95IjJRRLb5UScLb/sfEVERaeLXRUSeFpEMEflCRM6JyjtMRNb6aVhU+rkistLv87SIGwZRRBqJyHyff76INKyoazQnmJSGrorsnGGw6C8w/UbIORjvUplqrFOnTmzYsIHXX3+9YDTJ8vroo48YPNgNnNuhQwc6dXLDWSxevJjVq1fTo0cPunTpwuTJk+PWGeWxqMg7l0nAs8DL0Yki0hLoC3wblXw50MZP3YBxQDcRaYQbHjkNUGCZiMxU1V0+zwjgU9xIlf2B2cB9wPuqOkZE7vPr91bQNZoTTTABrn7KDXY270HYvQmGTIW6J8W7ZKailOEOoyINGDCAu+++mw8++IAdO3YUpIdCISKRSMF6dnYJw4iXQFW57LLLeP3114+7rJWpwu5cVHUhbgz7wp4EfocLFvkGAi+rsxhoICInA/2A+aq60weU+UB/v62eqi5W1/Pmy8BPoo412S9Pjko3NYUIXPDfMPg12P4V/O1y2LM53qUy1dTNN9/MqFGj6Nix4xHpqampLF++HIDly5ezfv36Eo/To0cP3njjDQBWr17NypWuqq979+58/PHHZGRkAHDgwAH+85//xPoyYq5SK6RFZCCwWVU/L7SpObApaj3Tp5WUnllEOsBJqprfx/RWoNivrCIyUkTSRSR9+/btx3o55kR31pXwi7dcS7K/Xe6GZTYmxlq0aMEdd9xxVPpPf/pTdu7cSfv27Xn22Wdp27Ztice57bbb2L59O+3ateOBBx6gffv21K9fn6ZNmzJp0iSGDBlCp06dOP/88/nqq68q6nJiptIe6ItILeD3uCqxSqGqKiLFjimgquOB8eC63K+scplK1KobDH0LXrkGJl0Jw2a6h//GHKeiWmzlj0wJkJKSwrx5RfeDl79vamoqX37pHksnJyfz6quvkpyczDfffEOfPn0KBiC79NJLWbp0aQVcRcWpzDuX04HWwOcisgFoASwXkR8Bm4GWUXlb+LSS0lsUkQ7wva82w8+3xfxKTNXS/FwY9k833PLfroQf1pa+jzGV7ODBg/Ts2ZPOnTtzzTXXMHbsWBITE+NdrHKrtOCiqitVtZmqpqpqKq4q6xxV3QrMBIb6VmPdgT2+amsu0FdEGvpWX32BuX7bXhHp7luJDQXe9qeaCeS3KhsWlW5qspM7w43vQCQX/nYFbDvxqxVMzVK3bl3S09P5/PPP+eKLL7j88svjXaTjUpFNkV8HPgHOFJFMERleQvZZwDogA3gRuA1AVXcCjwBL/TTap+HzvOT3+QbXUgxgDHCZiKwF+vh1Y+Ck9nDjuyABV0W29ahW8saYGLFhjj0b5rgG2fENTL4acg/C0Jlwcqd4l8gcIxvmOD5smGNjStL4dHcHk1AbXh4Q+7e7jTEWXEwN1ag13PhPSKgFkwdYFZkxMWbBxdRcjU5zD/lDye4O5vtV8S6RqUKCwSBdunQpmAp3SgmuY8vdu3cXe4zU1FR++OGHmJbrgw8+KLbb//zz7d69m7Fjx8b0vIVZcDE1W36ACSa55zDfr453iUwVkZKSwooVKwqm1NTUgm2qSiQSYdasWTRo0CBuZSyOBRdjKkPj032ASbQAY8ptw4YNnHnmmQwdOpQOHTqwadOmgjuFAwcOcOWVV9K5c2c6dOjAtGnTjtg3KyuLyy+/nBdffJENGzZw1llnceONN9K2bVt+/vOf895779GjRw/atGnDkiVLANcNzM0330zXrl05++yzefvto9+62LFjB3379qV9+/bccsst5Dfguu+++/jmm2/o0qUL99xzDwB/+tOfOO+88+jUqROjRo067s/Dutw3BlyAGfaOa6I8+Wr30uVJ7eJdKlMGjy95nK92xva9pbMancW9XUvu7zYrK6ugW/zWrVvz5JNPsnbtWiZPnkz37t2PyDtnzhxOOeWUgrFf9uzZU7Bt//79DB48mKFDhzJ06FA2bNhARkYGf//735k4cSLnnXceU6ZM4aOPPmLmzJn87//+L2+99RaPPfYYl156KRMnTmT37t107dqVPn36HHHehx9+mJ49e/LQQw/x7rvvMmHCBADGjBnDl19+yYoVKwA3XszatWtZsmQJqsqAAQNYuHAhF110Ubk/Q7tzMSZfkzNcK7JAyPVFtmlJvEtkTmDR1WL/+Mc/ADj11FOPCiwAHTt2ZP78+dx7770sWrSI+vXrF2wbOHAgN910E0OHDi1Ia926NR07diQQCNC+fXt69+6NiNCxY8eCZzvz5s1jzJgxdOnShV69epGdnc233357xHkXLlxYMBTzlVdeScOGRY9AMm/ePObNm8fZZ5/NOeecw1dffcXatcfXk4XduRgTrckZMHyu64ts8gC49mVoW2nd4ZlyKO0OozLVrl27yPS2bduyfPlyZs2axQMPPEDv3r0LBvvq0aMHc+bM4frrr8cPS0VSUlLBvoFAoGA9EAgQDocB91znzTff5MwzzzziXN9///0xl1tVuf/++/nlL395zPsWx+5cjCmsYSrcPA+atoXXB8PnU+NdIlPFfffdd9SqVYsbbriBe+65p6ArfoDRo0fTsGFDbr/99mM6Zr9+/XjmmWcKnqN89tlnR+W56KKLmDLFDfs9e/Zsdu3aBbiuZvbt23fEsSZOnFjQoebmzZvZtu34umW04GJMUeo0dc9gUnvAP34JnzwX7xKZKmzlypV07dqVLl268PDDD/PAAw8csf2pp54iKyuL3/3ud2U+5oMPPkhubi6dOnWiffv2PPjgg0flGTVqFAsXLqR9+/bMmDGDVq1aAdC4cWN69OhBhw4duOeee+jbty/XX389559/Ph07dmTQoEFHBJ/ysO5fPOv+xRQpfAhmjIDVb0PPu6D3KDcYmYkr6/4lPqz7F2NiJZQEg/4G594EHz0Jb98OuVnxLpUxJzx7oG9MaQJBuOpJqHMSfDgGNi+Hn74EP+oQ75IZc8KyOxdjykIELrkfbpgBWTvhxUth8TiwauW4sSr9ynWsn7cFF2OOxRm94Vf/htMvgTn3wWuDYL8NdlrZkpOT2bFjhwWYSqKq7Nixg+Tk5DLvYw/0PXugb46JKix9CeY9AEl1YeBYex+mEuXm5pKZmUl2dna8i1JjJCcn06JFCxISEo5IL+6BfoU9cxGRicBVwDZV7eDT/gRcDeTgRo+8SVV3+233A8OBPOAOVZ3r0/sDTwFB4CVVHePTWwNTgcbAMuAXqpojIknAy8C5wA7gOlXdUFHXaWooEeg6AlJ7wpu3wJSfwY8HwEV3uyGVTYVKSEigdevW8S6GKUFFVotNAvoXSpsPdFDVTsB/gPsBRKQdMBho7/cZKyJBEQkCzwGXA+2AIT4vwOPAk6p6BrALF5jw810+/Umfz5iK0ezHcMv7cPG9sO5DeOEieHUQfLs43iUzJq4qLLio6kJgZ6G0eaoa9quLgRZ+eSAwVVUPqep6IAPo6qcMVV2nqjm4O5WB4vpIuBSY7vefDPwk6liT/fJ0oLeIvZhgKlBCMlzye7hrJVz6IHy3HCb2g79dCd/8yx76mxopng/0bwZm++XmwKaobZk+rbj0xsDuqECVn37Esfz2PT6/MRUrub6rFrtzJfT7I+z8xvVRNq4HvD8aNv4b8sKlH8eYaiAu77mIyP8DwsBr8Th/VDlGAiOBgm4RjDluibXh/NvgvOGwYgp88QZ89FdY9BdIqg+nXQxn9HEtz+q3KPVwxlRFlR5cRORG3IP+3nq4qdpmoGVUthY+jWLSdwANRCTk706i8+cfK1NEQkB9n/8oqjoeGA+utdjxXZkxhYSSIO0mN2XvgXUfQMZ7kPE+rJnp8qQ0giZtoPEZbkyZxmdA4zbQoJULUlaja6qoSg0uvuXX74CLVfVg1KaZwBQReQI4BWgDLAEEaONbhm3GPfS/XlVVRBYAg3DPYYYBb0cdaxjwid/+L7X21ibekutDu4FuUoXtX7lgs/0r2PGNCzgrCt3IBxNd8KnVyM8bQkpDSKjtnvOEUtw8oRaEkl0wCwQhkODGpAmE/HoIJFDMBCA+iBUxz3dEkCsU8EraVhYWQOOvXnNIqhPTQ1ZkU+TXgV5AExHJBEbhWoclAfP9M/bFqnqrqq4SkTeA1bjqsttVNc8f59fAXFxT5Imqusqf4l5gqog8CnwGTPDpE4BXRCQD16BgcEVdozHlIuJamTUr1PHioX0u0OzIgD2ZrieAgzsha5eb/7DWLedmuSmSG5/ym+rn529Cmz6l5zsG9hKlZy9RmionLwzhbDflZkFeDkTCbsrLhUieX891d0saiZqi1lHfoq3wPF/U8lF/L0raVhb29+eEcGoPqPujcu1a6S9RGmMqWDAEwToxr84wJhasbzFjjDExZ8HFGGNMzFlwMcYYE3MWXIwxxsScBRdjjDExZ8HFGGNMzFlwMcYYE3MWXIwxxsScBRdjjDExV2Jw8aNBflVZhTHGGFM9lBhcfOeRX4uIDXZijDGmzMrSt1hDYJWILAEO5Ceq6oAKK5UxxpgqrSzB5cEKL4UxxphqpdTgoqofisipQBtVfU9EauHGVjHGGGOKVGprMREZAUwHXvBJzYG3KrBMxhhjqriyNEW+HegB7AVQ1bVAs9J2EpGJIrJNRL6MSmskIvNFZK2fN/TpIiJPi0iGiHwhIudE7TPM518rIsOi0s8VkZV+n6fFD21Z3DmMMcZUnrIEl0OqmpO/IiIhyjZ83CSgf6G0+4D3VbUN8L5fB7gcaOOnkcA4f65GuOGRuwFdgVFRwWIcMCJqv/6lnMMYY0wlKUtw+VBEfg+kiMhlwN+Bf5a2k6ouxI1hH20gMNkvTwZ+EpX+sjqLgQYicjLQD5ivqjtVdRcwH+jvt9VT1cXqxml+udCxijqHMcaYSlKW4HIfsB1YCfwSmAU8UM7znaSqW/zyVuAkv9wc2BSVL9OnlZSeWUR6SecwxhhTScrSWiwCvOinmFFVFZGyVK9V2DlEZCSuGo5Wrew9UWOMiZVig4uIrKSEZyuq2qkc5/teRE5W1S2+amubT98MtIzK18KnbQZ6FUr/wKe3KCJ/Seco6hrGA+MB0tLSKjTQGWNMTVJStdhVwNXAHD/93E+zcVVj5TETyG/xNQx4Oyp9qG811h3Y46u25gJ9RaShf5DfF5jrt+0Vke6+ldjQQscq6hzGGGMqSbF3Lqq6EUBELlPVs6M23SsiyymlFZaIvI6762giIpm4Vl9jgDdEZDiwEbjWZ58FXAFkAAeBm3wZdorII8BSn2+0quY3ErgN1yItBRfwZvv04s5hjDGmkpSl+xcRkR6q+rFfuYAyNARQ1SHFbOpdRF7FvU9T1HEmAhOLSE8HOhSRvqOocxhjjKk8ZQkuw4GJIlIfEGAXcHOFlsoYY0yVVpbWYsuAzj64oKp7KrxUxhhjqrSSWovdoKqvishvC6UDoKpPVHDZjDHGVFEl3bnU9vO6lVEQY4wx1UdJrcXye0Eeq6rbK6k8xhhjqoGydP/ysYjME5Hh1sOwMcaYsihLk+K2uL7E2gPLROQdEbmhwktmjDGmyirLnQuqukRVf4vr9n4nh3sdNsYYY45SlpEo6/kBu2YD/wa24IKMMcYYU6SyvET5OW5Y49Gq+knFFscYY0x1UJbgcprvnsUYY4wpk5Jeovyrqt4JzCxqTBRVHVCRBTPGGFN1lXTn8oqf/7kyCmKMMab6KOklymV+/mHlFccYY0x1UNkjURpjjKkBSqoWu8rP88dZya8mu4ESgo4xxhhTYSNRGmOMqbnK8oa+iEiPqJUyjURZygHvEpFVIvKliLwuIski0lpEPhWRDBGZJiKJPm+SX8/w21OjjnO/T/9aRPpFpff3aRkiYkHQGGMqWVmCxHBgrIhsEJGNwFiOYyRKEWkO3AGkqWoHIAgMBh4HnlTVM3CjXQ6POv8un/6kz4eItPP7tQf6+zIGRSQIPAdcDrQDhvi8xhhjKklZOq5cpqqdgc5AJ1XtoqrLj/O8ISBFREJALVyXMpcC0/32ycBP/PJADvdlNh3oLW7EsoHAVFU9pKrrgQxctzRdgQxVXaeqOcBUn9cYY0wlKfUNfRFJAn4KpAKhqJEoR5fnhKq6WUT+DHwLZAHzgGXAblUN+2yZQHO/3BzY5PcNi8geoLFPXxx16Oh9NhVK71bMtY0ERgK0atWqPJdjjDGmCGWpFnsb980/DByImsrFjwkzEGgNnIIb8bJ/eY93PFR1vKqmqWpa06ZN41EEY4yplsrSt1gLVY3lH/8+wPr80S1FZAbQA2ggIiF/99IC2OzzbwZaApm+Gq0+sCMqvaCcUfsUl26MMaYSlOXO5d8i0jGG5/wW6C4itfyzk97AamABMMjnGYa7YwKY6dfx2//lO9KcCQz2rclaA22AJcBSoI1vfZaIe+g/M4blN8YYU4qy3Ln0BG4UkfXAIUAALe8b+qr6qYhMB5bjqto+A8YD7wJTReRRnzbB7zIBeEVEMnADlQ32x1klIm/gAlMYuF1V8wBE5NfAXFxLtImquqo8ZTXGGFM+Ulpv+iJyalHp+S9ZVhdpaWmanp4e72IYY0yVIiLLVDWtcHpJfYvVU9W9wL4KLZkxxphqp6RqsSm4/sWW4foSk6htCpxWgeUyxhhThZXUt9hVft668opjjDGmOjiuPsKMMcaYolhwMcYYE3MWXIwxxsRcSa3FGpW0o6rujH1xjDHGVAcltRYrqpVYPmstZowxplgltRazVmLGGGPKpaRqsXNK2jEGY7oYY4yppkqqFvtLCdsUN7iXMcYYc5SSqsUuqcyCGGOMqT7K0isyItIBNx59cn6aqr5cUYUyxhhTtZVlmONRQC9ccJkFXA58BFhwMcYYU6SyvEQ5CDeg11ZVvQnojBsN0hhjjClSWYJLlqpGgLCI1AO2ceQwwsYYY8wRyhJc0kWkAfAi7sXK5cAnx3NSEWkgItNF5CsRWSMi54tIIxGZLyJr/byhzysi8rSIZIjIF9FNpEVkmM+/VkSGRaWfKyIr/T5P++GUjTHGVJJSg4uq3qaqu1X1eeAyYJivHjseTwFzVPUsXDXbGuA+4H1VbQO879fBPeNp46eRwDgo6J5mFNAN6AqMyg9IPs+IqP36H2d5jTHGHINSg4uIvJ+/rKobVPWL6LRjJSL1gYuACf6YOaq6GxgITPbZJgM/8csDgZfVWQw0EJGTgX7AfFXdqaq7gPlAf7+tnqouVjeG88tRxzLGGFMJSnpDPxmoBTTxdwT5VUv1gObHcc7WwHbgbyLSGVfV9hvgJFXd4vNsBU7yy82BTVH7Z/q0ktIzi0g/ioiMxN0N0apVq/JfkTHGmCOUdOfyS9wf/rP8PH96G3j2OM4ZAs4Bxqnq2cABDleBAeDvOPQ4zlEmqjpeVdNUNa1p06YVfTpjjKkxig0uqvqU77zyblU9TVVb+6mzqh5PcMkEMlX1U78+HRdsvvdVWvj5Nr99M0e2Tmvh00pKb1FEujHGmEpSlgf6z4jIBSJyvYgMzZ/Ke0JV3QpsEpEzfVJvYDUwE8hv8TUMd4eETx/qW411B/b46rO5QF8Raeir7foCc/22vSLS3bcSGxp1LGOMMZWgLG/ovwKcDqwA8nxy/oPy8vpv4DURSQTWATfhAt0bIjIc2Ahc6/POAq4AMoCDPi+qulNEHgGW+nyjowYwuw2YBKQAs/1kjDGmkoh7vFFCBpE1QDstLWMVl5aWpunp6fEuhjHGVCkiskxV0wqnl+Ulyi+BH8W+SMYYY6qrsvSK3ARYLSJLgEP5iao6oMJKZYwxpkorS3D5Q0UXwhhjTPVSanBR1Q+j10WkJzAE+LDoPYwxxtR0ZR0s7GzgeuBnwHrgzYoslDHGmKqtpO5f2uLuUIYAPwDTcK3LbPhjY4wxJSrpzuUrYBFwlapmAIjIXZVSKmOMMVVaSU2R/wvYAiwQkRdFpDeHO680xhhjilVS32JvqepgXMeVC4A7gWYiMk5E+lZS+YwxxlRBZelb7ICqTlHVq3GdQH4G3FvhJTPGGFNlleUN/QKqust3U9+7ogpkjDGm6jum4GKMMcaUhQUXY4wxMWfBxRhjTMxZcDHGGBNzFlyMMcbEXJn6FqsIIhIE0oHNqnqViLQGpgKNgWXAL1Q1R0SScKNengvsAK5T1Q3+GPcDw3EjZN6hqnN9en/gKSAIvKSqYyr14oyJI1UlrGHCETflRfLI0zwUJS/i5hGNENEIqkoEN8//z/2vBceCqHWKHzOwmo8nWK01r9OcOol1YnrMuAUX4DfAGqCeX38ceFJVp4rI87igMc7Pd6nqGSIy2Oe7TkTaAYOB9sApwHu+PzSA54DLgExgqYjMVNXVlXVhxhyP7HA2Ww5sYWf2TnZm72RH1o6C5Z3ZOzmYe5CscFbBlJ2XTVY4i5y8HHIjuYQj4XhfgqlixvUZR8/mPWN6zLgEFxFpAVwJPAb8VkQEuBTX8zLAZNw4MuOAgRweU2Y68KzPPxCYqqqHgPUikgF09fkyVHWdP9dUn9eCizmh5EXy2LRvE2t3ryVjVwZrd69l7a61fLvvWyIaOSp/g6QGNExuSO1QbVISUmhaqynJwWRSQimkhFJICiYRCoQKpoRAQsFyUIIEJICIECBAQAIF64Icnkct53f2JH6hYC7F9wIlxfQQVVy6OTGc1eismB8zXncufwV+B9T1642B3aqa/5UrE2jul5sDmwBUNSwie3z+5sDiqGNG77OpUHq3ogohIiOBkQCtWrUq/9UYU0YHcw/y0eaPmL9xPgszF3IwfBBwf3xb1m1Jm4Zt6N+6P63qtqJxSmMaJzemcUpjGiQ1IBSIZ0WDMcem0n9aReQqYJuqLhORXpV9/miqOh4YD5CWlmYVxqZC7MvZx4eZH/Lexvf4ePPHZOdl0yi5EZe3vpwuzbrQpkEbTmtwGimhlHgX1ZiYicdXoR7AABG5AkjGPXN5CmggIiF/99IC2OzzbwZaApkiEgLq4x7s56fni96nuHRjKs2W/Vt4bsVzzFo/i9xILs1SmnFNm2u47NTLOKfZOQQDwXgX0ZgKU+nBRVXvB+4H8Hcud6vqz0Xk78AgXIuxYcDbfpeZfv0Tv/1fqqoiMhOYIiJP4B7otwGW4GqK2/jWZ5txD/3zn+UYU+H2HNrDhJUTeG3NawAMajuIK1pfQaemnQiItf43NcOJVIl7LzBVRB7F9bw8wadPAF7xD+x34oIFqrpKRN7APagPA7erah6AiPwamItrijxRVVdV6pWYGulQ3iFeX/M6L658kX05+7j69Kv5dZdfc3Kdk+NdNGMqnVjbdCctLU3T09PjXQxTBakqs9bP4qnlT7HlwBZ6NO/BXefcxZmNzox30YypcCKyTFXTCqefSHcuxlQ5WeEsRn8ymnfWvUO7xu14pMcjdDu5yMaJxtQoFlyMKadNezdx5wd3snbXWm7vcjsjO420ZyrGeBZcjCmHhZkLuW/RfQjCc72f48IWF8a7SMacUCy4GHMMIhrhhc9fYNzn4ziz0Zk80esJWtZtWfqOxtQwFlyMKaM9h/Zw/6L7WbR5EQNOH8CD3R8kOZQc72IZc0Ky4GJMGezI2sGI+SNYv2c9D3R7gGvPvLbEPraMqeksuBhTim0Ht3HLvFvcG/e9n+OCUy6Id5GMOeFZcDGmBN/t/45b5t3CjqwdjOszjrQfHdWc3xhTBAsuxhRj095NDJ83nP05+xnfdzydm3aOd5GMqTIsuBhThHV71jFi7ghyIjm81O8l2jVuF+8iGVOlWHAxppD/7PoPI+aNQBAm9ptIm4Zt4l0kY6oce53YmChf7/ya4XOHEwqE+Fv/v1lgMaac7M7FGC9jVwYj5o0gMZjIpH6TaFnPXo40przszsUY3DOWW+bdQigQYmK/iRZYjDlOFlxMjbdx70ZumXsLivJSv5c4td6p8S6SMVWeVYuZGm3Tvk0MnzuccCTMhH4TOK3+afEukjHVQqXfuYhISxFZICKrRWSViPzGpzcSkfkistbPG/p0EZGnRSRDRL4QkXOijjXM518rIsOi0s8VkZV+n6fF+ukwRfhu/3fcMvcWssJZvNj3RXt4b0wMxaNaLAz8j6q2A7oDt4tIO+A+4H1VbQO879cBLgfa+GkkMA5cMAJGAd2ArsCo/IDk84yI2q9/JVyXqUK2HtjK8LnD2Zezj/F9x9uokcbEWKUHF1XdoqrL/fI+YA3QHBgITPbZJgM/8csDgZfVWQw0EJGTgX7AfFXdqaq7gPlAf7+tnqouVjeG88tRxzKGTfs2ceOcG9l1aBcvXPYC7Ru3j3eRjKl24vpAX0RSgbOBT4GTVHWL37QVOMkvNwc2Re2W6dNKSs8sIr2o848UkXQRSd++ffvxXYypEtbtWceNc25kX84+Xur7Eh2bdox3kYypluIWXESkDvAmcKeq7o3e5u84tKLLoKrjVTVNVdOaNm1a0aczcfb1zq+5ac5NhCNhJvabSIcmHeJdJGOqrbgEFxFJwAWW11R1hk/+3ldp4efbfPpmIPqlgxY+raT0FkWkmxrsi+1fcNPcm0gIJDC5/2R7xmJMBYtHazEBJgBrVPWJqE0zgfwWX8OAt6PSh/pWY92BPb76bC7QV0Qa+gf5fYG5ftteEenuzzU06limBlq6dSkj5o2gfmJ9Jl8+mdT6qfEukjHVXjzec+kB/AJYKSIrfNrvgTHAGyIyHNgIXOu3zQKuADKAg8BNAKq6U0QeAZb6fKNVdadfvg2YBKQAs/1kaqCPNn/EnQvupHmd5rzY90Wa1WoW7yIZUyOIe7xh0tLSND09Pd7FMDGiqkz7ehqPL3mcMxqewQuXvUCj5EbxLpYx1Y6ILFPVo0bRszf0TbWTk5fDY58+xoy1M7ioxUWMuXAMdRPrxrtYxtQoFlxMtbL94Hbu+uAuPt/+OSM6juD2LrcTDATjXSxjahwLLqba+Hz759y14C725+7nLxf/hb6pfeNdJGNqLAsuplr4x9p/8MjiR2hWqxmv9HnFmhobE2cWXEyVtjN7J/+39P94d927dDu5G3++6M80SG4Q72IZU+NZcDFVkqoy85uZ/Cn9TxzIPcCvOv+KkZ1GEgrYj7QxJwL7TTRVzrd7v2X0J6P5dOunnN3sbEadP4rTG5we72IZY6JYcDFVRm4kl8mrJvP858+TEEjgwe4PMqjtIAJiA6oac6Kx4GJOeOFImNnrZ/PSypdYt2cdfVr14f5u99vb9sacwCy4mBNWdjibtzLeYtKqSWzev5kzGpzBU5c8xaWtLo130YwxpbDgYk44+3L2Me3raby6+lV2ZO+gU9NO3HvevVzc8mKrAjOmirDgYk4IeZE80r9PZ86GOcxdP5d9ufu44JQLuKXjLaSdlIbr4NoYU1VYcDFxE9EIn237jNnrZzN/43x2Zu8kJZTCpa0u5RftfmHDDxtThVlwMZVq28FtLP9+Oenfp7Ng0wK2HdxGUjCJi1pcRP/U/lzY4kJSQinxLqYx5jhZcDEVJqIRNu3bxPLvl7Ps+2Us37acTfs2AZASSqHbyd347bm/pVfLXtROqB3n0hpjYsmCizlueZE8vtv/Hd/s+YZvdvtpzzes37OerHAWAA2SGnB2s7O57szrOKfZOZzV+CwSAglxLrkxpqJU2+AiIv2Bp4Ag8JKqjolzkaqccCTM3py97D60m93Zu9mVvYutB7fy/YHv2XpgK1sPbmXrga1sP7idsIYL9mtWqxmn1z+dn7b5Kac3OJ2zm51N6/qtj7ull6qSlZvHgUN5HDgUZv+hMAdz3PKBHLeclZPn52Gyct1yTjhCOKLk5kUI5ynhSITcPCWiSiggBAMBNw+KXxdqJQapnRSiTmKIOskht5wUom5yiPopCTRISaR+rQTqJoUIBKyxgTGFVcvgIiJB4DngMiATWCoiM1V1dXxLVn6qSp7muSmSR1jD5EXcejgSJhwJkxvJPTzlHZ5n52VzKO8Q2WE3z58O5B44YjqYe5ADuQcKAsrenL1FliUxkEiTlGY0TTmJHzfswoUnN6Npyik0r9Wak1JakSC1yM1TwnkRcvIifLM5wppvt3Io160fys0jJy9Cdm6ErNw8sv2UlZNHVm4eWbkRsnLCHDiUx8GcMAd80DiQE+ZYBk5NSQiSkhgkKRQgFBQSAm4eCgRICAoiQkSVcJ6SF3FBJxxx61m5eezPDpOTFynxHAGBeikJNEhJoH5KAvVSEqiXnEDd5JBfdkGpVmKIlMQgtRKDfh6ili9bQtBNiaEAiUFXtlDQmlybqq1aBhegK5ChqusARGQqMBCIeXD544dTmfbNeACU6L986ieKmSsqGpUvf4q444hbBgUp+Q9cuUVCqCZBxE3q55G8hkTymqPhWmhebTSvlp9qo7n10bza7ED4+qgD7vRT2SUGAyQlBEhJCJKcEPTzALWTQpzSINHfQRz+Y1w7Kf8uwqXV8eu18v9wJ7j05IRATJov54QjBXdJ+w+F2ZcdZk9WLrsP5rAnK9cv57I7K5d92bnszcply55s9mblsjc7l+zc8v/bhQJCIODvpuTwsogg4gKbIG7ur1XET7g8AELU9vyDR300xX1KldX82+774u9//6sj56XGdhjw6hpcmgObotYzgW6FM4nISGAkQKtWrcp1oj2H9pEn+2gW7MKRvybi1kT8shSk528TAn45EJVHEAn4tfx50P+iBwgQdOni5m49SECCBAgRlBABEghI0C+HCAaSCJFIKJBISPKnJIKBEAFxZw0EpOCPUjAAAREC4qqIgn5b0K+7KqQAQZGCP4AJQSEh6KqXEvw38Ojl5IQAicEgiaEASaFAwfxE/4aeGAqQGEqkYe3Ecu1/KJxXcAeWX2V3IGo5Ny9CTjji5nlasJybFyEvouSpEoko4cjhueLuZFUhUjD3X26Ugu2Qv0zBMlHbotOOcgx3iMdDK+tEpkQpCbEfrbW6BpcyUdXxwHiAtLS0cv2Uj+k7gjGMiGm5TPWRFAqSFArSqJzByZiq6sT+2lh+m4GWUestfJoxxphKUF2Dy1KgjYi0FpFEYDAwM85lMsaYGqNaVoupalhEfg3MxTVFnqiqq+JcLGOMqTGqZXABUNVZwKx4l8MYY2qi6lotZowxJo4suBhjjIk5Cy7GGGNizoKLMcaYmBM9ls6aqjER2Q5sLOfuTYAfYlicqsg+A/sMavr1Q838DE5V1aaFEy24xICIpKtqWrzLEU/2GdhnUNOvH+wziGbVYsYYY2LOgosxxpiYs+ASG+PjXYATgH0G9hnU9OsH+wwK2DMXY4wxMWd3LsYYY2LOgosxxpiYs+BynESkv4h8LSIZInJfvMtTGURkoohsE5Evo9Iaich8EVnr5w3jWcaKJCItRWSBiKwWkVUi8hufXpM+g2QRWSIin/vP4GGf3lpEPvW/D9P8kBfVlogEReQzEXnHr9eo6y+JBZfjICJB4DngcqAdMERE2sW3VJViEtC/UNp9wPuq2gZ4369XV2Hgf1S1HdAduN3/u9ekz+AQcKmqdga6AP1FpDvwOPCkqp4B7AKGx6+IleI3wJqo9Zp2/cWy4HJ8ugIZqrpOVXOAqcDAOJepwqnqQmBnoeSBwGS/PBn4SWWWqTKp6hZVXe6X9+H+uDSnZn0Gqqr7/WqCnxS4FJju06v1ZyAiLYArgZf8ulCDrr80FlyOT3NgU9R6pk+riU5S1S1+eStwUjwLU1lEJBU4G/iUGvYZ+CqhFcA2YD7wDbBbVcM+S3X/ffgr8Dsg4tcbU7Ouv0QWXEzMqWvfXu3buItIHeBN4E5V3Ru9rSZ8Bqqap6pdgBa4u/iz4luiyiMiVwHbVHVZvMtyoqq2I1FWks1Ay6j1Fj6tJvpeRE5W1S0icjLu22y1JSIJuMDymqrO8Mk16jPIp6q7RWQBcD7QQERC/tt7df596AEMEJErgGSgHvAUNef6S2V3LsdnKdDGtxBJBAYDM+NcpniZCQzzy8OAt+NYlgrl69YnAGtU9YmoTTXpM2gqIg38cgpwGe7Z0wJgkM9WbT8DVb1fVVuoairu9/5fqvpzasj1l4W9oX+c/DeXvwJBYKKqPhbfElU8EXkd6IXrXvx7YBTwFvAG0Ao3dMG1qlr4oX+1ICI9gUXASg7Xt/8e99ylpnwGnXAPrIO4L6lvqOpoETkN17ClEfAZcIOqHopfSSueiPQC7lbVq2ri9RfHgosxxpiYs2oxY4wxMWfBxRhjTMxZcDHGGBNzFlyMMcbEnAUXY4wxMWfBxQAgIj8RERWRMr1lLSJ3ikitMuT7QETS/PIGEWlyDGWaJCKDSs9ZpmNd6HvvXeHfy4gJEblVRIaWsL2XiFwQw/PtLz1XkfulicjTsSpHEce/UUROidGxUqN73I7B8X4uIl+IyEoR+beIdI7aVmSv5qX1biwiP/W/L2mxKmd1Y8HF5BsCfOTnZXEnUGpwiQdxCv9s/xz4o6p2UdWsqLzH1UuFqj6vqi+XkKUXELPgUl6qmq6qd1TgKW4EYhJcjlcR/6brgYtVtSPwCH4o4lJ6NS+2d2MRqYvrDfnTiryOqs6Ci8nvI6sn7hdocFR6L3/nMV1EvhKR1/wf7jtwf0gW+G4/EJFxIpIePbbHMZx/f9TyIBGZVESeR/ydTFBE7hGRpf7baP44Iqn+G+jLwJdEdcsjIrcA1wKP+GvoJSKLRGQmsNrneUtElvnyjyymnGPEjeHyhYj82af9QUTu9st3RG2fKq5Ty1uBu/wd04X+zfY3ffmXikiPIs5zo4g8G7X+jn9RLzpPExH5RESuLOMxe4kfc6RQentx47Ks8OVu49NviEp/wf8hRkT2i8iT/nN63597EJAGvJZ/Zygi54rIh/4znSuuO5z8O9kn/c/KGhE5T0RmiBsD59GoooX8v9Ua//NXy+9f0nH/KiLpuD/8BVT136q6y68uxnXLAsX0ai5Sau/Gj+CCT3bhz9NEUVWbaviE+1Y/wS//GzjXL/cC9uB+GQPAJ0BPv20D0CTqGI38PAh8AHTy6x8AaUXtE7Xv/qjlQcAkvzzJr/8JeB4QoC/um6f4Mr0DXASk4t6W717MNU4CBkVd1wGgdRHlT8EFp8aF9m8MfM3hF48b+PkfcG9nA3wHJBW33a9PifoMW+G6kClc1huBZ6PW3wF65X9WuN6WPwUuO4Zj9gLeKSL9GeDnfjnRX/+PgX8CCT59LDDUL2tU/ofyy1no3zkB93PU1K9fh+u9Ij/f4375N/4zOxlIwvUi3Nj/WyrQw+ebCNxdhuOOLcPP+t3AS1E/ay9FbfsF8Cyu54mMqPSWwJd++RzgzcLXbNPRk3VcacBVhT3ll6f69fzeXpeoaiaAuO7VU3HVZ4Vd67/xh3B/LNoBX8SgbA8Cn6rqSF+GvrgA85nfXgdoA3wLbFTVxWU87hJVXR+1foeIXOOXW/pj7ojavgf3TXWCvwM46i4Ad72vichbuO5witIHaOe+HANQT0Tq6OGxUUqTgBuI7HZV/TAGx/wE+H/ixiaZoaprRaQ3cC6w1B8zhcOdcEaAaX75VWAGRzsT6ADM9/sHgS1R2/P731sJrFI/TIGIrMN99ruBTar6cdR57gDmlHLcaZRARC7B3Z33LClfCfsHgCdwwd+UwoJLDScijXBVAB1FRHG/sCoi9/gs0f0i5VHEz4yItMZ9IzxPVXf5aq3kYyhGdB9EhfdbCpwrIo3U9dMluGcnLxQqQyrubqSsCvL6Kqc+wPmqelBEPihcDlUNi0hXoDfuG++vcZ9btCtxd1FX4/5gdyzivAHc3VVJVSphjqyyTi60bRnQD8gPLmU5ZpFUdYqIfOrLPktEfon7jCer6v1lOUQRaYILGucXs0/+z1SEI3++Ihz++Sp8XC3DcYv99xfXF9pLwOWqmv+lobhezXdQdO/GdXHB7QMf3H4EzBSRAaqaXty5ayp75mIGAa+o6qmqmqqqLXEPQC8sZb99uF82cN2NHwD2iMhJuAekx+J7Efmx/2Z4TaFtc4AxwLviHqTOBW4W95wIEWkuIs2O8XyF1Qd2+cByFm7o4iP489VX1VnAXUDnQtsDQEtVXQDc649ZhyM/J4B5wH9H7deliPJsALqISEBEWuKeDeRT4GbgLBG59xiOWSRxHS2uU9WncT34dsLdGQ3K/1xFpJGInOp3CXC419/rOXwXG32dXwNNReR8v3+CiLQva5m8Vvn7R52nXMcVkVa4O6xfqOp/ojYV2au5ujqvo3o3VtU9qtrE/56k4p7fWGAphgUXMwT4R6G0Nym91dh4YI6ILFDVz3HVVF/h6v8/LnHPo92Hq2b6N0dWcwCgqn8HXsRVpyzy5/hERFbiHrrWLbzPMZqDe4C8BhfIiqpaqwu8IyJf4P7Q/bbQ9iDwqi/TZ8DTqrob9+ziGv+g+0Jc9U6af3i+GvfAv7CPcQF+NfA0sDx6o6rm4f59LhWR28p4zOJcC3zpqzw7AC+r6mrgAWCev975uKpOcF8iuoprKnwpMNqnTwKe98cJ4v4wPy4inwMrOPYWc18Dt/t/k4bAOHUP3ctz3Idwz3LG+n+HdHB3o7g70Lm44QLeUNVVfp97gd+KSIbfd8Ixlr/Gs16RjTFlJiL7VbVOvMthTnx252KMMSbm7M7FGGNMzNmdizHGmJiz4GKMMSbmLLgYY4yJOQsuxhhjYs6CizHGmJj7/wvqUnT5o5AbAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1509\n" + ] + } + ], + "source": [ + "N = 157759 # Populasjonsstørrelse\n", + "a = 4/N # Kontaktrate\n", + "b = 3.5 # Bedringsrate\n", + "tid_slutt = 48 # Antall uker vi ønsker å simulere\n", + "\n", + "# Startverdier\n", + "I = 3 # Antall smittede til å begynne med\n", + "S = N-I # Antall usmittede til å begynne med\n", + "R = 0\n", + "\n", + "# Lister for å spare på verdiene\n", + "mulige = [S]\n", + "smittede = [I]\n", + "friskmeldte = [R]\n", + "t = [0]\n", + "\n", + "for i in range(tid_slutt):\n", + " endring_smittede = a*S*I\n", + " endring_friske = b*I\n", + " I = I + endring_smittede - endring_friske\n", + " S = S - endring_smittede\n", + " R = R + endring_friske\n", + " # Legger inn verdier i listene\n", + " smittede.append(I)\n", + " mulige.append(S)\n", + " friskmeldte.append(R)\n", + " t.append(i)\n", + "\n", + "plt.plot(t,smittede,label='Smittede')\n", + "plt.plot(t,mulige,label='Mulige')\n", + "plt.plot(t,friskmeldte,label='Friskmeldte')\n", + "plt.xlabel('Antall uker fra siste uke i september 2004')\n", + "plt.ylabel('Antall individer')\n", + "plt.legend() # Viser merkelapper\n", + "plt.show()\n", + "\n", + "plt.title('Antall smittede')\n", + "plt.xlabel('Antall uker fra siste uke i september 2004')\n", + "plt.ylabel('Antall individer')\n", + "plt.plot(t,smittede)\n", + "plt.grid()\n", + "plt.show()\n", + "\n", + "print(int(max(smittede)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Vi tar utgangspunkt i denne modellen og sammenlikner de smittede med et datasett som viser antall smittede i en influensasesong. Vi justerer _a_ og _b_ slik at de passer best mulig med dataene." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "N = 157759 # Populasjonsstørrelse\n", + "a = 4/N # Kontaktrate\n", + "b = 3.5 # Bedringsrate\n", + "tid_slutt = 48 # Antall uker vi ønsker å simulere\n", + "\n", + "# Startverdier\n", + "I = 3 # Antall smittede til å begynne med\n", + "S = N-I # Antall usmittede til å begynne med\n", + "R = 0\n", + "\n", + "# Lister for å spare på verdiene\n", + "mulige = [S]\n", + "smittede = [I]\n", + "friskmeldte = [R]\n", + "t = [0]\n", + "\n", + "for i in range(tid_slutt):\n", + " endring_smittede = a*S*I\n", + " endring_friske = b*I\n", + " # Legg inn likningene her\n", + " I = I + endring_smittede - endring_friske\n", + " S = S - endring_smittede\n", + " R = R + endring_friske\n", + " # Legger inn verdier i listene\n", + " smittede.append(I)\n", + " mulige.append(S)\n", + " friskmeldte.append(R)\n", + " t.append(i)\n", + "\n", + "# Les og plott dataene her\n", + "data = pd.read_csv('influensa.txt', skiprows=2,delimiter=',')\n", + "uke = data[\"uker\"]\n", + "smittede_data = data[\"infiserte\"]\n", + "\n", + "plt.plot(uke, smittede_data, label = 'Datapunkter')\n", + "plt.plot(t, smittede, label = 'Modelldata')\n", + "plt.title('Sammenlikning av modelldata med reelle data')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Modell 3 viser et forløp der antall smittede øker sakte i starten, og raskere fram til ca. uke 13. Da snur trenden, og antall smittede går nedover fra ca. uke 17. Det er maksimalt 1509 smittede i populasjonen på samme tid. Etter at antall smittede har nådd 0 (ca. uke 27), har vi ifølge modellen oppnådd flokkimmunitet, eller influensasesongen er over, og ingen flere individer blir smittet. Merk at modellen forutsetter at ingen dør av sykdommen, noe som ikke stemmer helt med influensa. Det er derimot ofte ganske få døde i forhold til befolkningen, så modellen gir uansett et godt estimat på hvor mange som er smittet til enhver tid i løpet av sesongen.\n", + "\n", + "Vi validerer modellen og tilpasser parameterne ved hjelp av datasettet som viser antall smittede i en populasjon på $N = 157 759$ testede individer. Den best tilpassede kurven får vi for $a \\approx 4/N$ og $b \\approx 3.5$. Siden dataene og modellen beskriver et vanlig influensavirus som kommer igjen hver høst i omtrent samme variant, kan modellen brukes til å estimere smittsomhet og sykdomstopper også for neste sesong. Parameterne i modellen, spesielt smitteraten, må likevel tilpasses sosiale og helsemessige forhold i den aktuelle populasjonen, f.eks. befolkningstetthet, generell hygiene og levestandard." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 5. Konklusjon\n", + "Vi har modellert ulike forløp for spredning av smitte ved hjelp av tre ulike smittemodeller med ulik kompleksitet. Modellene er validert ved å utføre parameterjustering med grunnlag i et reellt datasett som beskriver smitte\n", + "\n", + "Vi kan utvide modellen ved å innføre en kategori for døde, i tillegg til en vaksineringseffekt, der vi starter med at en viss andel av populasjonen er immune ved sykdommens start." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/tema5_modellering/newtons_avkjolingslov.ipynb b/_sources/docs/tema5_modellering/newtons_avkjolingslov.ipynb new file mode 100644 index 00000000..db8d8160 --- /dev/null +++ b/_sources/docs/tema5_modellering/newtons_avkjolingslov.ipynb @@ -0,0 +1,166 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Newtons avkjølingslov" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from pylab import *" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Newtons avkjølingslov sier at forandring i temperatur skal være proporsjonal i forhold til differansen mellom temperaturen til objektet og temperaturen til omgivelsen.
    \n", + "
    \n", + "$\n", + "\\Large\n", + "\\begin{equation*}\n", + " \\frac{\\partial T}{\\partial t} = {-k} (T - T_{omg})\n", + "\\end{equation*}$" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0, 0.5, 'temperatur i celsius')" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#dT/dt = -k(T-Tomg)\n", + "\n", + "#Startverider\n", + "T0= 75 #temperatur vann i kopp\n", + "T_omg = 18 #temperatur omgivelse\n", + "k = 0.5 #k-verdien til koppen\n", + "\n", + "\n", + "#Tidsparamtere\n", + "t0 = 0 #starttid\n", + "t_slutt = 13 #slutt-tid\n", + "dt= 1e-5 #steglengde\n", + "N = int((t_slutt - t0)/dt) #Intervall\n", + "\n", + "# Arrays\n", + "T = zeros (N+1) \n", + "t = zeros (N+1)\n", + "\n", + "T[0] = T0\n", + "t[0] = t0\n", + "\n", + "## Eulers\n", + "for i in range (N):\n", + " Tder = -k*(T[i]-T_omg)\n", + " T[i+1] = T[i] + Tder*dt\n", + " t[i+1] = t[i] + dt\n", + " \n", + "plot (t,T)\n", + "grid ()\n", + "title ('Avkjøling av vann i kopp')\n", + "xlabel ('tid (min)')\n", + "ylabel ('temperatur i celsius')" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0, 0.5, 'temperatur i celsius')" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#Vi har målt temperaturen av vann i en kopp over 12.5 minutter. Nedenfor er resultatet: \n", + "\n", + "temperatur_kopp = array([75,73,71,70,69,68.5,68,67,66.5,65,64.5,64,63.5,63,62.5,62,61.5,60.5,60,59,58.5,58,57.5,57,56.5,56,55])\n", + "tid = arange(0,len(temperatur_kopp),1)\n", + "\n", + "plot(tid/2,temperatur_kopp,label=\"Datapunkter\") #(Tid/2 fordi det var målt per 30s)\n", + "plot(t,T)\n", + "grid()\n", + "title('Avkjøling av vann i kopp')\n", + "xlabel('tid (min)')\n", + "ylabel('temperatur i celsius')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/tema5_modellering/pingviner.ipynb b/_sources/docs/tema5_modellering/pingviner.ipynb new file mode 100644 index 00000000..8109d287 --- /dev/null +++ b/_sources/docs/tema5_modellering/pingviner.ipynb @@ -0,0 +1,664 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Maskinlæring (med pingviner)\n", + "\n", + "Vi skal lage en maskinlæringsmodell for å artsbestemme ringpingviner, bøylepingviner og adeliepingviner.\n", + "\n", + "```{image} bilder/pingviner.png\n", + ":alt: pingviner\n", + ":class: bg-primary mb-1\n", + ":width: 300px\n", + ":align: center\n", + "```\n", + "\n", + "```{image} bilder/pingvindata.png\n", + ":alt: pingviner\n", + ":class: bg-primary mb-1\n", + ":width: 300px\n", + ":align: center\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Datahåndtering med Pandas" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import seaborn as sns" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "pingviner = pd.read_csv(\"datafiler/pengwings.txt\")" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    speciesislandbill_length_mmbill_depth_mmflipper_length_mmbody_mass_gsex
    0AdelieTorgersen39.118.7181.03750.0MALE
    1AdelieTorgersen39.517.4186.03800.0FEMALE
    2AdelieTorgersen40.318.0195.03250.0FEMALE
    3AdelieTorgersenNaNNaNNaNNaNNaN
    4AdelieTorgersen36.719.3193.03450.0FEMALE
    \n", + "
    " + ], + "text/plain": [ + " species island bill_length_mm bill_depth_mm flipper_length_mm \\\n", + "0 Adelie Torgersen 39.1 18.7 181.0 \n", + "1 Adelie Torgersen 39.5 17.4 186.0 \n", + "2 Adelie Torgersen 40.3 18.0 195.0 \n", + "3 Adelie Torgersen NaN NaN NaN \n", + "4 Adelie Torgersen 36.7 19.3 193.0 \n", + "\n", + " body_mass_g sex \n", + "0 3750.0 MALE \n", + "1 3800.0 FEMALE \n", + "2 3250.0 FEMALE \n", + "3 NaN NaN \n", + "4 3450.0 FEMALE " + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pingviner.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    speciesislandbill_length_mmbill_depth_mmflipper_length_mmbody_mass_gsex
    339GentooBiscoeNaNNaNNaNNaNNaN
    340GentooBiscoe46.814.3215.04850.0FEMALE
    341GentooBiscoe50.415.7222.05750.0MALE
    342GentooBiscoe45.214.8212.05200.0FEMALE
    343GentooBiscoe49.916.1213.05400.0MALE
    \n", + "
    " + ], + "text/plain": [ + " species island bill_length_mm bill_depth_mm flipper_length_mm \\\n", + "339 Gentoo Biscoe NaN NaN NaN \n", + "340 Gentoo Biscoe 46.8 14.3 215.0 \n", + "341 Gentoo Biscoe 50.4 15.7 222.0 \n", + "342 Gentoo Biscoe 45.2 14.8 212.0 \n", + "343 Gentoo Biscoe 49.9 16.1 213.0 \n", + "\n", + " body_mass_g sex \n", + "339 NaN NaN \n", + "340 4850.0 FEMALE \n", + "341 5750.0 MALE \n", + "342 5200.0 FEMALE \n", + "343 5400.0 MALE " + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pingviner.tail()" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 344 entries, 0 to 343\n", + "Data columns (total 7 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 species 344 non-null object \n", + " 1 island 344 non-null object \n", + " 2 bill_length_mm 342 non-null float64\n", + " 3 bill_depth_mm 342 non-null float64\n", + " 4 flipper_length_mm 342 non-null float64\n", + " 5 body_mass_g 342 non-null float64\n", + " 6 sex 333 non-null object \n", + "dtypes: float64(4), object(3)\n", + "memory usage: 18.9+ KB\n" + ] + } + ], + "source": [ + "pingviner.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [], + "source": [ + "pingviner[\"totalnebb\"] = pingviner[\"bill_length_mm\"] + pingviner[\"bill_depth_mm\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    bill_length_mmbill_depth_mmflipper_length_mmbody_mass_gtotalnebb
    count342.000000342.000000342.000000342.000000342.000000
    mean43.92193017.151170200.9152054201.75438661.073099
    std5.4595841.97479314.061714801.9545365.351485
    min32.10000013.100000172.0000002700.00000047.600000
    25%39.22500015.600000190.0000003550.00000057.300000
    50%44.45000017.300000197.0000004050.00000060.350000
    75%48.50000018.700000213.0000004750.00000064.575000
    max59.60000021.500000231.0000006300.00000076.600000
    \n", + "
    " + ], + "text/plain": [ + " bill_length_mm bill_depth_mm flipper_length_mm body_mass_g \\\n", + "count 342.000000 342.000000 342.000000 342.000000 \n", + "mean 43.921930 17.151170 200.915205 4201.754386 \n", + "std 5.459584 1.974793 14.061714 801.954536 \n", + "min 32.100000 13.100000 172.000000 2700.000000 \n", + "25% 39.225000 15.600000 190.000000 3550.000000 \n", + "50% 44.450000 17.300000 197.000000 4050.000000 \n", + "75% 48.500000 18.700000 213.000000 4750.000000 \n", + "max 59.600000 21.500000 231.000000 6300.000000 \n", + "\n", + " totalnebb \n", + "count 342.000000 \n", + "mean 61.073099 \n", + "std 5.351485 \n", + "min 47.600000 \n", + "25% 57.300000 \n", + "50% 60.350000 \n", + "75% 64.575000 \n", + "max 76.600000 " + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pingviner.describe()" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA9IAAAN2CAYAAAAVHrEmAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAEAAElEQVR4nOyddXgUV9uH79lsZOPuLiQESHB3irXUW6qUUgEq9K29lbftV/dSoEppaUuFOoUqUtwtECwh7q4b3WSz8/1xkk2WDVaIAHNf115kzo6chLOz8zvneX6PJMsyCgoKCgoKCgoKCgoKCgoKZ4aqqzugoKCgoKCgoKCgoKCgoHAhoQhpBQUFBQUFBQUFBQUFBYWzQBHSCgoKCgoKCgoKCgoKCgpngSKkFRQUFBQUFBQUFBQUFBTOAkVIKygoKCgoKCgoKCgoKCicBYqQVlBQUFBQUFBQUFBQUFA4Cy5qIT1lyhQZUF7KqyNe54wyPpVXB77OGWV8Kq8OfJ0zyvhUXh34OieUsam8Ovil0I3olkJakiRnSZJ+liQpUZKkBEmShkmS5CpJ0jpJkpKb/3U53XlKSko6o7sKCv8KZXwqdGeU8anQnVHGp0J3RRmbCgqXDt1SSAOLgNWyLEcBsUAC8BSwXpblCGB987aCgoKCgoKCgoKCgoKCQqfS7YS0JEmOwGhgKYAsyw2yLFcAVwPLmndbBlzTFf1TUFBQUFBQUFBQUFBQuLRRd3UH2iEUKAa+kCQpFtgP/AfwkmU5H0CW5XxJkjy7sI8KCgrnkSZDE0dKj7A7fzeWKkuG+Awh2i26q7uloHBJIcsyR0uPsit/FwBDfYbSy60XkiR1cc8ULgVyq3LZV7iPtMo0+nn2o69nX5ytnbu6WwoKp6W2sZb44nj2FuzFy9aLwT6DCXEK6epuKXQC3VFIq4H+wDxZlndLkrSIswjjliRpNjAbIDAwsGN6qKDwL1HGZ/scLD7IPWvuQS/rAbCxsOHLKV/Sy71XF/fs0kIZn5c28cXx3LXmLhoNjQB8pPqIL6d8SYxHTBf3TKCMz4uX4tpintjyBIdKDhnbHuj7APf2uRcLlUUX9uzMUMbmpc2G7A08vfVp47a3rTdLJy8l0FEZCxc73S60G8gBcmRZ3t28/TNCWBdKkuQD0PxvUXsHy7K8RJblgbIsD/Tw8OiUDisonCnK+DTHIBv4NuFbo4gGqG+q55+sf7qwV5cmyvi8tFmZstIoogEaDY2sSlnVhT0yRRmfFy8pFSkmIhrg00OfklOV00U9OjuUsXnpUlpXysL9C03aCmoLSChL6JoOKXQq3U5Iy7JcAGRLkhTZ3DQBOAb8BsxsbpsJdJ9v9/NAUmEVC9clsWxHBhW1DV3dHQWFTsMgGyivLzdrb69NQUGh4yirKzNrK9cpn0OFjqehyfy5p8HQQKPc2M7eCgrdB71BT3VjtVm7rknXBb1R6Gy6nZBuZh7wrSRJh4C+wGvAG8BESZKSgYnN2xcFq48UMP2TnaSVVLM+sYhx72xiY2K7C+4KChcdapWaW3veatY+JXhKF/RGQeHS5foe15u1XRt+bRf0ROFSI9Qp1CwfelLQJPzs/bqmQwoKZ4inrSd3RN9h0malsqKHS48u6pFCZ9Idc6SRZfkgMLCdtyZ0clc6nJzyWp765RBPTIkixN0OEKvTj/54kFeu6cMVMT5d3EMFhY5nqM9Q3hr9FksPL8Xawpp7Y+4l1iO2q7uloHBJMdB7IO+OfZfPDn8GwL197mWA14Au7pXCpUCAYwBLJi7hiyNfcLT0KFNCpnBN+DVo1Jqu7pqCwimRJIkbetyAnaUdPyf9TIBDAPf0uYdIl8jTH6xwwdMthfSlxDtrjjOhp6dRRAP08HLgySlRPLPyML7ONvQLdOnCHioodDwOVg5MDZnKaP/RSEjYWtp2dZcUFC457CztmBg0keG+w5XPoUKn09OtJ6+OfJVafS2OVo6KW7zCBYOnrScze83k2ohrsbawxtrCuqu7pNBJdNfQ7kuC/Mo61icWMbW3+apzkJsdd40I4cHlB6jW6ds5WkHh4sPO0k55eFdQ6GKUz6FCV2FpYYmTtZMiohUuSBytHBURfYmhCOku5Me92QwPdcPOuv3AgEHBrkR42vPu2uOd3DMFhW5MUyOUpEDxcWis7+reKHQGNaVQcAQqc7u6JwoK54+KbCg8CnUVXd0TBQWFf4OuGooSoCwNZLmre6PQBShCuouQZZlfD+QyItz9lPvdNCiAn/bnkFtR10k9U1DoxlQXwcbX4OOh8NEQ+OMRqMjq6l4pdCR5B+CLqbB4BCwZA8f/BkNTV/dKQeHfo2+Aw7/AJ6Pg4+Hw1dViokhBQeHCoSQFfroTPhoKH4+AXR9Dvbare6XQyShCuotILqqmtqGJcE/7U+7nbGvFuEhPPt2S1kk9U1DoxmRsg23vilVpWYb45XDsoqqEp9CW6mL4+S4oaY7KqSmGH2dASVLX9ktB4VwoOgor7oa65tJi+Qfhz8eUh3AFhQuFpkbY+QGkrBPbjbWw5mnIi+vafil0OoqQ7iL+OVZI/yCXM8oDmhjtxYq4HOoalFUYhUuclH/M2w7/DI1KxMZFiTZPhMy1pakRytK7pj8KCueD9sJAs3dBVUHX9EdBQeHsqC2FYyvN2wuPdnpXFLoWRUh3EesTi4j1dzqjfd3trQnzsGddQmEH90pBoZvj005JLP9BoJh7XJxonMCmnfukvUfn90VB4Xxh1874dfQFG8fO74uCgsLZY+0AXn3M2538O78vCl2KIqS7gNoGPcfytER5n/mX5uAQV/6Iz+vAXikoXACETwCPnq3b9p4w4E5QKbeyixKXYJi2EKQ2/78jHwGPqK7qkYLCuePVB/rPbN22sIQrF4GDd9f1SUFB4cyxsoMJ/ycEdQshY8FvYFf1SKGLUOpIdwH7MsoJ9bDDxtLijI/pH+jCN7szadAbsFIrokHhEsUtHGasgKJj0KQHz57gEtTVvVLoSKKmwewtUJ4O9l7gFW368KKgcKFh6wITX4LYm0WIqGsYeER2da8UFBTOhoBBcO9GKEkWwtozWomWugRRhHQXsDutlB5eZ/cg6KixxNdJw4GscoaEunVQzxQULgAcfcVL4dJAbQU+fcRLQeFiQeMMQcO7uhcKCgrngnuEeClcsihLm13A7vSysxbSAFHeDuxKK+2AHikoKCgoKCgoKCgoKCicKYqQ7mT0TQaO5mnp4XXqslft0cPbgV1pZR3QKwUFBQUFBQUFBQUFBYUzRRHSnUxiQRWeDtbYWp19VH2EpwOHcysxGOTT76ygoKCgoKCgoKCgoKDQIShCupOJz6kg1MPuXx3rpLHEztqCzLLa89wrBYXuQVldGRW6iq7uhoLCJUV1QzXFdcUYZENXd0XhIkLboKW0TklHU7jw0OqUsatwZihmY53MwawKgt3+nZAGCHaz40huJSHu//4cCgrdjQpdBWsz1vLZ4c9Qq9Q80PcBxgaMxc6yi8Z5XQUUHoPaYnANFSW3LJTbpcK/RJsHhUehqVG4M7uFdXWPADDIBvYV7GNR3CJyqnO4JvwapveYjp+DX1d3TQGgqkCMm8Y6cQ9y7x7j5nQ0NDWwI28H78W9R4Wugtujb+fK0CvxsFUcjRW6N/X6enbk7WBR3CKqG6u5I/oOrgi5Andbd/Od297XPXuCa0jnd1ihy1GeDDuZI7mV3DI48F8fH+BqS0K+litjFddihYuH7bnbeXnXy8btp7Y+xccTPmak/8jO70xdBax/CfYtFduSCqZ/Az2v6Py+KFz4lKXBDzOg8IjY1rjAHavAJ7Zr+wUcLzvOnH/moDfoAfj8yOfUNNbw5OAnsVRZdnHvLnHKM+HnWZC7X2zbOMGMVeDXr2v7dQYcLjnMvA3zjNsL9i/AQrJgZq+ZpzhKQaHrOVJyhP9s/I9x+51972BlYcUtUbeY7liaCt/fBsUJYtvWDWasBJ+YzuusQrdACe3uRBr0BtJKagh0s/3X5/B30ZCQrz2PvVJQ6Fr0TXp+PP6jWfuajDVd0Bug6GiriAaQDfDHf6Ayt2v6o3Bhk76lVUQD1JXDrsViFaOLSa1MNYroFn5J/oXi2uIu6pGCkawdrSIaoL4Str0Lel3X9ekMOVB0wKzt+8Tvqaiv6PzOKCicBbsLdpu1fZfwHdqGE567Uze0imgQ9eD3fgaGpg7uoUJ3QxHSnUhqcTWejtZYqy3+9TkCXGxJKqw+j71SUOhaVCoV3nbeZu3ttXUK1SXmbTXF4kFWQeFsKUowb8uLg8b6zu/LCdiqzSd1na2dsVZbd0FvFEwoTTVvy48HXff//neycjJr87D1wMrCqgt6o6Bw5rhau5q1edh6YKU6YewWHjU/OC8O9F1/X1foXLqlkJYkKUOSpMOSJB2UJGlfc9sLkiTlNrcdlCTp8q7u59mSWKAl0PXfr0YDeDpaU1ylo75RmfVS6L5kVGbw7bFveWnnS2zI2nBKAzGVpOLWnreafFE5WDowIWhCJ/S0HVxDRTh3W3z7g6OSTqHwLwgZY97WZzrYOHR+X04gyjWKCOcI47avnS/PD3uer45+xcL9C4kvjqdJWWHpGgIGm7f1uQFszR/0uxsDvQbiqfE0bltIFtwfez+2luL5J786n1Upq3h++/OsSllFQU1BV3VV4RIlvzqflckrzcbgYJ/BuNm4GfdTS2rmxMzBRm1jeoLwdp5PYm4CK8W/6FKjO+dIj5Nl+cSloQWyLL/TJb05DyTkV+HvfG5CWq1S4e1kQ0ZpDVHejuepZwoK54+86jzuX38/2VXZAPyU9BOPDHiEWb1mIUlSu8fEuMfwzeXfcKTkCBYqC2LcYwh3Ce/Mbrfi2ROmfwV/PAw1JeDTD656DzTOXdMfhQubwKEw7hnY+o4I5+4zHfrc2NW9AsDX3pf3xr/H4ZLDlNaVEuwYzIMbHqRJFuJ52dFlfDHlC/p69u3ajl6K+A+BiS/DptfEKlf0tdDvDjjJPbQ7EeIcwtLJSzlUcoiaxhp6u/Wmp1tPQLghv777dTbmbARgRcoKJgVN4sXhL2JvZd+V3Va4RGhvDE4OnsyLw18kzDmML6Z8waHiQ9Tp60zGrgmBw2DMU7B9gbivx94C0Vd38m+i0B3ozkL6oiMhX8vgkHOfTfZxsiG9WBHSCt2TpPIko4huYXH8YiYHT8bPvn03YEmS6OnWs/0vrM7GQg09rxSr0PWVYiVaEdEK/xZbVxj1GPS+AWQ9OAWCpc3pj+sk/B388XfwB+DZbc8aRTSAXtazMmWlIqS7Ao0TDHtQ3IuaGsA5ECw1Xd2rMybYKZhgp2Cz9gxthlHAtLA2cy2zes+it3vvTuqdwqVMe2NwTcYaZvWaRS/3XoQ4hRDidBoHbjt3GPMExEwXedEuQaCkxFySdMvQbkAG1kqStF+SpNlt2h+UJOmQJEmfS5Lk0lWd+7ekFFUT4HJuK9IAHg7WZJQqtaQVuieNBnMTpUZD44UXIurkB17RiohWOHdUFuAWCu49upWIPpHqRvP825rGmi7oiQIAKpUoqeMReUGJ6FNxsu+BE03vFBQ6ipONtbMegyoLUcrQo4cioi9huquQHiHLcn9gKvCAJEmjgY+BMKAvkA/Mb+9ASZJmS5K0T5KkfcXF3cd5tEanp6ymAQ/7c/+weTnakFrc/Q1HFMzpruPzXKnT13Go+BCrM1bjZuOGo5VptMTNkTfjY+/TRb3rROqrQFfV1b3411ys47PDqK+8IMyfzpQbetxg1jYpaBKFNYVd0BtzlPF5Euq13fK+09jUyNGSo6zJWMO+gn1odVqCHIOIco0y2a+3W2+CHYO7ppPnCWVsdm+qG6qJK4xjTcYabNQ2RLpGmrwf4x5DkGPQmZ+wrgIalElGhW4a2i3Lcl7zv0WSJP0KDJZleUvL+5IkfQr8cZJjlwBLAAYOHCh3QnfPiNTianydNahU557f5OlgzaGcinPvlEKn013H57nQaGjkl6RfeHPvmwDYWdrx6ohX2ZS9icTyRK4Ou5rLgi67uOvS6qogeR1seUcYlY35L4RNAOsLK+fvYhyfHUJtGST+BTsWgbWjCPELGdOtV5vPhIFeA/lg/Ad8cfQLZFlmTMAYPjvyGcjw7th38XNoPzWjs1DG5wnUV8Lx1aIsltoaxjwJoePA6twj384HazPX8vTWp5ER/1W3Rd3Gg/0e5K3Rb7EyeSXb8rYx2m80V4dfjbONc9d29hxRxmb3pU5fxxdHv2DJoSWAMDh9f/z77C/YL8ag/2iuDjvDMVhTDMd+h10fitrRY56C4JGgVhzpL1W6nZCWJMkOUMmyXNX88yTgJUmSfGRZzm/e7VrgyElP0g1JK67Bz/n8hGZ5OdqQU153Xs6loHCuZFZmMn9fa4BITWMNj25+lBVXrcDP3s/c7fJiJH0r/DyrdfvHO+DWn6DHpK7rk0LHkbwGfnugdXv5dLjzT/FAdQFjo7ZhqM9QDhYf5HDxYd6Pex+9LMId44riulxIK5xA6gb4tU322/e3woyVEDauy7rUQm5VLq/sesUoogG+TfyWKSFT6OvZl4cHPMzc2LnYqG1OakKpoHA+SKtIM4poAINs4LFNj7HiqhVnPwYTfoc/HxE/l6bAt9fBrNXCVFLhkqQ7hnZ7AdskSYoH9gB/yrK8GniruSTWIWAc8EhXdvJsSSmqxsvx/ORQuNlbUVKto7HJcF7Op6BwLlQ2VBoftlswyAZK6kouDRENsH+ZedvB5Z3fD4WOp6EGdi02b09e2/l96QBq9bX8lfYXuwt2m3yuTzQQVOhimhphz6fm7Ud/7fy+tENVQ1W7Offl9eWAMJjUWGoUEa3Q4bSMubbUN9VTris/uzFYVwE7PzRtk2XI2H7unVS4YOl2K9KyLKcBse20z+iC7pw3UoqrCfc4P2GeapUKZ1srCirrCTjHutQKCueKr50vrjaulNWXAeBm44ZapT6pQ/cFRXUhaPNA4ypcOU+GvUc7bZ7mbQoXPiq1COk7Ec0JFRnK0qG+Ahz9Lqix4GztzBWhV/DpYVORFuth9rWs0JVIKrBr577T0lZXCRWZoLYB11BRjaAT8bbzJsw5jNSKVGObpcqSAMeATu2HgkKQYxD2lvYmEzu+dr6n921pqIHyDEBq/gxZmt/nAWyUCjqXMt1OSF+spBfXMDLc/bydz9PBmpzyOkVIK3Q5PvY+LBq3iK+OfkVv997k1eQR5BhEY5O5e/cFRfZe+OUuqMgCGye4chFETRNfpifSfyYc+kGUqQHx8BozvXP7q9A5qK1h5MOQvkmUPQGRJx0+Qfysb4CE30Qdcl0VuATDDZ+D34Dz3pXCmkIOFB0goSyB3m696evZFw/bdsTVWSBJEtdFXEdudS5/p/+NjdqGeX3nEeMRc556rXBeUFnAkLmQ+Ae0uA1b2opyWSVJ8Nt/IGuHuF+NfgIG3Qu2HVvsJK0ijb2FeympLWGQ9yDeGPkGz+98nmOlx/C09eSFYS8Q6hTaoX1QUGihqLaIuMI4EsoSeGrwUxwtPcp3id8R4RzBSyNewkNzintleRb88zwcXSFqt/efKTwIxj4F314vVqIBNC4QNKJzfiGFbokipDsBWZbJLq/Fx+n8hbm62VmRW6HkSSt0D/p69iWvOo8ntz5pbFtmu4ylk5YS5HQWTpjdheoi+OUeIaJBmPr8cjfM3gLe7dQ69R8Id62BjG3iSzd4FPj27dQuK3QigcNFXlzGNiFegke2joviRFhxL8jNqTflGbBiDty1WtQePU9UNVTx9r63WZOxxth2Xfh1PDX4KTTnWCrJ38Gfl4a/xNzYuViqLPGz91NCcLsjAUOa7zvbxYpz8Cjw7Al/PCpENIgQ8I2vgm9/iLisw7qSUZnBvWvvpaiuCIDFhxYzf8x8Pp34KcV1xThYOuBpd+FEZihc2FQ1VPHO3nf4O+NvY9s1Ydew8uqVuNm4nd5YLPEPIaJBiOb9X4L/YOhzY/O9f7tYiQ4eKT5zCpcsipDuBIqrdVhaqLC1On9/blc7K/IUIa3QTSirK2NR3CKTtsLaQo6VHbswhXRVAVRkmLYZmkSoZHtCWpLAr794KVz8WKghYLB4nUhFZquIbqE0WYyp8yik0yvTTUQ0wIqUFdwcdTM93c79wc5abU2IU8g5n0ehA1GpxCSe/8DWtqpCSPrLfN+iox0qpI+WHjWK6BYWxi1k+eXLCXMO67DrKii0R3pluomIBliZupJbet5yehFtaIJj7XgNJK2BfrcJYzHFXEyhme5oNnbRkVlai/d5XI0GcLWzVpy7FboNjYbGdo1l6vX1XdCb84DGRbxO5AIv0aJwlugboKYEmvSn37cFey/zNjuP9sfTOdDQkkZwhu0K3ZR6rTAxOl9YO4JvO2kEDj6tqQgdQHv3+uqGahoNF3iKj8IFyb++PzbpoSgB/AeZvxc45Dz0TOFiQxHSnUBmaS1eDufHsbsFN3srcitqz+s5FRT+La42rtze83aTNrVKTaRLZBf16BypLYNxz5jmQw+6B/Z/IUykFC5+Co7Ayvvgk9Hw13+h+PiZHeccKHJXW7Cwgimvg9P5Nd8LcgwiyNE02iPKJQp/e3/qGpVJ1m5PQ40opfP5FPhsAhz49vwIaisNjHsabNuYIoWMhvQtkPLPuZ//JES5RqFWmUbd3dHrjnPO2VdQOBsMsoHaxlqCnIIIcTSNqIl0iSTQIfDkB5dlwJFf4NOxwhfFpc3x3n2gx+QO6bPChY0S2t0JZJXW4GZ/noW0nXDtVlDoag4XH2bZsWX42fsxr988fk/9HV97X2b3mX1eQkw7nZIUWDYNQsfC1LdAmwsW1qK8Uc5eCBkLrkrI60VNZY6oDa3NFdv7P4eCeLjtl9MbNpWlQf5BMRHTpBMu31vmg/8QcDnFQ9xZ4mHrwcKxC/k24Vt25e9ilP8opgZP5ZXdr5BTncNNkTcxLmAcbpp2HMYVup7sPfBDm8nHVfeD5RfQ+7pzP7dvP5j+jTDEU6mh8Bgc+FrUnb53Ezic31zlotoiksuSeXrw06zOWE1xbTE3Rd7E5GBFeCh0HinlKfyY9CP7CvYxMWgir458lV9TfmVn3k5G+o3klqhbcG3PdRugoRaOrYKDXwtfgc1vwcBZokKDR5TwxXBoJ9pI4ZJHEdKdQGZpLT7O5ze0283OmkKt7rydT2/QU6mrVB66FM6K5PJk7l57N3V6sQLmZuPG4wMfZ0LghH9leFSvrydDm0FtYy0BDgHnbzWjMlfkrto4gVsEqK1Ovm9xIui0YjV6x/tCGLWlPK394xQuHkpThCvy6MfFdpMeDn4r/u9tT+O+XVsGWbvEqy0NVee9m+Eu4Twz9BlqGmoorivmpj9uosEgQhdf3Pki1Q3V3Nn7zlOeQ6fXkVmVSXVDNX72fnjZKQ+L5426CjGWJAlcw0Hj1Pre0ZXm++9ZAj2niSiGc6UqT4iBtmhzm8fh+RPS9fp69hfsJ6cmh+qGajQWGmI9YhnrP1ZZjVboNAprCpm3YR451TkAJFckc6jkEC8MfYHrIq7DxsIGbzvv1gN01eKz2aQD1zCoLYX68taIM4O+tU771R8pIlrhpChCuhPILKslJsD5vJ7TztqChiYDNTo9dtbn9t9YWFPIrDWzKKkrYXLQZF4Y/gIWKovz1FOFi5mk8iSjiAYorS/lpV0vMcB7wFkJ6YamBo6WHOWP9D/46fhPyMj42/uzcNxCIl1PEx5eVwnl6aIskWuYuUjO3Q/f3SJqQqssYPSTIkTLKQDs2pk4srIT/2bvhojJ5kI6cJj5MTUlwuHb2kHUm1Q+Pxc2Vo4wYCZsfhv09eL/dez/wNKudR9dlXjoUqnBLVSUPIPWeqMt5d+sHYS7smM7od3VRWL128YRXEKFedRZolapcbJxYn32eqOIbuGLo19wRegVJxU0VQ1VfH3saz459AkG2YCXrRevjnyVjVkbkZGZEjKFPu59zEJ2Fc6AsnT4bR5kbBXbEZPh8rdb69G3V3vewRukdu4d2nwhjG3dxb2lulD8fKra9q7hQsC3lOkBCJ8ortFCVYEQ1zYuIsrmLJ3ZqxqqWHZ0GZ8e/hSDbMDT1pNH+j9CTlUOiw4sItotmjH+Ywh1VkpeKXQsaZVpRhENIt3sxh43cu+6e0nXCnF8ffh1zAu7DjdZBbs+gvjl4vMUMhbGPycizmJuEp4WFmoxERb/HbiFd8nvpHBh0OE50pIkxUiSdJUkSde1vDr6mt2NvIo6PM5zaLckSbjbW1GgPffw7pd2vUQ/j368O+Zdjpcf5+P4j89DDxUuBSxV5jWVbSxsUEtn9+AdVxjH3sK9/Hj8R2TEg19OdQ7vHXjPRKibUZIM398CS8bA4hGw8TUhaluoq4DfHxYPniDMdja9JnIFl10lQh5BON0eXQVrngFtHox9RggctRVEXwOSCqzsRa7riU7NBYfhi8vh03GweCTs/Qx0NWf1+yt0MywsYOPrQkSDEM2b32xdKSxLgx9nwiejxLhb+39iDIEIA7z5OyFyxjwJg+eAR0/IO2A6LvLj4fPJreMmbhmcQ26zlcp8FdPGwuaUIjihNIGP4z/G0OwyXlhbyMK4heTV5LE8cTmzVs8ivjj+X/fpkubYylYRDZC8BpLXtW5HXSnuKS1oXERuvcoCasvh+N+w9lmxSh23DL65QbQtGQufjhf3vON/g+EEh/gWvHrBjV8JUQAQOh4mvdI6UZizDz67TJzrk5EQ/70w1zsLEssSjZMwIEK8lycuJ6EsgdUZq3l3/7vcv/5+cqtzz+q8Cgpny4nPIvP6zeOPtD+MIhrgl5QVxGdvFX4B8cvFd/uYJ8HeU7SNfBz8BsC+pbDlHfH5un4p+MR28m+jcCHRodPMkiR9DsQAR4GWu70MrOjI63YndPomymsbcLU7D6FaJ9CSJx3mYX/6nU9CUnkSR0qO8Pqo17FUWXJvzL28uONFpgRPIdxFmYVTODVRrlF42XpRWFtobPtP//+cVUhfk6GJbxO+bbdEyt6CvVTqKtGo21ndNjSJ0KvM7a3b2xcIZ83IqaKtthQKDpkfq6+DoiOw4RURtrXlLSGAWwi/TOTD5u6HnlfB2KfEaqStC+TGiXM6+okv3dVPQUmzEZW+Hv5+Anxi2l+5Vuh+NOmFyM2LE8ImYLCILjCc4NRdXwGV2WLl7uBySF0v2mUD7PkEgoZBr2vFqnLERLhpOXx7o1hJBNj5Plz3KcRMF1EUvz/SGu3QWAd/PAxevSGgHbfYM6CXWy9cbVwpqy8ztj3U/yFcbE6e051fk2/WdqTkCPf2uZeN2RtpkptYmbySAV6nCWdXMMVgEA/hJ5K2EQbfI372jRU1oEuSobFGrA7XlooohYPL4Z/nW4/ziITJr8LaZ0TqAEBdOfx0J8zdCu49zK+ltoLoq0RprIYa4dpt3fysUFMCv84V4xnE+6vuA89o0a8zJK8mz6ztcMlhZsfMZkP2BgByq3NJLk/Gz/78mu0pKLQlzDmMgV4D2Ve4DydrJ5DhULH5d39iUzXjq2vBp6/4PGx8rfXNwOHCLFLXnIajzYW/n4K714Hl+U3PVLh46Oh4raGyLEd38DW6NfkV9bjZW2OhOruQqTPB2daKoqpzW5FekbyCkb4jjbN5ztbOXB56OW/seYPPJn92mqMVLnUCHQNZMnEJ23O3k12dzSi/UfTz7Ge2X6Y2k8SyRBqaGujh0sMkXFtGRtekw9bS1uy4fp79cLJyMmsHxIPk8T/N2/MOtgpptRV49haiuS0uoeDZE1LWiRq/+5aavp/yD4z+L4x90rR9z2fw12Ot21PehIxt5n0oz1SEdFfQpBcRAsUJQhT79hUPRqciYyt8c11r7Wd7L7jmIxGy3VZM2ziBpQYaqoXbsnOgGGeN9ZDwG2TuEEK6hZKkVhHdwj/PCxO7+krI22/el/KMfy2kQ5xD+GzSZ2zL3UZBTQGj/Ue3+1lsi0nOIGBvac8DfR9AL+uZGyucxwurC9s7VKEtpakiwqCpUawEe/cWodzZu033Cxljuu0aCge+gd1tosCu+gA2v2G6X/FxaGpoFdEt6OtF5Ex7QroFR1/ztupCcd9riywLH4mzENI+dj7Gn1WSiluibsHL1guDbGBev3n8mvIrOVU5NHVg2S0FBRAlOG+NupUJgRPEM4MMvdx7UZhlev8Kd40ES614Ntj2rulJsnZA6Amf0YoMqC447wZ9ChcPHS2kd0qSFC3L8rEOvk63JbcDwrpbcNZYUlD57w3HZFlmbcZaHur/kEn7uIBxbMrexI68HQz3HX6OvVTortTp60gqTyK3KhdPW096uPbA0crxrM8T6hx6yhy4tIo0Zq+bbVy1traw5rNJn9HXsy8gcjxvj76dX5J/4YqQK/gzXYhjL1svHu7/8Mlzra0dwH+weJBsi2uw+LdeC9sWQv/bYcvbYrVHkmDgPXD0V/COgdhbhLFY2zzCFhrrIGe/MJiy9wJ7b1j/guk+uXtF2G5xgmm7valAUegk0jfD8htb6+V6RsMt3588l7Q0DTa+2iqioTkNQBJGY1vnC3FkaSsmVlSWoLKCgXdDWQrE/wBWtiIk1/OEOWN9O/dmXbUQ+zbOorRK+Qml1Bx8zI9pB51ex/Hy4+RU5eCmcSPSNRJna2ciXCKIcIk4o3MA9HTtyd297+bzI58jI/NA3wf46OBHVDWKFRlHK0fmj5l/xue7JCk+Dl9d0zpporaBmb9Dr2sgaTXk7BHtIWOhxyTxc1ECVOaB3AR7FpueryKj/bFjMIhx2Nim7KXKAuz+xQO+xlXc006cJHE4s/tWeV05ieViYnRWr1l8efRLbut5G9tyt5FeKca0hWTBowMe5aujX9HD5RRCX0HhDEipSCG1IhUbCxsiXSNNJgFL60p5bvtz7MjbYWx7YdgLDPMeRlJ5EjlV4hlhavAU+tVWQ/4h8Ipuv666fEKbrZtIu1BQOAkdLaSXIcR0AaADJECWZTmmg6/bbcitqMPd/vyHdYNYkS6o/Pc5dckVyagkFb52pjPWapWaa8Ov5Z297/DTlT8pxmMXIU2GJn5N/pXX97xubLur113MiZ3T7srwubArf5dJ6LeuScenhz/lgdgHCHQMxN7KnkHeYhVuR+4Onhv6HG4aN6Jdo/GxP4WwUFvDyEdEaHfLA2HwSCF+3SIAWYRrWztC/xng2UuEMiatFqG8AP1nitxW/0HCaKQF5yDxJfvZ+Na2axaL1ci2JPwONy6DFfe2hoMNugd8+vzLv5bCv6auQuQqt304KjomQvHbE9IFR0QkQk2x+XvlWUJsjHykNQdVsoAfboNpC8XD1u5PRHt9BWx6HW79EeqrxKq1hRq8e4kx2lYUDXsAHH3EhM5V78N3N4mwWoCh94uVzDNgdcZqnt3+rHH7hogbuDbiWorrivG39yfcOdzsvt1kaCK1MpXsqmxcrF0Idw7H0dqRubFzmRw8mYamBv5K/8soogG0DVq2521nqO/QM+rXJUnaRtPIA309bFsEN34hJnFKk4XHgluESA3J3iPynuvKRGrIiZN49VXQ82o49mtrm42TyOO8Yj4c+01MGOnrRUTMqVajT4ajD1z9oSi/1eIDMPpJEaVzGpLLk9mVv4vqhmryavJIrUjlgwkfUFZXxtfHvjbu1yQ3sTJlJR9f9jEBjgGnPW92VTZpFWlYWlgS4RyhOH4rGDlYdJB7195LfZMYq1GuUSwYuwB/B39AhHC3FdEAC+IW8OH4D7k98jYMGAiw86F3XQ3uP8wUO4x6DELHic9vCw7eprWjLazE58T59ONX4dKlo4X058AM4DCtOdKXFLnltbh0QH40gIutJYkF/76kys68nUS7RSO149Q5wGsA67LWsTJlJdf3uP5cuqnQDcnUZvLOvndM2j4/+jkTgyfS2/3MHubbo8nQZPYAn1tlbjSTW53Lp4c/xdfel/ti78Peyp7R/qMZ7jscCcl4jvbOBwjTppLjYpX5uk+FMNbXi9JVez8VOYD9m2u06rSw80OxorjlbWEGFTxK5D8f/lF8oYaNA98BkLpOvNdvhjD3acvBbyFqmhDPLUgW4gF59ibh0qtxBvdI4cKs0Lk01oE2x7y9rrz9/Q/9AIl/QJ/psPOD1na/QeAeDmWpwm27qlBMwOxZInLmjq5oP+8+abVwgnXwhaH3gXcfuOM32PquWHkeeBdEX9vqjBwyCuZsE2PVSiMe4KxP73eRXZVtMgEG8HPyz3jbefPBwQ9QS2oWjlvImADTEMXtedv5z4b/oJdFuPr0HtN5qP9DOFk70dOtJ02GpnaNJltWGBVOQkW2eVt5qiirY+fWWhlAmwcpB6A0CXpeCYVHQOMOk14VY7FlTDn4iDz7QfdA2iZwC4OQ0UJgZ+8WK2RT3xY+DO6RJy/l19QkTPNORtgEmLNFpKHYuYs87BYjspNwrPQY9669F22DFoBot2j6evTlhR0vMDtmttn+hbWFOFg7nPKcAImlicxeN5tynfisRrtG887YdwhwUATMpU6dvo6PDn5kFNEgTO4SyhLwsfMhozKDgtoCs+MqdZU46Wq4pd6AwaMH6so8SNsgPk+lqSLaaOSj4B4h/C48ewk/gbgvYdyzohKDZ69/N1GlcEnR0UI6S5bl3zr4Gt2a7PK6DjEag+Yc6XOoJb2nYA/Rru2nsEuSxK1Rt7IwbiFjA8Yq9aUvMqobq2k0NJq1V+oq290/tyqXvJo8nK2dCXYMxtLC1CEzS5vF2oy1bMrZxEi/kUwNnkqQk1gF7OXey+x8I/1GsiplFRVZFVwWdJkxl7PFYbi0rpRtudtYkbyCcOdwru9xPdFuzWO1XgvbF4ovQhAPf+OeEYZhDTUQOBT8B4gvS41Lq5CydhCutblxUJUvVgdrS8Xq8+5PxDnG/0/YIeYdgCGzhYCK/16E/mZsFcLIMQCO/CRCecc/I0QXKCUyuhp7L+h3B+x8r7VNkkTOanvkHRDGTioLmPC8mIDxHQBRV4ic6aYGcfyYp8QETUsYdlkaOAdD4dHWc2lcRE68vadYYfzrcbj2EzEWb/parEqfOLmiLRBj6uC34NsP+t0uxPdpqGmsoabR3BW+5fOsl/W8sPMFvnf9HisLKzK1mVhKlryw4wWjiAb4MelHYj1iCXIM4ve038mozGBS8CS25203Oe+VYVeetk+XNGETTCdiAAbMEvebFooS4LubRQ68nYeY1Nu2sHWMjXxM5Es7eIvomB9uFfe1gCHCmE7fCNZ2UFss0gNqw8UEj087wX2Fx0TJnuxdYpIocio4+Zvvp1IJ8exxmvKCzaRXpvPRwY+MIhqEsB7lN4pyXTnBjsFISMaqCwCTgyfzftz7jA0cyxCfIe2mDjUaGvkm4RujiAY4VnaMvQV7FSGtQF1jHWmVpiUo7+x1JwmlCSw7uoybIm+iuqEaS5WlyTPNKN+RqKuKUNUUotLmivtvSZK4T49/XtSQzt4JAcOanwUqYdfH4jPo119MXp3wnKOg0B4dLaQTJUlaDvyOCO0GQJblS8a1O6+ijh6ep5+R/Te42FpRVP3vhLQsyxwsOsjVYVefdJ8gxyBG+o3kqa1P8fFlHyu1RC8ifOx98LXzNXFdtbO0M4ZKteVA4QEe2vgQFboKolyimB0zG09bT4KcgnC2dkar0/Lizhc5UHQAL1svPj30KZuyN/H04KcJdAikuLaY+2Lv46ekn6htrOXKsCupqK+gQlcBQFmdqYGOLMv8mvIri+IWARBXFMdf6X/x7eXfilzswqOtIhqEeN69GHpfD8d+F3Ug/3hEhHSP+x8c+lGs9riGCqfalvDsrJ0w9mnYtgBGPCRmomUD7P9CrFSCEGFjnoBNb4gwXXsvmPwKjHxYrB6eZgVHoRNRqWDwvWBogP1fClE7+XUhUttj4N2innjeAbFaOP7/xBhZPl0IHBCiePMbogTK0eZQ28BhQiCnrhdREFb2YhLmr/+KMG+VWjyYlWcIh2+1tXi1pUkvDKa2LxTb2btFdMTd/4gVk3bQ6rRkV4nVz8tDLuev9L+M71mprEwii0rqSsivyeeTQ5+wLXcbs2NmU1xnHsKeWZXJsmPLiHaLZnfBbuws7Xiw74N8dewrJEnivtj7GOIz5DR/+EucgEFwzcfwzwviXjR8ngjNrsgSYtfBB/Z9IcYDQOzNwim47RjbNh+uXQLHVkFtiZjw+20epG4Q5XkAfprZmsufvlmEdTeOMnUTLs+Cb65vDTXP3iOE9dQ3zMfgKcitzqWktgQ3jRv+Dv4U1BTwY+KPJJUnme1bVl/GKL9RuFi7MH/sfObvm09JXQkTgyZio7bhp6Sf+C3tN14f+TrTwqaZHV+vr+dQiXmER0p5yhn3V+HixcXGhSvDruT7xO+5Kuwqgh2DsZAs+Dn5ZxLKEhjiM4RVKat4ZMAj/Jz0M1lVWYzyG8WVYVcyP3klr9RZYNdyHwdxrz3+Fwy4S0yaO/vDitlisumGL8V3vk3HPLMrXJx0tDLSIAT0pDZtl1T5q7yKetw6LEfakpJqHbIstxuefSpyqnKwsrA6ZWkUgKvDrua9A+/x9NaneWXkK1hbdIxxmkLn4qHxYMHYBby06yWOlh4lxDGE/xv+fwQ5muaSltWV8X87/o8KXQWj/EbhbefNf7f8lya5iR7OPXhs0GNYW1jja+9Lf8/+ZFVl4e/gT1ldGdvytnGo+BDXhF3Dq3te5cG+D1LZUMnKlJVG8w8LycJMvBfWFvLpoU9N2qobq0ksSxRCusq8ZA8VWeAUAFcual2R1GlFuZgeU2DY/eJB9sQc592Loc+NYnY6aY0I82oR0SBEu/8guGIBePQQq84qC3Dw+ld/d4UOxiVQhMoOnydMn+zcT76vxhl+mdWao3rkF1H/ub7CdD9ZhoY6YSA3ZK7Y3vOpMCNrahDhtVveFiWMQDh9b18EwaNPfu3KbBEG3pbaMiF62hHSGZUZvLDzBfYX7kdC4qbIm7inzz18dvgz/O39ubXnrXxx5AvxJ7B24f6+97M5ZzOetp48MuARCqoL6Onak4SyVlM8CQlrC2uSypMYHyi8ADZkbyClIoWvL/8ae0t7PG0Vp9rTYu0AfW8VJfPqtYAM+Qdg5X0iGqbPjSKMuwW1tfkYAxEinrFN3H+uWQyzVot72KbXRIipfEJ23LGVIgWlLUXHzJ3i474UqQYeZxaiuj13O09ufZJKXSWOVo68NvI1NBYatuRuYYjPEFamrDTZP9QplECHQKb/OZ1Z0bO4IuQKQp1D+ezwZ6RUtIrhhLIEVJKK+OJ4ot2iGew9GB97HxysHJgaPJWP4k0/DwO9B55RfxUubiRJ4oqQKwhyDGLZkWV42npSUFPAQK+BXB1+NaV1pVhIFizcv5AJQRMYGzCWA4UHSCpP4p/cLcwZ9jpRP8wyPWltmfgeT1knVp/tPEVUiHcv00gSBYUzoEOFtCzLs06/18WLLMsUautxs+sY8WljaYFaJaGt0+Nke3YhKIdLDhPqdHKn5RYsVBY80PcBvjjyBTf+fiPPDX3OaAylcGET7R7NxxM+Jl2bTkldCXlVeWTYZBDsFGzcp1xXToY2A4C+nn15/8D7xveSKpJYnrCc26Juo0JXYfKANcx3GDEeMSyOX8ykoEncEnULC/Yv4MF+D2KlEhNLztbOvDDsBbP60SpU7UY/GHOlnYPEanPv60X+YX48aPMh+hqxutz22JibhKt2UaJYbYyaZiqUVWrxhWpoEmViSk1DyACxqlNdBKufFCGZg+4BW9cz+hsrdAEW6vZDWauLRNkpey8R5hf3tanRk2wQYbZt3YwlCYY+AIZGGDhLlLzK2QsNVaIGuU8suIaLklY9pwljsh3vCTGt05r3oQVJJcbdiaaxKpXZrgbZwC/Jv7C/UJTLkpH5/vj3vD7ydRaMWYCTtRNl9WXomkR00v1972f+vvnGnEKVpOLxgY8T6BhIk9xEUnkSjlaOzOw1kz/SxGdBonUitqy+DFu1rSKiz5byDLGyFX01HPgawieAS7AIzQ4aIcK7QYxBB29RNxpEybSQMWIycPyzwlgs7muRGlCZJcatdzslqSysQH3C9357fhKSSrzOgOyqbB7f/DjVjWLCUdug5b9b/suH4z8kqyqLiUETGeY7jJ15O7FSWXFX77sorStl6ZGlyMg4WDuw5NASboy80URE9/fsT3FtMU8eay0nONx3OG+OehNnG2euDLuS1MpU1mSswVJlyd297z5t6TaFi5v0inQOFB2grqmOnq49WRS3iBnRM/jo4EfGe51KUvHfgf9lRvQMvkv8jr/T/8bNxo07e9/JN8e+AUCSm2Dc02KSKmV96wVaFp9qSmDO5vbLxCkonAEdKqQlSQoB5gHBba8ly/JVpzkuA6hCPGboZVkeKEmSK/BD87kygOmyLJ/ERaZ7UFnXiNpCQmPVca7XrnZWFFfXn7WQPlJy5Izzj6wsrJgdM5v9hft5csuTjPQbyXNDnzPLk1W48DhcepgH1z9ozGvzsvXis0mfGcW0q40rwQ7B5NbkUtVgbmwXVxjHVWFXsSl7k0n7zryd3NjjRl4e/jJ1+jquDr2afh79aDI08c7od2iSm3CydmrXldvTzpP7+97PG3taa6m62rgS6dKcy+cRCVe8A+ueF6vTgcPhineFGD7yk8h3zdoFkZeL0MqDy1tP3m8G+PaHvDixPWCmCL3c9IZw3e59nfkfybefqBHc1CBKJXnHQOSUM/4bK3QxsixMm37/j6iT6z8Eps03L3MCIpT2qvfhtweFgBk8R4TRts2BHfU4xNwsJmeir4Ff25gsOQcJ9+0d75m6v56IU4Awutn4amubg68xn7tCV0FtYy0eGg/q9HVsyNpgdordBbvZkbeDotoinhj4BPPHzEeWZXbm7zQx5jHIBrbnbmdi4ET+O/C/ZFRmkFWdxfKE5ZTWl9LHvQ+Z2kzj/nNi5nCk+Aj7CvbR062n2USXQjto80XotTZPlEMb/V+RInL4Z3G/Gvu0KNOXtFqUTLv8HVj3rJjcs7KHPx5uPVfk5SL8uyRZrF4b9CJSxsJSlGJrYcRDQky3xbMnuIYJo7wWhtx/8vJvJ1BUU2QU0S3U6evQNekIdw5n6ZGlDPMdxtyYufg7+BPgEMCegj28MeoNZGRsVDZ42nriZOWERq2hTi+qigz2Gcwn8Z+YnHdH3g7SKtPob9Mffwd/XhnxCnNj56KW1Pg7+CupZJcwaRVp3LXmLtQqNTOjZ1Khq8BCsiBTm0mkSyQDvQdSWFPIP1n/sC13G/72/rwz5h325O8hryaPTw99irZBy1X+Ywnc+anwohgyVxjrlaaI7/zG5oo3fv0VEa1wTnT0nWolsBSRI322rt3jZFkuabP9FLBeluU3JEl6qnn7yfYP7R7kV9Z3WA3pFlxsLSmq0hF+lnnYx8qOMdrvFKGHJyBJEgO9B9LLvRefHf6Mp7Y+xTtj3jnrkHKF7oNWp2VR3CITc5jC2kIOlRwyCmlLlSV39bmLd/e/i72luaNwpGtku7mXakmNrdqWn5N+Zk/+HlamrOTKsCv5OP5j6vX1fDb5M6Lso6jUVZJYlmgs2xPpGolGrWFa8OV4WTqxNmcDIQ6BTAiY0LpSXpYuwiZbyhxl7YANL8HVi4WRz6EfYeLLIn/5z0dNO3bwW1HOImmNWEF0j4Sf7mwtgVRTIkLBk1aLba9eovTFwTbOxdm7FSF9IVGSJMpMtZShytkNK+bAtHdFeGxbel0rVhBv+EKsEKIS4f9t2fspjHgYrv4A1j5r+l5FphBGU98Cz6iT90mlEivcbuHCBd6rF0RdQZNTALtyt/PmnjfJqc7hitAruLv33QzwGkBWVZbJKbxtvSmvL2da6DTWZ6/nrX1vEeYURj8v85W8qoYq1matZUfeDu7tcy9etl7G8NqB3gPZnrOdZ4c8i7XamgZ9A01yE0W1RWRpsxgfOJ4ot1P8LgrCzV3bHFLtGgarn2q9pxQfhz8fgxm/CkEtqURpteuWisiGH24zPdfxv0Q6SWkyIImqAnuXignCgsNiYqj39RA00rwfTv5w6w+Q+KfI/Y+6Qqx2n+Gkt0atwdrC2rjiB8IA0snaiQVjF7A5ZzPxxfH4O/jjY+fDs9uf5abIm/jw4Ifk1+QzNXgqjw14jPn75jM3di7plenU6euIdo02+Z5podHQ2O53gCKiL20OFB2gtL6U+2PvZ0HcAt4Y9QaDvQYz0HMg5fXlfHXsKwIcAvhP//8QVxDH5ODJBFRXYCdbsaUJhngNZKRdAMNLctFkbBUn3f8FTH5DfB/YusCWd6DHVBE1oqBwDnT03apeluX3Tr/bGXE1MLb552XAJrq5kC6orMe1g8K6W3DSWFFcdXaGY7Isk1SexO09bz/r62nUGubGzuX13a/zR9ofiqPrBUyjoZHyevOgjuo2ecRFtUW8vfdtro24Fk9bTyYFTWJt5lpArBKPDxxPaW0p0W7RHCs9ZjzutujbeHvv26RWipWRY2XHyK7KZnrkdJYeWcrnhz/nlRGv8HH8x3yb+K3xuGeGPMP0yOk45e7nsu/v4jL3HlDzJ7hvhGsXi/qnZSmmtYIlSQiSgnjxsFmWJvJdh95v/kvLBrGK3fc26NFs3XDNh8IMqCJb5Eo5B4JvX3AKFLWJ1z1jeg6lHMaFRVmaaS1ngKKjYGEDs/4WgkNSiZWJhD8hfrlw5e5zvXleKojIBVs3Ee1QW2b+vr2nGF8nK0vUgp2HiIBoEwWRVJrAA+sfoKl5tXxlykp0eh1zYuawM2+nsczLYO/BlOnKaDQ0EuQYZAzRTq1M5e4+d/Nz0s8mlxobOJaU8hQGew9m6ZGlPDv0WUrqSvBz8KO3e28crRyZt34eaVqR2qBRa3io30N8fexrQp1DFSF9OjQuYGkLjbViMuXE2uS1pSKk29IO9nwCzn4ir37ME+Z1pEGMV1mGA8vEPS1qmsir9u0L9j7CUbityVhb3COEGeIpKKkrIbk8mTp9HaFOocZJyka5kXv63MMn8Z+gl/VYSBbc0/seGg2NBDsFG/fTNmiZtXoW14Zfy4L9C4zj9be032gwNHBDjxvQNmqJcIkgwC6A/Op8Yt1jiS+JN/YhwD4Af3t/Fscv5puEb4zt/xv8P6ZHTm+/7KHCJYG2QUtP1564adxoNDQSXxTPcL/h/J3+N1tytwDCRf7d/e8yf8x8Xt79Mu8F30BwfQ23W3pwu2tfWHG3MP9rQa8TK88NVWIi68pFwkDSWilVqXBudLSQXiRJ0vPAWkxdu+NOc5wMrJUkSQY+kWV5CeAly3J+8/H5kiS1m8AlSdJsYDZAYGDgefgV/j15lXW4nGXI9dnipLE8ayFdWFuIhWSBk7XTv7qmpcqSW6NuZVHcIqaETMFSpYR4nyndaXy6ady4redtLIxbaGxTSSqTOtJ2lnZYWljy1bGvABjrN5bXR75OdWM1VQ1VZFRm4GrjylODn2JD1ga25Gwh2i2aKJcolh1dZnK9qsYqghyD8Lf3J6c6h7TKNBMRDfDOvncY6tmP4D8fF198BYebDy4QudCOPuJLsC1D74e0zcKpGcRD7Q2fQ/I601xEEGHZLSGTO1PECqTKUtSUdg4WubB6RO60a6jIpc1urvlalgb+g0W+40VKdxqf5w1NO4aK1g4itPuXe1trTzsHQd9bhAiqKYbCQzD9a7DUtIYBghA1SJC6CfrPhF0ftr6nUguxczoRfRLSKtOMoqSFNZlrmBE9g4f7P0y9oR5LyRJdk87oXaA36E32//zI57ww7AX+SPuDOn0dV4ZdiQoViWWJuNq48vjAx9HWa0muSMZOLVzn9xbsNYpoEOG823K3EewUzP7C/UwJ6R4RGN12fLqGwrQFsHKuuG9JKtNJGEklwrC/uVa4xbekCjTqROh38fHWfZ0CxGTd1rfFRM3uT+D6z0BXKyoFuAaLMfkvya/O5+ltTxtz7u0s7VgycQlhzmHU6evQqDW8Pup1Y/3wv9P/ZkLQBJNz1OvrKawtRNekMxuv6zLXcVnQZfwa/yt3RN/B3qK9bMnZwp3Rd9LHow878nYQ7RZNrEcsyeXJJiIaYP7++Qz1HUqI0ylSI7oh3XZsXoAM9BpIpa6S8vpynKydiPWMJbki2SiiW9Ab9BTXFpNemc5uQxXBG14ThqKjHhPf620JHiUmu5LXCVO+2lIRuaZMjCucIx0tpPsAM4DxtIZ2y83bp2KELMt5zWJ5nSRJiWd6wWbRvQRg4MCB7Uz1dh4FlfU4d7CQdrRRn3Ut6eTy5HbLHJ0N4S7huGncWJ+5vts8ZF0IdKfxCaJGrIVkwfLE5XhoPHh4wMOt9ZoRwvrOXnfy8cGPCXUO5WjZUZpo4rrw69iVv4vj5cexkCyYEjKFsf5jsbe058+0P/G19zWr69hyvht63IBGrWm3Fq6uSUe1TitMdk6kpR60V2/ofQMc+Vk4M6s1pq64deWw9wuoK4FhD4r85tz9QgAHjxK5zlvfEWJJp4VB94JkAan/iBeIFcfIaZC6UQit8Mug55UiFPwiduzubuPzvOAZLcTLvqWtbVd9AMf/bBXR0LySWNJqNqbXiTzpCc9Dwm8ipSD8MuH2XZkJSX/CwLtEPuzB5eDoJ9ybE1eDhTV4RZt15XQ4WJmn6LjauKJt0PJu3LsU1RYBEOsRy4zoGfjZ++Gh8cDawhoHKwe8bL1IrUjln6x/eG3kazhZO7Hs6DKjI3JaZRoHiw/y5qg3GeYzDFtLWwBjWa22ZFZlMshrkNFhvzvQbcenJEGv68RYqykWtcc3vdb6/rj/CdFcXykMwVomZiytIfYWcX/K3iP8GIJGiDzrlgmSEQ+L+9DRX8R7fW8TudDtUVUkInYsrMXK9Im1yxHRQS0iGkRd8nWZ61idvpqvE74GRETCvH7zeP/A+9zV+y6CHYNNzuGuceeGiBvaDcF217iTW53L5MDJrM1Ya6xL/uKuF4l2jeaOnnfwVcJX/JH2B7NjZpsdr2vStfvdAJBXnUdOVQ6OVo4EOwVjoz7JqnwX0G3H5gWIo5Ujewv3EuYYxhMDnyC1MhWtTouztbOxbGYLDQZRRi6rKltMmjZUi6oKE56H5DWi9GXYBJEOUXJcmAAOmCVCuj17njyyQ0HhDOloIX0tECrLcsPZHCTLcl7zv0WSJP0KDAYKJUnyaV6N9gGKzn93zy+5FXW42nVM6asWnGytyK+oO/2ObUiuSMbX7tzNFUb6jmRF8gpFSF/AeNp6cmfvO7k6/GqK64rZlL2JZUeXMSl4EqGOoaRr0ymqLeKh/g+xI28Hg70HE+IUQmZVJttytzHYezAP9H2A31J+40DRAUb4jSBdm866zHXcHHUzXx/72nitCYETaDQ00tjUyNVhV1PdWI2t2pZafa1xnyCHIHwdg8RD6eGfWjsqSeLBEIRT99Q3od/tInQra4f5L1Z0RDyUrn0WAoZAn+ng6C8E0pa3WleLdn4oDMimfwXpW8WDp0otvmS3L2jtQ24cHF8Ns/4yv5ZC98bGEcY/B72uEcLYJRi8+4iHrRMpSwcnv1bXbo0L/PmImIAJnwCZ24Vgbsk53fe5MB8b+SikrIW/HhcC6MAyuGvN6U2eqgpESoGNI5mWVtQ2VBPjHmOsqysh8eSgJ/k7/W+jiAaIL47nsprLuCLkCtw17nw44UM2Zm8kozKDObFz8NJ4MePvGXww/gN+OP6DySX1Bj151XnYWtpSXFdMUnkSgY7mK2hj/ceia9IxNXTqmf6lL23UVuATI34OGAyho6EyV4wnr96Qd1C8p80T97KSZHEf+ucFca+KmAjFibDuOZFLPfpJsYJ25Ec4ulIcmxsHx34T96EWZ/p6rTAXa6gVbt+HvhPtva4VpeCc/MipymFLzha2524nxiOGO6LvMEYZgSiZtiBugXG7Tl/H8oTlLJ20FD97Pw4UHWBVyirsLO24MuxKYjximB45nb35e4l2jeZYmUjrkZCYGzOX3fm7Gewz2Cwv+ljZMQrqCkirFNEPsixjZ2lnIpyDHILafT6JL45n3vp5lOvKkZCYEzOHO3rd0e7kk8KFR3VDNXsL9pJSkYKVhRXOVs7YW9lT1VBFQXUBKRUp3N7zdj442Gr8ONh7MIllYp1tqF1A68SoTgt/PQY3LIOISWKiffmNwmh06tvgpzjCK5w/OlpIxwPOnIXolSTJDlDJslzV/PMk4CXgN2Am8Ebzv6vOe2/PMwWV9YR7mBs0nU+cNZbEZ1ec1TFJ5Un42p+7kO7n2Y+vE76mUlf5r8PEFboH9fp6HtrwELnVuQBsztnMNeHXEOgQSENTA2/ufROArblb8bL14rmhz3FT5E1YSpaoJBV6WU9ieSLONs7MiJ7Bz0k/k1yWzMvDX0bboMXBygGDbECn1+Fu6y5eCAHw0q6XSK9Mp59HP54e8jSudp7iQbKpERJWibzly98RYdkt2LlD2Djx84m1oUGE32buFD9n74acPXD9Ulj/f6Yhl9b2IuSyugCadEI8FyXAmCdNhTyIVfLi48J8TOHCwtZF5JW2JeZGyNxm2ubbr7W+s2dPUTv6pm+FaV3qBggbL0T1hpdaj3EOFK7LbcdVVb4QRacS0nkH4IfbobGWkkGzebxqH4nlSdwQcQOj/UdjqVLT32sAAfYBJmXnWsitymVT9ib6e/Xn+R3PGz+72/O2MzdmLjN7zSS7KpthPsP4I/0Pk2NrGmv4J/MfZvScwT1r7iHcJZx7+tzDj8d/pLaxlikhU3CxdsHbzpuRfu2YWimcGmsHCBxm2ubZE8IuE/eVy56HIyuE+LVzF2Mh70DzsY5CkP/5mJgsbBHRLVRkivuQk7+Y+PnjUUhrdnWPnAoD7hSmiumbIWsn2h6TeHHni+zK3wXAltwt9Pfsz8SgiazLXAfQ7spyTnUO9lb2HC09yv3rW/0mVqSsYNmUZcR4xDAtbBq93XuTpk2jsr4SbYOWbxK/IbUildWZq5kTM4djpcdMVhHbllr7Keknnh78NJ8d/gwfex9G+42mt3tvHE6o5Vupq+SVna9QrhNRSTIyiw8tZrDPYKUc50XClpwtLD60mIFeA/kpqWUCW0zoXR5yOaP9R3Os9BgP9XuIJrkJb1tvvGy9eHTzozwd+yB9j6wx9RvwGySqeLQtd5mztzXSQ0HhPNHRQtoLSJQkaS+mOdKnKn/lBfza7AatBpbLsry6+Rw/SpJ0N5AF3Nhx3T4/FGrrO3xF2tnWkqKq+tPv2IbUilRiPdqpS3mWWKut6enak22527gi9IpzPp9C55GtzSauOI7C6kL6ePRB16QzPoi38EfaH7w+8nU+jv/YpL2wtpDS+lJWpqxElmUmBk9Eo9Yw1GcoG7M34mvnK8xiJAtcbFxYmbqS/YX7sVRZcnvP27kytNWgbqD3QL6a8hXaBi2uNq7YWzVPPLmFiTqql70gVmVOFU7dUA1D5sD+ZUIMR0wWq5BXLRJhXXWVwkjK1l28tG1+z8teBH09bFso8g5bar3KBvM8R2i/TqvChUn4JBg8uznkWxIhth5Rwk3byl6YipWlQuxN4LNRjLOGGlh6WesDm0otVhfbGyuS6VgxyAaOlYqwWjUq+qpsqR37CPtrcgj07kXidlGm7efkVqOwX6Z8g5ONE6P8R/FtgqmfQKBjIMV1xZTVl1FQI3wALCQLJgZNpKC2gE8Pf0qT3MSEwAnMiJ5hjA5xs3FDrVLz1ui3yK/Jp1xXzt6CvWRUZnBV2FU4WDrQy60XGksN/T37o7ZQHJTPC3bucNV7kLtPRCFMek3Uo+8xWZRmK88Q4njcM7B1gVi5luWTjK3mutBHVrSKaIDjf5N74xcc9A4lS1dGHwsDmvJko4huIa4ojgf7Psi6zHWMCxhHlGsUKkmFoc11+rj3wdnKmZePvmxyrN6gZ1P2JkIcQ4griuNg0UGcbZyxVduarGqDMMsbHzieFckrAIhxj6GhqYG7e98NwLbcbVQ3VDOz10y25Gzhzb1vopbUzOw1kzui78C12Q+jUldJYrl5hl9hTeGZ/vUVuiF6g56jpUcpqC7g4/iPmRA4wSSK7fqI66luqObJrU8iSRJTg6cywncEFioLyuvL8da482vkPXjrVcKBOzdOpHb5xArDvZ/uML+o8h2ucJ7p6G/I58/2AFmW0wAzlSfLcikwwfyI7ktRlQ6Xjg7t1lhSVnPmkfMG2UBGZcZ5Ce0G6OnWkx15OxQhfQGRX5PPb6m/oVapqW+q51jpMfzt/bk16lasLKzYkLWBrKos5Gax0F7ZksKaQu7qfRdHSo7gaetJTnUOfT37kludS1J5Et8mfMt/+v2Hjdkbjfl4jYZGvjj6BYN9BhNBhPFczjbOONs4m3fU0gZcQ8RD57FVwnjHM1p8SbbNa7J1g5T1wnRMZQFZO0WuoEeUsS6vkRkrIWOLqOkaMlaUmSk6Kq7TthRSynroc4MopdWCV2/wOEluosKFQUW2qCHeMpbGPy/EdFMjbH0XVtwjJm6adMIZviWU38ETaPa3vGuNqEvd1CBWqL36wND7qc8/SGnQUOzKM3AuOGaWIx1fHM/da+42+ga0VED4MPUX5tp7tNvdpqYGahtr8dR4MsBrAPsL96OSVFwddjXxRfFMC52GhWTB/bH342PvgyzL1DfV8/KuVvGzPms998Xex0P9HkJjqaGPWx88bT3xsfdhdfpq437FdcV8k/ANtmpbpkdO59uEb5nZaya3Rd2Gu637efsvuCSoLRMrzGXpwhzMp59ISXHyE6+2ePSAm78Xkza6KmE2lrNHvJe6Qbi6H27jwu7dR6xu6xvguGmkQfHAmTyV9gMHm0OtSV3BG6PewEKyYLT/aMKdw0muSGZrzlb6evZl1dWrMMgGEssSeXzg4zQ0NbA8cTk2FjY8O/RZ7KzsMBjMnetDnELYkL2B9Mp07K3sWZexjhF+5iaMBtnAcJ/haCw0RLhEEOUaxbrMdXx97GsMGLixx41U6Cqoqq5iY/ZGAPSynqVHltLHow8TAsUjn7O1s1llCAAfe5+z+E9R6G4cLDpIUlkSIU4hzOo1C0drR+Pzhr2lPc7WzvyS/Asg0gD+TP+THq49iHTuQayVG36SNeTEwYFvRBWEcf8TzwMJvwsPlYAhwiOlhahp4BbRXlcUFP41HSqkZVnefKr3JUnaKcvysFPtc6FS19CErtGAg3XHzlU42liirdejbzKgtlCddv/CmkJsLW2NJjPnSrRrNO8dOF8VzhQ6gyxtFptzNpNQJlZfh3gPYWzAWP5K/wtdk45podPo59mPJrmJPfl7uC78On5MahWU7hp3vGy9SCxP5MG+D1JaV0q9vp686jwGeQ/irt53kVaZRnl9OVtytphdf1/BPno498DTrl3jfVMqc+HHO4T4aeHGL0X+XwuBw8QX5rZ3xbZ3Hxh8T/szzx49xKstdu5CYHnHQpp4mCMvTqw0Tlsown/9BopcK0fv0/dZoXtSkQ3f3yqiFFqY/jVENwdIDbtf/F9X5YuxM/45IZJPxLeveLUhtf8tLDpYyqbMHwhzCuHpK99kkIOPMYhVlmV+SPzBxHyvTl9HljaL2X1m42DpQLBjsNGJG2CU3yg2F+1jsp07WVVZOFo58r/B/8PVxpX4knh6ufUisSyRJ7e2VoG8u/fdFNWYZ1JtyNrAl1O+bI34aCbSJRJHK0e0DVpj27UR17Iucx2NhkY+O/wZoU6hSpnDs6GhVtSobevmPmSuMD+yOsn3rldP8QKRx+8cJEK4c/eL+9Do/0Jpqsi9jpgkqhEAhI4Tq3DNpHiEcjBxo8mp9+Tv4flhz/Nj0o9syt5Eb/fevDD8BSJdIimtL+WetfdQWl8KiIoc749/n56uPY2rwQ/0fYC1mWtJKEsgvjiea8Ku4dfkX9lbuNd4jTkxc9CoNWjUGur0rZ4tV4VdxRt73+C9ce/Rx6MPf6b9ydIjraZ/3yV+x1uj3uLjQ6ZRTyC+J1qEtKO1I88NfY6HNjxEcV0xFpIFD/R9gEiXyFP/Xyh0W1LLU9mYvZGaxhq25G7BwcqBlIoUpoVO49eUXwlzDuNIyRGz43bm7uSaGh2ufz8FQcNh6luQsx+KE2DvZzDkPlHWCkSkmv9gUZM9fJLwubBRcuoVzi9dHbN10drlibBuS5pD1DsMlUrC0UZNWU0Dno6n/3OmV6aft9VoAG87b+r19RTUFOBtp4iMC4Gi2iKjiJaQGOIzxJgDDSJvbV7feYS7hFNcW8zx8uPMiZmDs7UzkiRhY2GDnaUdsiwT7BTM1tyt5Fbnsr9wP2MDxlJWX8aSQ0sY6DWQMOcwiutMa6paWVixNu0PUcf8dGWCCuJNRTTA309C4PDWcG8Hb7j8reaVxQZRisbuLFbQXEOh/x0i5Ls4obVclixD5OUi1Ffhwic/3lREA6x+CgKHitrPfv3h3g0ixNbGWdQmbzs+qwqh8KgI7/boIcoWAVUNVby0903iisQ4TalM4/5ND/PDtB8Icw4DoEluMn4OnKyduCXyFkA4clfoKvg7/W8eHfAoh4sPEVd8gF5uvdAb9HwY/xEplancH3s/D6x/gI3ZG7GQLJjeYzoRLhG8svsVk1/nh+M/cE+feyDd9NeMcInAQjKfWApxDmHppKWsSl1Fcnkyw3yHkVCaYJLm8Vf6X4qQPlNqSsVqspUtjH8W4r6CiizYvVikDpwwAdMu9p5w9Qfw3S0ineDQDzD2GdFmZWe6b8zNkPiXuG8B9e0I9f5e/VkUt8g4/g6XHKagpoDhPsPZlb/LKKJBRA0tT1jOu2PFpGRCaQJfHv2Sg8UHGeA1gNdHvo6NhQ2PbH7E5BrLE5ZzS9QtLBy7kOyqbGoba/Fz8GND1gauj7jeWMpqbeZas/7tyN9BD5cexnJbLfRwMZ3w7O3em++u+I6c6mbXbsdgLFtM/xQuOI6UHkFG5pfkX3hx2IuU1JcQ6BhIgH0AIY4hHCo5hJ+9H7sLdpscF+MejevOz8VG5g7xfT3zd1Ge0tIGUEHsrRC/XJSOcwoQZqJ+/Tv/l1S4JOhqIX3Rlggo1NbjYmfdKddysbWiqEp3RkI6rTINL7vzV75HkiQiXCI4WHRQce++QGibB+fn4EdqRarZPmsz13K49LDR+OPxgY+z5NASo9lLkEMQzw9/nuPlx3lk4yPoZWHgsTJlJc8OfRaAfYX7eGLQExwrPWZc8err0ZeSuhLWFsVxrUM4dsGjza5tgq4dI7HaEpHX3BYr+zN7SD0ZUVeIFR+fWKirEGGYHj3bLR+jcIHSUGXeVlMkyly14OgrXidSkQ0r7hVpAyAEzYyVEDCYgpoCo4huQdekI1ObaRTSapWamyJvYl/hPubGzOW9A+8ZV+6i3aKJcY/h8c2P88GE94krPsDKlJXGz8z6zPU8MuARvpr6FRmVGagt1IQ6hXK87DgnUt1Yja+9LxHOESRXJAPCmf+K0CvQnKT2cJRbFFFuUQB8eOBD1mSuMXm/t1vv9g5TOJGaEjHJd6Q5DFulFh4Pm98UIdvtmSKejJDRMGeLWJXWuIpJm/b+/zx6wB2roCQJVBaE2rvhkPAlVY1irIc6haJr0plNZhbXFZNfm09xbbHZKXNrcmk0NFJWXcb96++npK4EgI3ZG8mpyuHJQU+aHVPVWEWwYzBLDi8xpvLYWNiwaNwi+nsJASPLMj1de7Iha4PZ8QM8B7CvYJ9R1Me4x7RrIuZl53Ven18UugaDbMAgG9iWs40RviM40HzPA1Ei86F+D6E36Onv1Z/12euNJfgCHQK5Ansx3lvQVYG9h3i1MO5/0Of65knPKOOkp4JCR9DVQvqipbBKh0sH15BuwdnWkuKqM6slnVqZipft+f0iCnIM4nDJYUVIXyBEuUahVqnRG/RodVpjCF9bvO28KakrYWvOVqZHTOdIyRGjiAZRY/Z42XHcNG5GEd3CvoJ9RkfYDw9+yC2Rt+Dn4EdZXRlplWn8lPQTE3yGY7VtETiHnNoF2yNSPJC2ddqMvRUcznNunMqiOeS7x2l3VbhAcY8S/8+Gpta2fjNaw2RPRc7eVhEN4gFtw6twy3I0ao1ZCR8QOX5tGeo7lPfHvc/nRz43CX89VnqMMf5j0Mt68qrzTWr8RrpEck34Nbyy8xUGeQ8iwCEAd407EhKBjoF42nqalMXyd/BnT/4eYjxiuCzoMlSSioFeA4lwPrO8wEnBk/gl+Rej8PLUeDI5ePIZHXvJU3C4VUSDuGftXizq16b8IyJfzga3MPE6HQ5exuicIGDJpCUsObSEhLIE5sTMIbsqGwnJxOtCQkKn1xHjHmN2upsib8Leyp4jpUeMIrqF5IpkZGSsLazRNbU+c4zwHYFBNpiM3fqmej6K/4hbo25l2dFl9PXsy+Uhl/NL0i8U1IqoHzcbN4Icg1gYt5DPJ39OWX0ZlipLwp3Dlbz8i5ji2mLUkhpvO2/6efYzKWllkA18cfQLbo26la05WxntNxpHa0c8NB74azwJ/f0p4W1SeBTkpvZFsnOAUl1DodPoaiHdsXHPXUiRth7nThLSjhpLiqvPTEinVaQxNmDseb1+kGMQm7I3nddzKnQcvva+fDD+AzK0GWjUGlysXVibsZbCWuGAqlFrGO0/mgX7F3B7z9sZ6TuS1/a8ZnaepPIkpjqb15g9UHSALyZ/wfTI6VTWV+Jh68Gi/QuJKxblXWwsbJjlPgjLHY9BfQWU6KCmWJjwOJ9Qz9arD9z+C6x5VqzOxN4iTMXaCwkvPg5HV0H2Toi+ujmn+fylMShc4PjEwG2/iNrildkQexsMndNaE7q6WJiIHfoBvHtD7xvEv2Dq9N5C0RHQVePv4M8Tg57g+R2t3pqTgiYR4WIqXh2tHIl2izbJg26hqkGs6Pnb+/PMkGfIq87j15RfuSL0Ct7c+yb/6f8ffkr+ybgyMy10Gvf0voc3Rr7B0iNLOVB0gAFeAxjiM4RFcYuMudihTqHcEnkLTjZnVp4wwiWCZVOXkVyejISINvJ38D+jYy95akvM2ypzRNm+Qfec/l5UUwxpmyH+eyEOekwV/57EiO5k9Hbvzduj36ZWX4tBNrA2Yy03R93Md4nfGfe5JeoWvkv8jrL6Mh7p/wg/Jf1ETWMNt/W8jd7uvTlSfAQnK/Mxo5JUuGnc+GTiJ8zfN5+0yjTGB4ynv2d/0rXpZvunVKQQXxzPsbJjHCs7xpacLbw//n3iS+IpqSuhsamRxfGLmdVrFuHO4VirOyeKT6FrqGusI7kimQpdBR4aD2b2msmBogNm+1XqKolyjcLKwgp7S3u0DVp25+1gUNQMEa1RchxGPip+9oxu50oKCp1HVwvpGV18/Q4jv7IeJ03HOna34GijpuQMhXSmNvO85zIHOwaTWJaILMsdnhOu8O8pqikiuyqbxPJEPjr4EdoGLQO8BhDrEctVYVfhZetFo6ERfwd/Nmdv5p4+9zDEewiplakM9xvOsTJTx9TB3oPxsPWgr0dfUitSjeGETwx6ggDHAAIcW2eEXxnwOIlZG2mQDUToZXqsf12YglUXwQ+3QWMdaFzgxmUQOqb1IioVhI6FO/8Qq4D2XtBeOZ7KXJFTWNYcpp66AfrfKXKnlYczBRCr0WHj4M4/obFWjKUWQzpZhrhlsKHZ7TplnchvvXutyJVuz62913XGXPzLQy4nxDGErKosXG1ciXaLxsXGxewQFxsXJgVPMhE1AOHO4QQ5BvHghgepb6rHydqJl4a/xM68nQz0GkhGZQa9XHsxLWQaKkmFn70fs9bMokJXwUi/kbw95m08NB48vvlxo4iWkHiw74NnnUca4BBAgIOymnPWuIaBJJnWsg0ZI4wRbc2jfkyQZeE8/M8LYjtlncjxHPEwhE80c4A/HdZqa6MovSnqJn5L/Y15/eZRr6+nl1sv1Co1BTUF2FvZY6WyYnLQZAIcAzhUfIh56+chIxPtFs2Lw180mSCa1WsWHhoPmuQmXhnxCk1yE1uyt1BSX0Kos/mK+wjfESZCKac6h5K6EqYETyGxLJH8mnw+nPAhPd16KiL6Iie7Kpt9BftIrUzlz7Q/eaDvA/ya/Ct39LoDtaQ2iWzr4dyD1Rmr0TfWc43vKNzq65jqNYqAv5+DrO1ip7RNoH8c/AealRpUUOhMOlRIS5J0HfAmom6I1PySZVl2RPxgbsl3kVBQWU+Q2/lxxj4dThorirSnryVd01hDdWM1rjan+VI/S+yt7NFYasitzlVWL7ohGZUZbMvdJozm7H3ZV7CPubFz+fTQp+wv3E+kSyRrMtbgY+dDH48+JsZjd/W+i41ZGxnkM4gpwVNYl7kOC8mCGdEz2J2/m/L6ckb5j2KE3wh6uPTAzcaNKNcosz4EePQioCJX1EutLhTlYKa+AV9d3ZrvXFcOv9wFszeLeqpt0TiL18koTmwV0S0c+AqG3gee5v1RuIRpbyxVZsPW+aZttaUifNAtHNSWMPIR2PMpNNZA2ASx0mhoApUFNmob+nn1o59Xv1Ne2iAb6Onak5F+I9meux2NWsPNUTcT7BjM3WvvpkkWYecNTQ2kVabha++LnaUdvd17syV7C4sPLUYtqbkm/BoGeA3gn6x/2Jq7lW252/hx2o8snriYg0UHyavOw0JlwQcHP+DP9D95fODjyr25o/HqDdd/AX89JsZO4HCY+ubpRTSIiIctb5u21ZaJCZ/Nb8B1n/6rCcG6xjq+PPolO/JECaBbo26lsLaQj+I/olJXiZetFw/1e4jf037n0YGP4mPvIyaFnELQG/TYW9rz6WWfklKZQohTCN623jy59Ul25O1ALamZET2DTG0mG7I3EOsRy+yY2SxPWE51YzWj/US5rRMNxixUFjhZOzHEZ8hZ/z4KFx6Nhkb25O9hS84WLC0scbF2YXbMbOIK4whwCKCwppBnhj7Dhwc/pKSuhGi3aO7vfS9ybSm90nbg8eO9wnF76H2tIrqFne9Dv9tF+UoFhS6io1ek3wKulGU5oYOv0+0orKqnb4Bzp1zLSWNJavHpjUxaVqNV0unLZJ0tgfaBHC8/rjysdTOytFnMWTeHvJo8Y9uDfR/k66Nfc23EtXx+5HOOlR4j1DmU/p79WXp4KcN9h9PbvTd51XlYW1iTrk0nXZtOb/fe3N3nbpoMTYQ6heJi48KCuAXGFTArlRVfTPmi/ZUFlQVETgWfviKc294LihJhwJ2iVEW1CCunpkS4I9u6izqshUdEXUi/AeAS9C/+Ahetn6FCC8WJopaooVEYznnHiJXB06HNE3msjn4n36dldTHvoKjlO/AuIWiyd8M/zzeXIjpzz4lKXSUL4xYS7hzO7JjZ6Jp0rE5fTahTqFFEg1j5++roV0ZfAgmJRwc+iqXKkkZDIz8n/8yDfR9kY/ZGmuQmZGTya/IZ5zaOoyVHWZG8gglBExjjP4aN2Rv5O/1v7o2594z7eclhMAgxK6nM6zyfKWor6H0tBAwSJomOvqc2K2ypaV5VeHKjRFkWK2+1ZeB49r4QFboK9uTvMW739+rP/7b+jwZDAwCFtYUsiFvAc0Oe4/2D75NSkWLc967ed/F76u+8Nuo1hvoNxSAbmL93vlGU62U9Xxz9gnn95rExeyPxxfEU1BQwPXI6k4InEWgfaFbWKtIl0mjAp3BpsDtvNw9seMBocupo5cjMXjMZ7DOYrTlbeXvf2zhaOXJ5yOVEuEQQ69abyA1vQ34c9LwKRj0GWbvaT52Qle93ha6no4V04aUoogGKtDpcbDsntNvpDHOkMyoz8LbtmBJVPvY+JJUlGes+KnQPEsoSTEQ0iPJWI/1GYiFZ4GXrxfTI6eRW5eJq48rbY97m24RvWXJoCcGOwQzzHUZvt94cKT3CkZIjxrqOr418jcPFh03q4jYYGvgj9Q9iPISBTU1jDYmlieRU5+Bh60FP1564aJxFTceUf8RKtK5aGD7l7IX0zSK8284DklbDTzNbO+3ZC2793jSHur4KdFpRLsYjClxCoTyt9f1+M87e4EfhwqLgCCybJqIZQIjcmX+IersA9VrIPwSVmeDoL0S2hRqOrBBCuKFGlE0bep/IudvYppyUrVtrjrRbuFi13vFe6/s9r4IzzD1uwcHKgQGeA1iXtY49Ba0Cx8XGBZWkwiAbjEZO5bpyNGoNM6JnYCFZ0GRoYtG4RTy/43mK64rJqc7BTeNmNBtz14gw89yqXKaETOGn4z/RYGjgytArqWmsoa6x7qTO3Zc0VQWwd6n4v7WwgvHPiLJSp4qAORl6HSAJo6MTS1W1IMuiPnT6FlGuT6cVpmRDH4Atb7XuZ+sqzJQChopybP8CR2tHYj1jjSZgWp3WKKJBuMlPC51Gua6cywIvY3LwZGPu9A/Hf+D6iOtJKEtAb9BTVFvEuqx1ZtcoqCnAxcaF8vpyxgeOJ8AhgLSKNCQkZvWaRYx7DNtztxPtHs0I3xF42nr+q99F4cKjXl/PZ0c+I9otmvEB46lvqsfawhpna2dUqFibuZYbIm7Ay84LvUFPha6C+voK8OwBgYNg/UutaV/uUWDvDdUFrRcY9qC5r4qCQifTIUK6OaQbYJ8kST8AKwGj0pNleUVHXLc7UVKtw8Wu81y7S87AtTtDm4GH7dkZl5wpfvZ+xnIrCt2HWn2tWVtVQxX2lvZYqiyZHTOb/9vxf+ibXbFDHEMY5T+KfYX7yNBm8PLOl/lwwof8Z+N/qG6sRkLi1qhbOVh00JgT3ZaSejFr3GRoYkXSCt7a1/pgeEOPG3jMeQD2P9zWekD4ZaCrFHnROXvhmo/BSiPq+7al6KgQRM6BIh+64DBseRNKUkQO4oj/wK0/iNXtrJ3Q6xqRW6jk3V3cJK1uFdEghMyuxeDbH2QD7PoYNrUxyhs+T9QG//2h1radH4C1oyiBZmULyWvBOVi4Lbs0T8T4DRRGd/HNuc2O/jDmiea6pWeOtdqaObFzRC3fZufiqcFTcbF24d4+9/LZ4c+wVFnS0CTEzr197uWrY19RoasQl7Vy5KURL/HwxofxtvWmor4ClaTijug7+CvtLzQWGjxsPVi4faHxmj8n/8yD/R5UclBPxvG/WwWsvl6UsHIKhKjLz+48RQmw+S2R3+w7ACa+AL7Nof76BlGmx8ZJ1Jn+6mohokFM9vW8SkzUXPW+mORx9BWTNwe+Fr4RVmc+AaLVabFQWWBnaYedpR2PDXiMeRvmUVpfirWFtYmDd8uqc35NPiCMIB/q/xBv7X2Ler0QPVqdltv+uo0IlwgmBk6kXFfO4ZLDRtO8Pu59cLBywM3Gjd9SfzPm/6slNR9f9jFTQqYoFT0uQZoMTWh1WiwlSwb4DuC9A62TkOMDx3NTj5u4IeIGjpUd4+dk4XavklQEDXuJ2Iyt4NO/tR70uGfE52XGr3DkFxHJ0edGkWKjUvKjFbqWjlqRvrLNz7XApDbbMnBRC+kanZ4mg4zGsnM+4E4aS0prGk67X1plGv72HRN67Wvvyz9Z/3TIuRXOnrzqPH5N/hUHKwdjOGgLV4ReQbhzOH4OfizYv8AoogHStelMtpxsXB2rb6onoSyBheMWUlpfiou1C1qdlqe3Ps39/e43hvkZzx1yBfX6enKrc1kQt8DkvZ+TfuaaKFdi2zam/CNqPlYXwX07wCVYON22F8bVUA0lyVB0TISFh0+EwGEib7WmBK5fCmPb1DitKYWMbWLV0T1CWZ2+GKnMMW+ryBQh22WpIr+0LTveF7msJ3L4BxGau+kNYYKXtgHiv4V7Ngi3bwcvmPq2cF9urBXGUv8yBDjSNZJvLv+Gg0UHSa9M52DxQe74+w7eGP0Gr4x4hcLaQkKdQlmfvZ7c6lyjiAbQNmjZnL2ZW6NuJdI1kpdHvExJXQmrUleRVJ6EvZW90X2/Lesz1zMzeiY26rMT/hc9jfXCVO5Ejv91dkK6plTUGS84LLbTN8E314noiNI0sYqmzQU7TyHcm9p8X5eliSicoytE+opnT+hxOUgyxNx0xuOsvL6cfzL/YdmxZdhb2nN/3/txsXbhs8OfcWOPG/Gx8yHIMYh5/ebx3oH3sFXb0tjUaBTRIEpWbcvdRj/PfnhqPNmTv4dZfWZhIVkwKWgS+wr3kVCWwCCvQUwOnszBooMM9RnKtRHXsjZjLcfLW2ub62U98/fNZ+nkpThanyLEXeGiI70yneUJyymoKeCWqFt4apvpxPiGrA2MDxhPgGOAUUSD8JBYeOhjBrlF4GrjAH79IXCoWJk26GHGSpjwXCf/NgoKp6ZDhLQsy7MAJEkaIcuyiTuAJEkjOuKa3YmiKh1udlad5mBtb62mrqGJ+sYmbE4h3jO1mQz0GtghffC28yanKge9QY9a1dVm8Jc2jU2NLD28lB+TfsTT1pNHBzzK+qz1FNYWcnXY1YzwHYGtpS3Hy46TV51ndnxtYy1WKivqm4QJmLvGnfv+uc8oxm/scSPPDn2WBkMDLw57kW8TvwVgSvAUvkv8jnJdOQbZYCLeW6gytDPh09QIbhGthiEO3sJxe++nYjtwGISNByt7kde68yPI3iXec/SFsU/D+heFgGoxFtPmwm8PQ0qz0Y2NM8xYIXKtFS4eoqbB/i9aty1txXjI3iVWAZvz8kzQtxO94xICyevEimTO3tb2kiQhpAFsHIRD7HmgpqGGt/a9ZVID+vHNj7N4wmLWZaxjc/ZmnhnyDN8nfm92bG51LndG30mZrozfU39neuR0ksqTuCrsKlIqUvCxN8+lDXcOV+7L7WFhJYRrXpxpu1v42Z2nIrNVRLdQWyZEc4sTvFs4jH4cys3LRFGRKcbtkV/E5GLyWrhrLdi5nXEXDhQeoKSuhKnBU9E2aHlk4yPM6zePDdkb2JC9gZF+I7G3smdz9mYeG/AYtmpb0rRpZucpqCnglshbqGuqI9YzlhxtDgvGLuC/W/5rzNn/Pe13hvoM5d4+9xpDxdtO+LSQW51Lnb5OEdKXEFqdlv/b/n9kaDN4ftjzWKmtqNPXme2XXZXdrvFtfk0B9W4jwdIOSlNENYUBs8Tn6PhfwsfAo0dn/CoKCmfE+XedMuX9M2y7qCjS1uNi1zn50QCSJOFia3XKVWlZlsnSZuFle+bGOGeDtYU1LtYu7QozhY6nTl/H1pytPLT+If5I+4MVySLoo6i2iLf3vY1apea5oc8xJ3YOQU5B/JL8C+8ffJ8xAWPMzuVq42oU0ZOCJrEtd5uJKP4p6SdsLW1ZdnQZ5bpyAhwC8HfwZ8mhJewu2M3yhOXo9DpCHE2dNO0t7QlU25teTG0DVg6mJa8sLEW+6vD/iLBttzDY+Kook/XTTBG23VLSR5sHxQnCxCx7N3x7k3h4zdrTKqJBGJxteFWEh+fGidzZLqC0Wsf+zDKO5lVS26A//QGXEvoGkTf6453w40xRU7fxNCkrgUPgus9EJIODL9zwOay6T4TOJq8xd3+3cxe5q85tjOssNSJsu6Sd1JST5bmeA4lliazPXm8iolvIqs5iQ84GAh0DWZm8kvEB4832Geg1kEc3P8qz25/FXeNOk0GYlEW7RfNP1j/YW9qb3OftLO24teetipBuD5UKBt8rQvtbcPCBHpPP/BwGg8jjbO/v2ybah9IUKMsQIakn4t1H3ONaxmtZmoikaY+yNBrTt1GWeZRjuRVU1jWQo83h5+Sf+Sj+IxYfWsz6rPXM6z+PTG0m7hp3JgROYJjPMBbELSC+JJ75++fz8u6XjXn1bZkUPAkPWw925u3knX3vsCBuAXk1eUYR3cKu/F3sK9zHTX/cxN78vUQ4R5id6+rwq9u9hsLFR0NTA7vydvF3+t8cLz/O7JjZPLv9WX5N/pVoV9PybTYWNqglNQEOAWbmt9P8RuORvFFMgtp7iknxslQRUdbUAMdWmV27vrGJhHwt+zLKzqiCjYLC+aSjcqSHAcMBD0mSHm3zliNw0Sc0FFbpcNJ0Tn50C862lhRX6fBzbj+XqrS+FLVKjb2Vfbvvnw987H1Ir0wn0FExf+hsduXt4qGNIu/Tz8EPW0tbtA1CLBpkA7vyd3FbT5GbnFiWyFfHRDjjGP8xTAudxpqMNThbO3NH9B3YW9nzxKAnqG2sxUPjwfM7nze7XnJFMrNjZpNTncP6rPUm76VWplKuK+f6HtezNWcruwt2E+0azVNDniJQsoMeUyF5NbhHwoTnRaitS/OYKUwQOYbFx6HnlWB5GXx/c+vJ68pF3mDUNJEPDWLfwXPEjHVVPmRuFfVXTyT/IOz7HPZ/gRw5FWnKW63X7QSSCrU8sPwAyYXCYf+OoUE8dFkE7vZK7iogVpG/uqrVifXYSrjjN9NJlhOxdoCYG0XEQpMOVj0o0gRA1OW97Hk4ukqc27c/xEyHPx+DfrcJ8SQbhIjZvhCGzIYNrwghVV8J7j2ocQonNacCD3trfE5ybz0bdHodn8R/gq5JR3/P/sQVta6ESkh4ajyxkCzwd/Dnw4MfEu4czv2x9/PVsa8wyAamR04npSLFONH1Z/qfjPYfzdyYucbJrs8Of8btPW/HRm2DhMQo/1H0dm8nnF1B4NsP7l4nfBhUavDqA25nkQaSux/+fkJUINj7WWt71BXivbbUa8E1GPreJiaNVGroe4uIyqnKF9UKQNz77Nsx5UpaC7/chd6nLyU9xtPgHsM3SV6EBOWyNXercbfC2kL2FuxlsPdgdBk6ot2iqdBVkFNlmgqxPXc7Tw56kiWHllCrr2V6j+l423rz6OZHjS7LIMbmiahVaprkJmoaa/i/Hf/HsinLmD9mPm/tfYvSulKujbiW23rehoWSw3pJsL9wP7PXzWZuzFxujLiR5QnLqWmsYX3Weh7q/xAOVg7sKdhDqFMoc2Pnkl+TT3l9OQ/3f5jvE7+nsLaQaX6jmW0XgWWvCBFpZO8NoeNEZYaYWyBjS+skejPltQ0s2ZzG4i2pyDIEumpYfPtAon2VKAiFzqGjpqitAPvm8zu0adcCN3TQNbsNRdr6ThfSTppTG45lVGbgY3f25TPOBk9bTzK0GYzhFA++CucdXZOOZUeXGbfXZKzh5qibWXJoibGth0sPwp3D2ZW3y8QU7puEb+jh0oM7ou8gwiWCN/a8ga5Jx7y+8/g24VsGew+mh0sPksqTjMdISFhbWJNQlsBIv5Fm/RnsPZhDxYfYU7CHjyZ8xIvDX8TB2gFHq+Yvths+h5piIYJaaqwamiBjOyT+IUoX+Q+A8gzxGnSvcFrevkg8cBYeFaW0WoicKkRXVXOuX0NN+yuJIaONYbvS8b/Rh12GevA94r2KbJGD7eh36pI1QGVdAwWVOhxs1Pieobhq0DexeHOaUUQDfLUrk9E9PLgsumOiRC44DnxrXs5k3xenFtIt2LmJ6IScVids9PWw5hmROx86RuQ1r7pfrBLu/FCkBYx5SpRWib4O2TcG6cZlkLlDvOfoS0JSEjf8lYSHgzXv39KPoaFnHmrbHlUNVcQVxYkHyAEPY5ANHCw+iJuNG/P6zUMtqenn2Y/SulIAPj70MeMDxvP2aBFV8vyO581c+Ivrill8aDGP9H8EEHVbvzgqwt3HBYzjuojrUDgNnlH/vt58yj+iTJ+9F0z4P2EqZu8lJmRaKg84B0GfG8Q9qKYMQseKvGgrOyEMSlIgcISoaBA+EcY/Z25kV54BK+6hoO9NvGfZwOrUbyAVrgi+gqZy82ociWWJ3BB+A1WNVdTr60muSCbGPYZDJYcAYQZ2uOQws6Jn8VC/h8iqysLJ2ol3979rIqJt1bYAxHrEEl8cb2y/LuI6NmZvBCCnOoeqxiomBU+iv2d/GgwNeNh6YKnq3Ocgha7jp6SfcLRyxNfeFw+NB18liMn6JrmJBfsXMMR7CG+PeZsNWRt4ZtszNBga+O/A/7I4fjH/N+z/iLD2IKTJgGVJsjAbbagWpeFGPSYijhprQafFEHsbqYVVeDra4KSx5HBOJR9vTjX2I6usjvlrj/PBrf3RWCmTOAodT0flSG8GNkuS9KUsy5kdcY3uTEEXCGnH05TAytRmdnjZCU9bT9IqzHOuFDqBNgsGxXXFxBXG8cqIV8ivzqeXey+0DVp25O3g5V0vM6/fPJNDk8qTUEtqPG09uTXqVqoaq3C0dmT+GFEzdGLQRD6K/4i0yjTsLe15ZMAjfJf4HaP8RjHQayDPDnmW+fvnU6evI8o1imG+w1iwfwGuNq74Ofjh53CCWY6VLVidUBM6ezd8c40Q1CDCbcc+Dbub65A6BcCQ+0SJGv/BYuUahNutWw9hEtWWkhSx2r35DZETGzhclMhqWcUGSN0oSmQl/gZ//VesdgcMhWkLwatnu3/mhHwtT/1yiPicSlztrHjlmt5MjPbC0uLUWTKVdY1sTTI3UDteWKUI6Rbaq29/NqtZGlexepHwW2ubbBDntdRA/PfC3X3Xx9BYizz6CaS/HhMlVPIPINWVwtb5rce6hNB38pvcP8Caj/bX8MC3cfw+b+QZT560h5O1E6P8RrEqdRUbszZyU+RN3Bx1M7aWtlTUV1CqK2WA1wBCnELIrRarjBuyNxDiFIKMjJedl5mQbnH43pa3jTt73cl3id+ha9LRx70PEwIn4Gzt/K/7q3AGtIzb1PXipbIAv0Fw7WLhOuwcKCYCty0QDvGTX4c/2wTqaVzgyvegz3XCy8HRt92JwLqyXDSygT0ewQRbWXOHi6jHbGtpi5u1eTWOvh59sVBZMDtmNr52viw9spTHBjxGg6GBUX6jsJAshBGl3Ii12poAhwDK6st4ZcQrvLL7FYpqi3DXuDOv3zwWxC1gYtBEhvkMo9HQiK2lLYdLDhvrToc7h+NmIyaZ3G2VUO5LkTCnMK4Ju4Y9BXuoaqgizCmM1MpWgbu7YDdjA8byV/pfaNQa5sXOY03GGiYETkDSVRPx+/+Q3MKEX0Wva0RE0chHoDxTpD0AxN5KrUsUExdsoV+AM69f34ecMvPKJDtSS6mobUBzFm73Cgr/lo5OmvpAkqQTK6ZXAvuAT2RZviiTGQor6/F3se3UazraqCnSnmJFWpvR4ULa29bbOEOt0HlYW1gzq9csY61QgIPFB3lkwCMM8BrAqpRV9PXoy8asjdwRfQcltSXcF3sfnx7+FL1Bj4+dD3Ni5/DFkS84WHzQeI7/DvwvsR6xHCk9wii/UUwNmUqESwS/p/5OrHssEwInYGtpy/TI6QzzHUZVQxUG2UB6ZTrvjHmHMKcwQpxM86SrGqqoaajB1cYFq9pSUFmKVemdH7aKaBA5hyXJImewMkeUhrGyE2WJLn8bkGD0Y+DRE0qOizJXbU2kwsYL193AYcj5h5AkYPWTJn2p8BqGe+Fh+OWe1sbsXbDmf3DzN2YPs9q6Rv634jDxOZUAlNU08ODyOH57cCS9/U5dT9hRY8nQMFd+j883aY/w7LhUiwuOfrfBoe9aV6UlSYTLnimWNmLypfi4GBMqCzFR0lArxlfMdBE6e+MywIAhYycWzoEiFNzOXdQSbkt5OuqCOO6vO0To5EeoqNWhra45JyGdWZXJQO+BhDmH4W/vzzPbn6FOX8f4wPHoDXokJIIcg/gp6SeiXaMprC2ktK4US5UlA70GMth7MK/ufpXsqmzUkprpkdPZlS+M9/YW7KWotoiXR7xMWkUalbpKYtxjqGyoxKLRAjfNua2mK5yE8MuEMWLkVOH5cPxvGPmwME+c+KKIsvlDRAsQdQXs/9L0+LpyEU0TfZVpu74BaoqEh4TGiWq1KxrffkhOQRhq8rCyED4sBtlAqHMw14Rfw6qUVcjI9HDpQaRrJDvzd/JX+l/M6zePmdEzeS/uPf435H98FP+R0d1dJal4fODjWKosuTnyZpYeWcr4gPE4WjtS3VDN/sL9RDhH8HPSzzwQ+wDTQqeRWJbIJ/GfAGIC/cXhL+L8L2tdA9Q01lDVUIWztbPiLH8Bom/SM9Z/LJlVmQzwGsCOvB3MjplNemU6R0uPsqdgD3f3vhtXa1cWjV2Eo7UjViorvK1d8WxspGf8SqSWCLSxzQ7fPn1F1Frcl60XOvAVKo8+2FkFciC7gmdXHuGpyeaRJINCXHCyVaIhFDqHjhbSaYAH0Fx8k5uAQqAH8Ckwo72DJEmyQIjtXFmWp0mS9AJwL1DcvMv/ZFn+qwP7fU4UVulO+2B9vnG2taKo6uTzEmmVafR269g8OS87L7Kqsjr0GgrtM8RnCEsmLjGWvLoq7Cp6u/dmd/5ucmtyifWIpbS+lE05m+jj3oe7et/FnJg56A16yurLyK/ONxHR0W7RNBgaeH3P61Q1VHFdxHV4aDx4bttzVDVW8e7Yd+nl1ovSulJs1bYEOgaSW53L8oTl/JL8Cx4aD/478L8EOQZh2ZzTFFcYx9v73ialPIXxfqOYaxdOyPaP4MpFwuH2RBpqxEpiC46+MPN3yNwuXLqbdDDiUYi9Ge78S6w41pQIQRY4XMxkL5+OpNPCqMdF7mOBCGus8x9Joddo3MsSza+btkGElJ2QJ1moredAdoVJm0GGjNKa037erdUWPDA2nIPZFWSXCQfTGwb40zfQ+ZTHXVIEDIGZf8LBb8VKcr/bRfTB2eAVLWqNJvwGdWWQtEY4eautIfEvYSy19hnQ5qLqebUwtdv4migz1NiOuZNswD7tL64LH4Fqx6s0NV4PmkeEAd5ZkF+dT1plGo9tfoya5uu4WLvw6ohXOV5+nDDnMErrSvk7/W925+9mgNcAPGw9eKjfQ6RUpPD1sa/5MelH7up9Fx+M/4CqxipkWeaVna9wvKK15FBBTQESEipJxQ09bmBzzmaWHlmKlYUVD/Z7kImBEzvUJ+OSxD1CRL9sel2Enw6eI+41ABVZpiZ2lrYiZPVE9Cd8d5ekiOiIYyvBvQdMfg2dYz9yYx9CpWrg64SvjR4YDpYO9HbrjU6vY07sHJBFqPWHBz/klshbmBxwDU1NatQqNfP6zaNWX2tSIs0gG/gj9Q/6uPUh2TmZL49+aawz3cL749/n1p638vmRz1lyeAmj/Ecxf8x8jpUdw0PjcU5RD4eLDzN//3yOlhxlhN8IHuz3IOHOZ+martClHC49zD+Z/7AyZSV3974bP3s/VqWuIq4wjijXKF4f+TpO1k7UNtby1bGvOFRyiKFeA5nnMZzIP58QE+ctyAaRhjPuf7DrI7NrWaf8TaT348RlVbAvoxxbawtmDgti2U4R/OrlaM0Tk6OwtVLMFRU6h44eaf1kWR7dZvt3SZK2yLI8WpKko6c47j9AAsKcrIUFsiy/0yG9PM8Uaetxse08124AZ40lR/MrT/p+RmUGlwVe1qF9cLVxpVJXSZ2+Do1aCanpTGzUNgzzHUYPlx6kVKRQrisnW5tNaV0po/1G803CNwzzHUZ/r/5YW1jzbcK3XBdxHU9ueRK9rGduzFyT800OmmxSB3rZsWVGA6Oqxir0Bj2fHPqEX1N+JcgxiPv73s+uvF1GE7Oaxhoe3PAg31z+DTEeMaRXpDP3n7nGMhh/Za2j1L2YhT4x2H93M1z+DmSZ1qTGt5+orQpipce3vzAdWdmmr+ueBVtnsfJ4Ymmi7HTQNbtzb5svxFLkVEpdYvk+14PLvUKhstT8j+kcLGbCT8BBo8bDwZriE7wIztQsLMrHkZ/nDie9pAaNpQVhHnbY2yiz5kYsLCF4hHidCw1VIseuhaJjMOYpZCd/pFX3GyMfpPjl4BwghEryGuh9vZiMacHS1hi2q9JVQmMtFge/Fue/drHpJM8pyKzM5K09b6Gx0hhFNEC5rpyd+TvZlL2JJwY9wcfxHxvF0fa87RTXFfPYwMdYGLfQeMw7+97BVm3LjZE30tjUyPSo6by6+1UMsgELyYK7e9/NorhFlOvKcde4M39/a6j6/23/P9xt3BnlP+os/6AKpyR3H/z2YOv25jfA3kPUHG+oBps2k2yp60Vpv23vtrZJKlHir4WGGjHZk7RabOcfhG+uw2/2JuKc+xOX/5FxnABUNVaxOWcz/Tz78dqe11pPi8Qo/9EsXWeJfc9kvk7+mkcHPEplg/lzQml9KTaWNlQ1VJmJaBDGYo9vftw4ftdlriOvOg8/ez8+jv+Ysf5jeWv0W2jO8DPRQk5VDvetv49KnejT+qz1ZFdls3TS0nNa4VboHHKrc8mtyqVSV4mt2pYZ0TMIcQph0YFFpFaIsO6DxQdJ35XO6yNf54WdL1BaL75zN+dtJ1ObzZd9b8Ztb3MJQ9dQqK8SZenWvwTBIyFtk8k1S51jycsRE0/ejja421vz5JQorh/gT21DE0GutufFGFJB4Uzp6PJXHpIkGW1xm39uSaBpt1aTJEn+wBXAZ+29fyFQUt3Q6ULaydaSYm375a/0Bj35NfkdHtqtklR42nqaOYMqdA4FNQX8b9v/uGftPczbMI+b/7wZeyt7VJKKKNco3j/wPksOLeH9A+8T5RqFxkLD0slLeXHYi/Rw6WGc/HCydjLLwwTYlL2JIT5D0Kg1NBmaWHxoMYW1hewp2MPstbOxVpsKShmZ5HKxGpOhzTCrJbm75CD5/n1FSQtdtTDq8e4Dfv1h2iJRN9o9Qrh8z/wdvHuLMMkT2fc5NLYTjdH2QUyWhUjatoAmpwBuHB1DiLu9OGfvNv6HFpYw7V3xIHwC3o4aXru2Dxaq1oT0mwcFEOVtLrpPhpejDUND3YgNcFZEdEdhaSfyTltoaoQNLyM31pmmD4DIWx10jzCbs7SDIXNFvd+ISTDhOdizBGzdTNMGElZB5ZmX+dtVsIt6Q3275a5K6kpwsXGhtrHWRByB8C6oaqgyO2Z1xmoMBgOWFpZcE34Nn078lDkxc5gTM4e/0/8mpzqHW6JuYUXKCrNjT3TYVzgPpLTzN927VNzTXMPEvy3162vLxFib9JrwbAgeBTNWiknCFipzW0V0C/p6pJIkYgNcTFaTW8jQZiAhMTdmLhHOEcR6xPLYwMeo1FVw35hQrAx+6A16lh1bRg+XHmYu3NeGX4uEhKuNK4EOppUMfOx8yNZmm0wCARwtPWpM3dmUs4mC2oIz+3u1IVObaRTRLSSVJ5FTrTxDdHeSypKY9fcsCmoKeGb7Myw+tJgPD35ITWONUUS3UKmrpFJXaRTRLWRUZ5ETOFAI6N43wuj/isnNkmRh4GfrJgxAmzE4BrDPfgwF2nrUKonXruuNp6MNttZqYvydGRrqpohohU6no1ekHwO2SZKUirBDCgHulyTJDlh2kmMWAk9g6vYN8KAkSXcgQr4fk2W5/MQDuwN1DU006A3YWXeuW6Czxoqik5iN5VXn4WLtYsyp6kg8bT3JrsomwsW8pqRCx3K45DA78lpXdasbq1mesJyZ0TNNXL0Blh1dxjDfYcR6xPJX+l+szljNQ/0eYm3mWgprCgmwDzA7v7vGHVdrVz4Y/wFPbX3K5D1nG2cC7AOYHTMbgN9Sf6OgpgAHK/ExtrU09wzQqDXYtAhgSRKh2z59QUY4Z0dMEqWNLKxEaC4I984TcQ01K4kBgEckDHtA5Me2MPFFPIN6tZpY2XmInOsBs0QosFu4eMA9CeMiPfhj3kgySmpwtbMiyttRycXqbjgHwOXz4Ze7Wtt6XYtK42q+r72nEDF3r4XSVDH50n+mmLDZ8rZ4L3yCKIvVgsYFLM+8ZFlGZQaHSw5zR/QdHCg6YPJeL7debMnZYjYJBWIV0NHKkbkxcymuK2ZVyirUKjVTg6eyr3AfTtZOBDkGUa+vx9namTUZa6jQVXB5yOV4ajwJsA/gSMkRk3P62vuecb8VzpATa5WDuE9ZWImx2PNK0DhB5OUissa9h3D07j9DeEScaIhkqRGr2PWmArPKwYvM8mNMCp7E5pzNJu+NCxjHT0k/kVeTxxCfIdTr61m4fyEzomdw+cDLcbXvR5jX+3yZ8DE1DTU8OvBRfkv5jXJdOXf3vptQp1BqGmuo09fx5OAn+fn4zxwoPkAvt14M8x1mNskDwptD31wn29HKEWuLsy/jZ2dpbqqmVqmViLZujkE28FPST/R078m3Cd9Sp6/DydqJa8OvxUJlgVpSo5f1Jse0l/uuklRoDLKonqBxFf4Bx/8QXhcAW94Sk06OvqBS0+AWhZvWgY9vayDE3Y4IrzOfxFZQ6Cg6VEjLsvyXJEkRQBRCSCe2MRhbeOL+kiRNA4pkWd4vSdLYNm99DLyMeMR+GZgP3HXi8c3nmA3MBggM7Px6xkVV9bjaWSFJ5nUXOxJnW0tKq3XIsmx27QxtBt725uUxOgJ3jTvZVdmdcq0LkY4cn3nV5qtkiWWJNBgazL7UWrbTKtPws/ejUlfJ2/veZpjPMB7q/xDFtcV423lTUCNWGdQqNQ/0fYAYj/9n76zD4yrTPnyfccvMJJOJuydN6u7UKe7u7vrBIgsLLCywsOwiuwvs4sWKQ0uLtIW6ext395mM2/n+mHTSaYotVIC5r6tXM2eOvJmcOec87/M8v99QbF5b6AEKwKw2c17BefxxzR9x+pyopCquHHolG1s3MsQ0BAjab01Pnc6KhhWh7W7LOYuUta8EvSKzZwTtZ3JmgyDBIpGysXUdX9R9QaY+k1nps4KTM3lzg8q3jv6Zbbk6qOZ9MHVnpQ6m3gF584LWSNHpED908LqaGMgcbON1MGRSCYWJegoTf5selUf6+vmLUXA8XL4MuiqDkyUJJcGscuIIaOkPZgUB5j0KhiQgCeL2U2o35cLICyEQgA+uCJbb7mPuowcPnr6DCYkTeGPvG9Raajm/8Hw+rvwYqUTKOQXnsL1jO37Rj9PnHPT9uKDwAh7d8CjVlmrS9encMOIGVDJVqBJEQODS4ksZFjss9N2dlT6Lre1bWd6wnH/O/CfLG5aHPKeNSiPTU6f/zx/p0cBReX5mHxO0u7L1Z4plyqA6vKx/4jptXPAc664LnkeGZIgrCp5/B8OYCnMeDisXb537EI9Vvs1X9V8zPXU6V5ZcydtlwTaEC4ouoLq3mjGJY1iwd0FY1cGYhDHBIZr1ZJsnMyFlOG+VvsXzO55nWso0zog/A7VMzSMbHqHOGuwxPTHrRI5JPYZYTSyVvZU8sekJZqbNZGryVL5t+ja077MLzubLui+BoDDl/zJJk23M5sSsE/mkekBp/7rh15GmP0r+tj+Bo/LcPER4/B62dWxjbMJYVjetRivXctXQq/j39n+zqmkV5xaeG2rzApiROgOlVMnJ2SfzUdVHoeWXFJxHRlQKbH4tOHnp90D+cZA7NzhBrjEFr939nuoqYFxEFD7CUYYgHujb+UsfQBAmAhnsF7SLovjad6z7F4ICZD6C3xk98IEoiufvt04G8Jkoij+onDV69Ghx06ZNP2f4P5mNtd3c99Eu7jthyGE9LsClr2xk/T0z0R9QMvrq7lfZ3r6dcwrPOeRj+LLuS3wBH/dNuO+QH+sI87NnSn7p83Nt81qu/PLKsGVn5p3JRUMu4pxF54RlFfQKPW8e9ybPbH0Gp89JpiGTd8veJVWXSoGpgMU1i7mw6EJUUhV+0c9Q81AmJ09G0t8z+knlJ9yz+h4ALiu+jDdL3wwr3VZIFLx67KsUxw58Tdsd7ezp2kOHo4MMdRxDHH1ovG5IGhbMBO/Hgr0LeHTDgKVVjCqGV+e9SoYhI1j21bwNAl48scXUyjOJUslINPwyWQyfP0B9twN/QCQ1Ro1K/qsULTnqzs+jgt4GaN4Kzt7gxE3i8IGAZz+6bW7a+twY1XIShe5gn6q9E8x5wW1+Qi+oxW3ho8qP+Oe2f2JSmbhm+DUMMQ1BIkj4y/q/sKZlDTeNuInK3koyDZm4/C4y9Zl8UvUJ61vXh/Zz04ibWNm0ki3tW8L2f/+E+3m37F32du8NLbtjzB2cX3g+5T3llHaXIpfIKTQVDlLRP4L8ts7PzsrgOeJzQ2JJUGzs50ymexzQsg2xswKP2sxiqZP71v0p9HacJo5bR93K6PjRxGniaHe00+fp483St/ig4n1UMhXXD7+ek3JOClUF7WNN0xqu+uoqZBIZd465k7Uta1lWvyxsnUcmP8JD6x4KXdPVMjUPTHiAJnsTEBTKE0WRFnsLI+JGMDph9P+stt3l7GJP1x5a7a2kRqUyJHbIoDEfAX7W+XlUnZuHiJd2vcSy+mUYlAYStYksb1geal95cOKDdDg7QhPrFb0VVPVWcd/4+6iz1tFka0IulbO7czdXFV9BkaM3+B2KisceW0K9R0+0Rk7CL3RP/w1yeDN1Eb6XQ/qEKAjC60A2sA3Y15wmAgcNpEVRvAu4q3/b6cDtoiieLwhCoiiK+3xjTgF2HWz7o4E2qwuj9vD2R+8jRqug3eoeFEhX91YTpz20/dH7iNPEsb5l/Q+vGOEXpzi2mNtG3caz257F7XczMWkiJ2WfxMbWjdw/4X4e3/g4bY424jXxPDL5EbQyLetb1tPr7qWqt4rzC88PCtasfwRfwMdLu14CgqI1lxRfwtSUAd3AWemzSNAmsKNzB8m65EH9z56AZ1BPXZwm7kf16bfZ2/jntnC1zm5XN2U9ZcFAOjYXYnPZ3tDDre9sp6qjgVidgsdOG8ox+XFIJP/7PabL5ubl1TU8/201voDIScOSuG1uPqmH2c4uwiHCmBr89z1sa+jh1ne2Ud3pwKxT8vgZQ5mWN/9/Pq8MSgMXFl3I7LTZtDpaKe0uZWPbRnKiisnwX0NB+oXYupRMTc3i8c0P4hf9HJt5bFgQDRAgMKg0HAgFM9NSp2FxWxiXOI6xCWMRBIH8mHzyY/L/p3FH+AnE5gT//VIoNPSaR/NGlZnPVrZQWLI67O12Rzsv73qZGakzQhVo5d1VZOjyeXzSc3T0KnF1x+DzKuGAx5FiczG3jrqV98rfIyAG2Nmxc9DhG/saeXH2i2xu34zVbUUr1/LKrlc4I/8Mntz8JDZvUHlcQOCOMXcwOeXHVfQcDJPaFBHA+xXh8DrY1bmLVF0qCdoE8qPzUUqVYRoQDX0NvLjzRQSEMPG6PV17eHTjo2HLc6JGIU05mfzRk9la38MtL2+jtv/a+9czhjI11/yz7ukRIhxqDnWqZTRQJP78tPfjgiAMJxiE1wJX/cz9HTLarW4M6iPTM2nUyGnvc5FzgDdtjbWGGWkzDssYzGozTbamw3KsCOFEKaK4cMiFHJN2DB6/B1/Ax/mLz8cT8KCVa7mw6EKGmYcREAOhfrhxCeNYWreUJlsTL+58kVxjLmMSxtBYOSD2IiJSGFMYdiyNXMPYxLGMTRxLnaUOtUw9KCNtVg8W7PoxiIhhpeP78O8nFNXR5+KGt7ZS328l1WnzcM0bW1h04+Sf1Te1oaabZ5cPCKV8tK2Z/AQ910z/aXZHEX6dtFtdXLdgK029wfOqw+bm6tc389kNP++8EgSBblc3G1s34hODftE9zpXEm4p58INgL6xRI+f1K19FrnBSY6nhrdK3wvbhD/gpiS1hR+eOsOVKqZIXSl9AJsjQyDWckHXC0ZDRi/Az2VrfwxNflKOSS5inHQJ8Evb+5OTJqGQq9nTuCQra+VwExADPrnuC+Wlns37LSNJitMwuig/bTq/Qc9GQi5iRNoPKnkpKYktY1hCekc6LyWNY3DCGxQ2jzd5Gj7uH4zKP45YVt4SCaPjua3WE3y7L6pdRbalGJpFREF1AhiEDk8oUqoyAgX7o/YPoPGMedX11g5a7fV7+vHgvj546lOsWbKHZEmxF6bC5uer1zSy6cTI5cZHrWYSjl0Ot2r0L+J+ac0VRXCGK4vH9P18gimKJKIpDRVE8cb/s9FFHm9V1RAPpA615ICh2k6hNPCxjiFXH0mpvDQt6Ihw+JIKEdH06udG5vLn3TTyBoJJ7QAwQpYjimq+u4dqvr+XG5Tdy6ze3cuXQK7l0yKWMig+qyo6IG8E5BeeQbRgIHI/LPI6R8QOqsjaPjS7ngPpmmj6NRyY/gkoavHkqpUoenvww6fr0/+l3iNfEc3nJ5WHLdHIdBTEDImCtFlcoiI6LUnLVaD0nF+po7HH8T8fcx6rKzkHLPt7WhN0deVj8PdBicYWC6H24fQEavu+8EkWwtYN7sML2wCoiNdYaXtr1Ev/e/m/+tf1fvFH6BrExfSQZgt+bXoeXmlYZBTEFjDSP5N5x94YUlNOj0olRxXBSzkmhCSoBgXMLzmVr+1YkgoSxiWO5eMjFg1SXIxwhfO6gH73v4CKgP8SW+l4AXN4AXZ2pjIsfqAgqiinipJyT2N21m4uXXsxTm5/iX9v/xbtl73J5yeV8XPM6c4ZJ2VgbrpJs99rpcHTQ4+zBrDZTHFvMzPSZpEYNVGmcmHUi+dEDVQzx2ngKYgpIikrigiEXhO1PJpExOuEA28EIv1na7G34RT+f135OjaWGWmstj214DJfXxV1j72JexjxkEhnrm9dzRckVoVawaGU09024L6SZsg+FRIGOXFZWdNJicYaC6H24fQEausOvxxEiHG0c6ox0LLBHEIQNQOhuIoriiYf4uEeMVouLROP/1iv0czGo5bRbw2/aVo8Vl99FtDL6O7b6ZVFIFUQpomh3tJOoOzzBe4TBeP1eWuwD803HZhzLm6VvIiIil8gZnzie+ZnzeX3v66xqXMUlxZdwTsE5yCVydAod/537X+qsdSikCjL1mWgVWnwBHxtbN/L0lqdpd7Zzdv7ZnJB9AgnaBGamzWThCQtpd7Rj1phJ16eHbqI/FUEQOCX3FOI0cXxQ8QHZhmxOzz+dLGNWaB2DWo5OKePsIgWXGbaQuOe/+JVGPP57wTvzJ6kq78/BRMRGpBlRyQ+vCn+EI4NRI0erkGL3hE8EfqdXuKURtrwOW14BfWrQMitj8iBBO3/Az8rGlQTEANNSphEQA6xrWceeru1kxU4PPUAm6FVsbtvM01uepr6vnuMyjwsGOrpUBEFge8d25qbPxaQxkaJLweF1MDZhLKflnsabe99kwd4FdLu6OafgnF+lYNNvhrY9sPJJqFkBGVNh6u0Q/9N0UzJjBxStX19lZdaQs7l7+DnkxWvIMmZiUBq4b/V9YZVAPe4eOhwdGJQGJFJfKJNXZ62jxlLDCzteoNXeyoy0GSRoEhgZP5JjUo4hTh1Hq6OVgBjg8+rPeWPPG1w/4np0ivDqtmkp0/jb9L/xTuk7xKpjOavgLIpMRf/75xThV4M34MXuteP3+7lzzJ1YXVaaHc3MzZjLurZ1fFr1KfGaeJ6c9iTp+nQStYnMzZiL1WMlWZdMki6JDFHGX0fcxsKmFcSpopmXeip3LnSTbFRjUMvRKKQ4Drj2mnRHplUyQoQfy6EOpP90iPd/1NHW56Io6cgo+hrUClqt4TN6NZYaErWJh1VFPE4dR6OtMRJIHyEqeip4t+xdJiZPDPVZlphLWFSziCGmIczJmMNXdV/x+p7XmZk+k8uHXs67Ze9SbakGgsJef5/+d0bEjQg7b/Z27eXqr64mIAYAeHrr0/gCPq4edjWCIJBhyAj2MP8YLE3QWR60iDHngzZcijNWHctJOSdxfNbxSA+iyJ1m0vLEGUMZ2vQWiWsfBEBKE+r3zoWLF9NiHEFVuw25VEJOnA5TfyBkdXqpaO/D5vKRGaslyahGKhFCv+eU3FiKEvXsaQkKs8XqFFw4ISPMOzrCUU5PXVCtW6ENWpmpjYNW6bZ7qGzrw+0PkG3WkdTvPZoWo+HhU0q45d1tFCREceboVJKNKpQyCT5/AJl0v8mhQAA2vAir/x583dcKb5wKl30FySPCjicIAgalgVtH38pHFR8hk8i4a+xd1FnrOHOyQG23konZZjRRHVy05MpQJcmre17F5rVxz7h7sHvtPLnpSRw+B+cWnMudK+8MfRdPyj4JEZEuVxdv7H2DVnsrj0x5JGIj9HP5EefSIPra4J3zobu/RWT3B9C8Bf/FS5Aafvw9cWxGDKPSjWyu6wVgY7WTSyaMxNkn4lKr0Mn91FprB22nkqq4YcQNKCROsg1OPq/5nB5XD3/d+NeQW8M7Ze9wSs4pLK5ZzB/G3Mv1y67H7R+YhF/Xuo75WfMZah4atu8oRRSz02czI3UGEkFy2N1JIhwZyrrLeGPvG8xNn0tNXw0v73mZLGMWU5Km8HX917xf8T4AHc4ObltxG6/PeRFNZy35Ck3/9yYaLE0YFpzJPEcHs1PGIHFVEtizluvHPktKcho5cTr+fHIxty3czr5m0Ftm5Q5qVYwQ4WjjUNtffSMIQjqQK4riV4IgaIDfdGqn3eomWnNkZtCiNXLqu8NLEGssNSRoD4/11T5MahNNtibGMOawHjcCdDg6uHHZjTTaGpmUNImrh17NoppFiKLIrLRZ5MXk8dTmp0Lr7+new/0T7qfeWh9a1u3qZsHeBYiIYSXde7v3hh7c9/FW6Vucnnc6Zs1P6Idu2w0LzgRrfx925nQ46RkwDs6gHSyI3sesDAWyrw/QLRRFvDWruXS7j70twVLbcZkxPHHmMNQyKY8tLWXhpkbmlySQGxfF6spOss1azhufztAUI+kmLS9fMoay1j68/gC58VGkxUSExn41NG2BBaeBozv4uuSMoJVQ1ECfaHOvkzvf38HKimAZf6JBxUsXj6EwUY8gCMwvSaAwYTJ13U6Wl7XzybZmhqYamVkQx5Tc2IHgwdYCG/8TfvyAD9r3DAqkpRIpQ81DuXvV3aFlOzp38OS0J7l75XX849wXGWIqZG3b16Egeh8fVX7EZcWXIZVIabI1cV7hebyy+5Ww7+LHVR9zw4gb2NQWVAr+qv4rbrDdEFbFEeEn0rwtODGyz2qv6OSgXZr+B4LhnuqBIDq0rJadO7eyzudgfkkiaaYfvqakxGj49/mjKGvtw+r00mp1ceVrm7B7/KTFqPnvRWM4Pfd0tndsD20zKn4UCPCntX9CQOC+CffxwNoHuGroVYMsEJfULuGMvDOo6K4OC6L3YXFbBi3bx/ddlyP8tmh3tPOntX9Cr9DzVtlbfNsYtECrtdaSZchiSe2SsPV9oo/KxjUUf/bH4IKC42H+E8HvRP89X1q7Kvg/UDyih0p7PF02N8cPTSQ/PoqGHgfxehV58VFoFL9K14wIvyMOaY+0IAhXAO8Bz/cvSgY+OpTHPNJ02NxEHyHV7miNgrYDMtJVvVXEa+K/Y4tDg0ltorGv8YdXjPCL0Ons5JOqT7hp+U28W/4uJ2SfgEyQsbp5NW+Wvskw8zBGxI1gZtpM9nTuGbT90pqllJhLwpbVWGv4oOID2u0DSpxaufbATYlRx6CQ/oTz3e+D9c8PBNEQLH/sv7F+F009Dhasq+OKVzfx0qoa6rrsyBSqoEfwATikBhr2m1BaX9PN2soudjVbWLipkSSDikSDmn98XcGmuh7e2dTIOS+so6w1GHjH61VMzTMzszA+EkT/mvDY4as/DQTRADsXQnO4XdSGmu5QEA3BvuiXVtXg9Qfo6HOxu8lKl8PLY0tKeWtDA1sbenl1TS3/XFFJbed+SvRSZdCD/EAUg78n/oCfjyo/GrT86/qvmZc5jzrbXowaxUEzyFGKKDa0buCTyk+YnT4blUwVZmW3j/2DIY1M89O+lxHC8Thh+SMDQTTAno+gafMPb/sdVQBdHimPLinl/k92YXN5f9QwzFEqJueasTh9/O3LCkw6JVKJQH23k7c21DPUNI4bh9+CXqHHpDJxVt5ZvLL7FQByjDkhBw2pMDjwjVZGB88jUU2qLlzPQi1T02JvYcHeBZF7+e8Um8fGioYVPLr+UYaYhnBuwbmhIHofHY4OjErjoG3V+8sLl35G466VdLkPMvkiCLQ6BW5fuIP1NT0oZFKGJBuYV5zIiLRotMpIEB3h6OdQi41dB0wCrACiKFYAh8eH6Qjg9Phx+wJoFUdmtjZao6D9ALGxqt6qwyY0to9YdSz1ffU/vGKEn4034OW13a9xz6p7WFa/jH9v/zcfV34c8gx3+VzkR+fzTeM3SCXSQT1vAHqlHpcvfAJmdPxo1jSvweIZyEoUxxaTpEsKvRYQuGXkLRiUhh8/YI8d6tcMvJapQKmH1sEWLPuwubw88Nke7vloF1/ubePBz/Zw28LtdHllcMzdsH8vti6OKs1QrpiSxXElA+f99sbe0CTT3OIEFm5uCDuG3eNnb8t3Z2Ai/ApwWQaCZkNq8LyCYB/zfpS1Dg5CN9R2U9HWxwOf7mZtdRdtFhdVHeH2beuqu8OFyLSxwWz3/sRkQ9LwQfsPiIGDTkRpZBryY/JDk535MflhQk8A5xacyzNbn+G57c+RachEr9APEvKTSWTIhIGHzptG3kSyLnnQ8SL8SNwWaNwweHlP3Q9va8qF0eFiib2F57KgMthesrysg5pO+8G2HFjf1cuy+mU8vO5h3i59m0SzjfPHpTE81chNM3OZXRTPuupunlzczEuL07kq51nOKzyfGmtNaB9OvzOknmz32UmJSgk7xpn5Z1JjqcVqMXNG2h8oMQ0DIEOfwQMTH2Bl40oe3fAo96+5n15X7w//3hF+UyxvWM4ty29hTMIYzBozva7esGsMBCtfDhQGTdOmMMTWAypD8P4OGJz1bLDF4iw8M2zd7pLLebk0+Lz81oZ6fP7wircIEX4NHOrpHrcoip59pXCCIMiAn2uFddTSZnVh0iqOWN/QwVS7qy3VzM2Ye1jHYVab2di68bAe8/dKU18Tr+99PWxZs70ZnTwYMN886mZe2vUSnc5gBu7+CffzadWnofJRmSBjXsY8tndup7K3El/AxzGpxyAIAlGKqDALq3R9Oi/MeoHtnduxuC0UxxZTbCr+aQNW6aHgBFj3T5h0E/i94HVAxhTweUDWn0Xz2KFxIzSsR6VNYF5SFl/vFfAHgpePTbU9VLfbMWVMgcu+xN+wgXa3gvW+HO78sAe3r4szR6eG+p1Lkg2h7LLPLyKXDJ5DlBxk2Y/B4faxrbGXrXW9JBhUjM6IJt00OGiK8DNwWsDWBiojRH3HXKzGBJP/D4zJwfYBtTEYUKtNYasNTxssvDinKJ7nllcyIcvEprpePN/xQKc+cJI0dw5csiRYUq6NhZQxEJ0xaDu5VM5xmcexsnFlqMRWKVUyKXkSd6+6m0cmPwIEs4Q3jriR3V27sXqspESloJVr6XH3APCv7f/immHX8ODEB3lw3YNU9VYRo4rhj+P/iEwi49ZRt1IQU0BJbEmkf/XnoI6BvGNh+5vhy+MKDr7+/rRuh9QxkDQM0dpCjTyb1+pNLKu2o1PKuGSYmtRAEzgFUA+ehAyIARaWL+TprU+HlqVHZTJadSefbO8F4KKJGQxJjOLtjY20Wl08+GEL952RhiitDXn0NvY1clb+WSgkCt7Y8wYXFl2IUqpELpWTqkulx91DSWwx+Pv484du3r32QVrce1jbvJb7V9/PhKQJnFNwDm+VvkWttZbhquE/4wON8Gui193Lv7b/iwcnPsiz256l2d5MXnQeJ+WcFOqHhqCbgNVj5R/H/INGaz3RUjXDpDpS3C4YfRkIAkikNCmyuea9Si4fcS5nz5yF2VVPgzydBQ1m1jcEq8cUUoH3tzQSr1cxIs2IQR2pqInw6+BQB9LfCIJwN6AWBGE2cC3w6SE+5hGjzeoi5giVdQNoFFL8ARG724dWKcPtd9PuaCdOc3iLAExqE8225sN6zN8rIiIHs2lP1iVzYeGFaGSaUBAN8OzWZ7l51M30efrocnWRrEvmma3PkKnP5JHJj1BjqWFdyzpKu0t5YvoTGFXGsP2mG9JJN/xvtlZA8MY64nwwJMOKR8HeEVy+4Xk49z3InRV8vfsj+PhaIHiROiUmC/mcZ7hhyUDWWEQEqQxSRrPelcFFL2/A6x/I9HywpZFrpmeTE6fD4/NTkmzgD8cW8OrqWs4ak8o/Vwz0MUZr5OTHB+2zDCo5UT/Bwm7Rzhb+770Bb98cs45XLh1DSrSGirY+djVbCASgKEl/UFXwCN+Nx+cn0LIT5ZLbEJo2BQPjE5+BrOnBc2l/ZErQx8P7lw0s0yfDmQMTTY09DtRyCReMT2fB+joCIkzIjuHEYUmc8Oxqji1O5JPtTZw0PJmSZAM7mwbOt+NLEgYL38hVkD4h+O97CIgBnD4n946/lz3de5AKUgpjCrG4LJhUJhr6ghUSZd1lXLfsOqSCFKVUicPnYETcCCYlTWJl00oAynvKuXb4tbwy9xXane3oFfqQDsb01Ok/7QOOcHBkCph8M3SUQfNmkMhgyu2QNPL7t6v5Ft46OzgRKAgIKiOJJ77AK586SNQreGWanfwNt8KOxuCky/FPQUJ4W02TrYnndzwftqyur4a5iV3sk5h5e0M9j58+FLvbx1ljUonWyFm108KlM8Zwx5g7eHrr0zh9ThZXLeaxyU+zvX0bMkmATEMmC8sX8t+u/+L2u/GLfi7LS+eSCUNpdO3m3tUDPfzLGpZxQdEFRCujD3qPifDbRRRFjEojNp+NZnvwWa68p5y0qDTuGntX6OcEbQLN9mZyDTnMqN8J394D0/8AX/6RkGKYLh7ntJcAC//Z6uC/23Q8cOIZPPjpHnyBYBAtCHD8sCSaep3UdTnotLmZWRB/xNokI0T4KRzqQPoPwGXATuAqYDHwn+/d4ldMq9WFUXNkPKQhqAxr0gb7pLPMOmottcRr4pFJDk+fiXn3Z8Tv+gCbOQ+Ptwe3341S+r/ZEEX4caTqUjkr/yzeLB3InMRr4hmdMJrjs47n3bJ3w9bvcnXxz23/5LV5r3HTiptCD/A11hpKe0r567S/Mjl5Mgm6hLBs9C+KKRtqVg4E0RC86S77M6SNA1cffP2nsE2E7mpmaOsAIwAlSQayzQNBjdsXwOsPf9jzBUTy4oOCYpNyTOhUci6fnMm0PDMWh4fceB3LS9vJMuuYlBPLX5eUsaysnZIUA386YQgjDpK5dHh89Ll8xGgUyGUS2qxOHlm8N2ydyg4be5qt9Ll8nP3COizOYD+kWi7lrSvHMzzV+D9/dL8najvt7Civ5rjNVyJ0lQUXWhrgrbPgqm+DarD7Y2mEbx4LX2ZtgtYdkDKKui471y3Ywq5mK0NTDFw/I4fhKUbGZMTgE0WOyTejlEsIiPDh1iaumJLFhGwTVR02JmSZSDaqabW4MKgVdNs9iKIYUoP/IURRZHHtYiQE/Z5FUeSTqk+IUQU1BvaV3TbYgt9Hv+jH4Qs+ZG5t38qVQ68MBdJn5Z8FgFFlHDTRFeEXxJwP578PvbUgVwfL9qU/cH/f+0kwiIbgNc3Zg2rnAl6+6DGibNXkLzkX/P1ico0b4YOr4eJPw3rt/QE/3sBBeqgFPyBlRJqOkjQ5ATxcd0wOr6+ro6PPzbziBHRCFidlDsHbl0+v20JXr4YbXrKikufywsWFPLT5emqs1WG7HZaUzqQx+fxxzauDDrmtfRvzMuf9eDeGCL8JolXRXFlyJZW9lWHLv6r/ipVNK/nzpD9Tb60nThPH1JSp6KytsPzPkDcPtr81EEQD2NrIdO9FLk3G6xcRRXh5VQ1/P2s466q78AVERqZHs6vJwkura0ObXT0ti1tm56GURYTtIhzdHNIeaVEUA6IoviiK4hmiKJ7e//Nvdmqzzeo64uUoMVoFbf1e0tWW6rCe1kNJ7N7PSdz6Ju1FJ6Bw9PLXzl6a+5oOy7F/z8ikMi4tvpT7xt/HqPhRXFp8Kf+a9S9EUeRvm/+GSW1CJQ33NT8552QStAncMuoW5JLgg6FUkHJpyaUUxhRSYi45dEH0Pjx9g5c5u4Ll3e7eYL/rAagCDsZkRHP7nDyePmd4WBCTG68jTh8e1EzPN/P2xnoEQQiVdfsDIkt3t3L2i+u5feEOylptFCZEccfC7XxV2k5AhO0NFi5+eeMgBfwdjb1c/fpm5v79W+75aCdV7X14fCI2d7gaLgQDpyW7WkNBNIDT62fBurpIdudH4PH5eXZ5JXJ7M9J9QfQ+fG7orhm8kdcFB+vl9DjY3tDDl3va2NUc7I/e0Wjh6a8rufejXbh9AaI1Ck4dmcLbGxqYnBMsBX9xZTVvb6jH6wvQ3ufmsSWlBAIiH25t5OTnVnPCM6tYsL6OHodn8DEPQCqRck7+OaxuXs1Tm5/i71v+zqa2TRTHFpOsS6a0q5QtbVswqUyDtk2LSkOv0DMzbSYvzH6BkXE/kBWN8MuhiYakEcFJmx8KogHsnYMWCfYO9EoJUY6GgSB6H+27glaA+5GkS+KUnFPClhmUBrzOOO46KZqknI9ZZruDLzueRKlrocvuxuMP8Mn2Zj7Y0ojHL7Jqj0h1Ywwr9rpwev30OLzsbfJzz7g/htp+AC4ovIhRCUNQyKQUxw5u0ykyFXFR0UVEqwZPKkb4bWJxW3i//H22tG8hVhMbdr4AnJh9Im/ufZMEbQIj4kYEdVf87uC5rdKDs3fQPlW+PmT7tU5Nyonlr1+U8W1FJ7OL4oOCj/sF0QAvfFtNTcf3awlEiHA0cEhSlYIg7OR7eqFFURz6Xe/9mmmxuIg+ghlpAON+yt2VPZWHRbFb5ugmdd3z1I+/Co8+EZchlbyvHqC99DMYf+MhP/7vnXhtPGfkn8FpeachESR4/B4eWvsQH1V9xJl5Z3LPuHv4ou4L2hxtTEmewvTU6UQpo5iROoOFJyykxd6CWW0my5CFvP9hsdnWTI2lBoVUQbYxmxjVQdSJfw6pY4MiYfvbaY27BrT9gUTJmbB1v95vqQKpKYt3rpyA5ABPZ7fXT7JRzauXjOXVNbVsqe9hWl4cQ1MMVHfYqGy3sXR3GxOyY6nqsPOPryuAYFBd1tbH7mYrNV3hQbPF6aW8rS8UgNd12bngvxtCgfG7mxqp7rTznwtHc+7YNF5dOyBCpJRJyI2P4os9bYN+7ZouO/6AiEwa6V/9Ptr73Hy4tYkRU7Sg0IHHFr7CwdSyY7JgxIUDvs4AEhn+uCIueGkDF03ICC0WBBieYiRKJcXl89PR5+LhRXtptbq4eloWhQl6vqnooCBBT0FCFE99VY7XL7KnxcrOJmtokuWeD3cRpZRx4vAfFvYamziWv0//O6/sfgWZRMY5+ecgl8qRCBJcPhcv7HiBW0bdwsk5J4cUvpVSJfdNuI9xieO4sOjCSN/z0U7hibD7w7BF4vBzeXhJObcXHkQ3QakHVVTYIoVUwVVDryJWlcyyhs9J0+VxQsaZNHQo+bDlXqqtwSzhyuZvKO3Zw/mT/sx/VgR76N/d1MgpI5KRyyTsaLIwNdeMTiXjPyurKU42MDIpgxdnv0hdXx1GpZGCmAL0/aJ8U5On8kHFB6EsZIImgbPyzyI5KiJa93tiXcs6/rT2TwD8YcwfuG/8ffR5+7B6rCTrkknWJaOWqckwZAzYoBnTIGc2VH4FxafB2ucGdihIEJKGMzk3isYeJ1NyzXTZ3NT133O3N/Sikg/OOgfEoAhohAhHO4eq5vf4Q7Tfo5qWXtcRN483auS09gfS5T3lFMT8CHGUn0nSljexJI/E0++vKUplbI7PYdTm1yKB9GFE0q9e3eZo45PqTwB4t/xdul3dzEidQbw2njR9WkjxVyqRkm3MJtuYHbafsu4yrv7q6lBv9biEcTw06SESdb+g+nvSSDjvvX6LmU4YdzUMOTX4ntYEw84O9ryWLw32U4+4EOKKw4Lohm47i3a0smhnC+MyYzhrdCoXTkhnVHo0KpmE9j4XRo2COL2S5OhgQNzn8jIoISyATCLgC4S/IduvXqe6wx6WXYag4FlTr5Mrp2YRrVXw7sYGMs1abp6VR2aslmNLEnl/S3i26dyxacikh9os4dePWi4lQa/i2W1epo5/gNRvbxt4c+yVYC4cvJFEAsPPA6kCdrwN2jiYejvbhCKszk0oZVKkEoERqQZOHZnCF7vbsLl9bG/oJS8+CofHxxVTspBJJQxL0SMK8E1ZB59sD/YIyiQCtf39e8NTDRQk6InTK+m2e+ixu4nWfn+Zt1auZWb6TCYlT6LL2cXyhuX8Y8s/cPmD1+vjMo+jw9HB7aNv5+Tsk7F6rKTp08gyBL2gI0H0r4CMqXDSP2HtM0FP8bFXEcg8hoQ9rSyo9lJQdAExe/abIJz/xEHF6RREI7NOZ6puArFaDdurvWSndFNdFl5q2+HsICvfyU0zcwGwOj28tq6OJbuDk3h1XfXMKoxn4VUTKEk2sKFlA9cvux6nL6g+f07BOVw3/DoMSgPphnSen/U8lb2V+EU/OcacX/aaH+GoRxRF3it/L/R6Q8sG9Cp9aGJPLVPz3IznGGo+IBemjIJjH0Pc8CKCzxPUE9i5EDQmAhOu4/XGBFKjRdJjtLy7qYFex8C9VKOUkR2rxRylDBPLzYjVkB6xn4zwK+CQBNKiKP4IjwgQBGGtKIrfr9LyK6LV4mJs5i+cufuJRGsUtPRbtFRbqpmRNuOQHk/mtGAq/5KaabeFLW8156DdtRQ6ysGcd0jHECEchUSBXqGn190LBPuavqr/imdnPDvINudAfH4fr+5+NUygbH3reja3beZ43S84PyaVQ87MYGba5xnIRO8jbSJozFBwPMg0YMoE3YBont3j45HFpXy+qxWAgCgilwq8sLKGG2fm8sm2ppB90bS8WI4piMPq9JIao8GsU9JhG7hhr6/q4sqpWWHiY6ePSiZGMxAYafrVmjUKKaePSkGvliMRgq+TozXcPCuPC8ano1HIQsrOBfFRPHfuCOq6Hawq72BWUTzT8g9xyfxvBJNOyQMnDuGK1zdx3c5M/m/6QtKEVhKSM1AmDw2WEB4Mcx7MuAdGXAAKDWhj8VYHvYA/2d7Ev84bic3t4//e2xFSgN9S38M7V4zjiTOHced7O+hxeBEEuGBcOvF6FRXtwWz4+ePTWbq7laoOO8+cM4InlpZR3W9j9HVpOycOT6IoUc+QpO+3g1PJVHgDXhbsXRAKogEW1SxiVvosDEoDoxJG/dyPMMKRQBcLI86D7JlAAPRJSIErpmh4bU0t6zOvY2juiQj2dnSJuXzSGs3Xr2zkhKGJTMmNxeH2s3RPK6sqOjl1ZAqLdlr4ck/wceruk41IBAkBMVxR3u2RhapsJmabKDpA0PDr0jbuPDYfm9fCg+seDAXRAG+VvsWstFmMTRwLQJw2jjjtb9ahNMIPIAhCmG1eUWwRz257NvTa6XPy4LoHee3Y1waX+5uy2V18B2p3O9GCHV/MaLqJ4i+rvUwvUbNqez3nj0/Hvl8rVHashgyTho21PTx37gie/rqCzXW9TMoxcducfGKjIho7EY5+jrTbueqHV/n10NZ3ZFW7IRhI72214Pa7abG3hNRcDxWxexdjSyjGf8CDrV4dTakhnpHb34ZZ9x3SMUQIJ14bz/+N/j/uWX1PaFlRTNGPqk6we+1s7dg6aHlFb8UvOsYQyig42L1SIoG4fIjLRxRF6rocdHX2oFZIiNYo6HV6Q0H0zMI4ThqWxI1vbyMzVkt9lz3MA/ib8k6OyY+ns8/NicOSee68Efz5s73saLJQkmxgXkkiK8rauX1OPk6vH61CSqZZS0bsQClmfryOk4cnMSzVyL9WVNHe50YhlRCrVZJoUKGSy8J6tktbrFz35haqOuxIJQJXT8vitJGpGI5w68evial5Zj68dhKV7X241HKUKVOoc/roaHKRaLCRZf6e6p/oNLptblqbLejVcp48YyjmKCWlLX3o1XLk0gErtVtn57NkTxurKrro6c+UiCK8tq6Of543gmGpRtRyKasrOylvs1GcpOfb8o5QEA2wsqKTYalGHv+8lDevGE9ufBQN3Q4sTi+JBtVBRckabY2Dljm8jkHLIhzddNnctFhcGNRyUqLV1Hc76HOpSTSosHbYcHiC15SGHifXvB+sbjh1RDH6LhmvrA1eV5eXtvPkGUN5Y109VpeXY4sTsDi9fLlfe8hnm72cPuI83q0YyGjPSTue5bsGxrKmqouhKQZ0SllIu0EhlSCXSrC4LdRZB+c4Opwdg5ZF+P1yWu5pLKpehMvvCtlk7k+ttRarxxoWSFd39NFudYMA2zrVPL60DqszAAS1TlbV7+WZs4fT5/Jw6+w8nF4/cqmEgoQo7vlgF95AgCm5sTx/4WisDi9GjWKw1WCECEcpRzqQ/s2o7gQCIp02N9GaIxtIm3QKWi1uai21JGgTDq1itxggbs8nNI84b9BbRoWRjWoVI/d8FAmkjwBzMuaQqEukrLsMs8ZMpj4Th8+B0+tELVd/53ZRyihmpc3ild2vhC0fZh72yw7Q54beBpDI6JIn0O3wYo5SYjzg++P0+PhgaxN//mwvTq+fgoQozhqTSm6cDokA1x2Tw4aabsraglnD3DhdmGXRPnY2WZiaF8vyvW009DooTIxiar6Z9Bg1L35bQ3m7jW/Kg1n4e48rZExGNHq1HK8/wI7GXtZXd1OSYsAviqEZdY8/wH2f7GZoiiHMm9jp8fPEF2WhYN4fEHlueRUTsmKZnBv7y36Ov2EUMgnDU40MTzUSCARYuqeNP360i06bh3i9kr+cMpT8RB0ub4Akg3rgwcvjoLe1htW1NuyqRN7ZWM+cIQk88NkerE4faTFq/nbmcD7a0kRjr5O9LVYyzVrK2gYL4FkcPr7c00p520CP9tXTs/n7V4Mnluq7HCjlUtbXdNHc6+SGt7ZidfnIiNXw9NkjGJpiDK1rUpkYGjuUHZ07wvaxvzqyKIo025vx+r0kahNRyiLZmaON7Q29fLGljFyNHa8sCq8mnocX7cHu8ZMXr+PsMWm8traWSTmxbKrrCW33wdYmbpmdy6WTMtAoZZS39tHY40SjlDIizciHW5uYnBtevbKjwU5B4hTuHjmcdlcDBbEZbK2I4v2y8EC4vstBklEVOmdvmJFDWrQGhy+W4ebhbOvYFrZ+vPrwCJJGOLrp8/TR4eggXhvP6/NfZ2fnTowK46D1RphHEB2QYG/cjUMZx4ZmL/d8vIteh5eUaDV3zsvH6gwX4PQHRDx+kZ1NfSRHq1lV0cmW+l70ahnnjEnj+W+ruXXhdj65fhKJxu9+PokQ4WjkSAfSvxm67B60ChkK2ZHtf4zWKGi1uKjorSBJe2hvkPrGzQRkatzGlEHvGZQGdgYc4HZCZwXE5h7SsUQIRyVTMSZhDCWxJXxR+wWXLL0Eq8fKlOQp3DHmju+0M5EIEk7PO53ynnLWNK9BKki5aMhFDDcP/+UG11sP3zwO2xaATEVg1C081zIGCxpumZ2PWacM3Uz3tFi558OBlEtpax+f72qlKVnPDcfk0NDrZH1NN5NyYhEE2NtqZUJWbFjgA1CYGMXOxl4KEw30OHwkGdX8Z2UNDq+f66Znc6FeSUuvi3FZJkakGkM+0uuru7jwpQ3sa582qOVcNS2bv31ZHtp3Y68zLJDudXhYVTlYvbe+2w5EAun/hV1NVm57dzuOfvGZNqub2xZu4+wxafzrmyrmFsXzh/mFZAqtiF/8EWPZIk5QGWgeew+KUdO5Z3ElswvjSY3RsKOxl0c/38uZo1M5flgijywuxS+KDEnSs7tf1XsfBo2MFy4czYbqbuq67IzJjGFUmpGdjRYq28PPsYxYDUt2tdLR5+HtjQ3MLU5g4aZGajsd3PLONt67egItFhe7mqxIJXDbyLv40/q7qbHUoJapuXPMneRFB9tgbB4bH1d9zNNbgn7Ax2Yey/Ujric1KvXwfOARfpAum5tAy05ubvkj8tatEJVIxbiHidYYsHv8lLfZ+HhbE6eOSOaznS2Dtm/sdtJld5Nh0jImI5q0GA1SiYQnvihDKhFIMgwu2HO6lLzylZe67iT+dEIuQsABhAfSo9KjGZKsp67LyYhUA8eWJOIJuFlWv4xjM4/F4rZQYw2ec+fl3MCWCjUlZn/EZuh3THl3OQ+ue5DtHdsxqUzcP+F+Tsk5BV/Ax33j7+Ovm/6K0+cky5DFXSVXof/vHOhrRpU8hoRh92NzBQPnxh4nFW12ojXyUHUPBPUl/AGRN9bXA3DL7DyqO+30OrwhzZCOPjcdfW4SDZFAOsKviyMdSP9m1FNaLS5MuiNvHh+tldPj8FDWVXHIhULMexZjST14L59GrsUb8OFLHIas4otIIH2E2Nu1N6zEe2XTSgxKAw9MfACF9ODna7o+nSenPUmjrRG5RE5aVFpIzfsXYcfCAUVurwPzuoe5/dhXeKHFzFnPr0MuFbjumBwyzVo8vgATs02sqeoKbb6hpptxmTHMLIzj6je2ALBoRwvXH5PDC99Wk2BQUpysZ1dTMCiaVRhHvF7FP1dUcbs5mMkOiPDoaSU8tqSMp5dV8u5V4zh/fEbYMB0eH//4uoL9NcgsTi99Lh9ahTSkKJpwwAOvXi1nZFp02JgBkiIz7T8Zf3+lT5PFGQqi99Hj8CLtVz9fuqeNock6rrX/E6FsUXAFl4Wkb+9gwikfcMfcfBasr+eT7c2Mz4rhvHHp2Dw+djT0MirdyNLdbdxzXCFdtmparS6kEoELxqcTo1GQYdKSYdLS1ONgV7OVr0s7mFecwPqabrY19AIwpyiell4XSpkEiRAM/GcXDjgmVHXYKW3t45JXNuLyBntcTVo5C676N35JDzqFjrSotJCg2I7OHTy64dHQ9otrFpOgTeDmkTdHRMeOEry2Lko2/gFZR/9EX18Lucuu5J5JC7nmy+Aim9tPdpyO00am4PIFaOx2sHBzsKR/eJqRhm4Hb66vx+sXuWBCOjnmYDuJPyBS1WHnuJJEFvUH4YUJUZSkGPh0R/D1ziYLMwviWJdqZGv/eTgtz0xGrJanviynvc/NxGwTRo2CLW1buGf1Pcglco7NPJbZGbMxqxL4elMqX++pYlpeEvkJ36E7EOE3TZ+7jwfWPhCqjulydXHLilt4+7i3KTAVcHre6YxNHIvNYyNJlBD9wjHgDfbZS5s2MjxwH/8+43kufydYpfPaulr+dOIQ7vtoF1aXD5Vcwh+PL+LVNQOWhW+sq+P4kkQ+2NoUsoM0auRHvDUyQoT/hSMdSF9whI//i9FicR4VFwGZRIJBLWdHax0T0g6dYrfUZcXQuJmqGX846PsCYFRF02PKwFy+FCZcd8jGEuG7qbXWDlq2tHYpN4648XsnWnQK3aFRfHdagorKBxDdvo6vSw04vX6cXvjL56XcOjuPf3xdwblj07A4vaFsYbZZS1GSngUb6slLiKLZ4qKsrQ+Xz88VU7PIitUy9YQiSlv7kAgCWoWMRz8v5Yopmby5vj7kJSyVCPzxuCKe/LKUaM3gslmfX6Tb7h203On1oZRLcXj93Dwzl4IDHkC1Shl3HVvAJa9spNMW7DE7d1wqJSnfL0IVIZz6bgevranl3c0N3DQzF6lkoK8ZgjZj+yuwa71dCAdYDwFE26v42xc++vpL8tdVd2N1+jh/fBr3LtvFc+eOZGt9L48vKeP0USlkxmoxaRX4RRG5TAiN5crXNlLaagsd++0rx+P1B7A4vayv7qLb4eX6GTk8tzyorOzfb3DjMqJ5b3NTKIgG6LJ7WbStj9vmDBk05l2duwYtW1S9iIuKLiJGfWQFLSMEMXg7BoLofQR8JIstgDFYtjo2levf2ho6T0elR3P6qBRarU4CAfj3N9WhTV/4tpp7jyskSimjz+3jk+3NjMuM4f4TihCAvS1WFFIJghDs4S9M0PH+liaSjGqm5pkxqOU4vX7K26w4vD6GpRhC4qf77gPegJdPqoKODgqJgtPjn+XL3eD2hQuYRfj90O5sH9Ri4hf91PfVU2AqQBCEAZHSPR+Hguh9SFu2kCrtYVS6kc11vQQCIogiD59SjNsXINmgpsXqZEfTQLWP1eklSiXn+mNyeG1tHUqZhCfPGEZKdESlO8Kvj0PlI93HwfufBUAURVFP8IfBTwu/UlosLmKOcH/0PmJ1Sio7uzijaHDJ9S+FqeJrbPEFBBTffeGLVhpp0sVi3vpmUJlZdnR8Pr8nBilrApmGTLTyg3iaHg7kGkgogc7ysMV92ky67eHCJrubLWSbtby5oZ4bZuSwu9mKWi7llll53PHeDvpcPu49rpAdjRa67R7quhysqezCrFMgl0rY22JlU20vZW19GNRyYjSKUBANwazPa2treeqs4WTGDv489Go5l0/O5K4Pd3Ly8GQyYjUERJHJObHML05Ar1aQE6dFJR98GS1JMfLxdZOp7bKjVcrIMevQqY70vOXRxz6/bqvTS4ZJS3a/faDXH+D5b6pY0F8K+M7GBi6fnMkLK6sRRZAIcPW0bD7YOiDYFRtjwhuTi7xlc9gxXMrYUBC9jz0tVrrtHm6YkUOX3cNd8wsBEZlEglohZemuVlZWdjI0xYBKLqOy3UZpqw1BgHPGpBGnV7Kxtpt5QxIoTjawtb6XLXXtfNBvd2ZQy/H5g7dAuVTg9rkFPPFF6aDfv6H74OJi+yvn7iMvOg+NPPKgebQg1RhAZQRXb9hym9RAfnwUN87M4YFP94RN9myu6+HMUSnEaON5f2u4NR7AZztaOHdsKs+vrGFkWjTT8syoZFI6bG7WVndT1+1gfJaJ2k47E7PNfLi1hV3NFoalGlld1UlZax+TcmJ58ozhZJq1GNXBe26MavDkS1pUBk3dAUalR0dshn7H6OQ6YlQxdLu6w5Yf7NnBq4phUG2axsTOTpFzxqayrcHC1dOyeXhRKRIJnD0mjR67F61SGlZZdv74NE4blYw/IFKSYiDZqD7oPThChF8Dh8r+KurnbC8IghTYBDSJoni8IAgxwDtABlALnCmKYs937+Hw09TrxHgUZKQBDBopzQ4JZs0hstoRRcx7PqMzf973rqZX6Gn12cCQAk2bIH3ioRlPhO9kiGkIk5Imsbp5NQByiZw7x9yJXnmEyvhkcph4I1R+HXoA9cYWUhM1Cqe3PWzVeL2KzXU9+AMixckGnjlnBDFaOb2OYHk1wN++LOfCCekk6FXE6pTIpAJNvU6ue3Mrxw9NZP7QROYG4hmdHs3mut5Bw2nqdZIfp/9Ob+c5xfHERin41zdVfLQt+OD7xrp6Xrt0LMXJ359hTo5WkxwdKef+Lrrtbh77vIx3NjUAoJJLeOWSsYzPMtFudfFu/3KA8jYbcqmEf503kl3NVrJMWr4ubaOhO5gdUcokJMbHUTHsDoo6LgJf0FbKmTyR9qgioCrs2BqFlMxYLX9dWkZtVzCYzYrVcuucPJ75upLN9cHbS2OPk51NFs4fF8zIXDMtmy/2tIX6o19fW8d/Lx7DWWNSEUX4dEczJckGrpyahUSAkWlGUmO05MTpOHdcOutrwm9bxw87uI7F8LjhFJuK2dUVnGvWyDRcPexqVLLflNHFr5o6vwn5hIfIWHEj+6LlvpKLUCeXcKbMz97WvjCbvX009jrZWNdz0OA12ajCL4o8dloxtZ1OHl9aBgR7TG+bk8eS3a3cPb+QFKOG5Gg1545LY2+rlRdXVoc8eN/Z2EBdp50XLxwd2u/B7gNnZF1PdX00t8xMw3CUJAEiHH7itfHcN/4+bv3m1pC12ik5p4T0GvbRZXdT7kxkeMl5qHcuCC4UBGrG/5mVzUpOSFTy6CklPLO8EpfXz02zcvnr0rJQtcMZo1I4ZUQSefFRnDw8OaSDkn9ojWUiRDjkHKqM9PfWnomi2P197wM3AXuBfU/7fwC+FkXxUUEQ/tD/+s6fPdBfkKYeJ+mmo2NWVy53EeVPQyIcGuEzbftepF4Hjtjs711PrzTQ5miDuCFQuyoSSB8BzBozD09+mPLucvq8fWQaMskx5hzZQSUNh8uXQcde/IKcbl0OHZ0qopTdocyhWackVqek0+Yh0aCiOFlPgj54491Q041Zp8QbCBCrU/LfVTWo5VLOGJ3KScOSeG55MGj6bEcLEOwnPGdsKpOyY0Nlkfs4ZUQyCYbvVkM2aZU4PX627BeEd9s9/GtFJX87a3hEoOdnsKfZGgqiAVzeAPd8uJP3rp6IQiYhRqugzToQiOxutuLxBTPVXr/ITTNzePHCUQgIJBnVJBtUPLUthTET3iKTZlwSNV90xpLbp2NOUTxf7GcldNucPOq7HaEgGqC6005Fm4267gFbK4CGbieZsVqMGjluXyBMZKyhx8n7Wxq569hC7piXzxVTs9AqpQc9L6bmmnnwpCE8t7wSmUTCLbNzGZdx8Ftlsi6ZfxzzD8p7y3H5XGQZssgyZv30DznCIUMhkXDj9lRumbaQNFrpEYy8Vq1jtkvOo0t2MzItmqm5Zr4pHxADk0oEYrQKnllWydtXjOPDrU209wfAUUoZw9OieXjRXh4/rYR/fTMw+eMLiPzrmyr+ckoJ4zJNoeVJBjUquYQF6+rDxrauJpi93jfZZ9aYeWDCQ+zqLKXPYyPbmEmyNhNDsQKpJNJz/3tnaupU3j7uber66ohRxpAXk4dBGT5RXNFm45r3q3npzNuRxB2L0t1NizSJv2+Vcca4aLbX96JSSKnvdnDu2DT+u6omrGVg4eZGFlw+jkk5EcHNCL8tDlWt4WaCpd0Hu0KLwHc+EQiCkAIcBzwM3Nq/+CRgev/PrwIrONoC6V4no9IHl8IcCQISK/LAoZvmi9v5EZa0cfADgbpRaWBvdynET4HqFTDtjkM2pgjfjUltYkLyhCM9jHBisyE2GykQ7ffzzucbeOTUYqo67JijlDjcQQupYSkG7juhiAS9GpvLx/qaLr7Y3cofTyikttPB7mYrZ49JJStWy95WKwqZQPRBvJpTojV4/X4eOqmYZ5dV0mFzM784gRyzjuVlHcwuiv9OEacD1ZkBtjVYsLt9oYCpx+6hsceBTiUnPUaDJPJw+oPsy6DtT1WHHavLS7pJy/0nDOHaBVtC7w1J1DMqPZqXLx7DF3taSTdp+aa8kx67hxFpRqblxnJsSSLvbfFz0xYXMVoFF01M5r+rarhgfBpzhsTTY/eSGaslJVrFnz7ZM+j4Oxp7SY3RhHrb9xGrU/DUWcNZsG6wD++G6m68/gByqeR7dTKitQounJDB/OJEBIGDekvvT5w2jjht3PeuE+HIkRqj4crp+Wxrt/FWSwxpMWrGFmqwOLx4/SLra7q5ZXYeUonAirJ2koxqrpmejSCKvHTRaIoS9bx79QR2N1mxurxYnF5eXlXNv88fGfKA3h+r00dc1MA5U99lZ0NtFxXtNi6ZlIHF6Q21QkglAg6Pn84+N7FRSpp7HayvdlPVEcfinX68gWaePz+RGG3EUi1CsEKh0FRIoanwO9fpdXjodXi57N1KHj9tDFUdNpzeAKeNVZCoV7GuqouJObHcPicPvyjSYnEN2seB7VsRIvwWOFSl3Zk/Y/O/A3cA+5eHx4ui2NK/7xZBEL7z6UIQhCuBKwHS0tJ+xjB+Gi0WJ7FHgWo3gEvsQPQemqBebuvEWL+e6mN+eB7DqIymw9EB5kJY9Tfw+0D6++4TPVLn59FIWWsfa6s7cXkCTMwxU9/t5O9fVSCTCMwsjOfyKVnIJQJ9Th+vr61FIZVw5wc7uWxyJo8vKaOxJ1jWu3R3K+ePT2ddVSddNg/HD0tidVVXSJhKr5KRbdZx7YLNaBUyjh+WSIxGwbBUA48sLqXN6mbxTVO+s0drWKpx0LJjixNC/Yd7W6zc/M42ylr7UMkl3D2/kNNHpaBR/PrO9cN5fqYdpIJnYraJLfW9LNrRwsRsEx9eO5FdTRZitAqGphpJjtaQ3C9Ic92bW7E4g2Jwi3a24D+2gOeWV5Ju0oSEbp74oozjS5J4eU0tUSo5o9OjeeKLMpRyCddOz2FdTXhx1NQ8My29LrbW94aWTc4xkWbSBisk+tx8tTe8BeH4YYnIv6M14GDERkWCl/+Vo+n66Q+IbGvo5cWVA2rEuXE67p5fgF4lw+ry8dSX5YxKj+aGGbmkx2io73Hw/DfVBESRBZePY3RGDBkmLTWdNqo7bPztzOEs3dNGtEaBTCLg209cLyVaTUb/Ncri8HDfx7tZsV+2e1qemen5ZlaUdXDayGQe+HQ3fS4vfz19GH9ZvJdtjRaUMgkXTEhnZ6OFR5eU8q/zR6H9FV6njkaOpnPzl6Kzz82muu6gLoVEIC1GQ323g2sWbGF2UTzZZh3RKjmb63pYtLOVRTtbOW9cGqePSubLPW0h54x9pMVEWp0i/PY4JLW/giAU9P8/8mD/vme744F2URQ3f9c6P4Qoii+IojhaFMXRZvMh6hE+AJ8/QLfdQ/RR0iNt9Tfidh8a4YbEbW9jSRn1vSJj+zAoDfS4e/ArdaA1Q9tvRlvuf+ZInJ9HIxVtfZz9wlr+9MkeHl1SSkefG4fbx+VTMpFKBJbubmVVRQcKmYQb39mKSafgmX415CiVLBRE72PhpgZmFyXw0upabC4f/zcnn2unZ/PUmcN56eLRbKztIiBCn9vHWxsaeG5FFV/vDT6EOr1+2qzB/Xl8fuq7HbRZB2bTR6ZFc+PMXOT9VktTc2M5b3w6EolAS6+DBz7ZTVlrHxAsT77v493sabbi9vmp67LTbh08M3+0cjjPz6JEPY+cUoJaHszqFyZEMbMgjlvf3cbjS8s48/l1iCJcMCGD44Ymkbqfomt5uy0URO/j9XV1zBmSwM4mK3e+v5MumweXJ0CcXkl9t4OLJmQgl0mYkG0iLVqDXCIwd0gCggCCAMeVJIII8Xolt87O4+wxqdw0M5fMWG0okzI1z8wF49PYV3Bw0vAk5g6JNPkdLo6m62d9t4OXV9eGLatot1HW1sdNs3Ix90+Y1Hc50KtlbKztpqnXidPrx+0L8NXeNhbvbGZHYy+Xv7KJK1/fQkOPk5dX17JwcwO3z8nH0O9nnxKt5ulzRmCOUmF1etnVbGV1VSfHlSRy/Ywc5g5JYHVlJycMTeLW2XlYnD52N1up73Zy1wc7yeoX8XP7AvxnZQ1Tcs2sq+qmN5Ih/MU4ms7NXwK318+zyyt5eXUtb22oZ3lpGw+cOISUaDUSQUCnklKSomdNdRd69UAV2Fsb6mnpdXHeuHSy+id+dEoZt8zKRXqI2g0jRDiSHKqpyFsJzsw9Sbh6t9D/esZ3bDcJOFEQhPmACtALgvAG0CYIQmJ/NjoRaP+O7Y8IbX1uDGo5MsnRcJEQ6fTU4HWM+8X3rOxtxFTxFTXTbvtR68slMrQyDd2ubszmAmjcGOyPjfC7Z1NtNz2OgUDolTW1nDUmhTNGpjApx4Td5WdDbTdPfFFGQAz2D3r6+63Eg/gB+ANiqJy6st1GQ4+DsZkxPLRoD1anl5OGJ3HP/AIeXjygnNzn9iKXSlDKJJh1Khq6HTy3vJKFmxsxquXce1wh84oTiNYquGFGDicNS8LjD5AarUanktPn8rK6qmtQVhOgusPGm+vr+WhbEyatkvtPLGJ2YTxKeaSneh9qhay/d92Eze1ja30Pf9pP5djjD/DupgYKEqPY1WShrstBXJSSIcmGsBlgg1rOvOIEjGo5+99u6rvtXDA+jfRoNXfMLeDvX5VT3WlnbEY0N8/K46319fR5fNwwI6gZsKqii/W13UgEWLKrlWiNAqsrWKZ7TEEcefFRxOtV3Ht8ERdOyMAviqTHaFErIn/T3xO9Dg9Orx9BCLc424fTE+Cfq6s4eUQyM/LjkEqhrtNJWVsfW/orHVJj1GSZtZS29PHEkjKOG5bEf1fVhMphG7qd/GdVNaePSiFKJWN+cSJ5CcHvwf0f72ZGQRx3zy/knY0NLNrZQnGynnuOK8SolvN/721nv0Q21Z125g8Ntzp0+fwMSzUgi7SgRPgOajrtLNzcwP3HD6GszUpzr5Nuu5s5Q+IZnR7D01+Xs3BTE0NTDMwoiEMpk+D2BQiIQQvIm9/ZzgnDgoKfHl+AtzY0kGXWURyxgYzwG+OQRH6iKF7Z/+N8YBFgAXqBT/qXfdd2d4mimCKKYgZwNrBMFMXz+7e7qH+1i4CPD8W4/1caux2Yo44ONdVOZydKOfgCwRv6T0HXupuEbe8QU7kcyQFegYLfS9ayx+jKmYlf+eNF2aNV0bQ72iA2D+rW/KTxRPjtYvf4By2r73LQaffw58/2ctcHO3F6/Fw0MQOlTEJtl4Mrp2ZyRv+D5YG9qMcNTWRFWXB+LTZKwYQsE09+UU633YMvIPL+liZqOh385ZTi0MPj8NRo6rsdPHHGMNJjNLy+ro63NzbgD4h02T3c8u52djRaguN1+4jXKylM1KNTBWffK9ttrKzoJNusG/S7+AIiH2xtIiBCh83N9W9uDbPeihBEEATSY7UMSTawpqorrJQVgn3Upa1WGnoc1Hc72NFk4Z0N9ZQkG1DKJIzPiuHiiRl8W97Bws2NiKIQzCwDBQl6djRZiNWreHxpKdWdQRGxDbU9PPFFGeeMT2NDTTdPf13J019XsqW+hxOHJrK6spOACF12D16/iCAEHwz3oZRJyY2PoiBBHwmif0d4/QGWl7Vz+r/XMOdv3/LWhnoePrk49L5Zp+SC8enERSlxev28trYOqVTgsc/L8IuBUBB95uhUpuWaeXhRKR9ua+LMMWkY1XLGZ8aQaBh4jui0efjvqhrWV3eRHKOmvc/F1W9sZnN9D7G6oGBZaX8lzK4mK89/U405SskBXyHMUUosjvDqDY1cyvySxIM6GUSIAMFJohtn5PKvFZUs3NSIWaciXq9kdHo0d32wk9LWoHbIjkYLD362h9NHBe1WZxfGIZMIxOoUvL+liWeXVfLCt9W0Wl3olJE2ggi/PQ51CvVVoBB4Gnim/+fX/of9PArMFgShApjd//qooanXiekoKetu6GsgQRdHtFZCh/VHBtKiSNrKZ8j+8iE07WXE7fyIYa+fQ8ra51F3VqHurCL383sISOX0ZE76SeMxKo20OzpgX0Y6QgRgVHo0ByZDLpyYwTULtlDVYafP7WPh5kbsbj93zy/A6w+wo9HKyopOtjX08uQZQzlrdApDUwxcNTULjULK7mYrU3JjKU42YHUNFuv5Yk8rjb1Obp6VwwsXjKIwQcdnN05mfkki3Q4P729uHLRNe5+L19bWcuKzqznnxfUsL23H4wtOAjg9fpbsauX88Wlo9guozhqdwuqqzkH7Km/r+5mf2m+bM8akDlo2Z0g8N725jTfXNxCjVfD62jrK2mwoZBIWXD6O44cm8o+vK2ixuOi2e3hhZTWZZi2j06MpStJj1Cho7Hbg8oZfC0tb+6jptPPoqSVMzDYxKcfE388ahkEt56qp2WGZuksmZuDv94T2+Pw4PIPPrQi/XRweHx6fn93NFi57ZSOV7cHr04sra6jqsPHwyUO4ZloW54xNZXlZO29vbODOeQWMzYwmUa/ilJHJZJg0PHDiEOYOiSdaI+eN9fVYnF4aup08uqSUNJOGBIOK6g4bs4viQ8c2qOVcOCGDirY+mntdoZaWxl7nIOGmVqsLu8fPdccMuDIoZRIePHEIy/YOKNbPL0lAr5Lx+JIyFu1sOcSfXoRfKxaHl0eXlFLT5cDq8vHaujqWlXbgC4iD2moae5xkxWq5dno2l0zKxOX1c+nkTJSygRDj1JHJCByknCxChF85h3p6KF8UxWH7vV4uCML2H7OhKIorCKpzI4piFzDzFx/dL0RTz1EUSFsbMKlicWsktFv9pMX+8J84fsf76Ju2UjvlJgLyoBiE3NGFsXYNOUvvR0DEmjScrpwZP6jUfSAGpZE2RyukTAVnD9g7QRuxP/i9U5Js4PXLxvHMsgo6+jzcPCuXll7XoLLtz3e2cPLwJB74dA9l/YHoZzta8Pj8XDghgzlDAmgUUgKiyMnDk8mNjyJGq8DpHpzxTjaq2dvSx6RsE2WtffzrmypevXQsUomARiklw6Sla7+HU4NaTpvVzZ8X7Q0tu/TVjbx75QTGZMaQ0W+J9MyySi6dnIkAGDVyZhXEcfV+atP7kEsEbG5fZFb+OxibEcO/zx/Js8sqEYGzxqTy/pYmGnqdNPQ62dVk4bpjcvjbl+WcOCyJWUXxfLCladB+VpZ3cN30HNZWdVHf5UA8iHmERiGly+bmb1+U8dUt01DJJXy+s5WqdjuLd7Vww4wcPH4RpUzCl3vaOGlEMhtru3n+mypaLC4umpjBzMI4TBHV498sXTY3X+9t59W1tSQbVEzOMw/K9r6zsZElN03hkx3NPL6kjNHp0UzJM2Nxerl1dj63LdzG8NRoPt7WzEUT0ilK1LPwIBN266qDrS45cVGo5RLmFMXT4/Bgdfm4470dIXGyfQJkMokwyMpPKhGI1sq5bno2c4ri6LJ5SDNpyIrVUZio59vyDnqcXrY39HLvx7sByIsfXE0TIcLuJgsbaoMiY2Myopmca8bnDxCtkePxDk7QyKUCRUkGXl5dwz9XVHHXsQV8uaeVq6ZlERBBIZWwpqoTmexoaH+MEOGX5VA/0W0VBGG8KIrrAARBGAesPsTHPOzUdTuOGiXWWmsdafo07BoJ7ZbBwcSBKGztJG1+g7rJ14eCaACvxkRH0Ql0FJ3ws8YTrTRSbakJBuDmfGjcBPnzftY+I/z6kUklTMqJZVRaNJ5AgHVVXfS5vIPWM0cp6XF4QkE0wIQsEyadkvP/uwEArULKixeOZlzWgL/qyHQjhQlR7O0vfVRIJZw8IplHPy+lODloT3/ayBS21veglEnIi4/i/+blc+F/N+DxBx8UzhiVwlsbGhAEyDbrcHr8NPU6WVPVyZjMGJKMal66aAx//6qCN9bVMTXPzPFDc0iP1XHP/CIufnlDqFR5SJKebY0W9Bo5c4oi4lQHQ6uUMa84kSm5Zrrtbo57elVYZYHbF8AXCPT/HLy2JRsHt9TE61Vsru/m+W+DasqlrRZOHJbEJ9ubQ+vcMiuP97c0YNQocPv9qBRS/rO6BhGYX5zIU19VhNa9YHw6fr/IuS+uw9ufmb7jvR08eNIQLpyQ8Ut/DBGOEj7d3syfPg1apO1utlKcYhy0TpxeiQC8sbaOKbmxJBhUPPVlOQCvrK7ltrl5LNnZRoxGQU2Xg11NFuKilIPEEpUyCctK21lW2s4TZwzjH1+Vc/roVCTApZMz+XxXCy0WF/83L5+/LC5leVkHZ41O5e2NAz7st8zKJStWi0ImZVhquGtHRqwWu8fHuS+uD2UTzVFK5hVHrkURwqntsnPhS+s5f3wGU3NjidMPnNPJRjXXHpPF6aNSeG+/CaHLp2SyvaGXL/YEKx/e3FDPrbPzuPmdbaHJnrlD4ilM0B/23ydChEPNIQmkBUHYSVD1RQ5cKAhCff/rdGCweeevnPpuBzMLjg6/z8a+BkbHj6JbI6HtRwTSSZtepzd9PN5DlCWOUcewrnVd8IUpN1jeHQmkf9e0W100W1wY1XLSTRpkAYFX1tRSmKgnK1Yb6mWVCHDhhHRqOu0Y1DJOHZmCVimjMCGK+/ozKhDst77j/R3cOiuP3HgdJSlGUmO0PHfeSFZWdNJldyOTSPj3N1WcMTqVL/e0ceOMXB76bA/NFheCAFdPy+aqqVl8fP0kytv60CpkFCZG0efyccboFHY09qJTyskya/tFrYIMSTbw9DkjsLq8GDXykK/0xGwTj502lLpuO1KJhDaLizfW1VHTaWNGfhyyn2CX9HtDq5Rh9/hQ9GcvtAopp4xMwaiRkx8fRWq0mrz4oE7DzMJ4/rOqJiRcp5JLOGtMKtsbe7lhRg5f7G7DHKWizWrh1tl5ePwBVDIpK8ramZAdS6JBhSAI2Fw+arscAKyr7uL2Ofm4fH7y43VMyY1lQ00PV0/LpqPPzYdbm3D7Ajz/TTXHlST+oB90hF8fXTY3//6mOmyZxeklN05HRb+vvCDA3ccW0OfxYdTIGZsZw5NflIfWj9OrcHkCnDg8kRitgsp2G+uru/m/ufnsaLSEJtmS+s/B0RnRjMs0EaWUBe38qrsZmmJgdWUnU/PMGDRyzstLZ0RqNE09DlKi1ZwwLJF2q5sko5ohSXoUsu/u2R+SZOCDaydS2mJFIggUJunJMB0ad48Ivz46+lw09bqo77LT5/KTGq0mOy4oiJdh0lDb5aCp14nLE8Dl9XPbnDzcvgAauZTceB2NPU7i9UrarG6Majkbarq5bXY+bp+fDJOWaXnmyLUywm+SQ5WRPv4Q7feopKnHifkouEA4fQ6snj6i1dFEa31Utn1/L5/M0U101TfU/AhP6P8VozKaTmcXfjGANDYPqpcfsmNFOPrZWt/DdQu20GxxoVFIefjkYo4tSUCnlPHy6houmZTJSWo5Hl+ALLOW9zY2IJdJue+EITyyaC9ddg8GtZxrp2fz8upaWvutpbpsHmq67Nz78S4WXj2BZKOaZXvb0CplJBnUdNk93DG3gOWl7Zw1OpXPd7XQ3K+QK4rwrxVVTMo2MTnXTGHiwKz5xBwTN729LfRaJZfw2iVjw34ntUI6SHRKIhEobbWGecxCUH1cIvy+lHLtHh9NPU6UMglpMRqEH/H7x0WpuGd+Ifd8tIvb5+bz72+qaLO60Sll3HdCEen9HtRun58LJwStyHRKOTlmLc9/U82a6i7kUoFzxqYRo5WzdHcbS3e3hR3jzDGpOD0+3N4AEkHgnLGpvLWhga0NvWxt6AXg4+smsnhnKw9+tgeXN0BajIY75xXwyOK9qBXSiOrxb5R97R778/LqGv5z4WhcPj8Wp490k4b3Nzfy2Y4WbpuTj3W/iprxWTEMSTLwty/L8fgD5Mbp+MOxBTx6WgmvrKrh3uOLEEURh8eHzeXH6wugkcv4W3/mb1ZhHAl6FY8vLePmWbm8tLqGY/Lj0ClljM2MgcyY/+n3yjbrDiqOGOH3zfaGXq57cwuNPU5unZPHncfm89yKKmq77ERrFJw1OpV11V1sbejlr1+U8colY6hos9He5yYgwt0f7sLi8HLrnDweX1LKCcOSeGxJaaiC59FTS46aqs0IEX5pDkkgLYpi3aHY79GIzx+gvc8V8ow8ktRbG4jXxiFBQrT2hzPS5j2f0Zc8HL/y0M1KyyUydHIdXa5O4sz5sPrvEAjAUWEVFuFQ0tHnwu72E6dXolHI6LS5ufmdbaEA1uHxc+vC7eTFR3HisCS+2tvGf1cFA0+1XMJfTx/G1sZe7p1fxEOf7aG3P+tocXr525flXDE1i0+3N3P2mFSsTh9quZTLp2TyTVkHRYlRtPV5eOPLCpxeP5NyTJw8PJlzx6Wyua6XxTtbB423udd1wGsHnX1upueZ+aaiA1EM+kRva+xl7H5l5N/FcSVJvLa2Dne/bZdEgIsnZYZsun4P1HTaeOjTPSwr60Atl3LbnDyKEvXsbLKQEatleKqReP3BHQ+OKTDz0sVjuO3d7bRZ3QDY3D7u+mAn+fFRGNRydjZZeXpZJaIIo9KiMWjkrKnuAsDrF3ltbR1PnjEUiUBYf2uSQUWiUUmHVeCjbU0ICIzLNJFoUPG3LyvQKWX88fgifAGRvywu5dQRKcToFGxv6OWDLY3MGRLPCUOTMGiODm2MCL8sRo2C22bnc92bA1oHerUctULK1DwzjT123ljfwPv9PfoLNzWEbNQAJueYeeKLstDrinYbr62t488nFzHsnBE0dDm4/q0t3DY7D7lUgt3toyAxipw4HS+urOarve1cNTWLKKWM9zY3MqcogcZuR9gYO6wutjVaqGy3kRevY3iqMZLxi/CT6OxzY3F6uOP9HaF2A71SxsfbmhmeauSUEcn0ODxolFLOH5/G1oZe8uOjkPTLhu1qsrCivCNUvt1udfHqJWO4/5M9oSDaoJYzIi36O0YQIcKvn4jqzc+kuddFtEZxVJRqNtgaMKvNAERrpXRa/YiiePAMkBggbu9imkZdcMjHFaOKodXWSpx5KCh10FUJ5rxDftwIRwafP8CK8g7u/XAXrVYXM/LN3H1cIV6/SF1X+MOgKEJ9j4NPtzdx57wCqjvtyCUCKTEavilv4+75BSAQCqL34fYFkAnB/tVHFu8NBUlmnZI/Hl+Ize3DFwhwyohkFu9qYXVlF7E6JddNz2LekHhWVXawvqYnbJ/R2mDJdiAg8m1FB/d8uIumXidjMqL5w7wCHltSSqA/mP4xDEs1sPCqCXxd2o7XH2BmYRzDDtJn+VvF5w/wn5U1LCvrAMDp9fPnRXv5v7n5/HVpMMg4aXgSD51UjH6/cnkAURSpaLPTbnXR1BveT+oPiKwob+epLyuYmG3iX+eNoqzVSrZZxx8+2DloHO19bu47oYjHPi/D6fVj1im5alo2DneA2xZuD/09NQopT501nE+un4hBrSDdpOWL3S1cPyOHl1fXYnP7uGpaFrlxOuL1Sgoi/X6/aYam6PnjcYXsbrFiUMuJ0Sq4/s2t/OmEIXy5t5Xd+9nZVbTbeHl1LbfOzuW55VW4fIMnsVdXdrJkVxsZsVpaLC68fpEA8Mh+3vYp0Woum5zJ899Ws6vZQk6cjmaLE6lEwKQbmLSxu3z89Yty3t000CN90cR0/jCvALUi+FjX0efCH4B4vfJHVYFE+P3gD4is7L/HnTIymbLWAQ2SLrsHo0ZBr8MbqpCAYJvVzAIzZ49N4/b3dlDf7Rh0b5QIAmMyYvjzycV8XdpOXJSSaXlm8hN+vGVqhAi/NiKB9M+kvtvxnRmVw02tpQazJhhIq+QCcplAryNAtHZw31RU83b8cjVuQ/IhH1eMKoYWeytDzUMhNh+aNkUC6d8wpa19XPnaplBwu6ysA78ID508BLNOSYfNHbZ+WrSaWUUJvLy6lm67B39ApMPm5v/m5vH015WcOToVtVyK0zvwcCqVCMwoiONPn+4JyzR22Ny097mxOL28v6URtVzKxRMzWFvVxaqKTqbkmNhY28PcIYnUdDpo73MjCHDmqFQ+2NJEgl6NXCpwxWubQjPqG2t78PpFZhXGs6y0PUzp1ub24vYGDpoJEgSBoalGhqYaf7kP91dEt93D4oPY63TbPaG/Z1DNOIOR6QMZizaLkzfW1/PK6lounpRBtEYe6oHeh9CvxL2mqguXN0C0Vs6W+l4KEqLYVBc+QZJsVPPK6loumZSBIAjY3T7arU52NvaGTYo4PH6WlbYjE+DyKVkAaBRyHltSSkGCnosmprNgfT09dg/njUsjXq8OBS0Rfnt09Hl4aNFeUqLVIbX9mYXxOLw+qjrsFCToqeqwh9bf2tDL/KGJXHdMNinRmkH7K0zUs6muh1fX1vGHeQXMKUrg1TXhxXuNPc6QlV5OXBSLdjRzxqhUZFIhrCS7stMWFkQDvLa2jjNHp5Ju0rJ0dyuPLynF6fVz5ZQszhqTdlRUzUU4Oihv6+PyVzfhC4j4/QEunZxBY7eTFWUdNPY4mZAdEzbBA/DGujpeuWQM1y7Ygq3fFWNjbQ9eX4DZRfF8uaeNucUJqBQyJubEMjEn4s4S4ffBkU+j/sqp7bITrz86blC1ljriNQMelCadhJaeg5d3x5Z9gTV5xGEZV7QqmiZbv01NTDY0bDgsx41wZKjptA+yifmmvINAQOSvZwwNeUuq5VKev2AU//i6kseXlJFl1nLe+DS67G6KEvXERakQEPh4WzPXTB/w9pUIcN30bJaXd9Bp8xx4eLpsHl5bW4fV6aPN6ubvX1UwPd9MQYIOvwjvbm7kr0vLmF+SyA0zcvjzycXMKowjO05HZUfQX3hfEL2PbQ29TM2L5a75BTR0O/D5A6ys6OC8F9dz3NOreG55Ja0W16Cx/J7RqmRh/eb70KtkYRm7/SdIWi1O3tvSxDPLKulz+1iwvp6rp2Wj2K/i5+KJGXy9ny/ulvoeTh6exM6mXo4bmohRM5DdPnFYEtFaOccUxtFhc7OmspO4KCUj0mNosQ7+e3XZ3NT3OEPBeKct2AN4/NBEHltSRmOPE7vHzwsra3hrQz3igX5tEX4zBMUDJTT2ODlhaBLT8sx8U97O2xsaOG1kCuMyY0g0DEyij0wz4vUFEASBrfU9HLufIrZeJePUkcl8vbedxh4n7X1uxmZGD/KCBlArZAxNjiLDpOHW2XmMy4rm+KGJZO4XSDs9g+/rwdYTP5vrukPtEFanjye+KOfzXRG/6AgD1HTa8QVEzhiVgssX4POdrTT1OrljXj67mywHTQ4FxOBko+0Aa8ltjRbOGJXKSxeNZvjvdNI4wu+byHT6z6Sm035UCI15Ax46nB2h0m6AGJ2Ull4/RSnh6wp+D8baNdROvfWwjM2kMrGxrT94NufD5lcOy3EjHBn2D2T2YY5SolbImJITyztXjaeuy0GSQcU1C7aEguHPdrTQ2O3kiTOGsbaqi6/2thOtlVPeZuPjbY28ecV4WixOarscLN7RQqfNzakjU3hxZbi6brxeGbJ42Ud5q41TR6ZQ2+VAFIPB2ytraplXnMDeFitf7W0HgjZZz5w7eILJqJFjdfp4fGkZ71w5nl1NVi56aUNowuCvS8sIiCI3zMj9JT7C3wRahYz/m5vPBf/dgM0dFD4cnR5Nm9Ud6qmLi1KSGRvUaKhst/HaulpWlneG9tFt9/Dqmlr+cmoxjT1OssxaXvi2hp1NltA6541Lw+Hxc+9xRexptnLdMdlIEEiP1TImPYZep4fr39yGQS0nNUaNQibhmjc2c+PMXFZXdoWNeVZhPPd8tIvxmcEeeJNOgVoupdsxOOB5e2MDF05Ixxx1dFQkRfhlyTBpefCkYv6zshqX1x/yf26zutnVbOGWWXnMK04g26xDq5CyoqwDQYAnl5aTFavl0smZzCqMRyGT0Nzr5KmvyvEFRBRSCd0OD7WdNs4ek8rz3w5cv6QSAYkAl0/J5u2NDZS1Wvn72SPIP6CNICNWQ0q0OsxGK9usJdOk5dnlVYN+lzfX13Nav+tBhAjmKAX3HFdAj93LP1cEz5cWi4u9LVaev2AUBpWMuCgl7X0D1WP58VG4vX5UcklYJY9RI2dvi5VTRiQhPwpaHCNEONxEzvqfSXWHjXjDkX+QauxrwqQ2IZMM3CijtRKaewYrd+sbNuPWJ+FTGw7L2GLVsbTYWhERISYLuqvA4/jhDSP8KilK1DN3yEBlhCDAn08aQrxexcrKTs56fh03vb2NlZWdgzLK2xp7qe2ys3BzI1PzYrE4vYxOj+bhU4YyOj2aDTXdPPVlOWVtfXTZPXT0ublmWjaJBhUFCVE8eNKQsHLLfWTHaanpsiOKhFWQFCXqQ0E0gMcfYEVZOycMSwwb/1VTs1hZ0cF/LgzOuu9qtgzKur+yupb2vkhWen9GpEXzyfWTePGCUSy4fBx/PrkYjz+ASatgXnECr1wyhiRj0L/+850tVLbZBlX4NFtcVLTb+Pc31Sze2YpJO9AretnkTPY0W7nz/Z3c+u52vtzTRkaMlqIkPZOyTfQ6PXyxu5W75xeQbtLQ0eemsdeJ1y+yoaabm2bmkhajIcOk4ZFTivlsezP+gMiojGCpeVGinun5saFy2/2J1yvx+SMZ6d8qEonAycOTuP+EojAPcggK2bl8fj7f2UKGSUNJigGH18+2hl7SYjScODyJ+z/ZzW0Lt3PzO9uQSgRuOCaHa6dn839zc1m8o4XPdrQyNMXAhRPSidcrKU7Wc/f8Al5bW0dlh401VV102b089VU53Qe0wyTo1bx44WiOH5qISavglOFJ/PO8UcTolCRHqwf9LhkmbVhVR4TfN912L7WdjtDk0D4CYtAzPSCK3Do7L2hZpVUwd0gCJw1Pos/tY9YBVq+XTc7ktbV1dBykOixChN8DkenJn0lNp515xYk/vOIhps5aS7w6/AJn0kmoah8cSMdULqcvofhwDQ2tXIMggMVtwag0QnQmtGyD9ImHbQwRDh8mnZKHTy7hvHHp9Dg8ZMVqyU/Q09Lr5P8W7gipWEsPIoAjlQgopBLuP6GI40sSmVOUgEYhDWVS4g7o8/toWxMnj0ji7DGplLb28dSX5fz7/FFEa+X4/CKfbG/G7Q2QZFTT3OvE4vTy0EnFvLy6hk11PQcVj39rQwNf3jKVM0en0mXzkBmrJcmg5Lxx6SFRLN1BMjsxWgXKyMPqILLMOrL2K0v9yykl9Dg9GFRylPKBAHVzXQ/rqru497gittT14vEHz5Mkg4q0GA2JBiV9Ti93HlvACcOScHr8mLQKNAopGbFaPtneTF23g5WVnUgFaOhy8MHWJtbVdCMIMD7LxAlDk4ITesDKik62N/YysyCeFKOa2k47I9OjOWtsGsNTg5OMJp2Sh04qYXezhXSTJiSWJ5MInD0m7aDnQYTfDkq5FKNaTrRGEbLa20eyUc07V00gvd+L+Q/z8nl5dS25w6P45/Iq/AERpUzCKSOS6XP5yInT8cHWJi6akMHwVAO58TqMGgVf721jWl4cPQ4Pj34etAzav5+5st1Gj9NDzAGVb4WJep48cxgWpxejWh7ykJ6aG4s5SklHfzZRKZNwxdQs5LLItSlC0K71zvd3MCk7lmiNPHSeAAxPNVKQEMX6mh5y43W4fT5mF8Wzu9lKaauVuUMSmF4QR16CHo8/gFIm4bPtLXTZ3ajl3+1hHiHCb5nIU8DPwOcP0NzrIuEoEBursdRg1oYH0rFRUlaWhc9kC34Pxvr11Ey77XAOD7PaTKOtKRhIx+ZC48ZIIP0bJjZKydQoc9iyXqc3TGhsT0sfk3JMYeW1F09IJzdOi1ImQyIRMB9gLzQlz8x/VtbQ118qLJcKTM01U9luIy1Gw5TcWG56exutVhcquYTb5+QjEBQF/GR7MyNSjdz70S7+e9Fo/AGRsrYBtVJBAL1KTkmyniSjmtz471YaHZZqINmooqnfMksQ4M5jCyJ2SD8CuUxC3EHKoecPTWRFeQfPf1vFjTNz8fj9JOrVjEo3UtluY0J2LFmxWkpb+zDrFCxr7GXB+nr8AZG8eB3/NyefR5eUsrmuB3OUEr1awbqabiDYP7q2qou1VV08d+4IYrQKuu0erE4fn2xv5p75hTy8eC93zs2nIEFHe5+HtJjg7TE2SklqjIaThichlUjwBwIoZVKyYjVEqQe3MUT49dPQ5aCsvY9eh4eUaDU3z8oNU4TPMGkwaZUs2dVKp83NMQVxjEgzcsboVJaVtuHxB5BKBO6cV8DLa2po6HaikEq4ZFIGn+1o5uZZubRZ3Ty7rIIpuWbe3jggHDanKJ5AABL0KlqtLo7JiwtVbRyIUiYlLio8gMmNj+Ldqyawq8mC1x+gMFF/UK2CCL9P6rrt9Dq8fLW3jdvm5POXz/ciijC/JAG1XMq1C7YQEGFoioHrpudQ2W6jJNlAj8PDU19VMDXXjEou4fNdAxaSV0zJJNN86GxUI0Q4mokE0j+Dxh4n0Vo5iqNgprfGUsP01GPClsXoJHT2+fH5RWTSYPZP37gFd1QCftXhvbHGqs009jVSbBoSVO6uWwuTbjqsY4hw+LE4vXTZ3BjUcuKilGFZvaW7WzljdAqPnFxMU6+L2CgFCqnAHe/vYkZBMEOTFx+FSacgwRB8kGzqdnDF1Cz8gQACAkq5hMeXlNFqdXHdMTn8Z1VNKHPk8gb486K93DYnj+oOOwl6Jb6ASHufm6ZeFysrOthS38Mts/Oo6bCRHaej2+5hWIoRm8v7vf2EmbE6Xr9sHFvqe+hxeBiRGs3QlMPTKvFbZWpuLBdPzOD1dXU89VU5545N5dyxaby0upYX9usjHZKk54opWby2dkDxuLzNxobabkamRTMmI/hPJZdSEB9F6X6TJQByiYRnzhnO5roerC4fJq2Cl9fU4A+IrKrsZNHOFqo67Nx/QhEnDEtCJZeSZdZx8vBkNtf1YHF6GZFqpOR3ZGX2e6Kl18Hnu1t4bnkVFqeXnDgd98zP577jC2nscaJVyvD4ArRagqr/KrmUJ5aWcfXUbDRKKWMyYtApZUzKieXDrU00dAf7mD3+AM9/W83tc/KxOn1c9+ZWAE4dlcLQFAONPU4SDSqiVDLe3djA/JIE9rRYuWxKJmr5T3tUy4zVhrQHIkQAaO4NitztbrKQZFDRbHGxcFMDd8zNp8vmIScu3D5wR6OFz3e1srfFwhVTsqjttCGKIvF6JZdNzuTkEclUd9jJj9cxLM2IUhbJSEf4fRIJpH8Gle02ko2DbS4ON96AhzZHO3Ga8AygXCpg1Eho6fWTagr+qWOqVmA7jGXd+4hVx1Lf1//gG1cAW14Jpoki/pa/WXY1Wbjnw51sbwyWxT5+WglPnjGM69/cSqvVhUYhJSVawytra5lVGIfbF+CFb2t4/LQSKtttvLCyGp9f5IIJ6Zh1SmYUxPFtRSfLy9p58MQh9Ll8dNs9JBnVtFpdCAJUH6Q/2u0LkG7SkJ8Qxb/6hVUCoog/ILK3pY94vZIUo4YnvxjwzJxfksBfTh2K4XsyjgeWLEf4eSQY1Nw9v4ALxqcjAqkxauq7Hfx3VU3YehVtNloOopC+saabm2blEqtVsLG2B6fXz/kT0thS18MHW4M9riPTovl0RzPDUo34/CJvrq/HsZ8C8pQ8M31OL1lmHX/8eBc5cTpGpAX7pSN/798H5W12/vJ5aUgQr7LdxmNLyrl2ejZ/+7ICfyDQ71XvZ+GmBmxuH7OLEpBKBR75vJR2q4vb5+RhdXnZ2djLpZMyCIiweGcL7X1uPP7g+TanKB61QkqSQcWCdXWsrOjC5vEhinD7nGB/6nXH5BzUWi9ChB+Lw+3j0+3NPPz5XmwuHzfPyuVvZw5nTXUn5a19ODx+pueZWVPdOWjbTXXdnDIiGYVMwozCeOYVJzElLxalTPq9FVsRIvyeiATSP4OqDhsJR4HQWH1fPbFqE3LJ4If+OL2Uxi4fqSYZgt+LsXYdtVNvPuxjNKvN7Ozsn+3UxgWD6J5aiMk87GOJcOjp6HNz3ZtbQtnnui4HF7+8iU9umMRFE9OJ16tQSCW0WZ1MyTXj8wcwqGTcNDOPhxbtpaPPzbziBMxRSp5ZVslxJYkkGFRMzzeTaFRx78e78fgCnDYqhRkFZo4pMNNqcYXKIfcnQa/EoJbzxrp6bG4f0Ro5+QlRGNRyzFFK8hOiuPGtrWHbLN7ZymWTMxmVHnPYPrMIoJBJyY4bCFZ9/uCEx/6IiERrB1/rhqYayTHr+GhbM5/vaiFWpyTJoOaEYUn0OoM9qv6AyH9X1bB0dxtvXD6WVZWdbKnvBeCBE4ewqbabJbtbSTaquX1OPm0WJxA96FgRfru0Wp0c6GpW2tpHokHFgsvH0tDtxBcQufvD3aH3l+5uJVojx+720Wnz8I+vK3jstKEcPyyJtzfUI5EInD0mlfI2G7lxOh5fWsq103P4x9eVLNqxkWn5Zi6fmsVTXwYn815dE/SEjgTREX4u2xst3NmfaR6ZFk2MVskNb2/F5vJxxugUum1u7vtkN7fMzhukBD8kSc/4LBN/eH8H6SYt959QGMk8R4hwAEe+JvlXTGmrlSTjkQ+kayy1JGgTDvpebJSE+s5gP6m+aSseXRw+tfEwji6IWWOmw9GOJ+ANZqHji6B+3WEfR4TDQ3OvMxRE78Pp9dPU4yQ/IYp7P9rF9W9t5aFFpXyxp5UZBfHE6VXc9eFOGnucuH0BPt7WTLfdg0EtJzdOS6/Dg0wi8PTXlXTbPdjcPl5dU4tcKiFWqyDJqOIvpxaHiZ5cNTULo1pBj92LiMglkzJYcPl4Wi1OLnppA88sq6S8rW+QAjcQZvER4ciQZtIwpyg+bFm0RoFRJWNW4YAmhEmr4JZZuXy2s4WPtjXh9gVo6nXy6JJS7G4/o9ONRGvkbKvvYVxmDLOL4tEqpNw9v5CHThrCyxePZk1VF5/uaMHrF6ntcvCXz0vRKn+4B7qirY8lu1pYXdlJ1wHqyhF+fSQeZHLcrFOiV8t58LM93P3hTrY29AJB0cG5QxKYlmfm24oOxmfGcMmkDC6bnElTr5MXvq3G6vLR6/Dy72+qmZ5nxu8XuWpqNrct3E5Vhw1fQOTrve1sqOliUk7Qds3i9OL1R64/EX4+u5uDVoFpMRoumJDGvR/toqPPjdPr57W1dSjlUvrcPm55ZxvXTMsObZegV3HyiGQue3UjDT1OLE4PKTGRdoEIEQ4kkpH+GZS12Tgr9chnK6p6KonXHDyQjjNIqelX7o6pXEZfYsnhHFoIuURGjDqGpr4mMg0Z/X3Sa2D4OUdkPBEOLVEq2SC/SQCdUsp/VtaGldM2dDvpsnsoa+sblAn6YncbT505jAXr6xEhzPpoH4t2thCjUZAXr2NYqoFbZudidfmQSyUsL23n+W+ruXJKFm9fMQGJRKDH4eGGt7bg64+e67ocDEnSs7vZGtpnvF4Z6TE8CtAqZNxzXCFDkvR8tqOF4mQDI9OM2Dx+8uKjKEkx4g8E8PpEFFKBL/a0DtpHQ4+Dv31ZgVEj5/4ThvDOxnr2tlj5pryTU0YmMyo9mvpuB18esK2/v5/++1hf08VFL20InefHFJh59NQS4vUHF4eKcPQzPNXIBePTeX1dsBVJJhF46OQh1HY52FzXi0wiYFDLmFEQR3GynqW72tAqpVw7PQeDWsbjS8tIMhz87/9tRQctFhfzihPwHmCdtrqyi+tn5LC6souThgd78yNE+Dm0WpwYNXKMGjmXTc5kS13PoHWWlbYzIcsUdLjwBXjwpCGo5VL2tFi5+e1tIZeNiydmRpS5I0Q4CJFA+n/EHxCp6bCTchDPxsNNlaWaE2MP3vecYJCyYo8LwefBWLuW2mm3HubRDRCviafGUhMMpOOHwJpnjthYIhxaMkxanjxzGNctGCiZPnVkMhVtNio7bGHrZsVq+ba8k6SDfJcSDSqW7G5lRXkHMVoFJwxLOug6jT1OVpR3cGxJItsaelm8Mzwoijco6XV4qOq04/UFKEk2hPymP93ezC2z8yhMjOLb8k7GZMRw3TE536mUG+Hwkm7SctOsPC6bnIlSJsXt86NVyui2e/i2ooPqDjtSqcC7GxtIMqiwOsPPL5Vcii8gcsGEDG5fuD30YPj40jJsbh+3z8lHrZASq1MOCpz16u++RVqcXh76dE/YZNHy0g52NlkjgfSvGL1awR1z8zlxeCKdfR6yzFpy4qJYuCmorJ1gUGHSKhiZZuSJ/XQVtjb08uQZw0IK3UOSBosPmqOU7G62DpowBIjWyEEUuXxyJiDi9PoHrxQhwo+kodvBHe9tZ3ZRPJdNyuSFb6q4cGLGoPUSDeqQm0aUSsbr6+owqOUcW5xAhkmL0+vn6mlZzDjAPzpChAhBjrrSbkEQVIIgbBAEYbsgCLsFQXigf/mfBEFoEgRhW/+/+UdynPXdDgxqGRrFkZ2LsHls2Dx9mNQH7+WM0UmwuQJIKzfgMqTgUx05ZeEEbQKVlsrgi+hMsLWBreOIjSfCL4/PH2BjbTd3f7iTL3a38cw5I/jj8YXcNiePzj43f/uyghOGhfuuJ0erKW210uvwkLtff6xUInDDjFw+29ECQLfdg0mrIFY3kJXWKKSMyYwJZZO77R6umJKFSj5waYvXKxmVHsMlr27ijH+v5dz/rKep18llk4P9+VlmHR5fgNNHpbDw6vH87axhFCVF7GKONnQqOXKZBJ1KjiAImHRK1lR28cyySpaXtpMRq+PiiZlIJQMChnnxOhq6gy0G/kAgFETv47+ratjdbKG118UNM3LCtA+HpRgwfo/YnN3to6LdNmh51w9ksSMc/USp5YzJMHFsSSL5CXqkEoH8hCj+MK+ACVkmumweFu1sCdtGFGFbQy9xUUqqOuwMSdITtZ/yv1EjJzVaQ4vFRU2nnfFZ4ffs62fkkB6rYV1NF8XJxjAv6QOxubzsarKwq8mCzeX9ZX/5CL9qehweFu9s5v5PdpMao8UvQnGyAYfXj1mnJHm/CWKlTMLsonjWVXcxPNVISrSaockGJufE8o+vKhiaauD1S8dy7rh0og9SDRYhQoSjMyPtBmaIomgTBEEOrBIE4fP+954SRfGJIzi2EHuaraSZjnzpZ5WlkiRdEpLvmBORCAIJRhntu3aSkDL88A7uABK1SWxrX9w/MCnEF0PdKhhyyhEdV4Rfjm2NvZz9wrqQQNTHkHiO5gABAABJREFU25q557hCnvqyPNSHnGnSctnkDF5bW4daLmVidgw2t59/rqjiwgkZHD8sCX8gwNAUA06PPyz4eW55JddMzyYlWo3V6UOnlNHr8DC7KJ5vyztIi9GQGx/FR9dOorTVirw/M7R4Zwvb+/saATbW9jAxO5ZpuSYKEg38+5sqnllWSbJRzb/PHxmxNvqVMD0/jg+3NnHS8GT+vHgvqTFqbp2dh9vnJzVaQ3WHjef7rbOkB3EI0CllNPU4+ceyCoYlG3jijKHUdjqQSyW0WJw09joZ8x3HNukUzC1O4JNtzWHLI36qv03Ucin/XFGJ1eVjck4s2oNMohs18tD16rnllVw2JROjRo5EEOjoc/Ps8uBE8odbm3j23OGcMiKZXoeXaK0cUYRum5ddTVZeXVvLjIK4gwo7NfY4eOizPSzd3QbArII47j9xCKkxR95BJMKR5+OtTfzp0z2h1wa1nCdOH0pOnI6ytj6OG5qIViFFKhHIMuto6XXwx+OK6HF4eH1dHdsbLNwxN58Eg5LzxqWRHmlxihDheznqAmlRFEVg3zS/vP/fQQqhjiy7miykHgVl3RU9lSRqE793neQoP+WNkDFm6GEa1cExa8xYPVasnj70iqig4Fj1ikgg/Rti0Y6WQSrL35Z3MCItms39/VlRKjl3HVvIxRMzkEokOD0+Fu1s4fiSRF5fW4tMIuHyKZkMT4mmrssepiTq9gXQKmS8ub4+pLYMcMmkDF6+ZAzZ/fZEBYl6ChKDWWV/QPx/9s47PIrr6sPvbG9aSavee6MjejMd22Dce+8ltr/ESRynOU7sxEmcOM2Jey+4N2xjGzBgwPReJNR779JK23e+P0ZIWiRAgIQEzPs8+8DenZm9I13dueeec36H1dm1vfqaU93K3bOTueHlrV1tFc02Hv38IG/ePhnzMbyRMsODqYkW/njpKD7dXQFI+fZ/+zYHgGsmxjAhLoCYQAMlnV7p6AA95c3dqrQ3To3j158d4N7ZSfz92xzMBg3vbSul1S7pSlw5Ifqo361VKfnx/BSa252sz6vHT6vi14szGBUl1xM/GzlU3dY1LjYXNvCrC9PZWdrUFaZt0qqYFGehptXBJ7vKaXd6KKxrZ3pyEMX17RTVd2B3edCqFNw1KxGb08vvPj/YZXgrBPjrFWMQBNhd2kyLzdXnHLQup67LiAZYfaiW6cnB3D5TroBxrlPTauefq/N82lpsLrKqWrlvdhKljR38Y3UurTZpHAuCVK3g453lLB0bycqDNbi9Iq9uKuKFmycSLqeoyMgcl2FnSAMIgqAEdgLJwP9EUdwqCMKFwAOCINwM7AB+Jopib+WE08S+imamJgQN1dd3kdN0iAmhE495TIorj63qTBaqhraUhgKBKFMUeU15TAjLhIhxsPEfQ9onmYFF7ENoVhRFFIIk2nPfnCTGxQagUiqI6aEAeut0HbVtDu6ZnYRSIdDc4WLFgSpiAw386dJRbC5soKHdSVqYHwnBBh8jGuDdbaVcMT4KhaK311GpEFg4Ioxdpb7TxayUkD7FpPaUNdPY7jwlQ9rp9nKgooVD1a2YdWrGxAQQK3uMBpwgk5ZLxkXy+Z6KXp+plALZVa386bJRNHe4EBTw0MIUqlsclDR2EB9kYF1uHY3tTlbsr2JGcjCHqlpJCDaSU9PGbxZnkBFhprLZxr7yZuqtTkngLMqMvtMbmRRi4rkbJlDZYkOnVspewbMMl8dLTasdrUqB2COx2eOVapD/dkkGjVYnapWC8bEBRAXqCDNruGtWIgqFgNXmIre6jVd/KGZCXCB/v2osmbGBhJm1PPVtjk+0jVeU9BrGxwSiUgh9lngD+O5Q703BVVnV3Do9noNVrWRVtKBVKxkT7S/XPT/HEEWpPOCRmPVq2uxuDlS08ORlo8mraaPe6iQm0EBqqIkYi4G/fH2oS4Bzb1kL5Y02VmfVEmTUMCban6hAeW6TkemLYWlIi6LoAcYJghAAfCoIwijgOeAJJO/0E8DTwO1HnisIwt3A3QCxsbGD1T/2V7Rw/eS4Qbl+f3F5nZS1lrM0cenRD/J6GN+4jo8dt+IVa+nDzjitRJmiyWrIkgzpwHiwt0JTCQQO7c/ydHE6xudQsmRsBG9uKfYpJ3X7zERC/bRoVQrig4yoVb3TEMx6NWa9mnanmz+vOMTbnYq5IJWwum5SDB0uD+H+Otb04V12eUTW5tSRU2MlJcxIfm07QUYtI6PMBJu0LB4dzvrcOjYXNgBSOOTstBDKGm29rpUW7oe/4dS80Rvy6rjzzR1d3qrkEBOv3TZp2BtaZ9L4rGy2kVXZQrvTw03T4tlc2Nj1mVIhMCban+yqVm58ZVtX+83TYgnQq/k+t5YPWrs3UWxOD2FmBRPiLMxIDkavVhIfZKTe6uDH7+1me3H3Jszfrxrr46k26lSk6PwG+W5l4PSOz7KmDl5aX8i720oJNGj425VjMGlVWB2SN6+wvh2Hy8vqQ7VUNdtotbuZmxbCg/OSaXd4KG5oZ29ZMxvy6gHYWdJEXJCByzOlsePuo7yV3e0l3F/Lj+YkYzpK6bUZSUGsPcKYnpUSwt7yZq5+YXOXGniIn5Zld04hJUwem6eD4TB3hvvreHBuCn9akd3VZtapaLG5aO5w8dGuCj7aVYFZp0KrUlJndfDarZO6dEgOkxpm4q0tJXzembYyLiaA52/MJPwoavQyMucyw9KQPowois2CIKwDLuiZGy0IwkvAl0c550XgRYCJEycOSkh4aWMHGqUCyxCLLxQ2FxGsD0arPLqn2Vy5Bz+DCq1XoKRVRYK/+zT2sDfx5ji+Kf5GeiMoIHI8FHwHE3vtiZyVnI7xOZSMiwlg2V1TWba1BIfLyw1T45iUEIhe3b+ppqDW6mNEA7y4oZBLx0cxolMFNy3CjwCDmuaObpGdxaPCWZlVw/4KKb/rqc7w3iWjI3ji0pHEBRl5/qZMiuo7EARJKdxPp8ZPp+Ke8xK78mjNehV/unQUgYaT/9tuanfypxXZPsq8+XVW9le0DHtD+kwZn+WNHdz7zk4OVEgic5mx/jx3QyYf7ixHrRSYFG/BanfzxmbfsfTm5lKeuW48dUdEIlw4OpythY2cPyLcJycwq7LVx4gG+ONXWcxICiJCVnU/7Zyu8en1iizbWsKbneOnts3Bg+/t5oWbJrDyYDWF9e1cNj6K1Vk15FS3dZ23NqeOcTEB/GdNPj9flNplRB/m8vFRXf9fPDqCt7aU+nx+w5RYpiYGEWbuXcv6MAszwvhyXxV7OjUfRkf6s2hkGE98meVTUquuzcGmgnrZkD5NDJe584oJUYSZtXywvZwQs5a0cD/+tyafqyfFEGbWUtPq6ExRcLMgI5TUMBN3zEzglY1FgPQMvHFqHH/6qtsY31PWzMHKVtmQlpHpg2FnSAuCEAK4Oo1oPbAA+KsgCBGiKB7eNrsMODBUfdxV2kTqMHg45TTlEGM+eg4fopeg3FU0x04huc7J7hrtkBvSocYw2l3t1NnqCdEHQ+Q4yPn6nDGkz3bUSgVTE4OYmnhyaQ9uj5eHFqbi9njxeEXe3lpCq81Nu6N73I6OCuDFGyfw7rZScmqsTEsKwuHysL+iBYDKFjuBBjVNHS6+2l/FjVNjmZakxV+vYVyMr4Hsr9fw4wUpLBkTQYvNRazFQNwpigja3R5qW3uHjLfZZHXdgWJveTMHKloRBLh6YgwR/jra7C7mpAbz0a5y/vhVNg/OS+6zzJAAvH7bZF77oYhmm4vLx0dh1CqZGJ9E8BFKyVZn7/myxebCLpcmOquptzr4YHu5T1urzU1uTRt/uEQqNZlT1cpPP9jb61y3VyQpxIhBo+TJy0bh8YrsLm1mQnygj4p3Zmwgb90xmRfWF+JwebhzViIzkoMxaY+9LIsLNvLKLRMpqLMiipAUakKrVFDRbO91bE0f85DM2Y3FqGVMlD/+ejXFDR2sz6ujzeHm7S0l/GRBCkV17eyvbGFSvIXFo8OJCjTws0WpXDIukhabC4tBww0vb+lV4cDqGNq1o4zMcGXYGdJABPBGZ560AvhAFMUvBUF4SxCEcUih3cXAPUPVwW1FjV2iRkNJVsNBxoSMPern5rKdeJVq7P7RpLhdbKnUcXlq+2nsYW8UCCT4J7Knbg8LYxdA5ATY+gK4bKCWdzvPZWrb7Ly0oYivD0g1oM06FQ8tTOWtzSXEBfl6cicnBjEi0sx/1+bz4Y5yGtqdXZ+ZdSo6nN2GTstxDFiDRsWYAVTpDvPTcf2UWF7s9HKDJCSUFjH0m29nC42dv++7ZiWyIa+O97dLXsFIfx03TI1jX3krdW0O4oIMlDR0dJ0nlUILJCJAj0Yp8Pz3hfxpRXZXLejXbpvE3LTueqnJoSa0KoXPonLxqHC5xvhZjkGjJMai95lXQMrJP0xUoJ7pSUFsKmjoajNqlJh1Ks4fGc7vv8hCFCVBp4cWpPL6D0WUN9n5/IEZpIb5oVUrmZUSwpQEC6IIWnVvhe6jEWTS+vQF4KapcTy2/KBP24zk4BO5bZmzgB3Fjdz62vYuw3d+RigXjYngy31V/JDfQGSAjsgAPTtLmogw65gcH+TzDHS4PSwYEc5HO7s3ktRKwac0pYyMTDfDro60KIr7RFEcL4riGFEUR4mi+Hhn+02iKI7ubL+4h3f6tLOtqJG08KFdFDs8dkpaS4gx9e2RVrhshGR/RXPsVBAEUgKd5DWpaXMOcZI0kBKYwraqzrxFnRmCkqFg7dB2SmbI2Vfe0mVEA7Ta3SzfW8nzN2YS4tc71NHjFYkJNPjslMdaDIgiXYaPRqkgIfj0LgAUCoFbpsVx7+xEzHoVaWEmXr11EiMjZTXngSI9ortGb3ZVd2htZYud/ForicFGPt5Vzr3nJbJoRBhGjZK5aSG8euukrpDsFzYUsS63rsuIBvh4h68XMi3Mjzdvn8zYGH/8tCpunBLLw+enn5DRI3PmYdKpeeSCdNTK7udleriJ8TEBPsc8cekorpwQjUmrYmJcAD8/Pw2by8vz3xd0RUOIIjyzJo8LR0dgc3koOKL2uEalHJDxdOHocH55QTpBRg2xFgP/u348mbEBxz1P5uyhxebi8S8P+jwTv8uuJSPcj4vHRjArJZj1ufWsOVTL0jGRRAXqewl0alVKHpyXzK3T4vHTqhgdZeaN2yeTHm4+3bcjI3NGMBw90sOaujYHNa0O4oe4hnROYw7hxnA0yr5zOUMPfoE9MBanXxgAWiWkBrrYUK5ncWJHn+ecLhLMCXxT9A0NtgaC9EEQMwUOfgLpi4e0XzJDS21r79DEQ1Vt+On6Ft1RKRWsyqrm/rnJuL1elIJASpgfH+0sAyAx2MDjl4wmNazbkM6pbmV1di1ljR0sHBHG5HgLfoNQ5ioq0MAvzk/n1hnx6FVK/E8h51qmN6Oj/PnPdeP5YEdZr89ya9p47KIMHB6RUZH+XJYZRUlDB/m1Vl7/oZiZKcFMSwoixNT7dxJ8hJdPEASmJAbx9u1TaHd6CDZpUCmH3f6zzCAwJSGIT380g7xaKwaNklGR5l7KxUkhJv582Wh+tigVo0bFrtImDlS0+OQqgySG6BXhvtlJlDR28PMP93JeSjDTEoMIOUY+9IkQ6qfj3jlJXJ4ZhUopYDEObZUOmdOP1e7mYGVbr3aNSsml46NZlVXNhaPDmRRvodXuZHpS3xELcUFGfntRBvfMScSoUcmlIGVkjoFsSJ8gmwrqGRFhRjnE8tf76vYTZ47v8zNT1T6MdYeoHn2lT/uEcDtf5Bu5MEESXBoqVAol6ZY0NlRs5NLkSyB+Jnx+vxzefY7TV27y/IxQLH0YPABGrYpbZyRw2+vbu7w/AQY1H94zjceWjsRPp/JZTBbWWbn+pa1d4ZrvbS/jr1eM5ppJg6OwqlAIch3OQUKnVjI3PZTGDqdPFAPARWMimZ0e1vW+ttXOzz7Yy4FKSZjsw53l3DEznpunxfHZ7kqcnerJWpWCSzOj6As/vXpQNlxkhi8KhcCoKP/j1gVXqxREdIowzUkLJdJfz4vrC7tqToNUYzo+yMAL3xeS1+mR/mhnOXfNSuQX56f1WcngZAkdIMNc5szDYtQwNy2E1UdUtgg1a7n99e1d75dtLeXDe6b10oToiUrZPa5lZGSOjry1foKsOVTLqKihDnER2Vu3h6SAxF6faNqqCd/7IfUpC/CqfA2QlEAXdrfA9uqh36keGzqOdeXrcHndoA+E4FQ49NVQd0tmAGnpcLE+t47XfihiVVZNnx7nnoyJ8ufXizPQdi4qx8cE8OMFKWhVRw97nJ4UxAf3TONnC1N5/JKRvH/3NFLC/IgLMvbyyBysbO2V8/j3lbnUth27XzKnj0PVrby/vZT3tpeSXdV63ONnJQdz6/T4rrJ+F44K56IxET7H5NZYu4zow7y+qQStSslH903jVxem8+vF6Xx833TG9QjdlTm3cXm87C5t4q3NxXy+u4Li+v7pi6SG+/HsjRMI6YxuCDZpeOKSkRg0qi4j+jCv/lBESePQRojJnHk4XB52FDfyxqZivthbSVnnGNJrlDx8fjqjO9eoWpWC3100gp3Fjb7nu72syeldRlJGRubEkT3SJ4DHK7Iup44/XjpqSPtRbi3HI3oI0Yf4tCvtLURveYnmuOk4TaG9zlMIcH5CO8/u9mdUcB0G9dBVtwnVhxCiD2ZD+Qbmxc6FxLmw83U4wosuc2bicnt5bVMR/1qd19V20ZgI/nTZaPyP4tnz06u5Y2YCCzJCsbk8RAfq8dcfOyRao1IyKd7CpHjLcfvUV91Wh9uDt3ezzBCwv7yZa1/cQnunUJxBo+S9u6Yy5hjGbahZx68Wp3PDlFg8XpHYIAMGje9jzd3HL9jjFfGIImOiAwZUaE7m7GFTfgO3vb4Nb+djMiZQz1t3TCE++PhpXTOTg1n+4Azq25wEmTREBuh71X4G8IoiHu+wrTInM0xZc6iW+97Z1fU+LczEK7dOIjrQQFq4H2/fMYWyJhtGrYpwPy03vrqt1zVscuUBGZkBQfZInwBbixoIMWl75dGdbnZU7yQlIBWB7vhshbOd2E0v0B6aTntIylHPzQhyEe/v4vFNgdjdQxuePj1yBssLPqfd3QFx06HmINTnHf9EmWFPcUM7/12T79P25b4q8mp752/1RKkQSAwxMTLS/7hG9ImSEWlGf4Soz49mJxPuL4dCDgc+31PZZUQDdDg9fLizdw70kWhVSlLC/EiPMPcyogFSQv2IOOJ3vHRMBHGWodW5kBm+tNpc/PXbQ/S0ccuabOzurN3cHyL89YyO9u9SeE8NMxHu77t2uHhsJLHDvLa8zPCivs3B419m+bTl1Fg52CPqxt+gYVSUPwnBRvRaFXfOTPA5XiFI9chlZGROHdmQPgE+31PJpITAIe6FyNaqLaRZUrtaBLedmM0vYfePpDVy3HGvcHFyOxqFyIOrgyluGbqghAhjOEmBSbyd9RaiUgUpi2DTM0PWH5mBw+by4O7D09LhGLpd8PRwM+/ePZVLx0UyJtqfv14xmisnHKMOu8xppbSPENeyRtspXzcqUM/rt03itunxjIw088sL0vnFhenoNbLytkzf2N0e6vqowXy8UnrHIirQwOu3TubWw+PwwnQePj9NHocyJ4TD7ekq/9eTY9V5npUSwgs3TmByvIX56aG8c+cUxsppLDIyA4Ic2t1P7C4PX++v4k+XjR7SfpS0luD0uog0RUoNHhfRW1/FrTfTHDuF/qiIKQW4PLWdnTVaHl4XzP3jm5kTOzR5onOi5rDs0DK+KPiCizOWwmf3wexfgL9s4JzJxFoMjI32Z295S1dboEFNQj/CIgeTcTEBPH31ODxeL5pj5F7LnH6uyIxmZVaNT9vVk2IG5Npp4WZ+t3QEDrcXnVy6SuY4hJi03DQtln+s6o6QEgRJLf5USI8w85g8DmVOgTCzjusmx/L6puKuNpVCIDXs6CVZTToV548KZ25GCAoEufKAjMwAIhvS/eSrfVUkhZqGPKx7ffl6RlhGSGHdopeonW8hCgKNCbP6ZUQfRhBgYriDKJOb5/f44xEF5seduvfnRFEr1VyecgUf5n5Ak6OZG1IWofrucbj8xdPeF5kTp8XmpKi+AwFICDZ2lckIMGj4+1VjeXZtPt/l1DI+JpCfL0olZhiEMSoVAkqFvIgdbkxLsvDUlWP49+o8RFHk/+anMOMo5Vn6Q0WTjfLmDgL0GhJDjKiVCtl4kekXgiBw1cQYvCK8tbmEYJOGX16YQVqYH1mVrbQ73MQFGU5KIVsQBHkcyvSbequDkoZ2tColicFGDFoVd8xKQKdW8P72MqID9fzywgxGRBxfBFejlMedjMxAIxvS/UAURV7eWMiS0ZFD2g+Hx87W6q3cPOIWQCR87wcoHW3UpV9wQkZ0TyJMHm4b3crze/yJ9nOTZjn50LWTxU9j4vqMG1hVspI/WKv5bU01mqINCAmzTntfZPpPaUMHv/lsPxvy6gGYkxrCE5eOJKYz9zQlzI+/XjmGpg4XZp1aDmGUOSZmvYarJ8awIF0SSrScwqbljuJG7nlrJw3tTlQKgV8vzuC6yTHo+8ihlpHpiwh/PT+en8L1k2PRqhWIIvxvbT7Pry9AFCHGoueFGycwIvLUvNQyMkcjt6aNB9/dTU61pC1y/eQYHlqYSkyggV+cn87tMxLQq5VyaT4ZmSFEju/oB+vz6ml3eBgfGzCk/dhQvpFYUyz+GjPBWV+hayqlPnURCKdmoIQbPVyabOXJzYHYhkiATKfUsjRxKdPjFvCevz8N715JVtkPQ9IXmf6xMqu6y4gGWJdbx3eH6nyO0aiUhJl1shEt028sJu0pGdGNVge/+GhvV6kzt1fk8S+zuhajMjL9RRAEQs06/PUa9le08Nz3BV0168sabfzt2xxsTln9WGbgcXm8vLKhyGfeWratjN2lzYBU5zzUrJONaBmZIUY2pI+D1yvy168Pcem4SBQn6fUdCDxeN18Xf83E8ElY8tfiV7mX+vTFiMqBmURHhTiJMbt5Zd/R82xOBwn+CUya/CB1wcm4ll3JkxsfpcMl19kcjqzOrunVtq6PEi8yMqeTequTwvrec0ZF8+lPXZE5eyhv6j2mNhc20NTRW/hJRuZUabW5+D63rld7dlVrH0fLyMgMFbIhfRw+3FmGxysyJTFoSPuxtmwdFp2FEXXFBBatpy5jCR71wJbtWZLYzoZyPVkNQ7vDqUBAyLyZGEsaV29dxu2fXsyhxkND2ieZ3sxJ612rfFZqSB9HysicPixGDbEWfa/2w2WIZGROhqg+xs+kOAv+BtkjKDPwmHVqZiT3XnceS1RMRkbm9CMb0segusXOX74+xC3T44fUG93ibGF5wXKu9RoIzltFbcZSPFrTgH+PQS2yJLGdp7cFMOTRaoKC2vHXERA+jlcKsvngg8tZnvvZEHdKpicXjgxnQo90hykJFhZk9DauZWROJ8F+Wv525VjMeikfWiHAIxekyQtQmVNiVJQ/t82I73ofZtbyyIXpGOW8e5lBQK1ScPd5ScQHdQt0XpEZRWbcUJdglZGR6Ykgir1rvZ4tTJw4UdyxY8dJnevyeLnuxS0khhi5bPxQlmIS+ffOf3FeXQmjWuqoG3ERbu3gLQhFEd7J9iM10MldY4dHTqGusZiAg5/jbK/hUOwEps95HFXUBBha5eVT3lk5lfE5XGhqd1JYbwUEEkOMBBo0Q90lGYlzfnyWNnZQ3tRBoEFDYrARrayUPJw4I8dnh8NNQV077U43sRaDHOVw9nJK43Mgx2Ztm52i+nZ0KiVJIUZMOjkCQubU50+ZgUPeSu0Dr1fkFx/tA+CSsVFD2pevst7lgsJtxClN1I66FI96cB/cggCXJlt5ZlcAY0OdTI5wDOr39Qe7JZ7qWT9GaChAe2g59W9dTKgIiojxEJXZ+ZoAAXEnrV4uc3IEGjVMMFqGuhsyMr2ItRiIHQbl1mTOHgxaFaOjZZVumdNHqJ+OUL+BTeOTkZEZOGRD+gjsLg8Pf7iXgrp2Hj4/DYViaAwzr8fFzs1PM7toE87QEdTGTztlde7+YtKIXJfRxt+2BfLHWQ1DUhKrL8SgJMwzHmJd3R52l37PPI3ApJZiAit3I6z4BaIg0B45lrygWNZplOx21NJob0QpKAk3hjMmeAwzo2cyOng0CkHOapCRkZGRkZGRkZGROTlkQ7oTURTZkFfP7784SKS/nkcuSEejGgJjq6OeuqxPUeZ+Q4wg0Jh+IfjHnPZuxPu7uSK1jd9uCOLOMS0sjLcxRHsKPgjAuJBxpAamsbtmF9815dDsakZjMeLntDGu8QCja/dzb3szTr0/dZFjqQ3LINfPQnZbKb/c8EvsbjuL4haxKH4RY0PGolLIfwYyMjIyMjIyMjIyMv3nnLQg2uwuvj5QTavNRXWLnezqVn7IbwDgqgnRTIq3UNtmH/gvdjugai94XXjddupay/A621HaW9DaWvC3S2UN6pRKGs1paC1JYBPANjQlhYzA+eF6nt0Vyz93BDLBUk+8yUq43sbM0Bo0Su+Q9Osw4zRBjAubjkd04/K60Cg0KAQlNiAbL6bWagIai4kp3sJ0h5TvbfULpcEQSFH9++za/DxrFaDSmrGYIjEbw2iMm4peH4hOqWNi+ERi/E7/JoaMjIyMjIyMjIyMzPDmrBYbEwShDig5st007gJL0PkPJBzZ7m6pdcDg/Tz81KIi3CgeUylieARR+yIiUCGG+7T9V/MHcZQyv8cxCMJg/vBOEQUIseLxpch/FBbCBoOUh96yraW+7NmyXuOnk3pRFC84lT4dbXweh2Cg/lS+9xQZyu+X773/DNX4HCyG+nffF3Kf+s+R/RqI8dkG5JxSr84chuvvdTAYDvd6SuNzCOfO4fCzO5Lh1qfh1h8Ygue7zMBxVhvS/UUQhB2iKE4c6n4cjeHePxj+fRzu/esvQ30fQ/n98r2f+eP3ZBmO9y/3qf8MRr+G670OBvK9yvSH4fizG259Gm79geHZJ5n+IysuycjIyMjIyMjIyMjIyMicALIhLSMjIyMjIyMjIyMjIyNzAsiGtMSLQ92B4zDc+wfDv4/DvX/9ZajvYyi/X773c5fheP9yn/rPYPRruN7rYCDfq0x/GI4/u+HWp+HWHxiefZLpJ3KOtIyMjIyMjIyMjIyMjIzMCSB7pGVkZGRkZGRkZGRkZGRkTgDZkJaRkZGRkZGRkZGRkZGROQFkQ1pGRkZGRkZGRkZGRkZG5gQ4qw3pCy64QATkl/wajNcpI49P+TWIr1NGHp/yaxBfp4w8PuXXIL5OCXlsyq9BfskMI85qQ7q+vn6ouyAjc1Tk8SkznJHHp8xwRh6fMsMVeWzKyJw7nNWGtIyMjIyMjIyMjIyMjIzMQCMb0uc4Hq9Ic4cTt8c71F2RkZGRGTLabC5sTs9Qd0NGpl+0O9y0O9xD3Q0ZmWGBw+Wh1eYa6m7InIOohroDMkNHfm0bb28pZW1OLbNSgrl5WjypYX5D3S0ZGRmZ00aD1cHKrBpe3VhEsJ+WB+YmMyXBgkop7zPLDD/aHW425tfxvzX5iMB9c5I5LzUEk1Zezsmce4iiyI7iJv67No/yJjs3To1l8egIwsy6oe6azDmCPPOeozRYHfz4vT0crGwFoKShlM0Fjbx79xRC/eQJSEZG5tzg6wPV/PazAwDk1VrZWtjAR/dNJzM2cIh7JiPTm+3Fjdzz1q6u9z96Zxev3jqReelhQ9grGZmh4WBlKze8vBVnZ1TlH77Iot3h5oF5KUPcM5lzBXnL/RyluKGjy4g+TEGdlaL69iHqkYyMjMzppbnDyUsbCn3avCJsL2ocoh7JyBybD3eU92pbtrV0CHoiIzP0ZFW2dhnRh3l5YxE1rfYh6pHMuYZsSJ+jaFV9/+o1cjijzFnCO1tKuOaFzXy4o2youyIzTFEpBMw6da92OUxWZrhiMfYer4EGzRD0REZm6NGplb3aTFoVaoUwBL2ROReRraZzlIQQI1dOiPJpWzImgqQQ0xD1SEZm4HhjUxHPf1/AtKQg/r4yh5UHq4e6SzLDEJNOzU8Xpvq0BRjUTIq3DFGPZGSOzRWZ0cRaDF2b3mqlwLWTY4e4VzIyQ8PoaH/CzFqftl9ekI7FpD3KGTIyA4u87T4MaLA62FHSxI7iRtLDzUxJsBBtMfTr3Lo2OztKmthV0sSICDNTEoOIDNAf9zyjRsXD56czNy2MveXNjIo0MzkhCLO+9263jMyZREWzjadX5vKHi0cR7q/DoFHx+JdZzM8IQynvUp/T7CtrZnNhAxXNNqYlBTEpzsL0pCDev2cqG/PqCTBomJkcRGq4LLooc/oorLOyuaCB8qYOpiUFkxkbiEnXe3lW22anotnO/IxQ4ixGLEY1cUFGRkf5D0GvZWR6Y3d52FPWzMa8eiwmDTOSg0nrh4htVbON7cWN7KtoYXxMIBPjA/slGJYQbOSdO6ewqaCBmlYH05OCGB8bMAB3IiPTP2RDeoBwuD1Y7W4CDJoTWqy73F5e2lDI899LeXp6tZLbZ8Rzw5RYIgP7NqZdHi+tNhc6lYJnvsvnzS0lXZ/NTQ3hH9eMI9B4/FCvMLOOJWMiWDImot/9lZEZ7vxrVS7zM8II95cewqMizejVStbn1jE3PXSIeyczVBysaOHet3dS2SLlzr25uYTHlo7gthkJTEkIYkpCEACN7Q7aHW7sLg8mnQqtSond5aHD6SbQoEEQ5M0YmYGjtKGdm1/dRnmTDYDnvi/kqSvHcPXEGJ/jbE43/1qVx7Jt3fnQCzJCefrqsSh6rDmqWzpQK5UEyR45mVNAFEWaOpzo1Sr0mt7h00djfW4dd7+1E4BYi4GCWiu3z0zoM9rx8LpZqRB4bPlBVmbVdH5SxNUTY/j9xSMwaI5vpiSH+pEcKm9+ygwNsiE9AGRVtvDcugJ2ljSxcGQYt0yLJ7GfIdLFje28tKEIgIlxgcxJC+WLvZV8m1XD/XOTmZ8e6uMlzq1p45WNRazPrWNaYhCpYX6olQIujwjA2tw68uusTDLKoYky5x61bXa+OVjN01eN7WoTBIGZycF8urtCNqTPYQ5UtnYZ0Yf575p85qSGkBBiorypg492lvPRznJiLQYuHBVOVlUrl4yL4rWNRRyobOXyzCiunhhNjMU4RHchc7ZxoLK1y4g+zF++PsSc1BBCe3jkiuo7fIxogNXZteTXWpkQZ6G0sZ1vD9SwbFspBo2Se2cnMTc1BJMcZSZzgvScCxODjfx4QQoT4o6/pmy1uXh6ZQ4Ad81KpM3uYl1OHeVNNn6yIIXxPSohHKxs4dm1+ewubWZeRigZEWZWZdcgSktZPthRxi3T4xgZKUdbyAxv5BzpU6S8qYNbXtvOF/uqqGyx88amEn7x8T5a+lkY3u3x4vGKKARYkBHG31fmkFPTRn6tlYfe38OmgoauY+utDh5Ytov3t5dR1WLnk90VLNtW2mvn2un2Hvk1MjLnBO9tLWNqggW/IwSkJsZbWJtTi9sj/22cq7j6+N23O924vCIut5cXvi/gX6vzKG+ysamggT9+lU24WceDy3YTE2SgotnGM2vyeWZNPg63ZwjuQOZsxNXH87rd4e41Xtud7j7Pt9ql9pUHa/jTimyK6ts5WNnKg+/uZmuxrD4vc2IcOReuz6vnhpe3klPdevxzPV6sDg8T4wIpaWjnve1lVDTb+D63jhtf3kp+bRvQuW5+dRtf7a+mssXO21tK2ZBXz6IR4T7Xk9eyMmcCsiF9ihTWt1PX5vBp21HcRGlj/8pIxQYamZsWQnq4mZ2lTb0+X7a1BLFzi66koZ3cGqvP56WNHQSZusO4owP1JIbI3hKZcw+vV+Td7aXM7aOeqsWoIcSkZW958+nvmMywIC3M1KtawXWTYkkMMlLVauPdbb7q7g63F48oUmd1YOgR2vjRznIqm+XSKjIDQ1qEHzq177i8fWYCEf6+WicGtbJXLnSMRY9Jp6Kuzc4HfVQn+CG/fuA7LHNWU9Vq7zUX2l1ecqqtRzmjmyCTlrtmJTA1KYhV2TU+n7U7PeR3rl8Laq3UW50+n+8qbSItvDuSc2x0APFB8lpWZvgjh3afInpV79wRpUJA20d7Xxh1Kh5bOpKVB6vJq+09UYWadV05eUe7ZnyQkYRgI1MTLdwyPb7XA1hG5lxga1EjOrWS+KC+tQVGRprZmFffrxA1mbOPSQlBvHzLRF7eUER5k42Lx0r6ECqVArVSgUmnornDN5JI2Tn3KnvkRRs1KtRKOU9aZmBIDzez7M4pPLeugML6Dq6dHM3SMVE+ec8ACoXAvPRQUsNM7CptZmSkmRERZgQENEoF/n2EcPfVJiNzLNRKoc+5UK/un9/torGR7CtrxqBW0u70jdw5XKqqr5JVKoVAnMVAQrCReemhXD85tl9aPzIyQ41sSJ8iyaFG5qaHsPZQXVfbXbMSjrqY74v4YCN3nZfI7tImvthXid0lhbNolAqu71HWIjHEyHWTYnh3e/du4eXjo1iYEcr8jFCMGhUquQ60zDnKx7vKmZ4UdFQxqNRwP7YUNvT5mcy5wayUEDJjA7A63ISZuzccI/z1/OqCdB75ZH9XW0KwkWabi6mJFp9IoF9ckEb0UYQgZWROhsw4C/+9wR+Hy3vUyhkJwQZabC52lTYzIsJMXo0Vryhy49Q4zHo1D8xL5rbXtuPtzDH116uZnhx8Gu9C5mygr7kwNczEiEhzv84PNmmZmx7Kzxal8fiXWV3to6LMpEdI10gJ82NOagjrcrvXzffMTmTx6AgWjAjDT6vutZEkIzNckQ3pUyTQqOXJS0ezs7SJ/Foro6P8GR8bgKafHunDCIJAZpyFj++bzraiRjxekSkJFkb1COUyaFT8dGEqc9JDya5qJT3cj/Gxgfjpz+Bdu44GKN0MBWshOB2S50JQ8lD3SuYMw+H2sPJgNU9eNvqox6SG+vHC94V4vKJcBuscxqhVY9T2NlaWjI0k2mJge3EjQUYNgQYNCHDNxBiyqlpJC/djfGwA42MCwO2E8u2Q+w1oTJB6PkSOO+33InP2oFUpjxnJplOreGBeMtOTg8iqbGXJmAgmx/hhrtsJud8wS6Fm5+3zeb88CAQFE+MDmSjXQ5c5CQ7PhTtLmogM0DMpPpCoE9g8FASBKydEkxJqYldpE7EWAxPjA7sqaViMGp68fDS7SprIr+teN+s1KoZ9PKXL1jn3fwt6C6QshIgxQ90rmSFEOJx/ezYyceJEcceOHUPdjZPC7fHS2OHET6vuV+kBm9NDm8OFxaAZXl5pUYT2OlDrQXtEeQKvF374F3z3h+62oBS4+TPwjz6dvTwZTtkSO5PH53Dju+wanl6Zy6MXjTjmcT/9YA9v3TGF5ND+qeqfwcjj8yi0O9zYnB6CTMcvZeVweWi1uwjQa1D3zK8uWAtvX0aXxKzaALd9A5Fj+77Q0fB6ob0etEbQnFP5gPL4PAZtdhcOl5dgv+OUsCreCG8sBbFTlEmlhdu+hqgJADRYHWiUCvyOFuLtcUub2Vo/0MhRFj04pfF5No/NE8HjFWlod2DUqjAep4zVsFrDOm3gaAVDECiP6Hfut7Ds6u73Wj9p7g8fdTp7KHsChhGyR3oYUlTfzmsbi1hxoIqMcDM/XZTqUzbgSHaXNvGPlblkVbWyeHQ4t89MICF4GBgKLeWw6y3Y+RqYo2DBYxA/CxSdGwPNpbD+Kd9zGvKg5sCZYEjLDCO+2FvJpH54XxKCjRyoaDkXDGmZI/B6RbYVNfLUt4coa7Rx9aRorpsce9Qw7YOVLfx7dR47S5qYmxbCPbOTSAnzA5cdNv6z24gGcHVA/uoTM6Qbi2H7y7DvPQhOg/mPQuzUU7tJmTMat8fLpoIG/v5tDtWtdm6eFscVE6L71j3xemDLc91GNIDbAVnLqTOP5KOd5by+qZhgk5aHz09jelIwmp6bQQ0F0vlZn0LYGJj3G4ieOPg3KXNOUNLQzpubS/h8TwUpoSZ+fn46E+L6XsfuKWvi6W+lNeyS0RHcNjN+6NawFbtg7ZNQtRvSl8K0ByC4M0rSYYV1f/E93tEmbWidXkNaZhgxjFyXMiCVuHjiiyze3FJCvdXJhvx6bnplG4V1fSsmFtVZufmVbWzIr6eh3clbW0p5/Iss2h19l8o4bXi9sP0V+P4vYK2Byl3w9uVQva/7GNENHmfvcz1D3HeZMwqn28t3h2qZnHB8QzrWYmCfrNx9ziGKIjtLm7jp1a3sKm2mzurgf2sLeHVjUZ8l0SqabNz22nZWZtXQ0O7ko10V/OT9PTS1OyXDxdFHKRjn8VVtu3A7YN2fYfMzUsROyUZ48xKozTr+uTJnPC02J/vLm8mpbsPZo5Ta/ooWbn1tG/sqWqhtc/D3lbm8v72MPiMHRbHvcehoZeXBGv76TQ41rQ4OVrZy2+vb2V/R0n2Msx2+/Q1sf0mKiChcA29dCvX5A3+zMuccVruLp77J4ZWNRdRbnWwubOTGl7eSV9PW69jCOis3vdy9hn1zSwlPfJF11HJvg0pDAbx1GeSvkv4udr4GX/1MMpZBmvv7muddHae3nzLDCtmQHka4PV52FDWyJqfWp93qcFPQh6I3QH5dO21HGM1rc+oob7INWj/7RVuV5G3pidcD1Qe73/vHwvhbfI/RB0Jo+uD3T+asYVNBPVEBeiz9UPiMCzJwsPL49TBlzh6cbi/L91ayMa8Ol8fXIHl7Syk1rb1LWRU1WKk9oqzhwcpWSho7pBDY6Q/6niAIUp50f2kph/0f+La57VCb0/9ryJyRFNRauf31HSz97w8s/s8Gnl6VS2O7NNYOVrZ2iYUd5s3NJdRZHb0vpFTB5Ht7NbsyLuM/a/J82kQR9pY1dzc0l0Lu174nOtqgXh5/MqdGS4eL73PrWHGgyqfd5vKQ38c6tqDO2msNuyanjoqhWMPW54O92betaB00lUj/15lhxo99P1copUhLmXMWObT7NNPU7iCrqo2GdgcJQUbSws1d4VYFdVa2FjWiVyuxuXzLBui1fedJG/rIn9apFb3qpZ52VDopv+TIHXNtjzxAlQZm/RSCEmHvuxA+FqbcI4uNyZwQK/ZXHzVk7EhiLUZyawoHuUcyw4n8WisPvb+HH89P6fVZgEHtG+7aiV7d+9F4/eRYqpptVDTZGBcyg6grX4PN/5MWV9P/DyIz+98ppRa05t6LNjlP9azG7fHy+qYidpY0AVIO6faiJibFNdHh9BBk1DA10cKWwsauc4KMGrRHyxlNPA+ueQt++C+odTDj/3CGZRJs2k1Nq6/x7aMGrtJJef1HetLOrTx9mZOkzeYiu7qN6lYb0QEG0iP8MHTmQO+raGZ3WTNGjQrrEQZyX3o/fc21OrXi6GN+MOlr/lVppb+Xw6QtgcvVUlqEMQSm/xgix5++PsoMO2RD+jTS1O7k8S+z+HR3JSA5Mf53fSaLR0cAUNVs58t9Vdw4NY6XNnQv9qfEW0gL67v0QFqYH9OTgthU0F3W52cL04i1DPGCzBgEi56A92/sbgtMhIgjJpyAGMm7M/F2aXF5pLCDzGkluyGb5/c+T7w5nvvG3Yeu5wNkGOLxiqzOquZ3S0f26/hAgxq3V6SuzUHI8YR8ZM4KKpo78IrQYnORGGyksL6967NHLxpBiF/vMZ4cauLisZEs3yvN1bdOj2dHSSPLtpUC0kJv2Z1zyLx1MQgKaVPwRAiIhoVPwBc9PNuRmRB+dNV5mTOfFpuL1dndEWcpoSYy4wK4882dXW03T4uj3eFhf0ULggCPXJiOv+Eo40vrBxkXQ/KirnFoBB4+P43bXt/elcYf4a8jMzag+7yAOJj3W/j2191tcbMg9NhijTIyNqebF9cX8sza7jSA3y8dwY1T41ApFRTUtfPVvipunhbHs+sKuo4ZHxPAiIje69j08L7XsDFDsYYNzYDkhVJo92Hm/AosCd3vDYEw5hrp705QnvjcL3PWIVstp5FD1a1dRjRI4Va//ewA42ICiAzQE+Knpaypg4OVLTx8fhoNVgcBBg0LR4QeddEf7Kfl71eNZU9pM2VNHYyINDM2OmB41OBLXiipGVbskgzr6Elgie/7WHknfMipaa/hnlX3sDhhMfvq9/Hz73/OM/OeOa6y8VCyvbiRAKOGMHP/DH5BEIi1GMiraZMN6XOE0E5D+fVNxdwxM5GLNApsTi/npQYzKb7vSAZ/vZrfLMlgyZgISurb8TeoeX1TcdfndpdXygG8dRJG7Uk+RkddLs2HVXvBLxJiJoE58uSuJXNGYNKpmBAXyJf7pLDXC0eH8+zaAp9j3tpSwks3TaSksYOx0f6Mifbv61K+qH3nv+lJwXx073T2ljVj1qvIjA0kMaSHeJNCAeNulAzn6n0QECs9n02hp3yPMmc3+bXtPkY0wJMrDjEzJZjkUD+iA/RUtdjZUdLUtY4N99exaGQ4oX08p4fVGtYYDEv/DeU7oLkYwkZJCviKPiJC1cO+UJfMaUI2pE8jTR2uXm2N7c4uYbDkUBOPLhnBE19lsamggQC9ij9fMYaMCN8Hqd3lpqlDKsmi1yiJDNATGXDif9S1rXZUSgGLcZAMCkGAwDipxp5sKA97/rv7v0yPnM78uPnMjpnNX7b9heUFy7kk+ZKh7tpR+Xp/FROOoWjfFxH+OvLrrExPDh6kXskMJ1LDTDxyQRpPfZvDm5uLuXBUGDdMiSUzLqirnrjo9dLeWImg1mL0DwEgzKzj/JHhALy0oaDXdfPrrLQ73SdvSGtNkHCe9JI5J2jpcHH/nGQOVrZQVC9FSri9IrMSTMyIVLCtWmRtYRt6jZI7ZiYc/4JHQaNSMCEusCvlxesVqW61oVcr8dd3etD0/pA0V3rJyPSTZltvgVinx0uLTVrHjo3x74rm2VbUSHSgnuduyCQ+SFoD2pweWmwuAg1qtGrJQD2RNWyb3UW7w02QSYt6IMO/RRHaqqWUh5HDd80jM/yQDenTSHyQAaVCwNNDTWRiXGCXN02rVnLDlFimJFioa3MQGagnKcS3BMChqlb+sSqXTQUNTEmw8LNFqYyI7MeOdQ/q2ux8sruCl9YXotcoeeT8dOZlhHbluAwItYfg+79KJWGiJsKC38l5JMOYJnsTq0tX8+TMJwFQKVRcl34d/9r1Ly5IuACtcvh5b71eka8PVPPzRWkndF6Ev568mhNQWJY5o9FrVNw2I57ZKaGUNXfw79W53PHmTq6ZGMPN0+IJcNej2PsOpt0v4dUHYj3vd2hSF6LRd4cWjuxjjr1sfBTBg7UJKXNWUW918OmuCl5cX4hOo+ChBalEBejRKhXM8KthTN5zGA9s4JaIKRy4+P+IGMCw1vKmDt7aXMJ728uIDNDx68UZTEsMGvpavTJnJLGBBvy0Kh+BsAh/HdGdhnCIn44nLh3FLdPiaHd6SAg2doVpH6ho4e8rc9hR3MTMlGB+siCF9PC+0xaPRBRFthU38ucV2RTWtXPx2EjunJVIfPAAOGlaymHn65JArikMFj4OiXPlsG2ZfiHPpKeRtHAzL908gfBOw3lakoU/XTbKRwREq1YyMsqfOemhpIb5dXlMQDKA735rByuzarA63Hx3qJY73tjBnrImqlr6r3C48mANf15xiHqrk7JGGw+8u5vdpc0Ddp+0N8And8LBTySxscI18PYV0FQ6cN8hM6B8U/wNY0LGYNJ0b9wkBSQR4xfDZ3mfDV3HjsHe8mY0KgXRgScWjREZoCe3jzIcMmcvGqWSNoeL+9/ZRVZVG602Ny9tKOLdbSUosz7G+MNfoKMBRUM+pk9vxlG6w+f8sdEB/OXy0Zj1KhQCXDY+kpumxg2PFBqZYc+qrBr+tCKbOquDskYbP/1gLy6Pl3EWF1O3/wRj4QpwtKEvXs2kTfcQrWzq13VLGtrZUdxIaUN7n597vCKvbizihfWFtNhcZFe1cetr28mSKxfInCRxwUZeuXUiSSGSATsy0szzN04gzL87bNtfr2ZCvIXzUkO6jOjKZhu3v76ddTl1WB1uvjlQzf3v7CK3urXPEoRHklvTxs2vbGNPWQutdjdvby3lqW8PYXedYpksUYSdb8D6v4GtCeoOwbvXQNWeU7uuzDmD7JE+jSgVAvPSw1j+gD9Wh5tQsxaTVn38EzspbuigtNHXYK5qsbPmUC3vbivjhRsnkHkc9eJ2h5s3N5f0al+XU8uMgQp1bS6B6v2+bR0N0JgPgbED8x0yA8o3Rd8wI2pGr/ZFcYt4I+sNrkq7CoUwvPbdvtpfxaR4ywnncEf46yhpkOs+nis43R6W762itLEd9xG1hZxtDRgOvdbrHEXZFkjrDrk2alVcOzmWWSkhOD1eIgN0aFV9V1KQkelJh9PN21t6P3PXHKplptaK0HhE2kBbFTQWgn/UUa/p9Yqsyqrhpx/sod3pwaxT8a9rxzEvPcznuJpWe5dA3mE8XpHc2jbGxASc9D3JnNtMTgjig3um0WJzYTFqCDiaGF4Pihvae5UULKhr56v91QQa1VwzMQb9MaIi82vbcbh9De7DEWmJR0RunhDWGtjxim+bKELVPoiZfPLXlTlnGF4r43OEULOOxBBTv4zokoZ2vjlQzVf7KlEIYNb3nmiUgkBdm4OHP9pLQ1/1JnugUgp9evDC/QdQnVltAEUfE6JazpMejrQ528huzGZEUG/F1tTAVJSCki1VW4agZ0dHFEW+2lfF5ATLCZ8bYtLS2O7EfkSJOZmzk/xaK7/4aC/KPjZcbF4VHlNEr3avse9NxahAPQokI+irfZUU9FEXVUamJ2qFoivstSfh/jpJO6SvjUCNkaZ2Jxvz6vl0dzk7SxqxObs9b8UN7fz4/d20O6U5rNXu5sfv7qHkCM+0TqUg2NQ7/cA4kGlcMuckQSYtiSGmoxrRTreHPWXNfLq7nO9zavscc4cDen6/PItD1ceOEjP2UQLWT6dCpz7FDU2VDkzhvdv1Aad2XZlzhmFnSAuCECMIwlpBELIFQTgoCMKPO9stgiCsEgQhr/PfE1MYOgPJr7Vy7YtbuPftndy/bDe3vrqdv14+hpGR5q460RePjewqG1BQ106DtbcQRE+0KiX3zklC0yM/KtikYVZKyMB13JIEs37u2zb6aghJH7jvkBkwtlVvIzkguc88aEEQmBU1iw9yPhiCnh2dfeUtKBUCcSeRS6hQCIT76yg+SjikzNlFRbMNryhtIqaF+XouZo6Iwz7rER9VVq85CmKm9nmt3Jo2rnpxM/e9vYv7l+3msud+4GBly6D2X+bMRq1ScNfsRJ9nrsWoYXZqCAQlw7QHfU+YcBvt5kSe+jaHG1/ZykPv7+WK5zbz6e4KxM56VlUtduwuL2a9ilFR5q6c1ZpWu8+lLCYtf7x0FKOizF3fnxZmYlR/lMBlZE6BlVk1XPbsDzz0/l5ueW07z67L5x9XjUWt7N44unJCDGtzpHJw5U3HTk/MiDD3qrLw28UjTkpo1wd9ACz8g1Q+7jBBqRDb9zNARuZIhuO2pBv4mSiKuwRB8AN2CoKwCrgV+E4Uxb8IgvBL4JfAI0PYz1OioNbK5sIG1EqBbUWNqJUKZqUE80N+PeNiA5mdGsLaQ7VUtXQ/GNscbr45WM2U+ECumRSDUaNkVXYtW4saAYgO1BNoPL6Xe2JcIJ/8aDoHKlrQqBSMjQnoJWrWb1w2KN0C+94DXQCMuhKiJ8LU+6SJqCEP/GMhcizUZsG+90H0SnX4oifJYg7DgG1V20gNTD3q51MipvDIhkdotjcToAs4fR07Bsv3VjIl4cTDug8T7q+juL6j30InMmcu4WYdb94+iW1FjVw7OQaNUkmHy8OICDMT4wJRCSG03fA1Qs1+RLURMTITc1SaFF6b+y0Ub4SUhZC8gJUHbdS2dkf9tNrcvLutlJ/MT+H7vHpWHaxmXGwgNyQ58Cv+Fsp3QvoSSRnZrw+vh8zZQ0sF5H8Hed9C3AxIvQCCEgGYEHvEMzc6gKTQzmfuzIcgcbY03gLiqDCOYHOulXePCMl+4stspicFEx9sJNRPy12zEgCBvJo2ZiQF4/Z4e3ufa7M5r2o5s0IOYJ16ESX+E1AZQ1h1sIatRQ3MSQtldmrIqRsjMucUh3PzXR6RzYUNmLQqpiRY2FHSyLz0MBKDjfzu84NddcwBvj1Yw4zkYP582Wgcbi+NHU72lDWzr1zaiDxeVGSYWce/rx3PvvJm6tocpIb5MfpEN4SayyQB3PzVED9T+hu1JEDiHLhjlRTOHRAD9lb49jcQnAIjLoXwUSf2PTLnFMPOkBZFsQqo6vx/myAI2UAUcAkwp/OwN4B1nKGGdGWzjTvf2M4NU+N49PPsrsnmgx1l/GpxBr/4aB8PzEumvq13mHZhXTstRg2vbirhvtlJZFdJoiFGjZK/XTmGEL/jh2gLgsCoKH9GRZ3krrTXK+VxqTRQuRfeuaL7sx2vwu3fSHVRQ0d0l9Yo2QSvL5GMaICSjXDpcxCYCKYB9IbLnDA7anZwRcoVR/3coDYwNmQsXxV9xQ0ZN5zGnvWNxyuyfE8lD59/YmrdPQkxaXuFQcqcnagUAr9fnkVhfffv+6oJUVydGdVVfsUvaQokTek+yVoHn9wN5dul94e+hJGXERP9i17Xz6psY8X+KlbsKeX8eAUJWhHD5/8HISlSneidr0kLtIWPg6r/mhgyZxDOdlj9B9j/vvT+0Jew/0O4/n0whR79mWtrBlcHxJ8HyQs4VN3KVc9t5tYZ8T6HzUwwsSBGgcrVBhixGDXsLWthW7G0ib4ut445aSG+hnRTCRz4BEVbJRStxf/QckbOfZQfFc/m22zJC/jtwRouHRfJk5ePHtiqHTJnLY3tDh7+cA8LRkTw5IrsrvYPdpTxs0Vp3Pradt68fTKN7b2jI+vaHDyzJp9fL07ns10VFNS3Iwjwf/NSyAj3O+53n1SpV4dVEhFT6SXjOPtzqf3Ql3Dwc7j0f6A1Sw6g6Imw9QX4unOeN0eC2yF5q8N6p77JyMAwDO3uiSAI8cB4YCsQ1mlkHza2Q4ewa6dEbk0bJp2azYUNPjt2XhH2ljWTFGLi+e8LmJnSO09vRnIQu8okRc/XNhXxzLXjeeuOyXz1f7OYlnQa6uK2VsC6P8OzU+DFOZLCYVRm9+ceJ2R9Dm8shRdmSmqIdivseafbiJ5wG8TNlJS8X5oLBz+TPNsyp50OVwclrSXEm+OPedzUiKl8lv/ZaenT8dha1ICfTtWlBnoyhJq1FNXLhvS5QF6t1ceIBvh4VwWHjlUCrT6324g+zMFPuUizg38u8F3wXZ4ZRaS7nJf9X+G2XVcwe8/PUM79FXQ0wrYXpdBBUwg0FQ3QHckMOxoLu43ow1TuksZRX4giFK2XNpefmQBf/B805LO/vKWrrJBerUQhwEsXmnjR8CK37rqCqC9vgLKtlDXZuozow6zLqaPo8OZgcxlsfQ62PAtFG2DWzyB8NMqNTzM9xPdZ+9meSorluVCmn+TXtqNQKFhzqMan3eURKaxrJ8Jfx7cHq5mRFOTzuUohdNV9/u/afJ67MZO375jMFw/M5L45iZh0g7DJWLkH3rsensmET+6C2Mmg6rHZVLYZDnwML82BA59Ifzfr/ix9lnExjLwcdr8Fb14sOYlszQPfR5kznmFrSAuCYAI+Bn4iimK/azUIgnC3IAg7BEHYUVdXN3gdPAW8osiM5CDO66yjtyCje0/A4xVRKsDtEaXwmIsy8NOq0KoUXDsphgark9bOwveiCAEGNbNSQgamll5/2PcBrH8KHG1S7b2Vv4H0pb7H2FulslfWWmmBUL0HPJ1CKeYoUKpg1xud1yiDD2+Bil29v8tplSbC0i2Sh+gsYLiNz6yGLGL8YlArj/0Qy7BkUNNeQ1HL0BsDH+8sZ9oRD+kTJcxPJxvSfTDcxudAIIp9tHW+jn5S3+VYlK3lXFT7Auen+qNVKfi/ecnMTdAzK/fPmPI+B7cDoXovfHo3xE2TvBm530oRPNZaKNsG7fUDcVvnJMN2fPY1yAC8XrxekYJaK1uLGig5POfUZkkbyTUHwG2Hve/CykcJ00vj7t1tpTx8fhp/XxzJfE0WhugRMPoqhKrd8PYVRHsqjt4NUZQW/1uek56hzSWw+veSUSB6UfaRDXPMvwWZfjFsx+YAo1LA4tERzE8P485ZCZh13ZEMXlFEqZDSFX970QjmpUvRhtGBeh65MJ0PdpRJx3nBT69mZkoIo6L80akHIRqipVwqY1X0veTgKVwjeZvH3eh7nOiRjv3oNmmeFr2g1kNoOmz+r+TNbq+DLx+S0nx6Ym+T1q5l26SyrzLnJMPSkBYEQY1kRL8jiuInnc01giBEdH4eAdT2da4oii+KojhRFMWJISHDM2Q4zKxjS2Ejjy3P4l+r87C5PNw0NQ5BgMy4QHJrrFw8LpKEYBO3z0zk24fO49MfzSC3po0Pd5Z3XefOWQlEBZ68V+6E6WiUitYfSUs5GDrVkxVKKefE2mO3cvc7MPIySZ00cTbkfN37GuXbfN+31cA3v4YXZ8Or50se7tpDA3YrQ8VwG58H6g8c1xsNoFQomRQ+ia8Kvxr8Th0Dm9PDyqwapp9i9EWYWUfZccRNzkWG2/gcCFJCTb0qFSweFUFK6DE2H4OSIeSIUL6E2VC1B3XeV/zzgmC++9lsfrIglXCxDm35D77HumzdxtX4G6G5FN5YAq8slAyoo3kqZY7JsB2flkRIv8i3LSQDT1AKy/dWsvg/G7jmhS0seWYjaw/VSr9/zxGhrzkrmGKqQ69WUm91UltVwsV1L6L49pfw/VNShMScX4OjDX9bCeOOKF81PSmIhGCDtOjv6zndUY9n5kN8X+ObR71oRBjxFrmixqkybMfmAGJ3udlT1sLjX2TxpxXZfLyznIcWpnZFT6SEmihvsnH/3GQyIsz87/oJfPHgDOalhfCvVbldgmIPzEsmwn+Q8/Ibi6Ct2retubR7rQpS+mFL95qa0q2QeTNETZAiOY7kwCfd/28phy8elKIqX1kIy66C+vyBvQeZM4JhlxQjSOpBrwDZoij+o8dHy4FbgL90/vv5EHRvQFh7qJY9Zc1d73/Ib2BygoVnrhvPyoPVPLZ0BAtHhKHXSPl7h/NC/njpKD7aWc7BylYuz4xiblooSkUf28udeL0i2VWt5NS0YdAoGRnpf0rhsKh0EBALTcW+7cEpkHmr9JnbAR4HpCyCvJXS54FxsOtNWPRH6GgCvwjfyQvAdESkftlWyWt9mLps2Pw/uOgfcBzvqUz/OVB/gFhz/2p7T4mYwqsHXuX+cfeftMjXqbIyq5rkUBMW46mJ1AWbNNS12XF5vF3hZjJnJyOi/PnH1WNZsb+aAxUtzE4LYXZqCEGmvvUkrA43jvoagkZcBK4F0iZf5HhAkEJlDRYUWgPRhzcxNUbQmCTvX0+UalBqpDy73W93t1ftkebDBY+DQh57ZwVaE5z/pCQylv05JMyBUVeQbzPx8w83dNUvtzrc/OT9PWy7xkSvGgn6QLRtpXx033ze3lzMDeHZqFYt6/68LgdqDkLYSNSGAP55zVhW7KtkbU4dCzLCuHB0OFXNdvLa7GSaY1BYfUNvCUxAmXExvxxhZERUJT/k13PhqHAWjQzHqBt2S0GZYcihKiuPf5nV9b6pw8WrPxTx80Wp+Bs0bMqv44WbJjAtUYoY02uUjI4KQABEBPJq27h6YgznHaVKjNXh5mBlC2WNHYT66RgVZcZi7F1NpF9o+8i5FhQQMwXmPwYaAxhC4PP7uj93tEJrJWRcInmZjyQoqfv/xRvg4Kfd7yt2wt5lMO/RvkvayZy1DMfZcwZwE7BfEIQ9nW2/RjKgPxAE4Q6gFLhqaLp3arg8XlZn93am59VY+fH8VBaPikBxFON4RKQ/v4v0x+sVj3pMT7YVN3LTK1txeaSHeFKIkVdvnURc0EnuPmsMMPuXULoZPC6pLSAOEufBwU/gy590HzvuemnCasiXPDnr/gy5K6SdvnE3SovJw9cIjO9dbqbmQO/vL1wD9hY4So1XmRMnuzGb6VHT+3VsvDker+jlYMNBRgUPjYrlu9vKmJV86r9/lVJBoEFDVbOd2KDTGNUhMyRMTghickIQbrcHlerodUc9XpH3t5cy2p5H0ManYOr9EDpSSmnpkEL3SiY/higGEX/4pMA4mPMrKc3lMEnzQKGSNg0b+0iHyFsJ5z0CuuML7MicIQTGwbQfwZR7uzZIqnNqu4zow7TYXDSbRxEWN10S4TzM1Ptg99uMvG4Jf75iLOJ3y3t/R8UOmHA7BMSR4G/k/nkp3DcnGYVCIKuyhcue3YRXFFm++CdkVN8K3s6UKksSJM8HvzCS/OChhan8eH5Kv9YRMjKHqWzuHcVV1mhjZkoIaeF+XD4+qs8xNSoqgFFRAcdcu3q8Iu9uLeVPPQTMrpscw68WZ2A+mfzp4FSY+iNp8/Mw0x6A9U9LudEgbXLO+LEU8REQJ4V5H/gYclbABX+F3K+7N0j1gTDiku5rlWzu/Z2530p6BBo5wuNcYtgZ0qIobgSONrvPP519GQzUSgVz00J8PNIA0xKDcHm87Cpp4t1tpXi8ItdOjmViXGCXsuxh+vPwa3e4eXplbpcRDVKd6V0lTSdvSLdWSbt1F/5NUho1BEHMZEmAYf1TvsfuWQbXvSeFSGpMksfZWgvlO6Rwmzm/Ar1FEuKJGC+p2/YkbGTv70+YDTq5/uVAYXPbqG6vJsIY0a/jBUFgUpgU3j0UhnR5UwdZVS3cNzvp+Af3Aym8u0M2pM8hjmVE11sdHKho4alvcvjXXItkCG/5H2TeIhlHXjfVgRP4xwEzj2e6IW+VFDWTcr5kGM//nTQvKrXQWCDVIp39C/B6JAXnniQt6L3Yqs+HrM+kkMKMpZB6vlSKRebMokeUQZi/DpVC8DGmzToVTm0ITH8QEudKEVxqoyTSmXJ+lxiSED6697Vjp4K9SQpR9Y8Clw1F6RbEnW+QgJoPLrycn/yg4e6N8Mfz3iNTV4mfnz9EjsNhimFHfj3LtpaiUSm4dnIMmbGBckSOTL+JCOgdxRMdqMfh9vDrT/ZT22bn2kmxTE209Ckedqy1a3F9O3/7Nsen7d1tZVw1URqnJ0T1fmnzU6WDK14FZyuYoyUvc1kPA7i1EpQ6uPodqVTd+5350y4brH4MZvwfmMIlJ1L4WAjpUSY0dqpv1CRA8gJQy+uJc41hZ0ifjTRaHXS4PIT4adGqlFw8NpI1OXXs7TSmZ6eGcF5aCLtLm7j2pS1dqXVf7KvinTunMOMYHrjmdif17Q7USgVRAXpUnQ9Fm8tDaWNvMaXaPkpq9Qu3C374t6QEehj/WLh5uZS73Jc4j9YEhmApXObqt6UyWY42yZDWmmHsdaA+SrmumCkw5lqpPjVIBvn0B+Sw7gEkvymfKFMUKkX/p4HJEZP5165/8fOJP0epOLpRMhh8uKOcaYlBaFQDs/AL8dNS2tjBjAG5msxwp6XDSavdTZBJ06vUjyiKvLutFKfbi9PjZWujkVkL/4Zp9SPSYkltIH/2M9zznZa/XZmGoXwjfHC9dHJIuiRoU/S97xemL5Xyo+tzpf8f+kJqDx0JE26RDC63Q9KDED3wwU2SCBVA0Top8ufiZ6RFnMwZSVKIib9cMYZff7Ifp8eLXq3kH9eMIybIAIpRsOO1rhQoMXI8HemXo3Z70NgbICQNRl0JBz6SLmZJhJAM+O4PEDVRaivZBG9fjgDogbHZH/H0/He5/EsPt3wD982ezCNTMwDYllfHTa90h6t+vqeC9+6exuSEHjmjMjI9qGm14/aKRJh1KBQCaeF+/GZJBn/5+hAer4hZr+KPl47ille30dQhRRiuzq7lmevGs3Rs5FGu2UGLzUOATk1oj9rR7Q43Tk/vdWSbzXVina7Pk1S2O3qo2s9/DPxipJJXPREEydETMVpy0lz8jKTybW+W1q1qI4y+sm8Pc/wsSFsCOZ26MWGjYfwNclj3OYhsSA8iHq/Ixrx6Hv18P+VNNpaMjuCnC1NJCDHx2q0TKaxrR6EQSAo24m/Q8L81+b3EP9/aXMz0pKBeOamiKLK9uIkdxY28+kMRrTY310+J5e5ZiUQG6gkyarh2Uiz//i7P57wjBUr6TXMxbH/Jt62lVNrdq94L/tG+ec+hGVLo9msXQv0haaf95uVSTT9jsJRXfSyj2C8cFv8dptwtqZpaksEv7OT6LtMnec15RPlFndA5kaZI/NR+7KjZwZSIKcc/YYDwekU+2FHGg/NSBuyaQSYNZY0dA3Y9meHL1qIGHvv8IDk1bcxJDeGXF2aQ1qNuaUWzjWfXFnDR2Ag+vMzM6INPot1ehnf+Y9iM0dTqEqgknBdvMlBR24Sw5V/dF6/NluqPlu/oblPpJO9F9pdSTdLwMdIizRwN4aOkCJ36PFj7pOSFnv+7biP6MAc+gpkPScfLnJGolQouHRfJ2Gh/6tocRAToiT8cARMYC5e/jLc+lyarjWX5Gr7/uIrnJu8lJMAsldvxemDRE2AMk9Kd1v5JWtQbAnE6nSg3/w+f7UzRS0LNSmItSylt7OgqiSmKIm9sKvbpm1eEz3ZXyIa0TC9abS6+3FfJU9/mYHd5uGtWIjdOjSPMrOOWaXHMSgmmsd1JdKCB9bm1XUb0YZ5Zk8fs1BDM+u41ntXuYktRIyv2V/Hl3ir89Wp+tTidC0eFo9eoiLboSQk1kVfbrTXhp1WdeARl5R5fIxpgw9+l6KDk+d3zrEIFC34Ped/AN7+AsFHSmvPeDZIOkCEIglJAdRQ9loAYuPQ5aMiT1rpByVKZQ5lzDtmQHkDcHi9F9e3UWR2Em3V0OD3c/sZ2PJ1hXV/sq8LpEbl/ThJuUSQlzIS//jiiSYLQp7BTXm0b5U0dPNUjFOb1TcX469U8tDAVQRC4emI0VoeLtzaX4m9Q8+hFGYyN6QyNttZK+ctKjZRLojMfux+eo+wKCgophOb8J2HX65JIWGQmzP+9pGLotkvH5X4jTW43fAT6foZn6/yknGqZQSG3MbffYd09mRQxieUFy0+rIb2poAG9WknCAJZ5CzFJHmmZM5N2p5uCWisdDg/xwQbCj6ICW1Br5dZXt2NzeQBYm1NHY7uTN2+fjMrZjLsmlyCNhnVXCLS560isWI6iRPIuK1b+BqPWj+2Z7/Dsvkb+cdVYPt5TwXSxx5ycs0IyhPVBkL8SgjNg8VNga4EPbpTUu1srpHy7CbdDwixwdsDK30m6EdA9T8qcdaiUClICBFLcpWDtAE0SmDvnXb0/+0nhqXW7uTWtlZtntuOv1cGm/0JJZ6mdgu+kTefzHu4U9rwFm8tDTmUrIzwiR8YFqVVK7p6VgEmnJjLg2MrIsvNMBsDu8lBQZ6XF5iLWYiC3xsqvP+3WqXlmTT5mnYqJ8Rbiggykh3evFx3u3l5kQeidn5lf28bmggY+2SWVbquzOvjpB3uJDNAzNTEIi1HLM9eN58mvs9mQV8/oKDOPLR1JvMEOpfuliwSnSAbusXC29dEogKCWooGmPSBtUo25Gva+163HU3MA3rkS7l4PCecd70cmofeXNlFlzmlkQ3qAcHm8fLa7gl9/uh+XR0SnVvDYRSO6jOjDrMyqJiXMxH/X5DM3LYQnLh3Vpf56eWYUH+woo+cpN02N6/VdoiiSU93WFRrekw93lHHztDiCTFqiAg386sIMbp+RgEalIMSvM4ymLgc+uEVSwgYp7PDCv0he5aOhUEshLnvf627zj5byS+Y/KomN6fxh5k8lg7m9pvfisHwbtJb335CWGVRym3KZEXXigc1Twqfw2KbHsLlt6FWDXMKik/d3lDIrdWBF5kJMWn7Il2v6nok0WB38c1Uub28tBSAyQMfLN09kRGTvuaW4ob3LiD7M3vIWHHUF6L99EOPIpbDjVfRNxYQBpF0IY66Bfe9LBzvaSFTWUNxgZGNBPZmJ4RR77iK5Yqv0ueiVPIV3rpE8Glo/MATCrrd71xfe9y6c9zNwObqNaJDSXULSpLn5MKOuksJ5Zc5srLWw5o/d+ZT+sXDdu12RBva2Bv4dvpLg9Z2iSFe90W1EH8bjAlOEVFJr55t8Peo/FDoa0CXfTHrxmu7jFEpc6Rfzu9cP4hUlj95LN09kalIQt0yP9xE6VQhw6bgTi0iSOftotbl4eUMhz6yVIiJHR5kZHR3Q67hPd1eytaiROquTf10zrmtTe0qCBa1K4WNQPzg3Bb8e3uiS+nbW5tbzxd7KXtfdU9bM1E6V7/QIM8/dOIGmdid+OjX+tnJ4977uvObY6XDps1KJ1b5wtElRjwaLr1d68l1SFNBn90rVZSbfI+U4H1kmzmmV9C2CB0aHRebcQFaZGCAK6qz88pP9XeJedpeXhnZnr+OCjVqaO8Ng1ubUsTq7hgarlLc8PjaQd++ayuWZUVw8NoJld05hYlxvkYWShg4e/eyAz0R1mNggQ1fZLJB2w6MCDd1GtNcr7cYdNqJByt3rqR7aF2otqPSSImHiHJh4u1RvrzEfnO1Snlfut7Dhadj5Gjj7qNGrMclCDMOIotYiIk195zEdi0BdIEkBSawuWT0IveqN1eFm7aE6picOsCHtp+2qaykzfLHa3WwuqOfdbaWsOVRDXZudveUtXUY0QGWznX+sysXm9PQ636+P0j7RAXr8ClegwS0J0PQs6ZfztVTmROh+PNoURtRKAZdH5M3NJXzbkUb2/NewpSzFPvpGxFu+kkIDA2MlIxokIcUj8Y+R5kCNHow9wgB3vSkJjM3+paT4veSfsOAxOT/6DKLV5mJT5zhdl1NLvdVBTnUrLflbfEWJWkolcU6XtNGc5i0keG8PZWGXTVIIPgJRpaHWkEjWzP/w8Ld1qJUKfrnTzMH5b9KRegltGdeQc/67/OeQf9dmfJvDzU8/2ENtq53J8RbeuXMKF4+N4IrMKN69eyrjYgMG8ScicyaQVdXKf3qkFZY0duCn7T1nRgToqGtzsLesmU93lePtHGSjogJ4/56p3DQ1lvNHhPHKLROZk+ZbzvTrg9XsK2vpM0Ii1M+3vJVRoyI60IC/Xi3lNPcUByvdBIe+OvrNKLVQtQ+mPSjpUyTOhdmPQHAafP1zScW+sRB++KdUOUbVh0bP8aIzZWSOQPZIDxA1LfZe3ufihg5mJAXxQ4FUNkUQ4LYZ8bywvrDrmC2Fjbg8ItdNisGkUzMlMYgpiccOXam3Omi2uXF7vMQHGShukMJTNUoFP1+UivYYyrQ4rVKo2JFU7JRCXY5GQKyk0L3i51IR+9xvIGKctBj09hH2XbkTRl0hlRI4zPlPSqWuZIacNmcbVqcVi+7k8uOmR07no9yPWJq0dIB71puVB6tJj/DzybcaCAINGlrtLuwuDzr16RVOk+kfXq/I+ztKeeLL7o2/S8dFMia6t+d5a2EjLTYneo3vYi0tzI+HF6Xy5pYSalqlTcvfLR2BdtvfJS2HwnW9v7itRoqwsTXRNvJGvqzy56apgXxzoJqCunZsQgRLVmiZFH8/T8wfRWqPfOsuIsZJqSkVO6X3CiVc8GfJWwJS9YOPb5O81qIXKvbAZc/D3F+dxE9KZihxeby8taWYv32b29V22fgo3G4Pv7YcotdoLd4ItiZQR2ByHFHvedN/YM6v4euHu5rExLlsdqbwUm0inmovHq9IU7sTu6jmohUqRkTchVeEB0cks2z7Hp/LVbbYaexwEmrWMSM5+JjipTLnHlUtvpGDrTY3eo2ScLOW6s750qBRMj0pqGsezqu1UljfTnKoCYBxMYGMizm6sva6nFq2Fzfx2yUZZFW24vR4EQS4cGQ4UxOPsQbJ62OzvuA7SXi2L1QamHovvLFU0uIxhcK+D6WoSVuz77H73pdqPvcsWzjuRumZICNzAsiG9AAREaDvVeZiVVYNT142ivNHheP1iph0Kl5cX0hLpwqhWimwdEwE63PrueW17SwdG8GiEeHHzWsK8dNKIVsbirh1ejxmnQqPKDInNYSyJht/X7mF+CAj102OZeyR4mIakyT8Ve8rQkb0pOPf5MjLpHqUjQWSAR06EtoqpdySPct8j/W4IHaG5GVxdUjnhY+Rk7KGCcUtxUSYIlAIJxeUMj50PO8eepfC5kISAwY3/PTT3RVMTThOXtRJoFAIBJm0VLXYBzT3WmbgKG5o56lvfEuifLankoUjegsPTk8OItDgqzlxoKKZbw7UsKmggSsyo5kYF4ifTs3IKDO2mgUYcz+V5r6sz30vFjsVR3gmDYKFz2uCCfP3x0+vIq/WSlqYiakJFlJDxzEi0kxy6FFqQQdEw9VvQdVeSQE2JE1Sdj1M2mK4Y7U0FxssUnkVWazmjKS4vp1/rvJ9pn66u4KfLkhBEZje+4T4mVL0lqMN1chLfD+rzUJsq0K87n1oKsajC8JqGUl1vZk7Z+rIrW1jfV49b2wu5sYpcVw4OgJ/nYoJ8RYEeuesxlj0BBt9vX4yMoeJ6mO9ueZQLX+6bBSVLXbcHpFWm4tn1uSjVSn4v/kpVDbbeOTjfVwyNpKFI8OIOIo+xWEWZISxpbCRF74v5MH5yejVSiID9CzfU8lvPjvIrdPimJxgQX9ENQXSLpAqGPQkZdGxbyh6Itz5HdQclAzrkAwpvUKh6q6rDpIyd/gYSQS3tVwqcxUxVi6xKnPCyIb0AJEYbOTpq8fyi4/24XB78dOqeGBeMo9+fpDGdidBRg2/v3ikT9mVXy/O4M8rDlHeWeR+Z0kTBypa+eOlI9GpVTR1OGnpcGExarq8cTanBwXw9NVj+ekHe9lX3sy0pCCmJwVxoKKV3y0/CEie7s/3VPLJj6aTEdEjVEWhkEqvlGyCyl1S25hrIG768W9SrYfYKdLrMP6RYI6CcTdA9nLJ2A5OlWpEL78fEODWr6R8FJlhQ1Fr0UkJjR1GpVAxK2oWb2W/xWPTHhvAnvnS3OFkV0kTt884Sk7UKRLqp6WiySYb0sMUm9PTp5hNgEHNnTMTeOWHIkQR4oIMPLQgFW2PyILypnae+DKbrUVSrtyu0iZGRJh54cZMDBoVttiJUPyt5DmuzZbKVAGezNvoCJ3AlrwaNld6eGd/Aw53HdOSgrh0XCS3TI9nfH/rmvpHSa++UGulRZ8sVnPG0+H0+GyiHyY2yMCy0hBuGX07lgOvgSgiBiUjxE6Hbx7pPLkez8yfofzhn1JkgjmKwtAFLHy9Ga8o1REPMVXywb2xaFRKLEY1c9NCWJtTx1tbSpiZHMSTl40hNsiAzeXm8UtG8sSXWbg8IhajhqevGkdwZ/hsTasdu8tDuL/u2JFrMucMIyLM/OL8NJ5elYvHKxLqp+Wy8VHc89YuRkSauW5yLOtyamnucHHXrETe2FTcVUZ1Z0kTebVtPHrRCGwuD03tLgIMagI6NzTr2ux0ODzMSw8lu6qVYJOWNrubSH8d9y/b1RVOvvZQLa/fNqlXSDhpF0Lequ4oyqT5UtvxCBshvQ5jSYBLn4fCtZLQX2ORFC304c0w5T5JyE8hZ7rKnByDbkgLgjAGiO/5XaIofjLY33u6USkVLB0Tyagof8obO9hS1MDz6wpo7MyTbmh3kl9r5bLxkdw1K4HqVjteUewyog/z8a5y7jkvkWabi99+doCc6jYyYwN4/JJR6NVK/vrNIVZm1TAy0syrt07ktR+KeWZNPu0ON8v3Vvlcy+bycKCixdeQBsnQveFDKVdEqZYk/rWmk795c4QkVpZ2IXzzKynfL+E8Sbn7u9/Dwc/6Z6jLnDYKmwsJ1Yce/8BjMC92Ho/+8Cj3j7ufYP3ghAuuOVTLyCj/QQu9DjJqKG+SlbuHK9EWPZmxAewqbe5qM2lVRPjrmZpoIdCoweH2EOqnxdBDGyK3po3NBfVdRvRhsqpayalpIybIiGb7i2AKA48DZj8MtmY8Sj3FujTivvwRC8u3MM+SwhWLn+Cm7zRsLmjgo3un9d+IljlniLHoSQ/341B1t2JwgEGN3e3l35sbiV10NUuXTkbTUozQ0QDWGqkUT/53kL+axviLOTj3ExL8vLQborh6WbGP6Gid1cH3OXWUN9l4c3MJv794BPfNSUKjVJAQYpLySQG9WsX1k2OZlhhEY4eTqAA90YEGHC4Pq7Jr+MPyLBraHVw0JpKfLkwlXt5APOcx6VTcOSuBzNhAfiiop9Xu5m/f5uD2iuwrb2HJaBd3zEhgelIwJp2qy4g+zLJtZVw6LpI/fJnFvvJWRkSY+esVo6ltc/Dbzw5Q1WLnZwtTiQzQ89KGQuItRpo7nL10GF/bWMzM5GBUyh4GbWA8XPmaVGIKQSoxdTJitUq15PAp3wH1ORA1CWKmStGSP/wTxl0vlbOSkTkJBtWQFgThVWAMcBA47FYQgTPakK5vc1BQZ0UQBJJCjASZpN1ehUIgKcSESiFw91s7e3lSFAqoarbz8oYiypps/GRB75q4AtBmd3HH69tptUthKEX17eyvaKbd4WFklFSPEuDlDUWszJLyq6wODypF77BpZR9tgJQ/YjwF46ehUKotrbdIhnlTKRSslSYkrVm6trUGrl0m5aaU75RKF8hCDsOCwpZC0gLTTuka/lp/pkVO4+V9L/PLKb8coJ758s2BasafbO3zfmAxamTBsWGMv17DX68Ywz9X51JQa+W6ybGEmnXUtjn4/RdZPr+722bE89slI7A53Tz62QGmJfWdDqBQCIiiiEKllqoN9Ajrdi76G/Gb7kfZIHmnlY15jFx3B59d+gHXfyXgcHspLCkhyl2OVqOWVGI1RmkONJyE3kBjkSR0pg+QrqGRDZszEYtRy7+vHcfTK3P5PreOsdEB/HpJOtUtdoKMGqY6N6NZ/gffk+Y9Kj0zRS+CUo3C7aSqwUqEOZJQPx2PTodxfi2oTSFsbw8mIxjmGSr50ZVuOhQFeGx+xKWOBZWvdoRKqSAlzDfd4EBlCw8s2931fsX+KqYmWqhotqFVKUgKMRFoPE4pTpkzmtpWOwV1Vml8hJq6vMYAGpUSnVrBM2vye50XY9Fz99s7sbu8/Hh+7zWrQoAfChrZV94KQHywgYK6dorq25mfEcbnuytwerxd1+5weXrpCQGoVX2Xej2pElNt1VLKjFItCY3Zm6FwDYy4RPJOOzvA1Q7XvAsV2yWDWkbmJBlsj/RUURRHHP+wM4fCOisPLNtFVpW085wZG8A/rxnnUzQ+OtDA/XOS+cfqbuGRqAAdF4wMp6nDxfOdYmP1VieJwUYK69u7jls6NpL8WiutdjdKhYBeLeWk/OmrQ1gdkmF93eQYMsLNPP5lVtd53x6s5t7zkvjLN4e62sw6FbGWQVB9LdoA710nLSIFAc57BGKmSLksDQXSMTFTIHIcfP9XmPsbeOsSSXxs3m991WplhoSS1hLOi+5nrcRjsDhhMY9teoxr0q8hwX9gw6+dbi+bChq4bPzglWgJNmkpk2tJD2tSwvz425VjWL63ikc/O4DbK6JRKvjxghTe2VJCndWByyNK0TyzE2mzudla1IhRq2JmcjAbe5Q4y4wN4Iu9lSgEgTmT7oCsT7tLVAkKHH4x6BtyfTvgbCe2fj0fz0nmUEMhkXt/izbjfNj1FjQVScckLYCl/zoxr0bJJlh2jZQ/DVJFhBk/kTcbz1DSws38+9rxNHU4EZBq7zrcHq4ZayGq6KPeJ9QdgoA4CB+NuW4H5+16RWrfF8U3S55G8+mdkjioIBB20QuoN76NpmQ9AJagJBh7HV5bNoqx10q5oMegoLbd5/1DC1N5/vtCSjvnvjmpIfzpstFEBZ6ecoYyp5e8mjbufXsnBXXSODgvJZgnLx/dVXoVICHExJzUENbl1nW1nZcSDAjYXZJTqM3uIjpQ77OBef3kWFbsr0KrUnDtpBiyq9v4yft7ACnl5pEL0/lqf3e0ZF2bgwUjwvh8T6VPOsTN0+KO7vg5EWoPSevTxk5R37SLIPMm2PpC91ybeTM0l0kRIcEpsOxquPZd33BwGZl+MtiG9GZBEEaIoph1/EPPDL7aV9VlRAPsKm1mzaFabuvM4SxrbGdvWQtmg4oXbspke1ETgUYNi0aEkRLmR15NGxqlAqfHy7KtJfxobjIdDjdlTR2kh5uparHT0O7ioQUpnR5uI099k9NlRAO8u62Mf187jqhAPSWdit3NHS4CjWoePj+NPWXNBJs0xFoMvLKxkJGR/j4lsQBsTjdVVRWYGw9gtBajDE5EEzPx+GI31lr4/AHJiAZpEbr/A0mB9LARDVC2VRJUAdjyLIy+Siq7lbEUkhec5E9fZiDwil4qrBWEGk4ttBskr/SSxCX89off8uYFb6JUDFwI9q7SJiL8dT475wNNsEnLzpKmQbu+zInj8YocqGhhf0ULSkEgxE+DRqXoMqIBvKJIu8PN3eclUtPqwE+nYn9FM1qlgiqHmwCDmjWHarl5WhwzkoPYVtRESpgJj1fklY1FbMir56v7pxJ881fYd72HoFBQFX85gUpRKoni9lWyRaEkbNPvMWTei87VLOVUHzaiAQpWS0rM46475r1lVbayr6KZdD8nY1f9H8LhhR1I4lPJ8yHuxGu7ywwuOdWt7CtvwSuKjI7y77NeOYBeo0Sv0bM+t45l26TybL9fkobDlo625qDPsd7ABFp00ejjMtF9dFP3B8nzUX/7C8mIBlAbMDbnQKcRDUjP2sZCFHvfpyFwNJ9V+qMUBMZEB5DZR8nMAEO31zo51ERuTVuXEQ2wLreOLUUNXBEYfaI/Gplhjtcr8t72si4jGmB9Xj2bCxq4aqKB4vp29pY302Z3c8/sJC4ZF8nKrBpmJAczOy2Esobu897cXML9c5NptbmoaLaRHuHH2Gh/wv11CIBOreSNzSVdx5c0dLCvvJlx0f5s7qxec9HYCF7ZUMQjF6ZzoKIFt0dkXGwAfjrfyAqvV6SkqgZTwz6MLfkoA6LQxk0C8zFKdno9sP3lbiMaQGeCVb/tNqJBSj+c9yiseUISm2yrhi3PwUX/kLzYMjInwGAb0m8gGdPVgAMpclkURXHMIH/voOD1iqzPq+vVvrmggdtmJFDR1MHdb+4ku0ee1LM3ZLJ4tCTq5PR40GuUXSWwvCL8d00+956XiMWg4Z2tJYyM9Gd6UhC//+IgrTY3D8xL7ipv1ZPqFjsPL0rlx+/vxeMV0aoUlDd18Oy6QlLDTByoaKGqxY5Zp6LF3rskzI78SkYe+i+WfS9231/mbSgu+KOk7H00OhqlkO6exE6T6vsdSUMB+IWDwwqR48GSCM3lR7+2zGmhtqMWg8qAXjUw3of5sfPZV7ePZ/c8y4OZDw7INQE25tUzMnJwvXMhfloqm+XQ7uHE9uJGbnx5a5fRHOKn5bGlI3y8F3fMTOCLfZWUNUq/O0GAZ64bz4GKZv7zXQF/uXw0/1tbwJubS/jpwlRq2+zUWW0EG3UEmzTUW53UdXgJS5hBkWYkf/82h39HFeC//imY+iPY+A/piwITpHqkNQfAYEFfvUMKwa7e391hrR9ET4a2KnA5JO9gHyGKe8qaufbFzdhdXp6eb2RcQ16vY2ipHLgfpMyAcKCihWtf3NK1ma1XK3nv7qm9K2L0oLqzpJBKIfDdoRouXvhjtEXfSSGmgMc/jvKoJdzwWSNfBJaiAwgfLZXr8Y9BaO6ukY5fhO8mddeX7IegRBqrinniS2mz0axX8fLNE5l8RJWDMdH+3DEjni1FjUQHGsiqbO11uX3lzVyRKRvSZxs2l4eNefW92veUNTMtMYibXtlKWaeHWSHAa7dN5rkbJ+DyeGlqd/DtgWoWjw5nxf5q3F6Rf3+XxyMXpKFUAKLIW5tLWZdbR6zFwLg+/iZ2lzbzyAVpWIwaGtudhJl1fLijnB0lTcQHGVApFXy1v4pnrhvvoz+xv7yJsEPvErLp911tnqQFKC97/ugOH2cHFPfYcNKapXzove/1PtZlk4xolVaKDCnZKK1VDbIGhsyJMdiG9KvATcB+unOkz1gUCoHzR4azvdjXgzUnTfqjPlDZ6mNEAzzxZRZjowM4UNHCKz8UYdQoWZARxh8uHkmd1YFWpaDB6iDUrOPGqXEcrJB2vltt0kO7tKGDtDA/cmp8r+v2irg8Im/eNpl6qwOzXo1XFPF4RbJ7eMxnpYT0KglT3WLDXZuHZf9Lvve36zWYcDNEZR79h2AKlcoJ1GVLi8VZnUXuY6b6Li5BCpkJjAe3A7a/ItWhDko6+rVlTgtlbWWEG8MH7HoKQcGdo+/kj1v+yNjQsQMSMg6wIa+Oi8YcY/d5ALAYNdRZHXi84sCElcmcEjanh/98l+djNNe1OShp6CDQoKapw4UgSJ6/w0Y0SIEx/16dx8/PT2XRyHCe/76Q6EA9985ORKNWoFQI5Ndayatt46IxkZi0SgINatYequXDnWX8fLo//l88Cu31UPQ9XP6y5Jko+QGyv5By9EIyaFcG4r/rWSnapu4QjLxc2iAsXCPNf/vehYYiGHsVhI3q0T+Rd7aUdIVI7qxTcnHoaNS1R8yZAbGD+wOWOWG+2FvpExFmc3n4YEfZMQ3pqEA9U6L1PD62kaT85+B7FS0XPEOTzU2H3cG2jkgaS/RcOykGdYgGzv8TlG6BlgpAQJz6I4Qtz0oXaymXqmEcSew0yF+NeUwgIHkNW21uVmfX+hjS9W0Ovs+tY0dJE4khRq6bFMO6nDryaq0+l5sYdxI5/jLDHoNGyaIRYb3WkJMTLOwqbewyogG8Iny8sxyXx8trG4sQBIHzUkMQgZ8uTMXp8RJu1mHWqdhU0MC8tNCuUPDqFjvx43unEo6PDUQhwH+uHUeb3Y1Zr2LVQRM5NVYfJ1F0j7QCp9tDU0UuY7f/1edayoLV0trzaIa01gSpF0JdjhQF6R8DLaVSmavqfb7Hho2Eqt2Qv1o6Vusnp9XInBSDrfdeKoriclEUi0RRLDn8GuTvHFTOHxnO3B4S/YtHhTM7VXrf3uNhexir3c3O0kbueXsn24oaWZtTx6OfH8Dm8vDfNfk8vTKXHSVN6NVK3t1axrgYf1LD/JiWKD0IvzlQzbWTYwg36wDQKBXcOzuRlQer8XilkJhLxkcxNz2UCXGB3D83icP2QGqYif+bn9KrzIXH4yXV7KSXbCIcX3TBYIFL/ivtko++WhJLaa2UylvNelja3QNIvwhUemny2vocVO2RdgU/v79zsSAzVJS2lg64yra/1p+7xtzFbzf+lnpb793vE6XD6Sanpo2UsFNQk+8HaqUCs05NbZv9+AfLDDpOj6fLm9eTqhY7P5mfikmrQikIuDzd+7JxQQbunZ3IRWMi0CgVbDhUxs2pLq5KdKFsLiZRa+Wz3RV8uruCAxWtvL6pmILadiqb7dz2+nZW7K/mQEmtlJ4CULFT8kCveQK2vQjN0iPLqw+kPHAK1uBxUqRN6gXgFwYb/g4VuyThsm9+BVojvHUFNHU/6rxekdLG7hDJDw+2sXfcH8C/0wOo1MAFf4HwbuNbZnjQl4ZCaWMHYs/npyhKv++GAnA7GR3lz39ndJD23R2oStajKlqD/2c34W/Q8qecSJaXqIm26Inw1yFoTFCTLYkihaTBhr8jqo2SJ026OO6QkZDRo950zGSIPw8m3EZFs2//qo74+/lwZxmPfLyfveUtfLG3ijvf3MmS0RFM7BECfs3EGCYnyIb02YggCFw+IZrJ8d2/36smRDM10UJjh++aVakQGBPtz51v7OCHggY25tfz5Ipsoi1G/rEql/+uycfqcPP0ylxGRJgJMWsZFSUZn06Pl4omGxeO6t6kHxcTQJhZS2WLg+RQPy4cHcGM5BCeunKMz5r28UtGkh7eLZDnsbeRbnZKXuMjcVh7t3XfrJQPPeJSaW62NUpr0lk/k7zOIM21c38rhXLnfyelIa79o2RED2Bqmsy5w2B7pA8JgrAM+AIptBs4s8tfxVgM/Oe6cRTXtyMIAglBRow66ceYEuaHSiH4eFN+uiiF134o9rmGV4SCOisR/jqqWuzcOTORT3dXcMPUWF7eWEyr3cXslBAenJfMM2vyeeqbHP521Rjyaqx4RJEV+6pwe70kh5owart/hQEGDf83L4WlYyOxOT3EWgxdiuJddDQRkfUmipYyKWyxZ56fOUryrhyP6Ilw19rO2qs5sOMV2Pe+5IG+7EVpV9DeCqIH1qzxPbe5RDrnaLVVZQadktaSQSlXlRqYyoyoGfxl61/4+5y/n9K19pQ1kxBkPC21TkM6a0lH+MtCO0ONv17DzdPj+f1y33zS6EA9z68v4F/XjAUkldnn1hWwICOMyAA9r28qxu0Ree/KUF4yvYx20xegC4DJd8OmXTw7+Vru3BRISaNkZHx9sJqZKd1/Ax/liyxOuwpzdmcIoEoLDflSBM34m2HLsyisLzMi/jw65j2BUwGa9KWSiGJPXB1ShI61WpofA6XFm1Kp4PopcWwtkox1l0fkxq+dfH375ySoGkHnD5YkUA56RUqZE+SyzChWHKj2abt2Uky3wnBHE+x+G77/s5Rbn3kL5vMeQcx+s9e1Ag+9x2vx8WwNXMotH+8n2KTlkivcknJwXY403hb8HsUP/6bpyg8pKKskIiycoPJvUdkaYc4vJaO9Nhs2PwMhGexSjAe6Q7UXjQjr+n91i53n1vmGhXc4PRTWt/PKLRMpbuhArRSIDzZi0Mhj72wlIdjIS7dMoLi+A5VSIDHYhF6jZHSUP4LQ7VMZE+XvI854mF2lTaSGmWi1uVEpBBaMCOPNzSW4PF6WjI5gXHQAb28t5eNdFVwzKYYnLxtFTauD/For3xyo5p9XjyXcX9d1vbExgXx+/wwqmm2Y9WoSgo3dEWG12ehX/EJKR4ybLokyHkZjktaZxyIoGRb8HnK/hs3/kyI6IjOlNkRwO6WKMuXbfM/b/D9Jw0fr18dFZWSOzmDPnHokA3pRj7YzvvyVn07N6OiAXu0jIsy8fvtk/vp1NmVNNq6aEMOiEeGsyqolwKDm+smxKBVCpxdMxagIM2a9Gp1aUjv80bJdXDUhhsgAHaIIgQY1s1KCGB0VgMcjklvTRnq4H9dNjiEp1ITbI9JgdfgYy1q1kvTwY4SnlG5Gsfp3Utji/MekAvXGUMSoTDBFIIie/v0QDEGSKM/6v0GHJCJBfR589VO45Fn46DaY/Qt8ZunDKGQxh6GkpK2ElIDjPIxOkiWJS/jNxt9wsOEgI4NGnvR1thc19irhMlgEmTRUNNs4wQIbMv2kvKmDwrp29BolKWEmAvTHFo9bPCqcDqebVzcW4adTc+2kGPZXtHDnrATKm2x8e7CaX1yQxn+uHU9Zk42/dlYqGBVhILngdbS5y6UL2ZqkqgHzf0dK9rOsvOwxWtu8OP2ieWyjA5VC4IYpsYT4SfNnbvB9jE2bh7q5SDJqAcZeB9/9AUTJAy4Ur8e49jG49m3JW6Ls414OG1hHiNaclxLCE5eO5H9rClApBR5amEpIRBjokk/yJysz2Lg9XiL89fz9qjE0tjtZn1PH4jERzEgOprnDSV6tlYzWTZhW/bb7pB2v4oyYgEploFeyiNqAxhLLVO8eXl2cTnmHEtWXt0kLe5A82uv+ApPupN6l5bO6SJIwcqPbDsUbpFcnYsJ5tGfehbnKn19e6OT7nFoWj4lgamJ3WLdCARpV78BDpVKBv0HD2EEUcpQZXvjrNYyN8f19j47y55VbJvKXrw9Rb3Vy1YRoNhXW+8yLrR0uxscF0OH0YNapsbs8fLijnHvnJOHyeFErBNQqgfggA6lhflw0JoLihnZAZHpyELfNjOuzXnmYv46wHsY1APY2WPELKc9ZEGDOryXj1tGOqDEgxkxBcTxDuqNJ0qtY9Rh4nFJb5S5prTrjJ/DNL2Hstb3PU+lAGOwgXZmzkUE1pEVRvG0wrz/cUCoEZiYHM+bOqdhcHkJMWhQKgfvmJJFfa+Vfq/PweEVsLg//uW4cj3+RRU2rA4UglaO4b3YSaw7V8sEOKZclMdjI45eMZE9ZM098mcXDF6Tx+BdZtDs9GLVKLh0bhU6t5NYZ8cT0t8xV4TrpX48LVv5WCnEp3oiw92Gp3S8cbvhIEj45Gh4X7F0GLnu3EX2YjgapLurh7xp5ORz4uPvzqAlS+JrMkFHeVs6MyMFRBtYqtSyMW8ir+1/l6TlPn/R1dpY0MeE05exZDJIhLTPw7C9v4dbXttHQLi1oFo8O57GlIwkz6456TqhZx6Vjo6hosqFTK2jqcOIVRf7y9SEeWzqSGIuRy57dzNhofxJ7LNCWJKoJOPB57wu6HRAzGe07FxMCoNTwj4tfJccvhRc3FFHe1IFGpWDJElCv/plUkWD0VVIJP7e9y4juomidpPIanCIpvy5/oPszQ5CkHBuSAaEZPqcFGjXcNDWeC0dGIAj0jhaSGVaIosjXB6p56P09uL0iggCPXTSCKydE09ju5E8rsthb1spnSWt7navZ8h865v0RQ/bn3eNHoYKUhfDxHaiBOSot7UtfhM01vifbm3FbkggKj+H/QsGgVaGuvwi2/lcaywCCQPvEBxn3bAlur7T2+PPlo7kyMxpFD62HUD8dP1uUxq8+6c7FDzJqGDXIIo4yZwYalYJ56WFMiA3E4fYS4qclOdTEbz47QGWzDUEQePziEfz60/202aUoxyVjIpifEcq/V+fiFSVBvYfPT+Ovl49iVXYtmwsaeP77ApQKgRCTllumx1NQa+XScdFo1ceJMLNWd4uFiSJ4HLDzY6g7hAAIoSPh6jch+Cibj62VsOJhaf162Ig+TG2WZJzbm8EUBmqDbyrj7IdB09vgl5E5HoNqSAuCkAA8CMT3/C5RFC8ezO8dasx6NWa9mtzqNnaWNBLur6PF5uLW6fF0ON1MSQgir7aNpWMjCTZqeX9HGVqVguYOF4d6iJUV1rezqaCBkRFmfrU4nf+tLcCsV/PUlWOobXPQYHWQEWFmd0kje8qaUXU+QOusDmxODxPiAhkT7Y+mZ3hscGr3/5Vq8DqlheFh2qrhh2ekPOij1aasz4Ovfgbn/Vzaweu50FQoweuS/l+2TfLsnPewlD8WM0Uq72I69bJLMidPpbWSEP3g1fKeFTWLRzY8QpO9iUDdiStgiqLI3vIWrpl0eoSXguRa0oOCzenhn6tyuoxogBX7q7lkXBTnjzy22J1Oo6DOamd8TCB1bQ6SQ01EBxowapV8sKMMgOKGDib2yPvLaxZxBSahrt7tezG/cMkzfRiPE/O3P8Zy+Qouz4yize5iQggkbbmlu6zf/g9h6o8QLSm9vYp+4dTaVegKtqJGg+aS5xGK14M5GiEoAcHVIXmsj1KmJdhPNqDPBEoaOnjk431dqVqiCI9/mcWEuEDKmmwEm3RcPdGMoOztIWu3jMDVUoNh4eNSvr2glIzolT08124HxpZ8ycD29shVFQQa9PFkl7cSYtZxIKcOryeIxdcsR1vwNTituNMu5vqvPbg7n7Uer8ijnx3AT6tipKmV0Jb9eBuL6QgaxaSIMbx1xyS+3FtFbJCRBRmhJIYMrvaEzJlFq93NrtImrDYXfno1F4wKR6dSkhRqZF95C7dMT0AUYdnWUtLC/PjZh3s5nMF4WMn7v9eNJzPWwk8/3MMTl45CpRAoaejApFNh0qjZVtxIq92JKAqUNnRgMWmYHG/xHYsak2TkWmukdaK9VRJ1PEztQUn8cdZDfd9I+XY49CVE9FEYSOcv/S2ClBYx+xFoLQevF0ZcIukOyMicBIMd2v0Z8ApSjvQZr9p9LNodLnRqVVeeR3ZVK9e8uJlWm5t/XjOWfWXNqFUKJicE8qtP9lNnlXaWFQL8enEGTo+XwrreIgrbixvZWdLEpAQLRQ3tPHtDJs98l09WVXdO1G8WZ9BscyKK8NnuCio7xUYEAV66eSILMrpzpkiaA0Ep0JAn5RBaa3vfTNlmaUGpCur9GUB7nfTgz/5SykHc+nz3Z5PuBr1FMtI9Ltj7LiSfD5f9D4yDZ7zJ9I8WRwte0YtRPXg7rwa1gVHBo1hdupqrUq864fPLm2yoFAIW4+kJOww2adla1HD8A2VOiDaHi91lzb3ae4puHQ2LUcv89DAe+bjbk5YUbGR8D6XkVruLxGAjV0+M5psD1SzPbuOui39Jxuqbuz13UZl9exk6GjC6W3hmTSN2l5e/zfdDUZ/je8yWZ6m/ZBl+qZegy+30dAsKCqY8QUh7Oeb3L5XmQUEBkZkUZ9zFY5tc/PHSUcRYZM/GmU5Du4MOp2+qk1eE3BorP/twb1db8uLRLLSkoGzsLGem86ck9TZGFLwmbSrbW6QoLXOElK/Zk/0fYj/vN+jW/aGrqSbzp/xolYNZGS28vWUf9VZpI+o3Ajx52e28tL6Ixbpw9lXn+1zK4fZicDUQseZh1GVSXqkBcE/9HX4Zt/HXK8cOzA9G5ozG7vKACDqN5GCpbLZxz1s7yapq5dEl6WzNlubEqYlB3PfOrq7MvHCzjusmx9DudOPx+qbrdTg97Oqc6x9elM7BitauOuoAC0eEkRpmIsCg4ckV2V3XDDNrWXbnVJJCO41pcwRc9E94/0ap4kvdEXMySB7roxnSDZ31o8u2Skr3Bz/t/mzOr6W8aZDKuH7/V7jtKyl/WkbmFBhsQ9ouiuJ/Bvk7hpTSxg4+213Bl/sqyYwN5Jbp8WREmFmXU0erzY0ggEmrJsikZU9ZM8FGLTdOi+sKi/GKsHxvJTGBemalBLM2x7dO9ZjoAD7ZVU6AQc0VmdFUNdt9jGiA/3yXx20z4hEUQpcRDdIO+l+/PsSkuED8D+dCBSXDTZ9CzUEp9MXrhp2v+95U2hLQBxz9ps1RUlhMzQFJWOzCpzpFdjyQvwqyl8N5v5AM9aBkqcyAbEQPC8qt5YQaQruFcgaJzNBMVhWvOilDen9FC0mn0WMSbNLItaQHgUC9hvnpoXy0y1elP7Ufue+1bXb+/m2uT1tBfTu2TsMmzKzlnvOS+PZgNfVWJw/MTSbQqGFdm53yme+TLFQQE2Si2aPFqNWiPyJyxhsQR7UYgN0lCetsrIRLIqegqdzq8535LbCCO/i/y26gsb6aVn0MiUFa/LY+1e1FFL1QsYPAinUU1o1jf3mrbEifBYSb9V21bw+jVSmobPGdK370dTMfXvcaCZ4iqptayfXGYOpQkWYIQlmyUdrMSZgFKHpFcIkuOwcsi3DOySBd30xOh5kXc/Vk1zmYmOTpMqJBWit8sKOcGIsBryjVs7a5ug19s05FsljaZUR33cfOv3HIfxbOqAm+0Wky5xQ2l5vNBY08v64Ajyhy93mJzEwOJquylayqVmItBkLMeuqsdbTZXXQ43cxLD+W7bMnZUt1qR6UUqG2VyrY63N3jONCgxub0YNAoCTNrefLrbJ/vXpVVw5LR4by4vshHMqem1cGu0qZuQxogZRHcvQ6aSiVx2qLvfW8k/aKj32RYpy5L/ndSadbz/wK2emm9uut1qUzrpdeCWg8h6RCafhI/SRkZXwY7s/7fgiA8JgjCNEEQMg+/Bvk7TxsdTjd/XpHNP1blkltj5b3tZf/P3lmHx1Wlf/xzxz0ymbi71ZK6u1CKU9ydZbGFBXZ/y7KswC5ui7sVLV4obalQ6i5xd5fJTDIZub8/bjLJNKGFhTQF8nmePu3ce65kenPuec953++Xi1/aTk1bJ409K86nj4vg0TX5vLerkoL6Dt7cXs5n+6o5MzvSe54Wezczki2khpk4fVxfOuCCtGDcHpEWu5M1OfXMSQmSZhOPoKPbRaBeRXyQnt/PTWRaYt9KcrOtG4f7iGQA/yhIWQzpp0DcTJh6Y5/sf8w0mHCFlO7SWCgp17qdvsebE+DsV0AbIHlflm+Fw59IdjHlW6G9Cr75p5QCnjhXsiEY4YSgylo1JIrdR5JhzmBvw146XT8+QN1f2UqM+QfW/P8MBBnU1LR1+drZjPCTUSpkXDsrkTFRfoBUS3fTvCTigwzk11ppOIrlWLfLQ1unc+AOAf595mgunRrL/aty2VjQyOGadv61Kpe8Oisvf1fGVV/ambMqgCdr0tglH8ft2/W0LflvnxqrKZyWRU/x3K6+MprP8jrYmXEXnuzLpVKUqb+nY9Gj5Hhi+LK4m/dbEln0dRAadwfm3U8gHKkNAcjt9QQZVNi6B9ogjvDLIyJAy5PnjyPIIE1Cm7QKHl4+lre3lfu084iwvVlLlWUmXzjHk9MqY9aBO5DvfEFKS937FhxaiUMfStuix6T0VQBTOAcmPcBF71Vyx3Y12/WzWVFu5LR4+NM0w6CTnS12J1MSAnl/VwV3npSKv04StAvUq7jnlAxcXYNkezg7EdwOHzeREX577Cpt4fJXdrC9J8vxmtd3sa2kyTsZc/6kaG55Zy9bipo4WNXOgz0WV8Z+zjAOpwd/rYIHzx6DSSttDzKouGFuIu/vqmTl7io8IgNWrAHkMhknjw5jbmow/R/tAf28XAlhYyB9mZRynXlm376sSyF6qqRa39k28IeMzJYCaJlc8o/e/gxsfBDW3isds+tlqQ4747SRIHqEn42hXpEeBVwEzKUvtVvs+fyLp6LZzqojbDEarA5ya6zMTQ3mxW9LiAzQ8uERKzIF9R2cNCrM+/m8CdFkRfmTHGpiXFQA0xKCqGjpxKRR8OK3kj2V2yPyfysP8eDyMQNmopdmhqKQCdy18gD2bjczkoK4YW4iT64r5JKpMQQbv1/YB30QzP0/GHu+lA4ZECetLn/9f7DjBanNpOth6g19AbEgQPIiuGajVPtctBYsyZIyYn9Sl/7Ib3SEoaaqowqz5ntS9n9GdEod0cZo9tTvYWr41B917MGqdh/l2aFG15Pi1t7pwk83oij/c5IYYuDVyyZS0WxHo5TT5XJz6cvbKWqwEe6n4YGzxzAtceDETqhJw/mTonnlu1LvNpVcRkqoUXJH+K6U7iMmCD/eW82CtBBvSuH42ECmJ1kIMqrY0xVL2nmr8dib6daFcd7bJZw3KZQvDkpCTx5RxOGRS4Otii2gDcAz518UN3dy/ZxEUkONJAUbiKlZAaWbYdLVUHvA5/r2mHkc2NLu44c6wi+bqQlBfHLDdOrbuzAb1ASb1KzNqePDPX3vdI1SxsxkC2VNdj7ZV8NrC0SUB32fDepzKOg2c+V6FS+e8hkeWwuWiDhkQgDPXeQk2qwjxFHGHNf9qDdvBo0/7XP+yZawcPbV9E1GLkwPYX1+I1fNiKfb5eEvS9Pocnoobuzgvi9yefakWGLUxr5af8Aetwh5YMyIvdVvnCPHoQCvby3njkUpBBulyeQjA+AvDtQyM9nC5wdqkAkwJcFMepiRZls3y8dHoVHKyQgzceeH+2nrdNHW6STIIInZHazuy5y0GNSUN9t44Kt8xscEcNvCFB74Kg9BgHHR/t9/0/5RcMoTMP0WSWegIRdePUlKzY6cAMse61uFBknscdadEDsdavaBfyxs/E/ffkGA6Cn/4zc4wgiDM9Q96+lAvCiK3cds+QtEIZMN8I0GUMplZEX788yF2VS0DC5iZNQoCPfTcNLoMPLrOvhsfw1vXTUJf52KvDorz28qQa2Q8YeFKWwpauJAVSsT4wLRqWT8cXEKXxyoobTJzqxkC6mhBjYWNHrruTYVNBJkUPOv0zOZm3qM1eDWCqkORa6UUl20fnD4I9+65y2PQ0iaFGw7O6XOzNHR87IWpRzyusOS6f2B90GpkVa5FSpJvMx4dGGhEY4fFdYKzNrjE6QmBSSxs3bnjw6kc2raOXdC1BDd1UAEQSDYqKay1Y6fzu+4Xfe3gr9Ohb9ORW1bJxc+tY26dilbp7qti6te28nnN84grld9u70aGvJQIHLr5AT8tIm8vb2CGLOePyxMJj3MhCAIfZ6j/dAq5aiVMpJCDNw6P5msGEnorsvp4dKXd3rbpYV5uGRqHKVNHbx/QSzqlnxMajmRrn3IKntSuztbMH1xHX8+9wPyqwpJVKTy0JnpiHuM4GiHhnxpcHfwA0Sljo6pd/JuTQivXRFOevjIM/RrItxfS7h/n8f8zQuSsZjUfLi7iqRgA7cuSCbD5CC8+SCPZLfirxm8jKmhU6C23cEBuxl/fRhJIUGEKhWS5VXbIajZD4mzwdkOtQcwrfodz5/zOZd8paCt08nS0eHUtHWxpagJu8PFA2eN5rMDNTy+VqqV1ihl5DU6GXXGKyi2PYVQf5C2hFNoTLuY9KiRrLDfOkbNwOG+SaMgJdTI0xdksS5voF6OTiVDo5SREW7i9HER7ClrYXpiEE02Jy9+K6VpJ4cY+N2cJFbuqcRfq+Tz/dUszgwj2qxjR0kLaWFGLp0Wy/VvSgstO8taMKgVLM+O5KTRYYyK8B94s902aVzaUQd+0dLYtO4gfHB5n51q5Q74/Da44F2wNUr6A85OaUFI6yeNYWOnw5QbpDGtxl8qObSkDbzeCCP8BIY6kN4H+AODKFr98okO1HHljDie2VCMQa1AAOIsepJDDWhVChZnhtJg7WJ/RSuf7q/xHjc/LRiHy8XMJAsb8huoa+vCI0JNWxf+OhVLR4fz+tYydCoFD3yVy+gIfx48ewwttm6+K2rmqW8KmZYYxNzUYHaUNPP+rkpumJvI6sN9NhrfFTXyp5NSsRxtNbruELxxFlirpc/hWXDum5Ji7ZEc+hgyz4KdL0vti77pU0A0RcCEKyUlxKSFoNRDcxF8/DsIHS3ZFQTG/Qzf+Ag/laqOKsaHHB/H5CT/JDZUbjh2w340WB10uz3HTWislyCDmurWLjJGgqAho7q1yxtE92LvdlPRbJcC6cYCWHEB9Ih+mQITufm8t7ho8gy0Kjn6fimGoyL8BtSv/m5OAgvTQ7l5fhJ+/byqk0MMjIn0Y1+llAqYU2NlQkwnFyZ0k7ruMuQtRVJDc6I0GbjxAe+x2sYDjNl0D3wrY/Rpz+DKOhsOviLpQOjMkLwIT/YVdAeM4tJ0GQb1SEbDr53oQB13LErlyunx6NRy9LYqWHEVAZXbyAbEzLNwpZyKouAzqfyps4WO2EV8VKEjKsDNhLjAPg2Iqj1Q8BVsuF8KEAQBpt4klVM15GKrzuPWBUtZfbiODXn1lDRJqdv7KttQKeRszG/03tdzCzXM3HYJbGmAuFmIE65CnX4OCZaYYfiWRjjROG1sBO/vrkStkNNs60YuE7hwcgyCIJAdG4haKee178qwOvpKU84eH0VZk42kYD1PrisAQeD8yTHEBem4ZHIsH+6pJL+ug4dW53Hl9DiyowO4o0dMNyPcxNy0YEoabWwqaEQhkwEe5DKBQ9Vt3H3NlMHV47vtsO1ZWNsjwCeTwxkvAh44svyq/DtpEWfbf0Gm7Bu7KtSw6F+w5h6pPjpxPoSMgs2PQFsFjL8cVMevfGyEXzdDHUiHALmCIOwAvCOoX4v9VUOHg+mJZrKiAzhY1YZcJjAlwYylnz+oxajhT0vTmJcWzK6yVtLDTOjUclxuEZ1KiUmnIC7IQLfL411RjjXreGT5WHaVtRDur2VMpD9mo5IPdlUyJzUYjyitOvcSbFTT2m9AedskPacHVWDe/qBUMxI5EfRHrEJ6PH1BcS/Vu6Fss2QDULrJt33keCk4Xn8/jL+sL4gGqSa6tVxKARfdkgjPt49A+DhIPw12vyqljMdMlbxXRxg2qjuqCYod+hppgHj/eJ7Z/wxujxt5bw3+McivsxITqBtyMbQjMRtUVH1P9sgIPw9+OuUAkRpBoG/SJOdTbxANQHMhHPqIoNl3DDjXuOgAnr8om02FjTRaHYyPDcRPp+DNbWUo5TKiAnXYu12Miw4gwWLgifOy2FzUyOHqdjLCTRyoaiOk/PO+IBokPYiuNkkY0dYj+tgrkih64LObUVz7HVy2CvJXSyUwsdORt1diLlwNfpFS/V5QIpUtdnaWtlDS2MHYqADGRfvjrzu+k0Mj/DQcTjf7KtvYXtJEgF7FpLhAEoOltH2ZTMDSa2N2cBNU9onUCQffRzzzNboT56NoPIxoSadKk05aoz9XzA/qC6K7rIgV2xC+fbgvQBBFaUJ6xm2wIZeA4HC07jYuteRjUR2gfUwcqzviePmAC51KxthIf/ZWtDImQs+4yjf6XDiK1yMUr8ejDaNNf+5IycpvGOk5bqXF1s0di1KpaLGT0lOqktlvNTgzwo93rpnM2tx6GqwO5qRYqG13IJfJyI4JZEKsGREwqBWUNtqJNmu5bFocsWYdCrmATqWgxe4kPlhPQ4eDQ9XtHOpJ754Sb6bT6eZ34/Wcaq7AbCvCr6ELtJMG2qE25vUF0SCJ2H56I5z54sAfzhgGVbshOEPS5enF5ZDGoKc/DwffB/9oaYyafhq0lMCe1yFh7sh4dISfhaEOpP/6Yw8QBOEl4GSgXhTFzJ5tY4FnAA3gAq4XRXH7z3ifP5omm4M/vr+PmcnBPPx1Hl1OaXD41DdFrLh6MlkxAVi7nChkMsL8tCzKDCM11MglL+1gZoqFnJp2Dlb11ZBcNi2Wt7eX8fDysWzIb+DfX/YNKLOi/fnX6aOINuv58mAtC9NDvKvPcpnAvadmsKKnLvCSMUYub34Q3b6+lUDP9D/QPf2PaDT9VqddnVC+ZeAPVroZJl0De9/uC7L9oiVhsvYqMFgkJcUjqdoJC+6Ft8+Hsk2gNkHaMljT7xHwi4KLPwFz/I/9ukf4GRBFkVpb7XFL7dYr9QSoAyhqKyI5IPnYBwC5tVYiA7THbvgzE6hXU9Eyotw9lMSa9fx1WQZ/WtlXP3rL/GQSg6W0bk/ZdwPVL0s3AX2BtMvtocPhwqhRkh0biE6l4OZ39hBn0XPbe/u8ZTZ6lZwb5iZywQtbefuqKcQF6Yk2S77kD3yZQ3FDB2bljoE32VQo1eXZGqRVDPqtgDjtYG+QJhrdTvjsFsmbdN3f+9r4RdN5/ofc9GEDu8pavJv/uCiFa2YlDJqS3tbZjUYpRz2iqHxCsbGgkate6ysJsBjVvHP1ZJ9VtK5uN6raA77PbdxMlIc/gJyPvZtiM87Brr2GD3Z1YdariAjQgaMdobOlz6qtF48bPG46k5ZRp0kgu+QdtN89CEAwEB4xnelnP0qwScviUaF8dqCaDLMCY+MRGiVAZ+V+vvDM4IKJMcgGefZG+PWzoaCBLUVNrM9roKSxT4zu/jNGkRZmoqPLjZ9OhcPlRquUs7OkiWCTlhe/LeXbwr4Fm9PGRlBv7SIpxMCVr+z0rlzLZQKvXT6RtTl1vPJdKX85OZ2DlW3YehaGxscGYNIqWJas49rOFzBu+FQ64U7wjL8S2cK/+64Od/g61wBSOY3BAmPOh31vSdtkclj6kBR0py0beExbJegCoGqX5CYz/Vbf8agxDC75DIIS/7cvdoQRehjSQFoUxaPmdQqCsEUUxSMr/18BngRe67ftP8DfRFFcJQjCST2fZ/+Mt/qjKajtoKKlk9zadm8QDdDt9rCjtImCeisvfluCv07J5dPi+fxANfm1HZwzMYoAnYr3dvr6Sb61rZwrpseRV2fl0TUFPvt2l7eSU9PO61tKae9yMT8tmFsWJON0e8gMNxHup+U/Z40hr9ZKhvMAuvd8v3bZd4+xSz8PITiFibGBKOQyyVs143TflWWA+FkQnAaXfwn1hyW7juB0aXApyKQBpiVl4BeScQZoTJC8UAqk05YNtNVqq4CavSOB9DDR4mhBIVOgVRy/QDXGFENOU84PDqRzatoJ9z/+KVcWg6RNMMLQIZcJnJEVQWa4icqWTkL8NKSEGtEopddQS/QizIVf+xzTHLeU3mmf/Forr3xXyuaiRualBnP+pBhWH65Fr1ayIa/BR6vC1u2mqrULtxv2V7T21WADk+LNpIQaaW5ZirnsW9+bjJ8tBTbJi6H2IFj7ymUwBEtlLC4HbHgAIrIlFdj+tJUjVu1lV5nvM/zY2gKWjAolLqgvCKtqsfPRnmre311JSoiRa2cnMLafT/YIw0ebvZsHvsr12dZgdbCnvJV4iwGX28P20mae/qaIe1PG4VO4FDNVytzqh/rQO5x2+kVc/42Ng1Vt/H5eEmPCTBj0ISh70r+9qPR0RM5ii+lM4l0daLc+6nMuXdW3JFKJ25PIiu3lnJkVSYhRjS1gGfom37b1AVnc90UuMxMtxPT7HRjht0GbvZt/f5nLstHhPkG0Ua2gy+nm5nf2klNj5aRRYQQbVbz6XRkzky2khZm444P9Puf6eF8Vf1iYzIa8Bp/0b7dH5JkNRbjdHjyi1NddPj0OQYD4IANZ0f7o1QrOsNRgfPtTn3PKdr1IUcxZqCPHEBnQ02f6R4FcJdmz9mIKlwLfRf+EcReAvQkCEyAoGUo2wmBjmvBsMEZIXu5JC2HPa777rTVSFuZIID3CT2So7a+OxYACXlEUNwLNR24GTD3/9gOqGWa6nG70KgXt/aT7MyNM3LIgicgAHe/tlGpHtpe0cN2bu5gcZyavzsrjawtRygd+7Q6Xh7QwE3qVgm63h8wIEzfMTeT3cxMZHxOAyyN6U7/X5NTzyNf5PLmukMM17Sx/bgvNPRZagWrPgHPjcdFhs3PRi9s5UNXPMiDzLEjrybI3hsFpz4AhFGxNEBADKUskdW7/HuEncyKc8QK018CYc/sss1JPhoQ5Um1Lwjw4+RFJUbF7kFRZ50j67HBR01GDRXd8/bwjjZEcajr0g9sX1FmJGoYV6SCDmsqRFekhR6OUMzrKn5NGh5EdE4ChX93zVtk42tLOk/K9BYH21OVsEbIBqG/v4urXd/LW9nLKmuy8tLmUP7y7lyCDCoNaTnvXQMspa5cTrUqOvcfhoKGykIaCncRpuyisbcUWkoUzY7n3eq4xF+DRBkhp3H4xuEctB7laqnM1hcPZr4JfhFS6YqsHtUFKBT8C0TnwOXK4PDjdfYF+t8vNU+uLeGB1HiWNNr48VMsFz2+lsH5kMudEwOkWabUPtF/rtTY7UNXGRS9uZ1NhIy9XhNI85jrJ1irrYjyBg6eLGt2tzIsWOFxj5ZrXd2Frb6HFmIS49KE+QU69hfZlL3LvfiNFNjX5VU19fuX90AhOPKJIcogRpUJGYYONVYp5OBMWSg1kCprG/o43qkKxd7sHKNyP8Nug2+2h3e7C01M6EKhXcdm0WP5+WiaF9R2szamnpNHGU98UsqWomQC9ile+K8UxiM2qKILFoKGjy8nSUWH8fm4iV8+MJ8xPQ6u9G02PKnyr3ckT6wp5fG0hxY0d7C5vxWxQE6Aa5BkURcrqWnh6fRHO3pKfoGTJXtUvErIvg7l3w/LXpd8RXaAkIJZ+KoRmSoK2E66C5lKYfVefxWFQCix9EFx2Kb07fPygfTXdg9jFjTDCj2S4/RB+qLHhzcBXgiA8iBT8/zgZ4CEgMdhAg7WLU8aEsyanntPGRiCXweNrC/GIIosyQrlwcgxvbC1DFKGkycYNcxJ58ptC7N0uTFoF7Z19L8hZyRZW7ChHFOG5C7P58lAtT68vwiOKLM4IxahWsCQz1Ee0TKuUIxcEupwe8mqtpIaapE6of40f4IiawZfVatyebvaUtzIuWlKzJTAWTn8GJl8vKXF/dZc0M25Jg9OfhfAxvj+0IEgrzsFp0NXe04GVwP4V8NxsaRXanAzfPgTBmbDsUXjv0r6BgFwJIZlD8v8xwrGptlUTpDk+9dG9RBmjWF+x/ge1FUWRogYbEcMRSBvVVLeOBNLDicYcxbUHzuX8aWcjACsK5VwyWkrHLm60UdrkOwm3r7KNm+Ylsb20metmJbC3otVnf3qYic/31zA2woh178dYVt8M9mY85iRumvsX5B/fAKGZOJc8TLU6gVaPllF77pYGaRvuR95SIvWlyx6DqEl9wY5KD5Ovk0TJMs/yXZWWK+kyp2LStvj074vSQ3xKFqpbu3hnR4XP/dq63eTXdnjrcEcYPoKMai6fHsf9q/pWpeUygdE9NaW7ylq8VkGv7beRF7OUF05fgGH1rcjkamkg37/e35yEpW4zfyhbxeKlD+ERIeLDUxGaiyEglu5lT9PUJfJtgw6DEMOa3IOcrFJyuFXD7OhZaMv7ZZnpzMgsyXxX0syrW0qpa3cQ7qchcUY8X6f9C2XktdhcAi8dFthfY2dJZmjfat8IvyksRg2XT4+l2y2SYNFx9vhonttYzMubS4kL0nPnklTuX5WLw+Xhq8O1PLx8DLvKWihtkuwJq9u6vOfKCDdR3NDBSaPD+ftnh/n8QA0GtYIrpscR6qdm9aE6n2sH6JQ4XSIvfFvMwowQdOZE8I/xKQ10Bo/m22YjK/ZWcNWMeGKD9NICTXC6JBb21Z+kFO0dYXDqU5A4b+APGZQIS+6DlgpJi6e5UHKj2fKUJAi543nIuhgW3QcfXtV3nEwh+VWPMMJPZLgD6R/KdcAtoih+IAjCcuBFYP5gDQVBuBq4GiA6OnrIbigyUMcrl03ks/3V/OXkNOzdbh5ane/d/9WhWv5z5mhCFibjcovEBenJq23n5FFh6FVyHjp7DO/uqCSntp0pCWaC9Gqe3lCEWiFjdoqFD/p5/q06WEtkgJaoHpXwLw/WEhWoY2F6CE+sk6wvvPV1/tFw4YeI3z6CULmD5uhFrPc7hZVrpJWO9AC3VAfd2QLmBFD7SRZVHXUw8SqpPmvbs/DJ9XDxZ1KNyZH0rlDnfAofXtm3PedTGH+FtHpTf7BH7OE5qYbQLwpm3ympeP+ctFVJ3q+iWwrw/Yfu//zn4Hg9n4NR3VGNv8b/uF4zyhhFYWshoigeU0Cs3upAKRcwao6/MI6fVomt201ntxut6rdbqzqcz+ekeDNdzhSeWFeAiMgNc5KYEm/G2d1NkqeET+e30C4P5MUCDeuKpUmPIKOaR5aP5dvCRu5cksp7OyvRKGWcPi6C3Np2Hl4+huCuUoyfXO6d0JM1FcDae6TMmfpclLZaIg0WorY/hCw4DbY8KQ3eQJqQ/OBKuGglVO6EwHjJiiV5EW6XC3lLEeLUGxFyPqHbGEV+6u9odEbz5hXJPLW+iINVbSwdFcb5k6J9fHwVcgGtUk6Hw3e1UaUc7iSxE5vj+XyeMS4ClVzGq1tKCTFquGl+EqMiJVV//RF9xPRwMH7xOyldVKWDcRdKtZlVuyAiS8rQsjchaytlVNt6yY6nrWcipaUU1TvnYDznQxYE1ILRQGaIgfNjO3A2lGEN+wNucyqG4i/oDB6HcvYfqHZbuPb1b73PT3VbF0+sK+C/F2ShDQ7i/fVFNHe1c92sBM6dGPWb7tOOF8PZdx6NM7IiWZtTx19PzuDyV3d6S2Ds3S66XR7uWJyC1eEmt6YNtULGXUtScTjd3H/maN7fVcmushayYwJIDDawp6yFvRWtXhGxDoeLx9YW8K/TMxkXHUC4v5b1eQ0kBRuYnhTEw1/nkx0TgEImgCkMznsb57ePoyzfTGvkHLYEncXGXd08v1BNeM0asIf0TEIVQGM+jL1AymLc/hy8ezFcs2nw0kC1ERpyYOXVvtsnXSutYu96RVLtPulB2PpfMIZL49GfI5BuLJD+qPQQkt4nUDnCb4bhDqR/qPrFJcBNPf9+D3jh+xqKovgc8BzA+PHjf+iK9/9ERoQfiSGS4vbt7/nWk1w9I57nNxaTX98BQJBBxd0np1NvdfDnj6RU12kJZu5YnMKDq/Mp61ltiQvSs73kyMx22FEqee+12ru5ZUEy7++s5N7PDiOKEGPWkRFu6mscNhrh9GfIK6/hdytLKGyQ7uGqLCMTcv8DB96R2inUcP570sCxqkdURRsAc/4kzQRaawYPpHsp2TRwW9m3Uu1ge7U0iAjJgKvWgULz89sNNBbCivOkDhek+sULP5AC6hOU4/l8Hkl1RzWBmsDjeUlMKum5bOxsPGZaeWF9x7AIjQHIBAGLQU1Vq/03vSI4nM+nQa1g6egwZiYHgQhGrTShYtv9HuZPr8YsSql/yWNv4I/iPIKDgjBpFPzf+kJC/bSMijAxLcGMSiEjwl/D5sJGbnl3H9vO7B6YHttcLPUbplD46k/Ip/4eSjdA9IS+ILoXdzcUfwMbH5Syas57BxLnIR9/MXsLSnl/Tx3qsEWUW0UOb+zmzSuNxAbpeezcsdgcLvy1qgFCT5EBOm5bmMw9nx72bksKNpAeZmKE7+d4Pp/BJg2XT4/jjKwIVAqZz0TI+NhAAnRKWuxOZAKM9euQ3pcgPSNf/wVCR0n10vU5cPhjmHmbtF+p7guie3F3Y7CVw/p/gr2Jl858GcWHV4JTSj1tnXgrH457kbiYWMZFhFBR2DhgEqbF7kQuExgbHcDj54/D5nARoFMddweE3yrD2XcejRCThvMnxfD+rgpvEK1Tybl6Zjz/XpXnTftfOioMl1vkvn5ZGI+dO9ZrV/XJvmpumJvIkz2LN/2pau3iqW8K+cepGbjcHgrqbfzj8xxkAlw7KwFV70JPSAat8x7ivc2H+DTfTn1uN+/PaiRu/e+kRRyQygc3/AeaesZ1xlCYdackKtZW/v0aO0foawBQvhXCxkLhGmny6tLPIPNMaeyr+hk0Ayp3wuungaOnJCd+Lpz6pFQCNMJvhuEOpC/6ge2qgVnAemAuUHDU1scRtUJSW00NM/LloVpAmq0WBLxBNEBjRzcb8hu8M3kAm4uamJoY5A2iAWrbu5idYmFNjq/1dnqYkc1FTZQ12dmYV8/VM+MYF+1PZICWKQlBRAUeEaQq1MRGRfHP041sLmwkQK/iXHMR8hXv9LURxZ5Z8z5lUjpboGidJM6g9T/6Dx+SMXBbUIpkLwBS3bXWX5oRHAryvugLokFSFd/7Fiz8+/cf8xumqqOKDPMg/2dDiCAIRBgiKG4rPmYgXdTQQajf8ATSINnIVbR0/qYD6ROB/hkJ1poijKv/INUt92DZ+yT3L1+CEJnMFwdr2V/VTluXi7mpwQgCqBQyqlq72FvRKqXfDrZCoPGX6uO2PydpPLRXS6vNbpdU69rd4dte3mN15HZKVixXfgPGYJJjIjlJMLC5qImZ0WrujA+S0hPpezd8H2dkRRIbpGdbSTMxgTqmxJsJ9x++53+EwRnMtiwpxMgrl03kQFUbHlFEp26U/GqddkmUU6aA2gPSH5A+Cz3PgscjraD1Dr57sTfCrD/CpzehWPtXSF0CB96X7mH7w8w/dxaaKKk0x6xXIZcJ3vRyAJVcRkCPldyxnr0RfntYDH2SREtHh/HKd6U+tfOfH6ghNdT33VfeZGflnr7syJrWTmLNugFlNmqFlEnzn9V5PH1BNjk17cxKDmJ6UhCjI/1978PfwNJJmQRamkhQtRD31VV9QbQ2QFpZbuo3rrPWSuM8cyLojlKaFj4W9r19xA+dLNljgTSpBT/feLTbBmvv9f09Ll4njalHAunfFEOaRyYIwhmCIBQIgtAmCEK7IAhWQRC8kaQoigcHOeZtYAuQIghCpSAIVwBXAQ8JgrAP+Bc96TMnEnNSLMT3DKCCjGpq+tWW9HKoun1AwGvvdnH7omSyov0BcLlFZib3nQsg1KRhyagwyprsqBUyzsqOYnJ8EH9cnMr5k2J8FGnbO51YewTQ1Eo5k+LN3LowhcumxaF1NPnekMZPGkAeSWMBZF8upWgfjbiZEDau77PeIqWw1R6QZuWXPd5XVzgUVA+0+6BiqzQYHmEANbaa42Z91Z8wfRiFrQNnsY+koK6DUNMA/cHjRpBRNSI4doLh6WwZVCRG52wm2KThUFUbggAXT4nhTysP8OqWMt7bVUl+nZW/LstALhPYZrXQMfHmvoNlcph2Exx4VxqgBcTCoY+k0pbDH0n7hH6vxvFXQMFXfZ/bKsEh3ZNOpWBqYhC3L0rhosmxJAT3qXIfC5NWyeyUYO5YnMq5E6NHVJV/YWSEm6hqtXP3x4f4/VetNM35t/TcHFoJU2/0bTzlBunZEgTaA9IRF9x7xDN2uVQa1SuW1FQg1ZP2w+Ru8a7sxVv0/PmkvswrQYB7TkknznzsZ0gURZptDjq7BwpKjfDrJSPcxKVTYwFplbqieRBRxH6BdYS/FrVCxm0LkuhNaliTU8dti1K8gTPAKWPCyKlp7/l3BJnhflw5I56b5ieTHROIRxRp6nD4TPrEBOk5d2I0E0Jlvor1xlBoKhp48435MON2SQPo+0hcINVWe88VJun9NBWCf6y0Ev1z4rBC7f6B24/MNhnhV89Qr0j/B1gmimLODz1AFMXzvmdX9s9zS0PDmKgAnrs4m9waKx5RxCPCx3t9g9S5qcF8sFtKGxQEuHleEqVNdrYWNzEmyp/nL86muKGDrw7WcvP8JIobbYiipBT6zvZyXrt8Au2dLv69KodAg7qno5JSr62dTtbm1vPEukLkMrhxbhKzU4N9VHEJPCIlxt44eMeUvKhvBeZoBMbB+e9INlnubun8nc1wzpt9tYRDScoSadDSn8yzQD7ciRYnJnW2uuOe2g0Qog+hqHWQl+MRFNRbmZU8fPVFgXo1Fc0jqvInEgr/CDyB8ciai/s2ypWUuC1o66TnpaTRxje5DXhEODs7EqNGwerDdRTWd3D3yenct64YYd6FLDhvKsrK7VJa357XoaMe4udAxXZpJXHzY3QsfIQaqxPzme/S0dJAiCUY9eb/SCl8vURPHdoJwhF+EZQ323lxUykAE+LMfOiIZNqyT7G465D7R+KKmE9NZQmiIRRRpkCWnIRhZjy3rXfwztIwVHP+BM4uUGqk1FOPWyo5AIibDZX9fM4FAQL63t8qhZzzJ0UxPjaAmtYuwv21JIcYJGvLo1DRYue9HRW8v6uSxGADN81PIjvm+L8TRjj+BBnV3DAnkbmpFrpdIlMTzHxX5Lu40lv7f+nUWJxuD69uKSMmSMczF2RR1mQn2KShotnGtbMS8IgiSrkMnVKGxaRhbJQ/te1d5NS0MzEuEJlM4FBVG099U8ieilYWZoRwyZRYHx92jOG+wnzNxTBquTTp1J+khWBOklS6vw9zAlz4oVRK4XFJujwdNXDBBxCcKqmA/5zozJB+2kALxMEyNUf4VTPUEUfdjwmif+kkBhtJDDbicLkpqLVyzcx4XtpcgssjMj8tGJVCxuXT4vjv+iKmJZpZn9fAnh6l2Zq2WnaVtXDKmHBe3VLGoep2AvUqVh+WlBAnxweSX2vlcK2V2WkhuN0it7+3l6cvHE9KqJEtxU3c/M5e773c8PYeXr50AnNSg/tuMDQTTnsaVt0hGdyHZ0uryme9IqXTtFVK1ldREyHsiM6go15KndYGSCs4vRhDpD/DQdxsmPI7SRxN9MDYCyF16fDcywlOp6sTu8uOUXX805bD9GFsrNx4zHYljTbOnTB8Ii0Wg5rC+o5jNxzhuKEPDMO27Dm0n10niYTpgyiccj/Xr7Zh1O7h2QuzOWNcOO/vruK0seGY9SraWhr5c5YLuyjw/LYSLp4Sg95kpFgzlkhdJfr1fwWHFU/kRDxjL0Sx8iqQyelKOpkPqgP46zfNGNUerpgxnuKdzfwx6QIiG/Kgq1USp1n6QN/K4Qi/WbpcbqYlBjE+NoAIfw3Pbyrhn9XtgIY/nxREiq4DkymC7Q0KntnTxcL00cwICWJ6ipUyQUWCJQ1Z3SE4tBIREObeDe9ehBg1Cfesu5B/8QdJREYbAEsfHqD9oVEqGB3pz+gfGB90u9z895si3t5eDkgCZTtKW/jod9NICR15nn8LBBnVZMr8KG6wcfP8JGwOF/sq2zCqFVw9M55go5pZSUE027r5ZJ+0EFTV2snushaum53Ize/sZdnoMEqb7F4r1XMmRNLtFrE73XS7PFzzxk7euHIyAToll7y8ncYOyQ/61e/KyK+z8tyF4736F+jNcMazsPJayTkmZJSU1XjaM1DwNeR8BClLpeA0uGfRx9YojVXVJmkxp78GgClM+tNLyBDq5ciVMPUGaC2HorWg1MLcv0B41tBdc4QTkiEJpAVBOKPnnzsFQXgH+Ahw9O4XRfHDobjuiUBDeyfr8xu5b1UuFoOaG+clkRUdQGKQnuZOJ0EGFSePDqe82cZ5z2/zPdbqQK+WZgR3lrVw47xEbyB9/sRoGju62V/Zxoe7q9Aq5Vw5I46KFhspoUbe2lY+4F7e31XpG0grtTD2fIiZJtUA6kOh8Cv44nbpszlJEkqIyJY6iV4qd8EHl0NLqdR5LXtMqis82uzg8cAYAvP+BlmXAqIU4Ct+wEr6b5BaWy1mrRmZMKTVHIMSqg+ltL30qG06u9202JxYDMP3/xdsVLMur/7YDUc4rujjJlC07ANyCvKp7FLzzLouWu0OaHXQaOvm7AnRRAToyKu1kiirZnrFPagKdoJcxbTxf6DUHENFu4MtOXX8LkQBE64EmQKxy0qzNpb601ZTUN/Bm/kybl2cxI1CE51OD29vL6eu3cGWsghWnv8VkTq3JGh4LO2IEX4TuFwiTpeHB77KQy4TOCMrghizjq3FzZzmV4jl6xugo56xegunL3uCP+7pYk9FK5nqBuLWP4isbCPIFLin3EBx5BkE6rQYr1jHt/UabnqpiNNS72PxaA/pcZEEhCf85Putaevi3Z2+aaedTjcFddaRQPo3Qk5NG29uLWfFjgpE4PpZCfzfyelYDCo8ohSTZkT4cfLj3/oc1+X04PZIad9fHKzlmpnxHKhqIypQy/iYQP7++WHaO11E+Gu5eX4yBXVWzHqVN4juZUtRM+UtdjK0fn0bw8fBpV9IZYaFX8MbZ0gZjhETpO2GEGlsJwhQs19yUWjMk8TClvxHStlWDpO2hDkRlr8qpXPLNdJ9ykacF35rDNWK9LJ+/7YDC/t9FoFfbSB9qMbK3R8fotPpptnWTd5qKwE6JZ/+fjpp/RRZ7d2uAWIhAPKe2TWFTMBfqyQj3MTl0+MYE+nHTe/s866YdTrdPLGukBcuHg9AsGlgABIyyDYAAnpqr6p2w0fX9W1vKpBWqy/+uG+w2NEgWVy1lEqfHe3wwRVw9UYIG/XjvpyhQKGUBCVGOCo1thrMmuNfHw0QqAnE2m3F7rSjUw6u3F7SaCPMTzNA3fh4YjGqqRqpkT4haZeZuGFtN9A3MBME0CjkKOUySfTJ5WBS00uoanrSsN3dhG67D210Nhd86GTjOWqMK/tqV+WAX0MheRMe5tX8bq6fnYDFoOKp9UU+/XKD1UG1aCEyZHh+f0Y48RBFkVWHavm2qBEAt0fkvZ2V3DI/ienmDiyrLuqr7bc1YFl1FadOWkGJU2BW20coynoydDwu5JsfxTE7g8vWhHPd7ASuWyFpf7y+r53X98EZWVbuP8Pdp3z8P6KUy9Cr5T7+5gAa5Ygo2W+Bzm43W4ubeaPfossT3xRi63bxf0vTve/emrZODBoFrXanz/G9Y1O9Wo5BrWBMpB+3zE/mytf6LLWqWjt5fmMx/zlrNMpBygwUMgGVYpBAU2+GugOSMncvVTtgx4vS4o4gQGcbfHZLXxp4tw0+/p1UBx05jJWfaqNvbfYIvzmGZOpEFMXLRFG8DHih99/9tr04FNc8UShrstPp9BXxaLE7qWr1HaDHmHVcNSPOZ9uUeDN5dZIC4PLxUVQ027l2VjxRAVpEBPb2pIH3p7VTGlheOjWGyXGBkl8foFHKOHXsMZQD26qkWub+q5Q1eyVP6V46avvqtnoRPdBadvRzj3BCUWerI0BzFCuzIUQmyAjWBVNh/X4RjpJGG6F+wyc0BpKXtMPlxtrlPHbjEY4rCRYDV0yL8/HvvXBSDHFBOjqdbrYWNxEst6Ev/bqnnjRWSokFlC1FCICuY+Dzpy5dy1izyNtXTWJhRigxZj3XzPTVkpiTYiF5ZMVuhH5Yu1ys7nHp6E9pk51ETbu0Qmbq9/51WMn2t+HpbCagepP03lXqpL9VeizWHOrauygYpLRkzeE6mu3dA7b/WML9tdy12DfVNTXUQHp/68wRfrW02h3k1loHbP86p462fu+8MD8tdy3x1beJD9LT2iNie8mUWBKDDTx41mjcougNonupbutCrZCRFmbk9LG+grXXzoonNvB7BPGs9ZJjQn/yV0mp3AC2el+HmV56XWJGGGGYGOoa6SeAIwsGBtv2qyHMT4NMgP59i1oho9Hq4GBVG5kRUkpLTWsXoyP8+MdpmVS1dBJn0aOUCewsa+EPC5PZX9lGo9VBWXMnNW1dvHBxNnFBOkoafcWQ4gI1UL6VtNJveTukCNfEWexRjUPnH0pmhB+iKHKo6RAbKjbQ7elmdtRsMoMyUTaXSh1Q+Dgp3btiOxSslgQZyrZCxTaIny0NRnVmsB+h+G0Mh9JvIW8VaPxxpi7hAN18U/ENOoWOmZEzyQgaEV04Uaix1eCv9h+264fqpPTulMCUQfeXNtkINg5vWr4gCIT2qJmmhyuPfcAIQ0p7p5OdZS10NtcwVZnHXeJ33Lo4kwLDeOrloWRFB6BVyvFU7eG/kasR1KF4Ms9CFhAL9YdAGwj6IDx+0bg8Ig7tEdYp/tF4pt2Efv/LyGRKSFmMKjyLK2fEkR0TwIGqNpIsBuZY2tEdeFlSjk2YB9FTQDc8k1JHUtNRw/ba7exr2EdWcBbjQ8cTqv9xQmjFrcVsrtpMubWcGZEzGBc8bli0FH5J6FRyxscEUNRg89meHe1PprkVrEskwSNLirSq1l5JWaeW5ckKRP+zEJpLIGqCpPzb1YY5YiKnduvw0w7sdzIj/Hws4X4Ky8aEExWoY3d5CxH+WsbHBvwoy7UuVxf7G/azvmI9AZoAZkTOIDVwcFHR3OZcNlVuoqWrhVlRsxhjGYNGMbyTpb9l9GolUQED/69HRfjR0Sl5jle3drK1uIlGazdPnjeOgnorRo0Si1HNztIW/rgohQ35DagUMt7fVcn1sweWHDx1kpnsjg3IVn/Dw8Gh3HvVfF4rDyQ11ERmlJbdDTtYX7Ees9bMjIgZpKjMUL4ZyjZJZTeI8N3jkj1rcKZUOy1TSC4z/jG+izjxs6WFoM9vg8A4KhNmsq0tn8ONhxkfOp7xIeOPabs5wgg/laGqkZ4CTAUsgiDc2m+XCSmj7ldHl9NNe6eTtFAjv5uTyJPfFCKKIBPgtoUpbCtu4u6PD/HaFRMJ0qu59o3d5NS2Iwjgr1Xy7zNGUd3WRYPVwds7yhkT4ce1sxJ4c1s5xQ0dyICHzh7D0+uLWJtbj0eEiyZHM1ZeAp/ehNCQC4By71tMnHYzpP4FgIONB7n0y0vp9kgz2q8ceoUX5v6XCR/cAC39Vpqn3ABNxTDhMvj6z9ILPnYmnP0qnPoUvHuR5KEKMOtOsDfAW8ulz4KMXX5mrt73KCLSDMKLB1/k1cWvjgTTJwjVHdXDotjdS5Au6Kgr0kX1w+sh3UuwUU15s31kleYE4NP91WzKqeYh88fodz0NSC+ssRHZcO7bYFRD1W5kryzB5OqSvKHn3Q2f93vl6MzIz/2A383Wsq7Vxqnp56A//I60b/L1yFb9sc/D9LtH4dLPCYyaxMwkC6Mj/fB31qF8/by+vnLHC7jn34t82o2+IjfDQLujnX9t+xfrK9cD8F7+e5wUdxJ3T74bveqHWWlVtFdwzdfXUGuXVldX5K3gL5P/wvKU5UN1278KFHIZl06LY31eA3VWSf5lbJQ/M/Vl6N45W6rxBMlqbcHf6ZZpiA70J3LNdQh1Pa6f+1fAuIugZi+Kko3cPul3rBNimZkUxMYCaRXOpFVwx+IU9KqfZ6hm0CiYniT5+/4vbK3Zyu/X/d77+aWDL/HK4lcGTJDmt+Rz2ZeX0eGUVthfz3mdx+c8zpzoOf/7zY/wP2HrdmHrcmE2qJmaYCY7xp9dZa0ABBlUTI43c8Pbu3nq/Cz++UUOqw5KfYFOJefeU9KJDtRz2/v7MGqUjIrwY26qhe+KmtGp5Phpldx/RiZ3fig905dl+XGSai/CB3cAIABGzXP87tLPIDSJNWVruGX9Ld57e/ngy7yadQeJ717cd8PBaZB1iWRJmHEqvHmWZEG46B9wyuPw1jng6gJDsCQ4+/5lALSMPZf/a9rErqZDALyb/y7nJJ/D7RNuRz2inTPCEDJUK9IqwNBz/v5T2+3AWUN0zWHjQFUbj63JZ095K/PTgrl0WixT4s0UNXRg0ih5e3sZjTYnV82IZ39FG9FmHTm1XjttrpwRz5eH69iQ10B6uIlXLp3Iutw6/vzRQeItBp67OJsXNpfw8d5qEiwGXrxkPIF6FYkWPfJ9L0szdv3Z+pT0gg5KZHXZam8QDeARPbyRt4IsfSDy/oH0rlfglCfgq7v6DOZLN0JjjmQ9cM0mqU5aHywpJb59rvdQZ/QUXqn91htEAzjcDtZXrB8JpE8Qamw1xPnFHbvhEGHRWihtK/3e/cUNNjIi/L53//EiyKgZscA6Aaht66Ki2c41owT0nz/nu7Nql+QyYAyB3M+lQRVA6kmw+VHftvYm3LWHOFSdRERGKCUx/0f4qAtRysBw8HUET78yHLcT9q2gTJfJf78pZE1OPR/MayO2xbe0Rb7x3xzwn0NwVBIhwzj5U9JW4g2ie/mi5AsuybiEdPMPq9nLbc71BtG9PLb7MWZFziJEP0xuDL8Aul1u6q1dXDw1Fo8oEmLUIAhgKHysL4gG8Lhxl23lH8pbuFNd0BdE97LvbZh+M2x8EGVLITHBySweFcqZWZEYNAoSgw3E/ABv6OOBzWnj6X1P+2zrcHaws27ngEB6V+0ubxDdy9P7nmZi6MQfPMkzwk9nd1kLD67OI7/OyrIx4Vw6NZa/nZJBQV0Hde0OOp1uihs6GB3pz+Gadm8QPSbSjzOzI3l6QwldTjeXTI1Br1Lw6NoCogO0XDcnkbe3lXPWM1uYmRTEB9dNoc3uZJq+EuGTI6o3u1qhfAvtgTE8uedJn13t3e3sbS0gUaEGV48ecX0OTL5eyihaf59USrjzRclrPW4WXLOxZyxqgTf7vKGLQlPYledrRfVu/rssT1lOcuCIjs4IQ8eQBNKiKG4ANgiC8IooimWCIJikzeLAAo1fMLZuF7k17WwtaqLL6aHJ1s07OyvJr+vg+YuzKW2yUdxoY1J8EIdr2rn/y1weOWcMnn5534syQvkmt56dZS2khBgZG+XP3ooWMsP9eH1rOYkWPe/sqOCLA1IH19jRzL7KVj65YbpUL+gepJ7T45L+IL38Bty3y454ZIqV2wG1B8B6RN2X2yXNqgen9dlvOKySynfv5ZQa7G4HR2J3SQFJna2OOnsd/mp/ok3DZ2/0W6bWVjusK9IWnYUDjQe+d39Zs41Q0/Cn/QUb1ZQ0DvydGeH44kGkts1BjbKDcR73wAZuF06XB6Grve8lptCAc6BYnNzjpKTRhtBSgsPlxBWbQLPSgsHx9IC2Ylc7j68p4IM9VQDYOwcRn3M5OFzVwreNVVw3O/En/JQ/DZfoGny7Z/Dtg+H0OIkzxbEgdgECAnX2OtaWrcUtDvKd/4bweETKmmy0dbkI99cQbJT6JqfbQ2mTjerWLj7eW80ne6u9NaJ3LE5B6RpY4+zuspLX2okYM0ids8fVp1Hi8XCwsplWhZbcdit3n5x+TF/o44lbdNM5yO+XUqakuLUYu8tOuD6cQG0gXe6uAe3sLvtv/rk6XjR1SPXQ20ubqbc6aOzo5uXNpdS2dXHVjDjKmu14RJGCug6+PFTLWdmRKOV9GTanjg3n7o8PkRZmZOnoCDocLoIMahQygXMnRvPnlQeoa5fGfCv3VpNbZ+XNKyehbq7om9jsj8uBx+MZ9LlwiE4QjkhUbauEbx/u+yx6en5XBKlcwpICrZWSD3sPTtG3Vtt7KCKHGg+hlquJNkWjkg+z28wIvzqGupe2CIJwANgPHBAEYZ8gCMMor/fzUdVi54/v7efMp7fwwOp8lHIZF02W1LD3VLRS197FtpJmHl9XwGNrC2jrdHL97AQOVrUTY9Zi1ku/zMkhBnaWtTAjKYhJ8YE8vb6Ih78u4Plvi3nknDGMivT3zhL20uX0UFjXIQW4YWOkmbn+pJ/hVeZeHLt4wL2fn3w2ivojVrFHnzNQeTAgDoIGmclTG2Fqn/qtunQzF4ZO82kiIDA/ej676nZxzmfncMEXF3D2p2fzVelXP2qgN8JPRxRF6u31wxpIB2uDqbRWDrrP2uWky+kmQDf8dckhJjWlTSOB9HDjdot8fqCaj8pU2BKO8IY3huMISOKp9YVUhy3oS7HOWwWjj0hJVqjpCEzn9UkVnLf7fLK/PovgFUuwF26hKe2CAdftzDiPD/dWeT/neqKk2rx+tGZcwpt5Iq98V0qjdeAE4vEi1hRLkn+Sz7bRQaOJNv7wycrkgGRmRs7k5YMv8+z+Z9lbv5d7p937o+usf004nG7e21XJksc3cdpTmzntyc3srWihvdPJsxuKWPLoJi55aTsHKtu4fVHfSuwbW8tpSzh1wPlK48/nYLUVITBesvLpT9JCKN8KfpG4/KJZkQ+2bjfv7ayktn2QgGQYMalMXJZ5mc+27OBsOro7OOvTszjv8/O49MtLyW3OJTskG4Xgu05zecblmNQjJTNDTW5NO+c+t5ULXtjGf78pZGZSEFPiJccBQYCVe6p5fG0Bj68tpKatixvnJvHZvhosRg2poUYiA7Tk1XUwJyWYrOgAnvqmiMfXFvLallLuPTWD2vYubxDdS06NlbImOwRES2PJ/siVEDUJf40/l2de7rNLIVMwxhgPzn5ZYIZgr1Ckl6SF0ni0P6ZwqSSxh3hrA5H6MJ8mf5n8F/6+5e+c+/m5nPnpmTyx5wlaulp+xLc5wgjHZqjFxl4CrhdFcROAIAjTgZeB0UN83SFnbW49nx+o8X7+Jq+eq2fGY9Io0Knk5NRa+XhvtXf/9pJmEi0GIvw1VLZ0cc8p6dgcboIMKv66LA2LUcMNb+3xti9ttFPd0kVDhwN/rZLTx0Vg0ioRRfCIIkZtz39d+Dg443nY8yY0HIbUZTDmHK+v3hjLGJ5d8CwvHXgJh9vBpRmXMskyBpa/BvWHJYuOgBgpnaZmHyy8D/a+LqXQZF/ia27fn+TFcOaLsOUp0JmZGpzNQ7Me4rXDr6FT6Lgs8zJC9aFcuOpCmrokoTK7y86dG+/k3WXvkhSQNPh5+9Hp6iS/OZ8qWxUh2hCSA5N/sAiOzWkjvzmfGnsNobpQkgOSMRypCPkbob27HUEQvtd66ngQqAmkxdGCw+1ALfetVyprshPmp0UY5ppTgBCjRhoQjHBcaLQ6OFzTTlunk3iLntRQE3KZgEYpw1+nYnWBlW8W38Ds0NEYCj+hO3wSwoTL2dGq4+n1hzEvTmD8vFdJyH8RhacLa/gsumfHYMl7E7sukryESwgXVESvv1la1QCw1jJ6263sW/gOLfNeIC7vRURBoHLUDegEPZuW1GAy6OhETUWHnYKFrxFT/DaqhoNUxZ3Bh53j2V/dQUa4CfVgVi7HCbPWzIOzHmRl4Uo2V21mVtQsTk04FX+N/w8+R5ujjaauJq4efTUujwuVXMVXJV+hlClp6WohJTCFNHPasU/0KyK/zsodH+zHYlBz7axoPKLI1uImmm3dPLg639uuoL6DzYWNTIoLZFtJM2a9kv1CLH5nvYNm+5PIPU5KUy9nVVMEq05pR1u5GU79r6REHBgvCSgpNOB20qkN4dP6IKItWlRyAYNGMazP1vcxN2ouyhlK3jj8BmatmeXJy7lhXV8wU9JewgM7HuCPE/7Io3MepbmrGbvTTrQpmtGWYw/7WrtayWvJo6mriWhjNMkBySMriD8Ce7eL+7/M9aq/O90iL20u5baFKTTZHMxIsnDXh32ZYXsrWom36Bkb6YfN4eTaWfGoFXJcHhG3KHLzir3etulhfvzt08MsHx/JFdPjMGoU3vHoa9+VolXKwRAA6adLehUH3pOC4sm/gwjJpnVBzALUcjVv5bxFiC6ES1OWk27vhEX3AyLYm0FjhLCxMOFqKPsW0k+TJkg1R4z9ZDKpdtoQDLtfJcTazBPT/sV75V+zo3YHy5OXk9Ocw77GfYBU1vjKoVcYHzKeWVGzjvo91thqyG/Ox+F2kOifSLx//FHb956/oKWAkrYSjCojyQHJI0JnvxGGOpC29gbRAKIofisIwq8ivXv1oboB2w5WtZEYbODGeUl8sGvg6tuushayY+PJr7Py0uZSlo0J54l1hZyVHUGD1TftKzJAx77KVnaXt3DvqZk88FUe5T21myaNgtkpwVJDtQES5kDUJKk2q9f/uQe1Qs3U8KmMDxmPR/SgEQXI+ViqzSpaJzUSZLDoPtj3Flz8CWRfLFlzHM1YXusPo86C1KUgyDEoVCwEZkbORCbIUMlV7KzdSb293ucwl+iixlZzzEDa5XGxsmAl922/z7vt6tFXc9Woq46p/Ol0O1mRu4JHdz/q3XbjuBu5JOOS3+RLuc5eR9CRisXHGblMjkVrocpaNeClVNJoI2SYra96sRjVNFgdON2eQX0wR/j5aLB2cecHB1ibK/URcpnAC5eMZ05KMBajhr8sTeP+VbkUuoL4x44JTIyYTl6Rk0miwIS4biIDdGwutXLPYSXT427n1NFh/OOjEpyuWGbE3UeD1c2OT6xsP6u0L4jupa0CT0cjS780MCP+/1Aq5NzWXU3Iu0u94mOmuJmEGEKwtgTSMusfPLm+mC92tNNk60AQ4PZFKRgHUVk+nsT7x3Nr9q1cN+Y6tIofPxnV4eygxlbDZ8WfAaAQFNySfQuHmg7x9L6nCdIG8cjsRxgbPHYI7v7EpKKlE7lM4Po5Cdy/KheHy4MgwM3zBr6ztpc2c8GkGHaUNnNGdiQarY7XahLY7r6TQJ2SmcpAzhdfxvLZU9IBggDL34APr/KuwrmCM/kk8X7uWNfMcxdls6ushb+cLE2un2j4afw4Of5k5kfPRy7IWVW6akCb7bXbKWot4rkDz1HUWgSAVqHlhYUvHDWYbnO08eiuR/mg8APvtn/P+DcnxZ/08/8gv1JabE429QjV9Ucmg/MmRg9qobqjtJnbF6aQX2elqMFOdWsnCplA+BEK34EGFZUtnQToVHywq4qyfuPRf50xijhLT+17aIZUBjj2AlDpQdE35grQBHBq4qksil2EoiEfxf53YcsTfReZehMcWgmBCbDk39LviPooCyCmUJh4lXQtuYpEuYI7QrPocnVRa6vlhYMvDDgkpynnqIF0hbWCG9fdSGFrIQA6hY4XFr7AKMuo778PYEftDq5dc60343Ji6ETum34fwfrgox43wi+foR4pbhcE4VlBEGYLgjBLEIT/AusFQcgSBOEXbYE1JcE8YFtWdAB/WZrGezsriAocuPo3NsqfFzcVY3O4OHl0GC9+W8yyMWE8v6kErcq3RqS2rZPkECN2h5u82nZvEA3Q3uXija2lON39Bocq3YAguj8quUoKQJsKJKGG3iAapEHm5kch+zLJx09tOHoQ3R+l1qej1Cg03mDV6XFiUvmmcgkIP8jPuLy9nAd3Puiz7bn9z1HcVvw9R/RR2l7KE3ue8Nn25N4nKWn7bfoN1tpqh81Duj/BumAqOwZOMJU12Qg2nBiqmgq5DHPPgGGEoeVwdbs3iAZwe0T+8tFBmjqktMGFGSE8du5Ynt9YTG17F5/ktJFXb+e1rWVolArq2ruICdTh9ohsKGrno4NNJFr0WB0uvshtZUe5NGfr1g0ykNGZ0QcE0+32sLagjQSji8Qdf+1T8AYo2QhByRj3PEuIo4zLZmdw10lp3H1yOu9fO5WpCcM7OdVLb7bJ/5LRYXfZ2VW3y/vZJbp4O+9tjEpp9aexs5HVpat/tnv9JRBsVDMr2cIne6txuKR3rCiCTDbw+80M9yPOrOe2hSl8srdKsmtzedhSamXlgUaiPRVY9j7Vd0DsTNj2jE8qq6L+IBPkBcQF6ai3drE0M5SF6Se20JtGoUEpVxKsHfi7lRaYRq291htEg5Rd9vS+p+karH62h8LWQp8gGuCf2/5JdUf19xwxwpGYNApGDSLamR5m5L/fFBJiGvieHRvlz5qcOgL0al7bUkpmhB9fHKzFdITlms3hIjpQR3lzpzeIBmk8uvZwHfL+/Y9MJlkEKgZfuNA4HShKv4VtR+hUbHlcynY0hkrnOFoQ3R+VDuTSuqBMkKFT6ihqLSI5YGBp4rFEV3fW7vQG0SD1kS8efBGH6/vLeNocbfx7+799yha3127ncPPhH3b/I/yiGepAeiyQDPwVuAdIQ7LFegh48HuP+gWwJDOUtLC+VJP0MBNnZkUQZzFwoKqdTqebcVH+3v1RAVoSgw1kxQTgcHlIDTWSYDGglMuwd7vJr7WyoN/LU6mQkRXtz5QEM+XNAwf1OTVWul2eAduPSVerr6poL9YaCB3t7YxwOaC9GrqPXi/aYG+gtat10H0V7RVckXkFSpnUIQsIXJJxCRbNsdNdrE4rTs9AIbU2R9sxj21ztA0QNfGIHtod7d9zxK+bOnsdAerhD6TNWvOgFljFDTZCTgChsV5C/TSUjgiODTkt9oH9UFVrJzaHNBjRKBVoVQps3QMFitweD/PSgnF5REZHSgPHTYWNnDYuwqfWfl5aMLmeCGon3tVXS61QUzTtPzTJLNw4L5FwPw0xRhHaBrFn6+0rO1uItxg4K03P5WO0ZEf7ozoBU29/LI5BRCKrO6pp6+7rZ4vaiga0+TWTGmri1LHhPsECQIvNwb2nZLB0VBhqhQx/nZKlo8P416rD/OerPLqcIkUNHXyyt5pbFiQhlwm4bE2+JzeFQ8vACV1DVzVXTo/n033VpIab0Dit0F4jRfAnMKnmVM5N6XPwMCgNnJ18NlUdVQPaFrUW0dDZ8L3nGuzd3t7dPkD9e4Tvx6hV8tdl6Zi0fcmm506IwqRR0dDRTVNHN5Pi+rRSQk0aJsQEMjNZGpOpFDLvAk1Jo43ZKX1jtY15Dfz5pFTqBqndz6m1eiedfhDODnC0eUVxvYgi+EWBJU0ae7ZX96l5D0KDveF7a54PNB5gUtgkLNq+n2Fy6ORjlqoMNkYpaCkYVCitF7vTTll72YDtI/XYvw2GNLVbFMVfrWlgvMXAq5dPpLC+AwGBxGA9FqMGu8PFvNRgXt5cyqljw5mVYkEUITvGn+IGG1MTgnhmQxGvfFfKzGQLsWYdCRY9n+6vYXaKhVvmJ+ERRRakhVBrdWDQKJgQG8gn+3xnZZeODvvfbEz9Y0BtktK5+6c7JsyD4FTp3/W5sPEBKFgt1WDP/ytE+GrENdgb+KToE6kmWqnjlqxbmBk50yftOs4vjj9v/jNXjLoCj+hBKVOikql+UN1IuD6cUH0otbY+oTWD0kCkIfKYx0YaIjFrzN7abIAAdQARxohjHvtrpLajFj/1CWAtpQmion3gS6qk6cSwvuol2KimuNHGr7bzOkGICzIgCL6xwoK0EIL7TapE+GtJCTWSV9tXEaRWyEiwGLj31Ew2FUiWgS63SG1bJ0UNNh5ZPpb8eisBOhXfFjSyr7ab50sncfmMd/HztGLXhlMpj+C5lQfo6HJx8ZQYxqT44axbgrKwX6qqIEg1rEqdNLjLWwVf3w32Rql+L+ti8Ptl9ynxfvEICD7WhdPCp7Gjdof387zoecNxa8OGQaNgflowu8taeHWLNDi+YnocbZ1OHvo6nzA/DQ8tH4McuP2DA9i7pfdoYX0HF0yK5qtDdXy2r4ZHlo9BJ6+XxDl7LSXLt0rCSTtf8rmmOyybhz/P556lSaiK18DXf4WOWphwJWRfCn7Hfu8NB/5qf27KuollCcuwdlsJ04fx6O5HB03hnhExg9vW38bS+KUsjV+KWeub1RdtjEYhU/is6mWYMwjV/XaF7/4XxkUH8OkN0ylrsmPQKEgKNnCgspXRkX68ua2ck0aFcsv8JNyiyIxEC+ty61mxo5xAvYrbFqaglAsoZAIr91QxLy2YWxYko1XKyI4O4Pb393HVjIQB49HTx0WgV/+IcEIfDKYISXyvo1+ZpDYAoidDYx6suQeq90i/LzNv7xufAk32Jj4p/oRXD72KVqHlpqybmBU1C62iLx19QugEbll/C8tTlqNX6JEJMiKMEcd0jskOyeb5A8/7bDsl4ZSjjqGCtEEsjl3MJ8Wf+GyP9Ys99ncxwi+eIZ1SFwQhRBCEFwVBWNXzOV0QhCuG8prHk2CjhqkJQUxJMHvrmdyiiL9eydJRYXy2v4YXNpXgcLkpbbRh63Zz67t72V/ZRnuXi8/21/DRnipumpdEZoSJ9XkNvL+7kgmxgaiVMsx6FQkWA+tz67liehw6lRyFTOC0sRHUtXWxp7xVuhGPGxrypZd028CZYB/8oyB2Giz8V5+CaPwcWPQvqZ7F3gIfXQcH3wdHO5RsgDfOhGbfWfSvy77m0d2SmEiltZI/bPgD+xv2+7TJCMrgmtHX8FbOW7xw4AVK20tZELsAuewIq4NBsOgsPDL7EdICpNnDOFMcT857kihT1DGPDTWE8tjcx7yKton+iTw+93HCDeHHPPbXSI2tZlgVu3ux6CxUdAwMpMub7CeE9VUvoSYtRfUjqyBDTVqYkf+en0WQQUr/m5ti4Q8Lkymo7+BAZRvWLicBehWPLB9DVrQ/AJEBWl68ZDyJwQb8tEpqWjs5WNXGPZ8c4slvCmnv7EblaOa88Dpi3aUsTAlga1Ej80bHcM8OBWev0VMqRPDnjw5T1mSnydbNI2sK2FLRSffsu+mO6wkaDcEw76+IpZvh/Hek1ZEV50FjviSIs+F+2PvWMH1zPx+pgak8MOsBzBopqJkRMYOT40/mYONBVDIVZyef/ZvsN/VqJZdPj+O0seGkhRpp7ujm/V2VtHU6ya21ctOKvXS6PMxNDUYuE9Cr5Fw+PZbUUAP/XhbPH0Z3kugqpLxLx+HZz+MOSADAo/GjIfEsHKPOlyaz1Saqp/+Tv+7WsDAjhAX+NfD2OZJPemeLNKG965UTemXaoDIw2jKaaRHTiPeP58ZxN9Job+SKzCswKA3IBBkLYxaiUWg43HyYB3Y+wPqK9QPOE+8fzxNzn/AqxmcFZ3Hv1HtHlL7/B2LMemYmW8iKDsCoUdJqd3Ly6HCyogP44kAtb2+vIMykYU1OHU9vKKLF7qSowcY/v8hBIZNxx5JUQk0a1ubU811hI2Oj/AnUKbl5fjLfFTUOGI8m9NZHt1ZI49DGAvAcZYVaroSY6bDg7322qkHJcO5bkgjfG2dIY09HuzQWXXmtNDbtYW3FWh7e9TBNXU1UdlRy+8bb2Ve/z+cSY4LHcEv2LXxY8CHPH3iexs5GxoeMP+Z3N9oymrsm3oVeqUcuyDkr6SyWJSw76jFKuZKrx1zNvOh5UvmiOoD7Z9xPWuBvS6jxt4ogDmEH3RNAvwz8WRTFMYIgKIA9oigevWr/Z2L8+PHizp07j8elfFi5p4pXNpcwPcmCw+Xmq4O1/OO0THaVt/D42sIB7T+6firBJg1dTjdqhYyP91bx0NcFuD0iUxIC+fNJaeyraKG9y421y8WG/AYOVbdzzcx47loQB/vfhVW3SSkwhmBY/ro0q3c07C1grQYRCIyVgmiA6r3w3CBCDBd8AEnzAbA6rFyw6oIBNcdXj76a34/7/YBDa221ONwOQnWhqBU/rha23dFOc1czfmq/H13n29rVSqujFX+1/49Ssv2B/GSJ6eP1fF725WXMjJxJZlDmkF/raJS1l/H64df5+LSPvdtsDhdZf/+aly6dgOwEUO0G2FfRyrq8et69Zspw38pP4RfzfNa1d2FzuFDIBP75WQ5f5UgrFHNTg/nbKelEBeqxdjpp6HBg0igJMvb1Iety67jnk8MsyQxFLhOYG9hI9rZbEJryQZDhmnozrWOvxioYabQ62FXeQk1rl3elsZcEi56V109DJXbibKlCqVShkSNl7xgssPVp+PJO3xs3hsI1m6Q+9xdOna2OTlcnHxZ8yIbKDcyJkvIx1lWsI9YYy+PzHv+5L/mLeD4dLjfFDTZOe2rzgNTVG+clsi63nlnJwXS7PFiMKjT2Gs5reQ5lntTHifFzsS54ALdCjx8dyAwWGlxaciobqasoBLmSOsGCvdvNxvwGVk7MRfnlbb43oQuE67ZIz9svBLvTTlNnE92ebvKa83gz5032N/ZNtKcGpvL6ktcHFQ5ttDfS4ewgSBs0nE4bP+n5HK6x5/dRVN/Bmc9sJjsmkLQwE80d3UyKC+Afn+fS0OGbOv2Xk9OYlxqMTBCobuvkja3lfHGgBo1SzjMXZtFg7abJ5kAhE2js6GZDfgMahZx3TwL5exeBrVHK5Fn6EIxa/r110gA4O6Xg29kpZV3ozVC4Rlq8OZKrN0D4WGxOGxd9cREFrQU+uy/NuJQ/jP/DgMOqO6pxeVyE68NRyH/4qnl1RzVOj5NwfThK+Q8TlexydVFnr0Mj1xCiH1KdgxNjsDQCMPSq3UGiKL4rCMJdAKIougRBGFjw9itjXqoFP62cqhYHtm4XdyxORSWXEWfWD2hrUCsIMqoJ95dSUjYXNvKfr/osNrYUNfPxnmpq2rtYEtJKsqqCk0cp2Z4QgeivgYZc+OzGvhnrjnpYeQ0sfUQaAIZk4pMDbq2F2gPSbHdQkrS/t5NorYDmYph1hzQruON56XzQF2gjzb6F6cMGBNJBmsHFd36KJ6lJbfqfZ6T9NUMSQP/iqLPXnRgr0loL1R3ViKLoFUaSrK80J0wQDRDuP1IjfTzprY9/bUupN4gGWJdbz/TEIM6bGEV+vZXyJjsWo5p0mYlAvRRMT4oz85eT03hjaxnJZiXjip6WgmgA0YNi88MExU1HFjadPeWtdLdUc21EC7ec0oLCFEJjm5WcriA+qTGiUsjQKE1odIP0N0f6mgIYw0ChHbj9F0jvoM/hdlDcVuwj6jgjYsZw3dbxoyEP6g5J773QUTSqwimssxLjKibOVsKnCwXWtITwwNYO76s21qznlPRAJhsqSDZ5EOyNyNV2FJp0KN8InS0IxeswFX0G02/2XsoCHJYpuX1db9aLtNLmp1UM8CwHwBAqBSa/IHRKndducWPlRp8gGiDCEDHAZ7qXIF0QQZwYQn6/FhKCDbxw8QT2VbbidIuMivAjUKfEYlQNCKTNejWxQQYqW+xc98ZuWuySVo29282t7+7joaURJLhzMHa3UqOJ4FtRySWjA5Cv7AmiAVxd8MkN0rMbnCKVxvTSVgW1+8HRAZZUCMmQhMU6W6FkkzQOnfsXSRC3bLN0jFzptXRVypSEGcIGBNIhusED1/81o+Z/OU6j0BBjivmfrjfCL5ehDqRtgiCYkdY9EQRhMnBstahfOCatii6nyN2fHPS+dKcmmJmbGkx2TAC7yvpSVO46KZXIgD6F76pB1IJf3VrKzksDMb17oVf8K9k/FtuZK6CtfGDaV0splG+GzY/DhR9CXM9AyFoLH/0OitZInwWZlEqTskRK3X7nIqlDszWCvQnm3wNf/Uny8bP0pahoFBquGnUV22u3e+uZgrRBTAyb+JO+txF+fkRRpMHecEKoduuUOhQyBS2OFm9gX9p0YgmNAZgNatq7nFi7nBg1P2wmeoSfzrqc+gHb9pQ1o1XKuWtln/fpOeOj+PPSNExaJXq1ggXpocxKCkJmq0P+9IYB5xCbS3izLIoxAd2c1Hg/mr09gzOZHMP8vxG7606mn/EmGuVRSk4iJ0j6Eq1l3mOZe/dAb9NfOKcknMJHhR9hd0lCW3qlnqXxS4f5roaY6r3w2inQJQ1NRFME5bNexOhoIWztJeDuJhmItWSinvYv/v5tB4nBBsqabFznvxuNtRS2vAut5dL5VAaY8yfp3QmQ+xlMuaFPyBNIDTOxfHwkW4qbqOgRE/3TSekoo52S9U9zj8CbIIMF9x7VkeNEZ3rEdF4++DItDmnco5KpuCT9kh+1OjjCT2NfZSuXvryDjh4hx3A/DRdOieb8STHc/fFBPD1DyOhALWN7RHLr2x3eILqXBbFKpuX/B0XOSgASgOjZj2EK94e2Ixw5RBHKt8Cav8K5b0JArPQ78u4lUL1baiNXSmPUiPHw3RNQ+DXYGiSRsUnXSgs+9YelxZ1AqTxCJVdxReYVbKne4hWkNWvMTAn/RWeQjfALZqh7sluBT4AEQRA2I03GnjXE1xx2ato6+ctHB33i2/w6KxdOjuGUMeGcPDoMl0ckJcRAh8PF1a/tZGJcIPPSggcNKs7LCsO462EfBW1Fayl+tZsl4/ojMYZJqdvubkkc5+JPpAFf7f6+IBoksbHPb4XwbGllO/0UqNopCYz5x0DBGrjkUzAngc7f5xJZIVm8seQNcptzUcvVZAZlEusXy8HGg6wqWUVjZyPLEpaRFZzlnZke4fjT3t2OXCb3EeEYTkJ0IVRaK30C6WDjj0v3H2pkgkCEv5aiBpt3UDHC0DMtMYj1+b6qvieNDufWd31r397ZWcFZ4yOZEBuIxyOyp6KFj/ZUcVG6iqSwMQil3/Y1nng1OO1cVf0XZIpJqKKzoLInkPa4YccLkLwIw/bHITYLBik9ya+z8vUhD6Mnv8BYRTE60Y48bAyEjfnZv4OhpMnexNbarXxd9jXp5nTmRc8jwT/Bp01GUAavn/Q6h5sOIyCQbk4nKWCgf/KvBo8Htj/vDaIBhPYq4po2oa/Z6uNwoWo4yGnZ1dgWjKet04nZWYtm4z9h1Nl9QTRAdwcUfwOR46FyJ/boWbRauwn37xluOayE1G3hfvEdXBnBNMcvo06fht3p5k/rWzh12nOMFkpQe6zIQkefUM+Z3Wlnd/1uPi36lCBtEEvilhyzZCgpIIlXF7/KoaZDdLu7STOnkRqYetRjRvj5cLk9vPxtiTeIBpiWFIRckLGvooVHlo+ltdOJUi7gFkVWHahmQUYoZoMKo1qBtd9xp0e0odiw0uf80Vv/ipj+pVTi0nHEZKhSA3UHoWKHFEhX7+kLogHcTlj9FzjlSSkF3BAC4VmSls+mh+H0ZyULrPBxPhNR44LHecefKrmKRP9E9jXs4/E9jzMueBxzIucQ4zeyMjzC8WGoVbt3C4IwC0hByunPE0VxoKfRrwx7t5smm6+1yxXT47jlnb3eOiuFTOCvy9L5x+c5OFweVh+u46M9VTx1wTgumRLjreEz61VcMSUc4cO8gRdqLoEx50kz1mvukQJjlR6m/h7W3y+1aSmRXuwao5Q6o9DQlnEKnaYIzIXrUNbul9Jw6g7BN//sO7cuEKb8XlqJ9jil1ex+NVoyQUZGUAYZQRnebTlNOVz25WVem4AvSr7g4VkPsyB2wU//Ukf4n6i11Z4Qad29mLVmqjqqvKquJ5r1VS8R/loK6ztGAunjyML0EFYdrGF3j4jimEg/Ag0qOp0Dq4HaO6XXyL7KVs55disuj8jpURaEtFMkoZuOOsmPtKkIYftzaACKvpSCm8wz4WCPX21bBRhCESq2SXV6RwTS5c12Ln5pG7VtDgxqBReMimRRqj9jw9KQyY8tmngiUGerQy7IeSv3La8a7drytXxQ8AEvL3p5QApjckDyoP6rv0rc3dKK1xHo2otROa0DtjvaanhqUyEOl4en5qmlVHDbwEwKWisgcR7dji6+ks3kw/f38+T5WfjpVFC4Ft67BBmgAkL3voL63M/IeqEWUYS3toNM0PH21XOZFGkeeO5hZHP1Zm5df6v387t57/LakteOaSkU5x9HnP/3+/d2dHdg7bYSoAkYtG56hP+dbreHvLq+Zzkr2p/Objf3rcoF4L1dVSSHGJgUG8jr26QJoTe3V/DO1VN4cPkYbnx7Dw6XB7lMINE4yPC9qxVBkMFpz8A7F0oe6YIMJl8HuV9Ibaw10t8djdhSFtMeko5/1R60xeul38HCr+Gbf/WdUx8kjWNN4VJwrfLN/BEEgfSgdNKD0ulydfHPbf/ko8KPAFhXvo7Piz/n6XlPE6QbKREYYegZkkBaEIQzvmdXsiAIiKL44VBc90Qh1KRhZlIQGwukehGTRkGD1eEjVuLyiKzYUcHMZAtfH5bqAg9Wt1Pd6uD2xamcmR2JtctFrFlHRIAOxl0Eq//P90Lxs6XAeeI1kvJ2c7FU//ztI5LaIcDo87xiOO7gNLaffB/3l6ykqmYPSxNncMXka4gWBNjypO+57c2g8YdDH/QE5SLM/COMPkcKsgdhR+2OAV57z+5/linhU4ZTNOQ3zYlSH92LWWP28RgtabSxOOPEE9EJ89OSXzdwID3C0BETpOf5i8dT1CBl3iRY9MhkAmlhJnJq+jzgNUoZMT16E18erMXVk5f47AE3T5vzkGWeKfWLlhT44Erfi1TuhMT5fZ+TF0vqsOMuGjR9Nremndo2B2PCtDwyro743bdBfhPuqitg0jXgf2LaEgE0djbySdEnvHjgRS5Ku4hXDr3is7+6o5r8lvzfpCq3F6UGxl3ou0oGVIXOwV8RQGDldp/t1Zpk73t8U72aRbpgFEGDTDokzMPZ7SB/6oPc+m4zothBUaONLEsnbPi3b1unHbHsO7TKJOw9nukeEd7bUcGkuBMnkLZ123h237M+27rcXeyo3XHMQPpo7G/Yz392/IfDTYeZFj6NG7Nu/HVnQRxndCoFy8dH8bdPpQmj6UlBPLHOV/Q2v66Dk0aFeT9XtnSSW9vOgrQQvrhxBtVtnViMavypkNKx3f0C6uipUhZkULIkvli6SZrIzPlUWo0GaUUZOBSRzoP1a9lb9RGTgsZwS9p/SFH5S5mR/bE1gt4C714kLQBNvAomXDWo3WCFtYKPCz/22ZbbnEtRW9FIID3CcWGoVqR7teKDganAup7Pc4D1wK86kNarFdy9LIP7V+WwJqeeCH/toB57bo84QGTJI4oY1ApGR/r7Ns44Q1oV3v6c5Gs6726InCTtU2ogbLQkHtbbwcnkUhA96Rrp30C+Qsb1+5/AJUqpOh9WrsGhUHJv3FxUnkE04ATg89vpipxAafoSbJ4OouoPEhw709ukxlZDtbUaf40/blE6h1qu5vTE0/FT+2FUGXG5XQPPPcJxodZWS4B6+OujewnSBVHe3pcGWd4jNnaiERmgZXtp83Dfxm8Os0GN2eC7KvzI8jH87bNDbClqJsGi55+njSIxWJqYc3v66me+ym2m6LyzSMx/ASHnI5j9p8EvIlNJKyZJCyF0NPhFS+m5g+Dpqc/5v3GdxK+71rtdvuVxUOlg9p2+Yo7DRKerk9ymXFocLUQaIkkOTGZT5SYe2fUIAA6Pg8EcOvr7R/dSZ6ujsFUaaCf5JxGs/+Wrkh+VlKVSTeaWJ0CuQpz9J7pDprDeEcn89FZMue+ANgBx4b9wqkdjMeTTZHPgVBroXvoYikMrYPqtsPNFKath1NngtKHc9QrxbbVMj72aTSUdiB4REMEzyPtQdA+Q4XV6Bv7fDCcePN53fH/copuClgLau9sJ14fT1t2G3WknyhiFRWcBwOa0UdpWitPjJNYU6xUBrbBWcN2a62jvlibK1leup6qjiqfnPz3Uqse/KZZkhlHb3sUrm0tRyAZ3vT2yexBFEZlMICHYQEJPf4snDc5/Dz67WdLiSVwAC/8Bmh6BxqBEKdD+9lGpXFBnhoX/hIgsqjuq+d23d9HU1QTA5vpdVHTW8+qMBwkSB7HK6qinJWEWpUHxqBCILdmIfux5ADTYG6iwVqBT6hBFERGRJP8k5sXMwyN66HR1IowIW49wnBiSQFoUxcsABEH4DEgXRbGm53MY8NRQXPNEIzHYwBPnZVFv7cKgVlDcYOOZDUU43X291fLxUTzwVV/KdqLFQFLw96zc+kXA/L9JNX8yxaAzcyi1MPpsSVzM2SWlxfSzHihuL/UG0b2sKvuK32X9nqiZt8PXf+nboTYBMtpSl/BCWDyvFryKiEh49dc8Znqc1MBU9jfs58Z1N9LU1YRckPPo7EdRy9XclHUTrx56lTp7HQICbY42Lsm45KiG9iMMDbW2WvzV/sN9G14sWgs5TTkA2LtdtPV4BZ9oRAXqeHNb+bEbjjDkpIaZeOGiCTTaHBg1SgL7PS+LM0N5aXOJVyxnwdstfHn9faROv0VK0y75Fkq+8bYXw7Nxp5+OIvMMkKukoMYU4VN/15+0MBMR/hoi7HsH7tz1Moy/AozDG2i2dbXxTt47PL3vaVyiC3+1P0/OfZJ389/1ttlUuYmT4k/ik6JPvNuCNEEk+fuu/OU05XD/9vvZXS+t0GaHZHPnxDt/3TWtplCY82fIugRkMgS/SFKB4OAQbN2j0M79I0qVBsEUxhTg8xuD6XJ6CPFTo1bIITheWkGLnQGlGyH/S6iX+jhd0eecOvVqOj0BxFsMoFXBjNtg5dV915erEGKmYuv21Qc4Z0IUJxJGlZErR13JnZv6bOCUMsnB46xPz2JW5CxMKhOfFH2CiEikIZJH5zyKn9qPB3c+yFelXwGQYc7gvhn3EecXR3l7uTeI7qWgtYCNlRuZGTlzJJj+mQj10/DHRalcOCkGQYDihg4+2lvt3R8dqKWts2+VOdikJiV0EPcCmQwS5sCVa6WsR0OIj6MLAAExsOQ/MP0mkKvBJK10lzce8AbRvZRbK6gUHQRNvxXW/b1vh8afksjR/PHQdnILNgFwcsQsbmmdTIunm5u/uZnKjkoEBJ6Z/wwXp10MAjy//3ncoptATSBzo+b+xG9thBF+GEMtNhbbG0T3UAf86ouvShttHKpuw+URSQs1EWNWE6BTseKqyby5rZzGDgcXTo4huSdo/uJADdMSzZwyJoLgo9WLyhVSJ3Usvsdv0qAcGKQHagLRyDUwticFfM/rUl30uIsg91MOJUznlcPPEqILYXnKcpxuJ7vrdtPp7GR77XbOSz2Pcms5nxd/Tll7GX+f+ndW5K2gzi6lq4uIPH/geSaGTmRy+DG8rUf42amx1XhXBU4Eei2wAEobTzzrq14sRjVtnd20dzkxjSh3Dzt6jQK9ZuDramyUP29fNZk3tpZh63Zz8eQYokMDQdUzAF/2COR8AnlfQOIChIzTUJjjB71Gt8vN4Zp2Cus7CNCpyIzwI8as54VLJqAuqR54gF8UqIZfxO9Q8yGe2PuE97PdaSe3OZclsUuYHjEduSDnjZw3SDOncUvWLWys3MgoyyiWJSwj0tiXml5lrWJDxQZvEA2wq24XGyo2/LoDaZAChIBon02BBjWgBnwDigHvaJVe+tOYL5VV9UdnJi40iAfHxfZNGCYvgXPegB0vSe/q8ZehC8nijStbeO27MmQCXDQllvExJ04mUS+zImfx6OxHeTf/Xa/Y2F+/+yse0UNmUCZP7Ol7Dis7Knlq71OcmXSmN4jWKrRMj5jOluot5DTleMuOAjWBnJ96Pi6PC5kgw6AysLduL4viFw3Lz/lroaDOSk5NOzJBID3cJE3mALcvSmVcdACf7qtmcryZRRmhHKhqZUJsAOOiAzgzK4KowKOIxOqDpD/fh0IpiYv1Y7DyPrkgR680SJNYpnDY8yaEZOBJO5n3yr+g3FbNtaOvBQE0cg2FthryW/I5Pel0cppyqO6o5r3895gdNZv/29xX+tjc1czft/6dVxe/OmKBOsKQM9SB9HpBEL4C3kaywDoX+Oboh/yyya+1csEL27zefCaNgvevm0pyiJHs2ECyYwN9fHQvtxi4dGosMtnQBxOpgalkBWf5DJTumnhXX6A15lypBro3sBEEqirXIhfkXJJxCQ/vethrdxVtjGZ58nLWlK8hNTCVc1LOoaS9hBZHC/sa9h15aWpsNQO2jTD01NhqSAlIGe7b8GLWmmnobMDlcVHaZCP0BBQaA0m5OzpQT26NlYlxJ06N+Qi+KOQyJsWbmRRv9ulXvQTGwbSbJOHE70lp7GVtbj3Xv7nbm+I4JT6QR88dR1qYCdTTEXcmIjT31BbKFFJ5jXr47a96J6Z6uXLUlTyz/xkaOyWNDq1Cy+/H/Z7vqr/jyswruTTzUmSC73dR2lbKk3ueHLBiBLCzbifXcM3Q/QC/FkJH4Ymehqx8s3dT3dR7MVqiiQ3qt2qnNUHaMkg92fuuVQPTEy1MSwga+AyfQBhUBubFzGNu9FwEQeDjoo+pt9cTY4zBpDKhlqtxuPt8ibfVbGNe9DzGWMZQY6vh3JRzee3wa7Q6WgGYHz2fZfHLSDOn8fjux70aKyG6EG7OvnkYfsJfDwer2jjvua1e1e1x0f48snwssUF6IgK0XDI1losmx3jHnqMi/Th3QvSQjUXj/eI5N+VcVuSt8G67atRVxJpipXTwsefD6HNBJqOjuYhNzYe4ZvQ1vHjwRW/Wgkll4pbsW/is+DPiTfFkmDN4O+9t4v0HTo4WtxXT3NU8EkiPMOQMtWr3DYIgnA70FtU+J4riyqMdcyJTUGfl0/3V7C5r5eTRYcxJsRDi57sisTa33htEZ0UHsDA9hH+vyiXIoGb5hCjGRfkP6KiORxANEKIP4d8z/01OUw6tjlbi/OJIN6cD0NLVwtaarXxc9DEJfgksS1hGathowrsbmNo2lS9LvvQG0QANnQ1EGiNJCUyhrL2MWZGz0Cv1fF3+NRnmDPY37ve5dqj+xBOU+i1QZzuxxMYUMgUB6gBqbDWUNDpOOOur/kSbdRyubhsJpI8T3S4Pu8taeHtHOaJH5NxJ0YyPCUCl+GHq2IIg0Grv5ruiJt7bWUmMWceZWZGMivQ7ZhBd397FXz8+5FMnuKW4mcPVbZKqfGAcwoUfQM1eSZU2OE2qrx4C8prz+Lz4c/Jb8lkav5RIQyQr8lbg8riYGj6V6o5qZkbNZHTQaARBIEzfJxLkp/ajvbvdG0SDVD+9r2EfUYYo3sp5i1MST/FxWwBp5XlH3Q6WxC1hZ91On33ZIdlD8nOe6LR19j1LEf5azs6OZPTRVPyNoWzP+jd+8YfQu9upkkfy710a0utK+b+T09he0syK7RUYNQrOmRDFuOgA5Ee8+k/kILo/vfcZYYjg5qybKW0vZV35Oi7LvIyi1iK+LvsakGwylTIlarmauVFzCdGHYO3uE3FcU76GJ+Y8wfsF7/sIldbZ66i3D6KGPgIAzTYHmwub+GBXJUkhBk4bF0FGuG/p3Nvby7E6XATolFw3O5FD1W3c8+khzp0QxdQEMyat6riORXVKHdePvZ7ZUbOptdUSaYwkLTCNorYiPi/6nILWAk5JOIUpYVMw+cdyUuxiStpLfFL/Z0TMwNptRSlTIpPJSApIYpxlHGr5wHFEnCmOAM2Jl9Uxwq+PoV6RpidwHjR4FgRhiyiKU47Y9hJwMlAvimJmv+2/B24AXMDnoij+cejueiBVLZ1c9vJ2Klulzv7bwkYunRLLn5am+gz0ypokxVm1Qsb8tGDu/zLXu+/DPZW8f+0UxkQFIIoiNW1dCECY//FLDwzVhw4a1H5a9CkP7HwAgM1Vm/mo8CNeX/I6GSHZzHe08d99//Vpf0HaBfxty99ocbQAsKVmC1eOupI4YxwhYSHU2Gpo6GxAQOCSjEtID0z/wffY0tWC3WknSBuEehBf1xF+GKIo0tDZcMK9TCw6C5XWSorqtYQMldCYxw0dteDokNJvDaFSTeyPICpAy/6qtmM3HOFnYVdZC+e/sNUbzH56oIY3r5zE1ISBKYTNtm5sDhcWowqNsu819sWBGv608qD383s7K/jw+qmD1/v1o9Pp9k6A9qets5+mRGCs9GcIKWsr46rVV3n71c3Vmzkv9TwONB6gwlrB6rLV3Db+Ni7/8nJeXfIqmUGZZJgzuG7MdTy3/zn8VH40dQ5cVa5or8CutbOpahMfFX3ES4te8gmma221NHc1o5KpmBM5hyiTVJ9b3VHNrMhZQ/ozn6h8daiOP77fNyH8/q5KPrhuCmlhpu99d7+V4+STfUbAiJSE14lW08Hmwkauem2Xt93KPVW8d+0UxkWfWH3zj8VP5cfLh16mzSH1k1tqtnBB2gWE68Nxi27OTj6be767hxZHC9trt/Nt1bdclnkZ3e5uYowxtDvbaepq8nFy6KXJPvA5HkHig11V/PMLqQ5/fX4D7+ys4MPrppIYLGXIuD0iBfXShMUV0+N55Ot8r43g+rwGHjx7NGdlR/XrR9VolENv5xegCWBaxDTv55LWEq746gpvsLy5ejN/yP4Dl2ZeyrLEU/nH1n9428b7xaNVaHl418MAbK3ZypqyNfxr+r/4sOBDzk89nxV5K/CIHvzUfvxt6t+OOfaxdltpc7Thr/YfcZYZ4X9myAPpYzDYKPoV4Engtd4NgiDMAU4FRoui6BAE4biru+TXWb1BdC+vbyvjoikxfYqGwPz0EFbsqGBqQhBfHqr1ae90i2zIbyTcX8s7Oyr47/oiFDKBWxckc9q4CPx1wyO6VGer45l9z/hsa+9uJ7cll5PiTmJm5ExK2kt87FMUMoV3sNfLG4ff4P1l79Ph7GDU7FHYnXYCNAHE+cX9IG9It8fN1pqt/Gvbv6jsqGR+9HxuGHcDcX7f7z85wvfT6mhFIVOccL6cQdogKqwVFDdGkBnxMwvQ1R+GQx9B9S5Q9tQuurqgqw2C0yH1JIiaLKk2H4O4IAOvby39ee9vhO/lvV0VPivCoghvbi33CaQ9HpHvipr46ycHKW60sSgjlNsWppAYbKDR6uCxtQU+57R1u9lf2XbMQDrUpGHpqDA+299XgiKXCV518ONFXkvegH51ZcFKzks9j5cPvQxI6bJJAUlsrdlKZlAm/hp/Ls24lEmhk2hxtCCKIqtKV/mcY0r4FN7Nk8TH7C47Gys30t7dzqSwScgEmXfV2aA0kGpO5bXD0uv3sozLMKqGP339eNNsc/D4Ec9Sp9NNRYudNTn1PLNh8Hf3SaPC+WSfbxnTVTPjeXp9kc82l0dkXW79Lz6QLm4r9gbRvawsWMm9U+9lV/0uHtjxAHOj5/JBgeTbXtlRSZQhCofbwYeFH3Ko6RAzImZwSsIp3gCpl6kRU4/bz/FLoratiyfW+T6b7Z0uDle3ewNpuUzgnPHR7C1vw97t8gbRvby5rYxgo4a/fXqI4kYbC9NCuH1x6rD0d0eKzT27/1kWxy3G2m1lYuhENldLpRJzoubw+uHXfdo2dTVhd9m5Y+IdVHdUMz9mPi6Pi2hjNBHGQQR5+3Gw8SD3bbuP/Y37yQrO4o4Jd5Ae9MMXfEYYoZfhDqQH+DuIorhREITYIzZfB9wviqKjp80Jk/NzZCZWSoiBR88Zi73bxeGadvZX+r5kVAqBb/IaeHB1vnfbPZ8eJtRPy+LM4Ut/HiylrNc+YE/DHrpcXZyacCqrSlbhp/bDrBnobykIAi2OFuL94jGpjz5wHYyC1gJuWHuDV1l8ddlqHG4HD8x6AK1i+EV9fmnU2moJ0px4PopmrZkKawWljf4/n/VVVxtseQoaciBmmqSM219N1NUF9bmw+3VJ0GTq78FydAGl6EAdZU12upzu4zJbP8JAjsw0zK+zctkr273uB18erMXW5eKZi7Kxd7u4eEoMTrdITo2Vr3omMn9IsqJaKecPC5NRyWV8sq+ayEAt9yzLIDV0+IPII/tmQRAG2FbplDqyQ6Vg2Npt5f8m/x9P7nkSh9vB6YmnU2evw+q0+rR/fM/j/E37N5IDkhltGc3T856m2lbN37f2qec+ufdJzFozZxnPGsKf8JeBQa3A7nAhiiJXTI+jw+Hi/i9zCfPXsihDendPjg/kb6ek8/DXBbg9ItfPSWDU90wW/jKSuI+OazArL2B/437ezn2bEN1A1e3eZ6+3Hn9T1SaiTdFcnnk5b+e+jVah5aasmxhjGTOk9/6LZpCHp38/Ud0q+T4/cs4YGq0DM21Oygznyld30u2WbKe+OlyH1eHi+YvGDyrqeLzpdHZy4zc3km5O5+L0i1lZsBKFbPD7cnlcWHSWHyWqWttRyw1rb/A+g7vrd3PjNzfy5klvjijFj/CjOfayzIlBMjBDEIRtgiBsEARhwnG/gRAjkQG+wdzFU2KICuhTNsytbefCF7Zx8zt7+dPKg7TZnZw+rm9WTCWXMTclmHd2VAw4/5cHh0+MK0QfIikj9sOkMnlFqlaXrmZF3goONh3k+rHXc92Y67BoLQNqby9Iu4A3c97kmX3P/E/1TaVtA+25NlRuoM5W96PPNYIUSAdqT7z63mBdMPlNVXS7PfhpfwZF7OZi+OT3kl/6tJshZupASw6FBsLHwqRrIWoSrP0b7H0TBvOv7EGlkBEZoOVQdfv3thnh52P5+CifiUlBgPMm+SopFzfafCwEATYVNlJQb+XaN3bxwFf5PLqmgPZOJxdNjsGgVkg10j+AuCAD9505ivW3z+bD66YyOyUYhfz4viJTAlIG9KunJZ7GmvI13s8TQydS2FLI5LDBXRA6ujvYW7eXk+JO4sK0C0kJSOGz4s+8+3UKHUalkdFBo719a4ezg30N+1hdunrA+daUrRmw7ddOoF7NzfN8rcEumxrDt4VNPLKmgCfWFfL5/hr+uCiVLw/0vbv9dSoumRrHVzfP5OtbZ3LdrAQsRg3XzkrwOZdCJjAn9Zftz53bnEt1R/UAe8Uzks7wPjPLU5azrnydd1+kMRJrt3WAqN2bOW8SpAnigrQLeGjWQ5yRdMZIqu33EOqn4aa5vs+mn1ZJWpg06XegspVTn9zMxS9t53dv7aG0yc6SDN/g0KCRe4PoXr4raqK6vXNob/4IUgJTBtiiXjP6GmwuG7W2WtaVr+Or0q/4+7S/kx2czWlJp/m0tWilMrG99Xt/1HUrrBUDnsE6ex2VHZX/y48xwm+c4Z56+qGTsgogAJgMTADeFQQhXhSPtJAHQRCuBq4GiI6OPnL3/0xEgJaXL53AFwdq2F3ewtLR4cxKDkKpkAZaTpeH5zYWU9bc1xF9ur+Gh84eg8Plxl+r4qzsSBIsBpJDjOwq803fS7Acn5dGTUcNh5sP09bVRrx/PIn+iRS2FhKuD+dvU/7G2vK1JPgncFL8SV4lxN7U6qLWIh7b/Rj3zbiP76q/46L0i6iwVlBjq2GMZQwRhgj0Sj2P7X6MiaETCY4efKDQ1NnE4abD1NvrJcEJcxomlWnQFMJATeCvajV6qJ7Pwai1n1ge0r0Ea4MpadhHhL/2p4vrNOTBmnsgbekPE38SBCmgDkyA/e9AUyHMukMKtAch0WJgb0Ur2SegFc1QcDyfzyPJig5gxVWTeWdHBR5R5NwJ0WTF+Pu0MWkHvrLSw4x8caCGwzV9K65bipuYnWLhnWsmHTOtuz9qhZzIgKPYvgwxMX4xPL/geVaVriKvOY+l8UuxaC20OdrINGcyL2YeXa4uXlj4AhnmDFq6WjjcdJgaWw0RhgjSzelsq93GZyVS4DwhdALd7m5+P+737KnfQ4A6gKSAJKxOK2/lvuWtV9xTv4fPSj4jKzhrwD1FG4/vc3A0jufzuTAjhGe12by/q4KoAB2Zkf488U1fnXO91cGXh2pZnh054NjQIzJtpiaYee3yibyzoxyTVslZ2VGMifQf0vv/sdTZ6jjcdJjmrmbi/OIwqozkNuciIJBmTiPBv28yoLajlsd3P87Oup1cPfpqytvLqbXXsjh2MTqFjkBNIFHGKNocbZyRdAaHmw8TZ4ojw5xBVUcVAr5ZFTJBhtVp5YUDL/Bu3ru8e/K7x0zNPdE4ns/mGVmRhJg0fLiniqQQA6eOiSAx2EiHw8nfP8vx0Xt4+btSnrsomzB/LRUtds7KjkI7SIaVSatApxyakKCmo4ZDTYdo724nwS+BYF0wOc05tDvaeXjWw3xb9S3FrcWcnNUT9F4AAQAASURBVHAyk8Im0djZiEyQ4RE9mFQmPKKH2zfdzrTwaVwz+hr2N+wnwhDB9MjpbCjfwMGmg9wXcB9ape9YsX//GK4PJ8OcgZ/GD4PKMOgzOJhF7AgjHIvhDqQv+oHtKoEPewLn7YIgeIAgoOHIhqIoPgc8BzB+/PgBgfZPISnEyE0hg6f6tXc52VzYOGB7ZYud/17gq3p6/sRoPttX7bUlCDKoWJgx9OkkjZ2N/GPrP9hYtdG77d6p9/LQrodoc7ShlClZGr+Ui9Iv8kmTWRCzgBW5K2hxtLA8ZTk5TTlsqdlChbWCMH0YFq2FtWVrWRq/lAi9NJirtdcOdgtYu608tvsxVhb26c/dMPYGLs+8nOSAZGaEz2BT9Sbvvrsm3vWrSrUZyufzSAZbLTgRCNYFU9PiYdxPTetuLYe190DG6RD8I31uNUbIvhQOr4Sv/g8W3gvKgQFUnMXAztJmrpj+26jTP57P55GoFH1WVt9HWqiJBWkhfJ3Tl6Vyx5JU/r0qb0Db4oYOrjliJfBEwCN6EBC+dxIpOTCZ5MBkAHbV7uKmb27izol38kbOG9y24Ta0Ci0zwmcQpA3ijZw3eCv3Le+xV466EpUg1eumm9OZFTmLF/a/QIerg9TAVMray/i0+FOuH3M9U8Km4HQ7AchtyqXSWsnZSWdjUpm8dYt+aj8Wxy0eyq/jR3E8n0+TVsWijFBv2vbb28sGtNlf2cpfTz52XaVWpWBmsoWZyT88/fR40mBv4KUDL7Grfhd5LdLv0g1jb+Dt3Ldp6mrCqDTy4qIXSTOn0dLZwvrK9eyp30Onq5PHdj9GuD6ci9Iv4s3Db5LfKpWtyQQZf8j+A2vK1nD7hNt5dv+zRBmjsDvtXJx+Ma8eftV7/TOTzmRDxQZA0mdp7mr+xQXSx/PZDNCrOHlMOCePCffZ3mZ3squ8ZUD71k4ndy/rExds6nCwMD2E1Yf7+tF7lmUQEfDzL1o02Bu4a9Nd7KqXJqEEBO6ceCeP73kcm1MS53109qPcOv5W7zEGpYHrxlzHa4de4+T4k8ltyaXN0cYXJV+glWtZFLeIlq4WKtoriPWP5fXDr9PY2UiUMsp7DrvTznP7n+ONnDe82y7PvJxrRl9DnF8cl2dezosHX/Tuu3rU1ZIV1wgj/EiGJJAWBMHKIPXPSCvQoiiKJqR/HBykzWB8BMxF8qVOBlTAwKh1GDFplcxKDubdnb5p22lhA1dDRkX68eH1U8mpaUcuk5EebiIuSD+g3c9FaVspn5d8zpbqLWSYM7g4/WKvmMxjux9jcexi3sl7B6fHyUeFHzEveh6zdbO9xycFJPHf+f/lQOMBVDIVrx1+jTGWMVRYK2h1tHJOyjkUthayvmI908KnsSB6ASG6EFwe14C6luLWYp8gGuCZfc9g1ppZU7aGyzMv55zUc2jrbiPWFEtq4I8MkEbwUtNR41XfPZHQKXWI3SH4/ZQxZVcbrLn7/9k77/Amjq0Pv6suWZIt915xwd303gkESO+N9EAa6b3dJF/azU1PLgmk93LTKyEh9A4Ggw0G3Hu35Sar7feHgohiQyABLGDfPH5izc7snpWH3TkzZ34HEqcfuhO9F7kC0s+CHd/C4gdh2mPwpzQaSSF6vthc2XeOYomjToBezeNnpnNhdTTNHVbig3xIDTMyeWAwBTWeIfjDDuCQ9wcWu4VNdZv4cMeHKOQKLkq5iJzgHJTy/W9v+Kn0J5L8k9zCTNNipxFrjGVD7QYWbltIvF88BqXBvf/5ze1vMn/yfO4YcgfratexsnIl12Vfx/cl37O1YSsAl6Vdht1pp8veRX5TPgl+Ce40iK/lvcbs1NkIgoBBZSDOGMcPRT8gE2RkBWWd0P8G+opUGBEXQPxRiiY7Uph7zKyuWs2u1l1EGCI4NeFU3s5/m/d3vM/M+Jl8sOMDuu3dlJnLWFS6iI11GxkaOpQ5mXN4ZtMzAFR3VtNubXc70eCaMPpyz5dclnYZC7ct5Pzk86nurCa3IZfBIYN5bcprlLeXY7aa2Vi7kYLmAgBMahMBWu/6t3us4KdTMSzOxJqiZo/yiD+pywfo1Tx2RjoXDo+m8Q/P0cNJYXMhX+7+kvymfAaHDCZcH863xd8iIvJ2/ttMi53GF7u/AOBfa/5FemC6e9Gkw+aa+HtszGM8tu4xpsRMwV/jj0Fl4Jykc1hXsw6b04a/1p+m7iZuyL6BIK3ngKLEXOLhRAO8tf0tgnXB2J12zkg4g5HhI6ntrCXMJ4yBAQOlLDESf4sj4kiLovi3FVoEQfgImAAECoJQCTwEvAm8KQjCdsAKXNpXWHd/opTLuHpsHFsqWthV1wHARcOjyYn267N+YoiBxP2sbh9OGrsauW3Zbexqcb3gtjZsZWjoUCZETWBpxVJaeloI8wnj4oEXo5arWVW9ig5rh8c5KswVbKjZQG5DLsmmZIrbipkRN4NEv0TGR43nnfx33EqzWxq2cMaAM/i+5HtMGhPZwdkAWB1W6jrreinSAthFO7WdtayqXsWq6lW8OPFFTk049Yh+LycC1Z3V7u/f25DbI1Cr/+Z+LKcDlj4BwekQkfPPDBFkMPAU2PY/WP4MTLjbQ9E71KjB5nBS2dJNlH//hfxK7CPIoGFismc0w5k5Eaza08jm8lYAZmWGMdLLHOmNdRu59pdr3Z9/K/+NN6e9yZDQIfttU9NZg7/an10tuwjzCSNQG8hrea8BLoEcvVLPxakXu7MuOEUndqedZzY9g/P3/f9ra9dy+5DbyW/KZ3zkeLY3bnfnit7asJVVVat4etzTnDngTL7Y8wWv5r1KkimJabHTuPZXl72fF33Oeye/R3pgeh9WnhhkRPhy7fgEXl1ehChClL+WO09OQas6toUIf6v4jftX3+/+vKJyBddnX88Lm18g2S+ZU+JPYXTEaJ7f9DxVna40VVsbtjItdhrTYqexqHQRCkHR54RQfVc9u1p34af24+uir1lfu97dfmnFUiZGTUSj0LC5fjMABqWBJ8c+Sbg+vNe5JP4aH7WC+2emcs27m6hq7UYmwA0TB5Ae0dtJDjJomJB8ZDJ6lLWVcdXPV9Ha0wq4xoVnJZ5Fgl8CRa1F6JV6RoSNwKAysLh0MTWdNe484h3WDrbWb2VR2SLC9eE0dTfxbdG3zMmcg4DAfzb9Z9+zrWYttwy+hf8V/o8JURPQKDW0Wlpps7Zh7umtbSIi0mJp4bW819hct5nHxz7O8LDhR+Q7kDhxOFIr0gdUOBJFsfkAxy7Yz6GL/5FRR4HEEAMfXT2C0qZONAo5cUE+6FT9Gz1fYi5xO9F72VC7gWuzrmVpxVKuTLsSq8PKN0Xf0GXrYlrsNGKMMe66G2s38vCahyk1l5IZmElSQhJyQc5/t/6XmXEzCdGF9HKOvyv+jtmps/m1/Feyg7OpaK/gta2v8W3xt1yTeQ1+aj/3AxZc+QFrOvcJtryT/w6jI0ajOsS8vxKe1HfV9xIu8hZslgBkyta/1zj3fbD3wIAph8cYQeYKD9/4Bmz/H2Scu++QIJAaZmRtcZPkSHsxcUF63rhsKKWNnShkMuICdeg1h0HI7jDhcDr4oOADjzIRkR9KfjigIz01eirPbn6WUxJOQRRFdxqhvXTYPCc9c4JyWF613D3Q3MtvFb/x4YwPabG0MOeXOR7HCpoLaOhu4K5hd3F+yvl02bpYVrmMV7a84q5jd9rZVLfphHak/XQqbpqSyClZYXRZHUT76wg2eldqwUOlraeNhdsWepTZnDZaelqYFD0Jg8pAQVMBEYYItxO9l59Lf+aR0Y8QZ4xjYMBAumxdvfadTo6ezJrqNUyPm94rxWZxWzEnxZ7EV3u+YnbqbDKDMknwTfDKKKpjibRwV8RjeXMXBrWCuEAf1Ec568Tu1t0eYzyAb4u+5ZLUS8gIzEAj13D/yvtRyBScnXQ2BqWBEF0IO5p28Pi6x9nSsIU4Yxyjw0YzKXoSP5f9zPcl35NiSun1bFtRuQKNUkOpuZRScymPrHmE4rZibhl0C8G6YA/h2wh9hHu8uqRiCeXmcgYGDDzi34fE8c2RkiTdBGz8/f9//tl4hK552Om22tlW2cqK3Q2UNnUeVJsAvZrBMf6kRfj2uxMNrn1KfSEX5JyTdA7pQen8d+t/MVvN2EU7xW3FVHVUsbpqNdsbt3P/yvspNZcCrpQWn+z4hIdGPkSMMYZfyn/pM/2FXJAjIqKUKXE4Hbxf8D5fF32NU3TyXsF7zMmcw+DgwajlasZEjOGMxDP4ofgHd/v9pTmQOHjsTjtN3U2YNN4nkmVziFh6dFj4G0r11bmw52fIOBtkh/HxJVdC5vmw/Uto9Jx4Sgkz9ql/IOFdmHQqcqJNZET6otcoKWnsZPmuBrZXtWGx9Z2m52ghCEKfK3ZK2YGd/eHhw7lv2H3EGeMYETYCudB7QKxT6FDL1YwKH8WpCaf2+UxWypQM8BuAn8Zvv/bplDoGBgwk2T+ZVdWreg1Y+7r2iYbd4cTqcGKxOXqpHh+LCIKAQuj9vvVT+XHGgDP4pugbitqK3Kkw/9y2uqOaHkcP3xZ9y8JtC7ll8C1EG6LRKXRcmHIhPkofSs2lfbYH137Zqo4qFm5bSIAmQHKi+6CmrZvVexrZVNZCW5ftoNqEGDUMjfUnJcx41J1o6DudqkyQoZaridRH8nHhx1idVvw1/vgofYg0RlLUWsSzG59lS8MWwLUI9Oi6R5kSPYUZcTOw2C290v6Ba7zoEB30OHq47pfrKG4rBmD+1vnMzZzLiNARqOVqhoQM4cKUC/lq91ceNklI/FOOVGj3Ma/M095tY8GKYl5asgcAg1rB65cNYXicd4UL/hVxvnEMCh7kDp0CmBY7jVnxswj2CWZB3gJ3eWZgJhlBGdy5/E5ERLQKLTdk38CrW19178FbV7eOwaGDOTXhVFQyFXannVBdqIe42BmJZ/Bb+W/835j/o8nS5JF6pdPWydMbn+Y/4/9DRmAGrZZWLvjhAo+0V5elXyatRv9DGrsbMaqNXjkpUdvqQK9xUt9dfWgNLW2w4hnXvmb1EdgWofWD5Omw8nk49UX4/btLD/fl8R92SPukjyFWFzVy9Tsb6bQ6EAS4ZUoSV4yJQ6/un38PMkHGRQMvYmnFUvdgUC7IOTnu5AO2szqsvLPjHfIa8gjWBXN+8vks2LbvmW1SmxgaMpRvz/iWjTUbuW/Vfdw65FYUMoWHQ31Z2mUo5UpijDFMiZ7ikU5rSMgQ4n3j3Z/1KpfQzy1Lb3GXaRVad57qE5Wmjh7+83MhH6136aAE+Kh46/KhZHqZ+vahYFQZuTbrWm5ffru7TKvQIiJyw5IbmBozlakxU2myNBFnjKPEXOKud8aAM/BR+qBX6nmn4B2copP5W+czOXoyJo2JQUGD3KHcW+q3MC5yHMsr9wmdpvqnUtnuSjc0PnK8RySchIsdNWauemcDVa2usOcZGaE8OCuVUF/vzmSSbEomRBdCXdc+MbOrMq7ijAFnMO+3eQCE+YRxRuIZzN8636WnIyi4OvNqqjurKW8vB6DL3kVRWxHVHdVcl3UdFoeFb4u+9RgvjokYw/KK5ahlarrsXe5yi8PCo2sf5bNZn6FSqPig4AP+s/E/7ufvKfGnEG30nowEEscuRyq0O0UUxZ2CIPTOpQGIori5r3JvYkdtu9uJBmjvsXPP53n8b+4o/PXHjiCBv8af/xv9f6yoWsGG2g0MDhlMiC6EkrYSfJQ+hPvs24s0Pmo8L+W+5P7cbe/m7fy3mRE/g08KPwFAI9eQbEqmtquWms4aTo49mbGRY/ml7BcKmwvJCclBISiYGTeT9MB0Om2dRBmiyG/Kd5/XKToRRZFQn1CCdcG8Pf1tfiz+kU5bJ7MSZpEdlH3Uvp/jlZrOGgK1gf1tRp9UNtsJMso8wvn/GtHlRIdlQcCAI2YbYdlQswV2fgeppwMQYlSjkAsU1rWTcgiplCT6h/p2C3d8lken1QGAKMKzi3cxekBgv6YxywnO4c1pb/Jd8XeoZCpmxM8gIzDjgG2WViwlryEPcG3V2NmykwdGPMDq6tVE6iOZHDOZ9KB0ajtrsTqtiIi8X/A+Nw26icLmQuxOO6clnMaQEFf4uI/ShzuG3sHoiNGsrlrN0NChjIkc02ulelT4KOZPmc8PxT8QoA1gWuw0Bvqf2CGQ26ra3E40QFOnlSd+3MHrlwzFR+N9E5YHy9jIscyfMp/vi79Hq9ASaYjkze1vArC4bDE35tzIK1te4cr0K+m2d1PTWcPE6IkMDhrMnrY9VJorCfcJp7Kjkm57t3vifPik4VyVeRXpQeksLV/KtLhpjIscx7rqdWQFZxFtiObbom+5f8T9jIkYg1EtPVv/iNXu4NVlRW4nGuCHbbXMzAxnZoZ3O9KRhkhenfoqP5f+zO6W3YwKH0VaYBqBukCSTcnkN+UzM34mC/MWuif87KKdhdsWclX6Vbyat28bQIwxhjhjHLn1uZwcdzJvTX+L74u/p9PWyZCQISjlSh4e/TDNlt47RpUyJSqFijjfOGanzSbWN5bNdZsZEzmGUeGjjqvUqhL9x5F6+t+KK5/eM3iqdwu/f550hK572Khts/QqK27soqXLdkw50gBRxihO1ZxKu7Wdl3Jfcs/aXZZ2GWcOOJN4YzzF5mJ6HD292jZ0N+Cr9nV/vn3o7UyInuAREtPj6OHKjCtxis5eK8kGlYHbBt/GnF/mYHO6wpIyAjPce+32qsFmBWUd9vs+kanuqPba/dEVjXZCfdXkWZpxOO3ID2bVvOAb6GxwO7dHDEGApBmw8U3XHmyVHkEQyIz0ZcmOesmRPgZo7bJR1dpbyK62rRvoP0daJVcxJHTIAfdE/5n1Nes9Pi+vXE6PvYeFJy10R0c0dTdx38r7mD1wNgP9B7KjeQfPbHyGON847ht+n1tMx+qwIhfkhOvDOTvpbM5OOnu/19UpdYyJGMOYiDF/406PT2r6GBPklrfSZrEd04703r91iimFK36+gs92feZxvMvmGi8s3LaQOZlzMKqMZAVmEaoPJdLoyqEd4xvDjUtuxCG6Jq9GhI0gwS8Bf40/pyac6iEeel7yee7fJ0ZPPNK3d8zSbrGzvqS3c7inrh0ywvrBokPD5rTxQ/EPaJVanlj/BHJBzhvT3uC8lPNYXLYYmSBzC4ztxe6042TflomLUi5iYtRE9Co90+Km4RSdOEVnnxkE/NR+XJRyER/s3KdFcfuQ24k2uFado43RXJx6MRener3cksQxxpEK7b7m919nANcBY3A50CuA+UfimoebKP/eM1WpYUYC9cdmyHGpuZSXt7zsUfZO/jvMip/FcxOf49fyX4k0RPYSC4nURzI2YixxvnFE6iNJ8U9xO9F1nXXuUK1NdZsoMZdwesLpTIqe5JH7eUjoED6a+RHFbcXolDpSTCnHVW5ob6SmswaT2vv2RwOUNdqJClBS1upLXVcd4fq/yBfaXAxbPoLhc1wpq440hhAISob8ryDH9dIdFG3ih201XDfxCK6GSxwWAvUqEoJ8KGrw1LXoK32Rt5MZnMmyqmUeZdnB2e5BZElbCVvqt7C+dj3ra9fz4sQXMVvNdNu7iTHGsKJiBQ7RQX1XPZ8Vfka4PpyLB15MZlCmtE3hEInuY0wwdkAgJt2xOSb4M3qVnlhjLCVtJR7lA/wGcFXGVUToI6jrrCNcH879q+4nQBvA7NTZZAdlMzJ8JB/O/JCSthLUcjVWu5Xblt1Ggm8CZyWedcJvC/g7+GqVTEwO5sP15R7lqeHHxmTur2W/Uta+L/e6DRufFH7CDVk3cGnapcQZ49Ar9R6CiRq5htHho4nzjSNYG0yyfzIahYYNtRvY07qHyvZKNtZuZHDoYLcK+F70Kj3XZl/LpOhJ1HfXE6mPJNk/GblM0naQOLIc6VHpO4AZePH3zxcA7wLn7reFl5ASauDhU1N57PudWB1Ownw1PHFmBr7HyEuzqbsJs9VMgCYAo9rosXdkLyIi3fZuBKXAq1tfJSc4h1sH38rLW16mx9FDoDaQS1IvwUfhw6z4We52zd3NtNva+WTnJ2iVWj7Z+QkZQRmMjRhLibmEz3Z9xtysue79uYIgkOyfTLJ/8lG7/xOdyvZK/LXeuSJd3uRgUJyawJ4gqjuqD+xI27tdqa6STwafo6hPEDce1r0K6WeCUkdqmJGXf9tDndlCyDGu1Hu84++j5j/nZDH3/U3UmXtQK2Q8OCuV5NAjn27wcFHXWUe3vZtoQzRjI8ayomoF6YHpnBJ/CqE+oTidTmo7a7lj2R2clXiWu93e/YcAczLn8F3Jd8hkMt7KfwtwCUb+VvEb75/8PikBfzP/+glKeoQvN09J5KUle3A4RRKCfLhtWvIxlf6qtrMWi91CiE9Ir7BWjULDjTk3Ut1RTaIpkQh9BEHaIBaVLmJp5VLGRoxlQtQEHl37qLvN8orlvHvyu2QEZZAakEqcMY4n1j/Bl3u+BKCgqYAVVSt4bcpr+Kp9sYt2wn3CD5g7/UB02bqo76pHq9Ae95PxCrmMK8bEsr26lbxKM4IAl4+KJSfK+ybILXYLtZ21qBVqwnxcq+XVHb01UKo6qmiwNPDKlle4e9jdzM2ay4K8BZitZvRKPfcMu4fs4GwGCYPc5yxsLuSd/HdwiA70Sj1jIsfQ0NXAHcvuYP6U+R79wFfty7CwYUftviUk4Mg70smiKP4xZvc3QRC2HuFrHha0KgUXDY9h9IAgzN02IkzaY2IALYoi62rW8dDqh6jurCYtIM2lsm2I6SX+EGuMJcoQxa7mXZwUexIGlYHvir/jktRLkAkyOqwdvJj7IvcOv5dE/0TAlQ7rwdUPMi12Gh8VfsRVGVdxWfplrKpaxWt5rxGgCeDi1Iupaa8hyldS4OwvqjqqGBbqfS8Uq12kqd1BoEGGf4c/lR1VDGHo/husfRUMYf88X/Sh4hMAAQmw+2dIPR2FXMbg31elLx99zGspHvfkRJv4+obRVLVY8NMqiQ30QS7z/hVYq8PK0oqlPLbuMZotzYwIHcHJ8SdzSvwpLK9azr83/BuVXMXczLkE6YIobCkkQBuAVqGl274vnH1k2EjyGvKYEDWB70u+97hGj6OH/KZ8yZE+RHy1Kq6bkMDJ6aHu9FcBx8g2L4vdwuKyxTy14SnaetqYGDWRWwffSqxvrEe9RFMi9wy/h0fXPsp3xd8RY4zh/OTz2Vy/mTERY/ho50ce9e2inQ21G8gIcu31L24r5tuibz3qtPa0sqN5B09teAqbw8ZZSWdxZfqVhOkPLTy5uLWYpzY8xerq1QRoArh3+L1MiJpwXAuTDgg28O4Vw10pVZVyYgN80PSDCveBKDOX8dwmV1Sjr9qXO4fcyUmxJzEtdhrfFnv2hXOSzmFR6SImR0+mqqOKb4u+5czEM1HJVdgcNj7d9Snjo8bT1tPGc5ueY0v9FiZHTyYjKAMfpQ9f7fmKRWWLiNBHcNHAiyg3lx/3EyoS3s+R1n7PFQRhxN4PgiAMB1Yd4WseNhRyGQOC9QyKMR0TTjRAaVspNy65kepO12xgflM+dy2/C6VMycuTX2ZC5AQMSgNTY6by7IRnsTvtmK1mhoQMYUTYCJotzby+7XUW5C3go50fMT12OiqZijXVa8hryGN97Xpmxc9CI9eglCkJ04WxtnotG+tcWc2aLE28uPlF6i31BzJT4gjjrWJjlc12AgxyFDKBIG0Q5eby/VcuWQa1eTBw1v7rHEmiR7r2Zv+eBmh4fABfbK76i0YS3kKoUcvgGBMJwXqvc6Kr2l0pBjfXbaatp81dvqtlF7cvu90tnLO2di2LyxZjtpr5rvg7HKKDbns3z21+DrvTjoBAZXsl83LmkRmYiVFl5JT4U8gKymJNzRpsThsqWW9HwxvV/I8FVAo5yaFGcqJNx4wTDbCjeQf3rrzX3dd+q/iNhXkLsTk80ynVdNZw29LbKGotAlxO0vyt8/m/0f9HpD5yvynQttRvwdxjRi7ImZs1l7mZc7k87XJ8lD6Aa4K/296NXbTzSeEn/Fz28yHZ323v5pmNz7C6ejXgGmfcvux2drXs+ouWxz5+OhXZUSZSQo1e50TbHDZe3/Y6v5b/Crjykt+36j4KmgoYHDKYx8c8ToQ+ghBdCPcOu5dQXSjh+nBOijkJvVJPS08Lb+e/zdrqteiUOsZHjqe0rZSNtRtJ8U8hzi8OuUxOlCGKD3d+6P57V3VU8VLuS9L2FAmv4Eipdm/DtSdaCcwWBKH8988xQMGRuKaEi4qOil4CDiXmEmq7akkNSOXp8U9jtprxVflS1V7F5T9dTkVHBUqZklFho7gy/Uqe3PAkANdmXcuiskV8vvtzAOKMcZwUexLv5b/H7UNv57yk89ApdayrXedxPRGRmo4akCYK+wVRFKntrCVA632p2soa7AQbXfN3Qdog98CoFx21rtXoQbNB0U+TWH7RIFe5cldHDCYjwpeFK4rZU9/BgGB9/9gkccyzo2kHc3+Z63aWJ0dP5t7h9xKsC6bMXNYrV+rKqpUMDe0dtbG9cTsz4mZQ31XP5vrNhPqEkh2cTbxfPI+vfRyA38p/44r0K5i/dT5WpxVwpTzaK/YocWJQ2lbaq+yn0p+4IecGj5Xh6o5qmixNHvXMVjM7W3byzvZ3uHvY3Tyw+gH3MZ1Ch120c8mPl3DroFvZ0byDH0t/BFxhtjdm38gHOz5Ao9AgE2Tu3OTfFH3DuUnnolUenGpyY3cjy6uWe5SJiJSaS6W+3I80WZr4qeSnXuUlbSUMChnEKQmnMCZiDC3dLTyy9hEeX/84OoWOSEMk12Zdi4/Sh6yALKJ8o3hlyysAqGQq5g2ax+e7Puek2JOI842j1dLqTpW2l257N+3W9qNynxISB+JITUv30xKShJ/ar1eZVqFFr3QN/DUKDR22DlZXr2Zrw1bOSjwLk8ZEZUclPY4ewvRhvDblNdqt7RS2FLpnpsHlkDtFJ/MGzaPF0kJ2cDZ+Kj9CfUKp7az1uKZBdezsRzzeaLY0o5arvTK1Q0mDnRCja1bdpDHR1tOGxdGNRv4HW50OWPZviB0Lvn8hRHYkEQSIGAyFP0LEYOQygTEDAvl4Qzn3z0ztP7skjlksdgvzt873SNXya/mvzIqfxZSYKX0+v8N8wpDTeyUqyhCFSW3CKTrxVfsSpg/D5rChlWt5auxTbGnYQqIpkYbuBuYNmoe/2p+arhrifeMpai1Cq9ASrg+nwlzB1satNHY1kh6YTnpgOpr+mrySOCL8Ob0ZuNIKlZvLKW8vp8LsmoBPNCWiEBQeeXplggxRFOm0d/Llni95etzTrK1Zi1quJlgX7E6VZRNtbicaXKuTSyqW8NT4p/ip5CfmZs6lobuBz3Z9xkD/gYe0T1qn0PU5zvBWQc0TBZ1SR6wxlp0tOz3KTRrX36Wus468hjwKmguYGT+TmfEzKW4rRq/UoxSUPDX2KTptndy14i53W6vTytv5b3PHkDto7WklRBeCQ3SgkWt6LRJ5Y9SdxInHkVLtLvvrWhJHgnjfeGanzubdgnfdZfcMu4cog2u/cpeti1dyX+F/u/8HuFadX8h9wT2wW1ezjtERo9lYu9EdlvVHcutzcYgOcutzUcqU3DX0Lq5Kv4on1j/hkfqi3FxOp7UTH1Xvc0gcWao6qgjSBvW3GX1SXGdjWIIrJFIuyAjRBVNuLifJ9Achuu2fu8KpY0f1k5V/ICwLlj8NPWZQG5mYHMzD3+Zz+0nJXhdmJ+H9dFg72NrQWyakot2VnzjFP4XJ0ZPdoZJyQc7s1Nkk+Cbgo/Sh0+ZSIo83xqOUKVlSuYQl5Uvc55kZNxONQkN6QDrxfvE8vOZhd9pBvVLP3Ky53LL0FgAyAzN5eNTD3L78do8J0yfHPsnM+JlH5guQ6BfS/NMYETaCtTVrAVd+3TMSz6CorYj5W+fT2tMKQJJfEtdkXsN/t/7X3faS1EvQyF0TK5vrN3PL4Fu4IfsGHl37KLWdtajkKhSCAoHeYbbbG7ezrmYdXbYu3i14l5zgHM4ccCbnpZx3SNsLArQBPDjiQY8UW5OiJpHiL+3z70+MKiN3DL2Dub/MdT9nhoUOIy0gjRZLC4+ueZRlVcswqU1cknoJL+a6dId1Ch3XZ1/P0xuf5prMa3qdt7G7kaK2IhbkLSDZlMwp8adwbfa1PLfpOXedsxLPkvZHS3gF0kap4wy9Ss+czDlMjJpIQ3cDkfpIEk2JHulS9jrRAZoAVHKVx+rI+KjxvLntTTQKDecmn8uamjUe508LTOPL3S5FTpvTxoqqFUyLmca1Wddic9pQyBQUtRbx743/JickRwq76geqOqq8MqzbKYqUNTo4dfA+BzTYJ5jSttJ9jnRbOWz/AkZeB8KRlnA4CJQaVyqskuWQMotQXw0JwXq+3lLFeUOj+9s6iWMMX40vEyIn8MWeLzzKE00uMccAbQAPjnyQ85LPw9xjxuq04nQ6ea/gPS4eeDECAkG6IIpbi2m3tns40QA/lPzAvcPvZUPtBiwOi3twC9Bh66DMXEagNpDG7kbyGvMoaCrwcKIBnt7wNMNDhxOok1Z7jheCfYK5d9i9LC5bjNVpRSFT8NnOzxgbNdbtRAPsat1FVlAW9w27jwZLA8G6YLY3bCfV3xWB46f2I1QXSl1XHQqZgpK2EqbFTsPhdBCi6+3UDAsdhsVmcTs8ufW5XJVxFakBhx7RMyp8FB/P/JgycxlGtZFk/2T8Nd6ZmeJEYmjoUD6e9TElrSXoVXqSTckE6gLZWLvRnbrv9iG388ymZ9xtJkdP5qNCl3CdWq7ulXY12hBNfZdLZ6ewpZDzVefzWeFn3JhzIz2OHtRyNRvrNlLRXkGwLvgo3q2ERG8kR/o4xKg2MiR0SJ/H7KKdS1IvQafQEWOIYVvTNo/jMmTYRTsdtg46bB2cFHOSWxhkYtRErA4rZqvZXb+tpw27094rRzXgoSIrcfSo6qgiQON9jnRtqwOtSsBHvc9BDtWF/mEgL8KqF2HARND69YuNfRKWCUW/Qoprx8r0tFBeXVrMOYOjkHmZiJWEd6OUKbk0/VL2tO4hrzEPhaDgyowryQhwqR7Xd9bTZm1joP9A/DR+3Lr0VqZET6Gqs4oV1SsAmJs5lw92fsDczLm9zi8i0tTdRIu1hU5rZ6/j7dZ29Eo9jd2NAL1CJQHarG3u/dQSxw9yuZz/bv2ve0U3SBvkkcN3L1sattDc08yv5b+SE5yDSqbCITq4Z+g9ZARlUNleSWFrIcurlmOxW9jdupuTY09GJsi4MOVCPt31KXannSRTEkNDh1LRXuGxZUEUxV7XPCj7ZXJSAlIktXkvQxAEkkxJJJmSPMplgoxrMq9x7aN32jH37Bs3GlQG2iwu4bvvi7/nrmF38cLmF+i2dxPqE8oFKRfw/Obn3fVtDhsFzQUUNHtKLF2aeumRuzEJiYPEC5Z8JI4WPfYeytrK+HrP17yW9xqf7vqUkWEjPUKyituKyQp0ZSz7tPBTwvXh3DPsHuZmzWVK9JRe6S9GhY9ie9N24oyeKYEifCKIMcYc+ZuS6EW5udwr9w4V19kJN3mGQ4f7hFPUVuz6ULQUejogcvjRN+5ABCRCWzV0uFLHpYUbUcgFfsqv/YuGEhK9ifeNZ/6U+Xw882P+d+r/mJM5B6PayOqq1VzwwwWc+c2ZXL7ocrY3buf0Aafz5vY3OS3hNHf7nS07GRQ8iNaeVnfO1r3EGeOo66pjS/0WRkeM7nXtgf4DKTO7dl5pFVoG+A1AKfPcq3pu0rnSKs9xSJgujFMTTnV/buhu6PXeBldU2obaDYArjVpdZx0huhAMagPzfpvH5T9fzv92/Y9/j/s3eoVLe+Xnsp8J0YWwsXYjV6RfwdzMuST6JVLeXs6G2g3uiDijyki8b/xRuFuJ/mRbwzYeXv2wO/uLEyfnJ5/vPr6iagXTYqcBrjFnS3cLV6RfwR1D7uCSga4Q8B5HD+B6TqnlatIC0jyu4a/x75W+TUKiP5Ac6WOUpu4m1tesZ0XlCqraD5ySp9vWTX5jPmtr1nLfqvvcK8pbGrbw0c6PeGrcUySZkgjzCSNMH8Z5yedxxoAzCNAEsKtlF7HGWJotzfxU8hN3Dr2TON84Ig2RzMuZR7QhmryGPM5LOY/psdMJ0AQwPXY6L056URqM9RPl7eUE6bxvj/SuWhuhfp6OtL/WH4ujm5aOWtj0JqTMBJmXPZZkcghJg5KVgGsG/oycCJ75uRCH8++trkic2BjVRlIDUhEQWFW9is31m5n32zx3OOOe1j3cvvR2DEoDs9NmM9B/ILcNvo1wn3Cq2quYnTabbls3l6ZeysTIie7n7ukDTufbom/ptndT0FTAtVnXEqmPJN43nqfGPoVCUBCgDWBk2EgWTl1ITnAOC05awKDgQQTrgpmTOYdL0y6V0mMdhyjlSuZmzuWpcU9xffb13D30buJ843hizBMk+SUR7hPObYNvw2KzYFQbmZs5F4fo4L4R99Ha08qDqx90RzLsad3DMxuf4cZBN7rOLVMS5hPGHUPvYE31Gr7c8yV+Gj9CdCFck3UNi0oXMTZiLK9NfY0oY1R/fg0Sh0i7tZ3culyWViyluLV4vxEFDqeD3S272VC7gVuX3Uqx2TVBXtdVx1PrnyI9MJ2zE88mSBuEv8af8ZHjuTbrWkJ0IayrXUdaQBpb6rfQbmtnVtwsArWBDA4ZzJNjn2RFpcvxnhU3iwBNAJOiJvHqlFeJ0PejGKmExO9Ib8tjkJqOGu5beR8b6lyzxv4af16b8lqfIU9Wh9U1e7zx332KOqypWUNWcBbRhmh8lD78UvoLX9m/4uVJL3Nd9nXYHDZ81b4MCxvGZ4WfsbJqJcmmZLQKLeXt5dgcNhZMXQCCayWjracNo9qISt47d6nE0cFbxcZ219gYneSZe1VAIEofTXveB5iMEWDy0iiGkHQoWQoZZwGQHeXHt3k1fL65knOHSANDiUNnXc06blhyAz2OHq7JvMa9ArOXqs4qVlavZEHeAvzUfrw48UX2tO6hy97FXcvvItoQjVwu59zkczFpTYwIHcGTG550Ky5vqN3AmYlncmHKhchkMowqI07RycyEmegUOnfqoSEhQ5g/ZT7d9m78Nf5SbtbjmIqOCh5c9aC7r52VeBa+Sl9ifWPx0/jxY8mPPDjyQa5Iv4IeRw96lZ6rfr6Kc5LOwe60e5yrzFzmzs4xJ2sO4YZwIo2RpAemY3FYkAtyNHINSrmSYSHD0Kv0khr8MUZrTysvbn6Rz3Z9BoBGruHlyS8zPKx31NiyymXctvQ2rsi4ope6usVhodhczNqatUyKnkSLpYUHVj/Ae9Pf45ykc7DYLfgofVhUuoj6rnpaLa2MixyHUlBS31nPI6MfocfRgyHFQLu1HYPKgFpx7ORxlzi+kRzpY5DN9ZvdTjS40h29uf1NHhvzWK+UEsVtxfxn038AeoXwAUTqI2noamBl1UouT7+cabHTEASB2s5adjbvZIDfAByig6UVS2m2NPfK5XhBygX4afzcgy9JoKZ/sTlsNHU3eZ3YmM0hUt5k52xTbxX3WF0owVu+ghHXH33DDhb/eMj7xJXfWh+KIAhcOCyKp38qZEZGGHq19CiVOHiaupt4eM3Dboemr2ezVqHF4XTtZ23taeXdgndRy9UsLlsMwO7W3exu3c3IsJF8sfsLfij+gSszrqTH0UOsMZbG7kaK24oJ1Aa6wyJlgqzPZ4NOqUOn1B2p25U4zBQ0FbChdgOiKDI0dKgruuEvJkCau5s9+hzA57s/5/Yht+Or8aW2q5bhYcPZ07qHJP8klDIlDqeDtIC0PrNv6JV69wRPTkgOst/FIfUqPXr0HnX/PC6o76pna/1WdrbsJMU/hZygHGns4IXsbN7pdqLB5RA/suYR3jv5Pfy1+4TeqjuqeWj1Q9hFOw5n36mqNHINpw84nS57F75qXyZGTWRj/UZSTCmYrWaKW4tRypRuMdy93Dn0TgxqAwZckzaSAy3hbUijv2OQ4tbiXmV5jXl02jrxk/thsbvUWg0qA83dzThFJ+AKxxoTMYaVVa4QVYXMJXTTamnl8vTL+aTwE7eCt4DArUNu5ZrF13DL4Ft4cfOLXJp2KfG+8UQaIlHIFOxq3sXZiWdLKxheRHVnNf4af68LzSyttxOgl6NR9u4rw8xNlCsUJOm9bxXdjUwGIalQthrSzgRgQLCBtAgjz/xcyEOnpP3FCSROdLpt3a5nsQAtlhYqOyrdx1ZVreKsxLP4fPfngOv5e1naZXy15yt3nW2N2/jP+P+4lZfBJQCZFpjG2Yln87/d/+OVLa9w+5DbeXzd43TZuwBQCApeP+l1BocOPno3K3HE2NawjcsXXe52iFUyFW9Nf4vMoEzAlWJNQMAhOjCoDO73s9lqdqdZ+yMKmYJnNj7jVk02qU2k+KcQ6hOKDBnnJZ/HT6U/ufsYuPrnbUNuY2zkWMClv2K2mjGqjH9pf6e1k+c3Pc+3xd+6y84YcAZ3D7tbmszxMpq6m3qVlbeX025rR6vQ4hSd+Kh8MPeY3ervP5X+xGVpl/Fq3qvuNrMHzibeN54HVj1Au60dcKX2u23IbVy9+Gquzria5zY/x11D7+KMAWdQ21XL+pr1RBuiGRsx9qjcq4TE38W7RtsSB0VGUEavsqkxU9Gr9Gys3ciCvAXUdtZyfsr5DAoZ5J4dXFS6iCnRU7h50M0YVUa67F2UtZUxKnwUu1t3e6TBEhH5vvh7xkaM5YvdXzA+cjwrK1cyO3U2n+36DJvTxrVZ1xKmD+tli0T/UW4u7zMNSX+zs8ZGVEAfeZedDqLKN/CljxHfznrvzgsZnAqlK92ONMAFQ6O5+4s8TsuOIDvKr/9sk/BabA4b62rWsbRiKeH6cH4o+YFhocPIDMwkrzEPcOlVKGQKnhn/DEWtRSSZknhlyyvUdNa4zzMibASt3a28e/K71HTWYFAZSDIlYdKYuHnwzcyMn0mntZPtzdvdTjS4MjW8U/AOWUFZKOTSK/9Y57vi7zxWla1OK1/s/oJoYzQrK1bS7ehmeeVyitqKODn2ZM5IPIMeRw9rq9eSHZTNloYtHucTRdEj9VBLTwtrq9eC4LqWVq7l+uzrkQtyxkaOpcnSRKwxlnR/V2rLLfVbeH3b65SaSzlzwJnMiJ9BqE/ofu0vMZd4ONEAX+75kvNTzv9babEkjhyR+sheZYNDBtPY3cj9K++n09bJZWmXMSRkCNGGaMrby6nqqGJJxRLm5czDoDKglCmJMcawpnqN24kGcIgOfqv4jYEBA6nsqOScxHNo7G5kS8MWAjQBPDvhWVL9UwnV778vSUh4A16m6iNxMGQHZXNN5jUoBNegaHT4aM5OPJvC5kKu/vlqV9qq2JNotjRT0lrCMxOewaQ2Aa5VDYPKwLObnuU/G//D2wVv81LuS32mQWm3tuOj9MFH4cPoiNFckXEFy6uWU9BUwK6WXdy36j7WVK/p1U6i/yhvL/fKELn8CiuR/r0H8YaaPOwaI2pTHIUtu/rBskPAPwHaKqB734STUavkkhEx3PxxLl1W+wEaSxzvtFha2Nm8k+qOao/yvMY85v02jxCfEJ7b/ByFLYV8uPNDpsdNdysY6xQ6hocNZ0HeAv679b98secLhoUNc0eWDAkZQphPGDctu4nWnlZiDDEE64Kp66yjpqMGX7UvQ0KHMD56vEeamb00dTe5905LHNs0dDf0Kuvo6WBpxVLabe08v/l5llYupaK9ggXbFrC0Yilf7fkKP40f12dfzwDfAYBr68AdQ+5gdfXqXufrsncxf+t8djbvJLchl6sWX4XFaWFS9CTOSTqHoaFD0aq07G7ZzdU/X82yymWUmct4bvNzfLDjA/eWhL74sxaAu9zed7lE/5FkSuLhUQ+jVbj0FJL8krg++3puWnITAwMGMiFqArn1uWxv2s6TY590O961nbUIgsC7Be/yrzX/4j8b/0O3o3c61HZrO1lBWaQFpjEqfBTLKpdR0lbCxrqN3Lr0Vuq764/q/UpI/B2k6eljED+NH3Oz5jIrfhZWh5VIQyQ+Sh8+K/yMWQmusoXbFgIwLWYa12dfz9vT32Zny040Mg33rLzHY8ViW9M2Lkm7BJkgc4eBg2uVu7itmLGRY3li/RN027vJCsrixpwbeTH3RQA+3Pkhk6ImSSsdXkJpWynBWu9SS3eKIjurbYwf2FtoxlS8nPaQNKJ9/FhbvZZxkWMAL90qIFdAUAqUr4XkGe7ikQmBbK1s5aGv83n6nKx+NFCivyhoKuCeFfdQ3FaMr9qXB0c8yMToiShlSlZUriArKMvDYXGIDp7d9Cw35dyEE6drwLrmYbdIz/LK5QzwG8B/J/+XzXWbcYgOnDi5KecmXtv6GlNjp/JJ4SeUmcvwU/vx8KiHGRc5DoVMwaToSXy480MP+y4ceKEk9HSccPqA09375Pdy/sDzXVENgsKdlWMvUYYoNAoNz216jiZLE2cnns212deyq2UX3xZ9y9jIsayoWuGuLxNkJJoS0Sv1dNr25SL/es/XjIkY43Hu3S27e03Cf7jjQy5IuYBwfXif9scYY4gzxlFiLnGXDfAbIKXL9EK0Si1nDDiDoSFD6bB1EOYTxsc7P+aazGt4K/8tGrsbCfcJJy0wjXGR43ho5EO09rSyrXEb7xe8T5PFFRqe35TP7NTZvc5/RdoVfFP8Da9vex2lTMkZiWcQbYhmScUSHKKDLfVb3FsWJCS8Fcn7OUZRypTE+XrmgPRR+hCgCeCN7W+4y34s/ZFBIYMYGjyUzXWbCdAEeDjRe+m0dvLs+GcpNZciF+QY1UZ2Nu1kWuw07lt5n7ve1oat+Kn9yArKYmvDVkxqEyXmEsrMZYT6hJLgm+BWg5U4+pS0lTAifER/m+FBRZMDjUrAqPUMgFGZa1B1tdDtH4u/IEMmk1FuriDaGN1Plh4EQSmu8O4/ONIAl46M46FvtvPx+nLOH+bF9kscdlotrdy/8n6Kf8+H3tbTxh3L7+DTWZ+S7J/s3kbz53SAdqedorYi1tes5/rs63sp3Ra3FWPuMWO2mvFV++Kv8UclUxHvF8/HOz+mvL3cdf2eVm5behufnvIpiaZEMgMzeWnSS8zf6lLiviL9il4OkMSxR31nPbtbd+NwOlg4dSEvbHqBHmcPV2deTaJfIotKF+Gv8fdoMyh4ENUd1byU+5I7rPbjwo/5oeQHzkw8k50tOzltwGn8a+S/aLY0o5KrUApKXt78MmcknsGrW/ftc90b1fZH+srOoVPqeml01HfWs6d1DzanjQS/BJ6d8CzvFbzHmpo1jAofxSWpl3iIV0l4D4IgeKQsi/eL5/5V99Ntd60wV3dW83Luy6T6p/L6ttfJCcnh/R3veyzKRBui0Sg03D/8fmxOG/lN+aT6p5LXkOfW7LE5bXxa+Ck3ZN/A0sqlOEUnckHOsoplxBpjifGVJlokvBPJkT6OyA7O5ss9X/YqX1y2mObuZlZXrybaEM34yPEsq1zmPj41eipymZy7V9ztnl2eGDmRabHTqO2q7XW+dTXrODf5XPIb85kRN4Mzv9m3Z/SeYfdwTvI5farQShx5ytvLOU13Wn+b4cH2citxQb0fNX5la+gIToHf1V7jfePZXJ/r3Y50YBLkfwHWdvg99QuAViXnpilJ/N/3BQwI1jMkVhoUnijUd7scnD/iFJ1UtFeQ7J/MqIhRLNi2gFnxs1hZudIdYh2pjyTFlMJXe76iuaeZwSGD2VS3yX2OMwecSbfdtd91rzBZqE8otw+5nc93f45ckBOoDaS1p5UeRw9l5jISTYlolVomRE1gaOhQHKLjoASgJLybcnM5N/92s7ufBWgC+O/k/xJljMKgMmC2mllTs4ahIUNJMiWx6/dtMllBWTRZmjz2poJLeEwlVzE7dTZf7vnSXd9P7cfVGVdTZC5isjjZXV8lUzErYVYvu9ID0t17Y/dyy+BbPCaNys3l3Lr0VgpbCt22vzr1Ve4feT+d1k58VD7SeOEYQibI3E70XposTexq2cW62nV02buYETeD74q/A1x/7/NTzufWpbfiEF0h/xekXEBOcA6f7Pqk1/nL28sJ0gbR4+ihzdrGk0uexKA0sOCkBaQHph/5G5SQOEQkR/o4oam7ieK2YjICM1hbs9bjWJIpiYLmAgb4DeC3it84LeE0bhl8C/Vd9RhUBnxVvrxT8I5HiNZvlb8xJnIMvmrfXtcaYBpAin8Kr059lYdXPexx7P2C94n3jSe3PhelXMmo8FGSgMhRwmK30Njd6HU5pHPLekgM/dNAyWHDWJVLXca+SZg433i+K/qWtp62PvudV6BQQ8AAKF8PAyZ7HIrw0zJnXDxz3tvEV9ePJspfUqA9ETCoDJjUJlp6WjzK96aZSvFP4Z3p75DXkMeTY5+k0dKIn9qP7Y3bqems4frs6/nvlv9y59A7mRYzjaK2IlIDUum2dZPflO+h7l3bWUtufS4XpVyESWOivL2cYF0wFrsFu9PO0+ufZmjoUHKCc/DVeOm/IYlDZnX1ao/JmiZLE5/v/pz7RriixXRyHRmBGXy++3MuSb2E8ZHjaehuYEjIEErNpSgEhcceeYWgIMU/hcr2SrcTDa7ohk11m0gNSCUjIIM5mXNQy9W93uPl5nI21G6g1FzKzYNuBlzbG4aGDSUz0DMUd03NGrcTvdf2j3d+zAMjHsBP43c4vyaJI0h9Vz2b6zYDLtX2PwrUqeVqnDiJNkSzrXEbU6Kn8MioR9jasJVhYcN4bO1jbica4KOdHzEoeBDJpmTKzGUe10n0SyTRLxGLw8Kb298EIFwfzs7mnfxa/ismtYkR4SNIMiUdhbuWkPhrJEf6OMDqsPL6ttd5f8f7PDr6USL1ke7BV4Q+goH+A9lct5kZ8TPYUr+FtTVrCdYF09bTRoulhcygTErbSnudt67LJWQzKnyUe3+fVqHlxpwbGRU+ig21G6jo3JdOQ0Dg/JTzmfvLXPdD87Wtr/HW9LekmcSjwN5BtVzWhzp2P2GzixRW25mW4Rnur68rwKoLwK7et6qrlCmI94tnbc06psWedLRNPXiCBkLZyl6ONEB2lIlZWRYue2s9X98wRsovfQIQ5hPGv0b9i9uW3uZ2VmanzibRL9FdJ9k/mWT/ZAC+L/6eu1fc7T5mUpu4NO1S1lSv4cKUC7lg4AXUdNSwMG8hVZ1Vva5X2FzIpamX8lHhR6ytWYtTdJIekI5RZeTdHe/y7o53uXnQzVyefrk7t6/Esc3O5p29yvIa8+ix96BValHIFVyadilOp5NmSzMbazeSbEomTB+GKIpcmnapx5avG3Nu5MtdX/YpTFnSVsI1mdcwInwEE6In9Dpe11nnsToOcOvgW5k3aF6fqTB3NfcWkdzWuI0eRw86mTTZeCzQae3kuY3P8V3Jdzw48kEuTr2Y9wreA1zjvpsH3cy7+e9yfsr5/FL2C7tbd7O4dDGPjn4Ui93Sa98+wO7W3eQE57ChdoN7EjItII0pMVNYXLaYV7a8Aric9JnxM3l4zb5FG1+1L29Pf5sBfgOOwt1LSBwYaZR3HFBmLnOLy9R11DEucpx7Rc9sNfPImke4LP0yXtnyChemXMjAgIH8a/W/kMvk3D7kdnY172JE2AhWVa/yOK9arubb4m85KeYknhr7FOXt5fip/RBFkdK2UsJ8wjCqjO6HZEZgBmtq1njMPFocFn4t/1VypI8CxW3FhPv0LfDSX+yothFslKFTew7ofcvX0xXY+yWYbErhh5LvGRU+EsMfQqe9iqCBsPM7sHVDH3oA01JDqW7p5qaPclk4ewgymZeKp0kcNsZFjuPjWR9T1VGFv8afAX4D0Kv0verVd9W7hSD30tLTgl6hx+qwulVqw/RhXJ9zPYvLFvdSVR4VPooXNr+AQW3gjiF38Fb+W2xv2s64yHHuOq9ufZWTYk7y2NsocewyKnyUO8f4XmbEzXDrkdgcNpq7m6noqKClp4Vzk8/FV+VLRXsFL+W+xFmJZ/Hvsf/GbDUjF+TYnDZW1aziuqzrel1rQtQExkaO3a84XWFLYa+tDPO3zmdqzFQiDb3TJY0IG8Gnuz71KDs59mQpZ/QxRKm5lO9KvsNf48+u5l1sb9rODdk3YHVaUclU7GjegUlj4s3tb3LnkDu5a8VdXJp2Ketq16GRa4g1xlJqLnWfTy7IUQgKXsx9kUdHPUpFRwUmtYk4YxzBumASTfsmIcdEjHGHie+lraeN3PpcyZGW8Aq8brpaEIQ3BUGoFwRhex/HbhcEQRQEwfvy+/QjNqdtn7CDzPXZITrosnfxU8lP9Dh70Cg0dNu7WVS6iFBdKBaHhQuSL+CJdU/w3o73GBq6LyTLR+nDzYNuxkfpw+zU2Wyq20RJWwmvbHmFx9Y9xp3L72R55XKMKiPPT3zenTMyzCes194ZgDZL21H7Lk5kilqKvC4P88biHhL+FNYtt3aiay6lOyC+V32NQk28b7x3p1VTacEvFio39HlYEARmj4ylsqWbV5cVHV3bJPoFhUxBsn8yk6InkR2c3acTDWC1WTkl/hTmZs4lK2ifwnujpZHC5kIMSgP5jfk0dDUQoA1gUvQkLkq5CLkgRybIODXhVKo6qtjTtofc+lye3fQs5yWfB4CTfeI+Vqd1v2mGJI49hoQO4ar0q1DIFAgInBJ/Cif9IWonvymfub/MZVvjNirbK3kx90UqOiooaCogUBtIW08bxeZifi77mYfXPkyzpRmn6CS/KZ8r0q9AKVMiIDApehLh+vBeYmF/pMPa0ausx9Gz3/42OGSwK13n77bPjJ/JyXEn//MvReKoYXVaATCqjAzwG8Co8FG029r5YvcXvLzlZfa07sGoMtLY3YjZaiY7OJtyczmf7/6cz3Z9xrnJ57rFcU1qEw+OfJDqjmq67d3kNeaxIG8B/1rzL1bVrKKgqYDMwExuGXwLarkarUJLl623QG5fZRIS/YE3rki/DbwMvPvHQkEQooCpQHkfbU5oog3RjAwbyZaGLcQYYvh81+fUdNZgVBm5Iv0KiluLmRE3g7ERYwnUBmJUGzk36VwAt4L3i7kvMiFyAnMy5zA8dDjPbXqObU3bMKqMXJN5DZ3WfWkwzFYz7dZ2KtorGBo6lA9nfEizpRl/jT9bGrZ4COYATIubdvS+jBOYPa17eim59yeiKLKxqIczh3muPOirttBtisbZh+IrQIr/QH4o+Z6R3rwqHZIKJcsgblyfhxVyGTdMGsADX21nTGIgmZF+R9c+Ca+jqqOKF7a8wE+lPyEgcFLsScT5xvFd0XeE+4Rz4cALuWvFXZitZkJ0ITw97mlyQnK4bchtnJdyHl22Lv694d9srt/sPqfNacPmsBGgCcBi36dxMSFqwgGdIYljC3+NP9flXMdpA07DKTqJ0EegVqjdx3Prcz32rIJLZHRO5hyq2qt4Le81RETGR47n4oEXo5S7JjfX1azj0tRLCdQGYu4xk1ufS3VHNTanbb+2mDQmDEqDh4DZ5OjJKIW+BcP8tf5cm3Utp8SfgkN0EKGPkFKxHWPEGGLICMxgRtwM3tz+JtWd1RiUBq7IuIIvdn/B7NTZZARmcGPOjZg0JhyigyfXPwm4nPDnNj3H9Njp3Jh9I5vrN/PcpudINiVzZfqVGFQG9wLMD8U/EGuMJTs4m8vSLmNy9GQcTgfratfx+LrH3fbIBTk5wTn98l1ISPwZr3vTiqK4XBCE2D4OPQfcCXx9dC3yfvQqPfcNv49tjdt4btNz1HTWAC6H9+Xcl3lt6mvolXp3XscuWxcz42Z6hGc5RSdLKpawtmYtMmRsa9rmPsfzm59nTuYcj2vKBJk79UWQLoggnUvgamTYSJ4e9zRvbn8TtVzN1ZlXe6y8SBw5drfuZmzk2P42w015owO7E0J9Pfds+1ZuoiM0bb/tXKvScayvWc/kmN77kL2C4FQo/AFsXbCfEMVAvZqLR8Rw8ydb+PGmsagV3rN3XeLo82vZr/xU+hMAIiKLShdxY/aN3D/ifpQyJU9vfNrtwNR11XH78tt5etzTNFuaifeNJ8QnxEMdeS9GtZGHRz3Md8XfEWuMZXjYcLQKrVdpJUj8c5QyJbG+sQBUtVexp3UPgiAQog3pc9LEV+WLU3TyXcm+sNhllcu4KecmNtVuYnzkeK5Iu4LvSr7js12fueusq13H4JDBjI8a37chIszNmsv62vWUm8sZET4ClUyFTLb/AEeFTOG2XeLYw1/rz8OjHmbeknlUd1YD0G5r5+Xcl3lh4gtkB2fjq/Z1RT60FpNkSnKtJP++UGNz2vi2+FsiDZG8v+N9wNXPUgJSPDLIGFVGt4K7TJC5c4ub1CZUMhUf7PiAQG0gV2VcRVrA/scQEhJHE68L7e4LQRBOBapEUdza37Z4KzG+McT7xrsfcnuxi3bW1a5z5ZG0tmNz2NhUu4kv9nxBqbmUJD9P5cNrs67lq6KviDREuvdZ2512rA6ru056YDohuhD3Q+6P6FV6psdN5+3pb7PwpIWMixwnzT4fBawOKzUdNe4we29gzW4LKeFKDwEaRXcLqo56uv1676X7I0n+yWxv3E73H1bZvAqVDkxxUL7ugNVGJQRg0qlYsKz4KBkm4Y3YnXZ+Lvu5V3lBcwFl5jIauht6rQLWd9WzqnoVtyy9hXlL5tHU3cSNOTd61InURzI0dCgb6zbicDpIMiWxtGIpQdogIvUH/jcmcWxS1FrE5Ysu55G1j1DdXs01v1yD2Wr2yCEtIHBu8rmsrFzZq/2yymU8MvoRnhr7FLG+sR6OzF42123eb+hsgl8CP5T8QLOlmURTIkvKlxDqE0qEPuLw3aSE12F32j0yCAA4RAc7mndQ3VFNe087W+q38OymZ7l35b1cmHKhR91kUzJWhxWdYt/E84rKFe5+KyAwK2EWCX4Jva5t0po4K+ks3jv5PV6a/BLDwoZJE4USXoPXrUj/GUEQdMB9wEHJ+AqCcA1wDUB0tBfnoz0C+Kp9PcS/9qKWq1lctpjJ0ZNZX7uedms7WUFZWOwWTk88nbaeNsw9ZkZHjCZKH4UTJ7uad2HSmPBV+/LGtjfICc7hyvQrCdIGMcA0gCS/JPeKdF9IQiJ9c6T6Z1Gra3+0t+TjFEWR1bt6mJHtKcZlrMp17Y0WDvwS1Cl0hOvD2dqwlRFhw4+kqX+f0AwoXgIJE/dbRRAEZo+I4cFv8jl7SCRhvr3FybyJE/n5eSRRyBSkBaSxtcFzLjjJlMSPJT8yK35Wr5QyeqUehaDg1sG30mXtorC5kObuZh4d9Sil5lLkghyH6KC+q57zU84nty6XyvZKzkw8k4ygjD4VlI91pP4JqypXcX7K+VS2V1LUVsRlaZexvWE7N+TcQFV7Fd32boJ1wXyx+wtGR4zml4pfPNoPDhnM6urVrK9bT1pAGhckX8ALuS941NEoNBS3FfcpEhrsE8wz458htz6Xyg5Xf8sKyjou+9uhcLz3TV+1L35qP1p7Wj3K/dR+FDYX8tmuzzCpTZyXfB6N3Y1sqtvEvJx5tFpaSfJPwk/tx/fF33N+yvmIosjb+W+TE5TD4NDBJPglkGxKJsEvoU9Hei8+Kp8jfJcSEoeO1zvSQAIQB2z9/UEdCWwWBGGYKIq1f64siuICYAHAkCFDxD8fP9Zp7m5GIVNgVBs9ykVRRCEoeGDEA9yz4h53Gpbzk89nWcUyZqfN5oYlN7gFQQQEbh9yO03dTSwqXUSHvYOLUy92pceqXkuEPoJ1NetotjTzxJgnGBo61KvCho9VjlT/LGwpJMrgPQq9ZY12emwikf6eDrOxcjNtUUMP6hyJpkTWVK9mWOhQ70zjE5wKO76B7mbQ+u+/mlHDxOQgnv6pkGfPyz569v0NjvfnZ39hd9oZHTGaZZXLqOpwpbRK8EsgPTCdJeVL6LH3cGnapbyd/zbg2gN486CbiTZGs7hsMSn+Kdy36j73+UJ0IVyQcgHPb36eWGMs4yLHnRArgidS/3Q4HTRbmvFR+nhMTBvUBh5Z84j7HS8X5Dw17ilezn2Zms4a1HK1ezL9woEXkmRKcueKjjJEEeYTxv2r7wfgm6JvOC3hNMaGj2V1zWpGhY8iJziHHkcPzZbm/doWYYggwnD897dD4Vjvm/vrb+CKjgG4e9jd3L/qfuxOV987L/k8ZMh4YPUD7roBmgDOTTqXjKAMXsx9kVPjT6Wus46NdRtx4uSjnR8RoY9gdupsTk04lSR/KR+0xLGN1zvSoihuA4L3fhYEoRQYIopiY78Z1Q80W5r5qeQn3sp/Cx+FD/MGzWNU+Cg0Cg3VHdVsrNvIO/nvkOCbwDMTnmFP6x5EUWR55XJqu2qpMFd4qGqKiKyoWoEMGZNjJlPYXIhKpqLL3oXNaWNJxRKGhw0nxhjjVv2W8F4Kmgq8aiC9bIeFtCjPsG5VRz0KixmL8eBSdPlr/FHLtRS3FXtnmguFCoLToHgppJ15wKqnZIVz26db2V3XTmKIlwqoSRwxZIKML3d/yfjI8RjVRgQE6rvqWVqxFKvDikKuYHXlandKmQB1AHannf9s+A9t1jb0Sj2nxJ/Ct8XfAq491E2WJgxKg7T39Dik3FzORzs/4seSH0nwS+DGnBvJDs4GYHP9ZrcTDa7w2rXVaxkdPpoPdn7g8Z7XK/W8OuVV9rTuobWnFZVMxe3Lbve41jdF3/DChBc4O/ls3sl/hw92fMDoiNEMCx1GW0+be4uXxPFLubmcD3Z8wKLSRQzwG8CNOTeSFZxFS3cLm+o38db2t6jqqOL+4ffz1NinKGxxjRcR4bVtr3mcq8nSBAK0WFowKA3MjJ/J6prVrKleg4/Sh7mZc/mp9CeGhg6VnGiJ4wKvW+YRBOEjYA2QLAhCpSAIV/a3Td7Ar+W/8sT6J6jtrKWorYibfruJvIY8nKKT3Ppc7l95P7tadvFj6Y/sbN5JqC6Un8t+Jq8xj1BdaJ/7Sbrt3cgEGaE+odw65FZae1p5YfMLbKzbSLOlmR9LfmRT3Sb0yr5TuUh4D/lN+X3uWe8PHE6RFTstZEZ5hv4bqja7ckcfQghgvF8cuXW5h9vEw0dEDuz6GTjwAoROpWBGRijPLt51dOyS8CpEUaTD1sGHOz/k1a2vMn/rfD7f/Tldti4EQUAuyMlvyuflLS+zIG8BFoeFpzY8xa7WXdR11fFW/luYNCYCNAHuc9ocNh4c+SAp/in9eGcShxuL3cLzm57n/R3v02RpYn3teq5ZfA3FrcXu43+mtquWEF0I02KnIRNkaOQabhl8C9nB2QTpgpAJMu5dcS97Wvd4OOHgmlS3i3buWn4Xm+s302Rp4puib/hgxwdsq992VO5Zov/otnfz3Kbn+HDnhzRZmlhXu46rF19NSWsJeY153LX8LvIa82iyNPHM5mcA6LR1snDbQpp7mvvsj6IoYnPaODvxbIrbinkn/x3quuoobivmuc0uBe8TfSuAxPGD1znSoiheIIpimCiKSlEUI0VRfONPx2NPtNXoTlsnH+34qFf5qqpV1HfVs7N5p8feuvlb57OiagUPjniQJ8c+yZDQIcT7xiPg+eAaHzmeWN9Y0gPSsdgt1HbV0mHzzBG5oXaD96YgkgBcYaO7W3Z7jSO9pcyKr1ZGkPGPkzcixspcOgP2v/+pL2IM0VR1VPWZu9QrMMWBowfqd/xl1ampoawtbmJPfftf1pU4/pgQNaFX2ZDQIUyNmUqITwhhPmEAGJQG6rvre6Uz+rX8V0aGjwRcK9xTY6YyPW66FC10nFHTWcMv5Z77mrvt3RS3uRzpMxLP6NVmWuw0zFazK8x2+AO8cdIbXJZ2mXs1uai1CLtop8nS1EuEblDwINqsbVgcng7R0sqllHWUYXd4Ot4Sxxc1HX33t4buBna37HbnkAaobK/k/9b+H6PDR/N/o/+PrMAsLk692KOtWq5GKVcyOmI0M+JneCjCu8/TUUmiKfHI3JCExFHG60O7JVxpL4J1wR7pqgBS/FOo7aztU9ir1FzKuwXvupVi433jeWLsE3y5+0u67d1MjZmKVqEl2hjN5vrNpAWk9TmzqJFrCNAG9CqX8B6K24oxqU34KL1DiOPnrd1kxXiuRqtbKxGcdqz64P206hu5TEGUIZrtTfneKTomCBA5FHZ869ozfQA0SjknpYby0pI9vHC+lAPzREImyGjsbuTmQTfzW8VvKGVKJkZN5KOdH7GrZRcKmYLrsq6jprOGgqYCgrRBvc7hr/HHT+3HmIgxXJ52OYNCBvXDnUgcaVQylUfqoL1oFVq67d0YlAaeGvsUn+76FKfTyYSoCXxa+CnbGl2rx3qVno8LP+aVya+gkClc27Z+Fwb9rPAz7hp6F3va9pBbn8ug4EGMCh+FU3T2skOv1P9lWiuJYx+VXIVOoXP3N41cw0UDL6LL1tXnJJ0TJ6uqV/HBjg8AV6aXWwbdwk+lPxGsC2ZS9CRXbmhbN63WVoK0Qe5JoL1EG6PdE4cSEsc60hPyGEAlV3FVxlUohH3zHjPjZrKschlzf5lLom8iIboQ9zEBgavSr2JpxVJ3WXFbMc9vfp5zks5hUPAgehw9/FT6EwvzFrr2UeW9yrLKZb1yPl+ffb1XiVhJ9CavIY94v/j+NgOABrODndU20v8U1u1bsZGuwMRDCuveS6xvLNsa8vir8Ol+I3wwVG10iY79BVNTQ/htZz0VzX2nlpE4PnGIDiL0Eby+7XV0Sh0mtYlOa6dbBMrutPNz6c9ckHIBWUFZOEWnhzMtE2RclXEVNw26iRcnvsiwsGF95g6WOPaJMERw6+BbPcpygnIY4DeAz3d9zoU/XMh9K+9DKVNybda1vJb32j4nWqknQh9BYUshVR1VPLLmEeb8Mge1XE2UIQq7aOex9Y+xvmY9D498mHk585gYPZH0wPReeXkvSLmAgQEDvVPoUeKwEaGP4OZBN7s/z82ay5d7vuTG324k1CeURD/PleMLUi7gp5Kf3J8X5C0g3jeeKEMUg0IGUdpWyoubXqStp42vdn/F+KjxHmNXf40/Y8LHHPH7kpA4Wkhv4mOEQSGDeG/Ge2xr3IZGriFQG8h1v14HwMLtC7lr6F1Ud1ZjdVhJNiXTbe/ulZe0w9pBin8KBpWB/KZ8psdOJ9oQzRd7vmBT3SYAzkk6h9Hho1HKlKQFppEemC69SL2czXWbifON628zAFi0tYvMaCVqxR8cZqcDY1Uudemn/a1zBmkDsTsd1HTUEqb3wllslRZCs6HgGxh82QGr+qgVTEwJZsHyYh49vXdqGYnjE4VMQaullSszrqTD2oEgCATpgnhszGPsat6FTqmjraeNkrYSZqfOZnvTdu4dfi8NXQ102jpJ9k9mcPBgKYz7BGFm/ExifWNdeic+oWQGZdJh6+CZTa49qnbRztqatexp3cPzE59nbc1a997o17e9jlFlxCk62dKwBYB/rf4Xj4x+hFZLK+22dlL9U4kxxmBQu7ZthfiE8OyEZ9lUt4mqjipiDDHE+caR7J/cX1+BxFFCEAROSTiFON84qjur2dm8063Y/uT6J7lj6B00W5pdaaxMSSwqXeQSFPsdh+jAqDZySeolbKnfQqA2kBsH3ciG2g18X/I9ufW53JBzgyvbjMpIVlCW10z8S0gcDiRH+hhBJshID0x353VcXLrYfaygqYBbl92KXqnngREPcP2S60kyJXFZ2mW8U/AOTtGJQqbg8TGPY1Qb8VH5MCpiFABb6rfwU+m+2cXPdn2GTJCxYOoChntjKK1ELzbVbeLa7Gv72wwsNpFf8y1cPt5TnE5fvwOb1he75u+rv8b6xpDXuM07HWmA2NGwdj5knA2qA4vzTUsL5a7P87h5SiIBevVRMlCiv5kUM4lbf7uVivYKREQS/BIYGTaST3d9So+jB6foJMEvgQhDBEaVkS57FwHaAGnl+QREr9IzPGy4xzt4S/0Wd9qhvTR2N7q3fj278VmsTitKmZIbsm/gvpX3cUnqJbyw+QWsTit3r7gblUzF16d9TaQx8s+XJFwfTri+d0aFbls3ZqsZP7UfaoX0vDoe0av0jAgfgVN0cuWiffq+dV113L7sdiZHTaatp43Xt73OLYNvYUXVCjpsHQRpg5iXM48wnzDC9GFkB2dT0FDABT9e4N4uUN1ZzfObn+e1Ka+5x50SEscT0hv6GCXaGI1CUHgocCb4Jbj3RO8NGbw261qiDdEk+Sexo2kH5393Pj2OHq5Iv4JZ8bMI14cToguhrqvOfR4fhU+fL1QJ76O2s5Z2W7tX7Ddasr2b6AAFAXpPhXjfsrV0Bf2zNBexvrH8XPozU6In96lA3+/o/CEoBQq+huyLDljVpFMxIs6ft1aVcvs0acXnRCHeN56XJ73MorJFaBQa2nvaeWXrK+7jMkHGAN8BrK9ZzzMbn6GivYJZCbO4JPUSaXuNBBH6iF7vaoPSQIguhCS/JAQEGrsbkcvkfFz4MTWdNTR0NeCr9qWtpw2A4WHDCdAdvOZJQVMBL2x+ga0NWxkZPpLrsq6TRKKOY2SCjFMSTmFj3UaP8kT/RN7c9iZWp5VX817l/OTzGRo6lJ3NO3l+8/Oo5Cr3NoFgn2DCfcKp7Kh0t9cpdF6VnlNC4nAixeweowzwG8CLk150740eFjKMO4bcwW8Vv7nr7GrZxStbXsFX7UtdZx33rryX6s5qmixNPL3xaZZXLUcj1/D4mMdJNrkG9HHGOF6e/LI0cDtGWFO9htSA1H4Pv7fZRb7e2MWoJM8VC3l3G9rmEjoD/lkeaB+FDya1qZfgnlcRP8EV3t3d+pdVZ2SE897aMtottr+sK3H8oFfp+WzXZzy1/ilUchVDQoYAEKQN4rHRjyHIBOb8MoeC5gLabe18tPMjXtv6GlaH9S/OLHG8E6QL4vmJz5NicqU7izPG8dLkl4gyRiGXy/ly95cs3LaQV7e+Sk1nDeASKNu71350+GhuH3I7WoX2oK5X01HDdb9cx+rq1XTaOvml7BduX3Y7zQehBSFx7DI2YixXpl+JUqZELVdzdYYrFdZe9e62njY+KvyIyo5Kntv8HE2WJmo6a7hn5T1sqttEfVc9j45+lNQAl/hmjDGGlye/TIyvd2QVkZA43Egr0scocpmcsZFj+Xjmx64QG10QMlwpURaVLnLXi9BHkGRK4rWtr/U6x8c7P2ZXyy4+2vkRU6KncOHACxkSMoRoY/TRvBWJf8DyyuUM9B/Y32awJL+bAIOMSH/PR4pf2Rq6AhIR5cp/fI1Y3zi21m/x3ry5PgEQlgVb3oORNx6waqivhowIX95dU8b1E//ZJIPEsYOfxo+rMq7i4TUP8/zm5xkVPoq5mXPJCc7hkTWPcOqAU3uF735b/C1zsuZIk5sSpAem8/q012m2NOOn9sOkMQHgo/ThiowruHP5ne66ckGOv8afwSGDuSrjKoaFDiNI11sNfn+Umcs89sKCS7S0sqMSf63/4bkhCa8jSBfEjTk3clbSWQgIKGVKLv3pUo86l6ddzhe7v+jV9seSH9nWuI2q9iquzbqWh0Y8RKhPqNRfJI5rJEf6GCdQF0gggQCUtpUyMWoiw0KH0W3vpsXSwqz4WQTpggjVh/ZqG6oLJbc+F7vTzk+lP/FT6U88OfZJyZE+RrA5bKyrWceM+Bn9aofFJvK/dZ2cM/xP6becNkylq6lPnXVYrhNliCS3fjNtPa34qv0OyzkPOwmTYfXzkHgSBB44bPu07HAe/2EHl46KRa+WHsUnCntTD35S+AkGlQGTxsT9q+6nobsBgd6q9n5qP6o7qiloKiDZlEysb+zRN1rCa/BV+7rzQ/+RsRFjeXbCs3y440N8lD4MCx3Ghzs/pKqjik8KP+GVya8clCPdYe2gsLmQDltHr2MyQXbQK9oSxy5ymZxIfSS7WnZR1FrELYNvocfew0c7P+Kk2JM4OfZkdrfsJr8p36OdQWWg3dqOXbTz0paXMKqNpAYeOC2khMSxjjR6O04obC7kyp+vdO+FCtAEsPCkhQwwuVa7xkeO5538d2jtaQVALVczKmIUj6591OM8G2s3MjN+5lG1XeLvsb52PaH6UPz62an8emMnUQEKIv60Gu1bsQmrPgib7vDMRssFObHGWHLrtjAhesJhOedhR6WFxOmw8nk45QWQq/ZbNdKkIy3cl7dWlnDjZGnf4YmCr9qXmfEzmRYzjT2tezjnu3Pcxxq6G0g2JVPYUuguuyT1Eu5YdgctPS34qn15/aTXvTcqQ6Lf0Kv0TI2ZSk5wDvetuI+nNz7tcbyotYhxkeMOeA6bw8aHOz7kpS0vMTJ8JJOjJ/Nr+a/u41elX0WMUQrRPRHYVLeJaxZf487+kmxK5rkJzxFldEXGXJJ2CUsrl9Lj6AFcE36B2kC34jfAisoVnJ9y/tE3XkLiKCI50scJ3xR943aiAZosTSwqXeQWBkk0JfLO9HfIb8rH7rST4p/CkvIlvc7z5zzSEt7Ld8XfMTh4cL/aUNfm4Mct3Vw90eB5wOkgYNcvNCcceOB2qCT6DeCX8l8ZHTEa5WEIFz8ihGdDQwFsegeGXX3AqmcNiuRf3+Zz4fBoScH7BEMhV+Cj8sFH6UOnrRNwZU24MOVCLku/jE5rJz4qH97Lf4+WnhbAtT/x26JvJUdaYr8YlAZ0Sl2v8oNxgEvaStwCeGuq1zAtdho35tyIVqElwS+BtIA0VAeYHJQ4Pui0dfLC5hc8UqgWthSyvWm725HODMzk/ZPfZ0fzDhQyBRq5hvtW3edxHinzi8SJgCQ2dhwgiiI7m3f2Kt/d4inMFO8XzykJp3BG4hkMDBjI9LjpJPgmuI+PCh/FsLBhR9xeiX9Op62TpRVL+/VF5RRF5i82MypJjZ+P56PEt3wddrWeHuPhVX/XqwwEaoPIa8g7rOc9rAgCpJ4OJcuhfM0Bq4b6ahiVEMC/FxUesJ7E8UmUIYrHxzyOSuZyTuSCnCRTEtNipnFeynksLltMQXOBR5udzTsRRbE/zJU4BlAr1MzNmusWIgU4Jf4UMgMz/7Jtu63dnbYIYFHpIl7KfYkUUwqjwkf1GVIucfzRZe+ior2iV3ljd6P7d0EQSAlI4YzEMzgl4RSSTEke48nsoGwmRE04GuZKSPQr0or0cYAgCJw24DTW1673KJ8eN/2A7RL8Elh40kJKzaUoZArifeOlF+Uxwle7vyI1ILVf/17fbe6ivdvJiKGeqx8yWxdBhYtoSD5w//u7pAYMZGX1KrKCMlF466q0ygeyL4BVL4JPIATsP3T7rEGR3PV5HpuGNDM4RhJlOdGYEDWBz075jNquWoK0QcQaY93RFtNjp/eKHDp1wKkIQu+91BISe0n2T+b9Ge9TZi5Dq9AS5xuHQWX4y3aR+kiCdcHUd9W7y0xqExEGKXXRiUSAJoBTE07lrfy3PMoPJGwa4+tS5y41lyIgEOsbi79Gep9JHP9IK9LHCaPCR3FD9g1oFVq0Ci03D7qZEaEj/rJdkC6IoaFDyQnOkZzoYwSrw8pb+W8xNWZqv9mQX2Hlqw1dnDFUh1zmOagP3v41XaY4rPqDV4g9FPw1/vir/dnwp1yXXodvJKSeCr/8C1pK91vNR63gkpEx3PLJVjp67PutJ3F8IhNkxPvFMyp8FImmRI8tCyNCR3DzoJvdz/Ubsm9gdPjofrRW4lgh1CeU4WHDyQzKPCgnGiDEJ4QXJr7gXr1ODUjl5ckvE64/vJFFEt6NTJBxbvK5nJ14tlv9/fExj5MemH7AdgHaAAaHDGZQyCDJiZY4YRCO5xCxIUOGiBs3evlg+zAiiqI7f2SYT5i0anFk+cdf7t/tn29ue5OlFUu5cdCBUywdKYrrbfzfF62cOVRHXLDnirChajNBBT9Ql3kmziO4l67D1sHissVcmnopfhq/I3adw0LNVij8ESbdD8H7VzB9fUUxcpnAqxcPRib7x92r3/qnxOFFFEVqO2sREY+n57rUP72Y9p52Wq2t+Kp9MaqM/W1Of/CP+ufx0jftDju1XbWo5CqCdcH9bY7EPo6Ll8DxgrQifRwhCALh+nDC9eHHy2BL4k/sbtnNG9vf4Nzkc/vl+nnlVh79opUZ2dpeTrSuYRch276kKXnqEXWiAfRKPakBaXxV9DV2h+2vG/QnYVmQdgb8+gjs+Bboe/Jy9shYKlu6uffLbTidx+8Ep8ShIQgCYfow6bkucdQwqA1EGaJOVCda4ncUcgWRhkjJiZaQOACSIy0hcYxQYa7gul+u47zk8wjxCfnrBoeRbquTd5e388KPbZw9zIeBEX90lEV8S9cQvuk9GpOmYtUFHBWbkk1J+Ch0fL7nC6wO61G55t8mKBmGXeNamf7hTmjc1auKSiHjtpOS2F7VxpXvbKCpo6cfDJWQkJCQkJCQkDgYJEdaQsLL6bZ389GOj7jwhws5KfYkRoaPPCrXdYoiJfU23l/RzvVvNlHR5OCaSQZig1wahYLDir4mj+gVL+BfvIL61NMOu0r3XzEsdBhKmZK3tr9FYXOhh+Ks1+ET6HKmg5Jdq9M/3AG7FkFng7uKTqXgrukpGDRKJj+zjGd+LqSsqbMfjZaQkJCQkJCQkOgLSbVbQsLLKGgq4O4Vd1NuLschOtzlE6MmArC0YulhvV7eHhNb9wTgcAj02OTYHZ7zawq5k9gQM3GtO2la1ELrH2wC6FLFYNYYoagNaOPoE4TcpmdRww4WsQNwhcMGagMJ1npjSJoJDKdBRy2sXAGs8DwsVxEsVzFaFsb8pTZeWrJn3yGZgJ9WiUGj4IFZqUweeHQjEyQkJCQkJCQkJFwc12JjgiA0AGUHUTUQaPzLWv2Ht9sH3m/j4bavURTFf5TfaX/905BjMMTcFJMEYG+z27orujudXU47gGgXNYJCsPyT6/ayQ32Bj6Aap937WRTtILY4cNY5EDucAHJggrJHHShzCg6gUxTEVlHmdOzvpEcAUUQQhP1sMN6LgCAoBBkyEC2iw9EhHrYN1KLTKRdksiNyyz4KUW5Ui3Kt3FNn7IdSeVtdl8ymMAQaFP4RcrnW4J78bFn6Vrl53ecNfZ2PI9g/+wlvfL5INh08f7brcPTPduBEScDurX/XI4E33Os/6p/9+Oz0hu/uz3ibTd5mDxy6Tf/4+Slx+DiuHemDRRCEjaIoDulvO/aHt9sH3m+jt9t3sPT3ffTn9aV7P/b779/FG+9fsungORJ2eeu9Hgmke5U4GLzxu/M2m7zNHvBOmyQOHmmPtISEhISEhISEhISEhITEISA50hISEhISEhISEhISEhISh4DkSLtY0N8G/AXebh94v43ebt/B0t/30Z/Xl+79xMUb71+y6eA5EnZ5670eCaR7lTgYvPG78zabvM0e8E6bJA4SaY+0hISEhISEhISEhISEhMQhIK1IS0hISEhISEhISEhISEgcApIjLSEhISEhISEhISEhISFxCBzXjvT06dNFQPqRfo7Ezz9G6p/SzxH8+cdI/VP6OYI//xipf0o/R/DnHyH1TennCP9IeBHHtSPd2OhtOdclJPYh9U8Jb0bqnxLejNQ/JbwVqW9KSJw4HNeOtISEhISEhISEhISEhITE4UZypCUkJCQkJCQkJCQkJCQkDgFFfxsgIeFwOqjsqMQpOgn3CUetUPe3SRJ/g6buJposTfir/QnUBfa3ORISEhIS/UyrpZWG7gaMKiMhPiH9bY7ECUx9Zz1t1jYCtYGYNKb+NkfiOEFypCX6lZbuFj4s/JA3tr2BQ3RwasKpXJt1LeH68P42TeIQ2Fy3mftX3U9FewXhPuH835j/Y2jo0P42S0JCQkKinyhoKuCBVQ+wq2UXAZoAHh71MGMixiCXyfvbNIkTCFEUWVOzhgdWPUB9Vz1xvnE8NvoxMoIy+ts0ieMAKbRbol/ZVL+JV7e+is1pwyk6+WrPV/xS9kt/myVxCFR3VHPzbzdT0V7h+txZzU1LbqKyvbKfLZOQkJCQ6A9aLa1uJxrA4rDw0OqHKG4r7mfLJE40ytvLuWnJTdR31QNQ0lbCrctupaGroZ8tkzge6JcVaUEQooB3gVDACSwQRfEFQRAeBU77vaweuEwUxerf29wDXAk4gHmiKC7qD9tPVAqaClhfsx6n6GRo2FCSTElsa9zG2uq1KGQKUv1TifeNJ9IYSZeti7zGPDbVbsJf60+YTxiFzYUMDhlMRmCGR+j26urV7t9lgozZqbPpsHXw4uYXGRwymMygTAwqwyHb29DVQG59LjuadpASkEJOUA7BPsGH5buQ8KSms4aWnhb3Z4VMwb3D7+W38t+o7qwmJziHEF0Ia2vW0m3vZmjoUAaFDEKr0FLTUUNufS41nTUk+CWwvXE7ckHO0NChDAkd0o93JSEhISFxKJS0lrCudh11nXXE+cZxxoAzaLY0o1Voae1pRSVTUddZx56WPZitZirbK8kIyiAnOIcgXRBVHVVsqttEaVspWUFZZAdl46vx7e/bkugHGrsayW3IpaCxgGT/ZNc4wicEi91CQVMBdV117G7ZjVFlZGT4SHQKHZvqN1HRXsGg4EFkBGVQ21nLhtoNNFuauTb7Wr7c/SWl5lIAhocOZ031GkraShgYMNDdB/8u3fZu8hry2Fi7kWBdMENDhxLrG3t4vgwJr6a/QrvtwG2iKG4WBMEAbBIEYTHwtCiKDwAIgjAPeBCYKwhCKnA+kAaEA78IgpAkiqKjn+w/odjeuJ3Lf7oci8MCuByllya+xHW/Xof4e0o7o8rItVnXMjVmKhtqN3DPynvc7cN8wpgeO53LF13OixNfZGL0RPexJFOS+/fzks9jWeUyStpKAFi4bSH3DLuHCwdeeEj2dto6eWHzC3xd9LW7bFbcLO4fcT8+Kp9D/wIkDoif2g+FTIHdaQfgwREPsiBvASVm19/x/R3vc2X6lXxf8j21nbW8lf8Wz014jkHBg/jXmn+xuno1dw69k1t+uwW76DqHNl/Ly5NeZljYsH67L4njiy6rndlvrKe6rZsPrhpBXKD0LJCQOFyUtZVx9eKrqeuqc5fdNOgm1tasJSsoi/d3vM+tg2/l48KPAVhWucxd77SE07gh+wbuWn4XWxu2ustvyL6BqzKukkLBTzC6bF28vOVlPt/9ubtsWuw0Hhr5EOuq11HTVcN/Nv4Hp+gE4OKui1lfu94d/QBw2+Db+KboG3a37gZcCzW3Db6NZzc9y4iwEbT2tHLfqvvc9U9POJ17ht+DTqn7WzYvKV/C3Svudn8O14fz+tTXiTJG/a3zSRw79EtotyiKNaIobv7993ZgBxAhiqL5D9V82Jd4/DTgY1EUe0RRLAH2ANII+yjxU8lPbicawO6081XRV/xn/H94YuwTzMuZR6hPKDWdNVR1VPHMpmc82td01qBVaAF4MfdFzD37/swjw0eS4JcAgEltcjvRe3kx90WqO6oPyd5Sc6mHEw3wXcl3bsdO4vASbYzmziF3uj8LCL2+648LP+akmJMAcIpO3it4j4qOClZXryYtII011WvcTjS4ZneXlC85OjcgcULw4q+70arkTEwO5p4v8vrbHAmJ44r8pnwPJxrgi91fEGuMxagyEmWIYlfLLlIDUj2caICvi75mT9sekkxJ7rECwIK8BVR2SFuETjTKzGUeTjTA8srlFLcWg+BanIk2RLuPGVVGDycaYP7W+YyOGO3+7BSdLC5bzLCwYWQFZfXqg18VfeVerT5UmrqbeG7Tcx5l1R3VFDQX/K3zSRxb9LvYmCAIsUAOsO73z48Bs4E2YO/SZQSw9g/NKn8v6+t81wDXAERHR/dVReIQabI09SrLCcrhf7v/x5rqNSgEBWclnUWoLhSn00mnrbNX/b0zh2arGZvT5i6PMcbw2pTX2N26u8/9Kha7xaP+wWC1W/sud/RdfjQ5HvunUqbk9AGnkxGUgbnHTFFbUa86FrsFtXxfSL/ZasbucDnOPkqfPvtMa0/rEbNZom+Ox/4JYLE5+HBdOf93ejomHxU3f7yFXXXtJIUc+rYRif7jeO2fxwPd9u5eZR3WDnRKHU7RiU6hw2K3IIpiH61ha/1WVlatZF7OPF7KfYkuexdWp/WQ3//9hdQ3Dx9/HqtpFVrm5czjzuV3Ut1ZjZ/aj9uH3M4nOz9hW9M29/jyj1gcFlRylUdZh62DG3NuxGK39Krf13UPFpvTRru1vVd5j6Pnb51P4tiiX8XGBEHQA58DN+9djRZF8T5RFKOAD4Ab9lbto3mfT2NRFBeIojhEFMUhQUF/f7+DxD5mxc/y+Jzmn0ZlRyVrqtcAYBftfFL4CT5KH0J8Qrgo5SKP+iqZCoPKgFahZXbqbAK0AR7HQ3xCGBMxhqygLHQKz7Ca0wecTrjPoSl4xxhjSPJL8iiL9433mMHsL47X/qlVakkPTKe5pxmz1dzr7zglegprata4P5+VeBZhPmEEaYPYUr+FUeGjAAjWBRNjjCHcJ5wpMVOO6j1IHL/9c8nOeuKD9AQZNChkMkYPCOTr3Kr+NkviEDle++fxQIp/CgqZ59rMzPiZ7iizyo5KxkeOp7G7kRhjjEe9eN94artqqems4a38tzg14VTA9d6I0Pe5ZuJ1SH3z8BFtjGZcxDh8lK7tN6cknMLb+W9T3emKTmztaeXhNQ9zadql7jZ76+5lZtxM1tWsA1wr2H5qP2anzmZY2DBSA1OJM8Z51E/yS/rbY8RgXTAXp17sUaaUKXuNQyWOT/ptRVoQBCUuJ/oDURS/6KPKh8D3wEO4VqD/uNEgEji0eF+Jv82gkEE8P+F5Pi78mElRk1DL1byx/Y1e9Xa37qbJ0sQA0wDm5czjqz1fEWGI4JzEc1hfu57rs69ndPjoPq7gIt4vntdPep2F2xayu3U3s+JmkR2czdMbniYtMI1hocMI04f9pb3+Wn/+Pf7ffLTjI1ZWr2RU+CguTLlQym38N2ntaSW3Lpc1NWtI8E1gRPiIXgOhvayoXMHKqpXckHMDK6pWUNFewcTIiYwKH8UrW18h3jeeMxPPZELkBEL1ocyfMp938t+hpaeFZ8Y/Q259LgqZgmRTMgpBwdvb30YpUzIyfCTxfvFH+c4ljhd+zq8lJ9rP/XlQtIkP15dxx/SU/jNKQuI4oKS1hNU1q2m3tvP8hOd5O/9tGrobODXhVGIMMThFJyn+KVyXdR07m3cSaYgk2T+ZzXWbyWvMIyMwg0RTIv/d8l8A6rvqCdYFc1X6VZyZdKZHqLfE8U+bpY0t9VsI14eTEZSBXJBjUpv4tPBTj3o2pw2z1UxWYBaDggcxNnIsr297nd2tu5kUNYlxEeMQESk1l1LQVECwLphEv0QAArWBPDvhWT7Y8QFratYwJnwMFwy8AH+tPwA7m3aysnolbT1tjIscR1ZQVq/V7T8iE2Scl3QeeqWe/+36H5GGSOZkziHZP/nIfVESXoOwvzCbI3pRQRCAd4BmURRv/kN5oiiKu3///UZgvCiKZwuCkIbLsR6GS2zsVyDxr8TGhgwZIm7cuPEI3cWJx9aGrVy56EoG+A0gRBfCkgrPPazXZF7D29vfxuq0EqGP4MWJL7K+dj3/3vBvtyjZoOBBPDfhOfcDqy967D2YrWbey3+PtwrecpePDh/Nk2OfxE/jd1D22p12Oqwd6FX6XjPlh4G+oiQOiWOhfzpFJ29uf5MXNr/gLos3xvPqSa8S5tN7UuP9gvd5asNTAAwOGUyILoQQbQhLK5cSZYxCK9dycvzJTI6e7G5jd9jZWLeROb/McYdoqWQqbsi5gR5HD+/mv4uP0oc3p70pCXccPCdE/zwYRFFk8KOL+depaQQZNAA4nCJz3t/I0tsnEmRQ/8UZJI4AUv88DqgwV3Dlz1dS01nDnMw5fL77cxL9EvHT+LGuZh0XDbyIt7a/RYetgyfHPkljVyMvb3mZUeGjCNOHkRmY6XZ+9qJT6Phgxgck+CXgGir2C//owlLf/HuIosjb+W/z7KZn3WWxxlieGPsEV/18Va8tYAumLnBFMip1tFhamL9lPm3WNnLrc2m2NHPPsHv415p/uesblAbePvltt8htX2PEwuZCLv3pUo9r/XfyfxkbOfag7qGtpw21XI1Gofm7X8PB0G//MCR601+h3aOBS4BJgiBs+f1nBvCkIAjbBUHIA04CbgIQRTEf+BQoAH4CrpcUu48+S8qW0OPoIb8pn0Ehg/DX7HOG0wPT6bR1YnW69phUdVRR3FbM0xufdjvRAJvrN/e5h/aPqBVqmixNHk40wKrqVYckGKaQKfDT+B0JJ/qEoaqjite2vuZRVmwuZnfL7j7rj40c65713VS3idz6XEwaEyXmEpZXLqfd1k5aQJpHG0EQ+LjwY499TlanleK2YlZUrWByzGRqu2rZ0bzjMN+dxInAnvoO1Eq524kGkMsEBoYaWV/S3I+WSUgc2+xs2UlNZw0CAoIg0NjdyJqaNfxY8iPNlma+2P2Fe9L0re1vMSFqAuE+4SypWMIHOz7gp9KfmBY7zX0+mSDjoZEP9bcTLdFPVHdUM3/rfI+yUnMpZquZO4bcgUzY57JcmX4lqf6pbpXtotYiPir8iB9KfqCms4bREaP5aOdHHudqt7WzuW6z+3NfY8R1Net6OeyvbX2NLlvXQd2Dr9r3SDvREl5Gv3gYoiiupO8ZlR8O0OYx4LEjZpTEX9Jh63D//nLuy5yfcj4BmgASTYlsqd/Cq3mvetS3OWx9ikDYHH8tHrI3ldLfaStx+HA4He7JkT+yv79DjDGGV6e8SlFbEQ7RQYJvAnannQRTAhq5hgGmAR4TMAAiIh3Wjl7n2itMo5G7Xkr76xMSEgdibUkzKaG9RcUSQwysL2liZuZfbxeRkJDozV7BSEEQ+nzXd9u7UStcER8WhwWNQsOCaQsobi3GKTpJ8EvAV+3L6IjRNHQ1EK4PJ943XnKiT1Dsor1Pwa8uWxcz4mcQa4ylsqOSYF0wA/0HeuQY/7MonUau8cg2s5f9CY25j/fRptPeiUNau5PYD/0qNiZxbDEtbt/MscVh4e38t4kyRjE6YjSJJtcqZLQhmjCfMAQEYo2xjI3wDIcJ1YUe1F7XaGM0g0MGe5TFGmOJ843bTwuJI0GEPoIzBpzhUWZUGRngN2C/bYJ9ghkZPpIxEWMI04cRZYxiXOQ4hoUN6+VEg2tW+IKBF/QqTwtMIysoi98qfkOr0Lr7mITEobChpJkBwb0d6aRgPZvKWvrBIgmJ44NEUyJahRan6EQj16CSee4jnRU/i2UVrjRD5yadS4hPCCG6EEaGj2R0xGhCfULRKlxClROjJ5Lsn4xSruyPW5HwAiJ8Ijgr8SyPsr3jDa1Cy+DQwZw24DRGho/stcUv3jfeQ5huZdVKTok/xaOOXJD3Glf+meGhwz1WvgEuT7scg0rK8CDRN1LMq8RBkxWYxfzJ83lj+xtYHVYuS7+M4aHDARgaOpTnJjzHr+W/olVomRw9mWT/ZO4edjdpRWksLl/M4ODBnJ9yPqE+oX95LaPKyMOjHuarPV/xW8VvDA8dzjnJ5xCkk9QwjyZKuZI5mXOINkTzbfG3DPQfyCWplxDj6yk2VtNRw9qatayrWceQ0CGMCh9FuP7g1daHhw7n2QnP8tb2t1DKlEyLnYZKpqJRaCQ7KJvZabMlR1rib7G5vIV5k3r3nbggH3bXd9Bjd6BWyPvBMgmJY4dyczkrqlaQ35jP6IjRDAsdxgDTAN446Q3eyX+HNdVreGrcU3xT9A1VHVWcnnA6ZqsZk8bEFelXMCFyQn/fgoSXo5AruCrjKiINkXxT9A0D/Qdy8cCLifWN9ahX21nL2pq1rK1ey5DQIYwMH0mEPoKXJr3EJzs/YWP9RqZET2FKzBRCfUJ5f8f7BGoCuSLjClIDUg9oQ1pgGgumLuDN7W/SamnlkrRLGBt+cPujJU5M+kVs7GghCT4cGXocPa6Q2z/sA1ldvZo5i+e4P6tkKt6e/jYZQRkAdFo70Sg0yGWHNmAVRZEuW9ffanuEOeHEcjptnajkKpQyzxWDDmsHD6x6gF/Kf3GXjQ4fzVPjnsJX7fvn0xwQi92Cw+lAEAR0Sh2dtk7UMjUKuTTnd4iccP2zL1o6rYx+agkLZw9B1ke46L1fbuOF87PJjPQ7+sad2Ej98xiioauBa3+5lsKWQnfZRSkXceuQW1HJVdgddnqcPfgofbA5bNicNnRKHV22LqwO60ELhHoRkthYP9Np60QtV/fSuOm0dvLQ6odYVLbIXTYybCT/Hvdv/DR+OJwOLHYLOqXOvUWgy9aFQqY4oPL2n7E6rDicDrRKr1SNl/Y+eBHS6FTikFHL1XTaOtnRtANEkMvkvLn9TQBygnMYETYCUXSlHdjrSPuofA50yv0iCMLfbitx+KjrrKO6oxqj2kiMMcbj5VZmLvNwosElDLelfgsB2gCCdcEE64Ldx2o6a6jtqMVP40e0IdpjguTPIh1/zg0pIXEobKtqIz7Ip08nGiA2QEdeZZvkSEtI/IGK9goauxoJ0AYQbYxmT+seClsKkQkyZsTNIFIfiUyQUdleSZQhijJzGe22diL1kQTpgtzh2Tqlzu1Ql5nLsDvtRBujD3mCVeLEY++73+F0UN5eTnN3MzqFjjZrm4cTDZDflE+puRSxTcSkMRFtjPbYZ79XkOxQUMlV4FVrNxLeiuRISxwydZ11vLD5BQRBoMvWRaetE4vdwvTY6QiCwKtbX0VEJMU/hbSANCn/7zFOXkMeN/92Mw3dDShlSm4fcjtnJp7pdnr3J8KxvWk7a6vXMjp8NKMjR5MRmMHmus3cuvRWmixNqGQq7h1+L7PiZ7kFaSQkDid5la3EBux/Miba34dtlW1H0SIJCe9mecVy7lpxFx22DnQKHY+PeRy13PV8vj77ehaVLuK74u8QEGjobmBQ8CAeWPUAdtFOuE84z098noEBA93nq+us46Xcl/i66GvAlQLz4VEP9wrXlZD4Mz32Hr4r/o7H1z2O1WklQBPA/SPu96hjUBqYmzWXG5bcQFtPGxq5hgdHPsj0uOm9ouckJI4EktiYxCGzoXYDSyuWkh2UzY7mHXTbu5keO50EvwR+LPnRne5qZ/NOPtzxoaS2fAzTamnlgVUP0NDdALiUMZ9Y/wRFrftSmEUboskJzvFol2RKwuawsbt1N2qFmrfy3qKyvZJ7V9xLk6UJcKW4enjNw3+ZDk1C4u+yrartgI50bKCO/GrJkZaQANc+6DtX3OnO0NFl7+LuFXcTqAtkROgIdrfsZlfLLsCVbeGzXZ/R2N1ImI9L+b66s5qnNjzlkYUhtz6XPa17CNAEAK4UmN8Wf8vxvK1Q4vBQ1FbEw2sedmcOMWlMdFm7PMYbpyScwhvb3qCtx/UctzgsPLDqAYpbi/vFZokTD8mRljhk2nramJ02m6UVS5kaM5XTBpyGSqbqlXsPYHnVctqt7UffSInDQpOlieI2zxfS5WmXs6p6FTf+eiMf7/yYLnsXj45+lOuzric1IJXZqbO5aOBF+Gv8mZM5h/W164k0RlLTUUNVZ5XHuUREajpqjuYtSZxAbK8y/8WKtI49DR04nNKgXkKioauh13vc4rBg7jFz59A72dqwtVeb6s5qxkWN45bBt2BQGgjWBbO4bDHzlszju6LvaOxuxFfty0mxJzEncw5yQc5v5b/Rbe8+WrclcYxS01GDiIheqefJsU8yImwEiysWc1naZVydcTWpAakkmhLdk/N7cYgO6rrq+slqiRMNKbRb4pCwO+1UdVTx3o73AJejHKILYUb8jD7TAwwLHYZeqT/aZkocJkxqE5H6SCo7KgFXOpN1tesoaCoAYGnlUtZWr+WxsY8xN3sug0IG8dDqh9jZvBO9Us+SiiWAKxWFVqElSBvkXt3eyx/3T0tIHC7aLTaaO3sI89Xst45OpcCkU1Ha1ElCkPSckjix8df698q/q5QpCdAGEGOIYWjoUL4p+sajjZ/aj4V5C9EoNFyXfR3l5nIeXP0gmYGZLK9azo8lPwIuQdJoQzTnJJ2DSqbqpYchIfFn9o4Nbh50M4+tfYx2m2tRZmnFUm4ZfAvnJZ1Hh60DX7Wve0UaQEAgSCtleJE4Okgr0icYPfYeCpsL2Vi7kZrOQ18JrO6o5uPCjz3K6rrq0Mg1VLRXMDFqors8Uh/J7NTZUl7IYxh/rT+Pj3mcK9Ov5JrMaxgfOb5XqP6vFb9SZi4D4JfyX6jsqGRQyCC3E72Xdwve5d7h96JVuFQwZYKM24bcxgDT/nNSS0j8XXbWthPt74NMdmCB02h/HTtrpKgZCYkYYwyPjn7UvbdUIVPw8KiHXQKTcgWXpV1GhM++XL2jw0dT01mDXbTTYetAFEV+KfuF2amzuTj1YhaVeopClbeXE+YTxplJZ7pz9dqddopai9hQu4Fyc/nRu1mJo47D6aC4tZgNtRsoayv7y/D+AaYB3Db4NqwOq9uJ3ssHOz4gvykfURT518h/oZG7Jmbkgpx7h99Lgl/CEbsPCYk/Iq1In0B0WDt4r+A9Xs17FafoJEATwEuTXnIrax8M4u//9VX+1Z6veGTUI6QGpBJjjGFQ0CBC9CGH8xYk+onPd39Oa08rckHOhQMvRKvQeoT5uV+IB3gvdtg6qGyv5MKUC1HJVQwKHsSgkEGHlJJCQuJg2VFjJsr/r1OXRJi07KgxMzMz7ChYJSHhvcgEGVNjppJkSqK2q5ZgbTCxvrHuLA2JpkTemfEOe1r2sKN5B1vqt/DVnq/c7TUKDVdnXM38vPnoFLo+HaV4v3i3k2Nz2Pi+5HseWfOIK2WWQsczE55hTMSYo3K/EkcPu9POotJFPLjqQaxOK1qFlqfGPeWx+PJntAotFw680KOP7cUpOhEQGBk+kkRTIp+e8ik1nTUEagOJM8ZJCzgSRw1pRfoEYkfzDv679b84RSfg2v/6f+v+D3OP2aOeKIr7nSkM14UzL2eeR1mgNhCNXMOEyAnUdNbwypZXuH/l/XTae++Zljg22Pv3b+5u5sHVD9La0wq49h69V/Ae4yLHueuOjRhLjDEGgLMSzyJYF8zWhq2MjRgLuEIDs4OyGRcxjvL2ct7Y/gbzt87ngdUP0GaVhJ4kjgz5VWYiTX+d9iT6/9k77/CoirYP32d7yW567yEhkISE3nsRC/beKyoqYP30tb2W14aKFXvB3jsqCCi9Se/pvffNpuxmd8/3x0kWlg0CkgDKub1ymZ0zZ3Z2mZyZZ+Z5fo+/gd3llkPWk5H5N9P5zFcqlCT4JTAyYiSJ/oleeXxDDaGMjBiJr8aX5SXL3eV6lZ6UwBQ+z/ycBlsD6yvWMzl2sse9qYGp9Avct3Gf35jPI2seod3VjkpQkeSfxDs73qHU6qmlIfPPp9BSyEOrHyLeN56M4AzsTjv3r7yfYkux13pz/9capYb+wf0ZFDIIoSN9ct+AvtzY70YCdAEk+CUgCALxvvGMjBhJb//eshEtc0yRT6RPIiqaK7zKdtfupsHWgEljYkfNDr7K+oqqlipGR47G6XIyJHwIqYGp5DbksrlyM78V/EaIMYSXJrzE99nfE2OOYUjYEJaXLMfabsXpcjItYRoL8hZQ1Volp776h1FuLWd5yXIWFixkUOggxkWNo6SpxKueQWVgUOgghoYNZWL0ROrb6vkq6yuWFS/jvKTzCNYH0+Zo45TYU7DYLawsXYlZYybOHEegLpDatloqmiuoa62TY5lkeoS9FRbO7h95yHrRAQa+3OQ9xmVkTgaa7E2sL1/P11lfE2II4YLeF9AvqJ9HHt5OrHYrGyo28GXmlwwJG8JjIx/j57yfCTWGclavs/BR+5BvyQckte4Le1/ItanXsqNmBxf2vpCK5gruWnEXI8JHMDVuKhUtFThFJwNCBjAuahzrK9ajV+kpaCwg3Bjudv+W+edT31bP7QNvZ1PVJlodrcwcMJNlxctYU7aGP4r/4ILeF5Dkl8SqslUsLlzMsLBhnBp3KpUtlXyW+RlmrZk5Y+dgd9r5o/gPVpWtYlrCNNaWrSUjJAOzxny8P6LMSYpsSJ9EdKao2J+UwBT8tH7sqdvDtQuvdacZWFO2hhkZM5i5dCbzJs1jVekqXt7ysvu+RQWLmD91Piatiat+vYq6tjoANlZu5Pyk8+nt15sQvSwi9U/C5rDx2rbX3G5Umyo38Wv+r0xPn87r2173qNs5Tj7f+zmIsKlqExsqNgBSepOUgBTGR4+nxdHCvK3z3PctLlrMTek38fKWlwkzhhGgDzg2H07mpMLlEsmushIdcOgT6TCzjrpmG802B0atPCXKnFwsK17G/avud7/+Oe9nPjr9I1ICU7zqriiRckwDrC5bjUFl4MFhD/L2zrdZXLiYT0//lHhzvNuY/irrK0xqE+9NfY95W+exrGQZIM0tvxX+xhOjnsCgMjAmcgwvbn5x3/sUr+CD0z4gPTi9xz63zLHFKTp5YdMLOERJY2Vt2VruGHgHlS2VrC5bzeqy1dw16C7e2P4Gze3NbK7cjL/OnyfWP+FuY2DoQF7Y9ILbq3JFyQruHHQnDW0NnJl45nH5XDIy8qrhJKJPQB9u6X8Lb2zbFyN9/9D7KbeWs7Zsrds46uTX/F85Lf40mtub+SH3B49rNqeNjZUbCTWGuo3oTn7K/YkXJ7zodvcFqLBWUNhUiEFlIME3AaPm4ClpZI4PxU3F/JDzg1dZgm8Cflo/jxjp34t+d8dIx/nG8fp2T0N7d91uzks6z63u3onNacNitxCiD+HJ0U/Kp9EyPUJpQysGjRKfwzCMFQqBKH8DWZVNDIjxPwa9k5E5MbDYLLy1/S2PMrvLzp/lf7qf0w6Xg9q2WgJ0AXyX/R0guWiPjx5Pu6sdQRBQCSouTr6YvIY8bhtwGz/k/MCK0hUoBSVnJ55NbWut24juJKs+C4vdwrNjn+W1ba95XHOIDlaXrvYypEuaSihuKsZX40u8X7xbuFLmxEYURdaXr3cb0Z0sLVrK1Lip7tfLipdxz+B7KGsuI8wQxqrSVe5rUaYoMusy3UZ0JytLVxKkC2Js9FgMKgP5lnxqW2sJM4YRa46VvRpkehzZkD6J8NH4cF3qdUyMnkiTvYkQQwi7anbxS/4vxPnGedVXCAqS/JL4KvMrFF2E0ztcDpwuZ5f36ZQ6lAolAHtq93DL0luoaa0B4LzE85g1cBaB+sDu/YAyR4UgCAiC4BWvVGgp5KxeZ2FQGUgNSuX9ne+7jej/jvivR6qUA9vratwE6YP48LQPiTQd2u1WRubvkFnRRMxhnEZ3EuWvJ7NCNqRlTjIESeX4QOra6nj+z+cZHz2ed3a8g0N0oFFomD1wNkaNkSB9EK9tfQ0REV+NL4+Neoz/rvkv83fNB+DC3hfy8PCHqWqt4vei3xkVMarLt1cICgaHDUa9wzumtXP90MnWqq3cuvRWLHZJz+C6tOu4Pu16zFrZpfdEZ2PlRve/2/4IgkCZtYzL+17Or/m/MiV2Ck9teAqb00bfgL7EmGLcdUVR7NIoVgpKBARcoovvcr7jyfVP4hSdaJVanhv3HOOjx/fkR5OROT5iY4IgRAuC8IcgCHsEQdglCMLsjvJnBUHYKwjCdkEQvhMEwW+/e/4jCEKOIAiZgiBMPWjjMoD00GlzeBs4WpWWWHMsg8MGU91STZ4lj2UlyzBrzF67u5f2uZSnNzzN8tLlnJFwhsc1vUqPn9aPujbvGNcLel9AlCkKgFZHKy9vftltRAN8m/Mtu2p2dddHlfmbuEQXdqcdm9OGKIpE+URxYdKFHnVizbHUtNbw4e4PeWP7Gzy0+iHGREkiYia1CaPKyLLiZQwJG+Jx36CQQWyr3tbluBkWPkw2omV6lMzKJiL8Dv+0KtJPz94KWXBM5uTA7rTjEl2YNWZuyrjJ45pepcdH48OEmAm8veNt9ymi3WVn3tZ5nB5/Ol9kfuHO3jE0fCivb3vdLUgJkkt3va2eN7a9gcVmIdYcy9RYz2VbelA68b7xGNQGru93vcc1tULNyIiR7teNbY08vvZxD2PsvZ3vsbdub7d8HzJHjsPloN3Zfsh65dZy7ll+DxE+Ee60ap1MjJnIF1lf4Kvx5YKkC3ht22vYnDZAEsdND053C4yVWktJ8k9CJXie/42OHM2EmAmUN5fzxPoncIrS4Y7NaeOBVQ9Q2iQL18n0LMfrRNoB3CWK4mZBEEzAJkEQFgOLgf+IougQBOEZ4D/AvYIgpACXAKlABLBEEITeoih6H4fKkNOQw3fZ37GxciOnxJ7C1LipRJmiKGgs4MfcH/HX+lPeUk64MZzqlmpAyvE7I2MGuQ25WOwWJsVMQqPQuJW315Wv4/aBt7O1eivhxnCS/ZNRCSoUgoK7B9/N3rq95DXmMS5qHHVtddy78l4u63MZKYEpbK3e6tVHWZXz+LK7djeZdZlk1WexuWozQ8OGcm7iuUxPn05acBq/F/5OckAyIiJv73jbfV+DrYFk/2SeHv00RU1F1LTV8EfxH1zW5zLSAtPIqs+il18vJsdM5uvsrxkaNpSXJ7zMgrwFmDQm0oLSyG3IJVAXSLBBduuW6Rn2lluI8j98QzrKX8+yzOoe7JGMzPGnqkU6If4+53v6BPTh4uSLGRs1lnkT5/FT3k8E6AIIM4bx3s73uCj5IrdR0kmLo8XLtTbOHMfiwsVe76VAwdUpVzM5djLR5mjuHHwnwyKGsbJ4JYPDBjM+erzbKy09KJ3nxj3HwvyFGDVGTos7jWT/ZHdbjfZGshqyuvw8MseWdlc7W6u28tHuj2iyN3F538sZHj4cH42PZz1nO1uqt1BiKaG2rZaPd3/MQ8MfYmPFRqztVvqH9GdhwUIcLgfZDdlMS5iGZYfnZuaXWV8yZ+wcfi/6HaVCSag+lJcnvszSoqU0tzczMmIkMaYYKloqWFu21mtsWuwW6trq5I17mR7luBjSoiiWA+UdvzcJgrAHiBRF8bf9qq0DLuj4/Wzgc1EUbUC+IAg5wFBg7THs9j+CiuYKZi6dSYlVUqHdXbubnTU7+c/Q/3D3irvp7deblaUr2Vu3l1kDZhFmDAMkA2nuprlEmaI4L/E8zkg4g7yGPJSCEqfoZGPlRrZUbWFI2BDCjGFUNFfwxvY3uGPgHTyw6gFCDaHcPfhuHlj1AC3OFkBS7Xxl4isMjxjOksIlHv2MMccgc3woaCxg/s75VLdWs7FyIyCNk+XFy3l36ruck3gOaUFprC1dy3ObnvOYnIL1wWyo2ECSXxKvbXuN58Y+B8Cnez/FpDYRbY4mvzGfCFMET4yWREJWl66mxFqCxWbhm+xvAHh05KOcl3TeMf7kMicLmZVNDEs4/NCR6I4YaRmZfytOl5NP9nzCezvfA2BX7S4WFy7mk9M/YWz0WMZGj6WgsYBLfr6E5vZmFChQK9S0u/adOpo1Zkwak0e7WfVZZARnuMN9OtGr9Xy691N+yP2BT07/hBhzDBf2vpALe3t6PQFsqNzA/y3/P5L8k2hztLEgdwHzT51P/5D+APhr/UkPSmd7zXaP+yJ8Irrjq5E5AnbW7OSG325wrws2Vm5k7vi5TImd4lFvV+0uHlr1ECMjRhJuDHenRj036Vx+L/qdP4r/cHs1xJnj2Fy5mQBdgIfmTmlTKXmNeWQ1ZKFESW//3sxdOZfXJr3m9oz7Pud7Hlr9EDMyZqASVB5x2AG6AIL0QT39lcic5Bz3KHxBEOKAAcD6Ay5dB/za8XskULzftZKOMpkDyGvIcxvRnSwpWkJWfRaZdZlEmiLZW7cXf60/WqWWRL9Ezk081+0+Y1abGR4+HKWgJN4vngeHPUi0TzQ3p9/MTek3cWHvC1ldstq9k7yydCX9Q/pjsVvYWLXRbUR38sKmF7ix340k+EppsBSCgnsG34NJY2JlyUpy6nNwuDwFKGR6lqz6LGJ9Y91GdCf5lnzyGyW11ZUlK/kq6yvuGXwPEYYIbkq/iVsybuHeofeSVZfl9iioaqniurTrUApKREQmxUzi7F5nU2Ytc+cnX1O2ht21uz3G5Rd7v6ChreEv+1loKWRVySq2VW2jyS4bOTKHh9MlUljbQuQRuHYHGDXYnS5qrbYe7JmMzPGjrLmMj3Z7ij9a7BbKrGVsrNjImrI1WNut3NL/FkxqEz/m/sit/W/FoJK0BswaM7MGzMJqt3J92vVuN93Mukym95tOpE8k46LGcWvGrTw8/GFcoosWRwsNtgay67MP2q+W9hbm75yPiEhWfRZFTUU4RSerS1e765i0Jh4Y9oA784hKoeKuQXeRHJB8sGZleojlxcu9Tn4/2PWBRyihw+Wgvq2eab2mEe4Tzq39byVQF0hlSyUu0YVJY3Ib0eOjx1PXVsfWqq08POJhZmTM4JaMW+jt15sZ/Wfwc97P5DbkktWQRXFTMYG6QF7d+iot7S002hp5Z8c7ACzIW8CM/jPcIYq+Wl/mjptLo72RFSUryKzLPCxXdBmZI+W4io0JguADfAPcLoqiZb/yB5Dcvz/pLOridrGLMgRBuBG4ESAm5uQ79TxQoAMk49XabpV+R4FWqeXG9Bt5ZcsrtDhaGBAygMdHPY5GqWFt2Vqu/+16XpzwIiMjRhJvjufGjBt5fO3jblXvi5MvdufsUyvVtLa34sLVpWiJVqklxhTD+1Pfp9hajFFpZH3Feq745QpERFSCiqfHPu2h3Phv5kQYn0pBiVap7fJaZ+5QjVJDviUfl8vFrEGzeGTNI25RsXMSzyHEIKU2m7NxDlf0uYJXJr6CgMC9K+91x7FNS5jG3YPuRqPQeL2PWqnucrx0srVqKzOWzHCP2wuSLmDWwFn462QxqJ7kRBifR0txXQt+BjU69cHH14EIgkBsgJGsSisjfLr+25A5/vwbxufxQiEoUClUHifMl/a5lHd2vMOflX8CEGYI46qUq7ig9wWoFCqcLifXpl1LmDEMu9OOj9qHoqYilhYt5dq0awEpt/Rjax/jvyP+y7c53zJvm5Tu0Ffry239b+PZjc+iUhx8qakQFOhUOq9yjdJz3kgJSuGT0z+h1FqKSWMixhzjFXN7PDlZxmZXawetUushBPZ70e/cu+JeHKIDAYFr0q7hir5X0OpsJS0wjSZbE+clnkeJtYStVVvZUrWFSTGTuHPZnbhEaS1539D7+Cn3J4qaitztqhVqnKITnVKHQlBI61mF1J/ipmK+yvqKy/pcRpJ/EgNCBrC2bC2PrXvM3eZjox7jjPgzulwny8j8XY7bibQgCGokI/oTURS/3a/8amAacLm4Tz64BIje7/YooKyrdkVRfEsUxcGiKA4ODj75YjAT/RLJCM5gVMQoRkeORqPQMDVuKntr9zIwZCB76/ZyQ78b+CLzC1oc+1ywH1z9IMVNxXyX8x2tjlZe3fwq5dZyzFozL2560SM11heZX+B0OREQGBUxim3V22hubybUEIpepUer1DImcgwjIkYwI2MGRo2RAH0AGcEZOEQHczbOce9GOkQH/13zX4otxV1+nn8bJ8L4TA5IJkATwMSYiUT5RDEpZhJJfklcnHwxAVopr/Og0EEYVAbqbfW8tPklD2Xu73O+d2+kAHy892N+yfuFd3a84yEGsyBvAbvqdjEiYgQ6pedC6Yq+V2DSeroIdmKxWXhq/VNuIxrg6+yv2VO7p1s+v8zBORHG59GSXWUl2v/wFbs7ifTXy+7dJzj/hvF5vNAqtMwaMMv9WqPQ4K/1dxvRABUtFeyu201reysf7v6QV7a+wvry9awoXgHAL/m/UG+rx+FysKp0FbkNufxW+BsTYiaQ25jL0qKl7rYabY0sLlzMmQlnkuSfhNVupbGt0atfOpWO69M8xca0Sq2H2FgnwYZg+of0p5dfrxPKiIaTZ2yOiRqDVqkl3jeeSTGTiDJFcV3ade6Nj+KmYh5e87DbxVpE5INdH+AQHdS01vDuznf5LPMzKloq+C77O/QqPRcnX8x7O99zn3Q7RSfPb3yeoeFD3e8bqAskIziDRL9Ebuh3AzqVDpPWxIz+M9x1Kpor+GzvZyT6JdLS3sL/1v/Po83H1j7mYZjLyHQHR30i3aGsfRUQt397oijOOsgtCNKx17vAHlEU5+5XfipwLzBOFMX9fYR/BD4VBGEukthYErDhaPv+b8SgNnB1ytV8sPsDEOHB4Q9Sai3lze1vclmfy9Cr9CT7JzPPMs/r3k61xOvTrqfR1sjNS27mmtRrqG2r9aprsVt4Y/IbNLU3MTVuKqGGUMIMYbw15S2y6rP4Nvtbdwosm8OGViXtGta01Xi5BTW3N1NvqyfaY69EpqeIMkVRbCpmYvREwg3hrC1fy4CQAfTx78NDqx/iitQrGB05mvdPfZ9CSyHv7HzHq436tnruHXIv26u3E+ETwcToidyw+AavepXNlVyYfCGvTnqVP4r/wGq3MilmEoNDBx+0f9Z2K3vqvI1mWVhG5nDIrmoi3Nf7hOtQRPrp2VMuK3fL/LuobqlmSeESvs7+mlBDKM+Pe56VJSsJ9wmnpq3Gq/7Omp2MjxrPHYPuwKA0oFAo8NP6Ud1aTVZ9FlurtvLfkf9lYf5CchtzOS/pPAYFD2JH7Q6vtvbW7eU/Q//Dnto9fLT7I1odrVyYfCFjIscQagx11xsaNpR3T3mX3wp+w6Q1MSlmEqlBqT36vcj8PVIDU3l7ytt8n/s9W6u2SuuIDpd7kNYGze3NHve4RBdhhjDane18Wy2dm5VaS7mkzyX8kv8Lg1yDvITt2pxt9A3oy5kJZ5IRkoHD5eC9ne8RqA9Eq9TidDlRKpSMihzFm1PeZEnhEgJ1gUyMmUhyQLKUt/qAsEGb00Zdax3xvvE99O3InIx0h2v3L0jCYDsA1yHqdjIKuBLYIQjC1o6y+4GXAS2wuMPFdJ0oijeLorhLEIQvgd1ILt+3yordXbO5cjN3Lr/T/XpbzTbuGHgHCkHBp3s/xaAy0D+kPwOCB7CleovHvTqljnFR49hWvc0dP7ulagtRpihKmvbFtyoEBQNCBrC7djefZ36OQ3Swrnwdn+79lNkDZvPcpufcdTct3cQ7p7zDsPBhAIQbw70ETAJ1gW5XYZljQ5RPFPO2znMLxOQ15rGufB1jIsdw74p7eXbss5wafyqhhlCS/JLIbvCMcTNpTLy9823Ugprddbu5qPdFjI4YzeIiT/XWTlG5YeHD3GPgUPhp/RgRMYI1ZWs8yqPN8kaLzKHJLG8i/AjiozuJ9tfz0/byHuiRjMzxQRRFvs76mte2vQZI+hgbKjYwe+Bs3t3xLpf0ucTrngEhA1hSvISSphJenPAik2ImkVmXyed7P2dw6GDCjGE8suYRt/dRbkMu5yedzylxp3i1NS56HI32Ru5YdofbC+3RtY/yyIhHOL/3+e56WpWWoeFDPU4gZU5MalpreHjNwxRYCgBp7bCzZievTHwFs9ZMiCGEQF2gxwGMWqEmLSjNvd4IM4ahU+p4cfOLgKTKrlPqPDzfzBoz22u2U2ApINwnnLe2vyVdqIcN5Rv48LQP6RfcD71Kz8iIkV4eDGGGMPQqPa2OVneZSW3y2MCRkekOusOQ1omieOehq+1DFMVVdB33/Mtf3PME8MQR9u2ko1MVeX+qWqq4d8i91LbVEm4Ip5dvL/4z7D/u3H5josZgUpvw0/mRGpjKTUv25ZX8Nf9XZg+czfxd86lsqcSgMnD/sPupaatBq9SSWZ/prjs0bCi/F//u9f6LCha5jag4cxzPjn2Wh1Y/RFN7E4G6QJ4d96xbPVymZyloLKDAUoCP2ocxkWMYHj4chaDgq6yvKLWW4qf1A6R0aINCB1FkKeL8pPP5aM9HlFpL0av0XJ1yNfW2erLrswnUBfLE6Cfw1flycZ+L6RvYFxGRpUVLmRI7hZTAlCPuo0Ft4K5Bd1HZUkluQy4ahYbZA2fTJ6BPN38bMv9GsqutDIw98lj6qAADOVVWRFF0awXIyPxTqGutI7shmzZHGwm+CUSbo6lqqZK80/bD5rRhsVmwtlvp5duL61KvQxAE1Ao1Jo0Js9bMdznfAfDZns8YFzWOBL8ELulzCS2OFiw2i0cID8B3Od9xZcqVzBwwk9e3vY7D5SAlIIWb0m/i0z2fuo3oTr7K+or0oHSKrcWEGcNI9Ev0iomWOTHJachxG9GdbK7aTJGliLTgNMKMYTw37jl+zv2ZgWEDaXG0EGOKweawMS56HH0C+uCn9ePx9Y+77/8+53tuHXArb29/G4vdQoAugBv63cCb299kTOQYfsn3NA0cooMtVVvoF9zvoP2MMcfw3LjnuH/V/TTaGvHX+vP02KeJMkV16/chI9MdhvRHgiBMBxYAbslTURTrDn6LTE+xf+wqQLJ/Mga1gac2PAVIp8mPjXyMM3udyVtT3uLdne8y5885gLRr+MjIRzBrzO6Jss3ZxstbXuatKW+5lZkfWfMI2Q3Z3JJxi8d72Zw2fNSeuQQBj3QZSoWSSbGTSA5Ipr6tnhBDiLxDeIzYUrmFm5bcxIjwEehVen7O/xmQ4tFmD5zNK1tecQuG+Kh9eHfHu2hVWr7J+oYpsVMI0AfgdDn5Ke8nrku7jhvTb0SBghT/FL7J+obnNj7nXjDdOehOLkq6CKPG+Lf62jugN+9PfZ9SaylGtZEYU4wsECJzSFwukfzq5iNS7O7ErFOjVgpUWNoI9z3y+2Vkjhfl1nIeWv0Q6yuk5Ce+Wl/emvIWIYYQ9Cq9l6ttlCmKr8/8mhhzDGE+YcxYMoNGmxS/nBGcwUXJF/Fl5peYNCYEBOxOOztqdvDm9je95n2Q4q01Sg3Xpl3L5JjJtDpaifSJxE/n55VfGKT55ckNT7KxciMCAg8Nf4hzk879S1EymeNPk72JyubKLq+plPv+7RL9E3Hg4P5V9wPS+Hho+EMsK1nG0qKlnJ94PnqV3j3mqlqqeH/n+zw79llMGhN1bXXcv+p+LHYLbY42t3L8/nQlULc/giAwNmosX0z7grrWOoL0QYT7hP/lPTIyf4fuEBuzA88i5XTe1PGz8S/vkOkxzup1lsdkNDlmsjs9AEixKv9b9z+KLEWUNpfyZdaX7mvtrnZe3vwydw66k9PjT2dE+AgUgoKUwBRizDEkByQzf+d8chpyGBk+kkifSO4ZfA8+ah9CDaFE+URxUfJFHmrMWqXWK78gSBN5v+B+shF9jGiyNfHJnk+YFDOJgaED3UY0SBsgn+79lGtTryW3MRcBgXOTzuWzzM9YXLiYab2m8XX217y1/S3m75ovxTeL8HXW1yT6JVLUXMSLm1/0OHV4afNLZDZk4nQ5aWhrwOE88hRn/jp/0oLSiPeNl41omcOi3NKGXqPEqP17C/LoAAOZFbLgmMyJSXN7M0027/G5tXqr24gGSejrjW1vYFKbuH3g7R51Q/Qh9Avqh0ahobq5mje3vek2aAC2VW8jyieKsxPO5trUa1EqlOQ05PDm9jcBaLA1EGeO82jz5oybifSJRK1Qk+CX4PZEsjlsjIoY5U5JBCAgGTibqzYDkhjVkxuepNBSeFTfjUzPk12fzcrSlV4aJ+f0OocwQ5j7AGZnzU6+z/nefd3usvPG9jc4L/E8bux3I7VttVzU+yKPNgQEInwi6Bfcz50fPNEvEZPGxGV9L+P0+NM5M+FMpiVMY2jYUAaGDDysPkf6RNIvuJ9sRMv0GN2x/XcnkCiKordqhcwxJ8onijsG3uF2vQkxhni5VbU522iwNVDb6i0iVtlSiVFtZEfNDkIMITw95mkUKGiyN9Fga6DEWsLDIx5mUcEiXt/+OuOjxjN3/FzWl69nUeEiGm2NvD75dXbW7sTlcjE6cvTfcu+V6V6KmopAkGLok/ySvK6XNJWQFpRGRUsF9wy5h7yGPFyii+KmYmJNsTww7AEKGwtJD0nny8wv2VK1hatSrqJfcD8pP6PLMz+jU3RS1VLFm9ve5Me8HxkQMoBrUq+R837K9Ci5VVai/P/+aXKkn6TcPT5Z1myQOXFoc7Sxrnwdb257kxZHC9enXc+46HH4an0BKLJ4KxHvqt1Fc3szk2MnE6QPYnXpasJ9wunl14uXt7zM3rq9XJt6bZfCjrVtteyp28M32d+gV+upb6t3X/s883OuTb0WEZGW9hZGRoxkQOgAtzdTaVMp3+d8z4K8BST5J3Fz+s28Nuk1VpeuptXRyrDwYczdNNdDdLQz77DMiU1tWy2/Ff7GxckXMzB0IKVNpUSboxkWNoyZf8ykoa2BK1Ou7NKzoNRaSpuzjb11e5kcOxmtQstLE15iZclKfDQ+JPklucXBkvyTeH3S63yV9RX+Wn+KLcUkByRT0FjAhooNpAene4mTycgcL7rDkN4FtByylswxwV/vT25DLstLlkuvdf5eIg6BukACtAFdPuxSAlJYXLiY4qZiipuK2Va9jRkZM/g+93tGR4zm8r6X8/i6x90K339W/InVbuX73O8BySDbVLWJT0//lET/xJ7/wDKHpLa1lgdWPUBuYy5AlxNQRnAGC3IXsLFqI99lf8cjIx8BoH9wf9ZVrGNZ8TLuHnw396+8353WolMoZGzUWI9wAACj2khmfSZ6lZ5Sayml1lI2lG/gk9M/IcxHjoeX6Rlyq61/S7G7k0h/PXvLT7wT6UZbIy9segGny8kdg+8gQBdwvLskcwzZXr2dmb/PdL9+YPUDzBk7h9PiTwPocrP6lNhT8NX6upWNh4YNZWH+Qh5e/TCVLZJ77meZnzEifAQ/5P7gca9ZYyarIYushiw2VW3iuXHPoRJUOEQHLtHFuzvfJckviXenvou/bp8egc1h441tb+xbD1hL2FCxgc/O+IzZg2YDUGwpprq12uv9ZJ2UE58onygEBL7I/AKtUkuQPoj8hnyKLcVsrdoKwOPrHufVia963dsvqB82p40VpSvYXrOdC3tfSJJ/EqvLVmO1W2lqbyLGFMP8U+ejUqh4fN3jtIvt9AvqR5O9iZrWGrdYWam1lI0VG/nk9E/kk2aZ4053GNJOYKsgCH/gGSN90PRXMj1DaVMpOQ05nJFwhnsC+ynnJx4Y/gAvbnqR2rZawoxh/GfIf9hSvYU4Uxz3D7uflze/jE6l49rUazFpTCgEBWlBaczdNBeHy4HdaWdV6SrSAtMQBMFtRIOUU3D+zvke/Wh1tJLTkCMb0scIh8tBTn0OxdZi/HX+JPkluU8qAAothW4jGmBx4WJuTr+ZD3d/iFqp5sZ+N2LSmKhsrkStVNNkb6KXby9mZMzAJbp4e8fbKFBQ21rrNqI7+Wj3R6QHpfPYyMd4asNTVLZUEqQP4trUa/mj6A8u6nMRN6bfiFapZW3ZWvIt+bIhLdNjZFdaCTP//RPpaH8Da3K9PXWOJy7RxazfZ2HSmFApVNy65FY+Pv1jOdzhJGL//MydfLLnEyZET0Cn0pEenM5t/W/jze1v0u5qZ1TEKC7pc4nHGKlorqCoqchtRAPkNeRxY78bSfZPxmK3ICLS5mhzG0UgzR9FliIeG/UYz/z5DI22RqJN0dwz5B42V20m1BCKzWGj3lZPmCGMCJ8Ibk6/GQRYW7qWsdFj2VK5hfq2epL8k4g2R/Pi+Be5f9X9VLdWE2II4cnRT8oiUCcg+Q355FnyMKgMJPknkeiXyDNjn+F/6/6HxW5Bo9RwU/+beHjNw0zvNx2loEQhKChqLOKh4Q8xd9NcmtubGRs5lkv7XMruut3c1v82NlVtQikoqW+rZ+aAmThcDmxOGy7RRWlTKYIgsLd+L9elXcfHuz/murTrvP4GqluryW/Mlw1pmeNOdxjS33f8yBxHcupzuHnJzVS2VCIgcE7iOXxwqqTW+eyfzzI1bir9Q/pT3VLNfavuo9XRikqh4rmxz3FF3yvoG9iXe5bfg91lB2BE+AjuGXwPz258FrVCjUqhItoUTUVzhcf7tjnaMKgNXiqeWqX22HxwGZYXL+fO5Xe6XeUu6n0RswbOchvTaoXao/6euj3U2+p5c/Kb1LTVcP+q+90pIvqH9Oe61Ou4btF1zBk3hyBdEB/u/hCb0+bVDoCPxodvsr9hWckyLkm+hCT/JLZVb+O7nO+YEjuF/1vxf+66FyRdgEHtLRoiI9NdZFc1Mbnv39ddiPLXk1/djMslolCcGMrdiwqkkJlb+t+CgMBzG5/j+5zvPdIHyfy76coDwV/rj0qQlnC+Wl+u73c9U+OmYnfaiTRFYlR7Cj2qFWqvZ/hVqVfx9o63yWnIAaST4dkDZ3spfec25PJ55ufcP+x+nC4nLY4WZv4+E5vThlJQMnvgbCqsFWQ3ZPNn5Z8A6FV6/jfqf9y34j7aRSn056qUq5iRMYPhEcP57IzPqGurI1Avp788EdlWtY3pi6e71waDQwfz5OgnOS3+NNKD0rHYLYQZw1hSuISb0m/ijW1vuNeBvf16c1XKVdw35D4ifSIpairi1t9vda9RpiVMI8oUhVJQ8mPuj6wtXwtIY/SF8S8QapCe4a2OVrdYnVJQennTyetMmROBoxYbE0Xxg65+uqNzMt7Ut9V7Ga0AP+f/7N5pFhH5Luc7NlZuJNEvkVBjKHvr9uKj9uHnvJ/dD0aHy8FzG58jJTCFlza/5DaiAdaWr8VX60uoIZRIUyTnJp6LRqmh0d5IlM++neOFBQu5Ie0Gj74kmBPkWNhjREVzBY+te8wj3uzLrC898j7rVXpuybiF85LOI8IoiXikBKRg1pr5dM+nHnkWt1Ztpbq1Gl+tL+vL1uOn8eOGfjfgEl04RSdB+iCP9z838Vx+L/6d5vZm3t35LpurNrOkcAnjosYxf9d8j7pfZ3+NKHrG68vIdCf5Nc1E/A3F7k4MGhU+OhWlDa2HrnwMEEWRt7a/xZm9zkQhKBAEgbN6ncXbO972+JuX+XczNmqsh3KxUlByderVHkrJKoWKON84gg3BXYbvhPmEkeCbwMhwKd+uTqlDrVC7jWgAi93C+vL1TI6Z7C6bHDOZ7TXbqWur46FVD7kFSzs905yikw93f0i8X7zbiAbJCHp/1/uMjhrtLvtw94fu9ws1htI3sK9sRJ8gOF1OalpqaG1vpaW9hVe2vOKxNthYuZGdtTsBiDRF0jewL/46f4aEDmFt2VosdgtJfkmcn3Q+fjo/atpqeHXrq7hwecXEL8hbgI/ah7LmMrcRDZLg7dxNcwnQB3BB0gUszF/IRckXsaJkBWf2OtOjvyMjRtLLr1cPfysyMofmqE+kBUGYBjwOxHa0JwCiKIrmv7xR5oioa61jYcFC5u+aj1FtZOaAmYyMGIlOpUMURQ9XrE52VO/gxvQbuS7tOt7Z/g4PrX6IjJAMJsdOZt7WeThFJyXWEvx1/l0qZta21vJ/Q/4PURSpaa2hrq2OkeEjyQjOoKa1hrLmMpL9k+nl14s3A99kc+VmIn0iGRQ6yK26KNOzNNmbqGvzzjRX3yoJt9iddgothSwvWU5VSxWnxp1KWlAaq0pXUd1S7bGI6qSurY4Lky/k2+xv2Vi5katTr+bFcS+ypXoLDw1/iNKmUmraaogwRvBN9jcek21ZUxmX972cIH2QR/n+/ZWR6Qma2tpptjkIMB5dPtpof0m5Ozrg+HtPbK/ZTnN7M2lBae6y3v690Sg0rCtbx8jIkcexdzLHir6BffnwtA/5s+JP2pxtDA0bSmpgqkedurY6FuZLawQftQ+3DbiNURGj0Kq02J12VpauZEPFBqb1mkZ6SDptjrYun8fZ9dlc2udSxkaNpby5nAhjBP9d+19AUl+2tlu97qlvq8dq9y7Pb8wnPSjdq67MiUWRpYjP9n7Gr/m/0tu/NzMHziSrPsurXpm1zKvMX+9PgaWAmzNuptBSyLLiZST4JRBuDOc/Q/6D1W7t8vCnyd7kESbYSYGlgHZnO7f2v5VRkaOobK7k6tSrsdqtDAwZSEFjAckByQwMHYifzq87Pr6MzFHRHa7dLwLnATtE+bipx/i9+Hd3LmiA2X/M5r2p7zEkbAiCIHBGwhlsrPTMOjYlbgrlzeXcsewOqlqqpHaKfqekqYTT40/np7yfGBI2hG1V2xgVMYoVpSs87neKTr7M/JLh4cP5o/gPrky5kiFhQw7ax5ER8qLuWBNqCCUlMIXdtbvdZUpBSbQ5GpB2ke9efrc7tvmjPR9xbuK55Dfms6duD1PipvBl5pcebYYbw3lw9YMAVFDBg6sf5M5Bd7K7djc/5fyETbQxa8AsWhwtXoqvfQP78mXml4yLGke4MZzy5nL3Na1SK8fByfQYedXSabRCODqX7Ag/HVlVTUxOOf6p+b7P+Z4RESPcisgg5UcdGTGS73K+kw3pk4jkgOS/9PRaWrj0oGuEjRUbuXuZNA+EGEN4Z8c7+Gv9mTlgplc7Q8OH8u7Od0kLSqO+tZ7RUaPdp4nB+mB8Nb4oBIXHCWOfgD4euhydjIkc47HJ3xkiJnPi0OZo48VNL7K4aDEgeSM2rWvilLhT+CLzC4+6fQL6eN1v1pi5Ie0Gfsz7kU2VmwCoraglsy6TB4Y9QLuznXjfePIb8933qAQVYcYwGuwNXu2NixpHoD4QnUrH5NjJXtdlZE40usOQLgZ2ykZ0z9Hc3synez71Kl9VuoohYUMQRZFk/2T+b8j/0dzejEahIUAXgIBAbkMuAboAtyENkFWfxcToifQP7s/oyNE8v+l5XpzwIi2OFjZWbsSkNnF5yuUsLVrKrtpdDAkbwt2D76a1vZWsuiyS/JMQBIHa1loy6zNptDUSb44n0T+xSyVwmZ7DrDXz2MjHeHjNw+yu3c2Vfa8kNTCVgsYCVIKKgsYCL4GwhQULeWbMMzy4+kGeH/c8ZdYyVpWuQq/Sc3Xq1awrW+f1PmXWMvIa8zgt4TSSA5KxOW0k+CZwSfIlfJ31NQAX97kYtUJNWXMZiwoX8eToJ8lvzKeurQ6TxkS/oH5e+UdlZLqL/Jpmwn3/vlt3JxF+ejJPAOVuh8vB4oLF3D/sfq9rQ8KG8MDqB2h1tHrk6JU5ObHarXyy9xOv8nXl6xgSNoS8xjzOSDiDKJOkuvzEqCf4bO9nNNgauKzPZXyT/Q12p53x0ePRKrVUtlRSXVzNC+NewGK3ML3fdPy0fvhr/Wlqb2LOmDk8sf4J6m31XJ92PQm+CVS1VvHc2Od4fdvr5DbmMiZyDFekXMFjax8DIEgfxKMjHiXeNx6r3Up2fbZ04u0TQW//3rJ+xnGizFrGkqIlHmU7a3cye+BsLDYLMeYYlIKSEGMIYQZPodCCxgKKLEVE+EQwOHQww8OHU2qV0p9Z7BbJ7X/Ph1zY+0K+y/6O7IZsAnWBzBo4iz11e4j3jWfmgJnM3zmfpvYmBoUO4uaMm9Gpus680O5qJ7s+m0JLIX5aP5IDkuUMBjLHne6wev4P+EUQhOV4qnbP7Ya2ZZAEGIINwR5xryClsQLYULGBGUtm0O5qZ2jYUMKN4byw+QV3vZvTb8Zis1DWLLnlKAQFCb4JRJmieHjNw4iI3PHHHTw77lkGhQ6i1dHKt9nfUtVShU6pI9Evkaf/fJqK5grUCjVvTH6DXr69eHTdo/xR/AcgnYK+POFlxkaPPUbfikwnyQHJvH3K2xRbivnfuv/x0Z6PAOkE+MFhD3rV99P6sap0FRa7hVZHK6fHnU5qYCp2p51iSzGl1lKve2LNscybNI8n1z/pXrBpFBpemfQK5yWdh16lJ9IUidVuZWTESIxqI1uqtvDMn8+427g65Wr6Bvb1EsGRkekOcquthJqPXnwm2l/PyqzqQ1fsYTZVbiJQH0iwIdjrmllrJt43ntWlq+VTGxlUChVBuiByyfUoN6lNAET6RLKwYKE7zZVKoeLJ0U9S1VLF6rLVPDHqCbIbstlQscE9p/uofXCIDh5a85C7vXsG38MlyZegUWnICMmgwdbAy5tf5t2d70rtCirmjp9LrDmWMGMYBrWB9055j6rWKswaM6HGUOxOO5/u/ZRXtrzibveOQXdwZd8rUSu9BS1lehaNUoNepafF4ZnF1ik6uSr1Km5afJPbNTvaFM1rk14jzjeO3bW7uWXJLVzf73pe2PQC7S5JUC49KJ0Lki7g6+yvEUQBH7UPczfNZUrsFCbETKDJ3kSro5UxkWOw2C2MDh9NamAqTpeTlSUr+SrzK+4YdAdmrXd06MqSldyx7A63N8TU2KncP/x+2ZiWOa4ctdgY8ARSHmkdYNrvR6ab0Cg1TO833a3QCZJK5/CI4VhsFub8Ocf9EBsaNtQrJ+QHuz9w55tUK9TcP/R+1Ao1OqWOc3qdA4ALF8uKl7GxYiMf7v7QfYJ9Y/qNvLDpBbdat16lZ335OrbXbHNPuCA9dB9f/zi1rSdW6piTBbPGTElTiVsMBMDmtNFga/Byp7465WqUCiXXp13vdhf8bO9nfLbnM+LMcVyTeg1KQYlBZWBawjSuTrmaUZGjKLOWsb1mu7sdu8vOvC3ziDZFE+cbh1qhxl/nT0ZIBiqFijl/zvF43w92f0BeY17PfhFHiyiCpRxa5Di+fxrZVVbCuulEOr9WUu4+niwpXEL/kP4HvZ4RnMHiwsXHrkMyJyzKtkam9ZqGUtiX7spP60e8bzwgCX915uAFydvh7e1vMyR0CI22RtZXrOeP4j/YUrXFXWd6v+keG6EKQcGfFX+Sb8nH7rQTZgyjuqWalaUr97UrOpjz5xz8tH7uE2ZfnS9J/kmEGqVQifzGfOZtnefR/5c3v0yBpaD7vhCZwybSJ5LZA2d7lA0MGUhyQDJfZn7pEd9c3FTM6rLVOF1Ovtj7BYNDB/Nd9nfu9SdIug6hxlAuTr6YSFMk16ReAyL8mv8rb21/i4X5CwkxhGBUGfHX+XPHsju4ecnN3Pr7rawsW4lKoaKoqcirn1UtVTy+7nGPkIJFhYvIqvOO5QagtREsZeDyFt6TkelOuuNEOkAUxVO6oR2Zv2BAyAA+PO1DttdsR6fU0T+kP738elHeXO4hFLb/A62TVkcrqYGp3D7gdiJNkby7811Km0oZFz2O9OB05sXOY3PlZoxqI+lB6ZyVeBYFlgLMGjPVLdXcOuBWHlv7GH0D+0oPzpzvUHbhwl3RXEFzezOB+sAe/S5kumb//KCdfLT7I2YPnI213UpVSxWRPpGAFCvvEl2EGcM4Ne5UXpn4Cha7hbe3v82iwkXMGTOHpvYm3t35Lk32JkwaU5cKmQWWAlocLe4UFZ1Y2620Odu86je2NXbTp+0BGkth03z4820wBMEpj0OvSaA6OvEqmWNDfnUzoxODDl3xEBg0KkxaNaUNrcdNcEwURf4o/oPbBtx20DoDggfw2LrHcLgcckjNyUpzDez8mtaqPfyktjJzwEzqbfXulJXbqrcxLnpcl0JgRU1FLC9Zzv1D76emrYYBwQNodjRT21qLWWtGrVC7N9TNGjMzMmawsGAhVy+8mgnRE5jebzoNtgavdkutpbQ4Wgig61PCRlujl+K8U3TSaD+B54Z/MZ2ZAOJ949lTu4cInwgygjPwUft4aaCAlAqt3dXOnro9DAkbwvKS5R7XlYKSPgF9+C7nO2YsnUGfgD68OulVsuuzEQQBl+jiuT+fY0rsFNqcbZyTdA4bKjYQY45BrVDza8GvrCtfxx2D7mB05Gg0Smn+bWlvoaa1xqs/9bYDNr1dLihYCYsegMYiyLgUhs2AgLhu+85kZPanO2bfJYIgnCKK4m/d0JbMQVAqlPQL7ke/4H4e5UG6IE6LP43vc74HQEBAp9R5GDHxvvGY1CZEQeQ/q/6DwyXFzC7IW0Cbow2ny+k2sOeMmcP7O9+nyFpEc3uzu941adIp5UubXwIk1zABAZF9pzbjo8Z36YYoc2zoSghkcuxkipuKWZC3gEZbI9ekXePhUvfE+icwa8yEGcL4vxX/51baLrGWeIQHvLr1VWYNmEWgLpDatn1eB2fEn9GlW1W4MZxoUzTFTcXuMr1Kf+KKjYkibP4QVnScorfWw+eXwrWLIGbY8e2bzCERRZGiuhbCfbuOrTtSogL0ZFUeP+XurPosRER3urquCNAHEKALYFv1NgaFDjqGvZM5YchZAr/ei9kUzrDhl/Hi5hfRq/Q4XA7aXe3MmzSPqpYqWp3eGRRGR45meclyXqt9jSv6XsGXpV9S3FSMTqXjxn43Uttai4/aB2u7lYuSL2Le1nluxe4FeQsos5Zx+6DbvdYBk2Mme6VJ3J8oUxR+Wj8PIzxQF0ikMbL7vheZI8JH48OIiBGMiBjhUX52r7PZW7fXo2x05Gh0Kh1nJ57NxoqNTIyZyC/5v7ivnxZ/Gq9secWt+r2pchN5DXk8O+5ZdwgiSB5q16ddz8d7PubGfjdS1lzGp3slLaBGWyOz/5jN/FPnu59tIYYQRoSP8EiXpRAUxJpjPT9M5Q74+DzoWOey/g1ob4XTnweVHDog0/10h2v3rcBCQRBaBUGwCILQJAiCt9a9TI+gVqq5Ie0GJsdMRkBgUYEk8tSZ67lfUD+eGfMMS4uXYnPY3EZ0J38U/0GifyLBhmB0Sh0O0cGe+j1uIxqk3JKBukAPZegFeQuYPXC2O057dORo7hh0hyx8cxwJ0AVw75B7MWvMKAQFZyScwaV9LiXRP5ESawkRPhHsqNnhdd/X2V9T0lziNqJ9tb4eatudfJvzLY+PehyzxoyAwGlxp3FFyhVdnoYF6gN5btxz7hQt0aZoXp34KnG+cd37obsLazVses+zTBShbEvX9WVOKCotNvQaJQZN95zMhvvqyK32PsU7VqwoWUF6UDrCIRTI04LSWFG84i/ryPxLcdphY8czq6mcadYWLoqZit1pR6PUcOegOxFFkW1V2/g572du638bflo/BARGRYyit39vdtXuAuC3wt8YEDIAp+ikub2ZqtYqDEoDL054kXhzPCpB5ZX2anPVZowqI8+Oe9a9DhgbOZaZA2ceVCwKIMInglcmvkKiXyIASX5JvDTxJcJ9wnvgS5I5GibHTuaKvtIcr1fpuWPQHQwMHQjApJhJTIyeSIJvAqMjRyMg4Kf1Y3z0eK/UWfW2esqby708JleWrmRw6GAy6zO7TLe1vXpfKJlBbeDeofe6s8ME64N5cfyL9Pbv7XlTdeY+I7qTrR9Dk3fqLhmZ7uCoVx2iKP5lPLQgCKmiKO462veROTixvrE8NeYpKlsq0Sq1hBnDGBg6kCZ7EwG6AMxaM6FlobQ7vd2+/bR+NNmbiPSJ5Kb0mzBrzKgUKi+DO8oYQS9DBJ0RefmN+by/631mZtzK0IjhhBpCZdXN48iOmh3csOgGjGojZ/U6i0BdIFNipxDrG+s2kBvtjaTqUr3ujTHFYFDt+7drc7R1KQgWZghjcOhgvj7raylGzhCGVnVwcaeUwBTemvIWdW11mDVmAvQnsCCIWgemcLBWeZbr/Y9Pf2SOiLxqa7edRgOE++rJrDh+yt3LS5YzMXriIeulB6XzReYX3DH4jmPQK5kTCkEF/vFQvB6AiLWv85+IAVw1/gnq/CJ4cNWDFDUVMSNjBnvq9lDZUsmDQx9ErVLz8Z6PeX3b6+6mAnWBNNr2uVb38uvFuYnnolKo+OC0D9hV472E0yg0aJQapsZNpX9wf1odrYQaQtGrD72Z3j+kP+9PfZ8GWwN+Wj85H/AJSpgxjDsH38mlfS5FqVASYYxwb+6FGcMYGTmSq369ihBDCNPTp2O1W1GgQCWovLKFmDTepkKgLpB6Wz19Avt0mV/cX+c5//by68UL41+gqqUKg8pAiDHEu9MHhJkBUqjWX2zuyMgcDd1xIn0oPjqwQBCEaEEQ/hAEYY8gCLsEQZjdUX5hx2uXIAiDD7jnP4Ig5AiCkCkIwtRj0O8TntrWWgothVRYKxAQ3EqZIJ0IxvnGYVSbKGtoZXjYaJrsTfTx93T/vazvZWgUGlwuFxE+EQRoA7gk+RKPOlNipxDuE8m4yFGYNfuUFG0OG339exPvGy8Z0aIoxZk2Vey72dkODSVSLJdMj+BwOfh498e0OFqobq3m4z0f89KWl8i35JNdn41ZbebyPpdT0VxBjCnGreQKkrv1tIRpxJhiGBQiuVDZnDa3u3cnKkHFjIwZ6NV6wo3hxJpj/9KI7sSsNRPnG9djRnSr3UlpfQuWVu9NooPSXAONJdLY7ERnhkkPw375evGPg6jBXrd3icMODcXQLIvtHQ/ya5sJM3ffQinST09O1fE5kW60NZJVn/WXOYM7SfBLoKqlyiO9ocy/BIcNGoppqq+mrKFVEr9rqqClsYQKawW5lnzyR9+G2PcsKkfNpGrEzSh0figCEiizlnFmwpkMDxuOKIpc0PsC6trq+CHvB4xqI8PDhjMtYRo6pQ6loOTMXmeyolTybIjwiWBI6BC3p5G/zp/UoFQmxUzy6N7MATOJMccAEGoMJc437rCM6E78dH7E+cbJRvQJSlWz9FxRK9SYtZIX2oEHLIH6QO4Zcg+bKjfx1va3+HTvp/xZ8SdXpFzhUW9SzCTCDeFuzwWQhG/HRI0hvzGfkeEjuSLlCg+xvAifCAYED/Dql0FtIM43rmsjGiA8HcIPuO/UZ0DvJ83RLXWH/vCtDdBQJLmEy8gcAqGn0z8LgrBFFMUBB5SFA+GiKG4WBMEEbALOAUTABbwJ3C2K4saO+inAZ8BQIAJYAvQWRfEv5fgGDx4sbty4sZs/0fGnpb2F34t+Z+6muVjbrZwefzqJfomMihzlVukEKK1vZf6aAj5cW0C4r445lwXQ6KiiydaExW4hxBCCgIC/1p+NVRv5eM/H6JV6nhz9JI32RsqsZYQZwyi1ljJv6zxGR47m3MRzKbQUYFIZSDfHkxwxDAQBmiph8wew5mVQaWHiwxA7Cta9Dls/Ap9QOPVpSDzl3xKn8tc+l4dBd43PlvYWrvz1Sg/XqLnj5rKwYCG5Dblc0PsCsuuzyQjJoLGtkShTFGXNZWiVWhSCgjWla+gb2JcgfRBKQYlepWd37W7USjUahQadShK3SwtKQyEci723wyOzook5C/eyLKua1AgTD09LZXDcXxjsDjvkLoVf75PcvPpfAaNmSyIkFTth7asQ3Bsc7eAbBbEjISD+4O11UpsLK5+HHV+CbwycPgfix4PyuApAnTDj81jw+ILdtNidnJVx8JjiI8HS2s49X29j239POaR7dXezsGAhn+z+hFkDZx1W/Te3v8kZ8WdwbtK5PdyzbuWkGp9HTE024h9PIuz5EUdgEhWjn8TcXEC5QeDX9lqcgsC32d8CcHnfyym0FGLWmNEqtXyZ9SUGlYHL+lxGnG+cJEYqAoKUxnBJ0RIWFy4myieKGRkzCNAFUNlcSVFTEQH6AAaHDu5yE6e6pZpdtbuobK4k3jeelMAUL5HJfxFHNT7/yWOzrrWOH3N/5K3tbxHuE84NaTfw+rbXKbYWc3rc6dyYfiOxvvviktud7Wyr3sa26m0E6AKwOW1UWCvo5d+LqpYqQgwhtDvbmfPnHGYOnIlepafNYSdEH0JNazUN9np+zfuVK1KuINQQSmVLJT4aH1IDU90bNUeEpQIKVkFDvrQZFZYOgYmw6kXY9Q0EJMBpcyB+HCi6WM8UroGF90HlTkg6VdpgD/HWnznOHNtJSeYvORaG9GZRFAceos4PwKuiKC7ueL0MT0P6PwCiKD7V8XoR8Igoimu7blHin/ww+yvWl6/nht9u8Ci7ou8V1LTW8MjIRzCqjYiiyEtLs3lxiZR7OthHy2Wn5PP+nlcQBIHO/2YNnEVLewtvbH/Do70Xxr9Akn8Slyy4xCM2KskviT4BfdhTs4t31XEEDJ0hPWQ2vg8Lbvfs6Jkvw4LZ0kk1SAb39Yshaki3fyfHgRNqIfjJnk94esPTAFySfAkVzRUsK1nGrAGzeGXLK/T2702CXwKLCxbjEB2cl3geW6q2UGApYNbAWW4RuUBdIKcnnM5Hu/c5kigEBW9OfpPhEcO7pa/dQUOLnSveWc/Osn1yDD5aFT/NHE180EHyVJdshHcn7xuPAEOmw/h74b3ToLYjT7tCCVoz3Lgc/GO7bqsThw1+uE0yojtRKOGG3yGi/9/7cN3DCTU+e5pr3t/AwGh/hsR3j+eDKIrc9PEmlt09nkCfo89NfSQ8sOoBfNQ+h50femXJSkqsJcwdP7eHe9atnFTj84iwN8MXV0HuEum1oIBJD1PbWMR19lxOTziDV7e+6nHLXYPuoqa1hg92f+BRft+Q+9hWs41f839lcOhg9Cq9R7oqlaBiRv8ZvLLlFZSCEqfo5N4h93qdKJ6EnLSG9ILcBfxn1X8Ayevg9a2ve7hpT42byhOjnvDwSPtg1wcYVUZWlK7wSIuqV+q5pf8tPL/peXdZsD6YC8KfodT1Gz8VfOEWqutcj6YGpnqJnh0R69+EX/9P+l2hhJiR0nye+fO+OgqVNL+HpXneW5MNb42T/gY7iRoCl38Det+/36fuRzakTyCO+/GSIAhxwABg/V9UiwSK93td0lF2UrKx0vsBvbxkOROiJ/Bz7s8syl/E0sLfMfpmc+ZAyY13WKKe30t/RETEJbpwik4cooMya5lbcKSTwaGDabA1sKFiA4+OfJS7Bt3FzRk3MyNjBuXN5UT6RJJjyaPMP0oyPtpbpbRBB5K/Qorh6kQUoco7nYLM0TM5ZjI3pN2ARqFhXPQ4d0oKm9OGiMjwiOH8XvS7e0IMNgQTagzlrkF3gShNmJNjJjMkbAgrSjzFi1yiix01O8iqz2JB7gJ+zfuVgsaCY/0RPSipb/UwogGsNgcFNc0HuQOo3utpRIMkQtJQtM+IBinvZGs91OUeuiOWctj5tWeZywk1B8ltKdMj5Nc0E9aNMdKCIBDlpye3+i/GUw8giiKrS1fTL6jfoSt3kBqUyvry9TjlfKn/DhpL9xnRIIWYVOygxC8CvdrA1uqtXrdY7Va3a/b+FDQVUNdax6wBs7gk+RJWla7yuO4QHdiddkBKQQXwVdZXNNn/nj5AqbWUxYWL+T7ne3bW7PRyBZY5sXGJLr7L+c792u60e8U6/1bwGztqdrhTWVrsFr7O+hqz1uyVCqvV2epxEBNuDOeSPpfgF5hLjF8QV6VehVJQMi1hGrf2vxWVoKK6pdqt63LE2Jo816Iup5R1I+sXz3ouB9Rket9fm+NpRAOU/Cml0ZKROQjHwvfQfrALgiD4AN8At4ui+FdK313tvnR5lC4Iwo3AjQAxMX/DLeQfwP6xq51EGCP4Nvtb1ldI+xEToydid9kR/AxMST2b2iYXYf6RFFgKPO7z1fp6iIzEmyWXrUfXPsodA+/gxU0vYrFL/zQmtYmb0m/CYregUqgwuJyg9QWFWnKdKd/q2SlTuGSQ7M9JLt7UU+Mz1BjKbQNu49ykc9lQvoEAXQC1bbXuOLe61jpCDCHudFR+Gj8SfBN4btNz7jZOiT2FYEMwtW21HrnJARL9ErnilyvcE1ygLpB3TnmHRP/EbvsMR4JBo0SrUmBzeOYjNen+4pHWVSyeORJUBmmH+sBFn9bsXf9ANAYpbKHpAJVz3WHcewLyT3x+OpwuyhvaCO3GGGmAsA7l7qHddMp9OGTVZ6FWqgk1hh72PQG6AMwaM3vq9pAWlHboG/7B/BPH5xGj1kvPqrYG6XVrPfiEYBTBYrN4qxQjpaMMNYSS35jvUR5tiibeHM8zfz7DRb0vcs8LB967P7GmWLTKI/fCKG0qZebvM8lukDYllYKSeZPmMSpy1BG39U/k3zA2FYKCBN8ENlRsALzHBkjPm0UFi1iuWs6t/W9Fq9QSbYrGJboI0gd56TV0tqESVFyZciVzN851G+dRpigeGv4QCwsWsiBvgfsem9PGhckXHvkHUGohoBdU7cswQ5sFDIHeOj3aLk6YdV2UqQ3QhfiqjEwn3XIiLQhCpCAIIwVBGNv503lNFMUu/UEFQVAjGdGfiKL47SHeogSI3u91FNCllr0oim+JojhYFMXBwcH/rpzGja12CmqaSQ8aQKTPvgN5jULD5NjJJPolMrP/TP438n+cFn8a16Vex9SEsVw/wUygj5KpkZejUWgYGjaU6f2mc1XKVagUKiZET3CnrZocO5nP9n5GpE8k+ZZ8txEN0NTeRIm1BAUKZiVeRExjDYSmSLGgw2dID5xOfEKg9ynQts9IJywdwjN6/Hs6kenJ8alUKGmwNfDilhfdrnkOp4M+/n34o/gPZg+Yzb1D7uXZMc+S6J+IXqknxrRvwv+t8DcS/RK5uPfFaBQad/nYyLH8mv+rxy5xbVut1wlIk62JIkuRx5jpKeICjdx7qmcc3/kDI0kKPXgSAVdYBuL+IiSCAk59CoISYcIDnpUHXw/BhxZ7wicETn9WClvoJGaENNb/gfwTn5+lDa34G9VoVN3rYBVqPvYpsFaVriIt8MiN4ZTAFNaUremBHp1Y/BPH5xHjFw2nPk1rrwkUTbiXutSzcASlEpu7grPDhhNrjiXZL5mrU6/mmtRrGB85niT/JC7rcxmx5lj0Kj3nJJ7DzAEzSQ9KZ1HBIq5MuRJfrS8z0md4vNWgkEEeG+lapZbr+l2HRqk5sFdd0u5sp6SphOqWanbW7nQb0SCdcM/dNPeYzAcnAv+WsXlu0rn4qKXY91JrKRlB+9ZsAgJ3DbqL/iH9mRQziZz6HBSigun9prOtahsPDnuQ6f2m0z+4PwAZwRlugbFRkaP4Oe9njxPukqYSlAol68rXefThuY3PUWQpco+tw0algVGzpM2oTgpWwylPeNaLHw9hXXj9hPSFtPM9y6Y8dnhaKTInLUd9Ii0IwjPAxcBuoNO3TAQOmtxSkNRb3gX2iKJ4OIFdPwKfCoIwF0lsLAnYcDT9/qextbieh3/YyfYSC4Ni/Hj63Fcpb82mqb2JKJ8osuqyyG/MZ2j4UN7f+T5bq7cSZ45jRsYMXtn2LOcOOpdU/wzem/oeb25/k7d3vE2EMYLZA2ezqXIT16ZeiwsXsaZY2l3t+Ov8u3yAFTQWEGeOZULMFFRp8WAMki5EDYYblkDlLul0Lzwd/OLghqWSS63WBOH9pUWCTI9htVtptDXyS94vPDX6KSqbK7kp4yYEBN7a8RZhxjBiTbF8kfkFLtHF2Ylnk2ZP45d8yfWpprWGV/a+wv8N+T8cogOzxszAkIHctfwur/cqtuyLtthVs4sn1j/Bjpod9PXvy4MjHiQ9uOeMSYVC4KIhMaRG+FJU10KISUtqpC+++q6F7Kqb2vhkUyvGiEcZk1xKuLYdfWQKmsj+oFTDkBukWKj6AumUOjxdGrOHQ9JUuG6x5M6t95c2i8zdI3olc2jyapoJ9+3+/PXhvnq2FHunZOlJVpWucudJPRL6BvZlVckqbky/sQd6JXOsyY0ZzNyaFawo+IwonyjuCTyXAZOf49LWIvK0BmyxNubvmg9ImhiLCxezrGQZt2XcRogxhBc2v8D3Od8zZ+wcUoNS+SrzK1yii/OSzuPJ0U9S31ZPi6OFquYq0oPTmaGZgSiK9A/pT/+Q/ofVx5KmEt7a/hY/5v5IoC6Qq1Ov9qpT0VxBa3urR7YPmROblMAUPjrtI7Lqs9ApdZwadyp76vZgd9hJC0rjg10fsKFyA7HmWPfYO6vXWfQL7sfj6x6ntq2WSdGTeGPyG7S2t/JV9lfMHDCTCGMEL2x+wev92hxtXmUtjhY2Vm7k0bWP4q/1576h9zE+evxf5id3Ez0Url8CVbtAqYGwjvk4IB5qcsAQIM3Rpi68fvT+kihu+iXQXCUJk4Wle26Uy8gcQHe4dp8DJIuiaDuCe0YBVwI7BEHY2lF2P6AFXgGCgZ8FQdgqiuJUURR3CYLwJZKx7gBuPZRi97+J0vpWbvhgIzVWyUt+U1EDN77Xyve3jifCT8+6snU8v/l55oydwytbXiGnIQeAAksBj6x9hBkZM3hq/VM8OvJRfs7/2R0nVdZcxv2r7mdGxgy3eMnsAbNJ9k8msy6Tm9JvYnXZao++DAwdyLs73mVt+To+PO1DAve/GJoq/exP5EDpR+aYEGuOxVfrS6m1lHxLPjqljk2Vm/g1/1csdgvjo8bz2rbX3PW/yPyC6f2mo1fp0Sg1WO1Walpr+N/6/5ERlMFLE18iUB/IRckX8d81//V4r4kxUp7byuZKZv0xy+3Stad+D7ctvY3Ppn3m4TnR3fhoVQxLCGRYQuAh6/6RWe0W3gPJfWveZZGcEdNheOvMED9G+jlSVBqIHiL9yBxzCmqaCTN3vyBYuK+ObzYfuxjpVkcru2p3cW3atUd8b2//3ry57U1aHa1u7yKZfybN7c08+efTbvfaEmsJd628ky+mfUHvyCmU5//qkQP6/V3vc3P6zThdTpram5i7ci7trnbUCjVl1jIP4chP937K9H7TMWlMzNs6D5WgItQYyuvbXken1PFF/BeH1Ueny8knez5xx9NWtVbR7mpHQHCLRwGcl3QewYZ/7unsyUqifyKJ/onsrt3NpT9fikt0cXr86SwtXurODlJoKeSlzS9xTeo1ZDVkcd/K+9z/9ouLFuNyahgdehZrytawpmwN4cZwxkeP58vMLz3fyy8RnVJHm3OfQT0wZCB/FP+BS3RR21bLPSvu4YNTP2Bg6GGuJcPSvIXEoodJP4ei05tSRuYw6Q5fuDzgiPIZiaK4ShRFQRTFdFEU+3f8/CKK4neiKEaJoqgVRTFUFMWp+93zhCiKvURRTBZF8ddu6Pc/huK6FrcR3UlVk43i+hYAMuszUSvUtLva3UZ0J62OVnRKHXaXHZVC5SU24hSdCIKAWqFmWsI0JsdO5qkxTzE6cjS7andxU/pN+Gn98NX6ck3qNWTWZWJ32SlqKqLM2qV3ffdRkwPbv5IUwUs3S8IRMn9JpCmS1ye9zlkJZ7GxYiM2pw2j2khtWy29/Hqxs3an1z2bKjdxVsJZ3Jx+M19m7ZvkttVso94mnciNixzH7QNvx6Q2EagL5JERjzAgRHKTLrWWesVF1dvqKW0q7cFPevg4XSJfbyr2Kv9lR0UXtTtoLIU9P8H6tyB/pSRiInNCkltlJaSb46NBcu2uaGzD4XQdunI3sKVyCzGmmL9lCOtVemLNsWyp2tIDPZM5llQ2V7qN6E4cooOC2j3gcvJL3i9e92yu2kyfgD44RSftrnYAevn1YnPVZq+6myo3kVufSy/fXjw84mG+z/mevv59eX3K6yT4JbjrZdVn8V32d3yf8z3Z9dkebdS21fJj7o8eZQvyFvD4qMeJ8olCp9RxRd8ruKTPJSdUykSZI6OgsQCXKD3/ok3RHik2AdqcbYiIFFmKPDZQAJaXLSLIpOOejKcINYTSYGugf1B/rkm5Br1KT5gxjOfHPU9aUBpvTHmDlIAU1Ao1p8Sewvjo8Swv9hQuy204DPHPY011Jmz9DDZ9AOXbvMVMZU4K/vaJtCAIryC5cLcAWwVBWAq4T6VFUTy8JJgyh8SsVyMInn+jCgF8ddL+RbA+GIfLgVahRa/SeykeKhVSknsBgUBdoJfYSN+Avvx87s8E6gPdsVFzxs6hrq0Os8bMhOgJ/Jj7I7/k/+I2mNQKtTuOpkeoyYIPzpby/YLkLn7Fd5Aw9q/vk6FfcD8SfBN4actLqBQqRFFEISioba3tUg04yT+JcxLP4YpfrnArtwKYNWYMKinuPdAQyPX9rmdawjQUgsLjlMGkMblTp3QiIGDSHKZrdA+jVAikhPmyId/TTbd36EHGr7UKvr8F8pftKztjLgy5vuc6KfO3ya1uZkxSULe3q1Ep8DeqKW1oJTaw58Vm1pWvo0/A389XmuyfzPry9X/LNVzmxEGv1uOn9aPB1uBRbq4rAO0megf0ZlnJMo9rET4RbKzc6CEOdbDnfZ+APlyfdj0apQa9Ss+w8GH4qH0w7yeuuKtmF9cuuta9ljCqjbx3ynukBKVIfVTpiTZFe2T8yGnIwUftwyenf4LNZSNYH9ylWJXMP4f9XfLbXe0YVAZaHC0eddQKdZf5xMN9wlla8h3Jxkm8Nv4jzAaBEEMIZ3AGl6dIej0BeknIcVDoIN4+5W2s7Vb0Sj3TF0/3Msz9dSeYUG3lLvhgGrTUSa9VWrjqJ0klXOak4mi2CjcCm5Dilx8H1nS83tRxTaabSAg2MmtikkfZ7ZN7u/PlZgRn0Nu/NzkNOVyTeo1HvTMTzmRZ8TImRE/A7rRzTdo1CPuJoI+OGE1KYArhPuEeAiM6lY4Inwh8ND7EmmNRCAqPU8c7B91JjPkwlCmbKqE6C1obD113fwrX7jOiQVJUXvY02FsOfo+MG6PGyHlJ59HQ1kCBpYALe19IdWs1YcYwt/gHSBPlBb0vwO60e+Vu7CrmLdQY6uWqF2eO45b+t3iUTU+fTrzviSPQceGQKI/46WAfLaemHaB+31IvjdWyrZ5GNMCS/0K9p5K5zIlBQW0zEX49484c7qsn769SqnUjR21IByR7ifbI/PMIN4Zz/7D7PebpKaHDSC7ZBksfY2rMFAJ0+5Tk/bR+xJnjKGkqoaSphMkxUv7xgz3vz0k8hxBjCH46P7QqLRE+ER5GNMB3Od95bMg3tzfza8E+R0CTxsSdg+70MJRTA1PpG9iXAH0A4cZw2Yj+F9AnsA9jIqVwp1/zf+XKlCs9rk+MmUhmXSZ9AvowOHSwu1wpKLkk+RIWFS5iTc3XRPsFEGYMQyEoUAgKwoxhbiO6E7PWTIRPBP56f+4Zco/H+EkPSic16ICwwe6itUGa95uqDlnVg+zF+4xoAIcN1s0Dp5zy7WTjbz/pRFH8AEAQhNmiKL60/zVBEGYfbcdk9qFTK7l+dDwjewVS1tBKhJ+elHAzWrV00hxpiuSVSa+wt3YvRrWRlya8RGVLpbQjLKhodbQSbgzn4z0fk92QzcwBM7E5bagVammi1f91jKmPxoebM25mfPR4qlqqiDJFkeyf7D7p7hKXC3J/h59mgaUUoobCtBe841YORnMXSo1NpeBok1IOyRySPgF9uKTPJZQ3l9PmaGNY2DAsdgtPjXmKqpYq1Ao1KYEpxPnGsbRwKUa10T02dEodCwsWMilm0iHfR61Uc1mfyxgUMoiy5jLCjGH0CehzeMIgx4jUCF++u2UkeyqaUAB9I8zE7X/KWLpZGqsVO2Dig94N2Jrg7+a2lOkx2tqd1FrtBPl0f4w0QKhJK+UmPwwB96PBareS35hPgm/CoSsfhES/RPIa8mhub8Yop2v5RzPJpxefDHuUwsZ8/AUVfUq347/jGwhIoLc+lA9P/ZCs+ixERIL14RQ1FvPYyP8RqAvAX+fHBb0voK6tjjhzHFNip5DTkIMoivT2702cb9wh339/IUl3WZNn2eCwwXx2xmfkNeRhVBvpE9DniNK2yZz4BOmDeGzUY+yt3UuDrYEE3wRGRYwityEXvVqPVqEl0BDIgJABPDP2GZYXL6eypRKNUsNnez+j1dFKZWs5IkcWljckbMixGVvl2+Cn26FsM/jFwJkvQ8L4wxMXa+widK2+EFztUiYbmZOG7vjXvhp46YCya7ookzkKzHr1X4oqhRvDCTeG/2Ubu+t2s6hwES9vedld9t4p7x3W+/tqfRkWfgQuKzV74fNLwCnFa1GyAb6fAVf9CIbDcNGJGeFdNuQGSXFR5rCJ8407rIVTvG88K0pWsKhgkbtsTOSYQ46pTnw0PgwKG8QgBv3drvY4CcE+JAR34c7dVAFfXgmNJdJrZ7uUyq19P++H3qeCr6w4f6JRVNdCqFmLUtEzqqohZh35x+BEemv1VhJ8E1Arj0huxAO1Uk2CbwJbq7aeNLl7/5W0WdD8OIt+yVPpt+RRz2tDbgCDP7H4E+sb6y4eENpFKp/9OFLvoPN6n8eacs90amf2OtPjtUJQ0Cegz1F5Ucic+ATpgxgdNdqjbEDoAK96IYYQokxRPLbuMY/yS/pcgkF9ZIcfx2RsNdfA19dDbUf8f0MRfHYJ3LQSgr1ztXuRfBr8+ZZn2dAbPFNvyZwUHE2M9KXAZUC8IAj7q06YgNqu75I5GpptDrYWN7C9pJFwXx2DYv2JDjj8B9QpcafQ5mzjw10f4qP2YfbA2fQL/usJ+G9Tm7fPiO6kYjsUrASbFUxhUnoCnS9ED/d+cEUOgos/gSWPQFs9DL8V0i7smb7KkOCXwFtT3uKFTS+QXZ/NqfGncnXq1Uc8AR5r2p0udpQ0srmoHpNOxaBYfxJDjjA2u6F4nxEN8Oc7MOlh2PWdlLot+XRIPRfylkNgAgTLC8cThbzqZsJ8e87zIdSsY11ez09nmys3ewg9/V0S/RL5s+JP2ZD+J9NUDsVrwdECkx+BLR9BWyMMvsErx60oiuwobWRTYT1qpYJBsf70DTeDwy6dshWtk2I3zZGg94OIgaA9tLbJ8PDhPDziYd7c9iaCIHBL/1sYEiZnJZA5OA0tdoS2WB4c8iTz975Ga3sr16Vdx4ToCce7a13TWLLPiO7E0Qa1OZJHZOUuKV1rXR4otVLs8/65p6OHwvnvwu+PQ3srjLodkk49ph9B5sTgaE6k1wDlQBDw/H7lTcD2o+mUTNcs2F7Ovd/s+2pTws28c/Xgw44PDNIHcV3adZzZ60zUgho/nV8P9RQwdHF6rvOFkj+l/H0/3rJPPc0nBK5eAMH7+U+qddB3GsSOAqdNMrxlepT+If15bfJrWO1WAvQBqBV//3TsWLEur5ar39uAq2MoBflo+Gz6cJJCj8CY1vlKi01Hh1ZiSy389gBc/hVk/gpF62HbZxAzHIKSYfgMCOnb/R9G5ojJr2kmtAcUuzsJ89VRUNvzJ9Kbqza7YxGPhiT/JJYULemGHskcN7QmMAZJbqe1OdJGntYEvSZ6zYObi+q59K312DuU5X20Kr64aTipzevh04v2zbGmMBhwheR6OvDKA9/RC1+tLxf2vpBJ0VJoz4HxrDIy++N0iXy6vog5izLx0WqY2u8hekcamBbXlwB9z4TdHDVaM2iMYD/w+S7C/NNh6hPw1dX71gUaI1zzC0T077jfB/pdAAkTpIwyppBj2fuTBkEQfgEuE0Wx4Xj35WD8bbExURQLRVFcJoriCFEUl+/3s1kURTnavpspb2jlyV/2eJTtLrewu8xyxG0F64N71ogGCE2BQdftey0IMOI2yUjZ/pWnBLm1Sto57wqDv2xEH0OMaiOhxtB/hBHdbHPw4pIstxENUGO1syG/7uA3dUVgLzjlSc+yETNh+bOw4W3JkwKkMWqOkNJhyZwQZFc1EdaDhnSISUulpWdTYDldTvbU7jmq+OhOevn1klIUOu2HrixzYmKOgDNeAEEhLfJ3fCWJbAZ5Co46XSLz1xS4jWgAq81BSXklLHnMc45t6kj1t/SxrmM7D0KAPkA2omUOSWFtMy8tlU53rTYH32ys56kFpWRWnMBpIwPi4bQ5nmXDbobtX0onz0Xr9hnRIP0t7vrOux1joGxE9yCiKJ5+IhvR0A0x0oIgNAEHJk9rRFLuvksUxbyjfQ8ZsDtdWG3e+xOt7SdobmWdr+Qem3YeNFdJ7tzrX4fwDGjtwtBpazjmXZT5Z9PudFHd5G0wNLS2d1H7L1Aoof9l0k5zfSGYw6Xd6tUvetcVndJmkMwJQV51M6kZvj3WvlqpwN+goayhjZjAnglzyG/Mx1fr22UKmSOlM9vC7trd9A/pf/Sdkzk+JJ8G0/+Q3EoNgRCa5qUP4hJFKhrbvG51tbdBS413mw6bJJgob7LIdDM2hwubw3uzscV+gq5PQTrcSbtA8i6rLwCfUGkT6/WRUghESxfr1P0zyci4EQTBCHwJRAFKpExOzwBfAJ2+/ZeJopgjCEIw8AbQmfbndlEUVwuC4AO8AgxGsikfFUXxG0EQCoDBoijWCIJwBTAL0ADrgc50Me/ud997oii+0KMf+ACOJv1VJ3OBe4BIpC/xbuBt4HPg8JSsZA5JuK+OCwZFolMrCDZJrjJaleLguXBPBAz+ED9GiuvyCYGqPZKSd9+zPOsJghQnLSNzBPgZNFw3Ks6jTBBgaNzfOEHRGCBqMPQ7H2JHgn+sNE4FhTTBKjWg95fi/hPGdc8HkDlqCmqaiejBGGnoeffunbU7iTPHdVt7nYJjMv9glGppYy/tPOl5Y/QOlVIrFVw5PNar3D8kUjpZ2x9BAcZgGHiNFC8tI9ONRPvrGZsU5FHmq1eTGHICr09BCiGMHCStUeNGg18sDJ4OpRsl9e4D6Sfr9ByEU4EyURQzRFFMAxZ2lFtEURwKvAq82FH2EvCCKIpDgPOBdzrKHwIaRVHsJ4piOvD7/m8gCEJf4GJglCiK/QEncDnQH4gURTFNFMV+wPs98xEPTneodp8qiuL+cs5vCYKwThTFxwRBuL8b2pcBNColVw2PIyHIh4LaZvqEmciI8iM5zHzom4+S/MZ8NlRsoLqlmiGhg8lwqdHlLJHES+LGSG7cTRVS7ufSP8EvDnyjJAGxwESpkdhRkjDD8qelU70JD8LmD6Td9okPQYS3CqTMsSOzLpP15etpc0ppslKDUv8ReUDPSA/HJcJ7q/PxM6i565RkMqIPOKFss0ix+YWrwT9OGouBvQ7eaMUOyF8BSVMRk09HKF4PfjGIISnYRQXaiBNXmfxkor7ZTrvT5ZEfvCcIMWkprOu5/PU7a3YSbe4+RfgE3wQ2V23mGq7ptjZljiN1BVC8XlrcByZKP1ozRAxgbO9g5pzfj3nLctGoFNw+qTf9In0h6BLJeN7wJhiCqBp3D1tdTezSOOhd+Ds+YiLrcxxkRPkyKC6gx9LHyZwc+OjUPHp2KvPXFPDLjgrSI32ZPTmJ2I4Uk3nVVtbl1VLe2Maw+AAGxPhj1Kpod7Wzs2YnG8o3YFQbGRo+lN7+h6GYfbhYyqFoLZRtlTR4VDpJD6Vyp6Q7ED/WU0BMoYRhN0nxz9WZ0tp06yegUMP4e7vOJiMDsAN4ThCEZ4AFoiiuFKQUYp91XP8M6DwlngykCPtSjJkFQTB1lF/SWSiKYv0B7zEJGAT82XGvHqgCfgISBEF4BfgZ+K17P9qh6Y6VsksQhIuArzteX7DftQNdvmX+JqUNLcz+fCs51VZ32WNnp9I/5jBSSR0FhZZCpv82ncqWSgDe5E2eTZvBqevmSUqien8ppdWGtyR10U4SJ0sneePulU73dGZJmCFxshS7ZfCHwddKDzXtEaosy3Qre+r2cM2v19DikIyFecI83p7yNkPDhx7nnh2aYJOO60bHc86ACNRKBSZdF0bVjq/g5zv3vQ7qDVd8KylyHkj5Nnj/dCmnZPQwhE37NjcdkcN4I/S/TPWz0SdMXngeb/JqrET66xEOJ+fnURDs05FLuofYXbubU+O6T+01wS+Bb3O+7bb2ZI4j7a1SSNT6N/aVRQ2RXFKdNvziRnPRkBhOSQ1DEMBXr5HqaMNg1CzofxnNLgcvbHmRBfk/u5sYF3EqDWXTeG1ZLteNiuPe0/qgVSmP8YeT+TcRH+TDw9NSmTkhCR+dCp1aGk9Ftc1c9d4GSupbAcl39/kLMzh/UBSbKjZx4+IbETtMBZPaxPunvk9yQPLB3ubwabPAogdg1zf7yvpdBNZKyF8uvdaaJAGx8PR9dfyiJKPZWi2lshp8veTqpvc7+j79SxFFMUsQhEHA6cBTgiB0GrP724CdvyuAEaIotu7fhiBN5H9lMwrAB6Io/sfrgiBkAFOBW4GLgOsOrNOTdIdr9+XAlUg7A5Udv18hCIIeuK0b2v9H0tzmYE+5hdwqK+3dIFSzp6zJbUSPSQpi1qRE6pvtlNa3dn1DfZG0C9dUeVTvu7t2t9uI7uSF/B+oSz1beiG6pPx75kgYOl2KjQbIWSIZI+UHCLjr/fblkTYGyUb0CcDKkpVuIxrAJbqYv2s+7QemLzsBqWpqo7i8Cl3dHkxN+e6Ua8126e+vvjwP/ngS0i+CsfdIKSraW6VT567I+g3sVuhzOmz92OOSunQ9I3yqWJsrx0ifCORWNxPu2/M5O0PMPefa7RJd5DbkEm3qvhPpYH0w7c52Kporuq1Nmb+BpUyagy1SXGXnMym7qgm744DYUZcLanOhfDsNtVXsLG2k0tImpeD58x3PuiV/SvPmmlfBIT3v/AyafUb0/hiDyLfVeBjRAMvLFjKst7Qumb+m4JjkSpc58SiqbWZnaSO1VtuhKx8GSoVAkEmLWqkgr9rK7rJGiutbKG2Q1qm+ejX3jTLhb9lDQ10pb25/021EAzS1N7Gu/CDCs0dKTbZkeo29B0bfIXmj7fgSYvc7VbY1Qc7Sru/3CZZOpg3+shF9CARBiABaRFH8GHgOGNhx6eL9/r+24/ff2M82FASh/0HKDzwlXApcIAhCSMf1AEEQYgVBCAIUoih+g+QePpBjzFGfSHeIiZ15kMurjrb9fyIFNc088tMulmVWo1IIzBjfi2tHxRFg/PunWG0dE+8NY+LJrrTy8tIclAqBxtZ2bhmfSFBH3DQuJ2QuhB9vhdZ6yZg9/10p593fwObwfsBa2620m3wkt+wxd0mnfdbKfSfQK5+ThBpEp5SXT+aExmLzVn6va6vDKTpRc+Kqd28uqqcyfxcTcp9FV7QMlGrE0XdRl3ot9y8sYdHuSuZMNHHRmDth84eSGqfGCCNuldweu6Ktw5tIUHjnQQdUop2mNjkpwYlATpW1RxW7Owk16/h5R3mPtF1qLUWv1neL0FgngiDQy68XO2t2EmaUMx4cF/KWw7fTO+bFEOxnvcHDWwL5ZkspSoXAdaPiuWlsgjRv25ph++fw24PQ3oJPWAbVKY8zfZWDZRdr0Lq6eN447ZKgmOiEQzyjD6bg7kJ6vrlEaO9CKErm34vd4eSXHRU89P1OmmwOegUbeemSAaRFHr1wY1NrO59uKGLu4ixsDheDYvy4a0oyH6zN55PxVnqvmQHNNTQ3XUmj2Oh9v72blL4dNqjJgp3fSCfLw2ZA4Srp8Gd/2g70IJb5G/QDnhUEwQW0AzOQvJS1giCsRzq0vbSj7ixgniAI25Fs0BXAzcD/Osp3IsU/Pwq4XatEUdwtCMKDwG+CICg63udWoBV4v6MMwOvEuqc56hNpQRCCBUG4XxCEtwRBeK/zpzs690/E5RL5bEMRyzKrAXC4RF75PYfNhQ1H1W7vUBNxgQZs7S6WZ1Xjo1UR6adn/poC1u+f7qcmE76+WjKiQTot/vrav30ynRyQ7JUK6YqYqYTs+RkGXAnLn5EWCyD9f/kzMOAqCEiQdtlDU/7W+8ocO8ZFe4tnXZlyJTpVzxspf5cqSxvP/bqHYbXfS0Y0gLMdYfnTOIs38NueSjKifGlRmRF3/QDVe6U69mZYPkeaWLui92nS/0s3S/FT+2MMYrc9nJG9usiRLnPMya5sIsKv50+kQ81aSutbEcXuj1TKrs8m2qf7TqM7iTHFsL16+6ErynQ/dQXw5ZX7zYtVaL65hkG+DYCUturtlXlsKOiYtyu2SZvR7ZJXkKpiG8NzXyItVMPCSl/EuAOfQ8HShuCwmyWxpEMQa46ll6+nJkS8uRdl1VL86uA4/x5TpJc5McmssHLHl1tp6sgEk1vdzP99vZ3GlqNXdN9e0shTv+7FJYrEBhrYXd7EjtIGnh5noPeyW6BZUpQ37vqBqyLGe9wrIDAiohvikO0tUtaNTs+z9lZYNRdSz4OGYs+6Sacc/fud5IiiuEgUxXRRFPuLojhEFMWNHZfmiaI4rKMsp6NujSiKF3fUTxFF8eaOcqsoild3iIZliKL4bUd5nCiKNR2/f9HxHumiKA4SRXGdKIrbRFEc2FHeXxTFX4/15++OGOkfgJXAEqRdhJOaxrZ2ftnpfXqxpbiBySmhf7vd3qEmXrt8IHd/tY1bxvfC4ZJSX1wwKIryxv2EcOqLvE/SGksk9zLTkb9/n4A+vH3K27y1/S3KrGVc1Pt8pmrCENQLJNfstgN2FNsaJaGxU/4nucxU7ICC1dIOeuIkKdXA/rTUSWIQuX9AcB/oNX6fQJnMMSE9KJ3XJr3Gm9vepNnRzHVp1zE6cvTx7tZfUmlpIyXASUCh9zPTUL2V9VdOwJD3K5rgIQgr1ns3ULEDXO0QPWxfeIG9GQQlnD0PNr4PKWchhqYhZP5KS8gAcpOuI963D+lRft7tuZxQugmyFknxVL1PlVJoKLojekamK3KrmzmjX0SPv49Bo0KtFKhttne7KFN2fTbhPuHd2iZAnG8cq0pPSoew44+lxHtetFmIUdYjZW2RWJtbw+n9wqE+36sJfdHvPHvhbeiy5iOOvRuCkxFyliCGpSEMuFI6xU6cKM31pZsgayEotdB7qhRelb9CElRKGE9gzAieH/88n+35jNXlqxkeNpL+vmfw4i8Wrh8dz+XDYrp2C5f511JU18yB+4K7yy1UNtnwNRzdWMiptnLugEhiAgzk1zQT5a/H4RRJMVS7N4sAsFkYn7eOx4Y+wAdZn2PWmLkp/SbSg9IP3vjh0lwDOYu9yxUqiBgE5VtBbZRCvSKHHFnb7W1SeEX2ItAHQOIUCO936Ptk/rV0hyFtEEXx3m5o51+BUaNkQIw/xXWesctJIcajbjs5zMw1I+OZtyyHwtp9D6TZkxIRRVES3fHpIjG8zndfXPIRIggCg0IH8dKEl7C77Jg1HSrhUSOgsVhK07G/4a5US8qHn18mvd74Lgy5QZrYV78I1y6EoA5D2eWCTfNh6aP77g/qDVd+JxnjMscErUrLmKgxDAodhEt0daubaU/hZ9BQbFXiDOuPsrHE45ohKAafb86VxqXjMvCP916strfAx+fDOa9B/8ulsuwl8NVVUqqrhPFQtRth7L0w9v9wiVp6qTUYNAd5ZJb8CfPPgE43zNUvwjW/QvQRTtIyh0Vbu5OKxjZCfY+N6FuYr47C2pbuN6Qbsony6f5nXZxvHG/veBuX6EJxsDAGmZ7BEOQ9LypUNAi+SF6IEikRHW60Ru8NbjG4L367P5bcUre+C/0uhqlPItTmSG7jQ6dLcZsFq+CDM/e5q7bWSRvXVbuk13++A+Puo9e4/+O+YffRbG/GqDEiigrGxTsw69QoFD0r1idz4tGZQnV/QkzabsmA0CvYyKbCel5amu0uGxTrxx3p4VLI1H6u1X7ZSzl38uNM7nUGKkGF/mCeYkeKzgyhqd5aKBofWHivNL+3t8IPt8LVP0qp5g6X/OXw6UX7Xq96Aa79FcLSuqPn/xpEUYw73n04VnTHDLtAEITTj+QGQRCiBUH4QxCEPYIg7BIEYXZHeYAgCIsFQcju+L//fvf8RxCEHEEQMgVBmNoN/e4RNColN41NINC4b1dveEIAQ/5Oblug1e5gb7mFnaWNtNodGLVKDyMa4K0V+WRVdsSVBCdLqaU6USjhzJckoYWjQKfS7TOiQYp9djnglCekEziQ/j/hQVg7z/PmLR9Bn2nQXC2pInfSUAQr5njWrcmSBFZkjjkGteEfYUQDRAcYmDEmGiFpihSr774wAqGtYd8idtf3MOxGT1fulHOgbLP0+9LHwFoFLfWIvz8ulTntkP0bbPscitaAwR+1VktxXQs7ShpobO3C/W3T/H1GNEjvv+3T7vvAMh4U1DYT6qtFdYxO/ENM0r9/d5PXkEeET/efqps1ZvQqPSVNJYeuLNO9BCbCac95zIvtU5/hk5x9Rkr/aD9G9erIuxuRARmX7rtfY0QYdA3s+Wlf2Y4vJBfwxQ/BunkdHjVOWPe6Z8ynIWCfEd3JqrlQX4BKocJX54tKoUKtVOBn0MhG9ElKn3AzN4yJd7/WKBXMuSCd0G7QnPDRqfhpe5lH2abCBnJdEbimPrmvUFDAGXPBPx6TxtR9RnRn25Mfk0IgOukzDWqzJG+R3T9Ic7ytURLGPVxsVlj29AFlFmlDS+akpTtOpGcD9wuCYAfsSDp5oiiKf5Xg2AHcJYri5o78YZsEQVgMXAMsFUXxaUEQ7gPuA+4VBCEFKb9YKhABLBEEobcoiiekK3lqhC/f3zqKnCorOrWCpBDTPjGwI6DS0srcxdl8ubEYUYTxvYM5f1CkVz2708WS3ZW0tTvJiPaHEbdIbl9NlVKC+eBuSCWwP6Wb4aurJUM4YiBc8rk0ebucUsxWbY5nfWe7ZNADOPcTLxMdktFyIP8AtWiZ40+/cCOKJe9IsfoqjZTrMWoIwu+P7avU3gKrXqB92iuoXW1SXsnidfuUOttbwemgsK6V2PYuDKX2NmqbbbyxLJd3V+XjEmFwrD/PXJBOr+D9Nh3avAXbuiyT6RayK61E+R27uM4gHy2F3azc7RJdFDcV95ggWJw5jt21u4kxx/RI+zIHQamS8tRP+q+08NaaUAcnMffiQWRWWtGoFCSFmvadCqp00GsSBPQCpw0xPANhwR3ec+N+vrii044gitIi/iB13LjaPTf5ZE56zDo1t0/qzelp4dQ124gNNHrOZ0eBSiF0OQyza+3sEScTNO4r/Bw1uMxRhEWnE9ndm6G1ubDgTgiIk8RvbU37PES6MprtVu+ygyG6uq7f1dpB5qThqEewKIomURQVoijqRFE0d7z+KyMaURTLRVHc3PF7E7AHiATOBj7oqPYBcE7H72cDn4uiaBNFMR/IAU7oJLfRAQYm9AlhRK+gv2VEA6zNreOLP4vdD6VlWdWoFArMes/9jzP6hbNwVyV3f72duma7tAsXOUhK4ROWKk3s3UVLHfxwm2REg3Sy99XVUqzIH09IxrvhADGmPmdIrt0qHYTtF0viGwMDrvasq/eXYqVlZA6B0hgAQ2+U3KiXz4G6PEn5tlMwrJPmamz6UPCNlU5n9k93MfAq6lw+XP91AWVpNx3wBmqIGsTmwgbeXikZ0QAbC+v5aG0hTtd+q4XB13p3sNNlXKbbyapsIsz32InhBZt0FHbziXRFcwUGtQG9qmcE06JN0eyqlb17jjl1BbDkEWk+XPkcLPkvfH4Z4a5yxvcJYWRikKdrbfl2+PYG+ON/sOJZhFUvICaM92xT7y9tVAOiKZy2gD7SvD70Zs96Trv3/NvvImlDXUZmP3x0KgbG+jM5JYykUFO3eSfEBBgZleg5BqP89WwtaaSyVeDaRe2cu9SX879r4rNNld0r4iiKsPUTyF8mnTq3WWDFs1IKzLXzIPkA51lBODKxMZ0ZRs32LFMoIW7MUXdd5p/LUVtYHUm0LwfiRVF8XBCEaCBcFMUNh3l/HDAAWA+EiqJYDpKx3ZkvDMnI3j+5XElH2T+OghormRVW1ubVYG1zcEZ6BL1DfdiQX8eyrGr6R/sxITmEuCAja3JrvO5/d3U+7109hA/XFpBZYWVkYiDtTpEdpZK4SU2TjQDjUQqHWMolw7dsM8SOktxWBAFSz5UM5gNdxxxtUhqOiQ9C7u/STnzhGqjYLhnRSo3kinbVj56GtEoDYzp2Drd9DuEZUoqCIFls7F9JTY7kTlW2RRLFiR8jqWvmLIHi9ZIYXfw4Shx+rMiuZl1eLaMSgxmTFHRwdeY+0ySDd90b0ubRts8kEbwJD0Dmr6DW4xxyI5rYoZD5E0x8SBqjTRWQOBmsVTisVeRUWZlXlc6No58hNucTWg3htA+/DXNYBjt2Znu97eLdlVw0JIpFOyspa2zlsv4ppF/8Kcq1LwMKGH27Z75KmW5lb0UTfcKOXQ76ULOWzUXdmyaloLGAcGP3C411EmuOZXXp6h5rX6YLqjOlBbwpDHqfIoUy7f1ZOsWylEkn1fthbWtHWZWH++mmNUGfaQiGQERzJEL2b7hC0xGST0NY8xJi+iXU9r2cnU1BjAdIGAsXfQRrXpE2quPGIqacg3P926jKN9OYdA7NSecSiJpjoyYg829AFEV2ljayu8LCmuxaIvz0nNEvnLQoKa6/uK6Z5Vk1/FlQx6jEIEYnSnO0KIrk1zRz49gEYgIMbCqsp0+YmeQwEy8uyeLGsZ7jf+GuCm4al4BJd0Bsdn2hJJaXt1xyxU49D+JGg/YQWkM2K+xdIP3eWi+tVcf9nyQCqvODyMFSOOLOb6S/tdF3SmVHQvIZcK5KCqswBkmCZREDjqwNmX8V3XFU+RrgAiYCjwNWYB5wSJUdQRB8gG+A20VRtAjCQXfEurrQ5TaWIAg3AjcCxMScWC5tZQ2tLN1bxdzfsmi2S7vLX28u5clz03hswW7a2l38sLWMbzaX8P41Q+gf7ceXGz1j3OICjTy7aC8PTUvh5aU5/LStjBqr5AIWZtbhZzhKsYj2Vlj2FGz+AKY+AV9f494JZ8NbcMV34BstCY3tT0sdrHxeMo52fiMZLCF9pYT29mZQaEDVRd/8oqUdvsE3gErbvafnJyAn8vjsUSylkgBdTab0eseXMGImWCtgx1cdZV/hGnAVHwvX8cYaKcbqx23lnJoayrMXZnhPtiDFBGZcCiln7xuDecskwzxuNDhsbKjVYvBtI1ltRrfoBogaLOVX3zQfZ1AySr0vRo2ST3a28EN2POMSnqK+ReRBnwxSFAp6d2GwDYr14/EFu1mbK6Ww+WpjCS9dnMHZV/4gVTiMtDQnIv+U8ZlV2cSUvn8/C8KREmLSUlLfvSfShU2FhBi6EIfsJmLMMby38719QpT/Ak7o8VlfAB+dJ6l2g7SgH3azpE9iKZPSVh3Aurxa4l1+uM2LEbfC6pegrQHBJwSihlAXdxrvFfehV8qLxEWEcdl7m/nq5o7ni9YEKWdJp2qCACotO0oa+G/pJcSYL2XthjaqlmYz/1o/xif33FiTOcHH5hGys7SR5VnVPPdblrvs43WFfD1jBMEmHfd8tZ11HWlXf9haxtn9I3jyvH7kVlm56M21nDMgkuzKJuICjewqs/DjNmk+16o8nWBHJAR4C3haqyTDd+mj+9yot38OF34Aqef8dcc1BogZJW1ogbSZnr8STn1a2sQPTpbCEQdcKemmqP7GoZPBHzIukf7uBNXfa+MkRRCEc5FyQ/cVRXFvF9eXAXfvlz6rqzbcdQRB+AW4TBTFhp7p8eHRHcEJw0RRvBVoAxBF0TPHw0EQBEGNZER/0pkvDKgUBCG843o4UNVRXgLsn2wzCvBUM+hAFMW3RFEcLIri4OBg74mrJ3C5RPKqrWwsqPvLxVZ2ZROVFpvbiO7kw7WFPH52GlH+0r70zlILWZVWxiQFMzh2n9p2TICB2EAD6/PrKa1v46yMCC4ZGsMt43sRE6DnuQvTCTmUWISjHar2QNE66VTuQOryYMuHknt18Z/7jGiQ4kO2fQIXzpfUD9MvgimPweXfSDvww2dIbmohfaU0A7U5UnyKxti1Eb0/WuO/3oiG4zM+Twiq9uwzojtZ/7qXy6Fi60ekG2rRqhTcPtzM/MkuzgxvpKJuv1hAmxXKtkLJJmhtkMrUBvCNwnX2PGmCbG+F7MXUhI/HofbBt3oTLfpwLOnXQ8lGyPwFBIHd/e7FrvJh3uUDmTUpkfMGRrIs18r5Q+NRK6GyKIsJ+jw+PTeA2ADpbyvEpOW8gVFuI7qTZ3/Los4uuI3o6qY2NhbUsbfCgs1xQso5ePFPGJ9t7U7KG9sIP4au3QFGLXXN9m79dyxoLCBY33PfsZ/WD4WgoKK5i+f8P5QTenxW7tpnRHey+UNIOZv20+ayoy2Yov3CA9qqchkhbiUoKBjHue/A2HukrBWdokvWKtj7M0ErHyZAaKTG6cNzS/N59oJ0kkIOiGdV60ClpaHZzuJdlWwpsfDD7kaqmiRNkjeW52Jr/2c8g/6pnNBj8zAob2hlY0Ed2ZU2TefrAAEAAElEQVRNlNS38vUmz7HcZHOwpaiB4rpmhsQHcNvERK4bFYePVsUPW8sorm3hj71V2BwuFmwrY1p6BCuza8itlozhm8YmEBdo4PbJSUzqG0KUv54rhseiVAhSbueitZIBXJ0p/R0dGIu87GloPSCtHEjr2KL1ULlbWq8Omy6FDQYkwNi7pThppVoKv/KNBIMf6H0lA7i5VlrnVuyQvOOOBLVBNqKPnEuBVUiaV0eNKIqnH28jGrrnRLpdEAQlHSfEgiAEI51QH5QOd/B3gT2iKM7d79KPwNXA0x3//2G/8k8FQZiLJDaWBByW63hP0+508fP2cu77djtt7S589WrmXT6Q0YlBXnWdougZV9mB3eHC7nRy0eBovt1cQkFtC06XSHSAgafP68fPO8pxiVDXbOelJZKbqdXWzqM/7cbS5sCgUfLUuf0YnhDo1bYHtib48134/XFJfMQ3Ci7+2NMtRXRJcSZKtSRS4vWB2yQX2qt/hKX/g1CkGGm7JKrCtBehcg+8PV6qn3IuTP2fnM7qZMfVxSJOdO1TtnWXiSgRmX+ajhF/3iLF4iuU2BX/B/4zpHG2+GHY+bVUP3YUnPWyO/e4PWYc6yd8i7GlBIchhDixhDF/XCSJgej8KJv8KjuDTkVtbySrPZTX/nDwkLGB2z7dgsMlEu6r44Nrh5JV1UR77ipCV90GLbWMVOlYNHUOuwOnEhbgy+ps77CLdqcLV8eTb0+5hRmfbKKgpgWFADPG92L6mAT8jjJHpwzkVlsJN+tQKY9dWielQiDIR0tpfSsJ3STKU2ApYFDooG5p62DEmmPZW7e3R3JVyxxAV884l4PmxDO59Ecr28vXYdareP3yQYwSdqD7+lppnh05S9J4sFmkTeex90hpqzrT+jntXBFVxZ1/2qlpcjEqMQh9F2n4cqusfLCmoMtY17Z2Z9cufDIywObCem76aBPVVhsapYLnL0rH0cVatd3pYmtRI28uz8PudBHko+GuU3rzzMK9uEQRu1O6p9nu5LVlOVw/Jh6jRsnAGH8W7axg1udbAZiYHMI7Vw8mOcwshQF+eaWU+1mlhbNf7/pvyWnzVKgHKXTiiyvc6wTG3QdDb4Jrf5FOoxc/CA6b5IJ94Uee91ZnwjfXS0a0IMDg6yWju6sUsicZcff9fBnwJBADFAH3Fzx9xlGlIenwQB4FTECy6R4RBEEPvA+kIGll6ferfwrwKKAFcoFrRVG0HtBmATBYFMUaQRCuAGYhHeSuB245VoLU3bESeRn4DggRBOEJpN2GJ//6FkYBVwITBUHY2vFzOpIBPUUQhGxgSsdrRFHcBXwJ7AYWAreeKIrduVVW7vpqG23t0h94Y2s7sz/bQmmD9+5Wr2AfYgL0qJWeE920jHCqLHbeWZnHOQMiifbXu3ecY4OMWNraeen/2Tvv8LiKqw+/d3vT7qr33l1kufduMMWY3kvoEEgIkBBKSCj5QgiQhBA6hN6r6diAsY17L7Jl2ZLVe1/tqmy73x+zKivJ2NhyAe/7PHokzc6de3d1NXfOnHN+57u9vL62FLdXJtigpqK5A1unUOIMD9Ly6poSig+kKluzXQifdCt4tlbAF3/w3+ULToasM0R+SsIgOZ5jrxKT2fb3IXa02CXs3jnsaoPPbgGpzwRc8LnYKQxwYhOehRzkv5jvGn4B7nr//GNvxml06MIZk/9Ir6Cd14Nmxd/F/Vu8vNeIBihdJe5FHzqNig5zMud9a6Sxw0vU0lt7FTU7W4hZeguVTiN/3R3N39Y4+N3cNJ5bsQ+3VyZIqyLSrGN3rY366jKGrf09tDeKUhrhmejWPsEYfS0xVj3DYs0DwtRumpVGWJCWDqeHfy4poKRBnNcrw1PfF/XoGAQ4PApq2ogPOXqK3d1EmodWcKy8rfyIeqQBYk2x5DflH9FzBPARMUyIgvXBPeFG/rgatFotufFWZC/s2VsAH18vcjhHXQLL/9Grvu10iGfqqD4Om5wL0X11K5ckO/j1rFRCB6ll7vXKvLOhjHCzlmiLjv629DXTUtCplUP9jgP8Ami0d3HHB9uot4voBafHy18+2cnlk/zD07UqBakRJu77bCdOj1jvNtidvLK6hN/OTicu2MDszPCee6/B7uTJpYUkhhrJr7bx0uoSQGxK1tk72V3dJsRpP7peGNEgjN7yNSJ9UNlv03na7SKsupvONlh8j986ge//JtYJ7Y3w9R/FeCDG//g6cT4Aj1tEixgjYOT5ICnF5lX5ceGfO6b4jOgXgEREWm0i8IKv/XA4C/haluU9QJMkSWOAXwPtsiznAH8DxgJIkhQG3AvMk2V5DLARuH1/A0uSlA1cCEyVZTkX8CC0u44Kh+2RlmX5TUmSNgFzER/6WbIs/+iTW5bllQye94xvnMGO+Rvigz6uqG7tHOBlbnQ4qW9zEtuvPEtiqJEZGeE8qFTy3e5aWtpdzMgIZ1NpMyqlRGywnlCjlv9dOZ5on7iSWqnguumpJIUZ+XBTJSNjzZw2MoarX9lAiFHDjTNTya+20drhorjeQV5FK59vrybSrGX+iChGx1sx630TUssgNUUrN5JXWIw6PEXsDmpNIjc6frwQhTrrWZHzLMsw+ddCQKnTBnsXw4hzBsr+Ox1C9AQg/SQYeaEYZ92zEDcBzNEilzV7AYSlD8nfIMDPgOBE7Oe/i2vja4Q0bqEy/nQ+c44lwQRzLYloy3+A7DNRDDuLOV0etN+uHjhGS9ng9RrL14kH4Pb3wNHASaMu4YOrR2Gq2zCwlFp7E+dGN3J2w/s4Ji3k/aZ60iJM/GpyEkV1drZWtOD2yFyQ7IStVRA/QYiLlK0RERf2WpBlhsdYeOf6Sby2ppTypnbOGh1LfVsnjy7ezUnDItlY2jTwMo9AHeITkV3Vtp40mKNJeJCGiiH6G3plL7WOWsINR9aQTjAnsKsxsJF5VFDpxPNy50fQVARjr8VjCONftueRw1VUJp7Dt7YkJpmrRdg2iHSmrjb/cdydoA+F+ImQOlt4zBwN5ATZ8EZ30fbDM+hLvqMzbhodKfN5YSeUNDgYkxiMWafi2eX7+NPp2fywp4EOl4eZGeHEWP3TIDqcbtaXNPPBxnLMejXnjokjN94aqCt9AtJod1JU7++EaW53EWc1cM9pWSzeWUukWcv5Y+No7xxYRq20sZ3JaaGY9Wpy4628dd0kXl5VTFunmyunJDElNYxrX9sAwOSUUKanh1HS6MAry2wt2ENuf72djS/juewTFGc9i5T3IXJHE505V1AbNoPEvnoPHU2Drwday0BrHlgKrrVCrEWbi6Fhr9AV6GiGzmY48ymRS129TRjf298VWirDFp6IVWQeAvrvVBt87Yfjlb4YeNz38zu+39MRzlhkWd4uSdJ23+uTEF7qVb6/twZY8yNjz0UY4Rt8/fX0pgYfcQ7ZkJYkKaTPr3XA231fk2V54EryF0iEWYtCgr62tEWvJnQ/ytnJYSYWbamk1taFSafiqe8L6XJ7uX5GChuLmxiTaCUj0l/cKMqi4/JJSVw4Ph61QkFpYzuSBNdMS+Zf3xTQ6fISYtQwLMbMk0t7azh/tq2a/1yUy5xuUR5zzIDrcYWP4K0dbSzZt44PbpxCUpgRghOFAJjbKXJARp4vOnfnMCvUkDxT/KzSiQd/NyqdmHiM4ZBxCuxa1KuiWPSdeC1hMrxzKVzxiTCsA5wQtFsyubn2HMyac9iy3kFzu3h4f/nbPzBs3r09+UbmTptQ0qzspzdhiYWESbCt31w+5nJ4dUHP7rNy18eMu+ANvKlpsFTpHyams6Coy0MRlobl82s5bepfea5gGIt31nDllCR+2NvA7ycYiKxdLXbFM04VURzd5H8KVy+GmNGMTggmJ9bC59urueujHXT4chDfXl/ObfMyue9Tf3X7/SqPB/hJ7KqyMTV1YOrMkSbMqKWkcWgM6br2OkwaE1rlkdVSTghKYFHhoiN6jgCIDeRv7xPRMuGZYI4DTyfad87vWdCn5r1D29w3KXOGk60PFot4r1fkWvbdkFaq8Sq1KNR6WPVEz2vGqDRcS+9Ft/dLAExF36Au+BRvyAMs2WVjya5a7j41C0eXm//7Ip/cOCtatYK315dRa+tEr1YyLEaoLq8uauSaV3vn1/c2lvP+jZPJjff3qAf45RNs1BAfoqe8qcOvfV+jg5V7GxgVb2FTSRM6tQqtfmAQa6xVT5zv2aZSKpiUEsr4pBBkWe5Jv5mRHs7OShuTUkN5ZHEBfzo9mzs+2M6tE03kBkX56/V43RTbvFQbZvC9PoV6t4slixqR5R18cKOJnHir6Netwt1/nWCOFYZ0f4KihAH9zb1CuOz9K3o91ru/hDOeEAv5j68Ta4a9i2HLG3DlF0IU98Rhf0p5h6ygJ0lSKEKQeoQkSTLQnQ68hcGFoyXgG1mWLz7YUwCvyrJ896Fe4+FwOKHdmxDu9k19ft7Y5+cTgrRwE389awQq306uTq3gnxeM+tHQwzNzY5FlmTVFjXS5vYxJsOL1yvzxlCyizFq2VbSwqbSJFXvq2VNrY09tG2uKGqjwTXSJoQYevygXW4erJ6T86qnJfNBP4buty01elY1t5c1sr2ihM2yYCI+xxAkRhll30zbnIVZXOGmwO8mvsflfaLeQglLlLwSmVMHEG6BkjRinOwRHqYFTHxE/n/2cmKQKvvAfs343BEUK4an6QMjhiUSkRcet8zJZV9pGc7sLhQR/Oi2b5HCfaIejAcrWItcX4Jz3N5HX5EOefDN1xkyqQibhTZkDkSNg1l1w0l9FWJbK3+Mi//AY1YThPuVRIXwHos/038Oml4VRPuMPxGi6uGlcEFqVgvlRDt6Y6yTVVYBi44tw8l9h58f+b8LdJUrD+aht6+Luj3uNaBBaBha9ihtnpvDbOWncNi+dP56SyUhf6ZAAh8fumjYSQ49+aHeEWUfpgdJnDpLytvIjqtjdTYQhgtauVmxO24E7Bzh0mvb1ppzUFwgvV8EX/l4x2UtOwxdE6cF9xlPCgN7+rniGqnwbKko1npP/TqclWXjPXO0gSXjn3Et7p7PHiO5GW7OJ2aG9Zdn+t7KY/1yUS7hJw5byFvIqbVw5NYkPNlWwpawFgMrmdp5ZVuQ3jssjs6ygfsg/lgDHP+FBWh49dxRBWvGcVEhw67x0NpU0sa64iZdXlTAzI4IYqw4ZmdtPSu8J3zZpVTx6fg5GjYptFS2sL26krq0TpUJCpVRQ0eRgTVEDI2PN/OfiXNQKidtPSie/yoZKIaFXKXHM+4eo8pIwCSQFbTMeoFyRwD+/KeCltVV8trOeLrcXp8fLir197lG9Raw3+9ZNn/wbiBolBG9P/j+RlgVCHPfkv4GnE+Y9AHW7eo3obja+JOpE9914bykVfU8syn5i+8FwHvCaLMuJsiwnybIcDxQDm/GFYEuSNALI8fVfC0yVJCnN95pBkqSMHxn/O+C87pLJkiSFSJKU+CP9h5RD9kjLspx8MP0kSRruy3H+RaJVKzl/bDxjE4NpaOsixqonOezHa92lhJt49eoJFNbZcXq86NVKTDoVRo2SOz/czpTUcB7/bg8WvZoLxsXz5FLhtdarlTx+US4nD4tkXlYkpb4czAU50Rg1SryDFLb3yjJvrSvn3Y3lXDg+nnvm3UpQWCaKz38H7k5CVDpenvFvLlsVMSAS5keJyIZT/w6Vm+Hs58HlAJUelj4oyoDog+GcFweG1/TlJ50wwC+BaelhfHHLdCqa2wkxakkNN6JVK6GhSOwEV25CAjypp5M37w0cTTWkxsdQIsVy+ZPb6HB5uH/2nVyuXYFy+d9Fvr4+GGbdLcpluMRmk9frZU9DB9u6RnDazDvFQ1OSRIqBvQ4c9bDiMVDpOGd+PLNOMpH82QLhWZp1N3S2iBIcg22W9rlvZVkecBtLEoQYNXyytYrqVhGtcdXUJBT7zWYJcLA02LtweUQEztEmIkjLl0Pkka60VxKmP/JedYWkID4onoKmAsZHHbAiZYBDZcCzTBr0+aZwORilLEZ2K0TUl9cFSp3wkNXvAZcDSa3HsOgaGHc1qI14E6fwaX0kppIi5h3EZXyzq5a7Ts3G0eVGq1by8Fe7cTg9SBJsLmvmpR/2DSp6Otj6IcCJwaTUUD6/ZRrlTe0EGzWkhZuoa+uirKkdi16NV5a58Lm11Ng6GR5j5p8XjCLYoCE5zIheo+Qvn+bx4eZKAFLCDDx7+VjanR6W7q4jr7KVMJOO9zeVI8swJsFKZmSQEBRddx1sEMe5x15D26yHuPGrNgyGejyDSBYPuG3jxsL1y6CpWBjBoRmiAkxzCdTuFuJhXhfoQ0Rq1vJ/CKN65AUDB5e90LR3kPYT7v/iHkSOdN/d6nZf+6FyMT7Nqz58CIwG9L6Q7q34RKRlWa6XJOlK4G1JkrrDtu4F9jAIsizvkiTpXmCJJEkKwAXcDJQexjUfNEej3tDrwJijcJ5jhkalICvKDFH+7d31O7sX233zj0JN2gGiIa+tKSEiSM//VhZj6xD5Jf/9rrBH2KHD5eH2d7fyxS3TSQgxMCc7nGdXFJEZFcST3xdy4fh4nu6z02zUKEmLMPGqT+Th3Q3l/C4XLD4jmpAUMMeQvO7P3D/1VbJiLSLUTKHofgPi+2A1SDtaYcW/Ies0+OoOOOXv8OHVfV5vFrvtw86EXZ/0toemg70eglNOxNyTE5a+tWyTwowihaAvO94XHpi48eB1oy/6gqDIaVy4MoWrplp5ZfXOHq9vuqYJ5bI+cgkdzaLG+cRfi5JrHS1UZlzBX74s4YbpSbS0dWBd36c4gCG0N3fa3Yllya1Ypt4qjGgQ4nnmGJGWMP0PIkexG6UGkmf0/Bpj1XPT7FT+2afe5vxhkbz4QzFNDicTkkNocjh5eVUJszMjmJHx8yuLcjyxq8pGUqjxmNRFjjDrqGzpGJK6zBVtFYToQg7ccQiIC4pjd9PugCF9JAlJEc+6kh8gYjg0FyOPugip8NvePpIkKl7U7kLa9jaEJAuRsdqdwnM2627Y+DKKeQ8IUaWV/wZAzjiNj+w3EqzVMSVpHoaS3jGdEbn80BzMmAQFLo/MjPQwdlfbKKhtY3iMBZNWRVunC51aQW6Cld+/t4199Q5unZfOlvKWnnFUCilQZ/oXyo/NV16fZapQSCSGGkkM7X0ux4cYiA8x4Ohyc/3rG6mxiU3hnVU2bnt3G69fM4GEEANf59X0GNEA+xra+d/KEk4dHsk3O2s5PSeGx5b0lr7cXNbCLTNiyd3wF7BVijTA8CxUe76g0jKNdeVatKoOfjc3nerWDnLjzKhVCvKr7czICOu+8N51qjVBfMly71q14EvY9ob/m514I+gsIvLNHCMU8/tqqEy8Hur9IzUwx0LksIP9qH8RlDx8+ltJd30BQ6jaLcvyrEHanjjAMUuBAQ+tvmPJspzU5+d3gXcP9RoPh6NhSJ9Qbhi3x8um0mY+31bFiDgrK/bUYe/yMDsznC63l+npYT15St10uTzsrmlj6e46RsRaqGzxedVkeozonvG9Mvsa7DyzrIjiBjs3z0ojSKek0eFkd00bt81LZ11xExFmLWflxrKmqIHm9t7JwtNaLR7a8+4XYdbNpTD6CuZGd6HY8DeRbzLuWjHhbH4VkGDCdSKvWaUROSZ5H4EuCIITYOOLQsl7sPp+O96DK78UtTFLVwvxFGuCEGy65B0RXhvgF42tw8nKwkbeWldKtEXPJRMTyI23+j/Y3U4hzjPvfti3XKQOzP8b4fUlxAWPAAnsXULkJDHUQLahduCJmvYhx0+AzlYkRx0R3jo+OzsW/Y5HUVnj8ZzyKIqCzyA8G8kcLcrNdOPq8C/1tu45mPlHXPZmFLYavAufRpW/CMkUAWN+5VcuTpIkLp6QQKxVz4ebK8iOMnNmbizPLC/kxpmprN3XSHZUEBeMi6fO1kdLIMAhsavadkwUu0GEMSokiZZ2F8GH6REvbysnyhh14I5DQLwpnvzGQBrNkcLjldlc7SRq5G+JjRiOYt9SvNln0hY6BuP5r6Pa+roozZM0DTa9Ihb0E64VKSIhqTDqYlj9XzBFCg/a1teFwT3mV7D8EZRlq5g47CYeXW3jhgtuJyNhPKrSFXjjJuJOP42kukjybdWMi9JweWQBxrpXceosONOu4q2KSK6dlsL8EVFolAryq4Ww2Te76rjrlCxWFzUQbNRw+aREcuOsx/RzDDC0dLo8rC9u4rU1JaiVCi6fnMi4xBA0KgXbK1rYWtZMS4eLVYWNZEcHccG4BIbFDMwtbml3sqG4eUD79opW3ttQ3iOM283MjHASQwy88EOxb9PcQJhJQ4Pd2dOnvrYGfdVaUfrN0wVVWyFrAcnBGpQK6HJ7SVXVs2rqNrT7lkDUGDyjJqKQC2Dxp1C5RSjbp88XddeLl8HGl4WjZtRFsGfJwA+kNk+UyXQ0wPrnYO59PoXvJnFM8kxI9UBostjYj58II88Ta9YTDJ/RfFjlrk4kjoYhfULFRWwtb+HiF9Zy5ylZ3PPxjp4QquV76rnzlEyufHk9794wxS/8e1NpMze+sYmLJiTQaO8iLlhPRXMHCgk0SoWfMX39jBT++MH2nklpfUkzV0xOJCsqiKW761i5t4GRcRaMGhUNtk7e3uCviKi0xIg8ktX/FSUCAMrWoHC1w77voWEPZC2Aj67tPajgc7jiMyGi8uE1Iqy7dpeYhECoJp/3ysAPIzRV5GPPuffwP9gAP0u+2VXL79/f3vP7p9uq+PDXUxgR22czSaXBmzILxSc39bbt/QbF2S9RsbEdZGHE2LvcXDoxEadukPrmoWlIxcth4/8A0JWtRZe9EBx1sOMtkY94ysPCaP7u/p4QcEA8iBXq3t89Tlj2MD/M/YxndsA0XSi3XHLJ4JEZQJhJyzlj4jhnjKiV3uH0kBZh4j/f9YaJLd1dx/NXjDv4Dy7AoGyvaCEh5MdTZ44k0RZRAutwDelKeyUjwkYM0VX9OAnmBFZVrToq5zoR2VbRwqvf5/EvzbMo9gpNEEXZWkyFSyma+ggZ7U1io27xn4QIkscFS/+vd4A9X8Pse8RrH1zZ265bApN+jbN6J2uqvZw9LIjkbf9EVb8FwjJRbHsDbeG3lIb/jXXFDu5LbcT6yc0AqAHj3k+5+MLPCMmcAsCGkiYyI4MoqG1jc1kz2ypaGBlr4Y75WQH9hl8g64ubuOKl3nJOX++s4Z3rJmE1aLj7wx3kJlh5c51Ie11X3MSirVV89OsppISb/MaxGjVMTA7hh8IGv3ZZhi/zarhlTlpPm1mvYlS8hUcW93qgl+6u45a56Tzap21PmxrP5N+hLP5erB8Bytehr9zMlbkP0OaUmLX3IbRlK3peU54UA1/fIdKyAMpWC0M8fiK8d4VoS54O71wCI88V69m+RI4QBjKArQp++CfcuAYs/QRvx/5KfAUIcJAMRR3pAH34Oq+GiCAdxQ2OAXlI3+yqJSvKTHG9ncK6NlbsqWd3jY3v8muxdbpxe7xUNndwzbRkrAY1H22u5Hdz03vq1Ro0SmKser+dPYC315dxzTSRsu70eGmwdzEyzkJ0sJ6wPgu+SyYkoItIh+CkXiO6m00vQ+ZpEJ0rwtP6IstCvbC1UpQHsCb2GtHdFH4LM+8SO+8gwmdP+YfweNfuBPcgxk+AXzSt7U6e/N4/VKrL7WVjqf/uttvtgu0f+LUhe2HfchJCDIxLCubxC3NJjzBRUGOjo6MLJt/sf6/N+bPYke7L7s96w7Bd7eLB2VwivD5q3y662kDtqS/hiRkn2qfdBqYIyqY/xt9Wd9Du9LAgJ9bPg95WVUDLjsXYijfS1WEf8L7buly8tc5fl8Ph9FDd0kF1SwerCxvYXNaMrSPwP/FT2VllI+kYCI11Ex6kpWwISmBVO6oJ1YUeuOMQEGeKo7ytHKfHeeDOAX4yywvqOSO+C81ef2FNZUM+7e3tlKVdBkExwlg+7VEhatQXjxPZ4xb6DX3pbEFWatmVeTNZceEsiO1AX/qd8KCVrQF7Hcra7UwPbuHktCAS81/wP97rRlO6TPzolXlhxT4umhBPmEmsCWRZZlJKyAE1XQL8/PB65Z6Uvm5kGRZtraS8ycH0jDA+2OQvTtvS7mJ3Tb9SbIBRo+KPp2QSYxGCnpIEF46LY3NZMx6vzL4GB2flioowc7MiWbSlyu/4LrcXr1dGpxbr2CizjjGpMbhiJ/Qa0T4UVZuZG25jfrRdGNGSBLmXiGezMUyUVO27ob3uGRElCeKZ3tkKdp8CeMLk3n4Jk4XB7fQ9r7VBQsOnrxHdUgH7lkHFRlGjOkCAg+SwPNKSWF3GybJc/iPdTqint1Ip4ZVlFIN4rxSShEmnorndxa/fXEmX24tSIfH7kzJIizDx0qoS5g+PpNPl4bHzcqhv60KjUvD0pWPYUt7CiBgzLe0DF98KSaKt081DZ4/Eolfh9sos3lnL5ZMSePeGyZQ0tqNXK0kJM2LQqnoVQvsiKYTxInt7lQ793piqN0h/MM/c1jfgxlWi7qWjEYyh8PENwnBRKOHUx2D0Zb1K4AF++Ui9aUx9Ufa7fyQk3AoV/e8MSaXh+cvHEucL5c2MCuLlVcXY2x1Q9L3IX5Y94GwXqrnu/qHT/QR/FEroaIT8T2DSTbhMsexUjyCh/BOUW54SfXRW2hb+j++bkliQ62VknIXUiN4dekfBMoI+ukzUfpUk7JPuwDPlZgxB1r5nHTQnzSPLnPPM6h4BsoWjYvjT6dlEmnUD+gYYiKPLTU1rJ7HHoIZ0N+EmLWWHqdzt8rpo7mw+ajnSaqWaSEMkhS2FDAs9sfL9jgZKhbRfPaKOzi4+c6RxvWol6u8fgmFn9W4A9kGSJDGH9aNRG8sFH7eRFObh4rmmAa8DyEh4ZJClgeN2Vyzono4eW1zABePje9IUVAow6Y5GYGKAo4kkifuyPyqFhCRJeOXBXx+sjHiny8OW8hbmZkdiNahRKxVEW3Q89KVIF/lkaxVPXJRLUpiRhBADW/vk3nejUyv59wWjsHd52FnVym3vbeW5OQpmDnLtoxNC6PT67uWpt0HhN7DVF2UcNRKm3tqjH4CkQJYksTSVZXoWqWueguyForKH2iBKsXa0iFRDV4eIlAzpo5dcvQ3ePF+kHQLkXgrz7hPpFgECHIDD8kjLsiwDiw7QZ9LhnON4R5ZlOvuUvjkjJ5qRsWbSIkyolf6z0oKcaOZmRfCvb/bQ5faSE2PmhhkprClq4IwcsTO2eGctjy4uoLSxnV01bcRadeyoasHt9uLxeClpdBBt8V94Xz4pkTfXlfHo4t3srmnjd+9spazRQVqEifAgHeOTQhgRaxFGtNcjQsuC+oWzTLhBqBRXbxO5XH0NAUkhJhZLPMRPEjuA8RNFuYLkmUKAKeNUIcwQM0aE0Lx5vjCiQZzzy9+LklcBThgseg23zvWvWGDQKBmb6F+rVKlS4Rx3g//BChXurLOINyuRZC+SJBEfYmBBTgxbu2LwdtmFAueKx2Dt02LjZtjZkDK7txTWiHOhaGnvmKMugoKvRVjXqsfZ5YnF4KwnpNuIBuhsQb/0XorKq/nfyuKe+pgAjsZq9F/9ThjRALKMac0juKvz/C49PEjH7Sf5v2+zXoUMPUY0iDD3LWUDc88CDM7uGhsJIQZUg+3OHCXCg7QUNxyeIV3rqMWqtaIcxKA6UiSYE9jdtPuone+XRqfLg7wfa3leVgQFrnC6hp/n1+6JHs2K5mDmmCtR7/JF3BR+AyP8+6E2CMGl2feIaK9ujGEsb4vF6fGyp9bOYxvduLMW+h3qjptEqSKOnXUuSobd6D+uSoucMhsQhvqVU5Jod3l4eVUJ/11ayJPfFzL5GNRjD3Dk6f57913GKRUSC3NjSQw1sHJvPReM86+NHGHWkhEZBIi8/y7fPV/SYOfNtaWUN7XzdV4Nb60rpa6tg39fOIph0aK/0+OhuMHBfZ/s5IJxcX7jGjRKhsUEsbvGzt0f7eCV1aV0urx8XKanPekkv75y0gz00VkEx2eL57XL4S/2WbNDRJd1l8aceiudwZniZ3en+P/JWgCGEMj/FJY9LNal4ZmQMFFoD8SNF3nPLt+z2NkBS//Wa0QDbH1TVKQJEOAgGIqtyLWSJI2XZXnDEIz1s6Kgpo13N5SxvqSJBTkxTEkN5Yvt1dS2ddHW6eLJS8awYk89bZ1uTh4eyc6qFj7c3MTCUTGMSbDyTX4tK/bWMyM9nAnJIVw9NQlbp4sFOdE4ujzkV7eyr6GdLaUtdLo8JIcb2VbewkUTEmho66K8uZ2cOAuZkUFo1QrGJATz8ZZK7j09m7nZEYQHDeLpcrbDmidFaQ17LbSUQewYZF2wMDwqNiIZI+Cyj4WomEIBOReKyUephrOfgZJVoDGKycbpgAX/grAs+ORmETI++jIxYfXNUZG90FYjdhQDnDDMzorgpSvHs2hzBZEWPWeMih5U0ESTPAXHxYvQ7HwPl6TBnnoGxpYSWPon8RCccD1N1uG0tTtYkOCEsNuRG/dAcwmd2Reg1BlQuzvEQ3bOX+gKiqNZFYZx7xfozQl0Zp2LU2MhKKMUr0JFZ+ZZxLZUE+asGXAtqoZ8zpth5IIZOWRF916rp70RRUvJwDdpqxrQdNrIKEKMGj7dWkViqIGThkVy27tbB/Qrqh+ausQnAnmVNpLCjkJYt8cl6oeXrwWdFXIu6KkwEGnWDepx+SlU2auOSumrvsSZ4shryOOc9HOO6nl/7pQ2OPhkWxVLdtUwLS2M88bGkRYR1PN6ZXM7K4sa+KawjeHjb2Jq/DQ0+76hM2YSJaHTSGwPI6ptY++ATocwpk/+P+TKjWCMREqZCWXrhGBS5mkQkY23qYTd4ScTbkjlmmn1NNidnD06Fm/YX2mKnoa5chmdsVPID5rCmyvtzM6OoDI4mcgL3keT9x4erRXviPMxJY3tOfW4pGDevnYSH22pQK1UcPboWHLjrUfvwwxwVOn+e3+4uQJJglHxVj7dVsk5o+N47PxRbK9o5d7Ts1lf3ER6pInUcBMPfr6TSycm8tWOakbFB1PcYGdjaTMzMyMIM2kJN6kpa+rgq7xa9tW3c+30FMJMGjqdXiYlh3LayCh2V7fxlzOGsaG4iVirnjNzY8iMMtPc7sLdJ91xUX4bw6f+hl+lz0VdugwpYhhSWDq0VYMpQojYLvv7wDdWXwC5l0PUCEiewZqiNmLnvUqasQOpeDkKWyWe8Tcg6a0oQpIhcYrvuN0iRbH4B5HyZQgTId5J0weEmAMiLTFAgINgKAzp2cCNkiSVAA5EbIUsy3LOjx71M6eqpYOrX1lPZYvY1RoVZ+XWDeXs83kr8iptTE8P45lLx7Cnto1rXt3Yo549JTWUez7Oo97e1dN3X4OD389LJz3KzLe7arn5rS3cc1o2f1qU1xM2tq64mbtOzeJfS/ZgMaiJNGt5dXUpH980hdNzfDkq2QcIRdGaIGUWfP83CIoCUxT88C+kefdD6SoR/vLZLXDpB3DmfwceH5ICbbXwyqm9YbNla4QCYtG3ol5v+VqRs1qxvrekkFIdUOk+ATFpVczJimBO1o+XVtHoDBQGjeHOShVmvZrH1UswbvyneLFqM+R/hu2sT7A01RL83aXi3jNFisgKtRbNexeLyAeA8nXUznqC05ZqCTbOw6JXc1Z0LM3tTmJj7+Sb/FoeLV1K+Lq/w9nPDbgWOWY0w1OTURr9BXiUQRF4wrJQNvh79iSr/84+CG/8/OFRzB8ulJldbi/jk0Io6VeHOCsqaMCxAQZnW0UL8cFHOJ/T0wVL/iJSBpKmi43Bbx8QpVFSZhMxBDnSVY6qoxbW3U2SJYlPCj85cMcAPdg6XPxpUR4rfSJLeZU2vsuv481rJxJh1tHpcvPPJXv4aIso/XNtpY2ksCTeuOZF7v5wBz98XQ1UM3ZBEn4xOGVrwRCKpDaIihYrHxfPShARYeHZSDP/SHb2BCSlkhkZ/nPnuuAzKHDNZuXOBjaWiY3AnVU2dlQE8+KvZqEddvKg70ejUjIpNZRJqUcnNz/AsaX7711r6+SJpXt5b6PIiX5vQwUf/noKF00QatTzh0dx5cvrKap3cNtJGfzuna2clRvLK6tLeqJv8iptTEgKZkZGOP/+dm9P26rCRs4eHcu5Y2PJUgZxzjOrabA7UUiQFWUmMdRARlSQr0RsEFqVgi53r3juxgYVV3t3I7XViP+LzhbxTD/tMfj0NzD6cpG33JfM02BibwSb2iCxvcZK5qpbRSlMQFm1BXnCDTD+GrH2tFXD25eI6iAA1VvF/K4xinVDymzY9bH/eULTCDB0SJIUBTyOKGnVBZQgIpoXyrK8YJD+LwL/kmV51088Ty4QI8vyl4d3xQfPUBjSpw7BGD87CuvaeoxoEMq945JCWJgbgyxDk8PJW+vLKKyzs76kqceIHp8UTGKooceI7mbJzhouHBdPepSZL/OqiQ/Rs7vGNiD3aml+LTMzwvgmv45Op4eHzhlJuKk3u7Slw8neGjvtTjfJYUYSQvstPCVJCDaUrRahK201Im+rdqcIjbXXQMbJ0FwOSft587u/GFikfs9XkDi1N5R25yLIOh22vycmq4VPQmjGgKECnKC0lEPDHjwKDbW6JHbbNCBDS4eLs1Mlwrf2E95x2lE17CKhfmvvvWevBa8LXcXKXiPaR3z+88xP/wcf7WylormD4TEW9ta2MSrOwq0TTIR/9rTo2GUXKvbrnxOeSEs8Us5FtLc1EWT0D0E3WiNwnPofjIuuFLvmKi32WQ+ijj2w+rJapeD6GSnsqraxs8qGQoKrpyaTm2A9tM/vBCSvspUrJicd2ZOsfEIsvEZeLFJaQlNFuOC65yAoitDQLFraXXS6POjUhxaaXW2vJlgXfOCOQ0hCUAL7Wvfh8rpQ91WoDyCwVQlPl0IlImBMEZQ0OnqMaItezaUTE1AqJPIqWxmnVlJr6+TjrZV+w5Q0tJNfbfNTOP66KYLE8Teh2fisiMwKzxIRXt/eLzamK9b7jUF9PlLDXjpqdrOmLYxggwajRkVTexftXR7q7F1EmXVs7JcWsrG0meIGB6MTAjokAQSN9i7+/tXunhrQo+IszM2OZFe1DY1SQWqEidJGB6fnRKNUiNzndqdn0BSW9SXNA1IBamydaFQKdte0oVMrOWV4FGMSg/F4ZTrdHkoaHJQ3dZAWYSIlzMR/Lx7NtvIWlEoJjVLBRcntKF971X892VYtNjANIWJjM2V2b3Rj5uki37kPObFWMpsbeozobqSN/xMGd2iqqEbTbUR3U/KDEDH75l646ivx/1+/S8z7U38HsWMO45MP0BefntbHwKuyLF/ka8sFztjfMbIsX7u/1w5ALjAOGGBIS5KkkmXZfYjj7pfDNqRlWS6VJGkakC7L8suSJIUDg6ti/IJQ9svTS480sWRXDe9tFPmTiaEGbpmbjkqpQOkT75qcGkp8sIG6tq5BxpN6hJl0KiUut4xaOTAXUK1UcPW0ZIbFmOlye3nws12sHR7JH07OxOXx8uDnu/h8ezUAVoOa166eQE7/+pBOB1iTIM2ngFj8gwg3ixzRG0pjDIeo4RA9SGCBepCQcaVWlA3qRqUW+dTWBBH2Pfzs/ZYPCnCCUbtT5NDbKlECwbFT2Bt5J4+ubef3J2eg6KoXeff4P8i9khKPst+95/UiDWIYeBVauvrY1hqlEFlpanexobSTXKVvsdleL+79qbf6fm+CFY9CyvxBL92YOgn7FUvwNJUhGYIxRmeiVB3cNJoeGcTr10yktNGBXq0kOdyIVnX08mR/znS6PJQ2thMffARDu0tXQX0+TL7JX3AxKBKyz4Tlj6I8+xnCg7SUN7WTHnlo0QSV9sqjptjdjU6lI1wfTlFLEVkhWUf13Mc9dfnw9kW9mh5x4+GcF1ApxN9IpZC4dV46/1qyhzZfPfsLxsVxzbRklJKEu9+mct8c/pwoHefqNqIpXQvn/k/cXy3lsPSvosNgwp4ACiUFde1c/a4IC//7OSN5e10p2yttANx5yuB/w8EEpAKcuCgkCY2v6svoeCs58Vb+9c0eALQqBS9eMY5b3tnS4+iZmxXBuWNi97tUG6xdIYn/EYNGSZhJy6urS9hW0QpAjEXHAl+0pEIhEWPVc/dHO2h0iLXi2LNDCJOU0N+2aasWKYVb3hAbT7PuEmmBSTNB5z/vWgxqvOZBIpWUaugW4FMM8ozufjNKjQglv/IzaC4WmgWhaYOL8p4o3G+5BHgISADKgHu4v/Vw6krPBlyyLPd4SGRZ3ipJkhWYK0nSB8AIYBNwmSzLsiRJy4A/yLK8UZIkO/AfYAHQAZwpy3KtJEnnA/cBHqAVmAc8COh9dunfgWwgBuEabJAk6R7gdaD7pvmNLMurJUma5Tu2EcgEVgA3ybLcG0KxHw5btUWSpPuAO4G7fU1q4I3DHfd4Jz3SRI6v9qJFr6agpo386l7JfLVSQYhBTVqYkVFxFuKC9UxJDeW9jeU02p2k9Cs5ce6YOBKD9TQ7ujh9ZBSNji5Swow9pa9A/N9fMD6ejzZX8uT3RTy7fB/19i7eXFfG9ooWtlW09BjRIMoZPPp1Ae3OfpNUVA7oLKIMx7KHxQJy0s3CK9eNo14YFO4+Rn9nG3jckHmq/yQjSaKtdHVv27Cz4eu7YNUTEJIUMKIDCDxuWPusCOHKPBVSZqGvXsdJhr0oFRJPf19EqyqMyjF/8D/OFIklMQdH6uniQZc6V+xMe5wQN0609aF4+E18s1f8P2pVCuKCDczNjuC7/FoWFbpwzfqT6OhsF17pFY+Kr43/wz7+twRFJLM/TOEJKBInYojJ9jOi7Z0uXO6Bc66t3UlLu1g4hBg1jE4IJivaHDCifwIFNW3EWPU9i8Ihx9MF656HYQt9mzj9iBou0mB2fEiURUdp46GHd1fZqwjVH/3w2iRLEnkNeQfueCLRXdqx24gGqNgARUtJCjNwzphY5g2L5INNFT1GNMB7Gyuobu3kxpkpzMuOYHp6KAuHh/DImWmkRxg5eVgkqWF6HpppJKbgDRH9VbwCdn0K297ujaBR6YW6cF8Sp+CxJvJppQGzXoVRo6Sssb3HiAaR5jClX4j2aSOjB6wr+uLocuF0e/b7eoBfHsFGDX84WUQCzs6K4NXVJSgkkV54zbRknl5W1GNEA3y3u47UcBP76h2M7pc/f3pOFIZ+UTgZkSbsnW6GRZvZVNKM0+PtMaIB3F6Z7eUtdLk9dLk8PPHtXpranUxNDuKs4Rae2OKmq7/QaFiGiDZb+W/hGS75AdY/DxoT6IJwe7x02FvEWsKHImoEBPd7Zk/7vXDkAIRnCMdOX7IXiv/J2fcIFW9jmNhEixweMKLhBSARkaqbCLzgaz9Uuo3kwRgN3AoMA1KAqYP0MQJrZVkehTBwr/O1/wWY72tfKMuy09f2rizLubIsv+vrNxZhfF8C1AEnybI8BrgQeKLPeSYAvwdGAqnAQYmKDEVo99mID2IzgCzLVZIk/eIT/yKCdPz34tGs2FNPfVsXe+tEfTqxe53Bnto2XlldQllTOxeMi+ef54/qMbTfXFfKjTNTcXq8VDR3MCsjnNRwI5vKWlm0pRKP18sTF41me0ULD58zkl3VNjpdHsYnhfDFjmqaHE7uPjWLt9eXU1QvzrujstVPyKGbbRUt2DpdGDS+P3XFRuTVTyDVF+AZew2SMRSFWi8UD/suJkCEnHXahHLitnch7wOIHSdCYa/8Cgq+EN7t7IWgNYtyRB1Nwsip2y1q/WYtEMJjAQKAL2dehim/hd1firD/kx4kpLWBMFMqlS0dxFh0LGmZzjlnvY6pdAmSJQE5KArLlzejyr0a+axnkdY+Le7Zk/8GRctg5p242luRO1upiT2ZfDmdc8Y40KmVjIg1o0SEjd86L4PZWRGog3KRzTF4Cr6G+Q8jN+zFXV+IO20+iqTB5nFBRXM7n2yt4uMtlQyPMXPttGTCTFq+2FHNuxvKSY80cd30FEYnBGPrcLFiTz0vrSrG5ZG5YnIiszLCCQ+Uu/rJ5FW1Htl6t7s+A3O0CLXdH5nzYc1TRMSPpfQw8qRr2muOukcaINGcyLa6bZyXcd6BO58ouLugZOXA9oqNGMZfwx/nZ7G3ro0rXx6opVrS4CAx1EhxbQt/zmkkLu9ppG1t1Hmu4ZEZuWh3LEa/6jsRIppzgdi0nnqLSHlqrUBOmIzc0YIiLB355L+JvM3wLOSoUXzTGMqqvY1cOiGRDpeH0ib/6Jyv82q4zTeX7apqZUpqGFPTwjDpBkbn1No6+cqntpwUauSGmSmMTTy6OfoBjh1zsyN59eoJ7Ku3kxRq4LJJiSzZVYtGqSC/xjagv1eWibbomJgcwuk50WwrbyEjKog4qx6zTsWj5+WwsrCBpFAj6REmrHo1FoOawro2ZHodJr+akgTA6+vK2FjWzJVTkmhydPLJGUrS9z6Bvq2S8rRLqEy4kJToYaJqTHAiKNSw6nGRBtHlgHkPiijI5jLqKgrR5H+Edc8HOMOGI0+6GW3iOLDGw6Xvw95vRMRbxnwhMtYdHWIMF3oo+74XwmLRuSIaxBLXK0YWoJuHgP6hXwZf++F4pffHelmWKwAkSdqK8Bz3n5SdwOe+nzcB3XLvq4BXJEl6D/joR87xqSzLHb6f1cCTvtByD9A353S9LMv7fNfyNjAN+OBAb2AoDGmnzw0v+05+hNVgjh8SQ41cPlm83fc3lvNVXg0Xjo/ng03lPaJCRfXFbCxt5uUrx/cc55Xh6WVFmPUqxieGEBesY2tFK49+XYDTIzxaq/c18cf5Gby5rhR7l5sHzhzBhc+t7RljY2kzd52Sxd+/6hY+klANEtY1JyuCEIPPw1KXD68tRPIJgCnrH8Y74UbhSR6+cMCxZC0QRe6//APsWiTaGvZA4RK45juY+xf//tF9FLmzTjvITzHACYXOLHZ8v76rt618LZqzX6N2RScRQVoK6+x8s6uZ/2tSsvaGmwj/+AIRDgkYPTZ4/3e9x36xFeb8GffOT/h+3DPYZCNbylp4c91uEkIMBGlVLN9Tz5m5MSSFGjhrdG9pDilzPqrM3hDuA2WOdrk9/HfpXt7dIERbCuvslDY6GJcYwosriwHYW2dnWUE9i26eSnGDg9+8vaXn+Ds+2M6/LhjFOWPiBh0/wP7ZVt5KQsgRCut2dcDOD2HcNT/eTx8M0blE2HZSXH9oe8WyLFPrqD3qYmMAKZYU3sj/xQeL/TTUOhh2pjBi+5IqykZFWXRY9GpmpoextKDer4vFoOa2d7fx0ekSiV9e2pPnGVVzC/Lc+5B2vC42Dhv2ivDU3IuFly0kma7z3kL75kIkhxhTUhtwjL+Z0qRfce4LG+hwiciygto2rp2WTG68lS93+FcYaHJ0UdLg4t4Fwwg1De5Bk2WZt9eX8bhPIGpPrZ3le+r5+KYpDIuxDHpMgF8WRq2KmRnhRJi0ON1eHvoyH68MHU4PE5NDWbyzf+UKiQ82VfD7kzN4+vu9BBt1fJNfS6fLy3XTU9CpFJg0CvIqW3ltTQnN7S6euCiXCSmh1NlEBGNuvJWGti6+2CHu48I6cd8tudBC1PuX96QBxtfdS6f2ATqyzkC/7jkoXg6dPo+2PhgcdaLKzNz76IqdgnbtE1jyXgVAU18A+77Fc+13KMMzICxdfO2PkCQIuQrGXTWUH+8vkYSf2H4w7AT2t4PbN9fVw+B2qUvurT/Y00eW5RslSZoInA5s9RnHg9F3J/I2oBYYhYjK7uzzWn9v5OA1D/sxFIb0e5IkPQdYJUm6DrgaERbwo0iS9BIi3r1OluURvrZRwLOIHOsS4FJZlm2+1+4GrkF8iLfIsrx4CK79kKhq6WBPbRsSkBkVRJRFz/T0cM4fF0eoSTNAmXdLWQvri5sw69TcflIGzy4vot3pwaxT86spSXi8Xqx6NTfOSiElzERZkwOPF2ydbkbEWHl1bQkNbV3cMT+TYIOaIJ2K0qYOJCA+WM+5Y+PYXiFKZF0xOZG315fh8siMirNw8+w0NN0hpHX5vSraPhSbXhKe48pNMPZK2PK6CDuLnwQTb4TW8l4juhtHg6gJHZIkFLzrdgmhpvBMsaMYIMD+cDpga79NTVnGU76RjMh5PHxqHKGOIi4LsbGhLRRVzdYeI5qQFKjZLn5OnSPqmHucyNogOk5/ipIiFd/sKueGmamUNbZzZqaWScZatHIncmgEi6vdfL+7FpNWTWuHi+RwI6nhQs7B6fawt85OZXMHkb56mnpfFMe28mYK6xyEB2l436d82s3klDD+5zOiu2l3eiioaeO7/Fr6896GchaMjEZziEJVJyo7Klu4aPzhPMd/hD1fibBA048rywOQNJ3IHz5npebQ8oybu5rRKrVoj0HoYHxQPDWOGtqcbQRpfvFBYwfP8HOgfAPs+VKkII25Uij6+tBrlNx5ahaVLR0U1NrRqhRcOz2ZlXsbiTRriW/8foD4prTzYzj9X8KIVutESHfCFAhNx22KRFG7TaRPdeNqx7j2X6jjFzAvO4q0CBNur4xXhq92VHPfwuGclRvDJ9uqkGWYmhbKiBgzOo2KJbtqiLMaGBlrxmr0v69qbZ28+IP//NTl9rK7pi1gSJ9gqJUSbZ0uugMXd1S2Mn94FJUt7eRV2lApJC6akMDG0ibsXW4aHU6a2t2MijewMDcGl8eLQa2ktb2Ls0fH0dzh4uThkcRa9Li8HmQgOFLNNVOTMWiVPPV9od/5HV0egpp3+WvpALr1T9KeMofOib9Ft+SPotEYDtNuE+lWAIXfoUyahWVXv43ALhvu6l3CkAaw1QjBMK8bwrOFpzrAT6UMEc49WPuhshR4SJKk62RZfgFAkqTxwMzDGBNJklJlWV4HrJMk6QwgHmgDfuwBZwEqZFn2SpL0K6DvYmyCJEnJQCki7Pv5g7mOoRAbe0ySpJMAG8JF/hdZlr85iENfAZ4EXuvT9iIiuXy5JElXA3cAf5YkaRhwETAckTT+rSRJGbIsH/WEn721bVz1ygYqmkWUQGq4kReuGAeAy+Mlu0/d2b7sqrbxzLIiHlg4jLtOyUKllDBp1awqbGBnlY2VhQ38dk4aj3+7p8cQj7Xq+f3JGVyrSuGpZUXsqhJhOOEmLddMT2ZnlY1b5qZT3tTO5rJmGuxOamydvHHNRAxaJfHBBqyGPvl+g+X+qfUivK3gKyHmMO12sRM44jwhstOwV4g2eFz+xynV0FQCH1wlyhOBmPwu/zhQKzrA/lGo8GrNA8QZlAYL98wII2XN3ZiKvwYgXmPCfepjvZ1cHSIXOm2eyPH//iEAJKUa1Tmvc8rI6cQFG7jxjU18eVUKCSvvQlfqU/vUWVhw7nuMe6WReVlRyLLMysIGXr16AmMTgvlsWzV/+GBbz3r4rlOzuHJKEpvLmvnNW1tocji5cWYKGpWCTldvHnSX24NOo8DZ4Z8brVYqCNINnF5NOhWKgF7AT8Lp9rKv3kFi6BHwSHvdomb0qINM/9JbiAoPpbSm4cB9B6HaUU2Y4ejWkO5GpVCRbE5mW/02psVOOybXcFwSkgTnPi+eZwql2LDrJ6iZGWXmntOy2VjajFeGOlsHJY3tON1ePOpBtFW1QSIXurt0z7TbkL1uJJcD1aIbYdbdA49R6TDodNTbm/nMp3Vi0qq4+7QslBJcOjGBWZkRVLZ00OXyUG3r4l/f7ACE/X/PqdlcOiEOg673Oa9USOg1Suxd/jopgTnoxGJjcRN3frSds0f7lyD91zcFXDcjmQvGxRNm0vCfbwspqG3jhpkpyDKcPCwSSZL4dx+BspevHMe3+XU8u2IfIO69P58+jJdWFVPV0sEj5+UQZzXw4g/FdLh6l+heWQb1IBuIGhOGjU/D3iUw4Xq8ljgUtXmw/BGhpQKg0aOqXCc0BZx2v8MlpS+WrLEI3rsCan06EEExcNmHEDns8D/AE4t7EM7Qvg/cdl/7IeGLWj4beFySpLsQXuASRPmrw+FRSZLSEbnc3wHbEAb/Xb4w8UEKkfM08KFPqOx7/L3Va4CHETnSKxBK4wdkqJRbdgA/+E6842AOkGV5BdDUr7lbKQ3gG+Bc389nAu/Istwly3IxUIhICj/qLNpa2WNEAxTVO1iys5ZdVa3oVUq6XB4m9xMBmT88inX7mggxasivacOiV/Pk0kLW7GvAoFWxsrCBUKOGtk63nze7sqWDjSXNhAdpeoxogHp7FzsqWtld00atrRO9RkmDXezyRZp1ZEQFMTLW6m9EgzBwg5P822bcAYXfip8dDSJP2poIeqtoC07uVTTuJmYMRAwXYTjdRjSIHfZ1z/mJQAQI0BeXQkPD+D+InMEEn/iHxkSpdSIhLTt6jGgAnHYUHQ14Lb7N0bZqUcoiYTLkfdjbz+NCv/h2dJ2N3PfpLhSSTERrXq8RDdDZimHVwzx0ehqLd9YwItaCSatiaX4dRXV2/vzJDj+n0j++3k15k4NXVpfQ5FMY/Sqvhosn+HtFd1a1csMM/7zauGA9w2PMnDI8yk8sUKmQuGRiAqojJZj1C2VPbRuRZt2REWcrWQmG0J9U4z48JZf6TgXOzs4Dd+5Hjf3Y5Ed3k2JNYVPt/jRfTmC0QSI1KXLY4FUpAJVSwTsbynnq+0I+3lLFqSOiaOlwUWCaIISQupEkkQdd8kNv2+r/InndImzVGCb0HSbeCOkni01poGbMbbxTALW23khHe5ebRVsqqWruQKVQsGZfI48uLiAjKoj/fLe3p58sw6OLC8jrI3gKogLIVb5c1W4izVoizCewmNIJRnuXm+1VLUxOCSHUpCFI27vB65UhO8rCXz/fxXsbKkgMNWDUKNEqFUQEaclNsPqFfisVEg12J8//sK+nTZbhkcW7uXxSIl4ZHvxsFy3tXdx3xjAyInv/L9LCTUgxY8T935cxV8Duz0Glg6Z9KJRa2PRarxGtUIoSWGufFVGTffCGZqCO9VWWKfy214gGaKuCza8NLNUa4McR6tzXIbyysu/7dYep2o0sy1WyLF8gy3KqLMvDZVk+XZblF/rWkJZl+TeyLL/i+3mWLMsbfT+b+vT5QJblK30/nyPL8khZlkfIsvw7WdAky/L4brExWZbvl2X5sT7H75VlOUeW5UmyLN/dd2ygXZblC2VZHibL8o0Ho9gNQ+CRliTpWoRK2lLErsB/JUl6UJbllw5huDxgIfAJcD7CTQ8QC6zt06/C1zbY9VwPXA+QkDC0oYBer8z6Yn/bX6tSEB6k4YsdNeyobMUjy1w7LYm5WRHsqraRFm4iIcRAYZ2dtAgTS3fXEW3RExdioKypHZNWPESjrTpK+tXtA9hb10Zc8MAH+966NpJCjVj0ahxON2flxhIbrOeU4ZEE9zeguwlOhEs/wLtvGVJNHlJoCiCJMgOmCLGjt+sTUbxeZ4GkaaBUiQd+dK5YdEZkQ/JM4a2u3TnwHBXrwd0BykDo4GAcyfvz54DcuA998TdQthZvxHC8579BvTqah1a4+XvSQC+fYvmjNJz3AarKDahspXSaswnqqmXAMtBWhdTVSr29i/hgPUrbngFjaeu2k+2z3XVqJafnRPPFjmq2ljfzh5OzeH7Fvp56m7IsQtF291mYlja2U9rYzl/PHM72ylZCjRqGRZt5b2M5d8zPpKjeTphJy7zsCOJDDMRadbx05XhW7q3H5ZGZnhHGpKTjW+TneLw/dx4xoTEZdn4EifsXlxsMlSWKMGUNZRs+J236TxPuqnZUE6w9ujWk+5IZksmSkiXH7PyHy7G8PyubO7h0YgL2Ljct7S50agVPXjyatZWtxC14j5jGNbS3NaNOmoJ5xf3+te29brGwbyyCnItFW+E3yPpQPKc/QbEziCfzTRQ7GogP1vvV8C2oaSMlwkSdvZPbT8pgelqY8IT3Exd1erw02v3DZm2dLn7YW8+dp2RSWGcn2ChqUlc2H7pYXoDBOR7nzm3lLTy5dC/5NW3cflIGe2ra+N28dOrtXThdXmKsOjpdHlwemWV76rl5Virnj42jrLmdt9aVcu5Y/9DoMJOWRoeT/rq2nS5vz6axrdNNvd3FcyuKmJIayk2zUqlu6WRmZjiGGAv2ixbRunMJuvZalMlTsW56QqxBJUmIhbVV473gNeSGQpQtxUIQbP3z0FICDQXIpzxMV30x3tA0lKmz0HaHb1dtYQBla0TE5X42xwLsB2E0HwlhsV8kQ5EjfQcwWpblRgBJkkKB1cChGNJXA09IkvQX4FOEUhvAYHFIg24zybL8PL649nHjxg3pVpRCIXHGqBg2lPQWfr9sUiIPf11Ava829OKdtcRY9TyzrIjwIC2fbavC7ZX5x7k5PO7bQXa6veypsXHh+ASCfCqbRXUOZk6LYNkef0GTsQnBSIOEYU1IDuXbXbUsyInmwc93EWnWUdKg5frp+y/bA0BYOoqwdChcCm+eK0LMtr8rlAs3+6Lsm4vhjXPg2qVil94YBtkLxFdfkqb5l8wCGH6u2N0PMChH8v487nE6UH/3FzQFXwCgaClDUb6WzRPfYHxyBLXKOPrLcHWlnsRNS9opbc0k1jqarWub+fjMOEZJkt9OsytqNJgiyY5uIb+6DU/4wHCu9rTTWVYuFrchBjUPfZkPQFlTO5tKW/jt3DT+uUQY4Dq1glCTmlmZ4by2prRnjKW76zhtZBQbixtRKUXI5MrCRlYVNRJj0aOU4EqfB0ihUDA1Tajp/lw4Hu/P7RVHSGisvkB4CMMyf/Kh0UFKSjYv+cmGdJW9CqvO+pPPN1SkWdN4qvkpHC4HRvXPTxf0WN6fCaF6/vjhdsw6FSatilpbJ0pJIr/GxtsbvPz97Eu5f81OfqNSc7m9zv9grVlEaiVMAWebEB0DJIpQVW6kefbbfFLQzu0npfPq6lK/Q2ekh/PuhjIuGp9IpFnHglExbC1vxqRV+YVsWw1q4oL1fseGmbRYDBr+8XUBsVY9tg4XbV1u3r2+XymgAIfN8TZ3FtXbufTFddi73ExMDuHz7dUs3S3uS6tBTZhRwykjo3vWoCDy54sbHTz0pRCxPXm4f3RhVUsH0RYderXSL2w7zKSh3i7WwHHBenZVt1LR3MF7GyvIq7Rx8YR40iPEutATlsUfyx0UNzg4zaPhbl0oSqdDpEIANJegqNgI1y2FmlD4+PreC9j7DVLWGejOeGTgG047qXeMbkacGzCiAxwUsiwvA5YdyrFDEWNYgUju7qYNKD+UgWRZ3i3L8smyLI8F3gaK+pyj79ZYHFB1KOf4KbS0O1lT1MCXO6rJr7bh8crMzYrkgnFxSJIoRJ8caugxogGmpYXx2bYqutyitJXLIyPLYjEYYhSe4o+3VHKDr/xVp8vNjTNT8MoytbZOzh0Ti0ISm3Nn5ET7alfKXDc9uUeVe3ZmBEFaFRdNiKe53YnLI6NXK/m/s0dg2Z83ui+2SuFpnvJboVY6/Q+w433/Ph4n1A3ice5L4mSRU91d7H7YWTDqwoP7cAP8Iqhobue7/Fq+y6+l4kBejpYyJJ8R3UNHM5OCGlApFKxuT6B6ygMibx9wx09mZ+r1TEyPxt7pZnNZM9lRZlTRI2g79WkRNQF4wrNpn/8vwsMjefS8UYxJsLBLSqVt+p976kF6k2Yij7oEtULmz6dn89Z6f90Mp8fbY5eHmTQ8e9lY4oKNnDM6lhkZ4YAQa7l2ejIej4wXiUfOy+GU4ZGEm7TIslDIfeyCXGKs/ovZAIfHjooj5JHe9QnET+wtkfITiAw2U9ziFQKOP4FKe+UxDe3WKrWkWdNYX73+mF3Dz4nCujYW59Xww5564oINPHPpGK6bkcK5Y+O4fFIieVWt1Nq6aGl30Wjv4pIJCTy73cPO6U+BOUYMEhQNs+7C63UjmyJg5yL/k8heEuzbOG9MHNFmHZdPSuzx7o1LCmbBqBje31RJVWsH3++u45tdNYSbNDx2fg4RQWJ+i7boePS8HMKD/GN1tGolvz85g7EJwVS2dOD2yjx45nBGxAaExn4u7Ku3szivhuUF9dTZDj6dZG+tvWejZUJyCN8X9G7utLS7KKx3EG3W8enWSgBOGxlFrFXHsoJ65mRFcPtJGRi0Cu47YxgmXzh4WoQJrVLir2cOJ9ynFB9r1XP/GcN5bXUpiSEGrpmWzMdbKnvOtavaRnyIAYVv/WrRq/nT6dmY9Wpe32anafxt/qlaIFIfyteJNMMxvxKlqiQFjL0K0ucN/oaTponSrAqlWECPvACGn3XQn1eAAIfKUHikKxGKaZ8gvMRnAuslSbodQJblfx3sQJIkRciyXCdJkgK4F6HgDcI7/ZYkSf9CiI2lA0d0JdDscPJ/X+Tz4Wah0qtUSLxwxVjmZEXy1zNHcO30FCSJAaFUji435kFqORo1In8aoLjBwf9WFvP4RaNxuTzYulxcMy0ZlVLC0eXhn+ePItioQatSsHZfI98XNDAvK4Jb5qYREaTDK8uUNLbz7oZy7j09my9umUa0Rd9jqP8ojUXw7mVCaTtimDB+w7PEjrmrw7+v6gAGgTFcFLMfdbEIXQtOAs0RKlET4LijoMbGlS9voLpVPNzjrDpevmoC6ZH7iUhQqoVh6+7yaw62WNiR30qjw4lh2ALGnzEDW5uNekUkjy6pAuy8cvUEPF6ZMKOam9/aQnpkJndduBi1qw3ZHEdUlFi0joi18OKvxrNoSyXL7bP4wxnJqJt2o6jejvGNU7nqlH+zO+oMXuinZAsQY9XxxS3TCDZoeozh3IRgHj0vh331dtRKBXHBOhodLj769ZSekjOf/mYqTe1Owk1aIgI1oocUt8fLnrq2oRca62iCyo0w7Q+HdHikScFe42jY9Aqc+o+DPq7aUc2kmGPrDRwWNoxlFcuYnTD7mF7H8c7m0mYu+9862p3iuX37SRlsLGlixV6RgqJVKbj71Cz+9mU+Lo9Ma6ebt9eXc8aoGJZ2qiif/BbhtDAsOghN3XaU5etFCpXeCs3+5zIHhzI21EJZcwdjEiw8dv4oZFlmX4ODm94SOe2VLR087Ct3GWLU8M51E3jx8rEUN7XT4fRwz0c7MOnU/O9X40gJ7037S48I4uWrxlPZ3IFBoyQh1DBolFuA449t5S1c9uI6n0NFlJX67yWjiQ8+8HyoU/duELo8IvS6r1AmCCP4r2eNFArxXi+3vbeN+SMi2Vtr518+gbFYq47/XJRLsEGD0+Ph4y2V6FQKnrxkNJ0uj09AE/4wP4Ngg4Y/frjd7zySJN4HwKxMURlhWIyFd66fRFVLBxqVTUQxtjf6vwF7HXx+G8y8C65fLsRyQ5JELvVgBEXC3PtFzrXsFetRdWBTO8CRZygM6SJ6Pccg8pvhx+XHu4tdzwLCJEmqAO4DTJIk3ezr8hHwMoAsyzt9Bbd3AW7g5iOt2J1fbesxogE8Xpl7Psrj099YiDDryPAZC2EmJ7MzwvneF5K9srCBR87LYVtFCzq1koWjYsiJs5AdZeb9jRU4fA9li05NlFnL9ooWtpfbKKhtY82+3onksfNyePjr3T0iYrMywsiICKK1sYa8Kgcf59uJtugIM2kZHmOB9mZoKBf5JB6nyFMerJzLvuXCiAbxvX63mMTm3Q+Lft3bLzgJokcd+INSqqG79EBfZBns9aDRB0K9f6F8urWqx4gGqGjp5Msd1fyujyHtcntpbndi1qvRBSfDjD/C0r/2DhI/ESk4kbNy9fzm7S1sLWthVmY4czJF7dTnz1FS36VkZJgSlbeDNTUezHo1n2+v4XNfJawbZwZxzbQQtColZr2aEKOW0QnBOLz7UH98tciBDcuA6Fx0395N+eQULp2U0BPGDRBn1ZMdZRb/S/2INOuI7GMgR/XrEm3VEx3wQh8R9jU4CDFqMGiG4lHVh4LFEJUj5qdDINqoYDHxsP0xOOmvoDqITUygtv3Y1JDuy+jw0Tyy4RH+MukvKBWBMmyD4ehy88jXu7Ho1Vw5ykhdh9hM7zaiQYTBfri5kkfOHkZTYw0jwt1oxgSxaHc9vx5nQClDjTGTYc1rUH55mzioeivM/Yv43h0CYwglTzmM6tYuosw6PthUSXa0mcf6zE/Dos2UN/VG/DQ5nLy8upRYq96vX73dydLddX6GNIBZr8asH7jBH+D4pcvl4T/f7ekxogG2lrewqaTpoAzprCgzI2Mt7Khs5csdNVw6MZH/rSxGp1Zw8rBIpqaHER+iJ8aiwy3LtHW6mJoWSnKoif98W0hSqIHJqaHUtHZx94c7eOPaCby5rpKdlTZijDLFpV3UukxEWPXkV9l4bW0ZV02O56GTItjZIDE9xk1Nh4LNDWpW7G3g3Q3lLPrNVCKCxLPUatD4BHEtYg795Kbeiw9OFsYwwPKHRephykFUSlKpRRnWH6PTJjbzTeEHHi9AgINgKMpfPQAgSZJZ/Cq3HeCQ7uMu3s9L/9lP/78BfzukizwEGh3OAW01tk7aOt1E9KlwpVZIXDElkXHJIVS1dJAbb8XrlXn0vBw8Mjy3fB8/7G3g7DGx/OO8HGpbO/B4ZaamhwESqwqbWFZQR1Z0EH9ekM0/l+yh3emhw+XtMaJvnJlCnLad3Jovicp7ngs0Ju446y4+dyTS0uEUxvHyR6BhN6TPh6wz4ItbYfy1kHtpb4gZCMO5G0OoUO3euQi0JjjzaZ9qd4II2w5JOrQPr6Vc5FtvfhUsCTDvL5A47ZBCKAMcv2zx7TL3ZWtFa8/PhXV2nl9RxHf5dYxOsPK7eRmMHHeNiIAoXweWeOhoRnr1dKblXsN7F59OiSuIl1eW4G4uJ67pZUw730S2JoLrcqQNLzI8ZgbXjjyT+cOzeXRxAaeOiAbgjP+uwmpQccf8LKalhTE6IRi73Qvz/wZ7v4Xdnwm17+wzyLXABxuauPOUTCqbOzDr1UxLC2N4INzxuCOvspXk0CEO6/a6oeALGH35IQ8RY5IotqsgOgEKvjyoEEKnx4mty4ZVaz3k8w4FkcZIrForG2o3MCk6kCs7GI4uNzOi3Zwbt5bI3a/j1ofTMuJuFoXp2NvQu3l4/XCZk1rfRRekR172OhPDs7h2ykyktU+B14Nnwg24LH10SzxOaKuFs5+Dys3IGhOOmClsrQ4mSKvm8W/3siAnmjmZEYyMtbK5rImEUCNut5e7PvYviLK9ohX9IPXo8ypbB7QF+Plh73L7iV12U9p4gBQqH1EWHU9fOpr1xc0U1tnJjDLx+IWjcHpkXvxhHxtKmlk4Kob4ED1RZj0PfbmLs0fH4fF6uWZaMrZOF9/uqiM2WM+vZ6fi6HLxybYqvjhbR9Smx1Bu3ElLykIKQi6mKzycJ04KYkbT81jbtJxtMiCteh/ZEMK50/7AbzeEs6m1E3unm4jB/CrDzgRzrKgEo9ICErQ3CJXuTa+IijKHi9spxv/2ATH2xBuFyJk5+vDHDnBCMxSq3eMQnuMg3++twNWyLP+sa2wkhRrop2fExOQQIvuVjVi3r4lrXtuISiFh0at5e30Zt5+USZBOxX2f9uYYP7m0kN/OSSM7Oojb3t3GW3ET+b/P83uMkVWFjeyubuPSiYm8tqYElVJiRKwZnUpJdWsnl6rXELXqL4BQXgv+7Epy5r5BlikG3roMunzlsba+Ca0VItx66f8J5dCZd4r4GoDkGb0CYeOvhe8eBJdvYi78Fkb/CqbffughMV4PrHsW1jwpfrfXwutnw7XfQUzuoY0Z4Lhk4agYVhf5h2OdPjIKEPoCd7y/ref+/ja/ji1lLXx2y1RimktE5MQ39/aEeRtX/JX0mSpuWjsSq07BAsdnmHb8DwDJXic8ODPvImTpX5k0oo23Wy7i6qlJuL3w7HJRiqPGBte8upH3b5jE+ORQTCHR8OVvxD0IkP8ZNJdQMmYmY5Is/OPrAkKMGtRKaUBZqwDHB3mVrcQPtdBY2VrQBx/WAipEJ9HhlmmNn4dly+sHZUjXOoQ3WiEd+w3FSTGTeL/g/YAhvR9CjBou063CvFqIGqnaqgn75FIenPU2F38l+pyWGcT88n+jSZsJS/6MJCkg9xKkL3/fM45yyT1ICx4HnVWU8zFFiAf4R9eDPhjJ3YXJ/U/GzHmLZ/eFkxRm4OXVJbS7PDy4cBgzM4XX7Ksd1QOq+JyVG4tJN9CQnpcdOfQfSICjTrBBwxm5MTy3fJ9fe26C9aDHiA8x0tDm5OGv8qm3O7nr1Kye9ACA51bs48aZKRTW2blofAKPLdnDS1eOY+nuer7YIWqZ19u7yK+28c71k3hstp7Yzy7qqeVs3fESIx1VVCTfzSll/0TTvAeyFyKtfgIAqa0a9UdX88g5b2PzhBIZtJ+wbK1JRC5ufcPnMfZtVo27RninQ1MGP+6nULUF3jq/d1H/7X3i+7RbD3/sAAdEkqRI4N/AJERyixN4RJblg6rV3G+sW4HnZVk+LsoPDMUT/SXgJlmWk2RZTgJuxheS/XMmM8rMU5eM6ck7HpsQzINnDsfUL//5I5+ogtsrIwO3zE0n2KimsG7gTuLS3XXU2bpIjzCxr94xwKPX6HBi1qt47PxRxFq1XDIhgetnpKBwOYjf8/qA8bLs68XE1W1Ed1O8XNSMBlE2oK+CaOIUmH2vL89E7jWiu9n6mjDED5W2atjwon+b1/2TRXkCHP/MzgrnmmlJqBQSaqXE9TNSmJ4eTnlTO8v31DMjI5ybZ6dh0IjFXqPDCY5G2PmxUIbvlytt2voip6dpuDhLjXVXv/vd4wKP6G/Z9SYnxXlIjwxi7b5Gbp2Xzi1z07htXjpXTE5kfUkzxfV2muure43obmp24LY39Ex8QToVT148ZuiNtQBDwo7KIyA0lv8JJEw8rCEkSSIuSEGRebwwzPurNA9CTXsNofpjJzTWl6kxU1lTtYaKtsOY63/BdLXUYN7er/CI7GWkYh+hvjXBFdkSmsbdQv0dRKRNxcYBY0k73qN14Uui1nTKLLGhB9DRLJ6/skycbRsbSpqYmCLuj483V1LSx/M4ISWEW+elo1UpUEhw0fh4ThsZzcyMCC6bmIBSIaFRKvjtnDRy4i2sKmzg062VbCtvwek+ollwAY4QCoXEJRMSWJATjSSBXq3k3tOzGR1v/dHjvF6ZXVWtfLatiuUFddS0dVJvdxJi1FDRNNDuWLKzltZ2F+mRQTywcBhVLR183ad2NIg0ht01bYw3NfQY0d0Y9n3NJEszmtJlkDoH8j/1P4EsY2zczgNnDseo+xHfXW2emEfdvREf7PwIzvgPRAz/0fd8UFRuHFhTev1zIgUxwBFFEqIMi4AVsiyn+ASlL4IBhVoOlluB42bRNhSJZ22yLP/Q/YssyyslSTqo8O7jGY1KwWkjo8mNt2LvchNt1hE0SI5RjFXssEkS/HZOGo98XYBOreDM3IFlrkOMGjQqBc3tTjQqBSqFhLtfQb4os46q1g5++7bYNbxmWjIdHgVd+ki07PLrq7VGgmaQRaZa3zthGMN7lIsBMITA9N+LsgCDqXJrgvz7/1SUGhEybqv0bw+IkP3iiDTruevUbC6dmCgMi2A9pY0OfvXSeipbxMPQalBzy9z0nl1wj0IDOjMMUnrHa4ygvgOMKsR92ub/MEfyeV/0wTR1SUTLMpdOTOCBz3b1lOJIizBxx/wMLnx+Df+c7GJ6/5MolLR7NYQEaXj8wlFMTw/vEQ0LcHwhyzL51W1cO20IvBHdNBeDrQpGXXLYQ8UYJQrb1IxJmCyqHky++Uf7V9mrjnl+dDcGtYE5CXN4dOOjPD7r8YD4VD8Uah0eQzjKfhtxDsnIOWNj0amUOOVmsUms8+V6ddnEvNUfYyT/LAgjLfctsiP1jG0sQdFc4telS2NFo1TQ6ZvHLAY12j5iUaFGLb+dk85Zo2PxemVig/VoVWI+/MsZw7h6WjKSJLRXHvpqNx9sEhskkgT/uTCXhYOsRwIc/ySGGnns/FHcOi8DjVIiPuTAQnGrixq48uUNPWvLSckhXDAuns+3V2HUDlzyBxs1yICtw8XLq0u4fFIiFr2apn7pjc3tTgq9Xsb2H0BjpFP2CYl2tvrWf/5FdRQ6a0/5q/2iMQ1sM4QJp9BBalD8KIOVHTSEH9569xfKyFdHXgI8BCQAZcA9O36143DqSs8BnLIsdwtII8tyKfBfSZKUwMMIzSwt8JQsy89JkjQLuB9oAEYAm4DLgN8iRKe/lySpQZbl2ZIkXQzcg4j3+UKW5TsB9tc+1AyFR3q9JEnPSZI0S5KkmZIkPQ0skyRpjCRJY4Zg/GNKjFVPRmTQoEY0wJmjYrhiciLzh0XydV4NHS4Pze0uUb+xzzFqpcTJwyJJDDVw6shozHoVV0xO9BtrblYEFr2aBnsXKT4vzOfbq0iPCWVv5vW9ZaZAPLBT5kDUCIjvF5435RbY9Kp4is57QKiE9kWhEKEyseMgboL/a/PuA4UGnI6f9Dn1YIqA+Q/5t/mEngL88lArFaSEm0gOM6JWKvh2V12PEQ2izMauKhup4SZOHRFFkDkYeeKN4h4MiuodSFLQNf1u8urdvLK9nZJx9/qfKDRNhEYCpePvpcxpYk9NG1/sqParZ1lYZ6e6pZOWdjcflZuwp5/pN0xjzo0sqTFRWGsnNSIoYEQfx5Q3daBTK4ZWJCn/MzHvDYHIVpRJwZ5mDyTPFCk1B+BY15Duz6nJp1LUXMRTW5/CK3sPfMAJhN4cQueMe3tTogDZHMdyRyIvrCjmv0sLuW9lOw051wvDQR8sIrlCUv3FNVU6HCMu5bV1FfxlhZ37VnZSN+73opRPN6ZISgwjuGB8Ap9vE+G0v5uTjkWrorqlg7YOFyDEzpJCjaSEm3qMaACNSumbg03sqbP3GNEg9tP//MlOKpv7VeQI8LNBp1aSFmEiIdR4QCO6pd3JfZ/u9HPQrC1uIjnMQLvTg0GjJMzUa5QqFRIXjIsjN95CZUs7U9PCsBo0A9am2VFB1LR2sqI1Enf8FL/Xasf/keUtEbROugP2LhF5x32vMygaKX7cgd9o7GhR7qobSRLCfIM5iw6F+AkQ1EcvSFKI8XXm/R9zAuIzol8AEhEGaCLwgq/9UBkObN7Pa9cArbIsjwfGA9dJktQtLDEa4X0eBqQAU2VZfgJR/ni2z4iOAf6BMNZzgfGSJJ21v/bDeA/7ZSg80rm+7/f1a5+CKIc1ZwjOcdzR0u7kix3V/OfbvQDcv3A4f/2812P8zLJCrp+Rgk6txO31khEZRKfLw10f7cDe6UYhCe/zfWcMo6XdRXKogS6Pl398vZv6ti5OGRHN9IxwXl1dwtp9jeRMyyXo7EWEtexAozeiTpwoQskAzngcKjaIB3lEtth501lhzr0QM3r/b8IcDef9T4Sj2SohNF2IQD05BmLHw0n3//jx+yNjPlz5JVRtFcqIceMhOPGAhwX4+bO7xjagraK5nYfOGk5SuJFGh5M3SuO4LFaFef5wpLZqZK+TOstolrfEcucpRqpbO3CHROM982kUdfnIlji81kQ6qwtoWvg+G5xJjE/Ss7a4kX31Azd8ShrbMelULCnq4OLz7yIyaQFaWzFdwZk4wkax0KknJthAdnTgAXo8s7OqtWdDcUhw2qFkJUz93ZAMF2uS2FDjgYkjYfUTULcbIrL22/9Y15Duj0ap4Xdjf8fz25/n832fMzdhLmeknkFWyP7fw4mEOmMObRd/jlS9BVlrodqcw5/e7PW0FTd28Nfq8dw/1kXQgidQ2Cpxo0Zx/hso6vKQPS4c4bks60jjDyd3EmzUYNGr2aHw4jrnE6JbNqP0dCEhM7lxEcnDrkSliOtJZfj71wV8sb2a9EgT95yWzYTkA987Le0DRVJbO1w99YQD/LJxON2DipFZ9Wr+76zh1LZ28rezRlBr66LB3oVBq2J5QR0XjE/g67waPttWxZ7aNm6YnsK/LxxFaWM7VoOa2tZOnl2xj/hgA1NOepiMnN24GsuoNWawT5OJyquhKuFC9PG5aNoq4II3oGGPMILjxkPsQfjUQlLg8o/FWratRuRNr/y3SAWbeeePzq0HRVg6/OpTMX5nK8SOPbT17S+fhxgYNm3wtR+OV7oHSZKeAqYh8qRLgRxJks7zvWxBlDh2AutlWa7wHbMVSAJW9htuPLBMluV6X783gRkI+3Ow9kVD8R76MhSq3SdkMcpVhQ386eO8nt///lU+C3Kie+rTOpwe/v3tXu48JZP3NpRx16nD+O3bW3v6P7+imGunJ/Px5koMGiX3nzGc21/fSPdG4nsby7lgXDwpYUa2lrcQbNKRmDQdBgarCuM5Itu/LfUg/yzWBPHlaIRXFkC9bzOgeBm8cS5c9/1PN4LVekiaKr4CnFCcPDyKRVv9w7rOHRPHxNQw7J0ubn13K2uKmngMsBr0aJVp/P7kTMqrOtCpZe7+dBM5MUbOjv4ARd7roDEiuTtRSko2z3qHGxe5mJDUgsPVSFVLB6fnRPP8Cn8xlpGxZl5ZXcJ101O4cVEFze1GDOpROJwesqLKeeu6iYQYA57o4528ylbihjJ3fe8SER0zROX44oIUvJ3vEt7t5Bmw7R2x+bgfquxVpFpTh+TcQ4VVa+WOcXdQYithW/02bvjmBi7MvJCbcm868MG/cDQaLZqMabhSp/D3L3cR1qHD5fFPxXKrgrhmeQcFtW4umTCTJbtq+c2cVF5YBzWtXdg624HtpIYZuW/hcB76Mp/JqaG4DW7iNz4uNnc8LjRARFsNqtA7eX9TMwpJ4gdfqa2t5a1c/r/1fPbbaT1lN/eHiAyS/K4zN95ClCVQ3/5EIESv4eRhkXyZ558WFWXRc9ObmwCJWZnh1LR2kl9j66n3/MPeRi6fnIjD6WFVYSObSpu5f8FwRsSYeWZZEZvKWgCxKV7uTePij0zo1SN95VyLuPvULLKTkxCRwIdBaKrwFL9yWm94eNVmaCqCyz8BQ/DhjR+WLr4C/Bj7+yMezh93J3Bu9y+yLN8sSVIYsBEROv5bWZYX9z3AF9rdV0jHw+A26/7CNI5avtIhG9KSJF0my/IbkiTdPtjrsiz/69Av6/jng83+OcDlTR3EWPWcPzaODzdXYNKquHxyEgW1dm47KRN7l5vfzElDp1KyrriRH/Y28F1+HTPSw/hkWxVFDXb6pUvzdV41fz9nJEE6FRmRJgpq2iiosaFRKRgWYyFhKBeZzSW9RnQ37Y3QWBTwJgc4aCalhPCHkzN48vtCvF64cmoS84aJeuaVLR2sKWrq6dvSLrwkze0u1hQ1MjElFK8M56arMG94R3TqSTHwEOcsZkziSMYmhfDiyn3cNCvVp2UQxeKdtRg1Sm6Zm47VoOGeU7OwGERZq0+3VfXUb99d08bafU0EG9TUtnYRadESG2ygsM5OS7uT1HAT2dFmNKpjr6x8orO9spXxSUOUUyx7If9zGH720IwHRBolmjplHC4ZY/IMWP4PESq4nzJ/1Y7q48oj3Y0kSSRbkkm2JDMnfg6PbHiEZEsypyafeqwv7ZjR0NbFzqpWGhxOYq06NpU245Hh9pMyeHlVMS0dLmZmhJMSbuxRN/58RzV3zM9ErZTYUyvmrdRwE+eMiaXT5aHJ4eTOUzL58yc7uWBcpRAb64Ou8Avm5NzO2PQ0ShramZ0VQVSQjudXFLK1wkZhnf2AhnR6RBAvXDGOez7aQVVrJ5OSQ3jgzOFY9GqqWzvYWWmjrdNFWmQQw6LNKBWB3PhfEs0dLrKjzdi73PxQ2ECIQcNVU5NpbnfS4TOa0yJMfNXP0G7rcqNSSlwzLRmzXo3H6yXCouWVVSWcMjKaBTkxtHa6sOrVbCtvxSvT80wF+GRrFSlhRtxemXCTFoNGyZ46OwaNkuExZmIPou51D41FA3Ksqd4GLSWHb0gHOBjKEOHcg7UfKkuBhyRJ+rUsy8/42rpvisXAryVJWirLskuSpAygctBRemlDVIpqANYB//EZ5s3AxcB/gfX7aR9yDscj3R1zNzTb+z8zkkIHTgx5la3MyghnZKyZ0qYOluys4ZppSWwsaeaNdb334EXj4xkVZ0GrVjI5NZSPt1ah1wz8U4QHaVm8s5ZlBXU8cl4OTy4tJK9KhM7GBet57eoJpIQPItBwKGgMIgfb2y8ETDtE4wc4IQgxarl5dhpn5cbikWVirXpUSmFY6NRK9GqlX04ziDzrUJO2J3erph0wRgwQrIuJjOSKqAS2Vdo4e3QseZU2Kpo78Hi93DgzFZVCotPl4ZpXe5VzZ6SHceqIqJ6Fg0ohsbvGxlvryvjVlCR+KKynqqWTNftEGS9JgmcvHcP8EYHakseaXVU2LhgXPzSDVW4UQojWoStzpvApd+9p8jA6IlmMX74OEicP6OuVvdS21x43qt37w6w1c/WIq/nH+n8wO342OtWJ58lscnTx50/y/IyNO+Zn8srqEl5dXcLZo2MZkxjM62tK+e/Swp4+0RYd++rtZEQFIUmiIsD5Y+P4x+LdPdqfE5JDOHt0LF2Kpv6nBZ2VMKuF2z/YSUGtUEZWKyX+fWEuf/xgG0E/pnjsQ6GQmJUZwSe/mUpbp5sIsxaTVk1VSwe/eWszm32eRaVC4qUrxzMzI/zQP6gAxx1alYJ3N5YTH2zg5tlptHW6eWlVMX86rTdiUadWoFUp6HL76yKMjLHw1y/yKfMpe2tVCh46eyTVrZ08t7qYBrsTi17NeWMHCteFB2l5Zvk+Npc1c9OsVGRZZnVRI9sqWsmMNPHCFeNJGGTNPPibGGTNqVQPKlAa4IhwDyJHuu8frN3XfkjIsiz78pP/LUnSH4F6wAHcCbyPCNne7FP3rgfOOsCQzwNfSZJU7cuTvhv4HuGF/lKW5U8A9tc+1Byy20WW5ed83x8Y7GvoLvH45JzRsZj6KCCatCrSI4P43btbiQsx8NqaEiamhNLU7uKt9f4bOe9uLGdOVgSXTEhAqVBw5ZREnG6PX5kXSYILxyewZFcNtk43n2+v5twxvRNYRXMHKwuHoEh9NyFpMOOP/m2jLunNww4Q4CCRJIm4EANmnZpaWyddvvIrCSEG7jo106/vnKwIoq06xicFEx6kJTnMyGvbHOwb92f/QaNHoY3LJT7EyJtrS3l5VQlf7KjmjFHR7Kyy8dT3hdi73APCvFfsbSCrTy70RRMS+GZXLQ12JzWtnWRHm3uMaOgV56mzdRLg2FHX1onL4+0pNXTY7PoUEib5i+AMAfFBEgVNXjFu8gzY/s6g/Ro7GjGqjWiUQ/R+jiAp1hQSzYl8UnhE1hzHPbur2wZ47J5bUcTCUTE0Opws2VWLWqlgfFII4UEiRUSpkLhxZirPLt/Hqr2NXDgunoU5Mby0qtiv4s764iYSQwx82xhOR4z/hotj1oOsadD1GNEALo/M098X8cAZw8mKOnhNh/AgHSnhJkxaIdS3o6K1x4gG8HhlHvxsJ82D5FQH+PkSatLy5wXDWFvcyJNLC3l1dQlRZh0jY82MjLUAoFIouHySv8NxXnYEZU3tPUY0iJJXi7ZWolFKNNjFfdLa4cKs1/jNy1qVghkZYWwuExEWL60qRpIk5mSJSLSCWnvPawdFeBaMOM+/bdY9Ioc6wBHHp859HSJ3WfZ9v+4wVbuRZblaluWLZFlOlmV5gizLs2VZfleWZa8sy/fIsjxSluURvvZWWZaXybK8oM/xv5Fl+RXfz/+VZTmrO7VYluW3+hz/xz7HDNo+1BxOaPcTP/a6LMu3HOrYPwdGxll5+arx/LBX1KBTKhQ8/X0hXhmUksRHv55Cg72LzWUtA0K2ZRlSwo08/s1eGtud3Dw7jcQQA09clEtZUzslje1IwLsbynpyWKpaOpieHuY3TtkgNQEPGZUaJt4glA2bisESK4QYAoqGAX4iXq/M6qIG7vt0J6WN7ZyeE83v5qaTEm7i3LHxZEQGUVTvINKsIyfOjFapYLumlaI6O3OzIwjSqVkpJaM95xNUjbsJCYtEHT8WrPFkWeH9Gyezo7IVt0cmJ87CRzdNIb/KRliQlv+tLB5wPREmDbfOS0elULChpIn8alGdr7q1k6yogQE19fauAV7zAEeXnZVC6X1IyjLZKqGxcEjDuruJC1Kws8F3ryTPhC9/D6c+OqBcS6W9kjB92CAjHJ/MTpjNe3ve48KsC4/1pRx1WjtdA9psHW5OHhbJ+KRg8qvb+P1721ApJX49M5WEEAMxVj21tg7cXpl3N5Zzy5w0xiQG8+b6gdGQla0d6ENj2ZnxGGnuvWi7GnGHpKOOH0P1+tqB/Vs6yIm39hjth/SeOga+p4rmDjqcHn5K1G2A45/ZmeF8eOMUCmptWPQacuIsxAUbOHtMLPOGRRIRpGVLeTP/uTCXono7GpUCnVrZYyz3paTRwbQ0/3nrmWWF3HVKFlaDBluHC1unm2eX925gd7q8KPuVdq1r+wkb03qrqPyScz60VokKM9FjQDkU2sgBDgaf0TwkwmInAodzZ54D/AkIRsSfn3BkRJj462c72VFl69l11qkVxAbrSYsIosPpobSxnUizllpbb858uEnLlrIWihpEHtXfvsjnucvHMjLOysg4K59tq+K3b2/xO9e09DDyq/0VkftPcIeN3ipEyg5WqCxAgEHYXWPzq2P5ydYqOpwe/nPRaExaFZNTw5ic6n/vzsiIwKhR8cDnawBQSPAXGX41eRp/njEMlL3BM2kRQaT1q0mZE2el3tbJmEQrm0tbeto1SgXN7S5MWhX/90W+3zGj4izYOl0oFRKePg/9+cOjiDQHxMiOJdsrWoZOA2L350KhVTmEZbR8JJgVLC72pcOYIsASD4XfQtZpfv1+boZ0dkg2r+S9wr6WfaRYTyxPUHKYEY1SgdPTG/o6KTmE4TFmvt5Zw3++29vT/vevdvP85WMZFW9lZ6XUM5c8sbSQSSkhzM4IZ2lBfU9/pUJCIUk8uriAJy7OZdwY/82dzMiBm+Onj4wiNezwUqzSIk1IEn7e8XPGxB2WcR7g+ESjUjImMZgxif75xJFBWh78bBdnjophfFIId3ywHY8s9zz7Hlw4fMBYF41LIC3C/97rdHkxalWcNTqWffV2Fvx3Je198qUzIk00OZzo1L0l2nLirD/tTQRFQtApP+2YAAGOEYejqGMDlgFXAZ8N8vWLx2LQ8Oj5o3ryjNIjTbxy1YSeRb5eo2RmRjh3nZJFTpwIqxkVZ+GOUzJ5d0O531hf+QRLAKanh3H3qVkEaVXo1UqumprEmIRgrAY1fzwlk1vmpvHwOSOJDihxBjgOKWpw+O1GAyzZVUt164/XMh0Ra+HpS8cQadYiSRIXjo/jmmnJqJQKWjucrCps4N31ZazYU0+Towt7p5s1RaLt+911SJLEn08fxsyMcBFpG2bkzlMzeW1NKR6vzI0zUzBolARpVdw6L524YD11rZ08eclo4kP0KCRYkBPNH+dnolMHdr+PJdsrW0kMHYKcOHcnFC6F+ImHP9YgJJoVFDR5kLstlKTpsO3tAf0q7ZWE6IZIOO0ooJAUjIkcwzel3xzrSznqZEYG8dKV40kJMyBJcFJ2JH89ewQ6tZJ3+j23AT7dVsXqwgbsnS6eu2wsCSF6FAo4ZXgUV01L5tThkSgkoWty1ylZfJ1Xw02zUqmzdQ0Ya1xSCA+fO5LwIC0qhcQ5Y2K5fFIiqsMUPxwRY+aZS8cQZdahVEicNzaOG2emoFYGRBVPFKakhnHPadks31OPVqXE6fH6bSB/tr2KB88cTohRg0ap4NppyZw9JpYxCcH8+fTsnvXo7SdlMCtTrHlTwk28fOV4MiOFsT0hOYSrpiYxLS2MMJOG205K56GzRxBiOP5TWgIEOFQOZ7X4LPA1okj2xj7tEiKu/oTYxs6MMvP0pWNoaHNi1quw9pswPLLM4p3VXDoxkSsmQ52tk00lTX6KhyBCvbuxGjTcMDOV+cMjsXe5+XBzJb9/byvXz0jl71/t7umXG2/hXxfkDp3gWIAAQ4B5EFGcUKMGg0Y5SO9etGolp42MZnxSMJ0uL1FmHWqVAqfbw0srS/w8QbfOS8OgUfHQl73/D2flxvDAwhE8cVEuW8tb+HRbFY8uLqDT5eXvX+3msfNGcsucNOrtTt7bUE6NrZPnLh/LScOimJAUgsPpITJIi1b949cZ4MiTV9nKGTkxhz9Q8XIhMKa3Hv5Yg2DWSuhVEuVtMglmCZKmwUfXiTqlOktPvzJb2c/KIw0wKnwUX+z7ghtG3XCsL+WoIkkS09LD+ODXU7B3eggP0qLXKJFlmbRwExtL/APwrAYNv39/G9dNT2FbeTNvXTuRti4Pd3ywjbxKG+MSg/n1rDTGJlrZXt7KhOQQPthUwQ0zB5ZCM+vVXDQ+gUnJIXS4vCSFGNBrD39TT6NScsqIaMYmirk10qxFowrMcycSwUYN189I4YycaHbX2Aa8XlDbxqS2Ls4YFcPJwyKYmBzaIxR6zfQUThsZjReIsej8Um46XR6unZ6MxysjyxIr9tQzIyOcJ74r7EmRCjVqeOu6iWT+hDz/AAF+LhzyDC3L8hPAE5IkPSPL8q+H8Jp+dhg0KhJCB/8oVxU2sKW8ldhgI1qVgu/y67huejJf7Kihw+VhTlYEOXEWTh4WidPtobxJqBCHmbQk+cK5iuoduD3yACGlreWt5FW2khJqgNYKIXhjiRtyQZ3jGlkW712WxXvfT+mZAEePYdEWpqeF8UMfMbz7Fg4jyqLv+d3t8VLd2oFSoSDGKto9Xpnqlg4khURcsB7J3QVN1di6lLy6ujf3OcaiY1p4F3tr68mIMLCnToRDLtpaxaWTEhmfFEJSmJFt5a09GgNqpYRCoeDhrwv8rvVvX+aTFmFCrVQQZ9WjCJSDOeY02rtwdHmIOOywUxnyPxO5y0eQZIuCvAYPCWaFqFEdPUqcd/RlPX3K28pJs6Yd0esYatKD0ymxldDS2YJVZz3Wl3PUkWWQZRkvwmsnSRKXTkzg8+3V2LtEOP/4pGCmpoaiVSlYWdjAyFgz1bYu6m1d5FUKY2VjaTMbS5uJD9EzLS0Mk8fGX6bqyEk14G6rgy47jVIwqPVEmkWUWdJhhnLvj/CgQBTbiU60VU+ny8PszAi+L6jrab96ajLvbihnTEIwm8taSAwxEtcnvUanUVDb2kWxy018iBFHl5smexcPfLYLp8fLwlExPL2siNx4C972Jh6cYWB9rcTHu9podDhZurv+l2lIu52iXJdKA+Yh2PwN8LPjsLc6T3Qj+kDIwLlj4nhjbSkdLg9njIqhurWDh88ZgVqp5NkVRfxzyR4+2VrJTbPSeOjLfLwyXDMtmQlJwYxLCuGU4VFEW3S8sa50wPhxahssexlW/xcUSqG8PeYKMPx8wggPmfYm2PwarHgEvB6Y8lsYf53IrwlwzAgP0vLYBTnsrLLR5HCSEm5ieB/l7KqWDv63ch+vrSlFr1byh/mZzMoI592N5bz4QzEqhcTHF0WRlvdvFPmfEGaK5KPZ9/ObjRFkBCu4M3oz0V/8i3FeFyePuJaXEk7mqY1Cb8DeKRa4iaFGXrl6PBuKm6ho6UBCoqZ1oOBJTWsn722o4KVVxdw4M5XLJiUEFpvHmO0VraRFDIHQWMMe6LRBWPrQXNh+SDAr2F7v4bQUXw528kzY/LqfIV1pryTc8PMqNaRWqMkKzmJdzTrmJ80/1pdz1PB6ZVYWNnDPxzuoaO5gZkY4956eTXpkECPjrHx00xTWFDVi0atZX9zELe9sQa9WcvnkRCKCdJz/7BpuPyljwLiyV+ZPwxowLr4daWcx3uJpKIafCV/fjTlhNmvTbmWdKZmTh0f55ZcGCDBU2DvdfLqtkoe/3s3J2ZH87awReGSZtk43ywrquH5GCu9tLOeLHdV8nVfD384eQW58MBtLmlhZ2MDLq0pwdLk5f1wcMRY9LR0uamydtDs9rN3XyD2nZXNueAXWpTeirM/nzKixnH/6vVzxdReljY5j/faHnuYSWP4obH8bdFYhkpa9UJSTDXDCEHDfHWHCjFqeXlaErdONyyPz0eZKutxedlbZ+PtX+WzxlaQorHPw50V5XDw+gSaHk0cXF7ChpJnCOjtatZLsKDMnZfsbiFa9mmH2tbDiUZEL6HTAt/dB8Ypj8E6PAcUrxPt1OsT7X/Eo7F18rK8qABBp1jMnK5LzxsYzJiHYL1z6s21V/G9lCS6PjK3TzWOLC/gmv46nvi+iy+1lRJSemK3/QbFrkXALtdWQ8v2v+dNYNzcm1xC99kFw2sHdRejWp7jIvB2zXkWQVuVXQs7tlbn/0538c8ke/rtUhIX3dzifMjya7wvq6HJ7+c93e1m+p54Ax5btFS0kDoXQ2O6vIG4cSEf2MZdiVbCltk+qTtx4qN8NzWLj0+Vx0dTZ9LPKke4mPSSdddXrjvVlHFX21LZxzasbqGgWmg7L99Rzz8d5tPnUvDMigxgZa2Z7RQtvrS/rmcee+r4Ie5cbSeoWFfMf95lTgjB9cDFSs4iuUZSuhE2vwrAz0Zd8w+Q9j/LNtmLyKluP6vsNcOKwpayZez7Ow9bh5oPNlfxpUR5NdidvrytjZKyFp78v6qlqsbPKxrWvbmRXVSsbS5t4/Nu9tHa4cHtl3l5fTkuHi901NuYPjwJgc1kLRkcFoZ9egbJeCHtqajYxYf0t/HqsiZOH/8IcHF4vrH8Rtr4hHDntjfDxDVC15cDHBvhFccwMaUmSXpIkqU6SpLw+bbmSJK2VJGmrJEkbJUma0Oe1uyVJKpQkqUCSpJ/N9vi2ipYBbV/l1RJj1VPS6K/Q6XB6iLTouGN+JtPTw2jpcFHW1E5Fczsr9tZz/rg4zh4di1alIC3CxIuX56LLGyhsw64TQutt8Pe55Q3wuI/+tQQ4KNo6XLy/qcKvLSfOyufbqnp+X5iqxNS/hq0sk6msJqZ24CZRfMlHXDImklevnkBSmBFZltlR2cr3+XXcNDuNpy8dw29mp5EdHcSj5+WQFGpAp1Zw3lihWru7pq1nrPc3VuDtX68uwFFlc1nL4es+OB1QtlqodR9hUq2iBJa3W3BMqRaiY1tF9ZBKeyWhulBUip+fgF1mcCYbazYeuOMviH0NDlwe/zlgQ0kT1X0iWpLCjKzY29D/UPbUthFt1vHBpgruOjWbZN9cc8XkRFIUNWLDty+1eT31cXVly7ghV0ddWxct7V2s2dfIK6tL+CqvmqqWHxdqDBDgYFhf0jSg7aMtlfznolzCg7TU2/0F8BrsTvbUttHsGFg+bfHOGsJNOkJNGs4eHYterWR6WBt09Cvi01rOOSkeOpwetpW3+Amc/axx1MG2QSpE1Ww/+tcS4JhyLJ/srwBPAq/1aXsEeECW5a8kSTrN9/ssSZKGARcBw4EY4FtJkjJkWT7ui70OpjwbH6zH6faiVSnocnv9Xmt0OPn3N3u4ckoSsRYdVr2aG9/Y1JNvNSLWzIu/Gkd6hBG3R8ZmzcJc3s9jEJl9xN7PcUVEFuzs1xaVE6g3eByjVStIDzdRWGfvaau1dTIqzsqW8hYASmzgNcejaCnxO9YcEo7Hkwn+Vaxwhg3j5nnZBOlFTu2m0mYueWFdT/maYIOah8/N4ddvbkZC4pQRUaSGGUW5rS92+Y01PMYcyJM+hsiyzPaKFs4fG3d4AxUvh5BUkbN8hDFrJUwaiX0tXtKCfZEXaXNFhMzMOylrKyPCGHHEr+NIkBCUQG17Lc2dzQTrgg98wC+AYMPAMmlWgxqjpve5YtKqBsxjAGEmLa0dLhytnfz7mz28f+MkQoxaGuxd7CgsYVL/gbVB4PHV7zWG80NpB6/t3MW105L5a59yfZNSQnjiotFEmANpJwEOnbhg/YC29AgTI2ItKJUiiqKvnauQoKypA+Ugz8SkUAO1bZ0s2lpJdrSJD26cRGP5FhL6d1Sq2dUEN3+9BaVC4rWrJzB1qEu3Hgs0RrEJ1t7o3276ec71AQ6dY+aRlmV5BdB/e0wGupMpLUC3m+pM4B1ZlrtkWS4GCoEJ/AyYkhpKUmhvmKJBo+TiifF0ur38do6/+MzCUTGs3Sf+Kd9aV0ZsiIEGu7PHiAbIq7Rx27tbkSQFq4oa2RZxFuh7FzjeoGjcGf41TH+xZC8AU1Tv7/pgGHP5sbueAAdEo1Jyw6wUjH0UvF0eLxdNiMesFwvVN3fYKZn4gMj57+6TMJ1STQbu1JPwmvsYWToLztFX9xjRLreX51fs86sB29zuYmtZMyNjLVw1NYloi46Pt1YRYdESbuoVtLIa1Jx3uAZcgMOivKkDhSQRYjzMcikFXxwVb3Q3GcEKNvcN7w5NEwutfUspbysnXP/zyo/uRqlQkhacxta6rcf6Uo4aWVFBnDHKXzTogYXD8coyJQ0O3B5vzzzWtxJBQogelVLRU5HjognxJIWZCDdpeXJpIW8Xm2jJvND/ZJNugrwPQZIonvgAz2/t4PScaP797V6/bmv3NflFzgQIcChMTA4ltU+FGL1ayc1z0tCqlWhUCi6ZmOjX/5KJiawpaiA9wsTdp2YxOzMCSQKdWsEpI6J71qvnjI6nyeHin1ugYdRNfmPUjPsjj28Wz2OPV+bxb/fi6PoFRA1qg2DeA6Ds86yKzoXY8cfskgIcG443192twGJJkh5DGPlTfO2xwNo+/Sp8bQOQJOl64HqAhIQBe2NHnZRwE69fM5H8ahtOt5fkcCOr9jbwzLIi0iNMPHzOSNxemeZ2J1vKWlhTJCYmp8dLqFFDWVP7gDGb21043V6aHE4eXOrkr9NfYbiyDC9K9kpJTAtK5eeXjXcIRGTD1V9DzQ6QvRA5/IgLCx0ux9v9eSzIjQ9m0c1TKahtQ6NUkB1tJj7EwMc3TWVzaTOVLR0s6fSSNeNd4jzltCuCsFmzqbPpSU9Lp+3iRcg1O8DrQYocRlDc8J6xXV4vlYOEQUaZdSSHmXjhh30oJFFH9f/Zu+/4psr9geOfk6RN0pnuvUtbWiir7KnIUnHgVcQBigMcuK9XvF6v259e98a9FQcqbgEZguw9OuneeyVtmnF+fwQCIWV3wvN+vfqifXJy8pxycprveZ7n+y2tb+Hr+SNJL2/EapXpG+J11peS6+7zc1thHX2CPE8v0VhNNrQ2gX/XZcmO1SnYVGbhiqTDGuMnweb3yI1JJtCt945SxHrFsq1yG+dEntPdXemS89PHXc1/pydzxZBwqvVGwnRadhc3MPH51cjIXD86hhvGxDAwwocfDlzHXJQKEoI8qG1uIz7QnSAvDckhXnioVRjazJTUt7C3VI82ZRZXjJ+Gl6UWr6AY9EYTPiMj2dUawNNbVNQZWtG6KO1ZwQ9nOBOCjzNYd187T0S0vzsfzx3O3tIGjGYrCUGeJAbbZu00t1rYX9nMvZMTUKsUyDJklDcxLiGAJ35Op0bfxshYX968ejABnmqssswLVwwgXOdGcqgXa3OqWFtg4BHXycyZMBJ/azWSLpJHNilIrzz0N7m8sQWj2Yr76RZl6AmiRsFNK205MVzdbTMivdsNTYQzWE8LpG8B7pZl+VtJkq4A3gPOw1ab+kjtLrSQZflt4G2AtLS0HrEYI8LXjYgDyXP+yqriqQO1oLcX1bO9qJ45I6PYnF/LvrJDd5yHR/sSG+CBWqXARSk5rNn6x5AwgrzUpEX5oG+zcM8KPeAHwMJpwfieEVeoE+QbY/vqJXri+dkd+gR50ifIcdptXIAHbq5KZrzx92HrEYOI9nNjdJyVWcNt23uG9IGQ9m+YuLmquHZkFA98u9ve5qlW0WaV+WpL0YEWmc82FvLUpf2J9ncn2t95+cXZqrvPzy35tQ4jJqck81cI6/wkY4dL8lXy5g7H9YXEjodvP6HBHfrGnNdlfelocbo4lhUu6+5uAF13fvp7qBmbYJtF8NPOUp79PdM+y+XtNbnEBbgzc2ik03Usxh+GRDvexj78mvTlXgNf7nUFgnlgahTL0iu4fEhfHvpjD2arLVDeWlDHpL6BbMitpelA8KxxURAXeHbf5OvpuvvaeaLCfLSEtTPFO9rPjeJ6A8//UUO0nxuTkoOIDXDn2d8zOZj+YX1uLZIk8dY1g/HSujI0+tDz4wM8cXNV8lO2gZ+ylUAQT13ah1X5exxeZ/aI6NOfcdRTSBIE97N9CWetnhZIzwHuPPD918C7B74vBiIO2y6cQ9O+u0xJnYGtBXUU1hroH+7NoAgdXtoTvyBYrTKb20n28Me+Ct64ejAv/JHF3rIG/jU1CYsVPt9YwKBIH764aTiP/5xOQY2BfwwOZ/aoaFxVSlLDdbw7O43/+y2DekMb142K5pJBJ1HHzmq1ZRgs2ggqNUSOhKDkE3++IBxDrd7IjqJ69pU2EhPgwZBIH4K9D63xy6lsYkt+HQ0tJoZE+ZAariPEW8t7c9J4flkWm/NrGRzhw5SUYKL83Ogb4lyD0mSxsrekAa/m/QTWb0dtbWFG+HCUM5L537L9aF2V/HNKAh+ucy4d91d2FVcN75kjB2erTfm1XHPE9MKTYmqB/LUw6o6O69QJiPCSqGmRqTJYCXA7EMC7uEHsBIYUbMK7X+9dchKriyVrRxYmqwkXhfP64TNVm9nCzqIG9pQ2cMOYGJQKiUWrbctGvttewhVpEfaZE02Fu5CKNoCpBTliOG5RaShVhz5endc3iP9caGbR6ly0rkpmpkWgbzNzycBQPlyXx7P/SOWDdflUNLYwc2gETS0m+gR54uPmyr6yBq4eHuV041E4e7W0mdlZ3MD2wjoCPDUMjfIh6jRvCAd6aXj72jS2FtRS2WTEagUfN1d7EH3Q3/trqNWbnD77xgXaZl8+81sGmeVNXNA/hJGxvrwzO43/+y2dBoOJuaNjuGhgyPE701gCRZuhJgeC+9uqL7j5ndbxCUJn6WmBdCkwHlgFnAscXCi0FPhckqQXsCUb6wNs6sqOVTUZuWvxDjbnH8pI+OD5fblxTMwJJyfaXljXbntisCd9Q7x4a/YQimr0zP90m0NG79evGsSnNwzHYLTg76m2J35Quyg5LzmIodE+GM3Wk09EUrQBPpoOB+6Eo/GG6362XbgE4TS0mS28tzaP11fut7dN6hvI/y4fgM7Nlf2Vzcx6e6M9S6gkwYfXD2N8QgDJod68Nmsw9YY2JAncXVV4atv/AL9hfw364t0M3HKDra44gKTg8mu/Z8IdY1ApFGhdlGwrqGdLgeP7r1+oc2AudJ+GFhNFtS0OJcxOWt4a8IkBTdf+3yokib5+SjaUWpgef2gk3JgwhfMzfyJL1XvrimpVWgLdAsmqzSLFP+X4TzhD/JVdzY0fb7EHEkFeam4aF8vrK3MYEK47FEQX7MTzy4sPZStWKGmeuQSPxAn2ffl7qLlhTCwXDQi1Z3f3dVNjtFiYnBKMn7srk/oGUVRn4MaPt1Bafyi796Jrh5AWfVYs1hJO0LJ9Fdzx5Q77zzH+7nw8d5h95uOpcndV8e5fefbPn3e3Uw891FuDh7r90GFIlA8fzBlKU5sJP3c1LkoFMQGeDDuZz6iGWvjpXsj69VDb2Ptg/AOgOntu5Am9R3eWv/oCWA8kSpJULEnSDcBNwPOSJO0EnuLAehNZlvcCXwH7gN+A27o6Y3dmeaNDEA3wwrJMitpZw9wes8XKu2vz0LdZSAo+dGfZ3VXJnRP7oHFR4u6qIrfK4FQW68mf02kzWwny1rSbPdHbzfXkg2izCda9eiiIBmhtgKw/Tm4/gtCOghoDb63OdWhbll5JdoUty+2WglqHUhuyDC/8kUnzgVqtWlclITotwd7aowbReqOZt1bvp59p16EgGmzr5dc8R4BaxsfdFY2rksvTIvD3OHQHPUynYXJKcDt7FbrLlvxa+gR5oFKexp+ljJ8hvOuSjB0uyU/BmmLHdaylkky+1pOg9F+6pU8dJVYXy46qHd3djS7T0NLGs79lOIzGVTQaUSog2FPDpYMOrYOUcv90LPljteC64WVMRudcDQGeGoK8tAR5aXFRKfBQuxDkpUGlVOCpdSGrotkhiAZ49vcMGgxtHX6MQu9U1dTKEz87lq7Iq9Z3SP3xPaUNDp8/syuaGJ9wKMO2UiHx0IXJ+Hseffmgu0ZFsJcWl8Ou4yf1GbUqwzGIBlj3ItTtb397Qehm3TYiLcvyrKM81O6nIFmWnwSe7LweHVtLm3Pc3mqyOmQHPharLFPe2Mpve8u5algk0/oFY5FlYvzcGRR5KOt2i8n5depbbMnFOpRshuZy53Z9Vce+jnBWajVZ2q0X2WK2nd+NLc51KWv0bSf8fgLbtG59mxm1sZ2ZHvqKA2VlbGvB+oZ48e0to8gsb0IhSSSFeBLu03tHCc9Ef++vsSe+OSU12dBaD37OoyhdoX+Akhc3G5Fl2T5aWdJcwv6gPly1YzFVydOxuvTO8kUx3jFsr9jO1X2v7u6udIk2s5Vag/M1yt1VxVfzRxB5WFlL6cjyN4CroZJWswkXtfNa1GNpL5txvd6E8SSui8KZzWSRaWjn72d7nx1P1pGfc3/aVcYlA0N55rL+FNW14KpU4O/RyaPCpnYGp6wWMBud2wWhB+i2EeneJj7QA88jprNMTg5qN2lDe1xVSq4bFY0sw2cbC3lxeTavrMgh4Ig7ewnBnrgoHUedbx4XQ1BH14900cLwec7tidM69nWEs1KknxtDohzrzgZ4qIk7MG13cJQPRyZmvn509EklytO5uXLJoHCKfNqphDf8FtB6OzRF+bkzOSWY85KDRBDdA/2VXUW/UO/jb3g06T/Z1tIpuufPWriHhNkK++sPBT0lzcVYfKJo8YkmaPe33dKvjhDnHceu6l3d3Y0uE+CpYe7oaIc2hQTDYnwdgmgAOW6i0/ObB96Exv3klxekhHk5zTq7bnQ0gZ698waM0PGCvDTMHhnt0OailEjsgDX0ie18/nRVKVm0OpfX/szhs40FRPh0cnJOvz7gfkS5wIiRoIvu3NcVhFMkAukTFBPgwac3DufcxAACPdXcMCaGB8/vi5vriQ/qj08I4JkZ/YnycyMx2IO3rhnM4COCjZQQLz6ZO5yh0b4kBnvwxlWD0KhUvL4yh20FdZg78s50n0kw/RXbmsKgfjDzM4joFeW5hR7OW+vKs5elcs2ISAI91ZzfL5gP5w4l7EAA2z9Mx4fXDWVAuDfhPlqentGffmHevPZnNotW7z/haWoX9A+mxC2Z/MkfYAlKBV0U1vOfg6QLO/PwhA5W2dRKaX0rcadafqy1AQr/hvDuq+EpSRIDg5QsLzg0qljYWEigWwBViVMI3vk1Lnrn0cveINg9mKa2Jqpbqru7K11mxuBwFk5LIkynZVCkjo/nDqN/mPONHpeoYTTP+BRLUH/wiaZ50v+QkqZitcrsKKrj9ZU5vLVqP7uLG5CPzNx0hH6h3nw0dxiDI3WE6bT8a2oiV4ja9sJhlAqJ60dHc8+kBEK8NQyL8eXTG4aT3AE5P5JDvPjkBtvnzxBvDXee14eBEd40G81cNCCUN68ewp8Zlfzv90zWZld1Tj1onyi4Zgn0vQg8gyHtBrj4Vacb44LQU0jHu7D3ZmlpafKWLVs6dJ+tJgvNRjO+bq4nnGTsSPWGNhSShNdR1n4CGNrMZJQ1cc17GzEcmG6jVEh8fuNwhsd2cPZCQy0oVF2eoKeXO41CtzadcX72NGaLlfoWE54aFWqV0unxZqNt2UJOZTNXvbMR84Hp4BoXBV/NG0lquO6EXqdW34bWqkerlMFNJOahl52fX20p4vvtJSw49xTrwO/8Aqoyod+Mju3YSdpeYWFZvpnvLrWN2tzx551ck3w1Xq5e+Kf/gsJqYv/k/3ZrH0/VK9te4bqU65gY5TwCewp6zflZqzeiVilxP0qCpYNamuqQrWbcvG2jaVvya5n1zgZ76Uq1SsHieSMZGKE77mvqjWZaTRb8PM6iUpY9y2mdn111btY0G9G6Kk9qQOdEGNrMtLTZzj+TxUpDi4nGFhOz39tI8WFr+F+4YgAzBnfSjR6zEVobQesDyp6WF7nbnfb1U+g4YkT6JGlclPh7qE85iAbblNRjBdFgqz25OqvKHkQDWKwy767N69hRabAFHiKIFjqBSqnA30PdbhAN4KF2Qad15cN1+fYgGmz5B37b084a/qPwdXdF6+kjguhe6ve95Qw4wZsmTixttiRjkSM7tE+nop+/guw6C5V6K3XGeixY8HS1XVtrEibhXpmJT86q7u3kKYrxjmFb5bbu7kaX83VXHzeIBtB6+tiDaLAt4ToYRAMYzVaW7ig5odd0V6tEEC0cl5+HusODaLB9/jx4/rkc+BueUdbkEEQDPP1rBlVNre3t4vSp1OARIIJooccTgXQPVt9Ops5avdFePkMQzgRWWaamnXO9TmSqPSvojWY27K9hcKTP8TduT84K8AgGrxOoT9rJXJQSacFKftpvoqAxnxD3YPvQgax0oWzQLKL+egV1fXG39vNUxOvi2Vqxtbu70SvIskxNs3NypFq9uKYJvVOr2TmZmd5oxmwRn0eFs5sIpHuwKf2cy/NcPzoG16OM7glCb6RSKrhuVLRT+4X9uz8wEjrf8vQKkkK88NCcwsiDxQS7voTY8R3fsVM0MkzF11km9tfnEuTmeA1v1UVQnTSFhF8Womqp754OnqJYXSw59Tm0mJ3LOgmOJEni2pFRTu2XdtY0WEHoZEnBnqhVjiHDDWM6IRGuIPQyYs5ENymo1vNXTjXpZY2MjvdneIyv01SuwZE+vD8njddW5tBisjBvXBzj+vgfZY+C0HuNjvPn1VmDeHNVDq4qJbefG8/g6JMboSyo0bM2u5p9ZY2MjvNnWKwv/mJ6ZI+3eHMRI08170Pmr+AWYEtQ00P081fw3i6Z9SV1nBPlfDOoIXI4Li31JP50PxnTn8PSS5bVqJVqoryi2FW1i+Ehw7u7Oz1aWb3tZsOjF6WweHMRLgqJ286NZ+hJXtMEoTtllDWyKrOKiqZWpiQH8ckNw3hr9X7yqw1cNTySC1NDT2uZoyCcCUQg3Q0qGlqZ/+k20ssbAdtaqgXnxnPnxD6oDitir3FRcm7fIEbE+WG1ynhoOrl+nyB0Ey+tC9MHhHJuUgCSJJ30uq/KplZu/3w7uw9k+/5sYyHzxsVy3+REXFRi4k1PVVCjZ29pI/PGxZ38k42NsOsLGHxdh/frdCgkiQmRCtaVxHBNSvtr9qsTJhOQ8QtJP9xD5vT/YXbrHQFWvC6ezeWbRSB9DE2tJh7/OZ1fdpehdVEyto8/KaFejIj165T1rILQGbIrmrjynQ3UH6in/sG6fF6bNYg3rx5Cq9mCt9a1m3soCD2D+ITZDTIqmuxB9EGLVudSWNtOIXpsiR9EEC2cDdzVLqf0YTOrvNkeRB/03to8Co7ynhJ6hvfW5jEhMQDXU7nZsfk9COzXI9ZGHynFv4ZKfT+a245Sr1ySqEo6H31QEn2/uwN1Y2nXdvAUJfkmsb50fXd3o0fLrdbzy+4yAFpMFv7YV8GLy7PJrWru5p4JwonbUVRvD6IPeu6PTFpMIogWhMOJQLobtJd122S1YrGKpA2CcCpM7bynzFYZs7WDM9wLHaa8oZXvtpcwJcU5F8RxFW6A0m3QZ1LHd6wDVBryiNeV89lez6NvJEnU9DmP+uiRJH1/F5ra/C7r36nq49OH7Pps9CZ9d3elxzpaVQ2T+Psu9CJt7ZzHLSaLSC4mCEcQgXQ36BPogZ+7K0qFRGKQJwGeai4ZGEqk71FGLwRBOKY+QR4Eejmuhz6/fzBRvu7d1CPheJ75LYNzEgPxcTvJ0Y2GQlj3MvS/Alx6ZqKbnPpsJkS1srZEy/76Y8+wqI8eRXXSNJKW3otbdXYX9fDUqJVq4nXxbCjb0N1d6bFi/N1JDfN2aEsJ9SLWX1yLhN5jQLg3rgeWGroqFSQFe3LnxD74e4q8I4JwOLFgpxtE+rnzydxhbC2sY11ONeP9ApjWLxi1i8jGLQinItzHjY+vH8YnGwrYWlDHZUPCGRyh441VOZQ1tHJhaghp0b54nEA9WKHz/ZVdxdqcav5vRv+Te2JTKfzxH0iY2qMSjB2uwdhIg7GBSE9fpsXoeWajD69MrEajOvpITmPYIGRJScJPD5A5/X+0+MV2YY9PTopfCqsKVzExcmJ3d6Vb7Slp4Lc95ZQ32q4vw6J9cVOr8HVX8+LMgXyzrZg/0ys5JymAy4dEiLrQQq+SEurN5zcNZ0NuDZIksa+0kYYWE/srm4kL9Oju7glCjyE+VXaTHcX1/OeHvfafv95SxDfzR4kLlCCcoqQQLx67uB+tJgtFtQYuf2s9TUYzAN9sLeaVKwdy0cCwbu6lUN7Qyj2Ld3LTuNiTWw9fuQ9WPgWxEyBsUKf173Sl16YT7hGBQlIwOMjI/noX/m+Djn+PqsPlGHPAmkJTASuJP/2LjItfoFUX0WV9PhkDAwfyzKZnsFgtKBVn583f9LJGZi5aj77NVlv3m63FvH7VYC5Ita3Xjwv04P4pidx+TjxurkokSWQ2FnoXSZIYFOnDqqwqXvszB4Cfd5fx5eYiPr9xBGE+2m7uoSD0DGJqdzeobGrlhWVZDm11BhN7SxuP8gxBEE6EUiHhrlaxvbDOHkQf9MKyLOoNbd3UMwGgocXEnPc3MSk5kP5HTH89KqsFdn4JKx6H5IsgYljndvI0yMjsrNxBjHc0AJIEMxKaaTYp+NcqP0qbjx14NoUOpDpxMgk/3o9rc2UX9PjkBboFolPr2Fqxtbu70m225tfZg+iDXlqRRWPLoeRMkmS7FokgWuitiuoMvL0616GtoMZARrn4rCoIB4lAuhvIMpjaSdhgkUViJEHoCO3l+zFbZayySJTSXRoMJq55dyNxge5cmBp6Yk+qyYGf7oKijTDiFghI6tQ+nq7s2hxUChX+Wn97m0oBVyc3EeNtZsHyAJ5ar2NTmRrTUS73DRFDqY8aSeKP/0TV0tD+Rt1saMhQvs/5vru70W1M7SQxNJmt4voinFGsR/mbKfLmCcIh3RZIS5L0viRJlZIk7TmsbbEkSTsOfOVLkrTjsMcWSpKUI0lSpiRJU7ql0x0kyEvDbefEO7S5uSpJDvHqph4JwpllYKQO9REllW47Jw5fd7FOsTtUNrZy+aK/ifRz45rhUccfpTMZYNMi23rosMEw5DrQ6rqiq6fMIltYXbKaZL9kp8cUEoyLaOG+oXXoNFY+3O3JlUuDeXGzN3kNztPb6+LG0RzYl4Sf7kdp7Hllk0aGjGRl0UoajD0z0O9saVG+9kRMB906IR7dySbOE4QeLMLHjauHRzq0+Xu4khAkliAKwkHduUb6Q+A14OODDbIszzz4vSRJzwMNB75PBq4EUoBQYLkkSQmyLDvOrepFZgwOw9fdhS82FREX4M41I6JIDBaBtCB0hJRQL764eQSfrC+gpM7ANSOiGJcQ0N3dOitlVTQx5/1NjE8I4KIBoccPogvXw4Y3wTcWRt8Brr0j2/H60g1olRrCPI6+Dt/NRWZ0WCujw1qpNyrYVq7mgdV+pAYYmTewEX/toZHO6sQpBO5dSsJP95N14bNY1D3nw6u32psBAQP4KvMrbkq9qbu70+X6hXnxxc3D+ejvfCqajFwzPIqxffyP/0RB6EVcVArmj48jLtCD77aVMCBCx8yh4UT59Y5rsiB0BUnuxqlIkiRFAz/JstzviHYJKATOlWU5W5KkhQCyLD994PHfgUdkWV5/rP2npaXJW7Zs6ZS+dxSTxYpKIYl1VL3Paf+H9Ybzs7eTZRmLVUalPOtWsfSI83NlZiV3L97B1cMjGRN/nBsZzeWw4S2oL7SthfbtuZmrj5Rdl81v+b8xOWoyWtXJJeFps8DqIjc2lmmY27+RqTEG7H8OZJnAfUvR1BeRdcH/YXLvOcFaaXMpz215jh8v+RGdRneyT+8R5+fpOjj19Sy8vpzpTuv87AnnZkczWay4iPO8pxABQw/SU98VY4EKWZYPFtUMA4oOe7z4QFuv56JUiCBaEDqJJEniQ243MFusPPd7Jvd9tZO7JiYcO4hu08O2j2DpHaD1gZG396IgWmZX1S5+zfuNsWFjTzqIBnBVwqRoAzemNrAky52H/vKlynDgnJUkKpMvojkomeRvb8WjdFcH9//UhXqEMjRoKE9tfIruvCHfnRQKcX0Rzg4iiBaE9vXUd8Ys4IvDfm4v0mz3L7ckSTdLkrRFkqQtVVVVndI5QThV4vwUerKOOD+3FtQy/bW1rM2p5vFL+pEY7Nn+hoZq2P4pfHsD1Oy3BdBx54Cyd1RlrGmp4Zusb1lfup5zIs7BV+N7WvsLdrdwy8AG/LQWbvkjkK8yPDBaAEmiNv5cKvpdSvwfjxK1+kVc9DUdcxCnaUafGeyr2cebO9/skmBaXD+Fnkqcm4JwdupxU7slSVIBJcAQWZaLD7SdsVO7hV7rjJiaKJyxuuz8lGWZ8sZW/squ5ustRRTUGPjHkHDGxPs7zrZp00N9AVSmQ/EmqM2D4P4QORo8es6U5aOTqW9toLCpkPTadCr0FST4JJLom4hS6th70lUGBX/ku5PfoGJSdAujwlrp49OGxmLAL3s53kVbaIxIoy52LM1BybR5BEI3zWyqN9bzyrZXCPMIY/6A+aQGpKI4/u9DXD+FnkxM7RZ6MjGNtQfpiYH0VGChLMvjD2tLAT4HhmFLNrYC6HO8ZGOSJFUBBSfQFX+g+qQPoOv09P5Bz+9jR/evWpblqaezg5M4Pw/X3b/n7nx9cewnrtPOT/f+5/n4n39Xu3OvZatZTiNd9lBZjhlJWazIDW2SVZbbn1nktF9ZVkiS1HX1ASUkSSspj77sRka2nFjfT0e17C+V0X6psBiplF9dF6KRTO0+fpvJw/CrrDa3+2AHk5SS5Bbv5jD1oOrnqpKKryvKD/x45PnbEednE5B5OvvoRbr72teVesKxntb5eYp/2ztCT/jdHamn9amn9Qe64e+70HG6LZCWJOkLYAK2E6gC+K8sy+9JkvQhsEGW5beO2P7fwFzADNwly/KvHdiXLbIsp3XU/jpaT+8f9Pw+9vT+najuPo7ufH1x7L3//D1VPfH4RZ9OXGf0q6cea2cQxyqciJ74u+tpfepp/YGe2SfhxHXbYjRZlmcdpf26o7Q/CTzZmX0SBEEQBEEQBEEQhOPpqcnGBEEQBEEQBEEQBKFHEoG0zdvd3YHj6On9g57fx57evxPV3cfRna8vjv3s1ROPX/TpxHVGv3rqsXYGcazCieiJv7ue1qee1h/omX0STlC3JhsTBEEQBEEQBEEQhN5GjEgLgiAIgiAIgiAIwkkQgbQgCIIgCIIgCIIgnAQRSAuCIAiCIAiCIAjCSTijA+mpU6fKgPgSX53xddrE+Sm+OvHrtInzU3x14tdpE+en+OrEr9Mizk3x1clfQg9yRgfS1dXV3d0FQTgqcX4KPZk4P4WeTJyfQk8lzk1BOHuc0YG0IAiCIAiCIAiCIHQ0EUgLgiAIgiAIgiAIwklQdXcHhN7FaDaS25BLVUsVQW5BxOpicVG4dHe3hC7SYGwgpz6HFnMLUV5RRHhGdHeXBEE4oNHYSE59DgazQbw/BUHotYoai8hvzMfdxZ14XTxeaq/u7pIgtEsE0sIJM1lMfJv9Lf+36f+QkVFKSp4c8yTnx5yPJEnd3T2hk1UZqvi/Tf/HHwV/AODl6sWiSYvo59+vm3smCEJ1SzXPbHqG3/J/A2zvz7cmvUV///7d3DNBEIQTt7tqN/OXz6exrRGAadHTuH/o/fi7+XdzzwTBmZjaLZyw3IZcntn8DPKBpIEW2cKj6x+lsLGwm3smdIU91XvsQTRAY1sjr2x7BYPJ0I29EgQBbO/Pg0E02N6fL215Sbw/BUHoNfQmPS9sfcEeRAP8mv8re2v2dmOvBOHoRCAtnLCalhqsstWhrcXcQp2xrpt6JHSlMn2ZU9ue6j00tTV1Q28EQThcub7cqW1PjXh/9iRtZis7i+qp1bd1d1cEoUdqamtqN2iuMFR0Q28E4fjE1G7hhIV4hKBRami1tNrbfNQ+BLkFdWOvhK4S4x3j1DY+Yjw+Gp9u6I0gCIeL9op2ahPvz56jqNbANe9tRJKgprmN+ePjuHVCnFgWJQiH8VH7MC58HL/n/+7QHukV2U09EoRjEyPSwgmL8oriufHP4a32BsBf689z458jxCOkm3smdIUU/xTuGHQHKoXt/luqfyo39b8JV6VrN/dMEIQU/xTuGnyXPfljP/9+zEudJ96fPYDFKjP/062M7ePP05em8vSl/VmyrZjn/8jq7q4JQo+iVqm5ZcAtpPilAOCicOGuwXfZfxaEnkaMSAsnTCEpGB8xnsUXLqautY4AbQBB7mI0+mzh5erF9f2uZ2LkRFotrYR7hItMmoLQQ3i6ejInZQ7nRpxLi6WFMI8w+01PoXst3VmC1Spzfj/bTWc/DzX3T0ni4R/2kBruzeSU4G7uoSD0HHG6OBZNWkRJcwlapZYIrwj7DXxB6GnEmSmctDCPMMI8wrq7G0I3UClUxOpiu7sbgiC0Q6VQEaNzXoIhdB9Zllm0OpeLB4Y6TOP20rpwy4R4HvxuN8Nj/fDWijKSgnCQt9pb3AgUegUxtVsQBEEQBKETpJc1UatvIzVc5/RYYrAngyJ0vLRcTPEWBEHojUQgLQiCIAiC0Al+2lXKiFg/FEdJKjZjcDjfbC2morG13ccFQRCEnksE0sIZq7S5lN1VuyltLu3urggnQG/Sk1GbQVZtFq1m8aFSELpDi6mFzNpMMmszaTG3dHd3er0/9lYwJOromdN1bq6MiffnvbV5XdgrQRA6Wn1rPXur95Jbn4vZau7u7ghdRKyRFs5If5f8zQN/PUCdsQ6dWsfTY59mTNiY7u6WcBQlTSU8u/lZ/iz6EwmJS+Mv5daBt4pkdoLQhcqay3hp20v8kvcLABfGXsgdg+4QlRlOUXlDK5VNrcQHeBxzuykpwTyydC/3TEpA46Lsot4JgtBRsuuyeeCvB8iqy8JF4cKCQQu4POFyPFyP/d4Xer9OH5GWJEknSdI3kiRlSJKULknSSEmSfCVJWiZJUvaBf30O236hJEk5kiRlSpI05bD2IZIk7T7w2CuSKL7Y5fQmPZm1meQ35GOxWtrdxmw1k9eQR1ZtFnqTvot7aFPUVMS9q++lzlgHQL2xnntX3UthY2G39Odsd3CkeU/1HnLrczGYDE7b/FHwB38W/QmAjMySnCVsLN/Y1V0VhF6ruKmY9Jp06lrrMFlM5Nbnkl2XfVKjyquLV9uDaICfcn9ibcnazujuWWFdTjUpYd4oFMf+uBLkpSHa353f95Z3Uc8EoXcwmo3k1Oewv34/RrOx3W0OfjbNa8jrlpHgVnMrr257law6W64Dk9XEC1tfIL02vcv7InS9rhiRfhn4TZblf0iS5Aq4AQ8CK2RZ/j9Jkh4AHgD+JUlSMnAlkAKEAsslSUqQZdkCvAncDGwAfgGmAr92Qf8FIL8hn6c3Pc3fpX/jonDhlgG3cEXiFQ5ZFeuN9XyR/gVv734bs9XM2LCx/Gvov4jyjurSvlboK2g2NTu0GcwGyvXlRHpFdmlfznb5Dfk8tfEp1petx0XhwuUJl+Pp6snF8RcT4RkBgMli4o+CP5yeu65kHRfFXdTVXRaEXqXN0sbywuU8sf4JmkxNXJN0DUjwRcYXWGQLU6KncPfguwnzPH6lheUFy53aVhSu4PLEyzuj62e89ftrSAzyPKFtR8f7s2RbCRcPFBUxBAGgXF/OWzvfYkn2EiTJNlNt/oD5BLsfKhdX0FjAUxufsn82nZc6jyuTruzSjN91rXX8VfqXU3tRUxFDg4d2WT+E7tGpI9KSJHkB44D3AGRZbpNluR64GPjowGYfAZcc+P5i4EtZlo2yLOcBOcAwSZJCAC9ZltfLsiwDHx/2HOEklTSXkF2XTVNb0wltb7aa+Tzjc/4u/Ruw3W17Zfsr7Kraxf76/RQ0FmCxWthZuZM3dr5hvyP4V8lffJP9DVbZ2mnH0h5fjS8uCsdSIiqFCj+tX5f242xlsprIb8insKGQzzM+Z33Zenv75xmfE+oRyvbK7fbtXZQuDAsa5rSfgQEDu6rLgtBr5dTn8MCaB2gyNaFSqPBUe/Jp+qdYZNusod/zf+en3J+OO1Jjla1ckXgF81LnOXz4Ex8ET93m/FqSgk8skB4S6cPm/FoaWkyd3CtB6D5Vhiqy6rKobak97rZrS9bybfa3yMhYZSvfZn/LyqKVVBoqAbBYLXyZ8aXDZ9PXdrzG7qrdnXoMR/J09STZN9mpPVAb2KX9ELpHZ0/tjgWqgA8kSdouSdK7kiS5A0GyLJcBHPj34NkWBhQd9vziA21hB74/sl04CUazkR/3/8gVP17BjKUzuG35beTU5Rz3eQ3GhnZHKjaVb2L2L7O5bOllvL/nfapbqp22+T3/dxqMDR3S/xMV5RXFwyMfRiHZTm+FpOA/I/5DlFfXjoyfjapbqnlt+2tcuvRS3t3zbrvnTUZtBoszFrO7+tAfu4viLyLK89D/T3///owJF2vaBeF4ipqKkJEBCPMII7c+12mbZQXLWJqzlNrW9j+8Nhgb+GDPBzy49kHe3vU2GqWG61OuJ8EngYmREzu1/2eqOn0b1c1GInzcTmh7rauSlFAvVmVWdnLPBKF7bCzbyKyfZ3HZ0su45tdrHG6ot2dZ/jKnthUFK3hs/WOsLVlLg7GBZQXO2+yt2dthfT4RHq4e3D/sfjxdDt00uzjuYpL9nYNr4czT2YG0ChgMvCnL8iBAj20a99G0t5BIPka78w4k6WZJkrZIkrSlqqrqZPt7Rsusy+TBtQ/S2NYIwPaq7Ty35TlaTMdeQ+fu4k4//35O7W4qN/RmPUaLkVe2v4Kr0tUevB7U378/7i7uHXcQJ0CpUHJBzAV8deFXvH7u63x14VdcGHshKkX359Y708/PzWWbeX/P+5itZoqaiojXxTtto1Pr2Fuzl0f+foT61noA4nRxvDf1Pd6Z9A7vTXmPV8991T71W+g6Z/r5eSby1/rbv69uqW53Cne8Lp4P933I5vLN7e5jZ9VOXtr2EkaLERmZv0r+QkLi7fPeJto7urO6ftJ60/m5o7ieuECP466PPtyAcB3L9lV0Yq+EztKbzs3uUNBYwJ0r76TCYDu/i5qKuHvl3ZTrj54XYHDQYKe2aO9o9tXs466Vd1HbWtvuZ9PuGDQZEDCAxRcu5s2Jb/LJtE/417B/4avx7fJ+CF2vswPpYqBYluWDWYO+wRZYVxyYrs2BfysP2/7wT8/hQOmB9vB22p3Isvy2LMtpsiynBQQEdNiBnAnaS7a1rnQd1a3OI8mH06g0zEudh5erl71tcOBgqlqq7NMHAbLqspgYcWj0QqfWcWP/G3FVunZA70+Oi9KFRN9ExkWMI9E3sVv60J4z/fxcVbzK/v2Wii2MDR/rcN4MChxEdUs1FtlCVl2W/Y8qQJBbECNCRzAseJiYht9NzvTz80yU4JPA7OTZAPYEj319+9ofD3QLpI9PH/Ia8lhb3H7isB2VO5za/ij4A6WiZ2WQ7k3n566iemL8Tu4m8oAIHX9lV2O1tjtOIPRgvenc7A6lzaVOCWhrWmsoay476nMmR092mKkW7hmOj8aHqpYqjBYjpfpSbk692WE99PDg4QwIGNDxB3ACIrwiGBM+hoGBA/F0PbElHULv16lDdLIsl0uSVCRJUqIsy5nARGDfga85wP8d+PeHA09ZCnwuSdIL2JKN9QE2ybJskSSpSZKkEcBGYDbwamf2/UzU3t2xCM8I3FXH/2Mf6BbIu5PfpcJQgUapIaM2g+e3Pu+wTZwujutSrmNm0kyMFiMx3jGnNKpYbajGYDYQ4BaAVqU96ecLp0dv0lPTUoOnqyc+mqPXPz1Sk7GJBJ8Efsn7BQ8XD6ZET0Fv0vPE6CcwWozkNeRR0FjA11lfA7YbLYcH2YIg2FS3VGMwGQh0C0Sj0jg8ZjQbqWypRKPUEOAWgKerJ7cMuIVJUZOoa60jwjOCq5KuYk3xGipbKjGYDLy+43UAEv0S2329wxNCRnpGMjFyIuGe4eL6exp2FNWTGq47qef4e6jx1KjYV9ZIv7CuS5YkCJ1Np9YhIdmXoQC4KlzxVnvbP3N4uHjgqz30OTXGO4Z3p7zLnuo95NTnUNtayzu73rE/7qvxJdkvmS/O/4K8xjw0Sg3xuniHfRxLg7GBBmOD7bOIWnwWEU5NV8x1XQB8diBjdy5wPbaR8K8kSboBKAQuB5Blea8kSV9hC7TNwG0HMnYD3AJ8CGixZesWGbtPUpJfEufHnG8vb+KicOE/I/5zzIuO0Wzkz6I/eWbTM9QZ61g4bCHZddlEe0Xj5eplnyae7JtMWlAaflq/Ux5NNFvN/F3yN49vfJxyfTnjwsZxb9q9xOpiT2l/wsnLqs3imU3PsKliE5GekTw88mGGBQ/jeNXm9lTv4fENjzMmbAxpQWmMjxjPZ+mf2f4fw8dx5+A72VG5g5/zfgZs69YfHvGwqE8rCIcxWU2sLV7LkxufpNJQybmR53Ln4DuJ8Y4BoKChgFd3vMof+X/gp/XjweEPMiF8Ah6uHgwMHOiwr9SAVOYtm0dNaw0AsV6xjA0d2+7rpgWm0d+/P2EeYejUOr7I+AJJkqg31vOPhH+IKYqnYF9Z4yll4E4O8WJDbo0IpIUzSqx3LHcOvpOXtr1kb/vXsH8hI3Pnn3eysXwjEZ4RPDzyYYYHD0eSJGpaavg+53t+zPmR6XHT+TLjS3sgPi91HrHets+GEV4RRHid3KDNrqpdPL7+cTLqMkj2S+Y/I/7T7jRxQTgeyZYE+8yUlpYmb9mypbu70aPUt9aTVZdFY1sjUV5RxOninNY1H2575XZm/zqbQLdALom7hEivSN7Y8QbRXtFcHH8xta21BGgDGBQ0iEC308tQmF6TzqyfZzlMFx8TNobnxz+Pm8uJJWzpQqddx7ynnZ8NrQ3c9MdNpNcdqn2oVqr56sKvjnkzo0JfwayfZ1HVUoVSUvLE6Cd4aN1DDv+Po0NH89Dwh6hsqaSmtYYIjwjifOKcsqsLHeaMOz/PBnur93LVL1c5VDqYGDmR/xv7fygkBY/8/Qg/5v5of0xC4tPzPyU1ILXd/RU3FZNTn4NKoSJeF+9QNuZIVYYqVhat5PENjzu0PzP2Gc6PPf80j8zJGX1+1unbGPPsn7xzbdpxb0Ie6e/91ewtbeT960S29G50WudnTz43u5PBZCC7PptKQyUh7iGEuody64pbHZKDuSpcWXzhYuJ94llbvJatlVvJrc+luKmYK5KuQK1QE+4ZTpJvEh6uHqfUj9LmUmb9PMsh+WKANoDPL/j8mNfIHuS0r59Cx+n+7EtCl9JpdAwLcS41dDS59bmMCx9HnHccX2Z+iUW2cHXS1agUKhauXUikZyS3DLjFIeHNqcpvzHcIvsBW/qDSUNmjEt6cqcoMZQ5BNIDRYqSwsfCYgXRJcwlVLbbkKhbZQnFzsdP/47rSdfyS/wvhnuGcG3Gu03RVQRBs18AjywX+WfgnlYZKVAqVfTbRQTIyeQ15Rw2kwz3DCfcMb/exwxlMBjJrM9vNkvtz7s+dEUif0dLLGon2cz/pIBogMciTTzcUIMvyKT1fEHoqNxc3h/XLWbVZThm226xtFDcXY7KaeHv32+yo3EGyXzK3DbqNrzO/Zl3pOvr69WXhsIVOs3BOVHFTsVMFg6qWKkqaS3pLIC30IJ2dbEzo5Xw0PqT6p/LB3g9obGtEb9Lz9u63scgW1Eo1+Y35PLL+EfbX76dcX47Jcuo1MA9PGHGQn8YPrYtYp9cV3F3ccVM5j/wfb+2Qp6snKknFiJARzE6eTaJPItIRN0z9NH64SC78a82/HMpeCYJwiLer8zUw0C0QNxc3tCotoR6hzs9p57oJUNNSY6+3ejy7qnbx7OZn271hKW5inrx9ZY1E+Jza3y0/DzUqpYK8av3xNxaEXszNxa3dqi4+ah/uXHkn2yu3IyOzt2Yvj65/lBhdDN5qb5J9k/mj4A+Km4rb2evxeam9nD6jKCWlSBAmnBIRSAvHlBqQ2m5Nvi0VW0jxSyHILYgFgxbwwF8PcNH3F/HEhicoaCw4pddK9EnknIhz7D9LSDw04iGC3IJOuf/CiQv3COdfw/7l0DYjfka7JawOF+0VzfMTnsciW1icuZhP0z/lsdGPoVHaRp0lJK5NvhazbAZgd5UIpAWhPUl+SQ7rmBWSgodGPIS/1h8fjQ8PDn8QpXQok/awoGEk+zrWKm1ua2ZpzlJm/jSTGUtn8P6e96luOXZlhi0VW/BSe5Hok4iP+lCCQV+NL3HecR10dGePfWWNhJ1g/ej29An0YEdRfcd1SBB6oHDPcBYOW+jQdlHsRbRZ2ijTO2bzrm2tJdozmisTr2R18Wp+3P8jv+T9Qk1LzUm/brRXNPNS5zm03TrwVmK8Yk7+IISznpjaLRyTv9afBJ8EVhatdGgPcgsivTadyxMu58WtL2Ky2kail+QssWVqHvPESU/f9dP68d8R/2Vm4kzqjfVEeUWR6NN+llmhY1W3VOOqdGVa9DTivOMoai7CT+NHkm+S04h0o7ERo9WIv8bfnpDof5v/R3Gz7e7wpvJN5Dfm88ToJ8iuz8ZV6cqqolX09bOV5PF3c1wG0GJuoamtCR+1Dy5KsWZaOHv5a/15bMxjZNRk0NDWQLRXNAm+CfbHR4aM5PMLPievIY8AbQA6tc6ptN+Oqh38e92/7T+/uPVFdGodM/rMwGw1U9tSi7uru8NIUIh7CDWtNeyp2cM/Ev6BSmH7aNBmaaOkuaSTj/rMk1HexMy0k69YcVCsvwdbC+qYMfj40/IFoTebEj2FGO8YCpsK7Z85qgxVKCSFwzIXhaTARenCW7vesre9uv1VArQBXNrn0pN6TY1Kw+yU2QwPGU65oZwQtxASfRPF5w/hlIhAWjiuydGT+SrzK+qMdQB4uniS5JvEL3m/YLaa7UH0QX8U/MGCwQuI8opqb3fH5Ofmx2i30R3Sb+H4KvQVfJ/zPV9kfIGf1o87B9/JyJCRDAh0rsNosprYWLaRl7e+TFVLFTMTZ3Jpn0spay6zB9EHVRoqya7PZtGuRQAsGLSAT/d9SqRnJO4qd6pbqvHX+rOveh+v7niV3dW7GR82nrn95xKnEyNgwtnLX+vPmPAx7T6mVChJ9kvGKlv5ZN8nrCtdR7wunvkD5jMiZAQAqwpXOT1vceZihgYP5ZN9n/Br3q/Eesdy1+C7GBQ0CIAhQUN4b897RHpG8t6e9+zVGLzV3rxx7hudc6BnKKtVJreqmfBTnNoNEBfgzrfbTm3aqiD0JhqVhtSAVIc8D65KV27odwPv7D5U6mp+6nzWlaxzev43Wd8Q6hHKgIABJzV44+nqSVpw2ul1XhAQgbRwHHWtdYR7hPPxtI/JqM1ARiZAG4C+Tc9TY55q9zneam/USvVJvU5TWxNWqxVvjSj50ZV+yPmB13a8BkBNaw23r7idj6d97JTEwypbyarN4qM9H5FZl4mMzBs730BGZmLkRKf6kABx3nE8OOxBor2jaW5rZm6/uVS1VHHv6nv59/B/MzJ0JPOXz7ffoFmau5T9DftZNGnRUdd9CsLZqLGtEWTb2r7qlmqe3fQs26u2A7C1Yiv3rLyHd6e8S7JfMqGezuuoIz0j2VGxg5LmEprbmtlWuY2bl93Mlxd+SZwujmjvaN6e9DZby7fy8MiHqW2tpdHYiNlqprS5lNTA9pOZCc6K61rwVLvg5nrqH6+i/d3JqWrGZLHiohQr8IQzW31rPSqFyp6FO7M2k93Vu1kwaAFGi5EozyhKmkqI9Ip0em6AWwDPbXmO+9LuY3jI8GO+Tpuljea2ZrzUXvZZN4JwusQVWmhXhb6C93e/z8yfZnLzspsp15czKWoS02Km0dzWzMrilby87WVKm0sZFDjI4bl3Db7rhDMftppbWVG4gut+u45Zv8zim6xvqG+t74QjEo5Ubajmy8wvHdpkZPbV7HNoK2oq4qWtL3Hnyjsxy2buH3q/PdD9MuNLdGodc5LnODznsj6XYTAb2Fa5jYfWPcSSnCWEe4bzVeZXWGQLX2R8QV5Dnj2IPmhvzd5TTiAiCGea5rZmfs37lWt/uZarf7man/b/RHFjsT2IPqjJ1ERufS4A48LGOdR91ig1TI6azKs7XqWmpYZ70u4h3DOcVksreQ159u3CPcP5Jf8X7lt9H09tfIrXdrzGW7veYmnuUrZXbKfN0tY1B93LZVU0EeF7egkyNS5KAjzVZFc0d1CvBKHnqWupY3HGYmb9Mou5v89lddFqjGYjOyp3sKFsA69uf5V3d79LdUs1HmoPAt0C0al19udrVVqGBA0hozaDv0v+PuZrZdRm8MBfD3D5T5fz1ManyKvPO+b2gnCixC0ZwYksy3yX8x2v73gdgDJ9GfOXz+fT8z+lj64PS3OXsqzAVibltR2vMStpFtNjp6M36fF09TxqKZb27KzayV0r77L//Oj6R9EoNVwYdyEAFquFZlMzbi5uouZwB1Mr1fhr/e2lqw46PHOl0Wzk1W2v8mv+rwBUGCrYV7OP2cmzeWvXW/hp/ez/RwsGLaDF3IJWpUWr1PJt9rf2DN2VhkrSa9K5IvEKPt73McHuwU4ZwrUqLaNDRzvUDG9sa0StVJ/0DAdBOBNsrdjK/Wvut/+8cO1Cnhn7DG4qNwxmg8O2B9838T7xfDj1Q9Jr0jFZTWhVWp7Y+AS1rbWU6cvIqM3g9kG38/K2l9GqbAFfs7EZg8VAf7/+/F3q+IFUp9bx0LqHeHz04wwOGtzJR9z75VQ1E+J9+pUmYvzc2VPaQHLosasmCEJvtaJoBU9sfML+8+1/3s4HUz7AR3Mo4aFVthLqEcrCvxbionRhdvJsJEnCXWUrL/fOLtv074MlWE1WEwaTAU9XTxSSbaywrLmMW5bfYk+6+HXW12TWZvLmeW8etSpJq7kVk9UkMnkLxyVGpAUnVS1VfJb+mUObRbaQXpNOmb6M5QXLHR77IuMLWswtuChc+Cz9Mx79+1HWFK/BaDYe97X+LPzTqe2z9M9oNdtGS57f8jyzfp7FE+ufILsu+/QOTHDgqfbkjsF32P/YAIR6hDrcCCnTl/Fb/m8Ozzv4AV5C4u4hd1PRUsE32d/w6vZXeW/3e7y6/VUa2xqdylzVtNbgpnJDpVAxt99c4n3imRw1GYARISOY228uhU2F/Hvtv1lesJwlWUu46ueruGflPeyo3NFJvwVB6Ll+zP3RqW3p/qX8M+2fDm3Dg4c7JGaM8Y7h/NjzGRU6iic3PulQM9UiW2hua2Zo0FCSfJL4u+Rv7llzD3N/nwvAwyMetm/rpnKjj08fCpsK2Va5raMP74yUWd5IqO70A+kIXzf2ljR0QI8EoefRt+mdPmcCrC9bT1pQGsFutlmNCklBmb4Ms2ymxdzCol2LeGvnW7y7+11KmkuoM9bho/ZhVOgosmqzePTvR5n18yxe3PoiBQ22CjJ5jXlOlQt2Ve+iqKnI6fVNFhPrS9czb9k8rv31WpZkL6Gutc5pO0E4SIxIC05cFa7o1DrqjfUO7e4u7rgoXdCqtE6jITqNjn+vPZQp9rYVt/H+5PcZGjIUk8WE2Wputx60n9bPqS3ALYAWUwsPrX2IXdW7ANv04k3lm/ho2kcEugV2wFEKAMNDhvPJtE/YW7MXL1cv+vn3c0gSd/D/W6vSMiBgAGX6MtJr0xkQMIAl05cQ4RlBbmOuffvD10krJSUW2eLwerG6WD6d9il9/fqikBQ8MOwBLoq9iKrWKh5d/6h9u7tX3c09Q+6hoLGAgsYCNpZv5LPzPyPRV2RxF84eAdoAp7YgtyDOiTwHb403ufW5BLsH09+/P0HuQehNens27jZLGwoUeLt6OwTSAGEeYVyZeCUFTQXcsfIOjBbbTc9FuxcxM3Emb018i3JDOXXGOt7d/S4AXq5iZPRE5FTqSQ3XnfZ+ovzc+X1v+el3SBB6IKVCiZ/GjxxyHNp1rjoivCJ4Z/I77K7eTXNbM2qV84w0b7U3w4KHkeiTyKDAQWhdtMz+ZTblBtt75sO9H7Kveh8vTHgBnasOrUpLi7nl0OtLynZnuu2p3sO8ZfPsn2X++/d/YRTM6DOjIw9fOIOIEWnBiU6j4+4hdzu0BbsFE+Mdw5rCNVzT9xqHx5L9kiltKnXaz6byTWyt2Mrdq+5m9m+zWZK9hNoWxw9048PH4+HiYf9ZJamYkzKHkuYSexB9UHFzMfkN+ad5dMLhXBQupAakMitpFhfEXuCUaT3UPZSnxjzF1JipFDUVEeIRwtuT3mZN8Rr++dc/eWHbC0hIzEyY6fA8g9nAFYlXOLSNCx/HqNBRpPin2EfBA9wCGB0+mp9zf3bqW3pNOjHetrqORouR7HoxI0E4u1wYe6F9+jXYbnIODBxITn0OEyImMG/APC6Ovxijxcgjfz/Ctb9cy+KMxawuWs0LW17gt/zfmJnk+N4MdgtmaPBQgj2Cya7LtgfRB32X/R25Dbl8l/MdChREekXiq/FlSNCQLjnm3kyWZfKq9YR1wIh0lK8bmeVNyLJ8/I0FoZfRqDTcnHozSklpb/NWezMi1FZ9INo7mulx00kLTiNAG0CIe4jD828ZcAvfZn+LUlLio/EhvyHfHkSDLcHihMgJ3LfmPh5d/yi3DriVsWFj7Y/PSZnTbmWZTeWbnBKnfrT3I5ramjrkuIUzT6ePSEuSlA80ARbALMtymiRJjwA3AQcXZz4oy/IvB7ZfCNxwYPs7ZFn+/UD7EOBDQAv8Atwpi78wHa7N0oZKoWJ06Gg+nPohuyp3EeMdQ6x3LB/s+YAl+5cwM2Em/xv3P/bV7iPYLRg/jR/fZn/rsB93F3eGBA3h2U3Psq/Wlrzqv3//l4XDFnJV36vsr5Xom8hHUz9ie9V2jGYjgwIHkeKfQnZddruZoI+smSp0LrPVzF8lf7G8cDmp/ql4qDz4cM+HpPinkFOfQ059Drurd/Pk6CcZFTaK7LpsgtyCKGwqpLipmPuH3o9GqbEnKmovYZFCUrS7TslP60dL1aE7yGqFWCctnDlMFhMKSYFSoTzqNin+KXw89WOy6rLQm/UYTAZe3vYydcY6Ppr6EQMDB1LSVMI7u99hV9UuKgwVtFhauHfVvcwbMI//2/x/JPgkcNfgu6g0VBLqEUpTWxMtJtv76uCITIJPAn5aP3ZX7Uaj1CAjo1KoeGX7Kzw15ikSfRNFWboTUNVsRKWQ8NScfj4PL60LrioFpQ2tHRKYC0JPMzhoMB9P+5i8hjwCtYGEeYQR6W3LzN1maaOmpYYNZRtobmtmTsocqluqMZgMBLoF8lPuT0yLmcZD6x7iPyP+Q5wujljvWILdg9lTvYfLEi7juS3PEeQWRKx3LJ+mf8pNqTeRFpRGnC6O1IDUdutGH5zRczhvtTcqSUzgFdrXVWfGObIsVx/R9qIsy88d3iBJUjJwJZAChALLJUlKkGXZArwJ3AxswBZITwV+7fSenyVqDDWsKVnDN1nfEOsdy8ykmaT4pWC0GPl478dYsTI+bDyPjHyEX/N+Jachh3Fh49C56shpyGFs+Fg2lW/CIluYGj2VKK8oXt3+KqEeoVwQewGLdi2isa2RD/d+yODAwfya/ysbyzYyMXIiU6OnMjPRcdQkyiuKKxKuYHHWYnvbhIgJxHrHdvWv5qxWqi9FQmJe/3lIksSKwhVoVBridfFEe0WT35jP7urdlOnLGBgwkKKmIr7J/gY/rR/TYqaRUZtBbn0uk6In8Xv+7ywrXMY1fa9hRMgIe6kLq2xlXNg41hStwSybAVum4STfJNaWrAUg3COcJN+kbvs9CEJHqTfWs65kHV9mfEmIewhX9b2KAQEDkCTJaVuj2Uh1azU/7v8RCxbGho0lyD2ImlbbB0ydWseS7CWUNJcwPmI8wW7BZNVmMShoEH+V/AVAVl0WWXVZeLp4cm7EuWyr2kaQWxB9/fuS7JfMg8MfZEv5Fsr0Zdwy8BYCNAF8k/0NKknFXUPuYm/NXs6PPb+rf0290v5KPWGnUT/6SNF+bqSXNopAWjgjqRQqVJIKpaTkl7xfyK7PZkr0FKK8onhn9zsk+iQyLHgYgdpA7ltzHy4KFzRKDU0m2+jwwRwrn6d/zqOjHyXZL5n8xnz+kfAPPFw8uLn/zVS3VLOvdh/jwsdhMBmYmTSz3WD5oGEhw/B08bS/hoTE/AHz212aKAjQ89ZIXwx8KcuyEciTJCkHGHZgVNtLluX1AJIkfQxcggikO4QsyyzJWcIr218BbEkYlhUs45lxz3D7n7fbt1tfup57htzDxvKNWGUrm8s38+ToJ1Gi5PP0z7lj8B3o2/RYZAuLdi2yP+/v0r+5vt/1vL7jdabHTuf+NfeT12grPbC3Zi/bK7fz7Lhn7YEV2Kb93DLgFkaEjmB39W6SfJIYFDToqBkWhc6hlJS0Wdpos7bx0raX7O3rStZxT9o9PL/leQB8ND78mPsjz205dG9sfel6buh3A4OCBvGfdf+xr5feWrGV/43/H1OjpwK2P1QHa0aWG8pRSkr8tH4UNhVyWZ/LcHdxZ2jwUCK8IrruwAWhkywvWG7PB7CjagcrClfwyfmfkOyX7LTtjqod3LL8FvvPm8s3c8+Qe8iozSDOO45/rvknGbUZAOyr2Ud///5cmXQlOyt2UtZS5rCvJlMTSqXt/XxwzaFSoeTlbS+jN+lRSAomRU3i/r8OZQnfWL6Rx0Y91uG/gzNVbnUzwV6aDttfmE5LRnkj5yUHddg+BaGnyKnPYVnhMr7P+d6eDGxvzV4mRU1CJan4NvtbVhSu4Jmxz6CQFJisJkxWk/35CoVtidjF8Rdz+4rb7Xl99lTv4YqEK6g31vNHwR/Aoevj9NjpxwykE3wS+HDah2wq20RTWxPDQ4bT379/J/0GhDNBV6yRloE/JEnaKknSzYe13y5J0i5Jkt6XJOlgrvsw4PA0esUH2sIOfH9ku9ABKgwVvLfnPYe2cM9wlu5f6rTt5vLN9PXta//5h/0/oJAUxPvE8+LWF7HKVqfaxAazwR5ERXtH24Pog/4q+avd7Il+bn6cF3Uedw+5m2mx0064NrXQccxWM5WGSlYXr3Zol5HJqs2ij64PT4x+gozaDN7b7XgOtZhbcFW4UtRU5JR07MM9H2Iw2RLWKRVKLoy9kJe3v8yveb+ydP9S3tzxJhPCJ3Bdv+u4PPFyor2jO/U4BaEr1LUeSt51UJu1jZ1VO9vd/vuc753aNpVvYkjgEDQqjT2IPmh39W7aLG3kNeUxPmw850ScY39MrVQT5RVFm6WNfn79AMiqzUJv0gOQ5JvE5vLNTq+3rnTdSR3j2SynspmgDgykw33c2FfW2GH7E4SeJKs2C5VC5ZRRe0XhCoaHDAdsM3jyGvO4KPYih236+/e3r1v21fg6Jcddkr2ESK9Ih7bd1bsp1Tvn8zlSgk8C1yRfwy0Db2Fw0OB2p4ALwkFdMSI9WpblUkmSAoFlkiRlYJum/Ti2IPtx4HlgLuA8t822zdHanRwI1m8GiIyMbG8T4QgKSYFK4XgqmGVzuxkNXZQumK1m+8/BbsGMDh1NpFckaUFpeLh4tFvv2Vfty8JhC52yxx7eh7NBbzs/lZISWZbb/T/1cPHgn0P/yb2r7mVy9OR2/9goFUoiPCPw1fg6/N+rlWqH//OBgQP5cMqHrClZg5/GjxGhI4jzFmsyu1pvOz97G4WkaPe9dOT196DDEzEepFVpuT/tfhra2i+NVGmoZHP5ZjaXb+beIfeS5JOEWTYTp4ujwdjAe1PeI1ZnWyJz+Ppss9Xc7nv4yHrv3amnn585lc0Mi/HtsP1F+LqxbF9Fh+1P6Dw9/dzsiZQKJVI7H+8VkgKrbLX/7O3qzYSICfTz70d6bTpDg4cS4h7Cnuo9vDv5XfvNwCP3ffg+Dt+3IHSkTj+jZFkuPfBvJfAdMEyW5QpZli2yLFuBd4BhBzYvBg6fvxkOlB5oD2+nvb3Xe1uW5TRZltMCApxLhwjOAt0CWTBogUNbfWs9EyMnOmRUVEgKBgcOJrMuE41Swx2D7sBP68ebu96k2dSMSlJhsVq4ZcAtDvvy1fiCBAWNBeg0OqcpjBfHXex05/BM1ZPPz9z6XBbtXMRty2/jh5wfqDJUEeoRypDgIYwLH+fwB89F4cL0uOnUtdbRZGpieeFyZsQ7loe4tu+1mKwmNpVtYlr0NG7qf5N9H3P7zUWjOjRyo1KoGBQ0iMlRk6kwVPDa9tdYUbiCBqOoo9qVevL5eSbwVntz+8DbHdo8XDwYEDDA/nN2XTavbn+VBSsWkOyXbF8HCLZr8KykWcToYojxjmFUyCiHfY0OHe1Qv/2jfR9xReIV3DH4DkaGjMRH48PLW1/mzR1vklOfQ6JvIv5af8C2lnpw4GCHD5pKSckl8Zd05K/gtPT08zOvWk+od8etpQzTaSmsM9Bmdg4IhJ6lp5+bPUl2XTavb3+d+tZ6Ws2tTtmzL4672D4LLsQ9BLNsxl/rz8TIiaQFp/FL7i8sL1iOp6snRrORWO9YwtwdJ6nOTJxJhd7xJtS5EecS7RXdqccmnH06dURakiR3QCHLctOB7ycDj0mSFCLL8sEFXJcCew58vxT4XJKkF7AlG+sDbJJl2SJJUpMkSSOAjcBs4NXO7PvZ5vyY8wlyC2JFwQpCPULta+eeGfsMf5X8hVW2khqQirvKnauSrqKffz+e3/I8Na01AKwuXs1VSVexpmQNyb7JvDDhBdYUrUGn0eHp6skLW16g1dJKjHcM16dcT72xnuy6bEaEjmB48HCHEi9C1yttLuXWFbdS0lwCwJqSNcxOns1dQ+5iZuJM9lTv4bHRj7G9cjueLp5Mjp5MP/9+9u0bjA1sq9zGnYPvJL0mnbSgNLZVbuOT9E8AWFu6lj66Pvxr2L8wWU3tjsrl1Ocw9/e5NJuaAdv0rodHPMzliZd30W9BEDrf2PCxvHXeWywrWEagWyDnRJ5Dgk8CYLvZeNMfN9mvq6uKV3Fj/xu5Lvk6alprSPRNRInt5qa32puHRz3M2uK1rC9bz8CAgRQ2FfJ11tf211JKShSSArPVzM+5P/Phvg9tSzVKVrMkewmvnPMK1/S9hkpDJVUtVbgoXHhpwktsKt9kXzMt1geemDazlcpGI4GeHVddwFWlINBTTW51M0nBIj+I0PsVNRUxf9l8KlsqUSvV3Nz/Zm4beBv76/dT1FTE2LCx+Gp8aTW3Mip0FN5qbx79+1FivGMYHzH+0NKYEgjQBnBh7IU0m5p5YswTrChcQZm+jCTfJHLrczkn8hyC3YPJa8wj1jsWg8lAUVMRff36HruTgnASOntqdxDw3YFspCrgc1mWf5Mk6RNJkgZim56dD8wDkGV5ryRJXwH7ADNw24GM3QC3cKj81a+IRGMdytPVkwkRE5gQMYFH/36Ub7K/ASCnIYetFVu5rM9lFDcXU9BYQFpgGgpJYf+wd9B3Od8xK2kW7+95n2kx07ih3w1c9/t1DtvlNeRRaahkUuQkru93fZceo3B0OfU59qD4oM/TP+fyBNv65BGhI8isy6TKUIVVttrLkiX5JqFT66g31rOpfBPFTcU8OPxBGowN/Jb/m8P+suuzMZqNvLjtRQYEDGBw0GCHUen0mnR7EH3Qmzvf5JzIc+yjZoLQW5ksJnZW7eS3vN9wUbowM3Emib6JDiPAWXVZTtfVz9I/Y26/uSwvWs6PuT8yOWoyg4MHAxDmEUaYRxj5jfmk+KXwW57je+6qvldR1FhEZWslWyu3Mj58PKEeoby7+13KDeWk16Xz0raX8NX4olPr+LPwTzQqDT9e8iMBbmJU7WQU1uoJ8FSjUnbsRL9wHzeyKkQgLZwZsuqyqGypBMBoMfLqjlcJdgvm0/M/RSkpWV+6ngpDBSNDR7KpfBN6k55bB95Km6WN9/e877CvqpYqNCoNb+18izfPe5PsumyqW6tZXbyacyPOZdGuRZQ1lxHiEcL60vW0mFuI9IoUgbTQoTo1kJZlORcY0E77tcd4zpPAk+20bwH6dWgHhXYdufZuSNAQVhSuoLGtkZrWGlYVreKBYQ84PU+WZfvIiqvClTZrm9OHQoA+Pn2I9RFlrHqS9tYpHV7De2/1Xm744wZ7xsy3dr3FR1M/IjUglUWTFvFDzg8UNxVzaZ9LuWvlXdyYemO7r9NqabXtu50S8EfWDAfaXeMkCL3R9srt3PjHjfbz/MuML/lg6gcMDBxo36bd94UsI8syJovtvXfke0JGZn/9fhZnLub2QbeTVZdFdUs148PHs650HUazkTd2vmHf3svViznJc2xtB16utrXWnsNAlmWn5IDC8eVW6Qnx7rhEYweF6TRklDVy0YDQDt+3IHS1w5cLgm3pn1alpc3axju73uHPoj+5Lvk6Xt7+sn0bL1cvnhv/nFNSXLAtM7NixcPVg/+M/A+rilaxtXwr02On8+K2FzGYDeyv32/fvr1rrCCcjp5W/kroZHn1eawrXUd+Qz5jw8cS6hHK5vLN5NTnMDpsNEMCh3BFwhUsK1gG2C56w4KHEe4ZTk59DqHutj/mPmof+0jkQRfHX4zRYuT+ofezsXwjMV4xTI2e6jAyGesVa88YK3SfvIY8suuyqdBXkF2fTT//ftzU/ybe2f2OfZuZiTORJImvM79ma8VWbux/IwWNBfyS9wtmq5mVRStJDUhFlmVWFK7gwtgL2Vi2EbNsZmflTsaGjbXXsgWI8YqxZ+c8co00QF/fvrip3DCYDfa2+QPmi9FoodezylY+y/jM4WaRWTbza96vDoF0gk+C03V1Vt9ZtFnaGBU6ilhdLP39+lPdUs3Wiq1sLNtIvC6e58Y/R0ZtBm4qN2K8Ygh2D6bN0kaCT4JT5u/GtkYssoUgtyASfRPxcvWise1QZuibU28myE2UWzpZedV6AjswY/dB4T5u7C4RuSKE3iuzNpNdVbvYXrmdRJ9EHhr+EC9ve5m5/edSaaikzdJGbn0umbWZTIyc6FT5JcIzgjZLG//o8w++yPzC3u6n8SPMI4x5qfPwVnvjrfZmTsoc5qTMAUBv1vPAX4cGfVwVrgwOGtw1By2cNUQgfRYpbipm/or5lDbb8rSplCrWlqyloLEAgK+zvuaOQXcwO3k2H035iK+zv8ZsNZNRl8En+z6x7ydOF0eiTyLX97uevIY8SppLGBw4mMKmQtxd3Hlhywu4KF2obqnmqqSr+GfaP1lZtJLhwcOZEjOFQPfAbjl+waakqYTXtr+GjGy/YfJdzncMDRrKE6OfYOn+pVwQcwFDgofw4NoH2VW1y/7cC2MvpJ9/PzJrM+1Z3S2yhRZzC4FugfYyPuvL1jMraRbXpVzHnuo9DA0eSphHGCsKVvD6xNcZGjTUqV99fPrwwdQP+CH7BwqaCri0z6X2EhiC0JvJsozRbHRqb7O0Ofwc7R3Nu5Pf5af9P5Fem86UmClsLd/Kz3k/A7Ybmx9P+5iP9nzEh/s+tD8vwSeBuSlzeWbzM9QZ6+zt/xv3P8zyoSoLEhKBboF4u3rz5nlv0senD+9Nfo8fc38kqy6LS+IvYWTISA4sxxJOQk5lx9aQPijCx41vtxUff0NB6IEKmwr5IuMLvs3+FoAf+ZEEnwRenPAid626y76c69vsb7l78N2UG8odKsNolBomR03m9j9v58LYC7k59Wa2V26nj64PgW6B+Gv86evf/lTt8eHjefmcl/km6xsC3QKZ0WeGQ/lWQegIIpA+C+yr2cf60vV4unrag2iwTZc5GEQf9PautxkcOJg1JWtI9U+ln38/Zv8622Gb/fX7Mctmaltq2VK+hQC3AD7e9zGjQkbR3NbMRfEXYTAZiPSK5Kf9P+EV6cUHUz/okmMVji+zLpNYXSxv7XzLoX1zxWZuH3Q7702xTZ/aWLbRIYgG+CXvFx4b9RhFTUXUt9bze/7vpPilMDt5Nu/veZ9rk6/l17xfkZH5IuMLvFy9eH3i6/ZRt/Hh49leuZ3Xd7xOvC6etOA0wj0PJeRP9ksm2S+ZFnML2yu288GeDwh1D2VYyDBivGM69xcjCJ1EqVBydd+rHWoyS0hcEHuB07aJvokk+iYC8MzGZ+xBNNhuWuXU59iT+B2UVZdFm7XNIYgG+GDPB1zb91qe3/o8Y8PGMjBwIIWNhaiUKvuNsCS/JJL8kjrsWM9WedV6pqQEd/h+g7zVVDYZaWmzoHVVHv8JgtCDFDcW80PODw5tWXVZlBvKnXKi/JL3C339+jI9bjof7v0QsCVn/Cn3JwB+yv0JrUpLkm8SQW5BNBgbGBw8mAZjA8sLlrOjcgd9fPowNHgooR6heLh6cG7kuZwbeW6XHKtwdhKB9BluT/Uerv/telotrcwfMB+wrSlxd3F3mGaokBR4u3qjN+lZV7rOntThzkF3trteTqvSMjtlNpFekSzdv5SL4y7mgtgLuG3FbQ7TBO9Nu5eypjKn5wvd5+A65+M9Zraa8Xb1xsPFgxK9LRGZVbbSYm5h0a5FAHyW8RmX9bmMq5Ku4vOMz1lWsIx/pv2TtaVrMVvNzIifYQ8KzFYzn2d8zps737S/Rn///rx8zstOiY1+y/uNh/9+2P5zqEco7056lwivCAShNxoaPJQ3Jr7BZ+mf4ap05aq+V5EakHrM5xwZGIMtaVl71+T22soN5SgVSp4d+ywZdRm8ut1W7OKH/T+QoEvgjfPeIMhdTOPuCPk1eoI7YY20SqEgTKclp7KZ/uHeHb5/QehMZtlsnxWjUqjwcPGg3ljvNBsHoMXcwtiwseys2sn9Q+9nWf4yhgQOIaM2w2Gb7ZXbGRM6hmv6XoMsy3yw5wM+2veRfZthwcP43/j/2UqvCkInE4H0GW5Z/jJ7gicJyVbLV5JoMDYQ7hHOmNAxuLu4E+8TT6WhkhjvGOpaD314W1e6jvOizrNPAQbbupQU/xQC3QK5IvEKe/3gzzI+cwiiAX7N+5V/D/93FxypcKL66PqwomAFAwMGsqNqh709yjPKYdRXq9JyXcp1NJuaSfJN4ofsH1ApVawqWuWwv2+zv+XKxCtZMGgB+2r20WRqop9fP3ZW7STOJ85e2qy4qfhQ6YoDdlfvJrs+2yGQrjJU8eLWFx22K20uJaM2QwTSQq+lUWkYGz6WkaEjkZBQKhxHF8v15eyo3EFeQx59/foyIGAAF8df7DAineqfSpRXFOdGnMufRX/a2wO0AXi5etmTPB50YeyFfLDnA+alzuOLjC8cXi+rPovN5ZsZFjKMQDex3OZ0NBvNNLWa8XV37ZT9R/hoyaxoEoG00CvUtdSxs3on6TXphHuGc/eQu6nQV+Dl6kVNaw3hHuGEeYShklQOS0+mx01ndOhozok4BxelC7OSZqGUlKhVah5d/6h9u2nR0wjzDOOr7K8YGDDQaYbOpvJN7K/fj2+wCKSFznfCgbQkSe2t0G8ACmT5sHeC0KMcHti2mltZVbyKvIY8ABZnLuah4Q+R35DP6ztet283JmwM48PHs7p4NVsqtvD6ua+T4pfCL3m/MDBgIDMTZxLmEWbfXqVUsaNih8O08YMMJgPhHuFO7UL3idXFMidlDpl1mfT17cvWyq0MCx7GPxL+Yf9AvaNyB3etvMs+IiYh8ey4ZwnUBjLn9zkO+0sLSuPzjM/5Luc7e9t5kedx15C7SPI9NGXUIlvaHQ0/mI34ILPVTIu5xWm7wwMEQeitVArnP7t1rXU8vv5x1pSssbfN7TeXm/rfxBsT3+DDvR+iUWo4J/Icblp2E7OTZzMraRZbK7aS7JvMOZHn8Hfx3zww/AHWFq+lXF/O6LDRFDYVUtVShclqwmhxXqNd0FTA6uLVPDzyYTxdPTv1uM9k+dV6QnVaFJ20tjxEpyW9rPH4GwpCN2uztPH+3vftU7MBxoWNI9o7mrd2HVpONid5Dg+PfJg/8v+gzljHuPBxlDWXYbKacHd1Bw5dK8+LPA+1Us3n6Z+TFpxGc1uzPYnY/NT57Vb3OPJzhSB0lpMpePgGsAF4G3gHWA98CWRJkjS5E/omdIAp0VPs32tVWnsQfdCrO17FiuNFaG3JWvr52zJruyhcCHQL5Ib+N/DJtE+4JvkadlfvZnHmYtJr0pFlGbPFzPt73yfILcihJirAnJQ5+GrFXcGeJsU/hYviLuKeIffwybRP+OfQfxKni7M/vq1ym8O0UhmZj/d9jJfay2FNM8DEyIkOQTTA8sLlTmUmQj1CmRzleKnQqXXE6hxLoQW5B3FN32sc2jRKDX10fU7+QAWhF8htyHUIogE+2vsRFYYKgtyDuLrv1czpN8d+w/PjfR+zonAFIe4hJPslc+fKO9levZ3s2mxu7n8zw4KH8UXGF/ye/zsA0V7RXBx3scP+PV08scpWfsv/jdyG3K450DNUfo2+UxKNHRTp40ZGJwbSsiyLUoNChyhoLODjfR87tK0pWYOHi4dD2+LMxRQ2FjI1eiq+Gl8+3Pshg4MGU9pcypcZX/JN1jfk1OUAoNPomB43nQ+mfsD5MefzTfY39v1k1mWSFpTmsO8gtyCRU0XoMicztTsfuEGW5b0AkiQlA/8EHgeWAH90eO+E0zYgYACvTXyNd3e92+5IiL5Nb596ezgXhQtjwsZwU/+b7GtcC5sKuf636+0JIlwVrrw35T2SfJOobqnm2+xvuS/tPpYXLKeprYkL4y5kYuTEzj1A4ZSpFKp2zwmAprYmp7YGYwMmi4krE68kuy6bHVU7GBAwAC+1V7v7OHIETKvSctfgu4j1juW3/N9sieySZxPh6ThdWyEpuDLpSnQaHd9mf0u0ZzRz+88lwTfhFI9UEHq29jJ6W2QL1S3VLPhzAa3mVq5Luc7hfVlpqKTSUElaUBpRXlEk+CTgq/Xlql+v4p4h9zAieATFzcVc1+86UgNSidHFEOQWxG/5vxHpFcmIkBG8seONo76+cOLyq/UEeqo7bf8Rvm5k/u18Te4IWXVZ3Lf6PgobCzk/5nz+M/I/7X4mEIQT0WZpa/emzJFtrZZWhgQN4buc7yjTl3Ff2n2Ee4Rzza/XYJWtWGQLni6evD/1ffvMNo1K4zQzbWXRSm7qfxMpfimsKl7FoMBBXNP3GkI8QjrvIAXhMCcTSCcdDKIBZFneJ0nSIFmWc0WpjJ5L66JlfPh4hgUNI702HbVS7RDgzOgzg+Imx9IaIe4htmRifWcT6RnJmuI1lBvK0Sg19PPvx4ayDYBtqu0XGV/w9NinuarvVSz8ayHPb3meYcHD8PHyIdU/FR+NT5ce79muqKmIvdV70Zv0JPgk0Nev71GD5WNJ9U9FQnJISHdJ/CU0tDWglJQMCBiAxWphd9VuBgcOJs47jv0N++3bRnpGEuUV5bTfCK8Ibht0G9emXIub0g2Vsv2+BbkHMSdlDjPiZ6BWqXFVds7aQ0HoCaK8o/DX+tvrrAMMChiEyWLiniH3UNNSg7fam0vjL3WoseqicCHCM4IknyTSa9Lx1fgyP3U+jcZGZvWdRV+/vvYp215qL67uezUGk4HtVdt5dvOzAIS5hxHl7fxeFU5cdmUzQZ2QaOwgfw9XWtos1Onb8OnAddgNxgbmLZvHxXEXMzhoMB/v+5j7Vt/Hq+e+6jS7TBCOlFmbSXpNOiqFimS/ZGJ1sUR4RjjlXwl0C3RKLjY2bCyf7PsEK1aivKJI1CWyrnQdtwy4Bb1Jj5uLG/vr97OycKXDErFIz0gSfRLJrMu0t/2a9yufTPuEmwfcjFalxUXh0unHLggHncwn7ExJkt7ENp0bYCa2ad1qQCxG6OGKmot49O9HuWvwXawoXEFpcykXxF6A0WIkyD0ISZLYXrmdgQEDSfFP4bktz/HihBd5dvOz/Jr/q30/V/e9mgpDhX2KeJm+DKvVytjQsTw++nHe2/0e9cZ6ZiXNIsUvpbsO96xU2FjI/OXzKWoqAmw1Z988701Gho486X01GZt4euzTfLLvExrbGrk0/lLcXdz5Pud7fs77GZ1ax7XJ1+Kp9uTzjM+5IPYCMmsz2VG1g7SgNG7of4NTJu7Debm2P4p9JE+1WLcpnPnCPMJ487w3eXfXu+yo2sHQ4KFEeEZw64pbWTBoAV9mfkm9sZ6rk67m5v4381PuT0R4RjC3/1xKmkr4veB3ZifPZlXRKgqbCgF4d8+7vHruq4wLH2d/HZ1Gx4yEGbRYWqg0VDIseBjX97ueIDeRuft05FfrGRiu67T9S5JElJ876eWNjIrz77D9vrr9VQYEDGB02GgAbuh3A89ufpbFGYuZ1XdWh72OcObZWbmTG/64wT4wo1PreG/yeyT4JvDY6Mf4IuMLVhatZHDgYK5IvIKcuhxGhY4ityGXESEjGB8+nrtX3W3f35zkOejNej7edWha+LjwcU6zI3w0Pjwz7hk+S/+MNcVrGB48nDkpc/B367j3hSCcjJMJpK8DbgXuAiRgLXAftiD6nI7umNCx1hSvIcIrAoPZwPkx5+Pu4k6loZJlBcvYVb2LBJ8EhgUPI8Uvhbd2vYWMjEJSOATRAF9lfsV1Kdfxzu53AJiZOBOVUoW30ptL4i/h3IhzUUpKe7IIoevsrNppD6LBNjX05W0v08+/3wklEqoyVJFem05NSw1+Wj/uXX0v1yVfh6erJ19lfsWEyAmsL1sPgJ/Wj2C3YHzUPnyR8QVZdVkk+iQyLHgYda111LXWUdZcJqZXCQK2m1zptem0WdpI8EmwL5c5XJJvEjMTZ+KqdGVf7T577dTP0j9javRUvsz8ks8yPuP6lOtZfOFiNCoNGpWG/XX7mRE/gwjPCHsQDbaplC9sfYEBAQPwVh/K9hyni2Ph8IXcPuh2vFy8jjorRDhxBTWGTil9dbgIHy0ZZU0dFkjXtNTwc+7PPDH6CXubSqFiTsocntv8HFNipojyQUK7zFYzn6Z/6jC7sd5Yz5riNbi5uJFVl8Wo0FFcHHsxtcZa+yw5JUqGBg1lW8U21Ao196XdR5uljZWFK1FKSj7P+NzhddYUr+HyPpc7vb64hgk9yQmffbIstwDPH/g6UrMkSd/KsnxZh/VM6FCSLOHp6mmvIwowK3EWc1LmcO/qe8mqyyKrLgsZmVtSbyHOJ67dOn8mqwkPFw9C3UO5MfVG+53sg462XlbofA3GBqe2CkMFRrPxuIF0bWstj214zF7aKsEngf+O+C8f7P2ABmMDF8ReQKWhktrWWjxdPJkeO52H1j3Ezak32/eRWZdJZl0mKoWKBN8E1pWs4+VzX3bI8C4IZ5vc+lxuXnYzFYYKwJY4790p7zIgYIDTtlUtVfyY+6NDW52xzuH9m16bjrfam4NLqny0PtS01tj377A/Q1W72bpdFC4iSOogDS0mjGYr3trOnU4a7uvGnlLna/ypWpK9hMFBg53+Zod5hDE0eCiLdi5i4fCFHfZ6wpnDbDU73LQ/qLi5mH//9W+2VW1jwaAFPLzvYXvSUncXd+YPmM/zW2whRKRXJHtq9rC3Zi+Pj34cpUKJ2epcAEihaH+JgbiGCT1FR97GiW2vUZKkfKAJsABmWZbTJEnyBRYD0diSmF0hy3Ldge0XAjcc2P4OWZZ/P9A+BPgQ0AK/AHfKR6YFPsvlN+STWZuJJEkk+iQ6rHtL9E3kpe0vATAiZARDg4ditBiRkPjX0H/R1NaEVbaS4JuARqlheMhwihqL8HL1ciihleKXwgUxF3Bpn0vx0fhQ3FTM7qrdWGUrNa01BGgDSPJNOua0XqFjGc1GMmozCHEPcVrXfEXCFfhp/Y67j6zaLIf60Fl1WTy35Tk+nvoxripXMmszKWgsYGr0VBqMDZTqS7l90O24qdxQSkosssX+3CnRU1hXso7Mukz21ewTgbRwVltftt4hyG21tPLhng95dtyzuCgdg69Y71hUCpXDB8oJERPYW72XWwfcilW2EuQeRGlzKWGetvdVVm0WWpWWBF2C0/v/Hwn/wF9rG8Fss7SRUZtBQWMBvhpfknyTTujaIBybrfSVhs7OFRPl68a6nOrjb3gCZFnmh/0/cHXS1e0+fkHsBfxn3X+4of8Nosb4WUqWZbLqsthfvx+tSkuSXxIh7rYZZhqVhpmJM3n474cdnjM4aDBLspcQoA2gwlDBwMCBpPil0GZtQ61UU9daR6p/KqPCRuGr8aW+tZ7hIcN5bftrfDDlA/r69CW9Lt2+P2+1N2HuYfxd8jct5hZcla7UtdYR6BZIkl8SOrWuK38lgtCujgykjxXUniPL8uF/AR4AVsiy/H+SJD1w4Od/HcgEfiWQAoQCyyVJSpBl2QK8CdyMrQTXL8BUwHHe8VksszaTG/64wT4q6avx5Z3J75Dg45jpONkvmQjPCPvI9Nx+c1lRsIKCpgIApkRNYVL0JH7O/ZkIzwjemfQOz215jj01e5gQMYF5qfMI8rCtp8tryOO+1fdxQewFvLztZXtWxtGho3l89OMimO4iywqWsXDtQuJ18dw15C6WZC+hrrWOKxOv5NI+l57QB7z2RrNrWmtAgnUl63hk/SNclXQVP+z/gay6LMA2DfB/4/7Hf0b8h3pjPa3mVioMFYwPH8+fhX8C0GgUtU+Fs1tpU6lTW0FjAW3WNqdAOsE3gbfOe4sXtrxAQVMB02Onc07EOejNev699t/2+uqRnpG8MfENoryjkGWZxrZG8hvzeWDYA3yZ8SU1rTVMjJzI+PDx9qRRKwpXcP+a++2vNTFyIv8d+V+REPI05dfoO31aN9gyd+dV6zFZrLgoTy8R2P76/RhMBoeSh4fzVnszKnQU7+95nweGPXBaryX0TlsrtnLzspsxWW0pkBJ9Enn5nJftN/DGR4znn2n/5L097+GqdOWOQXdQ01KDjIyPxgdvV28aWht4bcdr9n3eMuAWru57NY9veJxmUzNDgoYwIXwC16VcR2FTIU+OfZJFuxaxpngN/f37s2DQAj5J/4RN5ZuYFDWJ9/e8b9/XzMSZ3DX4LjxcHctqCUJX666FBRcDEw58/xGwCvjXgfYvZVk2AnmSJOUAww6ManvJsrweQJKkj4FLEIE0YLtzmFOfw6zEWSgVSkqaS/g+53v+yP/DHkhHe0fjp/FjQvgE3tz5JgBqpRqFpLAH0ePDx2Oymrhv9X32ff935H/53/j/YbKa8FH7oFYdKvGxoXQDAwIG8Fn6Zw6lDdaVriOzNlME0l2gtLmUpzc9DUBOfQ5v7XyLiZETmZk4kwEBA5AkiWpDNZl1mTS1NRHjHUMfnz5OGVl9Nb64KlwdSksMChyEvk3Pt1nfsmDQArxcvRzWMJmtZhbtWkSoRyh/Fv6Jn8aPG/vfyHNbn2Ny1GSW7l961A9qgnC2GBU2io/THeuq/iPhH7i7OOeRUEgK4nXxPDDsAYwWIzIyn6d/jtFqtAfRYCtFuK50HRl1GSgkBSqFCkmSeHHri5wbeS46tc72eE0G7015D71Zz1Mbn3J4rRWFK7gy8UpGhI7onAM/S+RV6Qnw6LzSVwdpXJQEeKrJrmgmOfT0llCtKFzBwMCBx7zJOiV6Co/8/QjzU+ej0+hO6/WE3kVv0vPytpdxVbpyfb/rUUgKJCQKGgvsgbSvxpfZKbOZFjMNpaTEV+vLj/tty1L21+9nbr+59lw6B60pWkOJTwnNpmaGBw9nQMAAnt96aLXo/NT5PDLiEZrNzXi5erGvZh/fZn/Ljf1v5OO9jtfQxZmLmR47nQGBzktkBKErdWQgfbQrsgz8IUmSDCySZfltIEiW5TIAWZbLJEk6OHcoDNuI80HFB9pMB74/st25E5J0M7aRayIjI0/xUHqXTeWbeGjdQ/bpgKn+qVzW5zKy67Lt23i5evHg8AcpbS61T/1zd3F3GIns79+fnVU7uX3g7fapON9mfotaqebcyHPtQXRNSw1ZdVlYZAujQkfxTdY3Tn1qaOu4tVxnko4+Pw1mg8PU+xZzCz/l/sTEyIlIkkSFvoIl2UuQJAmz1UxhUyHNbc0MCR7itJ+7h9zNt9nfkt+Qz8jQkQwKHESbtY2JURN5fcfrXNP3GqfXL20uZWDAQMA2gl2qL+XKhCvxUnsxPW66yNzey5yN18/ONiBgAI+PfpyXtr5Ei7mF2SmzOS/qvHa3rTHU8OiGR1lVtIo5KXOI8IwgLTgNWZbZW73X4b2eUZvB2pK1VLVUMSVqCj5qH1otrfyS94t9Gw8XDwxmAwaTgXpjvdPrHb6/3qAnnp/7q5oJ8+maussx/u7sLW047UB6VfEqpkRNOeY2PhofBgcN5rP0z7ht0G2n9Xpng554bp4qg8lAUVMR8wfM551d79ivE+Ee4bx53ptEe0fbtz18wKSmtYb5qfP5OutralpqAPB08eSqvlchSRJeLl62KdoKV65MutJh0AZg0a5FnBt5Ln39+gK261OQWxDxunin+tEHHxeE7nZKgbQkST5AhCzLuw5r/tdRNh8ty3LpgWB5mSRJGcfadTtt8jHanRttgfrbAGlpaWf8GupGYyPPbn7WYU1dYVMh16VcR7OpmfUl6+nj2wd/rT9FTUX4qH3w0/hR01pDbWutfc0L2O4wuqnc7FNxJCRuH3Q7VYYq9tfvJzUgleqWah5d/6h9Pe2w4GGMCx/H6uLV9v0oJAXRXtFdcfi9Tkefn8FuwaQFpbGlYou9zUXhYq/hnNeYx4ayDWyr3GZ/7MkxT7KueB1JfofWSAa6BZJem86MPjPw1/qzJHsJa0vWMjFyIh/v+xiT1dRuwrLx4ePZWL7R/vP++v3sqNzB7urdDAsexlNjniLIXZTW6S3OtutnV/Bw9eCS+EsYHToai2whyC3oqCOBGXUZrCxayTV9r2F96Xo+rPsQADeVGwsGLeDZzc/ab4QODBzIdznfAfB7we+cE+lcPOOiuIvw1/rj4erBiOARbCg/dJ9aJal63XW6J56fedV6hkR1TdKjSF83dhU3cHlaxCnvo8HYwP76/SQMSjjutlOip/Ds5me5vt/1uLm4nfJrng164rl5qvy0flyfcj07q3Y6BKvFzcWk16ZT3VJNbWstkV6RxOni7HWbY71jeWjtQ0yOnoyf1g+tSsstA2/hzR1v0mRqAmwZt+8fej+FTYUOuVUAZGSa2prsP0d7RTMnZQ4byzYS7RVNfmO+/TE3lRuRnr37hoVwZjjhhTaSJK2SJMnrQKKwncAHkiS9cPBxWZb/aO95siyXHvi3EvgOGAZUSJIUcmC/IUDlgc2LgcP/QoQDpQfaw9tpP+vpzXoKGgvsPyskBfNS5/Hvdf/m4b8f5ublN/PG9jfYXLaZUI9QXJWu3D3kbhJ9bOVXihuLWThsId5qb7zV3vxe8Lt9XzIyH+39CHcXd/toRnpNukNSqk3lmxgWMozx4eORkAh2D+aVc15pt7yL0PE8XD14aMRDjA0bC0CEZwSvT3zdPqW6XF9uD6LBlnX97V1vU2O0lT7Jqc+hoLGAhWsX8vqO11mcuZjS5lKmRk9lXuo8rLKV2tZaAJYXLGfBoAX4afxQSkqmx07HX+tPXkMeSb5JLBi0gAnhEzgn4hz6+fdjU/km9tbs7fpfiiD0QAFuAQS7Bx81iNab9LRaWpk/YD7hHuFk1mXaHzOYDawqWsWkyEncMegO/j3836iVas6PPt++TVVLFQsGLSBAG8CViVfy7+H/Ji0ojTJ9Ge4u7iwcvpDx4eMB28jSaxNfI94nvlOP+WxQWNv5pa8OivV3Z1dx/WntY0v5FhJ8EuzBz7EEuweT6JvI4szFp/WaQu+ikBRMiprklJl7bNhY/ir+i+t/v557V9/LzJ9msqZojf3xgYEDuXXgrfyS+wtrS9by0oSX2Fy+2R5Eg+1me5u1jVD3UAK0jsv/dGqdQ3JSH7UPX2Z8yY+5P3J5wuX2SgdxujjeOO8Nh4S6gtBdTmZE2luW5UZJkm4EPpBl+b+SJO061hMkSXIHFLIsNx34fjLwGLAUmAP834F/fzjwlKXA5wcC9FCgD7BJlmWLJElNkiSNADYCs4FXEfDX+DMtZhrf53wP2BJ9/Zb/m309XbJvMloXLXP/mGt/zn9G/IdXznkFCxZMFhO3Lr+VhcMWopSUzEudh4vChfTadFYUrqCxrRGDyYCHiwcrClYgIzM0eCibyzfb9/fc5uf47qLvuH/o/bi7uItMsF0sThfH8xOep7qlGg8XD4fkQa3mVqftCxoLyKnL4YO9HxCXbavHOClyEhfGXkiIWwgPrnvQvub96r5X8/TopylqLsIsm3FVuHJ9yvUMCR5CsFswX2V9RYIugTGhYxxKq81Onk2bpc0+vUsQBEdW2UpuQy6FjYX4a/1ZU7yGRbsW4eXqxfkxtgBZKSmZmTgTb7U3KoWKocFDmb9sPgazAYAxoWN4eszT5DXkkeybTKh7KGPDxvLgXw/yZeaXAPhp/Fg0aRGJvok8N/45qlqqcFe546sVpWNOV52+DYtVxkvTNelmov3dyaxoOq2EYxvKNtBH1+eEt78g5gJe3PoiMxNnilHps0ioZygXx11MRu2hSaSpAam8vuN1+89W2cpjGx4jxT8Ff60/5c3lBLoF8vrE1/k662uW5CwhtyGXcM9wLom7xL5k0GAy8EneJzw04iFe3/E6WXVZxOniuC/tPrLrsmloayBeF4/BbJtiLiPz/NbnGRM2hpv638SgwEEMCRrSXrcFocudzNVfdWD0+Arg3yf4nCDguwN34FXA57Is/yZJ0mbgK0mSbgAKgcsBZFneK0nSV8A+wAzcdiBjN8AtHCp/9Ssi0RgALkoXbux3I81tzawoXEGMVwxLc5faH58eN51nNz/r8JxnNz/L0AuHEqOLYXvFdmpba1FKShauXWgPwMeEjWFazDT21+8nThfH3N/n2qfhXBJ/CQRjD6YnRk4kzDMMjapr7soLzrQqLRGeztP94nXOI05jwsawpWILEhL/SPgHd6+8237HeFDgIGbEz+CbbNu696U5S+k3vB9v737bvnzgsj6XcVH8RfhofJg/YD5jw8cy+9fZDq/xWfpn3Jx6M7G6dqviCcJZb0PpBm7/83ZMVhO3D7ydRbsWAbZ1f0m+SQDc1P8mfs772T4yFOoeyvX9rrd/mF1bupaBgQN5e/fbvLP7HR4e+TBqhZqchhz769S01rA4czEPjXgIjUrT7nVCODV5NXpCddpOL311kJurigBPNVkVTaSEep/SPrZUbOGKxCtOePtwz3ASfRP5ZN8nzBsw75ReU+idzos6j5LmEr7M/BIXhUu75aZqW2sxmAysql7FfavvwyJbWDBoAT/m/kiQWxDnx5yPTq3jle2v2D9DXpV0Fa5KV37P/50RISOYET8DH40Pd/x5ByarCQmJ/478L9OipzExciLLC5djla2sKV7DmuI1fDrt0y7+TQjC0Z3MLc3HgN+BHFmWN0uSFAtkH+sJsiznyrI84MBXiizLTx5or5FleaIsy30O/Ft72HOelGU5TpblRFmWfz2sfYssy/0OPHa7qCF9SJR3FE+PfZofL/2R2SmzHZKIaFVah7qiAEaLkcKmQv4u+RsvVy8u7XMp7+x6xyEr7NqStaT4pfDPtH/y8N8PO6xl+T7ne0aHjgZgVOgoFgxecPQgujYXsv6AwvVgqO+4gxZOSD//fjw5+km8XG3JaUaFjiLZL5nd1bsZETKCFYUrHKZdba/cTpB7ENKBtATTYqfx4rYXHdbgf5v9Lfvr9wO2KWBtljaHxwEssoVIz8izJ9lYdY7tPC/aCK0iAYpwbLn1uTyy/hF7aZnDE+moJBVW2crtA2+nsa3RYXplqb6UCn0Fwe7B9raDz5WReWrjU07rDgF2V+/GaDZ21uGctfKr9QR5de0N5LgAD3YU1Z/Sc5vamihuKj7ptfEXx13Mx/s+pspQdUqvK/ROwe7B3JN2Dz9c/APfXfwdAwMGopSUDtsk+yWjkBQ8sv4R+7XHaLFdayoMFcTp4nh/7/sO16XPMz5nRMgIMusyuSz+MvoF9GPh2oX26+HBa1lFSwV3DL7D/nlTp9bxf2P/z36jsVO06aFkG2T+BpXpYHW+ngrC4U54RFqW5a+Brw/7ORe4rDM6JZw8jUpDlFcUDQYT50fNpNxQyerilbi7uKNVaR2CZH+tP3qTnu/3f8/Y0LGMDR9rnwZ4OAmJ9Jp0Wz3hI4R5hrH0kqUEugW2W8YFgOIt8OkMaD2QwbvfP2DqU+Ahkk91FY1Kw0XxFzEseBjVLdXsb9jPQ+seAmwjDcsLljs9p7GtEY1KQ4u5BR+1D5WGSqdtqlsPlYUPcQ9Bp9Y5ZAX2cPFgQOCAHjdLobGljexKPc1GM9F+bkT5HeXcPRn5f8Pn/7D9AQYYcj1MfBjcxNTZ3sxospBT1UxVo5EQnZa4AHdUp1m/F2BfzT7+Kv6LMn2ZvU2BArVSjdFixM3Fjcy6TMr15e0GxXmNeYR5hFGuLwdsZQwPMllN7U6/PT/mfLQuXZNZ+mySV60n0KvzS18dLtbfgy35tVw9/OTXh+6q2kWsdywqxclNRQ9yD2Jc+Dge3/A4L5/zcpeNwAvdz0XhQqSXLamX2c3MCxNe4LH1j1HTWkOyXzKPjXqMVnOrQwWYw69JhU2FDo8d1GZtY3zYeMxGf5rN5Q4lVA8+Xt9az6CgQTw/4XkqDZVoVVqHm4gdzqiHDW/AyidsPytd4PKPIen8Yz9POKudTLKxZw8kG3ORJGmFJEnVkiQ518MRuk1lUyv/+WEPM17Joi7/cubHvUWoWyR3DLqDQDdbhbFwz3Dmpc4jxD2Ei2IvwoKFKn0VY0LHOO3PR+NDmaGMGK8Yh3alpCTcPZza1lr2Vu9tN9DC2AS/P3QoiAbY8w2U7ujIQxZOkLfGG5Nswkfjw9VJV6OSVOyq2sWYMOf/92C3YFrMLfhqfInTxTnd/ZWQiPA4ND001COUl895mTB3W5KQILcgXjrnpR43hbS6ycjjP6dz2Zt/M+f9TUx/bS3bC+tOb6eGWvj5nkNBNMDWD6Bs5+ntV+hWRpOFLzcXceGra7nuw81c8Mpf/La3nNOdCNVqbuXNHW+yr2Yf/f3729uX5CzhvyP/y92D72Zm4kx7sr72Rl7SgtLIqs3C3cWdWwbcwp+Ff9of06l1xOniuKn/Tbba0khcFHvRcUsdCacmt0pPcBePSCcEebCtoP6UnrujcodD6aKTMT12Ojn1OXyV+dUpPV/o/VQKFedGnsuXF37Jdxd/xzuT3yHRNxG1Sk2U56EbO7/m/cqCQQvwcvWiQl9hryJykFJSEuIeQoL7WH7L2kmbRcJN5XgD0Eftg1qlZm3JWkqaSwj3CO/cIBqgKuNQEA1gMcHS26C+6OjPEc56J3NbcrIsy/dLknQptizalwMrAbFYoYu0tJnJqdTT0GIi0ldL5BGjabuKGli605bMfF12I+uyIX2AhqvHxXN+zPm4Kl0xmo34afxY8OcCGtoaUEkq7k27lwtjL6SmtYa9NXvRqrTcPvB2/DX+jAwZSbx3PJ+mf0peYx7eam8eGv4Qn6Z/ys95PwO2EgUvnfOSPVM0AK31UL7D+SAay5zbhE7VZm5jWf4yipuLscgWwjzDeO3c13B3dWd//X5K9aVsrdiKWqnmisQrCPcIZ+GwhRQ0FvD85ud5YPgDvL7jdXLqc/By9eK2gbfhr/V3eI3BQYP59PxPqTXW4qPxF5JbPQABAABJREFUccrG2RPsLW3g6y2HytE3tph58ud0Prh+KJ6ao2ewrWhsJbeqGVeVkvhAD7y1h23b2gBV6c5Paq7oyK4LXWx/lZ5Hf9zLwbjZbJX51ze76B/qTZR/+7MY8qr1FNcZ8HV3JT7AA7WL0mmbprYmdlXvosHYwD1D7sFoMZJVl8XQwKGU68t5bcdrWGUr48PGMzt5NtWGai6IuYBf822rnC6IuYBhwcOI8Y4h1iuWFnML32TZ8hkEuwfz9JinidPFcevAW7ko7iIssoVwj3DUqq4dNT1b5NXoGR7TtTNPInzcqNYbqWk24udxcv+vO6p2MDR46Cm9rovShVsH3Mqzm5/FzcWN6XHTT2k/Qu93eEC7p3oPd/55J9f1u47FmYspaCyguqUaTxdPru57NRKSvYxafmM+OrWOB4Y+gJcyknpTCSWsZMmGjdw28DY+3PshVS1VBLsHs3DYQuYtm0e9sR6lpOThkQ8zPW76CWWbP2XN5c5thlpoqQNdzxoYEHqOkwmkD5695wNfyLJcK6b3dJ3GFhNvr8nltZW2JDLnD9Axa7QGjauVaK9oW2DjUsWdF4Kv2h+T1UyTqR6FxUi850DarEZ2Ve8i2TeZR9Y/Yq8NaJbNvLj1RV6Y8AK3pN6Ci9KF7ZXb+Sz9M0r1pUyLmca54ecyLGQYj41+jEC3QLZVbrMH0QD5jfksyV7CfWn3HZry5RYA8ZMh/QfHA/ETyae6Wk59DmX6Mt7Z/Q5mqxmVQsX81PmMCR1DrHcsN/W/iZv738ym8k0sL1zOF+lfsGDwApL9khkVOoqy5jLmpMxBpVChklR8l/0d4R7hTvWh/d388XfzP0ovTo/VKpNXo6e8oZUATzWx/ic/zba80TmD+a7iBhpbTEcNpDPLG7np4y0U1tqWRkxNCea/FyUT4n1gmqy7P0SPg/w1jk/0iT6pvgk9hyzLFNcZsB4x+Kxvs1CjN7YbSK/NrubmT7ZgaLMgSXD/lETmjIrGzdXxT6xOo2NS5CQUCgUmi4m7B99NbWst/lp/Xtn+in164+qS1dS01nBv2r3k1OUwLWYaOfU5rCxayQ1/3MDo0NFcnnA54yPG88Z5b1DXWoe7izut5laKGouI8Io45ZFH4cTIskxhjYGgUy19ZW6FrR9CYykMvhb8TiyTtkIhkRjkyZaCOqaknPgInVW2srd6LzMTZ55af7FN8b4n7R5e2fYKywqWMaPPDBJ9EvHX+uOi7MQAR+g2reZW8hryaDA24K32prmtGV+NL02mJpQoeX7b81S2VPLS1peYFjONm1NvJqcuh7d2vUVtay1erl7cMuAWhgQNYXL0ZFpMLRQ2FbKm5FP2VO9hYMBApsZM5a2dbzE9bjqToibhrfbmht9vsC8Xs8gWHt/wOKn+qZ1bsk8XBQql47pon2jw7OSRcKFXO5lA+kfp/9k7y/CorrUN33t8kszE3YUkWHCnQLEWqZe6u3t7enq+nvZUTvXU3Z26UKEtFCjFHQIkQNxdxpLR/f1YySRDQklaoLSd+7pywaxZW2ays/d613rf55GkfKANuEaSpEig58jUz++i1eagsMGKLMukRQQRGqgBYHe1yRtEnzHOiDnwM65ZvgSAJEMS/zf+bu7acAOJhkSmJEzhrby3cMku9Co9k7JeYFnZMj4v+Jwrcq7wBtGdODwOttdvJ78pH5vTxua6zd73FhcvJicyh4KWArRKLXFBcbyy45Ue572+ej3trvauOjy1Do69C1pKoXobKDUw/W6IHX7ovzQ/v0qrvZVXdnSpbrs8Ll7Z8QqDwwdz84qbaXe3c0XOFby+83UAbhx5I5/t/YwycxkgVNkjdBF8tPcjFJKCs7LO8qm5P9zIssyS3TXc8OE27C4PaqXEw6fmcNLwuH4F00lhPWtHp2VGEhbYtapTa2qntNGKXq0iJSKAN1YVe4NogO931TAvJ5YThnVc51oDHP8QfHapSAtT62HW/RAzdP9D+fkTUN3SxpayFgrqLGhVCuyurrq9sEANMcE964xrTe3c+sk2bA4x+JJleOT7PUxIi2B4UohPX7VCzfz0+fzfqv/jrOyzuHPVnbTaW5GQWJC1gAB1gNcNYWfjTlrtrXyy7xNSjan8UPqDdz+rq1YzLXEaP5f9zLt575Idns3C/IV4ZA8GtYFnpj/D6JjRh+Eb8tNJk1WIvBm0v8X6SoaVj4GzDUJTYcm/Yf7TEBTVp60HRBtYX9TYr0C6zFSGXqUnWPvb1L47iQ+K556J9/BLxS+8suMVqixVtNpbiQiIYErCFC4fevnhT8H1c0SwOCy8vettXt7xMjIyIdoQ/jn2n7ye+zqrq1dz4eAL2dmwExDjyK8KvyI6MJo3d73p3ce8tHm8lvtaD62d64Zfx86GnWyr38ao6FG4ZTcf5H/A9KTpmB1mmu2+ZVcuj4uG9gYyOIyBdGQWnPoafH0j2E0QnCBe9/Hv0s/fk/6Ijd0pSdIjgKnD19kKnHT4Tu3vR3mTlX9+nsuqgkYSQvVcOimV1MhAUsMDqTW1c9qYEFJi2ogIree/G5d4tyszl/Hp3k9IMiQxK3kWXxV+xaVDL0VGxul28tD6hzh/8Pl8XvA5HtnTQ3wsQBWAR/aQGZrJe3k9M/Wb25rJicjxpvOOiRnDZ/s+8+kzI2lGTzGbqGw4/0toKQNNAISlidk+P0eUdne7jyowiIee2Wmm3S3mwjrFQTJDM8lvzPcG0QA/lf3EVcOuQqVQMTh8MCHaEFQKFfVt9Uckhbus0cYtH2/3BjVOt8ydn+9gaHwwmTGGPu9nSFwwdx6fzf+W7MHplsmKDuKaY9PRqUUwnl9t4vJ3N1HeETjff9Jg1hY19djP7qpWThgW19UQMwQu+hZay0VgHZoGit8vSuXn12lzuChqsGKzu0kODyDqd9aqbitvZunuWt5bX0aAWsnNMzN5YUUBpnYXEUEanj17BHEhPQPpJquDWlNPRewaUxsQ4tNmd9l5d/e7DI0cysd7PvaK8MjIfLznY64fcT0mu4npSdNRSAoiAyLJDs1mW/22Hvsvbi3mg7wPmJ8+38fD3ew0c/fqu3lv7nuE68N/13fi58CUNFqJC9H9NuGt8g3QXALjrwWlChwW2PQ6TPtnnzbPjjHw8ab+1W3ubNx5yLIUtEotM5NnMjN5JiBWu2uttaypWsOCrxfw5LQn/RM5fzKqLFVUWaoI1gaTEpyCWqEmvymfl3a85O3TYm/h1dxXyQzNBIRw4piYMcQHxROiDUEpKdGpdITpwmhqF89Og8bQq2Btp7I3iKzGmMAYqixVRAdEo1KoMKgNPo4iOqWOmIDDPEGjVMOQUyFupEjnNsaBwS+O6+fX6e9UajwwS5Kk7iOWdw7h+fytWZZfz6qCRpLDAzhtZAIPf5+P3eUhSKvitUsTKS59is0V9UyVpvbYdlfjLoZHDkev0jMvdR6v73wdp8eJQW3g6uFXMyBkACdnnMyXBV9yzfBreHXHq5gcJowaI1fkXMGbO98kIySDUdGjWFO1xmff8YZ4EoMSqbBU4PQ4iQ+K594J97K2ai0/lAofwHlp83r/UAGh4sfPH0K1pRqXx9Vj8kSv0ntVfwEqzBU8PvVxnG6n16O2OzXWGualzsMtu3lx+4vIyCQaEnlq2lNkhmUe1s9Qb7FjdfiqFzvdMnXm9n4F0ga9mksmpTAozsCWshbKmmyc//oGHluQw7SsSJ75aZ83iAZ4a00pxwyI4P31ZT77GZYY0nPngRHix88Roclq5/nlhbyxuhhZhqQwPS+fP5qBscbftL9Wm4P/+2In07KjaLE5acHJ66uKOXNMEhqVgmMGhDM+rfffb2SQloExQUzMVhEUaAF3AF9vdhAf2jMDwuQwsal2E6dnns43Rd/0eD9YE8zI6JG8vONlPLKHj/d8zB1j7kCSJJ/JLYBkYzLLy5fT7uqZGFZhqaDZ3uwPpA8jxQ223yg0JsPW9yFjlgiiAVImw8rHwVwFhrhf3xzIiAyipMFGq81JcEDfUqpz63NJMiT9hvM9OApJQWxQLKdlnkZ2eDY3r7iZ9+e+71V79nN0s7V2Kzcuv5Fme7NXN+f0zNOpsfWsGS5oKWB60nQANtVs4unpT/PQ+oeotlYjIXFm1pncN/E+7l59N832ZswOM7GBsT4uBRISWqUWCYl5afMYHzueoRFDGR0zmhZ7CzqVjqenP83NK26m1d6KQW3gwckPHrnrKSwFSDkyx/Lzp6fPgbQkSfcA04BBwHfAHGAV/kD6kPHLPuHReOboRBosdi6fkoYsw9byJr4t/ZJ9LfkoJWWvs3LDIoexp3kPxyYey/82/89ba2d2mnk993UmHjeRu8bdRX5jPiaHiUenPEqbqw2Px8MD6x+g2d5MY00jD05+kEpzJaXmUpSSknOyz8HusnPZksvwyB4SDAmclXUWj296nFFRo3hvznukhaRh0PQ9oPFz5NjZsJOHNjzEDSNu4Pltz2NxWghSB/Gfif/hrZ1vccGgC8gMzWRV5Spu+/k20kPSGR41nApLhc9+YgNjUSlUPitf5eZyXtz+Ig8d89BhtbmKMmgxaFWY7V1e1Rqlol/+rXWmdsqb21BI8PDifHZXd8103/zRdj67egJrinxnzQvrLdw5J4udlSa2V7QgSXDxxBQyo4PYXNpMsF5NakQgSoVfK+JIs6OilddXFXtflzW18dTSvTx91nB06p6PNY9HpqRR2J7JMrg9MolheiIN4hpqtjnZWWVibGoY4YEaGq0O6i12Xv2lCKVCYn5O7AHPJcKg5V+nBfCvNbfRVNuEWqHmhtm3kxKu6dE3RBvC5LjJBGuCyQzJZG/LXp/3w/XhPLC+SzW2vq2e13Nf586xd7KvZR+7G3d7xXsGhA7gpIyTyAjJID4onkpLpXe7FGMKYVq//drhpLjBQqThN4i41eeDwyQytjpRaSF+pPCuHX3JQXehUirIijGwtqiR44f0bZVuZ+NOZifP7v/59pPB4YOZkzqHu1bdxbtz3vVbZR3lNLU18X+r/8+bSu2SXTyy8RFyInOIC+w5qZMdlk1jWyOXDrmUBEMC7+e97w2SZWQ+3PMh6SHpXDb0MkBMHt4w4gYe3/Q4je2NaJVarsy5ku+Kv+PqYVezvHy5d1JxdvJstEot3xR9w1nZZ/H2cW9jcVoI14eTYEjA5fZQ1Gimtc1FQqj+iHu4+/HTG/1ZkT4dGAZslWX5YkmSooHXDs9p/T2ZmhnJqoIGksMDeHNNCfVmO1qVggdPy+DtkrWAEF0oNZUyO3k2P5b+CEBWaBanDjiNW1bcjMlh6uHH19jeKOqXVXqcHic3Lb+JW0ffitlhpsRUwtiYsd76u8/2fsaDkx+kzFzmVUe8feXt3n1VmCv4peIXxsWMY33NetZWr2VY1LAj8fX4+Q3U2Gqob6vntdzXOCPrDJSSkqiAKKICorhq2FV8W/wtkfpIvi/5HoDClkLmpMzxGeSflH4Sre2tqFU9Vz7WV6+n1d56WAPppPBAnj57ODcs3IbF7kKvVvLYghzSIoP6tH1uRQtXvbeFypY21EqJCyemoFOr2NJhfdXmdNPS5mRSegTf5vqqyislibcuGUNpoxWtUonN6eLsV9dTa7KjUSq4e/5ATh+dgL6X4M3P4aOk0dajbU1BIy02JzHBvr8Lh8vN19urWbS9ktSIIN5bV4rLI5McHsCL545kUFwwoYFqchKMfLqlghtnDODpn/ZhanOhVSl46NShpP/KtdZga+DBDf/2pjI6PU7+t+W/jInNYbBusO+5eByckH4Ce5v3cunQS3ls02M0tDWgklScO+hcam091d7zm/NpsjcxJmYMU+KnoFKoyArL4vafb6exvRGdUscNI2/gi31fsK9lH2G6MO6bdB9hen8gfTgprLf+6nVxQPb8APGjQNqv/CNuBGx5B0Zd1PO9XhgUa2TVvvo+BdJuj5u9TXu5fOjl/T/f38CMpBmsq17HktIlzE45/MG7n99Ok72pR7YLiCy0SfGTuHnUzTyz5RncsptkQzK3jrqVZnszBc0F1Nnq2Fq7tce2nb7S7+a9i91tJ1gTzH2T7sPmstFga6DcVM7pA06nyFREXlOX68WPpT9y9bCrUUpKFuYvZGLcRKYlTgPA5nDxyaZyHvw2H4fbQ2ywjpfOG9V7hpgfP0eQ/oz+2mRZ9kiS5JIkyQjUAX4J5kPItKwoLHYXj3y/h3qzqB+xuzy8uKyCyePGU2IqAeDb4m8ZHT2aZ6c/S6g2lCRjEqG6UD6Y8xFllmIkJGS6JGfDdGGE6cSgKjIgEqVCyTNbn+GucXfxwvYXGB09mquHXY0si3TdG5ffSGN7IxISlw69tMd5bq/fzhlZZ7C+Zj0ryldwyZBL0Ch7rr70wGGDpqKOk0oBzW8YhPjpM03tTd4a5sb2Rt7Y+QYLMhdQ2FLIg+sfBGB87HiC9vs9vLD9BS4cdCFnZ59NSnAKg8MH0+poZXt9T2/k0TGjf7d4TV+Ynh3NtzdMptbUTkSQltSIwD6tdLS2Obn7q11UtoiUbadb5rVfirltdpY3kNapxer2DTMy2FXV6g3SLhifzLDEEEKlNkKVZdhRcscqq7ce1uH2cPdXuxiaEMJw/8P8iJLci3Dc+LQwgvU970MFdRZu/3Q7N8/K5H8/dq0AlzbauP/b3bx2wRiC9RruP2kIl72zmeeWFXDW6CQyY4IYGhfMgGgDil/JOmhsb+yRwQFQbSphsL0djAlgiKbCXMHDGx7m54qfATg28ViuG34d1dZqBocP5pmtzzAndU6P/WSGZvJjyY8MDh/M0IihBKgDuGH5Dd66w3Z3O49vepxXZ72KSqEiNjCW2KADr6D7OTSUNFiZlN7Pcg63A8rWwITre75niAGVTqxYRw066K6GxAfz8s+FfTtXUwnB2mAC1b1btx1qFJKCE9NP5IXtLzAreZZ/VfooJlQbSkJQQo97WHRANIHqQM4feD7HxB+D1WmlzdXGP1f9k4a2BvQqPXeNu4uhEUN9BGpBLPhEB0YzPHI462vW0+po5Y3cN4gNivVO2h+XfJxPEN1JpaWScH04tbZa9jXv8wbSe2rM3LNot7dfdWs7d36+g4WXjyckoA/jz/5gbRRCuZogCE/3a/v4+VX6o4izSZKkEOBVYDOwBdhwOE7q70piWACTMyIpa/JdbSmstzE9/iQGhHTZY4Trw8kOy2ZY1DBCdaIGWa/W8NbOt7hs6GWoFGKOJEAVwD/G/MM7sArXxnHN4P/DI3v4fN/nnJt9LlvqtvDi9hdZuGchGqXGO0CTkdGreorrDAofRGGLeIBPip/UtyC6tQK+uQlemiR+vrreb3J/GMlrzOOixRext3kvCzIXAOJaCNGGsKx8mbffuup11NpqCdV21bF7ZA8t7S2Um8tJMaagV+uJCYxhTPQYH+uUuMA4rh1+7WFdje5OcnggY1PDSYsM6vPArNnqYFt5S492u0vUXGtVCv63YBip4YFkxRj5+MoJfHLVBL65fjJ3zs0m3F4OH50Hr0xB++ox3BPwGecP9Q3iKpp7ro76ObzkJARzwYRk7+v4EB03z8pEr+k54KlsacMj46PA3cm6oiaabUKIb1hiKF9dO4mXzhvFKSPjOSEnjqxY468G0SAmKqMDegrSRDeUwKvT4bXpULWNJaVLvEE0wPLy5ZSby3ln9ztYnBaKWovYUL2BBZkLkJC8+z4l4xTym/IZGjGUUTGjAHz0DUD8zVqdVkZGj/QH0UcAWZYpa7IR01/rq+ptEBQD+gNMPkYPgtK1fdpVcngALW3OPt1/djfuJsWY0vfzPATkRORgd9nZUOMfJh7NhOvDeWDyAxg1Ql9CKSm5ddStDAgV4021Us2A0AHEG+K5Z809NLQ1ANDmauPeNfdywaALiAroUrU+Ie0EdtTvoNZay/Gpx3vvjRmhGV5HAoDC1kIGhfecMIoLjPNm96SFdK3VVTT3dArJqzbTaHH0aP9d1O6Ct0+AV48VY9V1L4DdfPDt/Pxt6Y9q9zUd/31JkqTvAaMsyzv6sq0kSUpgE1Apy/J8SZLuBS4H6ju63CXL8ncdff8JXAq4gRtkWf6ho30U8BagR9Ro3yjL8n5On39+ooxaYoy6Hp63RmU8r85+lVJTKWqFmpTgFJ+65PImG1Vt1Wyo3UBdWx2XDRU1zW6PG6fH6e0XqNHQVJvFOQlPIqnMjImJJy4ojlZHKw63g/ymfIwao9cia1fjLuakzmFx8WIAIvQRzEyeyWMbHyM7LJsT0k7o2wfbtwR2fNT12mmFqq3CSzM0tUt0xc9vps3ZRoWlAqWk5KH1D1FsKubV3Fc5bcBpPHrMo4ToQvgw/8Me262rWse8tHlexfZUYyqjY0aTZEjy8YUO04dxy6hbOGXAKbQ520gyJvk8QI9GgvVqMqOD2Ftr8WkflRTKB5ePI9qoIzU80BssRRl1XerPHg+UrYeksRA7FHZ8TNj2lzln2gje32n0+gzHGHW02BxUtbQRqFWRFBbgX4E5zIQHabnz+GwWjErE5nCRHBFAjLHnpB/gFYTSqnrOGw9LCCG4m4d4XIjeR5m7uqWNRquDKIP2gKrgkQGRPDj5QW5cfiNWpxWFpODmzHPIcMkw5TYwVePa9Do/qZp7bLuvZR9JhiTMDjOXDrmUN3e+idlp5rrh15FsTCYyIJIWewtPTnvS658aqgslXBfeQwk3MuDwK+j7ETRYHKiUEkH9tb4qWQ1RAw/8fmQ27PoCxvTMBNsfhSSRkxDML/saOHvsr4sw7W7cTYIhoX/n+juRJImpCVP5eM/HjIsdd0SP7ad/jIoexUfzP6LSUkmoLpRUY2oPX/AGW4OPYBiIlef8pnzmpMwhLWgEgWo9Br3ErsadfFP0DVWWKk4dcCrB2mCOiT8Gk8PEklLhOFPQUsDc1LnkNeZRai4FYGLcROrb6nF6nJyQdgI5ETneY/VWD50SEUBoH8X2+oTDBkv/A3W7xOuE0cIGq2obJI4VWgZ+/OxHv54CkiTlIKTsVB2vM2RZ/rwPm94I5AHdJVWflGX58f32Pwg4CxgMxAFLJUnKlGXZDbwIXAGsQwTSxwOL+3P+Rwtuj0xZoxWHWyYhTE+gpuvXEG3U8fiCYVzx7iZsDjeSBHccl0VmtIFAraqHCqvT7eGHXTXc9UUuZ4wzEKINocRUwkvbuywL3jruLe//lQqJE0ckcMU7NczKMVJs2cljmx7zvh+mC+OyoZfx/LbnsbvtrChfwT/G/IMh4UMwO8xMip+EAgVvHv8mqcbUvtfh7en2q5p6B5Ssgo/PF/7SU+6AMZf51b1/BxXmCp7Y9ARLypZwZc6VbK3vqlv6bN9nfLbvMx6f8jhjYsb4rEgDDI0YSqg2VKT3d1impQWnMSRySI/jBKgDGBw+uEf70Uabw015sw2VQuLx03M47/UNmNqFWNnVU9MYmRyCsZc0YB8qNgqv1+Zi0IfCpBth89tEtuQSHjSdBoudm2YMIEir5LzX1rOzykSARsnd8wZx8og49Br/5NDhJECrYmjCwcsKBkQHcff8gawrbOTk4fF8uU2IcoUEqLnnhEEY9D0HYrIss2JPPbd9sp1Gq4O4YB0vnDuSkAANdpebhJAAAnVdv99xseP4eP7HVFmqCHW5SK3bi2bpf6C9BcLSUE2+hfGexh7lESnGFPQqPbkNucQGxvLEtCewu+1khWWRYkzpdUImJjCGByY/wM3LhQe8QlJwy6hbyAg5jP6qfnwoabQS14un+K8ie6BiA4y98sB9jHFi9ctSI1auD8LguGCW59f1KZDuTJE9koyLHcedv9yJxWHpUULk5+giwZDQY7LF2u6iosWGVqUkRBfiY2vViUqpwuhJZ19FEI2aRSQaY3hlxyve9z/I/wAQ44wrc64ktz7Xqwa+o34H5w06j8a2RqL0MQQxgHJTDS9PP5Gc6Eyfa2ZgjIHrp2fw7LICQPi3P3JaDmFBhzC4tTVC4VLx/zGXgblajAFWPg6jL4VjbgWjP+PHjy/9Ue1+A8gBdgGdOXIy8KuBtCRJCcA84EHgloMc5iTgQ1mW7UCxJEkFwFhJkkoQK+BrO/b5DnAyf8JAutXm5P31pTz90z7sLg/TsyP59/zBpER01S5Nygjn6+smU93SRnCAmgHRBnTqnimLjRY7hfUW1hY24vHA5xut3HTCP3k6924cHgcSEjePupnBEb6BT2a0gU+umsDH+96myd7uY43U1N7EB3kf8Prs17G6rIRqQ1FJKurb6wnVhqJWqEXNdW8BtMsOzaXCQzckxXeVOXki7PtBzLg3l0Bph8WW2wHLH4C44TBg1u/8dv++fFv0LUvKxExvlaWKZGMypaZSnz4huhAGhg9kcfFidjSIZJKMkAymJExBq9RidVqRkYkMiCQ28M/zsGhzuKlotqFRKkgMC6CyxcaXG4tIVDTgQoFZF89nV0+k1tROsF5NelQQAfsFuRXNNqx2N7HBOox6NVjq4IsrxLUKwlNy2f0w5Q6Mwak8OWQYIXoN8SE6rl+4jZ1VIoPD5nDzzy9yyYwxMCrZPzF0JLG73JQ3taFUSCSG6lEpxQq0Tq3ivHHJTEiLwNLu5KwxCR1iY4Ek9lJrDVBUb+Wq9zZjd3mIDNJy2TGpLNtTz8s/F2J3eZiSGcEjJ2YRK9eK+rnQVJKMScKepfgX+PZWETiB0IVY8zTzznyTpRUrKGwVZTFDwocwPnY8tbZaGtoaWFW5Cq1Sy6u5r/LJCZ/8albDpLhJfHLCJ1RZqwjThZFqTEXrXy05YhQ3WPuvGNy4D9QBEPArk8+SAiIGQOVWyOpZL78/OQnBvL++FJfb473e98cje9jTvIcLBl/Qv/M9BARpghgYNpDl5cs5Ib2P2Wt+jgqK6i3cu2gXK/c1oFUp+Nfcgfxnwn3ctvJW7G47EhJXD7uGybFTsVrDyNct5b1Ni7h48MUEqgOxOq3efUlIhOsi0LjjeXbaG7Q4K9Gr9YRqQylsLiNQisVkCeTxFY0U1jsZEG3moys00G2u26BXc820dGYPjqHV5iAxNIDkiD7U/Dts0FoGCg2Epojx6YHQGiFmODQXCb2C/G873pBh46tCJHD42b/l6/TzF6Y/SybjZVk+uAJGT54C7gD290e6TpKkCxAp37fKstyM8Kle161PRUebs+P/+7f/6dha3syjP+zxvl6WX09aRCl3zR3oTS/dXW3i9k92sLvaRHighv+eMpQZA6N8HpSbSpq49ZPtlDbaiA3WcfOsAawtqqLN3chlQy/DJbuIDohmbMzYXmtYA3UellX8iMlh4tIhl/LS9pdwyS4UkoLLci5jUPggb2qPLMvUV9Vz3bLrqLPVkWpM5YHJD5AT2ZV2Q0sZrHgYti8EhUqs3o27EgI70g0Hzoedn0HMUChc1uN8qN7uD6R/I1anlR9KfvC+/rH0R24aeRPPbH3GO0Fybva5ZIdlE6wN5sljn2RL7RZKTCXUWmt5ftvz3DPhHhrbG7lv7X0025sZFDaI/0z6D9lh2Qc67FFBaaOVhxfns3hnDTq1eNgPCWzloqZnMOz9DBRq6odfS63pAiYP6KmNaHe6Wbyzhn8v2ompzcWopFD+e+pQsuSariC6E48b1Ho0qROZHCKu67JGK6sKGno9L38gfeSobLbx1NJ9fLalApVCwRVTUrl4UirhHasVWrWSQXF995iuaLFhd3kYEBXEScPjcbhlnvlpn/f9qVHthC67DfI+BYUaJt8CY6+AwHCwNXUF0Z007EPvgfMGnUetrRaFpCBKH8X3Jd+zqHARAGdknkGlpRK7206VpYrU4NQDnp8kSaQEp5ASnNL3L8nPIaO43kqUsZ8TFxWbISLz4P3C0qFyc58C6dAADVEGLdvKWxid0nuAXmmuRKfSeWtgjzQjokfwfcn3/kD6T4TT7eH1VcWs3CeebXaXh38v2sWHV4zj7ePeZWfjTlrsTSwrW0ZBcwlXDbuGZfnCReabom9EVuPW53HJLiQkbh11G8tzJZ5YshIJuHBiMldMScclNfJN8SKWlH6PWqHmlPEXklY8nCU7zdSa2gkL9M0a02tUDI3vh7hpYxEsvQfyFoFaD9PugpEXgD6k9/76YJjzMPzyP5E9sj97FvsDaT896E8gvVaSpEGyLO8+eFeBJEnzgTpZljdLkjSt21svAvcjVrTvB/4HXAL0NgUv/0p7b8e8ApECTlLSETJvBxrMdlrbnEQEaQj+FQXB7b0IH32zo5qrp6UTHqSlxebgtk92kFctVrgarQ6u+WAL31w/mYGx4kFYVG/h6ve2UG8R6sHVre088eNeHjxbz90bHvTZ92kDTuPirFtRKpQkhAbgcDuotlajltRcMvgSik3FVFuruX/S/SgVSsJ14QyPGu5TH1NiKuHG5TfS7hZ128WmYm5ZcQsfzH6dqOAOwZ9dX8C298X/3Q6RDhM9FAafJNrCM+DcT8XMoK1RpMx0J+zvIQB/OK5PnVLH8Kjh7GsRA32FpKDcXM4zxz6DWqFGo9SQGpxKkCaINlcblZZKttdvZ3HxYm+d5c6Gndyz9h6vddrupt3cs/oeXp39KkbtHzMAOxgej8wHG8pYvLOGhFAdVwxVk61rIq1mCYY9n4pObgeRm5/EHTWY3kwG8qpN3PTRNu/rzWXNPPDNbp6fH4FRHypWoruTMAZCEr0vDTo16ZGBFNZbfbpFBmlptTkobbSh0yjJjP5z+Kz/UffP38u3udV8slnMtTrcHp5bXsiguGDmDu1fZkW71YSzuYJBgXrunj8Qo07NvV/v4szRXb/zaKOWeaxCt/sT0eB2wM8Pizr67PlCfXl/wtNZ3riN/2581Kf53+P/zczEmTg8Dr4u+pqcyBxCtaGE6kIpM5UhyzIyMrGBsf4VZ46e67OowdL/v+nKTZA06eD9wtLFgF329MkGa0h8MCv21B8wkM5ryiPFkNK/cz2EDIscxgd5H9DmautVvPSvwtFybR4Kmq0OFu/sEjQM1Cg5cZQBs6uKupZKHlh/n/e93U27STakMCV+CptrNzMhdgIpxhSen/E8dpedmKAYymqCWN9eznWzg9lS5OH1VSWMSAqlxP0lP5aKxFKHx8FHBa9y54hHGRabia4XTYsD4rIL8VqVBkI6vnuPBza/KYJoAGcbLLlbCPplzDzwvhLHwtzHYN3LUL5fMJ04pu/n5OdvQ39Uu99GBNN7JEnaIUlSriRJBxMbmwSc2JGa/SEwXZKk92RZrpVl2S3LsgehAj62o38FkNht+wSgqqM9oZf2Hsiy/Iosy6NlWR4dGXn4xVdkWWZ1QQMnv7CaGU/8zDmvrSe3ouWA/VN6SUXJSQj2ipbUtLZ7g+hO3B6ZkkYxUN9S2sz3u2q8QXQnTrdMbXtJj30vKV3Cx1t3c/xTv/DT3jzuX3s/1/90Pd+Xfs9jmx7j/bz3SQhKIEgTxNeFX/Oftf9hR73vr7XSUukNojuptdVSs/c7McvusEHuJz0/bOFPvq8N0SIQmXanqDntJO1YcfP6G3A4rk+lQslZWWcRpY8iVBvK9SOuZ2XFSi5fcjkPbXgISZII0gRR0lrCHT/fwQWLL2BFxQruHHsnt4++ncuHXo7FaenhP767aXevvrZHCy1tDr7eVsX8AQF8MnwbF2w7izH5jxNc8GWPvqE1vSvh9uZH/EtBAwv3yBRPfMjX9mLKHRCT49M3NFDDgycPQafuupWePioBo17FjR9u48TnV7PgpbW8vaaEFqvv3+zRyJG+fx4K2pxuvtrW83Hw8966fu3HUrELxcfnYXhtApEfzOQ07SY8LgdtDjfB3eqoJyZqiSld1HMHRSvFv1EDYdJNXe0KFa4Tn+fbblkjnfxS+QvPb3+ehzY8xIioEYRrw7lh5A28tP0lPt/3OWd+eyYnfXUS9669lwqzmChod7VTaiqlzta/z/dX4Gi5PosbrF4Ruz7hsIqyp7CUg/fVB4MmoGdGzAEYGh/M8j0HvhbymvKIN/xxCXyB6kBSjClsqP5rq3cfLdfmocDc7mRAlKhPjjJouO1kiU3Oe3li5z9YW72yR/8VlT9yTMI0HjnmEcL14dy16i6u/elaSkwleGQPCn0xq23/4Y3Sq1DHvc/t80Mpamzg+5Ke1Zl7Wrbz/oYyzn9jA6sLGjiopnBzCSy6Hp4fDS9OhPUvQ7sJ2hpFFuT+VGzu2bY/IUkw8nwI6XKGIHIgZB48S8TP34/+BNJvAOcjRL5OAOZ3/HtAZFn+pyzLCbIspyBExJbJsnyeJEndlwlOAXZ2/H8RcJYkSVpJklKBAcAGWZarAbMkSeMlUTh2AfBVP879sFHcYOWytzd5pfl3VZm49oMtNJh7HzSPTg5lXGrXzHGwXs110zPQdtRAG/Qqn3QWjVLBicPiiAzSUNZo5er3N2NzuNHsVw/l9HiIM/RUUE4NTmVSVgDzh4expu5Hviz8kvnp83lq81Po1XquyLmChXsWcv2y67G5bJyWeRo3Lr+RclOXNVV3a6ROdEodwbYm+Pg8cdOKH93zw8YM7f1LixsBly+Dcz6BC7+B016D4COrKPpXIzMsk3fnvsvjUx/nua3PeT0h7W47qypXUdJawis7XmFFxQpSjCksGLCARzY+wmObHmNnw85eLXPCdGFolUfvKligVsWQuGCuymgidu19YrDaUipqDPdDEdN7VUp4YM/skYRQPQX1Vi5ZG8niSZ9QN/8tuOwnUa6g7SmYMz49gm+un8xrF47mk6sm8M85Wby+qoQVe4UpQWubk3sW7WJLWcvv+rx+ekerVDCsFx/vQbF9TwG02yxolt2DprTDnsraQMh3VzArrA61UkGtye5N1S9odmMOz+m5k041Zp1RqHVfuhTOWghX/oIqcSzDIof12CQ2MJY6Wx2N7Y08veVpogOjuW/tfeRE5vD6ztexOq14ZA/fFH3DZ/s+o6S1hH+s/Afzv5jPGV+fwQ8lP+BwH2L7Fz+/iizLlDe19c/6qnaXyGTZTwn5gISmQs3Og/cDsqINlDRYabb2fh3sathFsjG51/eOFIMjBrOysmcA5ufoo83h5r/f5XH8kBgMWhXnTNbz3K67qLHW0NTW1Ks7wIDgQQQpw2hsb+TNXW9id9u5fuT1rKhYwVnfnsUjm+/jrKyzSDAksLF2NbvbPiXWEEBKUFaPfYWo42m2OahobuOytzdR3GDt0ceLLMPmt4QjjCwLob7Fd4jSCI2hx8Q30Pfsx6hsuPg7OO9zOP8L8RPhF3T005P+BNJlsiwvkmW5WJbl0s6f33jcR7utaB8L3Awgy/Iu4GNgN/A9cG2HYjfA1cBrQAFQyFEiNFbWaKPN6fZta2qjsqWn5x1AfGgAz58zkvcvG8drF4zmq2snkZMQ0vV+SAD/PWUICgmMOhX/nJvNnhoTp7+0jusWbuWqqeks3V3D5VN8bwZ3HJdFijGR4ZHDvW16lZ6T0k/i6uXnEZW4hnV1oobF7rYjI3Ny+sk8veVp78rG5trNLC9bzvCo4d5ADCA9JJ1rhl3jfS0h8a+s80ja+iGYqqC1VNh1BHZZJRE5ENKnH/iLC0uDzNmQeozvdn5+M3FBcTg9Tmwusco6L3UeY2LG8FruaywqXMT3Jd8DcEL6CTy15SmvH+Ta6rV8vOdjrhp2lXdfSknJVcOuwiW7jvwH6SNalZIbZw4gtmVLV2PtTjGpE9Clbu+JGoQndVqv+xgUb+Tk4XHe12qlxEUTU/h2RzXFTXauXtLOBavCsUUN7zWI7iQjysDMgdGMSQmj2epkye6eK/lFvzYg8PObUSgkzh+fTERQ16RIZnQQUzL7fl9xtlahKVri2yjLmCvzefDkIXy/q4bE0ABunjmAc8anwfirfK4xoodA2tSu11qDSAPMnitSCRVK5qbOJVLfNQhNMCRg0BhotovyARmZKksVBo2BWmvP66eguYAXtr3gVd1vbG/ktp9vI68xr8+f08/vp95sR6NS9BAs/FWqt4nguK+EJott+oBKqWBgrJHVhT21GgD2NO8hyfDHphoPDh/M6srVf+g5+OkbdeZ2fsqv58mle7lgYgox4RYcHjFJY3PZGBI+hPTgdG//UG0oc1NO54f8YnY2iMmfY+KPYVnZMrbUiWdzra2Wp7c8zUnpotRvdfUyDEEORgSfTLC2a8IzM2Qg7eZU2p0iO67N6aasl6wxL7ZG2PFxz/bKzaDWCYcYXbcJ1YRxkNQPK7bgBMiYIcayfrVuPwegPzXS+ZIkfQB8DXiXW/tof4UsyyuAFR3/P/9X+j2IUPjev30T0NOP5w8mNLDnDLNOrcCgO/BXG2HQEmE48ErfjIHRfHP9ZJqsDq5buJUWm/CB3lHRSp3JzsOnDqHR6uTV80dRa24nJTyQEUmhNDmqxQp0/CRCtCEoJSVN7U0cl3IcOxu2k2xMpsxchkYhBpxOjxO37DsJsK1+G1fmXEmINqTr86h0XDD4AiaGD6WufifxQXFklGxEstQK+ypdCERmiRWY+nwhvhM9SFh59AVnu1BJ1gb9uqKpn4PS+XsLUAUQFxTHq7mvEqgOJFwfTrIxmYKWAhxuB/J+EgNrqtYwPXE614+4HrvbTnxgPGur1/4hlin9YXB8MI6qTNjarXHFQ7hmPUCpw0CrQ8FqcxSDGg0cG+GhqMGKhER6R9paeKCWe08czFljk2ixOQjWSFRVFHPZiCDe2mHF1OZiSHxwjwyQA2KqJFbhZkxKqFeopZP9hVP8HDoGxhr5/OqJ7K2zoFZIZEYbCA1UU9FsI0irIuRXdCsAJI1BpPO1lPm0N2Pk34t28cK5I9lc2gySxML1pcy4cAyGS5dCba64B8YO7zHQarE5sNhdhAdq0WuU7G3eyxlZZxCqC0Wv1FNjreGF7S/4bBOiC8bmsvncfzuZHD+ZhzY81KO9xFTCsKieq91+Dg/FDVbi+rMaDR1imsf1vX9oaodl5IEkYnwZFGfk5z31zM/xfebW2+pxup2E6f7Y52qiIRGL00KVpYq4oD6OC/z8IQRqVCSE6qlobuP55QXcdmLXWHV09Gi+KPiCY+KP4ZyB5+CRPVgcFvbUmLBaA4kJEfoQ2WHZvLzjZZ/9umU3To8YyyYZkli6q4Xvtlu5ZNqjaPT1qBQq4gJSufmDYp/tehtje1EHikwgU6Vve1gaWBvEIs3lP0P9blDpIXqwKDH8vXjcYKoWGSaHYn9+/tT0Z0VajwigZyNSujvTu//WZEQZuHK/1eF7TxhMSngfZPkPgFqpYFBcMHaXxxtEd6KQwNTu4vnlBVz53mZW7m0gNECDqc1JXEA8o6NH8+L2F4nQR/Bj6Y88v+159jbvZXrSdI5NPJYgdRD7mvcxKW4SKkXPYD9cF056SHoPxdhAdSDDNGHMyvuJQQsvQLN3Mcy8F+Y+IYTEAMJShdLogJl9D6Lr98IXV8Izw+D12VC4XIhE+PlNpIWkcUXOFQwKH8Tm2s2kBYvXH+R9wGVDL0OtUKNW9HwwRQdEk9+Uz7Nbn+XD/A8xO83MSp511NtgVbW0kaseijOiW+q2QkmhKoMl7lEsWBrA/9aaWbGnjtdXFXPSc6s55cXVPLdsH1XNYqY7JEDD+LRwZsTaGbPvf5y2+kRuKbqURdPqmZpq4KKJKQe0lvFibYBVT8Hz4wh8bRKvDFjPOUO7VrBHJYf0T23UT79JCg9k5sBopmZFYXW4uemj7Ux5dDmnvbjmoLV2geGx2GY9KhwHOnAMmEe5NoMLJiTTbHXw3PICnl66lxtmZBJFsxBX/OJK+Ooa2PejKHFBpP6uK2zkjJfXcsyjy7lx4VZKG82Umkppbm/miU1P8MjGR1BICibHTfYeb2bSTAZZzEyNHInVZSUztEvhWa/SMzRyKImG7hIigt6Cbj+Hj5JGK9H9CaQdFjDX9K98SR8iJmhayw/aFWBIXDCre3EPyGvKIzk4+Vet1I4EkiQxKGwQ66vX/6Hn4efgRBi0PHDyEJQdLjJr8tScnHYWACOiRuD0ONGoNDy79Vn+t+l/VFmryIxTY9WuJCcyhyRDEmaHmXBdeI99qxVqVAoVt42+k0mpSagUEs/92MwTX6kIV+SgcBnpfpu+ckoaGVG/Iuqn0cPUO0HTbbydNU/87bw6A54ZDisfEbarGdMPTdDbWgFL74XnRsJLk2DbQrD7s83+zkgHLeTv644k6Z+yLPecLv8DGT16tLxp06bDfhxTm5O8ahN1ZjtJYQFkxfTu+7w/5jYnZruL8CANWlVX/zpTOw6Xh8IGC0t31/Hj7hpqTSIJ4JZZmTy7bB9Od9fvbWJ6OHq1kgHRQZw2MhqnspYH1t9PbkOut49OqeOOMXcgI1PfVk9CoBAYW1S4yJsqKCHx38n/ZVriNII0+6Wx2s2w8CwoWdXVptLCZcsg5jcmCjis8NEFULi0q02phstX/PZ9Hjl+98jkcF2fFoeFElMJX+z7gpjAGJ7d+ixZYVkMjRhKpF54RP9Q+gOrKsXvUiEpeGLqE6gUKkx2E2H6MO+EirqvNX1/AK1tTlYXNPDKykL+OSmYgOY8FB4Hez3x3LPaQWa0geOHxFDV0kZqeACP/rAXs70rVf2x03NY0KHGXFhrJnLjoxg3PeNzjLbzvkGXPplakx21UkKrUmBqdxEeqPHqGgCw4xP4/DLfbU9+na+dYwnQqhgUayQt8sCp4YeBo/b6PNxY211c8d4mVhc0etuMWhWfXj0Bp1smPlRHSEDXKkudqR23R+bdNYWM0NeQ6KnCogjim9pwUhOTuP/bPCamh3P5lDTCAzVkRhtQbXpV1OJ157zPIGMmBXVm5j2zCrura0Lw3LGJpA/YzJNbnvDZ5N/j/029rR6FQkFBcwGXaeOJqt7J3vgc5PAMzCoVIJERkkFaSBprqtZw7dJrvSUXE+Mm8sCkB3qtWzzK+dNenw99l0ezzcEpI/oYGFdsFJMuoy/p34FyP4XkiZB5/EG7yrLMdQu38uU1k0gK7/JGf3n7yxS2FrIgc0H/jn0YWFG+goa2Bh6Z8sgffSp94Xddn3/We2cnbo9Mfo2J4gYrIXo1qVFKqtuKcHqc5Dfl88Rm3/vY9cOv5528dzCoDdw48kZRPijL/HvNv73Zb7OSZnFSxqmYLDqe+MaE3SVz6+wsjHoVUQYdWTEiYN5TY6asyUa0UUd2jAGjvg9jkPp8qNsjLK50Bnhzrq8F4dAz4KTnxJj19/LLE/DTf3zbLljkW9pz+PljZ8b8+NCf1O6DsQA4qgLpI4VRr2ZcWs/Zt19jY3ETD3y3mz01Zo4bHMMN0zMID9LyXW41Ty7dh8cjc8boRCztTk4cFk9Fs43FO2sI0qp8gmiANYWNXD89g2eXFWCzu8lOtvgE0QDt7na0Si3/Wv0vn/bZybN5dMqjyMgkG5LJDM3sPXhqrfANokFYDjQX//ag11TpG0QDuJ3QWPBnCKSPWoI0QQyJGIJKUvFT2U/IyIyPHc8HeR94a53mps7l2uHXEqoNZWjkUDJDM3vNUDgakWWZ9cVNPPDNbgrrrUzNiqRRGcGZPwQCgYCN7BgDMwdF887aUpqtDhaMTuCk4XG8t74rdXfJ7loWjE6k0WJn5fbdXJz3QY9jaep28GJ5DC+tLMKgVXPRpGR+3FVDpEHHzTMzGdBpgbP1vR7b6vM+54yzTz9M34KfA1FlavMJohND9fzf/EHc/ukO9tSamZwRwdVT00mLDGLR9kqeXVaAhMSC0Qm8X2JkxZ7OyiUL14c5cHlkVu5roLKljY+vnIDKZRMCN/tT8BNkzKSo3uoTRAPotBLLy5f32OSXyl+otFSyt3kvADOyLyZ7x6eM39Fh33b5cogf6e0/PnY8C+cvpLi1GKPGSFZYFhF6v8bEkaSowcLAmH5YAtbu9FX/7SshSVCT26dAWpIkBscZWVPYQFJ4Vz30rsZdDAjtKb74R5AVlsX3W75HluU/fIXcz6+jVEgMjgtmcFxXFlV8sCgPWFK6pEf/H0p/YGTUSJaXL+f2lbcDcOnA67lx4HOY3TWkhEaSHpzJZxtbeGtNiXe7Wz/Zzr0nDMKgU6NVKZAkiWGJIb2KR/4qkdniBzqEx/bLatz5KUz/F4Sm9G+/+2Nrhi1v92wvXXOkA2k/RxGHcuTsvzMiFA9N7U5CAtQ+q8zdKagzc8EbG7wiZV9tq6LJ4uCccUnc9UWXUueLPxdy88wBvLCikDuOz2Z4YkiP2laA0AA15naxQrE0r5YhKeHoVXraXL6CZxH6CMJ0YYTqQpmfOh+9Ss/SsqXolYGMj52ITv0rl4MmUIg2tLf6tut+R7qqOkDYYO3v1ft79unHS3Z4NsUmUW/U0NbAsYnHEqoLZW/zXr4r/g6Ap459ikHhvorWTreTZnszQeogAtQBPfb7R7On1syFb2zwBivf76yh3eFmUka4N4A6cVgcDy/O927zxuoSzhuX5K39AkgKE5+trMnG9hoHTkMSaqtveqRZGcrjP+7FI4OpzcWD3+Zz5/HZPPx9PpUtbbxz8VjhGx89GIpX+J5oZE9FUoB6czsalYJgvb9m+nAQoFYRrFfT2ibKYv4xJ5tbP96Oxd55j6yj3mzn5lkDuGfRbu92L6wo5JZZmawuaPBOVnZP6S+st1LWZCM8Lkgow9ftxoeOQVpvKyjVzXYSk1IpNZUwNXEqHtnD8rLlxATGkBacRlxQHL9U/IKRbs8MlVaIlnVDISnIDssmOyz7N38/fn4fJQ02pmX2dMg4IDW7IHlC/w8UmgKlqw7arZPsGCOrCho4a2xXIJ3flM/M5F/xzD2CxATE4HA7qLJWER/0x9lx+ekdS7sTm8NNeJDWm9a9P3aXmxh9T+G6uMA4mtubmZk0k+FRw7E4LARKkbz4rYPJ2QkMi4jhm62tLN5Z3WPbsiYbzywr4IPLx5Hdnwmq/TC1OWl3uonUBvcMRgyxYrz5e1HrhM/7/tZ0fS1l9POXpD810gfj0OSI/4nZWdnKte9vZvaTK7n90x3sqzX32q+o3tpD6bvJ5mBRL16o64qayEkI5rvcan7eW09uhcnHPgvgksmpfL1dbBsTrGPdHplzM6736TMnZQ6DIgbx8OSHGR45nLd2v8U3xd9wUsZJSBL8ULCWPTW+/tU+hCTB8Q/7tg08AaJ6txXqE8EJMOdR37YBx4mgxM8hYXjkcEZEjWBg2EAcbgffFX+HTqXj1tG3MixyGANDB/r0L24t5r5193HKV6dww7IbyK3PPcCe/zgK6y09VvxW7K1nzhBRz61XK2my9bSC+WF3LZMzxOpdWKCG44fEIMsydqebH/ZZ2Jdzq489jSdyIMutyXj2u7OVNlmJCNKwvbzVG5Qz7CwhuteJPhSGnOazXW1rG88t28ecp39hwUtr+SmvFofL9z7g5/cTH6rnnhO67kutNqc3iO5ke0UrpY09nRW2lDV7B3MjEkOobO7qo1JIBGlVoFLDxBt8B2bGeEg7FhB2RPOGxvjsd2pWFKdnLuD0zNNZW7WWzbWbuXDwhYyPHc+n+z6l3lbPPRPuIdvSbaJyxj19t2rxc0SQZZnyZlvfra/cTmguguCete0HJTACHDahTNwHBscZWV/U5NUCaLW30mJvITrg6BBDkiSJzNBMttRuOXhnP0cMWZZZX9TI+W9s4LinVvLf7/Ioa+y95remtZ1E/Qgi9V3XlF6l54zM85ibOpdKSyWv575Ona2OQL2b+8/WsJv7eXDbFYREb2besJ6LJIFaFeZ2J4X1lt90/i63h5V76znr1XXMefoX1tri8SRP7OogSTD3MQjqx+TXgVDrhRJ49xTx0FRImfT79+3nT4t/RfoQUdFs4+I3N1JvEWmBi7ZVUVBr4b3LxvVQ6w3qRdHb7nSTHN5zxizSoGVXlYlhicGcNSaRvbUWEkPjOGdcEs1WB6FBEvvqGwnWKzG1S8zPiePB7/IY2pjA8/PfoNlRRYQ+guywbPRKPV8UfMHiEuEc1mpvZV/zPq4ffj0VlgoaTAqC9SOJCdb3/iEHnyJm45oKICASYof1zbrK2gAqXe/2QQNPhEtToHFf1z4PxQ3PD7Iso1VquWfCPVz303VeS7M1VWsoM5Vx+dDLabY3E2cQs6kWh4UH1j3AhpoNAKyvWc+VS65k4fyFf7gPaXcM2p4rfka9iszoIF45fxRFDRY0vWSDZEQGcuGIYC4bFUSgRk1sXBh51Sbu/yaPM8YkcfnP1dw/eSGpnjJ0QcGEpo3mi6972hAF69VY7W60KgV6TcdxYnPg0h+F96skCQ/1iAE0Wux4ZBmNUsE3udU8/qNI4W2wOLjsnU18cuUERqf4leoPNXOHxpIcHkBxg5VATc9rQadW9No+IiGYCTEyJk8cZSb4Mbecq0YbWV3p4rihCaREdIjaJIyGy5ZC7W4x+RKb4w16QwM13HviYBaMTqTBYiclPJDBcUZWVOzi1dxXvcd6bttz3DTyJswOM7sad/HAugd4bcbzhIeli9XI2BxQHFxrw8+Ro9ZkR69W9t36qrlI2KSp+6nyDSApxHVQtxtSjjlo96gOJ5DSRhspEYHkNeWRZEhCIR3K9ZLfR1pwGptqN3FC+gl/9Kn46SC/xsz5r2/A4RaT06+vKsbudHPL8YmolAqMmq5VYr1aSVlNEMeH/4eAoBpk3OCMpajOyVO7HvVqN3xe8DlOjxOVpCLZmMzqqtW8sPNR7hr9AEEbtFjsYgI5OSwAp9uD0y0TpFFjd7kxt7kI1qtRq8R122ptR+toQRcULALZ/dhZ1cpFb27wTnif81EZ753xCJMmViK1tUBEpnge90a7GTzO/rnFJI4T2kC1u8T5xOb8/pRxP39q+hxIS5IUJsty0690+eQQnM+flpIGqzeI7mR3tYmyJluPQDor2sCM7Ch+yq/ztl00KZWc+GA+2FiGqU3cjAI1SobEB7M0r5YnzhjGsMQQxqaKWuxGs51fyrfwXcXbFLYWMGPSbEaFzuM/XxTh9sikhocwLHIIwfox3mOUmkq9XsKd2N12LE4LIdoQQjQ1lDbaDhxIq/XCg6+vPnytlbDjQ9j0BhgTRI1K8mRQdHuwq3WQOFb8+DlkVJor+Xzf53xV+BUXDrrQxxccoMJSQbW1GqVCyeAIkQFQaan0BtGdmJ1mSlpLjqpAemCskckZEazqplJ797xB3r+NzaVN/LS7jsQwPeVNYkXxxKwAHhlRhb5xN/L2hUjmajwjL0QRcyK7qk0EB6g5e1wKmx1udqtTOD4lhthIA9cda2BdYZN3kBFj1KFWKmhzurlr7kCSu6vzR2Z507mrW9tYsaEUU5uLTzdX4PLInDYynmmZkazYWw+ALMPW8mZ/IH0Y0KmVjEoOY1RyGMX1Fo7NimT5nnrv+1dPyyBIpyJIq/KuVt8/1cDp8kfol3yIPSwLefLNnF/1BurS9TjSZmEfcBXq7urt0YMPmD0TadAxLasreHJ73Hy8t6ff6Y6GHWSEZLC3eS8Oj4MiSyUjRpx7iL4FP4eakkYrsQd6PvZG3R6RzfVbCU4QA/Y+BNKSJJEda2B9caMIpBvzSDL+sf7R+zMgdADv573/R5+Gn27sq7V4n28Ax2QGEpuwmwu/vwulpOTKYVcyJWEKgepAoow6MqOD+GSzju9yO+9vJv5zTps3iO7kh5IfOHfguUQHRrO6SniIf1/6Bf856T5KG9uICNLSaBFuCFMGRBASoOaOT3ewtrCRY7MiuWhSCprWEsLz3kVX9A3umGFIU+9AkTDK5zh7qs09ssauWVTNjzcfe+DMEacdipfDsv+CvRUmXA+DToKgPog2SpLQ8PHr+PjpoD8r0uslSdoGvAkslveT+5Zl+b+H8sT+bARoe36VSoWEXt1zNjg8SMt/Tx1KbmUr9WY7aRGBDIkPZlNpM5dMSkUCDDo10UYxc/f5NRN9akdabQ5aXJU8vO1mrE6RgvPh3nepTajmhhnXkhIWQnJ4AMHdavU6/fsMGgMmh28Kt1KhRJZlItrrSQ4xA/0TTvPBbgZnG2gMsPlNWPlYx0lXwLuniFWcuBG/ff9+DorT7eS13Nf4dJ8QLLK6ek/TUkgKbw202WFGr9IToArA5rL59Dva6qQjDVoeXzCM3MpWGix2MiKDGBLf9fcxKjmMQI2SKZmRVDTbcHk8nBiwC73sgW1fIKn1kDgOxYZXSMmxkhYxlTWFjawpFCmUYYEaTh8lFHnHpITx+TUTyas2oVYqiDJqKW+0sfDycQyND+61lkyWZRauL0OvUfLI93u87Y//uJebZ2WytqjRm5oe4q+TPmzIsixsAUP1/GNOFicOi6PW1E50sI6SBhvlTTbunj+Q6tZ2ogOVnFLzDLrtbwGgHXQifHUFmEVNn2b7O0i1O7Ce/SmBwQcYbMkytLUIPQmV7+9VISmEf+5+CQ6h2lB2Nezyvg5Q/frfmtlhRiWp0PeyMuPn8FPSYCXK2A/l3/o8kfb/WwlJFiJ2fWRAlIF1RY2cOSaJ3IZckgxHVyCdaEik2lqN2WHGoPkVWyM/R4xAbVfWi0apYNLQFp7f/YC37Y6Vd/D8jOeZkjAFgInpERh0amZkR9Fsc5IYGoAc2LMELFQXis1l8xGWiwmMxajTMD3LgFopkVtp4sXzRpIWEchFb270lkot3lnDMSkBzNh5P/oSIW6mNFdD+Tq4fBmEp3c7/15sXIM06HoZe2OqAq1R+Lp/cGZX+3e3iuyf0Rf38Vvz46eL/gTSmcBM4BLgWUmSPgLekmV572E5sz8ZGZFBnDIini+2dhnDXz01jdSIwF77Rxt1RBt9Z8s+21TOoh2+YgzHDIjgjNFiUF/V3MZnWyv4dHMFF820eIPoTlZU/MQZUy/njZ+LKKy3ccHEFOYOjaHVVc67u9+lsLWQq3Ku4tFNXXXJA8MGYtQYyavfyak2J+Gh5UBK/7+AthbI+xrWPS+M70ecB2EZIvW7U8DJ4xKz6/5A+rBSY63hi4IvvK/XVa9jXuo8vi3+1ts2N3Uupa2lzE6ezcL8hSzMW0ikPpL/TPwPT215ikqLuI6nxE8hIyTjiH+GgxETrOt1ttnp9tBksVPUYOOppXsJ0qp4YV4U+rxfoGITjLxAKHhWb4OhC9A6TVw/Ooibv++qhf2/eQO9WRmSJDEkPpgh3T2g0/lVak12ftlX32tmx6p99YxMDmVtYSOxwTpGJYf+ps/v59cpb7LxyeZyvtpWxaBYI1dPS0elkHj0xz2khgdx1thEFudWY2p3cfyQGBKUTehyuymvaw3eILoTdc02bPVF0Fsg3VQMW9+FnZ+L+9ukGyFuuPdtSZI4K+ssfij5AbtbZC4FqYNINCRSaxPRdXZYtk8aZXda2ltYVr6Mt3e9jVFr5KqcqxgbM/aotqf7K1LcYCXK0I807fo9EDfy4P0ORHCC8JJ2tYnn6kEYGGvgyaU1AOxu3O0Nfo4WVAoVKcYUcutzmRg/8eAb+DnsDIo1MjQ+mNzKVnISjGxseqtHn28Lv/VeS1q1ktEpYd5MKqfHyfa6UNKC0yhqLfJuc3b22TjcDr4q/Epsp9RyUvrpVNY4eXhxPpEGLTdMH8DY1DA2ljR16Y0AE9LDMbRXe4NoL+0tUL/XJ5DOSQgmNSKQ4gYxHpYk+NfcQYQEdJvMrN0F2z+C/K9FCc7Yq0Q6dnfRsPUvwuBTQe8Xu/XTP/ocSHesQC8BlkiSdCzwHnCNJEnbgTtlWV57mM7xT4FRr+auudnMGxpLWZONjKhAhiaE9FqreSCiewkMYow6JEnC6fbw0spC3llbCoC1vedKmE6lY2elhQHRRjQqFfcu2kVMmJ2ndt5IpVUERhISD0x6gHpbPQZNELEB0Ui2RqbZJaLXvwpDz+rbyTpsYgavU3ShYCksuq7r/aotMPsBGHslLH+wq/0oW938K6JWqglUB3ozDzbXbmZm0kwenfIo1ZZqwvXhhOnCSA1OZXnZcu/ESrGpmM11m3l+xvMUtxYTGxTLkPAhhOr+BMGew0ZJUzvP/1LOlrJmxqWGc2xWFGsLagnc/DzSjjdh+t3w7S3g7hAia3wBxlxOUlQoz5wVT5PVwcA4I8MiNWC3iBIEdYDIslAH9LleVaOSUCikXtWbo406jhsczRmjEhieFHrAiTY/vx27080TS/bwxVYhwFjaaGN1QQMvnDsSjwcWjE7gv9/l0ZlT9dyyAmZfkCqC504HAamX37WkQFJrvceQAZ3LDB4PLL0Xmopg+NlCpfndk4V1VViqd/OhkUN5b8577GzcCbKMR5Zpc7dx0eCLCFAF0GxvxuXsXXBnefly7llzj/f11Uuv5q3j32Jk9O8I0vz0G2F91ceBtt0kXC4Cf4fHt1ItFIEbCg5c59mN+BA9lnYnBQ31NLU3ERsY+9uPfZhIDU5lW/02fyB9lBAboufF80ayvbwFp0dmg6mnRs2v+dTvatjF5Usu55zsczg983TaXG3EB8XT3mbE5dYyLzGYIJ2CQDmFJ76xMzzRzMjkUD7ZVMHGkg18etUEdGrf+62p3YVboRbaOq523wPul42TFB7IWxePYXt5K802B0PixcSAF7sN1r3QZVHZVARl6+D0N+DDs8HTIfgZGA1Kf4aYn/7TnxrpcOA84HxEgtr1wCJgOKI+OvWAG/9NiDTomDnoN4iKdHDCsDjeW1fmVfTWqhSc3WFlUd3SzgfdPHArakPIDh1KfnNXSs2CtMt5b6WZiuZ6rpySRkSQhuKWEm8QDbC9fjvb67fzwtQ3GLr5Q0Ly3gO3HWQZd87ZKMMP4jlpa4J9P8C6l8Rq86SbxOzg+pd69q3JFeJhnYQk+1ejjwAxgTHcMuoW7l17r7etzFTG8KjhzEmd421ramvi7d2+nohu2U2ZuYzzBp13pE7392FrxLP3RxTrXyROF85FAy5nQ7GWDzaUMWVABDePDcDw47uir9vRFUR3suNDcpWnkp42gEBXC2m169A1WJF3fYE0YLYYCO/5DhLGwrgrIPrgdVFhgVouOyaN0gYbgRolVof4e9YoFVw0McVfE32YqWhp48v9HBBM7S6abU5GJoVQ3dKGvF9N3f0rW/hw1v0oOycDq7cjZ8xEKujyubeNvBJVRAYr9tRhqS/neG0u8ta3YdjZSJnHQX0+7PpCOBmc+Dw0FvgE0iAs6bLDs6G5lI/3fcbjeW+iVWpxuB1kG9O4NHpyj89jcVh4Z/c7Pm0yMuuq1/kD6SNMSYONY7P6qILdWCBWlBW/U+wrJBHq8voUSIs6aSPf7Dr6hMY66RQc83P0kBAaQEKoWORIrT+DH0q/x+ERz0q9Su8zbtifLbVbcHlcvLP7HRSSArWkJtGQSJLjdr7aUs9ts8fwxHeFmNtF6dSmkmbOGZvkXUXeWtbCgtEJnDw8znvfXl/UyMUTRlA78maiNzzkPZYnaRKK6J5OMcnhgb56JZ3U7xFp3NsX+rY7LOJvatZ9sPltaCqEKbeBxl8y46f/9Ce1ey3wLnCyLMvdlYs2SZLUSxTVhSRJSmATUCnL8nxJksKAjxA5xCXAGbIsN3f0/SdwKeAGbpBl+YeO9lHAW4Ae+A64cf867T87OQkhfHb1BDaVNOOWZcakhDI4TsysKRUwc2AUhfVW9tVZ2FTk5pyJt7JgQBUVlnIC5FRW7dRT0SzSW77eXsWxWVFoVT314SQkwoMMNI66DlfKMQQ256OMGYwmeSzoDuLjl/+t78pz0XI498sefqeAmInXh8O4Kzvel8RKX3/wuEF2+2cK+8mc1DkkGBLYUb+D2KBYhkcO77E6oVKqCFIHUbtf4ebB6jSPKvK/RbFIWL1pgMGlP/Pw1A+48EcFTo9MbKhR1Ky2twoV3P3RGqm3edC32jimeQmRgQr44d9IqdPEKpC5Eiy1sOVt2PsDXLakT+JBx2ZFsTOolf8tGEZJkw2lJDE+Lcw3RdzPYUGlkNCplD0sBg06FU+dNZxvtvf0MgVwZZ+EPTABU8FabLoYWoOzCYw/FaOlCH3ScJRJY9jX4OSjjeU8k7kD1bc3iQ0n3Qi5n0H+IvG6Lg+Kf4Yz9xNVcrsAWawyShLz9q0lafBV5NobiVUbGWFqJNruq08gPo+KYG3P68ag9teYHkk6ra+i+1oj3VBwaPxlgxNFamofyYgMYnVhHslpR49AZHfSQtJ4e9fbeGTPURno/93Jicjh3bnvsrVuKwpJwciokWSFZR2wf3cNFY/swS7b0an0DAgxMiNbTYBGhbnd9178+dYKbp6ZyZrCRkL0agw6Nf+cO5A5Q2LYW2shO9bIiMQQzMHnUx+XQ2DDDpQR6WhTxvfd1cVSB59cDOnHgjpQZIh0x9UOPz0Mp70hJqtif+MiT/f7up+/Jf0JpLMOFLjKsvzIQba9EcgDOqO0O4GfZFl+WJKkOzte/0OSpEHAWcBgIA5YKklSpizLbuBF4ApgHSKQPh5Y3I/z/1MwKC6YQXG+g6Z6cztbypqpNdvJSQjmtuOy+GZ7FV9usjFnSDZZYaO49oOtQFfNdIBWRWKYnoTAZCbETGVtzc/e987MOpO0kBR0ETpI6UciQVsLrHnat83jhpKfIfN4MXjsTJPRBAqbgIoNsG2huGm5HaI+JfbgM+t4PFCxHta+KAKZcVdC+nTQh/T9fP/GBKgDGBc7jnGxB1ZYN2qM3DjyRm5YfoO3LVwXTk5EzpE4xd9NU0MtYat7Xo+Z7bncdtxpLNldw8vb2rl/8r8IWnqHuAaN8WDqytAwTf4/0lXJOE31xJV+A5GZIp1s9MWQtwhszTDsbCGgt+kNPHV7UPQhkNZ11JH5OfIkhgZw08wBPLQ439s2OM7IwBgj0cE6UiMCMepUmNqFyqwkIYTI2pTscQ3ktk0ObA43TnczCimEIN1Y3hw6BkwSr6wsZN4APapt3TI5JAn2fO17EtYGUX+XNF4MtMrXwdrnxT10/NWQdizatBmM/+YfjNeFgMOCJ3wAjLmyx+fRqXRcmXMlVy65EhnxCDaoDYyL66N7gp9DQp25n9ZXDXsgJOX3HzgkGXYvAmT64jKaGW3gm91ujhl+dAbSIdoQdCodpaZSUoP/9omMRx2SJDEofBCDwnuu/PbG6OjRBGuDabW3iu2RODfrMnbsU1JntlPRbOP/5g3kocX5uD0yARolt83OIreyhWabg+Y2BzWt7cQE6zhuSCzHdUv6ijDEQ2I8MLf/H6SxAOp2ibrqMZfCqie73gvPgLYmIRBZswOGnNr//budULYW1r4ADjOMuxrSpva+qOTnL81BnwiSJH2NuIP7qO91IsvyiQfZPgGYBzwI3NLRfBIwreP/bwMrgH90tH8oy7IdKJYkqQAYK0lSCWDsrMOWJOkd4GT+IoG0LMt4PDJKpQKPR0bRoQTsdHvYVNLEa78U0+Z0c9ygGNQqiTs/20GzTahw76ho5ewxiYxLDaXZ5sSoU7GjwsQ1U9Mx211c8fYuzpl4JldkT6WuvYhx8cOZEDcaneI3rPAqlKDuxQtapRMWVzPugZYysXocGAEKNRQuFylptTtFIN3XleWqrfDWfCFQBmIgevKLMPyc/p+3H4BeVwAmxk3kzePeZH31esJ0YYyNHUtqyNE/uGlzulhT3MLxqsAeNzG1PpCnlu7F5nCzsaSZNnMm/zvjY7SVG2if/RhSSxnOlmrKg0eR68hkV2UzwyPUeEKSUMTkiBXnb28Fa4ddUtUWGHIaxI9ib0M7xfZqJmWEY/Qrbh8Rut8Tfw1ZlpEkUZ9+1pgkMqOD2FDSTHaMgXGpYUQH6/B4ZOrM7Vw+JQ2b3UWb00NssI7iOgvVre2sLmhgxsBoPt8iJls8MgyOC0arVvLwd7tpaXMTHx7VVTMfP0pkOijUPcsGlB0rl5Wb4e0TQPaApEB220Fr5GumkjX9TeJat2IJSGC9ZyAjHCGk9fLZRkeP5u3j32Zd9TqC1EGMixtHZmjm7/xm/fSH4oZ+Wl81FkLSIagD1hnFc7O1CoIPrgCeGhGI2aonLuDovY+nBaexs2GnP5D+kyDLMjKyz/ih876cEZrBm8e9yY+Fq2j3WEnUD2X59iA+2ySEx3IrW0kND+DZs4ZzyyfbuWRyKs8s20dLtzFsi9XJjTPSUan6s7Z3EBQdK8SmSjGenPFvMbkZniFKFNc8I94PiBALN/0twajcBO+ciLdOqGSVyEIaOP+QfQQ/fw76ctU+3vHvqUAMQmQM4GxEWvbBeAq4A+g+TRMty3I1gCzL1ZIkdeZqxCNWnDup6Ghzdvx///Y/NXanmy1lzSzeWUNetYkpAyKRJCHnP3tQNFUt7Zz72nqvR96awkYePHmIN4ju5Kf8Oh47L4TFJd/R0F7LYzNOZWSUlnNf2QfAB2tMqJWBxIWM5aoTAgn/+TFRvzziHMiYCUF9rPmym2H8VfBFt1UTrRHihkHVZljyb2Fs73FD4ngITYXkSWLGb9RFYmUmdnjfjlW6uiuI7mTVk5A9D3T+9Nj+sLtxN5/v+5zi1mJOHXAqE+MmegXEtCoto2NGMzpm9B98ln3E7YLy9Wg2vsZsux33+OtQfXV51/taI3nqIdgcZm/T9wU2UhPSGZmYg6FlNwPrCzHYawkMSGVffT0Dk5M5PqYJyTUAdn8plDs7g+hOdn+Je+b9fF0dzPOLtvDkmcM5ZcSf/hZ0VNNgsbNybz0fbyonK9rAGWMSvaUunbjcHjaXNfPe2lJsDjfnj09mbFoYwQFqjs2OJj0yiO931XDdB1sZnRJKlEFHakQAxQ02CuosOFxuogxa5g6L49zX1mN3eUgMC+DmWZmUNloZlRTKqfGtSNse5h3ldsyjT2dJlY6cSTejrtsJxSuhdjeMuVw4FnQSORBicqBmJ+z6HGQPbbHD2TrmPD5s2ISq+FPmpCwgoKYNo6UYj8dNaMgACurMpEX2nKxUK9WMiB7BiGi/xsQfRWmjte9p3Q6zeF4G/g4rye6EJgkrrT4E0u0eM0ptI62mTAg5NIc/1CQHJ7O9fjsnpJ/wR5+Kn1/B5nCxrTaPH0q+ptS6j+OT55MTOo5FW81sLm3m5OHxTM+OwmyKIEN3PJtKm6jUqPls0z6f/RQ32ihssHLfSYNxuDzeIBrg1nGBnCz9iOqdbyFpAuScAVEDf/tJ2y1Q8gtUbBbj24KlULRC/Iy8CErXwN7vRd9xVwMyvDUXUibD0AUQeeA0dh/yv6OH2Maa58Qx1b9dK8nPn4+DBtKyLP8MIEnS/bIsd/dS+FqSpJW/tq0kSfOBOlmWN0uSNK0P59PbssOB8pl6TTOXJOkKRAo4SUlHl4fi/myvaOH2T3cQpFXhkWX+t2Qvxw+Jod5sp7q1HbfH08No3uZw9djPpTO03PrLVV5blfU167h3wn+ICIqmrEnU3DndMjcMl4j/6owuZdrSVTDtnzDljoPPxrkc8MsTYmV41v3ioa4NFikxkVmg1EHKMULcwRALIQmw5G7hHw0iBWbE+aIWpS/0tnKt0vVe5/on4khfnwUtBVzywyVeq7QNNRu4ffTtXDD4gsN+7MNCxUZ4ez5K2YMSwFJO22nvYitYhVMThjp7Fi+vdANmn80UEqRTSdrKC8UAF0jLX8TVE++hLCiaoJX3IxV1+LWmTet5XElJUcBwnt/YAsDzywuYkR3VqzL3n5mj5f4pyzIfbyrn0Q4f7nVFTXyxrZLPr55IRlTXnGxBnYVPNpWzZHct7S4PP+XX8caFo5k+MJrWNid3fZHLqgIhcmPpsLrSqRR8m1tFboUJh9vD4p21vHfpWNRKBXaXh292VBOib2B0SijHRlnQf3iK18Iv2FLN8SOuwmoOJ2TpveIkCpfBsf9CPvF5pLK14n6YNhU8dvjoXDGwUijZMuZcrsp9xnvuSytX8saQa0nZ8zVhwPSAD6k87Wvg6FNaPlr4I6/PonorkX21vmoqEvXRh+p5ZUyAut3iWjoIJa0lhAS1s6fKRc5ROgRKC07jq4Kv/ujTOKQcLffOQ8n2mgL+seYaWuwtAGyu3cSC9Iv5efcICuttbCpt5lZbJq1tThotDpLCAsSAXeoZY3o8MrUmO55ug9pxSUFc6PwQ45oPREPZWsj9FC7+ru9jxf0pWg4fdYiljroYptwu7t9JHfXVtbtExmREllhVXv9i17F3fgEXfd03bQNVL/cC9Z9/jOqn//TnNx4pSZI360ySpFTgYL4Ok4ATO1KzPwSmS5L0HlArSVJsx35igbqO/hVA97+eBKCqoz2hl/YeyLL8iizLo2VZHh0Z+TtsJw4DpjYn3++s5qp3N3HTh1tpsTq4YEIKyeEBpEUG8a95A8mvNnHhhGRSwwNod3p67EOhkEgI7Uov06oUoC31BtGdvJb7KrfN8b0R5ajKu4LoTlY/BaYK37bWCtj0Jry3QKwCNxRCSylsfkOsZC+5W6zE5H4k0tc+v1yktQw4TqTArn4KWsq7guhOtr0PzcV9+7JSJoJmv5WZqf/409efHOnrc0/Tnh5+4y/veJk6W90BtjjCNBbAqqfEtbbpzZ7XDJBXbeKx7/P5x6fbse/8SqTIdlKzA9XGl3mgbQE3VkyhWJHCSfutFGtVCgZEBRFt2+sNojuJ2voMg9RVXUE0iL+RMN8E28bhV3Pdsq7UXY1SorPSpdFqZ9G2Si59ayOPfZ9PfvV+oiZ/Iv7I+6fD5WF9USO3fbyNWz7ehlapIL3b6qypzUVet+92XWEj76wtodHi4O4TBnHFMSJN9LVVRTjcbkoaLKwqaESjUvDcOSOYlhXJ1vIWtpa3MnNgNNcem87sQdEd2xRz/XThl37buEC+mrCPF6SHiWlcLwZh+lAxgZgwhiBHLcFb99PXXP4grpYyOPl5mHSDcCuoyRWphCFJuJMm8n79Rp9NZGS+M+2FiA6nBFsjkbaCQ/yt/rX4I6/PogYLMca+BtLFYIg5dAcPTRaZD32gsLWQ2DCJ/CrnwTv/QSQbkilqLcKxfznEn5ijeezZH3ZXmXhocR6Xvb2RUnOhN4juZFHJB8wepmVwnJF/Hp9NWKAGhSTRaHVg0KvQaxScOMw3EB0aH0xpkw2PR8ZidxMfIsaw5wxwY8z70PcETBVinHiQcUGvOG1iu042vwlrnhU6A6YaYcX64/+JkkOPE3bvN5nTVCDcF/pC1pwu+9dOJt0AKn/J19+N/hQk3AyskCSp03E9hY7ZtwMhy/I/gX8CdKxI3ybL8nmSJD0GXAg83PFv59W8CPhAkqQnEGJjA4ANsiy7JUkyS5I0HlgPXAA8249zPypYVdDANe9vAcSM3bSsKB5a3OVn+uOuGh49PYeNJU28u66Mu+YORK2UcLq7ZvBk4LSR8ZjbXVS1tDN7cBQtilU9jqWQFGREBfHOJWNZvLOaKIOOhLCdPU9KUuAzn+KwwU/3w44PRTDRVAA7PoFTX8YnMaDzxtZSItSM9/4glI3nPtbT9897LIm+iKUAIi3you8g/xuRZjvoZEgc27dt/XiRevm+lZKy1/YjjrkWPr5Q1M8DFPwIQ8+EE54CjVACLa63cO5r62myOoRHapbM/smVklLNqJQwspywZHcdbtnDc2cPZ/meegK1KmYOisZqc1BncfT06FMoe9bfbnwVJt+MrArAWbsHS/IMXiiOYU9dl+L8DTMyMejUYuV0YzmPdKyc/pRfx8KN5Xx29US/R3Q/2VrWzFmvrvPeD7/cVsVdcwfy4Ld53j6dOh2bSpq47J1NWOwiQ2f5nnr+NTeb5PAAlAoFktx1r3ngpME8/sMeShpFds7Pe+uZnxNLVUs7I5NDiDHqaLLYSY8K5NnTs5jV8B667e+J+07iKHHgCdfCzw+DwwrpM3rVC3G4ZIpqTGTFdGhqdq5MrHkWafaDqOpW9NhGJSm6BBoBjapvXuV+jjz9tr7qa8lUXwiKAWuduP40v35fKWguJDNqEN9tcOGRZRS9XKt/NFqVlpjAGPY07WFoZB/ER/0cEQrqzJz16lpMbeK+OizL3qOPQlKALHHisDjKmmysLWqksF5M1v+8t56ThsdxQk4sQ+KC2VTaRHJ4IB5ZZnFuDScOi2NNQQNPnjmMrWUtJATVdyxfdzvAyAtg8Z1CKAzEuCDnLJj/pHdccEBkCZT7hTWudmgtF3XRnfdkU6Vo723pvK8rynEj4OLFkPe1SCcfdJKwyfTzt6PPgbQsy99LkjQAyO5oyu8QBfstPAx8LEnSpUAZsKDjGLskSfoY2A24gGs7FLsBrqbL/moxfzKhsTa7i3fXlnpfD4kL5tsd1WiUCpLCAqhpbcdsd+F2y3ywoRyAN1YVc/tx2eypMQl/yBgDn2ysYE+tmZAANZFBWiqaDQxJGUiAKgCbq8s65Zrh1xAVGEZUJkzJ7JgdbVQKS6ru9Z9Tbvetu2oqFkrbsx8Q/nuSJIJalwPGXQNru1ITCUkWtkKdWGpE/XJIilBEDEsTKW6djL5M1E33lbhh4sfPbyY7LBujxojJ0bWSd83wa4gMOApmzBv2dAXRneR+JGZ1Y4R05+4aM01WsWpR2dJGYcR0whWv+dTPl2VdwpNLCnn/1EiMbcuIbM2lrOEYKgKyeTu3nQ83lHP/yYPJdSeTqg/1ycqoHH4TTncwKVlzYE/HLcXjhr1LkE94lhvLprHpxyYuPSaBM0ZbMbc7mTUomimZEQBUtbbz7DLfVcQmq4O8apM/kO4nH28q9xnTyLLwEx0cZ2RXlYmwQA2DYkWQmlvZ6g2iO3lzdQnXHJtBUlgAapWCtMhAZmZHIYM3iO7ku9xqrpuewVurS1gwOpGRSSGs3LaX2zMq0bXshcEni3uls12IzzlsIogBKFkJ0++G8g1dO1Rq2K4by9Uvr+PTqyYwINog7pv6ULDWo/jyKs45+UmWV3VNeiolJXMMGdD0imgwxPbJp9zPkafT+qpfK9JZv0Fp+EAoVcJxoGGvGMAfABkPJaYSpidNJ0DrpqLRTVLEIRRwOoSkGlPZ2bjTH0gfRZQ12nwm2VWueCL0kTS0dY0ZT029gKoyHVta65iQHu4NojtZtL2KwXFGalrbmJwRwYZiEUyfMy4Jt1vmrnlCDXxsaji4EqH2MtjwctcOQlNh81u+J7bjQ5h4IyiVsOc7MW7Img+pk8V9uhONHibdDGVndrUpNeIevvUd3/t28UoYeJLQRekkahBEZtMnJEmITcaP6lt/P39Z+nyHlSRJDVwJdNZJr5Ak6WVZlvuUPyTL8gqEOjeyLDcCMw7Q70GEwvf+7ZuAP+0oQ5IkooI0RBq01JvtSBIMTwohO9bA3loL07OjRD10t8njGlM7//0uj6SwAB46ZQiXvL0Ju0uktbbYnLTYnLg9kFsSwJvHv8ni4sXUWGuYnzafUdG9/HGHp8MFi0Q6S91uGHwKpE4BnxlrWVgF/Hh3Vwrtzs/g7A9h4nUiwMlbJFIXNYHwy/9ArRcPebdDBCHnfiKEGCbdCKYqIbgz8ARIO9af9nKESQtJ443j3uDH0h8pbi1mXuq8P1RYrMFsZ21RIz/vree2AW30nvy4XzTVjZtXKXluxgcMs61FdjlojJvGu4URPDFXReaKK1DUi9XLdL4gbOilLDGcSHWrh/xqM2pFNNFT3yOj7geM1hKsmafwfVMKE6wWyJ4vBPJKVkH8SAgfgMfeSmmTRL3FwcOL84kP0ROgUZKTENJlgSPLPSa0RfNfyuL+iNDbV6ZWKJicEcGM7CjmDo3tEuLq7TsHchKCyYoW5R8GnZp7TxrMxuKmXvuCUOU+bWQ8kYEaRletx/DtA12dDDEw7BwYeRGy1G146XbCri/g+Eewl22kTRlMWfIp3POLh9Y2C7urTCKQjsyCC7+GXV9CYwGjAhN4Y9YrLCr6Do1Sw/yU48lprYPsE4SzwaATISzlt315fg4rtSZhfaXX9CFjwOMSzz3DIVyRBghOEGmnvxJI11hr0Kl0BKkDSQyzsafKedQG0slGITh2dvbZf/Sp/O1ptNhZV9TIkt21nD4qAb1GyZdbKtlZquSWEY+zpXElNe1FDAmeQrR6CLFJOr7Lre71ng1gtbt5Y3UpGqWC9KhAihqsDIo1khm1X7meSgOTbxHXdP43kDD6wGJfbjssvABay8Tr3E/h2H/BMbf5avykTYXzv4TtC4UYbmwOrH1O3Lf3LIY5j4pgOiAcchZAxizYu1jUUGfNObQlGX7+FvTnDvsioAZe6Hh9fkfbZYf6pP7M7Ks18/PeeoobrIxLDUOrUlBQb6GssY0xaeEMSQhBIcHeGhMlDRY+2dzlaTs4zsisQZGcOTrBuyoNwgZLqZS4cEIyr/zSVWMcFqjB6fYgu+m771/0IPHTHbcTKjaJmb74MVC63rcO1eMWPpYDZsOwMyHzOHEj2rdEpHJb6kWqtyFWpNAo1ULd269ceFSQFZZFVlgflSgPI063h1dXFfHyzyJLIV5l5LqIgagbulJ3GXwqDZoElm8uZ3NJM7MHRRMSoPaqfDrcMpEhQUh2DQrZhVqjpd7qJNhcgsJa6+MTHbrrLS6YMJ80YxDXplQQWPQDKkcS0oCJtFUFo9ToGZ0SgcfiwNNYhKK9RfhH7/kOOX8xqvM/49ppbq79QJRjVLa0oVEqmJTRpcQbF6LnzjlZ3LOoq34xJEDNwFgjsiyzo6KVpXm1OFweZg2KZlhiCGqlX4ykNxaMTuSLbZU+g7OTR8RTVG8mOECDStk14Tck3kiARonN0ZUWfcmkVKqabRQ3WFm9r4Eoo44pmRGkRASQFBbgFV4EOG5wDK1mK5vPUaLe/RTEDEOx5SnfEzLXgEqDa/tHVB/7JIkRWdC4T9wbq7YiDz2dhmFX42yuIKnkE97Oimf7sLE4u89LxgwVP4iH5xhgTNyErvdjEU4Efo5qihusxIX00fqqtUJkIvTV6rGvBCeJCfBfobClkLhAIVaXEKYkr9LBrJx+WHYdQVKDU1lRseKPPo2/PQW1Zj7eVMErv3RlD6ZGBPDgKUNYua+eTftkBsWdSk1pPU+vqMPhLuSti8ewYHQixQ0WUsIDfDJ+5g2NZX2xEHh0uD3kVZuJMeow6NVkdWQU+WCMgeFnix8QtcyR2b61yoNPEc/1ziC6k1/+B0PP8J2AlJRiDJp2rLAorN0lxq7H3C6y4Mo2QM7pED8agiIhYQyMPO/3fo1+/sb0J5AeI8ty9zzbZZIkbT/UJ/RnpqTBynmvr6fWJDLe9Rol3+fWUNHSBsAnm8v53xnDKKyzolIpiQ/Rs2BUAp9tqcAjw64qE9vKWgnSqrh73kCW5tWRGR3EsdlRPPRdPmkRgfx7/iCW5NWSEKonLSKQ55YX8M7F437fiZet7fLDixvZ+0x6p5iZxyNEw9xOUKlFarckgbVWpNW47bDnW6GW6LZDyRqxep1yjLDw8PO3pbzJxuvdJoKe3WAiZcbDzFWsR1v2Cww6ifa0WfxjUQG/7GsgIkjD4p3V3DV3IFvLWihtsvHUZA/Rn50MLnE9hkrP8d+zvkLlMcKQ04XYSESWmI2uz2NYbABzAzaj3rdVZGQ07ILNr2EYdBJ8dhbps/9H4Pa3kWp3iJPa9Druqf9kY8IlZEkhTM1U8PqFo3l/fRmRBi1Xjw0j2bIGFv+MIzSDIuMYypvUPHfOCNYVNaJXKzllRAJpkUFsLWvmzJfX4XCLSalXfynig8vGMz79EFni/MUYlRzCB5eN4/31ZciyzNyhsfxvyR721ora9JhgLR9dPoHkiEDGpIbz+oWj+XxLJdWtbczPiaPJ2k6t2cE9i3Z59/n++lKePXsEd88byPriJnZWtTIxPQKVUuLy+HLU9btFqn/lRpj2D1j7Apirvdt7AiKpmfE0qqrNuJOPQTHuSqTmUtAZkco3EN9ugp8fAYTTUFxgJK1nf81fwJ3RTzdKG61EGfpofdVSenhWtUKSYPcXHNjIBPY17yO2I5BOilDxyXprr/2OBuKC4qi11mJ2mDFo/twion9W9taa+S63mrfXlvi0FzfY2FbRwlfbqog26vhgQxn3nzQEWZYZlRzG1vJmooJ0tNoc/HNONlvKWthe0cK41DDSI4P4x2e5Pvu7YGIyswdGkxR2kBpnEIH17AeERVV9vhiTynLv2juyG+hY9GksFBZXtbuE4ndktljwMVVCRCYU/yzSwHd9Kn5GXQzHPyQyKh1W4Qiyb4lYEMqY8fssuPz8rehPIO2WJCldluVCgA4Fb/dBtvlbsavKRJvD7V1BC9KqvEE0wLnjknluWQFFDVYunZyKxe5CrVRwx/HZbC5tZsnuWox6NVWt7Tz90z4ePT0Hc5uTa97fgs3hpqjeitXu5szRiawqaCCvysSbF41hWOLv8FV2u8TgsXMZqHobDLmvq160k+EdM3YtpWKF+ueHhe9ew15x8+lkwCwhurDycQgI7XovdRqc/sah89X086fD7ZFxd1tu9Mhw81IrkZdewuTp/wBgT0ULCWEWrpqWRkVzG4mhAWwobmJIfDCNVgcBRYu8QTQAsozBUoL04798FblnP4BDlkjc/F+UxT93tQ85TWgCaEWKWdDax0QtY2cgDSjXPcfunEkowy2MSQljxsBoZgyMFpNIq5+Cn/4DgAZIC8siPOVxrvughOfOHsH8bmql3+VWe4Pozs/71ppixqaG9RQ484NGpWRCegQT0iNoMNuZ+cTPtLR1VQ7VtNpZU9SIQimRGBrg7etyebj2gy1MyojwWVUBaLY5qTPbueXj7YxIDGFcahirC+oZnxqOylIFS//TVW+vVMOMe4SqK4AuBDkym/ivr0HqrvUw+WYxmZg6VQgsdsdaT3DzbkjwD8L+ShQ1WInqs/VVsW/d5qFCZxCWO62VIs27FwpaCpiVPAuACIMCa7tMs9VNaODRJ2KnUqhINiazu3E342J/52KAn9/E9vIWXB4Z1/4+q8DAGCNXTU2nqN7C2WOTsLQ7O1wOJJbtqWNnRSsqpcR768u5bHIKd88bxNmvrUOlUHDL7Ey2l7fQaHFwQk4ssSFaMqL7OFliqYdvbhL35dAU2PIOtLfAeZ+JdGxbY1ffMVeKTI3WClh4lhiPAoy8EHI/g9puAf2oi0SQ3MmWt2DM5RAzGPb9CJ9c1PXeqieEkFhfPaX9/K3pTyB9O7B8P9Xuiw/5Gf2J0asVnD4qAbcM8SE6lBIEaJSoFBKmdhfhQRoK662cPTaRVfsayK/pGvifPz6ZSRlh7K42sb28hZmDosmrNuN0e9CpFFwzLYNmmwOX20Od2c5ZYxIYnXIoglIZHGYxK6fUgt0kFLhPel7U9imUMO5KUT/a0Z3mYnC2CZGFFQ/77m7fEpFq42oDZbdZ+eIVULYaKreKmcLkCWKG3c/fhqSwAE4dEc9nW7rKGaKNWlIiAnF7ZHZUtLBybz0GrZpgnZp380uRgUnpEQSolVS3tiEZO1ZYAiNF6qTDIgTt9rO1YvdXqKbdhWLJv3zbd30ufNM7A3pnW88UTJediQkqkuu/hcJiSJ4sarjaW2Dloz5dNU17mDikBgjksR/3MCkjgtBAsT+Lvec8o9neoaR7NKimH8XY3R7aXV3fnyRBaICGOlM7t3y0jRfPG0VEkFgh9CDj9ngw6JS0O8U2wXo17U43dpcHp1vmggnJBOvV1JvtTMuOYtqASFj1o49oHW4n1OXB4FOQNYFISRNRlq3xFUwE2PAKjL5EaEI4e1kl+QtZ+vgRFNVbGBzXxwnrpiKIPEwTKSGJYpWul0Da5rLS1N5EVEAUAApJIilCRX6lkwmZR18gDaJOemfDTn8gfYSoaLaxsbiJ0kYrwxJDCdSq+GVvPfOGxrJoe5ej7Okj43lnXSmr9jV0tJSzYHQCMQYtAVoVk9IjGBRrxOHyEB+iZ+HGMiYPiPSqfT/4bR4DooIIC9TQYLXj7CVQPyCyRzyX3S6R5m3vELS11sMFX8Hmd6B6i9CvyJorhPhqdnYF0QDGWNjiuyrOtvfhlFe6HUcW939bE/x0n29fWyMU/SzsrUJT+n7ufv6W9CeQXg28TJdI2MvA2kN+Rn9SdlS0cM0HW7zez6EBap4+awQXjE/G4fYQZdTRWRoZY9T5BNEgFGufPHMYNyzchssjc8rIeJbn19NgsXP3/EHc/dUur0qtQoKXzx/FwvWlDE8KZWBvdSd9RamGybeKtBdkiB3e4VepEMF0YIQIpjsJju+yazmQ0oTTBgNPFP593anJFTN9AMmTYMHbokbl91C9A0rXCE/AlMni/I9Cuw8/oFUruWVWJtkxRhZtr2JUciinDI9nR0ULW8tauOPT7Vx6TJoINF1tLDtViVy1hVZlKKqw8exKCsU98HTInAL1e0TgkzAWynu5DTksOF2uHlZZyLK4njsCqPbRV6Pbu8inS9vwS0nf/QJq2SHqp/K/FjZwCeN8V8M7UHXoLdocblyerhXoE3JiWbjBt6brookpqPw10gcl1qjj8mPSeHZZAacODODS5AaizBtRBNWjjo1jb42ZiAzx27VX5vJE2kYULXbGnzKOn1oz2FtvJUirQq1UkBERyEcby9hR0cqDUwMY61xHdLlG3Kf2x26BwDA8UUNRrngIhp/Ts4/LLiZfdn0hNCPWd1OcVeu9NdF+/jqUNNiYnt1H8bCWMkibdnhOxJgg6qQzZvZ4q7CliNjAOJRS1/M6IUzJ7konEzKPTr2SlOAUttVv+6NP429Bg8XOXZ/nMioljHaXh5/31jMiKYQ4ow6jTsWlk1PZUNzE4Dgj07Iiueq9LT7bf7q5gufOHoFOreTGD7f5jEf/NW8gSoVEeKCGxg6XjX11Fk7IiSUiSOt1W+gThmg45WWo2iomJaOHQOHPEDVY3FvnPSae/Up11zb7T1521/jx9tlPFzl9BiAL9W5HLyUQ5mr47HI44x0RmPeG0w5Vm6F0rRgrJ02AyMy+f1Y/fwn6E0i/A5iA+ztenw28S4d11d+d73KrvUE0wGXHpHHt+1swd9xslAqJF84ZSYhe7ZPe2onD7fEG13q1EoNWRYPFzrljEylvbvOxevHI8MbqEk4dEccZL63loyvHM6ivs+X7U58PX1wuZgAdVtAEwbF3wdfXw4Dj4OTnhXBKJyqN8HTe8rZIp4kaKFZxOokZItLPjPFiFa/kF9EekgRtLV39SleL7X5PIF21Fd6c2zUgVmrgwm8gyT+7fbQSHxrA5VPSuGBCMm0OFzd/vJ0mq4OwQC0XTUzl621V2Jwuvp5lJrSlFNz1hKnseKp+IEs3VsxSf3kNjDhPWK0V/ChERSSF78NzyOlstoQzLjgFZWuJt1lOnIAcOxLF6icon/QQn1lymDBsLKNqPkZVv5u69NPRJuSgX3anmJhZdn/XPkddJAKrre91telD2e2OB6xcNTWNyG7pn6OSQ3nnkrG8/HMRDreby49JY0J6xGH7bv9KKBQSIxJD+PfcAZxiXkjoiie8712UMJlK5XNABObizRgWnigyE4AghYqcGe/x4CYJp9tDZJCWMSmh7Kkx83+TAjkt70ZULcViMmX6v0VKX3dSJkHZehT6EMg6Xug7aI0iU6cDecR5uCwNKIyJkDkHZeRA2PwmhKULv+mYP625hJ9e8Hj6YX3ltAndEH3Y4TmZkCShQdIL+5r3EhvkO+BPjlCxJLet1/5HA2nBaXxZ8OUffRp/C/bWmBmVEsabq4u94p3vrIUXzxvFxxvKaXe5uWpqGkFqJRWmnpk2sgwtbU7KKlo7yhIlFJKE3eXhp7w6pg6I4N1Lx/LO2lJ2VLQyLi0Mjwx3fbGTmQOjeHzBMEIC+iDAV7EJvrwKrB2r4Uo1nPySb5ZHZxDtsEHlZvF/XXCXHauzvafVa/Z8MWaNHgKZsyFtBrw6Tfi9D10glL29+9eI8q+KDWLi6kCBdOFP8GE31fmgGLjoG4gYcPDP6ecvQ38C6az9xMaW+8XGuuichQOhpl1ravcG0SDqQ99bX8pz54ygrMlGaICaZlvXDNmxWVFEBmm5elo6DpeHIK2ayyanMDI5jPfWlbI/5nYn7U4PkgKW76nvfyDdUibEFZqKYPaDYkZPrRer0a52OO6/8P2dYuUvabzvtsmT4Ix3Yf1LQrChYa+wDUqdImpYvrxaBDXH/ksMWI0JQil86T2++3H3khbZH3Z96buq5HbAxlchcax/Vfpopc0EVZvR1uTiCYxnREg4a106VAqZMxMaOVe5E6NeizEoBhY96X0wKsIzOGtaGgp7u7Bhy/9WZDgAUsFSOPVVEczYzZA1B1tIJtd+2cg7J7xMRtkn6CtWYc+YQ/ugM7n3Fwux4fcxK6CJM9zr8bjCcU25E1VwNEFo0Bf+IB66a572PffNb4m6qfABsONDXNHDKEg9jw/XKblrbiIDY400We2EBYqVUq1ayZTMSManhSHL4rWfvlFnaueOz3Zw70QNoVt8M1sCKlaR5CoFUlHsW+wNogGIGMBgbS2/TG3BJAXRZBxEmnUdS8fvJjQqAVXbSGgpFlk1e76FWfcj530NkhJp2JnI+lCIyEBq2AMKtRBLnHWfCLibSyBtKlLcCMqDRtHg0jM2vUNUbNiZoNCINEM/fylqTO0EalV9s75qKRcDc8VhyjoxxAo1eacN1L7CTXub95ITOcynLTZUSW2rG6vdQ6D26MuEidRH0uZso95WT2TAYagr9+OlzenGand5g2gQizKvrSxiSHwwxY1W7vh0B2FBGh46ZSgJoXoqmrsmYYYnhrCv1ozTLXPzzAE43DIut4dgvZoNxY2EBGiIMOi4/JhUHlqczzfbq6m3iAyupXl17KsTmiM+WOtFIFyXL7IdZUQJ1ewHxXW+40Ox4JL7iRAdC0/z3T7/W/j8MtAaYNqdYmW4qVCMQ+c8Kqxe6/MhbbooJ/zpP0Kte+BJ8M3NYnbAXCPs6o65VdznAyOF1k9nRmVvImcgFoY69FK8WGrERIA/kP5b0Z+n/lZJksbLsrwOQJKkcYh0bz/AicPi+GRTBSDqoq3dguhOmm0OXl9VwqyBkTxz9gjeXVtKQZ2FY7OjmJQezr8X7fK5cf1zTjaLtlUyLSuKV7upHQPMHBjNnhoLerWSJms/a/JMVfDxhVDVLXXnuP/CsgfAUiteh2fAuKvESvX+yB7Y+IaYFSxYKmb5wjPEQ37VE10rg2uegRn3grkKGvb5ptYERgh15d9D57l2x1wjBsn+Ae3Rh8cDW9+BH0Xdsh64LOEYrKF3cNFAiP3i9K7Uaa0RjrlF1C7JHmgsQNm4B1Y8BCc86w2iATEZ9O0tuOc+gbJsDZ7QNNY4MxmZbOZ/22RqW+aTHXEyG7c5mOeGG2ZnYyz+nvBvuzn37RgA531GQGiyqOGv29UzFQxE6u/km2DMpdg9Kn5YXU5YkInnlhVgandxxZQ0bp2diVbVNejWqPwBdH9xuD2Y210oPHT9HhRKb1mJFnHPU7d1E55RB8Cwc1B+exMRskxE4lhSw9KRti/s6tPpZ1+0XCi61uUjzboPyteD04b0zU1dfSOzYcrt8NmlYhAXlgY7P4NtHxB25pcY4xJ9j+3nL0lJg5XY4D6mRreUQlDU4TsZpQqMcWLyOna4t9ntcVFqKmVO6hyf7iqFREK4ivwqJ6NS+6g6fgSRJIm0kDRyG3KZnjT9jz6dvzRJYQH8vLe+R3uTzUGd2c6KPfUoFRLlTW2sLmjg3hMG8fWOanZUtDIpI5yBMUb+76udvHjuSO78PNcbkKuVEk+dOZxAnVglbrA4WJpXh3I/Qc1O/QovDhus/B+sf7GrbeCJIvvHVAXpx4o66BUPieDas9/z2FzrHUtgN8MP/xJZkHMeE/XNn14sUsHDMyDvKxG0DzxJBOzrXxT77GTX52JFe+b9opTrh7tEkK0LEc+B3nA7hOPD/nSf2PXzt+CgU5SSJOVKkrQDGAeskSSpRJKkYkR99JTDfYJHI/nVJj7dVM5nmyvYWyvSsUcnh/LKBaMYGm8kUKNi8oCes6szsqNZX9xIfsc2Bp2KgbFGFudWk1dj8gmiAT7cWE5Jo40Yg4anzxpOTkIwA6KCuHHGALaXt5IQpsfh8nDtoHbY+j5s/9DXe+9A1OT6BtEAKx+DIad2vW4sEDNzvc2seZxgqRJWA/t+FKkv+d+IVW51N89KhwUs1cJ6YOINMOkmIdww5HQ47wsITT74uf4aQ07v2Tbmcn8QfbTSXALLH/BpCqj4hROTnYTmvulbf2w3idSuGf8WpQbjruqwusDHnsinf/RgmPUfFMPORGsI56aRav4vJZ9XhuZzelIbGgW8tqoYydpI+Kr9ZpIb90F1R4JNRLoQMUnZ7/YWENb196A1sLe+nSeX7mPJ7lpM7WLi7LVfiiiuP3otZ/4sxAbruXnWANThKbjGXSOug4k3wPT/g9GXYA/JAKAp6biujbLniZKTztKZ9OlIOz703XHe110ZNvpQmPOIGGBlzBSepN2pz+9K6a7aIu5xljqwmwkJCvKKnfn5a1PUYCW6L2ndAM2lh0exuzvBib7lVECpuZRQXRg6Zc/zTAxXsav86BXASzYmk9uQe/COfn4zsiwjIzM5I6JHst45Y5Mwt7u447gsrpySxi2zMhkcH8xV720hMTSAl84byb5aM//6cichejWbSpp9VrWdbpnPtlSi7NhvGK0sPcHOz8cW8dUcBydnBRBt1JKwvw97YwFseMm3LW+RqDNu2CtWlbe+I+7r2fNF2nR3egtkq7aKcWhdhwViTa64b5sqxb184Hz49hYxbh14gu+2dpMYk8YNh5AUUcJ4wZfCNrM3gqJg/DW+bQqlCOb9/K3oS8Qx/7CfxZ+I7eUtnP3qOmwOMag36lQsvGI8g+OCmT0ohjHJoeypNfPJxnL+PX8gn2+pxOZwc8aYRPbVmrl0cipuj8wFb2zgphkDKG6wcSAnnEarHYNOjc3p4ZgBEQRolKzc28C6ogbmDIllQ0kTy842ErpwXleKsy5E1AnH/orgTWcdyf5t6kDftoDw3m02FAoYeiYs20/pMDxdDDQ7yZwjVnGaimHYWTDzXhFMa4KEB/XvJWmCSDH/+RER3E++FdKn/f79+jk8uNt7zXCI0ClQW3sJjlvLoWCJKC+IGijUtgHwgCbQRyBEHnwqyrBUUIuB5ITQVpTvX4jUUgJAokLJCzPe5MTvNJitVl8LjU66zyTHDIF5/xPp4nmLIG6UWCEPS/V2adt/hh2RKtdbu5/+oVRIxIcE8PCSfCaPCkfVTVXVlTmXqjYVqcCXjfHM/H/2zjrMrurqw++5OnrH3T3JxN09JEGS4BRtcSi0UKDFirWlhaJFCxT/cA0QiIcocU9mMpJxd71+vj/2aO7EyFiS/T7PfTJ3333O2Xdm55y99lrrt2a9Qdy+l9H6xYkImVZUZ5eCiE6jNxrfGNTZj6EsvlP83afc09lD0YrDJjYHO87boZed+iag5LThcEUjISdaQ7r6cCdPcY/gEy02rztwqCqDcK/wLrvHBupYc/AU06h6kDifODYUyuDGnmRHXjVXvrmZW6bG89xlw3hnQw51zTaunRDDOalCRO9vP7RvzoyN9eev5w1kdJw/j3y7nzmDQnE36KhrtnUZbVlaZ8buVDGY64je/TzG3e8DEAk8MeaPrB32OzyNR5gbtuauBWtbN8yddrGZPnChcMa4H5G+6B0Go2/o7NHWGkTIdeRoSF/Suf/Ia6GypQJDU5VIw5h8twj/9giA6Q9AzESInwbjfw8GD6HafSyGXSEiM7e8KWrHT3+g5///S/odxzWkVVV1TdA9i/l0a16bEQ1QZ7bzw57ittIYfp5GxsUZ8NDryCir595zUvA0aqlqsjIjJQhUOPel9agqPL8ig6RgL66dGIufhwGtRsHRoUzA5aOjGBDqjd2pklfVRKPFwaLh4dSZgyips3D9xFhMu/7aOU/YXCMW/scypL2ChSBYx9yPQYtalLtb0OrFzlxXlB+Ckj3CKN7/tchPGfYbEf4YP10YPoMWivff/xEuaxFnUhRRW7q7MHrCoAUiVBOnCM2R9BsazDb2FdaRV91EiLeRkaHheCfMhqwOxo7RREBIFA1DrsXnSPXt8BFiLoPwwFSL9IaGhjqUSz7FfdOzaCrSaBp4CdUDrsRoUQhs2Z9x5G1B12JEA+B0kLDnOW4Z9wzo3XDOfxpNTY74f5C/GbJWQ/CgztcPSha5WlPuEXNcZ6TZZmd/YR3ZFY2Y3HT8dkIM725qv0UOCPUm2l+G+Z4qFfUWPtiUw8vzfHH/pnPJMd2hJXgNvYmfD7kRGuDPeV+aODflScLr3bh+kJWA7S+IjnXFIqyvMrP9YJ9INKpKwznP4Jn5ffvmSdYqEVa4/+sOFzKiGjzh8o9QNv5HeKiHXSFE51oWWDaHkwNFdWSU1uPtrmdwuIkIP/n3P5PILGtgVPQJPrdq8iHpnJ4dkF80HPhabBQpIqgwreogsT5xXXaP9NdSXG2n0ezE063/5UnH+cTx5p43capONEr/G9/pjs3uZF9hHbfPSMThdFLZYOGSUREMCDXRbHOw9lAFNofKkAgf9hYKJ8uWnCrumJlIaa2ZRqsdvVbDdRNisDmcNNucfLw1v9M1LhoZyZI9xUz3ziewxYhuxbTtJYZcdgHrMvSkhHpR1WijpM7MuKBgogOTUTqWrfKJEkau1iBeo2+AlPldRxlqdULc0c1HeK794mH8bbDkXnHfn/EQ7P1MGOtT7hXr2aKdIl1H5yYiKg+vgekPweBLwaPD+vFE16neoWIMw34jngkGz+MfIznjkDGwJ4HTqZJb5VoyJbeyc9u23GqufmszFrvIFY7wdWfRiAgeW3yA/1wxopOxnFHWQG5lE9/vLuLBcwfw1Y5CyuotzEsNocnq4J7P9+Bp0PLEwsG8tymH1HATH28RN7FJ8b58oOucOw2IENpjYWmCC1+HX14XwgwDL4CocSIMpiYXfGJg9iMQchRj3NoIB74Ru3hJc8T7sgNiMQqQOEt4Er1C4OL/uYqVdTdu3j17fslJY3c4+WhLPk8uad/lvmx0JH+f+08MW2PF/AkZCjMfQg2I570tVdw2+x/ot/1XbOIM/Y2oZ95xx9pho3LE7RTG/IaHfqrhmjFPke1ZxrIDNrLXHubikVYeuSCVnIoGgipKONI/o28s5pJUbzz3voVm16tt7ep5z6EM/Y0w1p12CB0q1OlBRF94tittL9lTwj2ft2ssTksO5C/zknlzXQ7TkoO4fXoCATLk95Sx2B3MGhhCTkkWA7soOWZpquOJpQfxcddz58wkvtpRwJbCemaceyk6vQGffe/hLN0P8/+NsuN9lJy1YiEVPwNWPYFX1DjU1jJB3qEilD8gXoTl7v8afGNg7M0oB76hSeeDZuEbuGkVMRc6xEZuyKzg+ne30npLHxxh4r9Xj5LG9BlETmUj5w05impvR6yNYmPG3bdnB2T0FlEStfngG4OKk8yaTKZETumyu06rEBWo40ChjTEJ/e/eZDKYMBlMHK49TILvUcJoJb+a/Oom3t2Yw+EKEcGl0yi8eMVwXlqZybrMirZ+d81OorTOTFm9uN82We0oCsxLDcXqcHLDe9sI93Vn0fBw/jw3hS93FNBsdXDp6Ci25VTx474SPp5jwaUuheoku7CMz7LshPm4882uwrZxHLjxBQy//EcI30aOFY6Y/V+J9WlVrihRVXZApF6ByHkO7FBeyjdKiIyNuVF4kLe9I1K/6ouheJfY1HLzEWlaPz8NO95tP3b87yFxjujjcYpOGI8eUumXnBb0qCGtKIobsBYwtlzrC1VVH1UU5THgJqBV+eBBVVWXtBzzAHAD4AD+oKrq0pb2UcC7CI2iJcAfVfVohYx7Bo1G4fLR0WzI7BwWunB4+5LdbHPw0sqMNiMaoLCmmbgAD/40J5n9RbW8dtVIUFXSShuEk9agxddDz79+TGPhsHCuHh/Dy6syKawR4YSNVgfrMyu4ZJQwxlvZnl9HzoxLic/b2Gk8tQnns/VAKanhJsKOzEspTxeF/76+E2LGi9yTsjRhPBh94MrPwDtc1PI7Gv7xLeqhxSIvG2D246LgfUc2/gduWS/KCEjOKnIrm3hmaXqnts+2FXDFmImMnPeUCNM2eoPBAz0QExGB1ZiEfuZfhdBYxnLI6+Ch1mhpDBvHRVtVLPvL+b8r4mjM28ko3xomj47gqZ1ufLmjkCvGRPHptnzuSh4uDJ6Ot4iBFxDadAjj7g6hYMOvFHm0+VvEe0WBS9+nMnou+wrrqGy0EBfoyaAwExUNVp74vnNI5c+HKrhhcjw//XEKvh56KSzWTei1Gt7bmMOUKHdmhY/FULSl/UOjiVr3GLLKiwBIL6lj1sAQIn3dWVWk8njGND44ZxS+Bz6Ajy8XQoruvlB+EJY9LM6RvxnOfVZE4Uy6C5Y/InLu/ONFabW46ZC7HiJG4lG4nYqidNY5kwg21TIwzBuDTktNk5gPHfZF2VdYx97CWmlInyHYHU6Ka8wnliNdmy+em73hVfWNERU2fGMoqC/AXeeOl/7oz9mYQB178qz90pAG4ZXeU75HGtI9wN7C2jYjGsDuVCmqNXcyogHe3nCYS0dFYbM7GRhuorzeQpivO3GBHry0KgunCgXVzSQGeVFSb+b26QkEext5dU02m7LFmnh/cyATvII7pfg5/JPYUmtiYmIgzy8X3mejTsNdMxNxaGqEw2XgAhFNWX5QrC2NvrD9UbFW3fBiey60ux9c950wqFtRlPYyqhEj29st9UIccuZfhaZPRyMaYOsbcOsGEeEhkZwCPX3HtwAzW8pmDQfmKYrS6p58XlXV4S2vViN6EHAFkArMA15VlFa3Aa8BNwNJLa95PTz2LpmaHMgTC1MJ8jYSanLjiQWpaBWFHbnVNNvsWGwO8o7wWt85I5Emm4PcqibqLXbe/yWXnKom3t+UwwsrMnhr3WEmxAdw6agoDlc28XN6WZsRDZAQ5MmIKF9A4Y+zk1kwTBjuZpuT1wviqJv5pLgZmSLIn/oMf95m4sb3t3HLh9spqD7Cg151WJTxsdYLY2X7O5C3UeSMOizw4cWinp7V1fPehk8EXPmp2MkzeEHKecKrcyTN1WA/xnkkZyyNFjtWh9Olvd5sEyFZ3iFiB7mF+YGleC6+Cb66SRg/nv4irMvNBzV4EPaL3+WGVVpyK5uZF6cjetPDDF1zPQnr/8TkNZfz0sgiAjwNNFntzBkYwpr6SKyL/idCvNz9YPT1oDoxVuztbFz7xbYb0SA+W3Ivm/cc5Lp3tvCnz3Zz4asbWbKvGKvDSW2zq5J3g8VGsMlNGtHdiNXhpLTewuf761iV/DD1yReCwQt71ER2TX+b5SWeXDUumrtnJ3H95DgSg71YfrAEg07DE9NN+P54qxCZcVhFSZK9n0PeL23nV4NTUeqK4LznRHSEo0WMqSob1j8PuevEAm7V30HnTk19I78cruJPn+1mxUGxSGy2Oiiucc09rWt2zSGUnJ4UVDfj76nHoDuBpVJNLnj2oGJ3R3yjoVQIKqVXHyLK+9jGQHyQjt25/VdwLNYnll3lu/p6GGcklQ2uf/emLvKcG8x2piUHEenvTnFtM5WNVh74ai9l9VYuGinK/M0bHMri3UVsyKykqNbM5pxqLhsTycwBwpB9dnMTmyf8F1vcTDB4YU06j/UjnuWtHfXYO6wH/jAridke6bi/P194lRvLxXq09IAor1q8Swh3VWR0FhRrroY9nx39y4aPgis+Av8E8dyfdj8MvxLMda59HTZRhUMiOUV61CPd4jFunan6ltexvMgLgU9UVbUAhxVFyQTGKoqSA5hUVd0EoCjK+8Ai4MceGvpR8fUwcO2EWGYMCGZ9RjlP/5ROdZMNvVbhv1ePQqNRuHBkBP9ZmclvJ8YS5GXE3aClvN7CextyqLfYuXpcNOszKrhgWDjvb8qlrN7Clpwq0krqWDAsHKNOy0/7S9FpFG6bnkC4rzsPfr23bf0/OTGQC4aG8d2eYlbnOwgOnc2ACRMpb7Tz4vpqapqE8bqnoJa9BbVEdvSOaHVdh37Xl4pdvrE3web/CgXvY6kPhg2DS98Vwg7u/iJ/VWtoX5ACJJ4jQiULtolreodCyOCeD32T9DmR/u6khHqTXlLf1mZy0xEb2EUOkapi2PleZxG8n5/GOecfVF76LSVWd9aX6vklNw2dRuH2gc3ov/mh0yliNz/CveM/oqjGwgNfCwXYmVcFED71LyJvSXVC2T7wChO1z7e/Iw7sqsRVYxkNjZ0fvI8tPsC3d0xkekoQa9LbS4gYtBoSgmTExa+lot7CgeI6apttxAd5MiDUhFajEOxt5KIREXy+vYBbf2pgbNRvmT30BqYPTeCKN3bzzGVeLD9Yyv4i8XcyaDU8fckQNIpCQWkRIzouvrb+Dy54EbWhDKW5CtUnCkV1CvXWUddDbaHrwMy1kDQXwoeB3UyUN6RvL2H+kAge+XYfI2N8CfI2cunoSN7vkCOvKJAUIufDmcLhikbCfNyP3xF6R7G7Fb9YyBXaI2mVB4n0jjhm9zA/LbXNTiobHAR49b8NvwSfBD5O+/j4HSUnTWyga3RMXKAnCUGeLBoRgdXuRKfVkBjkyePf7SerpeqEu17LfXNT+GBTLjdNjSPEZGReaihNVgfpJXU8u6w9t/mPs5LIq2oms6yBx7fpuHDwE2iDahk1MIHr/isqxDTbHAR4GlAUiHK3Erf9SSESu+rvEDEKRlyNGjkapakKfnlFCHvWFbl+oWNVptEbhcp39ARRBcQ7VNyU7RYhxNsqKKlohJFdXwz7vxFipkGnWI5VctbS4znSLR7l7UAi8IqqqpsVRZkP3KEoyrXANuAeVVWrgQjglw6HF7S02Vp+PrK9q+vdjPBcEx3dcyEbZXVmHvhqX9v7O2Yk8tA3+yiuNXPFmCievngIL6zMIL9KeJZNbjr+ODuJv/9wkI+25PGHWUn4uOu495wUzHYHId5u3DI1nr//cJA/zk7i7jlJaBWFJquD55Yd6uREW59ZwT1zkhkba+H2GQk8tng/zQOD+XxbWVsZnlYqj6wx7bCLUi9H3ozCh8LiO0U91Jl/heYulL2PxODZLq4QPBCu/hKW/AUqDwnxshkPwYHv4Ls7248ZdzvMfFCE9Z6F9Nb87Gv8PY3854rhPPVjGj9nVDA0woe/nj+ImIAuDGmnXRi5R2DO38lVW4aQVV7MPxalct/cFBKDPKmrWImL36epiunxHsz7UMzrhyZ5ErzhcajOhGl/FqG7LfXNncnzcUy+D/3G53B4hqLtUJ8YwJ6ygMXZnff7apttWO0qfz1/EN7GQ/y4r4SEYC8evWAQySFnzlzuzflZXm/m/i/3sjJNeHi1GoW3rhvNjJRgDDotd8xMRKtRhG5Es8qQgQOpdSg8sTCVerO9zYgG4cF+e0MOo6J9Ka/Sck7UVIz5a8WH4SMh7QeU/V+J7wgir847DDJ+guR5sPWtzoMLTAabWSzyELlJT098gp/co6losNJkcaAzabhpSjxOp8pn2woI8THy6PmpbcKTku6nt++fWeUNhJxoDenqnN5T7PUMAmszamMZ6dWHGBc27pjdNYpCfJCOPblWZqSe4MZALxJtiqagoYBGWyOeR1YPOU3oj8/2BrON73YV8ee5KXz4Sy6VjVbOHxrG4cpG7piRyL1f7GnT7JmeEsTgCJ82Q7rZ5mBNehm3TIvHx13PfXNT+HhLHhMTA3mvw+YhwKtrMrltegI782qYkhTIsgMl/GXeIIobLDx76TAOVzTw2bZ8/rYoleUHynBTzehqO5yjcLt4BT4nhD+bKoXmwDl/g+zVnb9U6oXH/+JH5iz7x8FVX8BP90PxTpj3L7HBuuZJ8bnBC65dDJGjTur3K5FALxjSqqo6gOGKovgCXyuKMhgRpv03hHf6b8CzwPW0rHGOPMUx2ru63hvAGwCjR4/usRzqumYbN02Jx9OoRadRCPN1p6JBiDT8sKcYPw9DmxENQt17a04VqeEm9hfVERvgQVmdhWeWteeRXjY6krtmJ1HVaKXZ6sDbTU9SsBflDa5iO55GHZOTAhgc4cMXt07E5nTgcMC7m3I4J8GD3yU24eOoJCKoDGyhYqcORB3crFVCeXbPp0K0ZMzNwrOsquLmdegnIb7Tit0qcleqDgvF75DUdoXsuiIRYmauE0I8C18GN5MIPastgJ/+0nngm1+FIReL8gRnIb01P/sDKaEmXrlqFJWNFnzc9Hi767HanRwqrSevqolALyMpoV6Y3PRUJV9OQMG2Tsfnh84ia08jV6R6MNv9EBUNpeBIpEgXTWLKeUI8SgECU3DWFuLTXMSfxpmIMjYz0eMwOp9zhTrnL6+1GdEAmkM/UjHgKpaOXUxWnparZv2PhK2Po6nNxTLgQiyT7mPza51F/MbF+RPu44aXm55nLhvG/ecOwMugw8fD0Au/yd6jp+en2eYgvaS+LXWl1YgGcDhV/vrNPr79/SQCvIzEBHjyt4WDuXNmIgadhk+25PPs8kPotQo3THZVKM6pbGRsrD8/pNdz/tx7mWLwxjN7CWrCTJTMFaIGtdZNpKbUl8CcJ9pypp2jb0Cz60MwmlDH346i6GDnB53OH77lHww/dzyvXxBMTNV6qHQSFTyYJybqeCTRguJmRB+ugRMJA5b8Knr7/plZ1kDoidaQ7g3F7lYUBfzjqc5dh1FrxGQwHfeQuGAdO3P6pyGt0+iINcWyt2Iv48N6WJy0h+gvz3ZVVckobSCrogF3vRa9TsNra7J48qLB7C2sY1VaGaE+bjy9NL2T8O2a9HL+NCe507kOVzayMauSRoudq8eLTcTQLkrB2Rwq4+ICuGFyHPVmO+PiAvjtO1uobqk3Hevvwdu/HcugAA3nmPIwVxZgm/c0+q3/heJ28U4lJBViJ4v5XbpfOH7G395+Lx752xZByG+FsRyS2tlori0Q4eFOuyjH2lwt7vX+cSKK8pqvxVo1a0VnZ5K1ATa8ABe/dfySVxLJEfSaareqqjWKoqwB5qmq+kxru6IobwLft7wtAKI6HBYJFLW0R3bR3mf4ehj4bncRJXUiRy7Mx407Zybx3PJD+HkaOuU4t5JX1USknwfFtWbSSxsIPkLd97NtBUT6eWDQaaiotxAT4MGGrArGxfmz+XBVWz+tRqHRaue55RmMiPJjSrIIJ7t+cixR3g4W1n5E4M8tgkobFFj4mijboiji5jLsclj3Ioy9WQg7eQbC0gfbB1Kd09ljnPYDfHl9uzEy9haxKG2sgE+vaq9p6e4nSgUV7oD5T4sbVsfSXK00Vbm2Sc5I3A1aIjvkQi8/UMKdH+9sE2i6bkIsf5ydyHfNQ7l43J/w3vEaaPQUj7yL/+aGcc1QhXttb+D15Q9CDVSrx2/R5zhKvdCu/gfM+yd8ewcaSx0ewLVhI1Cix0Pr/L/gP1DnGrqrtdSxriyMFQdLWZPjy5NzP6GmppYtlXoeDk3hnd8G8tA3+8itbGLmgCAemD8QLzdRW8uo0xLhK8WkThaHU+WrHQU8+LWIPrhzZqJLn8KaZhot9jblc71OQ4SfB/sLa3luhQgltDlUTG6udejnDAxB06Ivd+tPDUyNu4X542/jQn8zbt5727zLKIqIllnxGEz6I9WleeQmXsNe7YXU2hRG6xXGWLfjEgBrtxBvqGXEuj+jVB8W6vJz/4lm2cMYWksJJs6BBS+B6QRUniX9nqzyBmYPPIbwZivWht5R7O6IXwzN+ZuJDjox72diiJ5V++txOFW0mq58E31LnE8cu8t2n7aGdH/hl+xKfvvO1jbB2ymJgZyTGsKh0gbeWJtNiMnI4HAfXlmd5XKs7Qhdk2lJQaxMK6O41syCYeEsGhHO4cpGTO66TloQEb7uxAR44ONuwNuo55XVWW1GNEBOVROHSyoZnP01mpVP0Jr84pz+EBprE1jqsM/9F7qw4aB3g7n/FGVWN78qFLtHXgtao3DQfHyFMJQBhl4hxCQ9A0Q+9ce/aVf49gyECXfCikfFPf/it0XKopup6/TGsv2itrU0pCUnSY9unSuKEtTiiUZRFHdgNpCmKErHVcaFQGtc52LgCkVRjIqixCFExbaoqloM1CuKMl5RFAW4Fvi2J8d+PFallbUZ0QDFtWZKas2E+bgxe0Aw01Ncc6UmJgRS22TjzpmJfLApl58PlTPyiPqUVoeTp35KY8HwcKobbXy5o5BpyUFMSAgAINzHjUcvGMTn20Ske2WjVeQ3H1pOdN7XXB9VRmBHVeIW8aTWGryAyEdZ+JLIFY2dBD/cIzzRrQy9on2XrzoPvr+rk0ePLf8Vu3mHf243okHs/uX9IkpqlewFn0gISOr8S9C7i91ByVnD4YoGVh4sZevhKh78el+bEX3jSC/O9z6EIWs5k2M8+N7vOj4e8yX7Fv3EExXTmRYBf0ksxCt6mFCXB3DYCK7bi3bvp0KU5NBSsLSH+CrFO4VKvLbF0Nr/NSTM7DwgRWGfJYjyegt3zEjk/vkDuPXrXG5fUsHAyEB0Og2Tk4L46raJrL1vOq9cOYqkMyh8u6/IqWjk8e/a7xdGnbZjJSlAGMPBXXgAq5usndJbftpfwn1zU/D3NKBRYG5qCMHebgR4Gdj6O38OXFzNK+OqGRnjL/LhWqsLgLgnbnwJUhfh3PYOn+gW8fTGOpYWGnhmYy1XflvDFt1o1/QTnyhMSrMwokGILG5/B+ztzwEylwuhHMkZweGKRiKOrHzRFb2p2N2KfzzelVlEmSKP3xfw8dDg5aYhu7R/iuEl+CawrXTb8TtKjkptk5XHvjvQqWrMuswKJsQHMCTcxD3nJPPQuQP5YnsBE1vWlK0oCgwMM2Fy16HTKCwYFo5Wq6G4Vtzf3PRa3lybzUdb8rh7djKJwcIcHhbpw2MLBhFpMkDJPtRDP3HvwGpWnd/IZ+dYuX6E6BdPIaz6W6dratb9G9vC13HevBbdkIuEEQ3gHwsJ02HwxcLLvOkVkd/881PtRjTAnk+gtMV8yFjWbkSDcPSU7BG5z6oK398t1rMg1g5HMvQ3Ur9H8qvoaY90GPBeS560BvhMVdXvFUX5QFGU4Yjw7BzgFgBVVfcrivIZcACwA79vCQ0HuI328lc/0gdCYx3ZlV/j0pZfJfJOAFanlXHD5Dg+3pKH1e7k0tGRpIabKKsz888laVgdTrIrGhke5cuOPCGM467XkhLizT1zkhkc4cN3u4tRVfj3snQmJQTy+xmJaDXgadBy8ahIduRWMyHEAT8/A9veBkCZep/rYK0NrjnP7j7i5REg8kVWPgG2Rhh+NQy/qr2fuQbG3SJ+bq6Gbf8T+aSW+q5FHyozRfh4U4UoSXDJ2+IGVrhNCKQseEl8Ljkr2FNQw9X/20xds51nFybw8lQH3o5avAMjCT/wNu5rvwYg0c0XjwUfMfGbGryMDfy0SEPkkmvEDjGIeuWDL4Z9X6JYWuaybxTkbHC9aFOliLRoqoTDa+DS91GdDpTDP4NXCNnjnuAfW7QcKq8h0t+djVkVmK1Obpsez/SU9uzrAC+jrAndjdQ22zot8L7ZVcif56bwv/WHqWiwMjMliL/MH4Cb3lUMKcrfA5Obrk0DYk9BLUMjfLh7djIldWY2ZVWwOr2cnVfp8Pzqd+L+BCTHTcc+4U6X82GuBZ0RTWUGPklWNmbVcd/cFJyqysasSv663sanCz/Af+W9KJWZIvf13H+jKdsPU+9rz6k/9JPruRvLXdskpx31ZhuNFjt+nieQvlGdB54n4LnuRpyewWjsVhK1xw/rbiUhRMfOHAtJYa4RHX1Nom8i7+1/D6fqRNObGxJnEPUWO1llrkrUJXVmGiw6XlyRwa3TE1iZVsaf56agqrApu5IgLyP3zUvB4XTyx5nJ6LQKn23LZ/9usUmtKKISVev9918/pjFvcChzU0MZHG5iSIQPpC+BL36H9py/E7DmnwSYa4kHhkRNxW/cPYTqmzpXzABwWNFjB1MXVV8sdWAKh/NfgNo80HsKcbAjab3flrjqrFCVDT5RouyruaZd0DRqLMx/SkQp2ZpgxLUiUlMi+RX0tGr3HsBF+llV1WuOccw/gH900b4NGNytAzwFLhgazrqMznX4xsT5427Q8P2eElallRHp587V42PQaRSGR/lw8wc7OvU/Z1AIh0rFjSrSz53fTYrl2WVpPHPpcLLLGxkb58/n2wtQVSEwtj6zghsnx/GPJWlUNVq5dFQkQQ1pbUY0IHbEdUahUtiKX5zIC+wKN5NQ6k6cI3bVrQ3ixuJ0Cs/ylzdAxaH280y9D9Y+I9QQY6fA5tc7ny9uChz8DibdLd6HDYWrv4LGMqGa6OXqqZecmZhtDl5ckUFds52Z8e6cU/kh3tteEh9q9ULULn+N2KAx1xC04z9Mjb+daG8toRvuazeiQZTGmCnyWR3ekWgVDeRthvjpLrmsmCKEEQ2gaCi0m/gm6BGumO5OmVnHzd8Ukl/dzKwBwdw2LYGSOguqqjIozNR1vdiaPBE2pjVC8AARMiY5acJ93QgxGSmtE/emzLIG3t+Uy//dOA69VkOojxseBtdHksOpYrU7ef7y4fzt+wPkVDaRHOzFqFg/6s12XlmdCcAjM0Pw2HB/mxENoBxeg3b4lWK+dVRoD0iEuiIa4+ezJEcY9+9sOMznlwRjHG6nSevgsxwvrlnwFl6OOlGZYPWTcGiJON7dT2xAJswUC8iOBLiGrEtOP7LKGwn3dUdzZNhEV9TkCP2QXqSsqZQ6owdBtYXU+pyYVzoxRMf6dAuXTejhwf0KfIw+eBu8yarJIslPbrb/GoK8jMxNDeGHvSWd2uMCPXls8QHsTpXSWjOxAR78e1k6kxMDuWNmIvXNNpJDvLjktU04VJU/z03BwyA2NAM8DVw/OY6tOdUkBHmSVd6Ixe7k211F6LUK390xmVC1Ar77g/D0pv3QqQKHe/5arh52Le4hw0SUT4f7M14hwtA9ktoC+PaOdqExdz/4zScQMxly17f3UxRR6grEZvvujzqfJ2Yi7G5Rgw8aJK5Xsk+cP3Yq3LJOGPc+UaDrf5tLktMDue33K5mWEsT1k2LRaRT0WoVLR0VS12ynrN5KRpm4URRUN/PG2mxeXZNFdkUTt02Px02vQVFgzqAQtBqFC0dGcsfMRCYnBvLcskPkVDbzzLJ0Pvwll5VpZVw9PhqjToNWo3DB0DDMdidVLUrcn28vQK0v7TywHe/DrEfETh5AcCpc8s6xH/LmOtjxHrx3vsg/eWMq5KyHA4vbjWgQ4eEN5UL9MGgAxEyA6Q8IQSdFAwMXCNXv2Y+JMletuPsIL7Q0os8qGsx29haKB+oNSeZ2IxqEUbPxPzD0srYmfekubhwTxLAgDbrKg64ntJtxxEyhOWwsjvnPilroHv5CGE9RQO+BZfoj2GtacqI9g8ia8RpX/2Tn32tL+dPKRmLjEvnk5gms/NM0Hj5/EPd+vofr393KDe9t46q3NpNZVt/5miV74a3Z8OFF8N558MUNQlRIctKE+rjz+tWjSAgSqrwRvu48e9kwUkJNxAd5dWlEA6w4WMq5/1nHHR/tZEysP69cOYInLxrM/V/upa7Zxg2T4zDqNIwIcqJ0FSVTV0zmrDfba90HD4LR1+OoKyVryF38ktuIl1HLt+crxH01n/AfriVx8YXcYnkHr41PwQcLhbF8qIPB3FwNOz+EkdeIKgggBBgXvCxEbSSnPZllDScW1g1QldPrhnROXS713iF4lhw4fucWogN0FFU7qGt2Hr9zH5Dom8jOsp19PYzTFqNey5/mpDA1SWz2mtx13DU7ieJac5to7eLdRVw7IZakYC/WZVTw+bZ8Bkf4YLE5sDtVVBWeXpqOp1HHK1eO4Pxh4fxv/WHe2ZDDleOiSWlJcwr2NvLPi4YQ6ecu7ofN1SLqsIt7sHdTAW4hyXDFx+AbIxoDkuDyD7t28uRv6azW3VwN658T3umoFoV6jwC45F0hOAbCsTP1z8KRpNHCiGsARWjyhA2DC18X6YhvTIWPL4fXJ4pUHJ9IaURLToleExs70wgxuXH5mCjcWxZ/q9PKyCxr4P75KUyIDyS/qvNi2+ZwsmRvCf++eCiZ5Y1syq7k3Y053DA5jlfXdBZ9OFBcx3UTYnn4m334eRq4b24KQyN9eHJJGt/t6RzaYvOJ61y+p74Y9n4B13wj8pq9QjqrGloaWsJcasVNT+8hygGsf669j90Cv7zcqSRQGxWHIGGG+NnNt0VV8TYhAuF0QlWmMKwbikVYjdEkSsm4nXj4meTMwM/TwLlDwnh3Yw4mRweBOa1eqMa7+4s5mHoh7P+aqtjz+O/Wai4YHIQ1YS6GzM5hsxUBY3gifzr3lRfhteZvMORSca7ggRA1Fnv0JMqqm3BEzqc55grW5Fr5ea+T+0fZ8FObqNY102i2ENFSV/3NtdkcKG7Pr86uaOTbXUXcc05LPUm7DTa8BA0dNqsOr4G8TSKsXHLSjIj24/NbJ1BRb8XXU0+wd+cIgIaqYhxl6aCqaINTqNH48pcv92BzqNgcDj7fXsDn2wt49aqRWOxOnll2iJkpQfz7kqG4++lQE2ajHPi60zltfvFc9IWRm0a8xaQILXHuZpzNtTSMf5RyRwg//nEgns5aQr+4sJNWhGb3R0KU7PA6MFfjQvlBCB0Ol74nBO307uI+KDkjyCyrP/HSVzW5kDK/Zwd0BIdrc0gKTMQj42fxrNYcvz60TqsQF6xjd66VKQNO8Lv1Igm+CWwt2cplKZcdv7OkSxKCvXjtqlFsyKpgS04VH2/JY1xcACkh3qSX1mOxO/nnjweZPziMP8xK4pfsKv72/QGev3x4m4iYqgoV7/HxAby3Maft3P/6MY35g8P4/cwEyuosfLOzkBCTGxEGE3EBSSgFWyF+mliDdsAcmCoExuKmwG+/F1FeGr0oQdgVHR04rRTvAYdZOHLqioQWSsdIDK8gUdZw2BVi7esbIyLTRlwtrtNYDgcXC2NbdYi18IrHIXoihPabYFfJaYg0pE+BQC8j3+8pIreyXZl6d0Et01OCKKszs+ZQOQathsvGRLE7v4bcyiY2H65iS04Vh0obSAz2ahNs6MiE+EDe25TDhSMjeGvdYZ76KY0nFqR2WQOswCOFxAUvC9Xt5moRVnjO37suLt9UDev+LYQbQHhQZj8GDSWufXM2wKzHIHNF5/bUi9p/tjZB2mJhmLei0ULkWHhjuhgPwKjrYeZDMiT2LEOrUbhuYgw5lY2Uao0MUTTiATfjIZGOUNMq/DER5+y/kW4cx8ZtFfySU8vQy+8huakSXdFWMHhRNO5h/rTewC/5dTySUid2mTf/t9P1dFPuJWrdMzhNUeTPe4fvs6y8MfggEev/Kq6rNaAGvQWpCwHYmuOqHr8pqxKnU0WjUYTHu2CL6xcrO3EPkMQVf08j/p6uued1hem4L74ZfekuAGzBgzGe+wY1HdRfW7HY2jf5VqWXsyq9nMcXDCJu9E0Y64sgfzPo3VEn/IFiYzyN1jzyau1cbf0cv/3vARDg7od51v8Ijp2KR30pmsouFm8Oi0h38eji3jXgArF40+q7vt9KTmsOlTYwNOIEaoKba8FhbS8J2QvYnXaKm4oZEzYGu5sv7pXZNAedWDh0YoiOrVmWfmlIJ/sl80P2D6iqinIiIfWSLvF00zE4woflB0opq7ew7EAJz1w6jBdXZJBR1oC7QUtKqDfPLz/UVjc6u7yRu2Yl88babErqzISa3Nqih1qxOVTyq5oorjHz/qZcxrZUlHlzbTafnP80w7f+GcU/QYR4524AnRvlo/+EJni4MKQbSkWKTGu4tWegMIzDO2SA2szgH+/6peKmiI1ON9PRHTMarahM04oprL2CQkW6SFtc80/x3isEZjwgNS0kp4w0pE+BAC8jL14xnH//lMaYOKGAODrGj1HRvoyI9GVXQS2HSutZdqCUzBYBiBHRvvh56jknNZSCqma+2VnAHTMSeXNdNha7kxFRvgyOMPHsskNcPiaKP85KwqDTEORt5On5oTQU1lBnU/ipxJthiTFEBvlD+JVCDKe5CnxiwO8o3rLSve1GNIgFwOb/wtR7RWhsRyEIn2hInAEjr4Od74u2YVdCcoc6mW7eIpy7/N/tbcnzxDWaO3hwtr8NA8+HxFmn8NuWnI7EBXrxym9GUlJbj83/LfRbXxfh0q1GNEDuRhoG/ob1VT7cMcOXSD93/i+rBqvHo0yfZCEiJJDfL6lsKymX4wzGxawJSRUREICmLp/A/W/zypzriPjyr+2K8w4ryuI7RN6+fxyzB4Ww7EDn1IjzhoYJIxpExMXA84XCc0cix3TPL0fSCU36D21GNIC+bB9e2UsYFjmB3QXtOXdajUKUvwcPzB/Ac8sPYbE7GRntS7yPBuXnf4uQv2l/BocNZe9nOI0p3HvOMCZr9uK36r32CzZXE7/1CQrDPqHM4UF89CS0eUeI1+laQntzN8K424TYosMqwggn/L5dHV5yxpFZ1sC5g0+gjFn1YfAOx0WCvgcpqC/A3+iLQaPH7BeDd8nekzCk+28ZrBCPEGxOG4UNhUR6n1jet6Rrwn3deeT8QVw2OpLaZjuRvu7cMCUOD4OWrLJG3t2Q0xburdUoeBq1PLkkjYXDw/HzNBAf6ElRTTN/mJXI/9YdptHqIDnEi9+OC2OcqZKF86wU4aRMa+KR8wdR5KFDP+9TgtRqDnnNxRxbh1nVEZWYyvDAlqjIol3tRjQIZe2Vf4PLPwBDi9FekQ7NNaI86/Z3xf02eoIIBT8VZ0xtYWfHUEMpZK6CpN6NJJGceUhD+hQZFGZi/pBwHlu8H7tTxV2v5c1rRxHq44aPu44wHzfqzTbhnZsQw7TkICLKPPjDJztRVbhyfDTjYvwA4QVLL2ngueWHCDW5sT23hg9/ySU1zMSF53oR/P3N6KqE12RC0nnsdXsAqz1MqNyGDDr+YOu6UDwsTxPt0x+ADf8R3he/OFj0ivBuz39ahG6jgl98e3mCVoZdKUJuMpaK3cDUi+Drm7u4dp+W/Zb0IZ5uOhLc/CDkYogcAR+7hu3pS/cQFjKNUJMbZruD8QmBvLyqhs/3WXj4XG9+M84Li81Bk9XBv3eW8fz0Zwnf+AhYG1H941FGXA3LH2m/ZtEmDIMXdC7bBkIJtLEC/OOYkhTI5aMj+axF0O+CoWHMGdRBeVejESXiSvZD9ioxvyfc2Z6jJelW3ApcFdiNeT/z7KW3smRfMVaHilGnwdddz/1f7uHh8wfy4x+nYLY58NDrSM9Ix1CyTYjZdBAAC1dLURRIMNa7nF9ftpvD+YXc8G0pX1/8IEOa7kFTkQZ6d2zTHkaftUx0LNsv7pFjbhDlrnxjZLrKGYzZ5qCk1kyIzwmo9lfnCO9WL3K49jDBHuKaTf5xBB38gbIhizgR2RsfDw0+HhoOFdsYGHECiuS9iKIoDPAfwNaSrdKQPkUaLXY++CWXZ5al41TB5KbjjWtGEeBlxMdNj0GrIb+6iWX7S/j7hUNIDvFidIwvfi0lBf09DVQ2WPhyeyFXj4/BoNNgVM1MqfoS/x+eBNVJqNFE+fnvMH2JnWabg2smxBLj58+0AcE0Wx0EeRs7C3h23EBvpWCrcOq0GtL1pbDmSZjz95YKCTaoOix0efwTXI8/Ubq6dskeESIukZwC0pA+RTLKGnjk2/bauEHeRnbl1/DSe5lY7E7c9Vr+edEQQn3cMBl1KIrC+IQAvrtzEttza7jv8918423kstFRvLYmiwaLnWBvI7dMi+eZpSJk2uaw47v/gzYjGsCQ8QM+obM56B3OuLiArobmSlf5exEjIf8XsVM45gYRlh01tl04Re8mclCPRkA8XPI/sZjQ6IRictwMyDoiJNwv9sTGKDmz8Y2GuGlCBbsDhoghfLu1kK251YT7uHHz1HhunZ6Aj5uOjVmV/G/DYVRVqJLeOTORNZpYPMYNYEyoBh+tBa8vLu+syjzgPBS/GNAaxI52Kx4BbaJTYT7uPL4wld9NjgMVYgI8cTcckWcYkACXvy/EhHR68EuQwiQnSVm9mbzKJtz1WuKCPI8qKtYcfw7e2Z3vG03x86losPDG2sM0WOzoNAr3npPM5WOieOSb/bx/wzii/D3IrmhkYGw4as4klCNKUjk9Q/jXp+mce1koR94BHTHT+CKtCacKl3xdxyuL3kbXUEiF1cCHOzS8uegcQmY3iDnTKuAoOePJKm8gzMcNneYE9Fgrs0QN6V4kuzabEcEiHNbm4YdTb8S9MofmgC5CYrsgIUTH9sOWfmdIAyT5JbG5ZDMXJl3Y10M5rUkrqefppe1pd3VmO8sPllJeb2HxbuFUSQjy5H+/HcOgMBO5VY1cMDyCB7/ai8XuxKjT8NiCVC4cEdEWMfn5+Tr8V/y9/SKWOoJW3MVto//LMxtreG9jDveck0xBVTPTUroQl+2qokHibPFcbsUnUmyGLnsQhl4uNix9YyBqzKlFfXS1jk2eK7RaJJJTQKp2nyJldZY2Ixpg0YhwXlyZ0VYvtdnm4OFv9rEmvYznVhzif+sPk1nWQEmdhQe/3kuj1UFuZRPvb8rhqnHRfHjDWG6fnsCzyw7RaBV5gMODdXjk/+xybf+a/dQ0uuYPHpXQITD3SWFcgDBuR98kaqHWF4kc6ohRJ68+avQW5w4eKG56cx4XYTggQh9nPSqVbCUCa6MwpiNHi/eKAoMvxm63U1RrJsLXnavGx/Cvn9K4+9NdpJXU89b6w21ZB+UNFj7fns+OvBruWl7Lh3l+PL9LoWbAle0P2ajxmIddy0u74fC0F8X8hBaVz3c6CYW56XUMCDUxIMzkakS3YvSGsCFiR1wa0SdFWnEdl/93E5e8vonzXlrPUz+mUdlg6bpz4hzMyQva3pqTzsWWcA53fryLBouoX2p3qjy1NB2rw8lV42OobrJw3+e7WfjyBn7cnoESO0X8nUBEEIy+HofTgU6jsNseQ8m4B9rCsZ1+CewbfB82jRCfszlUPtzTwIv7PXh4bTMLR0TiFRIvNhulEX1WkVHaQKT/iSp2Z7crwvcCDdYG6q31BLi1Gx9NAYn45HWh53AUkkL1bM+2Hr9jH9DqkVaPrDksOSmKa5s7vddpFExu+jYjGkSJt7fXH2ZrThWLdxXz0Nd729auFruTx7/bT6CXgRsmx/HoBYOI0dW4Xqg2n6H+9ra3ZpuToiOu3Ub4CCH21SqMF5wq0nB0HSI/ApPhwjeEgN6WN0R4d8KMowuTnSgRo2HSXaLCDIh0yIl/kM90ySkjPdKnSJiPG1qNgqPFmnY4xYKsIw0WOzqthhUHy0gN9+HjLXkkBHp2EtEprbPw37XZTEoMxKjXti0cAbaV2GhMno1nZWan81b6DcXf8yR2lI1eMPYWsQNoqRcGjdYIIQOFgqJ/PBg8fsVv4QhCB8PvfhRKpkYvEY4jcwklIIzShjIRuTCtJWc+ew2lwQbK6s3cOi2B/3TYiGrdTOrI3sI6pqWIzR5Po57XdjWyP3oR100+n0lxJkxhyewqtoOmihWMI27qF9BUgcYUxqTo4ZxAsKakG7DYHby8OpPDFe1ijO9tymVachAzB7p68LxD4zEvfIW6srtRVRVjcCIFtSrlDZ1FwFQVmm1OPt2Si5dRx0/7RZ57pdMLc/Ym3MKHw6AWgzz9R5rCZ2N3qqTXwKsHx3Lr+M/wUprZVmvi7W/quWFyYFuu/IwBwYyK9sPDqCM2wAOdVu41n42kldQR7nMChrTDJtKWetGQPlybTZhnaCcxrsagFEJ3f4piX4SqO76IWKS/lupGJ+V1DoJMx1f77k1CPUJxOB3k1ecRY4rp6+GcthxZus3P00BJrdml3878GuICPRkW5YPZ1jkVymxz4mHQoShW6ppt1AeGcaSbRfWLY3tluynhrteKklhd4e4rwrUHXySEv3xjwfOIiEqtTnwePlyobpvCO6tz/1o8A2BGi5fb3ixSGD2kN1py6shVwimSEOzFM5cMxagTv0o3vQbDEYsvL6MOu0PcoPKrm9hfWIuvhx4/j87GpVajEORtZGpSEPNS2xeaAZ5u5MVdhjWkXdmwPuUyqgJGMTD8JPP0tDqhMBs5Wnie3X3ELmHo4O4xolvxChLXCBogjeizEIdTJausgZ151ZTVdXh4azQw6jqoLYCfn4Kfn6LeM4aDhsHYHCoqtBnRIB7KRzI4wkRGaQOXjIpkV74Qtfslr5HbllvYaonhcIOOf/+UzosrM/jHkjS+OKznp5oo7l1WRW0XCtCSnqG2ycb6zAqX9qyKhqMe4+ZpwhQ3Ep/4Ubh5+RDkZSTIu/PWh6JAcrAX10+OxamqbXPEpjGwPe5mHHlb4OenYe0zVIZMZpstBp1GwV2v5WBZM39c2cwNK+C1rXUMCjeRXipyp2cNCGb2oBCGRvmSGOwljeizmIPF9UT5ncDzsDYf3P3ao7x6gczabEI8OxvuDoMHFp9IfPK3ndA5NIpCYoieXTn9zyutKAoDAwbyS9EvfT2U05oBod48dsEg9Fqx4aJRYEikq7L8iChfVhwsxWZ34qbvfM9z02vIrWrildWZPL8ig/W1QZRP/Uf7ms4zkJKZL/DfbXXotQo3T43H06BhyLHU7nUGEb0YMcrViG5FUURaVdTY7jGi265tFHpCEaOkES3pNqRH+hg4nSo5lY3Um+2E+7q7LOgA9FoNC4dHMDTKl8oGC8FeRgI9jTz23X4sdiceBi13zkzkrXWHAYgN8GRyYgCLdxfz+xmJvLAigwaLHaNOw1MXD0GjKFQ1WnhsQSq3z0jEqUK0nzvlDRaKL/iAQEsBNvQ0eMUwMiAAvU4u9iR9R6PVTl5lI6AQ25JjXNNkYfPhKtKK69mZV0NmeQOvXTWSIZG+4qDAZJov+xRbeSZo9HyUqaeuxsiQCB/8PfT8YVYiqgp5VU38kl3B1eOi+WhLHk4Vgr2N3D9vAO4GLS+uyGBtRruhplEgys+dL7YXsD2vpq39p30l/HFWElMSA/HxkJs6vYWPh56J8QEs2de5vF584ImLu4T6uPPC5cO57cPt1Jnt6LUK956Twhtrs9lXVEe4jxt/npfCP5ekoddqyNZEw/T/w7MxH52bF/vMwUT6+/L5reHoNBoazDZeX5uNqkKIycgj5w9Coyj8YVYScQGemNzl/JBAekk9i4ZHHL9jVRb4nEC/bsKhOsitzWFQnKvScH3oYPyzfqYmdmJ7+OoxSAjRsTXbwpyhJxjC3osM9B/I+qL1XD7g8r4eSp9T22wjv6oJo05DTIAHBt3xIwiqGi0UVDczKTGQpX+cSlZFAwXVzXgYdCwcFs63u4X4a0KQFymhJopqzei1CnfNSuLFlZk02xy467W8cuUIcqsa+cOsRHIqmnj8p2wOj5/K7VetxN1WiyEwBkUbzP+ubUCn1eDvoSc60BPjCYxRIjlTkIb0UTDbHHy9o5DHv9+P2eYkJsCDl38zsssdPY1GISFILA7v/WIPxbVmbpoST7ivGwathqeWplPeYGHWwGDCfdwoqrXw0/4StuZUcfX4aLQaDWNj/dhTWMt9X+zB5lBJDTfx/OXDSQ4R+Z3+XkbABIj8Tt9e+j1IJEejoLqJf/2Yxvd7RM7VouHh3D49gf+uPcxXO4US9uTEQOamhvLg13v58MZx+LgbyKlo5OFvslmfWYVGgavGxWC1i/8fVY02/rs2C5tDZUCoNxeNjCAl1JurxkVTZ7ET7e9BWEvI5Y1T4tmeW02j1YFeq/D4glSCTW6sOFjmMtbcykbunJUoH/C9iFGn5c5ZSewprKWgWuTMXTkuimFRvid1nkmJgXx352R259ei08K/lx7icIWofVpUa+ajzXk8vjCVxbuLeGNtdsum5FCeWZZOQfUh3PVa7p8/gANFtSQGe3HXrGTsTidaBTz0WlLCpPq2pJ2aJiu1zTaCTSeQBFJ+CLxOMXfzJCisL8Tb4IW7ztX4tXiH4tC7YSrcSV3kqOOeKzFUx5JdzVjtKgZd/yqDNShgEB+lfYTNaUOvOXs3t7LKG/jLl3vYllONVqNw85R4bpoah7/n0edmekkdf/hkF+kl9Ri0Gu6dm8KM5EDe3ZjDhsxKbp0WzzOXDCWvuoniWjMfbc7lxinxPL00nYkJgfxuUiyKojAvNYSVaWW8vCoTu1OsSe85J0WUyoqIwdMozIdQINS3/23GSCS9RY8a0oqiuAFrAWPLtb5QVfVRRVH8gU+BWCAHuExV1eqWYx4AbgAcwB9UVV3a0j4KeBdwB5YAf1R7UI0irbiOB77e2/Y+t7KJh77Zwwc3CGPgSOwOJ+9uyGFbrgg1fXm1yGf+28LB/GZsFBpFYUSULzEBHiw7UModMxMpqTXz9vocrA4n4YsG8+yy9lzA/UV1vLDiEM9fNhxjF+GtEklfs/JgWZsRDfDNriJSw00s21/SJg62PrOCpBAvSmotVDZYMbnp+WxbflvIr6+HAYNOw9SkQDyNOm54b1ubxkBaST07cmu4ZlwM7kbXW9XU5CB++MMUimqbCfA0Eh/kiVZRmJQY0Bau28r4hAASg7176DchORoDw0x8edtEciob8dDriA/2xPMoqt3HIibAk0g/D77dVdhmRLdSZ7ZRVNPMpqxKAOYPDuPl1ZltxnuzzcGji/fz8m9GcMfHOwER9jh7UAhbcqoIMhmPuTCVnF0cLK4nNtATzYkoBFekQ8Ksnh9UC5k1mYR5HkX4TlGoixxF4MEfqQsfJqpoHAMPg4ZQXy37C6yMiO1f89/H6EOIRwi7y3YzOnR0Xw+nT3A4Vd7bkMO2nOq296/9nMXoWD9mdaExAdBsdfDUj2mkl4jnn9Xh5MklBwnyHsaGTHF/fP3nbB5fkIpWUQg1uXHr9ASqG62ckxqGn6eev39/kJRQb0bF+PLCivbqGvuL6kgK9uIfi4a0GdESiaTnc6QtwExVVYcBw4F5iqKMB+4HVqqqmgSsbHmPoiiDgCuAVGAe8KqiKK1W5GvAzUBSy2teTw48r8pVdXBPQR0V9V3nFNU121jeIljTkfSSOt7flMsLKzIorWvmx30lvLQyk5dXZbIzr5r75w/AqFO6FFVak15OVWP/y2GSSAB+2udal3xdRgUJwZ1Dd3fm1TA1OQAfdz31ZjtL94tQ33AfN26ZGs9XOwq46YPt/PnLPfx5XgoeHdSzfz5UTk3z0fOaYwM9mZgQSEqoN3qtBo1G4Tdjo0kI8mzrMy05iCmJgVjsDjJK68ksa8Bqd/3/JukZQkxujIsLYEikzwkb0Y1WO+kldWSXN7TpS2g1CtH+rnmrU5ICWZXWHoUQ6e9OZplrHnZ5i1r4OYNCGBHty+trsvjrt/u55/Pd5FQ2uvSXnJ3sL6ol+mhiSR1xWKEmXwgn9goqGdUZRHgf/Xpmn0js7j74Za8/oTMmhOjYln0UFf0+JjUglbUFa/t6GH1GTZOV5Qdd15T7CmuPekxVo5WfM1x1KfKqmjq9rzPbeH5FBjqthm92FvH8igzeWpdNXbOdOYOC+eeFg8mpaHI5z+r0chqsdpd2ieRspkcNaVXQuqLRt7xUYCHwXkv7e8Cilp8XAp+oqmpRVfUwkAmMVRQlDDCpqrqpxQv9fodjeoSQLsK6ov3d8T1KjqWnm45RMX4u7YHeRurN4sbjYdTz9NJ06lsUubPKG/l0az43TIonposF4rAoH0xuZ29Yk6R/MzEh0KVteLQv+Uc8tAeEenP1+FgCvIx4GLSMiRUiH5eMjuTZZYeobhEAK6hu5r8/Z3PRyHZxkWGRJ/9/ICnEm49vGs/HN43jy1sn8OIVwwGFR77dxzkvrGXuC2v5549plNa5KphK+p7cykbu/mQXc19Yx7wX1vHKmkxqmsSG4oBQE3fObK9F6mHQMjbOnwGh7dEG1Y1WwnxclYv9PQ1oFBgc4cPHW/Kxt1RaWJ1Wzmdb82W5HQkAewtqiQnwPH7Hqmwh2KnrHaGx8uYK7KoDP6PrOqMjNTETCMhcgbb56AZXK8ktZbD649wfGjSU1fmr+3oYfYbXUdaUicFH15gwuekYHOGaqhLs1fl+uD6jgofmDyS9pI4decLjbbE7+c/KDK4YE83IGP8uy7+lhpuob5bOHYmkIz2uVKUoilZRlF1AGbBcVdXNQIiqqsUALf+2KupHAPkdDi9oaYto+fnI9h5jYJg3N02Ja3vvrtfyr4uHEuDVdQiUUafl9zMSCOrw+YT4AEpqzTicKlePjya/qpkjn1fppfVMSAxgRLQvi4a3h2z5uOu5f94APN1kCI2kf3Le0DBSQtof6oPCTMwZFNKp9EVsgAe/GRvNiGixINBpNfx2Yizhvm44VRF61pGSOnPbZpWPu54Hzv11/weCTW6Mjw8g2ORGRYOVXfnVfLpV5G07nCrvbMhhQxeK0pK+RVVVPtua31aOyupw8vzyDLa3pMx4uem4bXoCi++YxHu/G8PjC1J5+qd04gK92ubdt7uKuHNmYicF2usnxZJeUs9lo6PIr3b1tPywt5hqGf0jAfYW1hIbeAKGdNkB8Inu+QG1kF51iEiv4y97bO6+NIQOJnTvlwi/xdEJNmlQgfzK/hehE+cTR62llty63L4eSp9g1Gm5fXpCJ5HbmQOCGRl99I0Ub3c9j56fiqnDM/Oy0ZEMj/Lp9FxWVRgY7t2WDtOR7JbUmWGRvswb3K4O7+9p4Mpx0fx7aTqNZumVlkha6XErTVVVBzBcURRf4GtFUQYfo3tXSUnqMdpdT6AoNyNCwImO/vUPOZO7gT/OTua8oWHUNNmI9vcgPsiLsjozdWY7Id5GvFsUXh1OlYKqJjwNOr66fSKHKxpx02vw8zBQWNPMFWOjKK+zkFHuGm4Y7G3k5/RyrDYHt02P5/IxUVjtTuICPYk+kV3xrqjJB7sZTJFgkCIQ/Ynump/9gfggLz64YRyZ5Q0oiFJwwd5u/O+6MWSUNeBUnUT6umNzQnm9pW1BMCDMxOJbx2KvyiXE4c0be+3kt6RSeBl1jIr249UrRzI4wnRC/wcsdgeF1c0YdBoiW0rWNJjtfLWzgKd+TKPR6mB6ShC/n5HIK6vba7Ev21/Syfst6fv5Wdtsw8Oo4/bpCaw8WNaW6749t7otL9DDoGNoiwL8+5tyqGiw8sKKQ1w1PgZfdz3jIt0Z7F3PnFuS2FvvjZebjqRgLwqqm2m02sksa+TzbQWdrpsc4s3Xuwq5YFg4wd7Hr8Mr6Rt6en42WOwU1TYT1YU3zoWSPeCX0O1jOBrpVQcZHjzi+B2BuvARhOz5Eq+iPTSEDztqP0VRSArVsTXLTPRJqOn3BhpFw4jgEazIXcENQ27o6+Ecl56Ym4PCffjm9olkVTTirtOSGOyFn6eIgGiy2imuNeOu1xLeQexrZIwf3905mZyKRrzd9CSFeOHtpufzWydwsLgOBYUBod7syq8hOcSbzYerOl0zqoPB/dsJsSwaHk5uZRNVjVae/imNK8fGUNFgxtPtGPPFZhal4XRG8D291zkSyfHoNXenqqo1iqKsQeQ2lyqKEqaqanFL2HZrglsBrbLUgkigqKU9sov2rq7zBvAGwOjRo08pXsnLqGN4lNj9czhVVqWV8sBXeymtszAq2o+/XziYQC8D723K5Y2fs1FR+d2kOG6YHEeISSzGklpUtwurm/jlcCVXjo3ioy3C6W7Qarh5ajxGnYZnl2dwoFiUc3nq4qFEdRHqfVwsjbDvS1j+MFjqYOBCmPUoBMSfyq9B0o105/zsDwSb3Ag2dTY8Ar2NBHob2VtQw+0f7WR/UR2Rfu48dfFQJiYEoNTmE7j2Wdj1AddojcwZeTf/LBnL9xlN3Dotnke+3cdFIyMYF3/8Oo95VU28sPwQ3+wqxF2v5b55KVw0IpK9BbU88u3+tn5r0svxdTeQFOxFRkv+7Ihj7OyfrfTl/CyvN/POhpy2UoGLRkQwKNzE1zsLjxrOODU5iMERJvYV1vHexhx+uiac2B2P4Za5BIw+JI99iCdzB3LRuGSmpwSh02qI9PVgTKwfW1tEfAK9DIyJ9edv3x/E18PAxXJzpd/S0/Nzb0EtsQGe6DTHCdZTnVB6ABJmd/cQuqSyuZJmezOB7q7pNF2harRUJUwjdO9XHA5MxGE4+oZkcqiejRkWLh7XXaPtPkaGjOS7rO9OC0O6p+ZmhJ8HEUfUNM8qb+AfPxxgVVo5vh56HrsglXmDQ3FrEaaNCfDslJ5gtTvYkVvDI9/uo7LRypTEQPGsHBnBwZI66pqFh3l6chBDI31YcbCUB7/aS1m9hRFRvpw7NIy31h/G4VR5emka4+P9iTnagKsOw6q/wf6vwOANsx+DoZeBUYp9Ss5MejS0W1GUoBZPNIqiuAOzgTRgMXBdS7frgG9bfl4MXKEoilFRlDiEqNiWlvDvekVRxiuKogDXdjimV8gorefm97dTWieEObbnVfOXL3dzoKiOl1dlYnU4sTlU3libzZr0zuV3mq0O6sx2LhsVxVVjo3jpNyO4c2Yiv5+RQHFNM29vyOFAcR0gyrnc+P42srrwXh+X4p3w3Z1grhWxOwe+gV9eAYcMw5H0LuX1Zm7/aAf7i8S8Lqhu5sb3tgnRkz2fw453wekAWxOhm//Bo8PruGtWEl/uKCS/upkXV2Z2GXbWEVVV+XRrHl/tLMSpQqPVwWOLD7CnoIYDJa75gesyytvysxOCPJkzqGvlU0nfsC6jglfXZGF1OLE6nHy2LZ8wHzemJPozKsaPnIpGKhs6CyO56zU8e+kwvrhlAt/dPpbo9P/hlvGDuP+Za4hcex+/i6/hlg+3c6jFux3p78FrV4/ikfMH8odZiVw8MpLnlqcDsGSPq4Ce5OxhZ151WynLY1KVDQYvcOud0mkHqg4Q7R2N0mVwXtdYvUNoDEwgeO9Xx+wXE6SjqNpBdWP/C+9O8UuhtKmUvLq8vh5Kv8Fid/DC8kOsSisHoKbJxl2f7mJ/0dFz4g8W13PHxzuobLQS7G0kJdSbopomhkf58s51Y3jh8uG8f/0Ynrt8ODVNdm75YDtl9eJeuzO/hm93FbY9L50qFNa4ivGKD52w9S3h0FFV4dD54U9QuL17fwkSST+ip3Okw4DViqLsAbYicqS/B/4FzFEUJQOY0/IeVVX3A58BB4CfgN+3hIYD3Aa8hRAgywJ+7OGxd+JwZWObOE0rewrqusy3+3pnYZt4R1pJHbf933bmv7iO697Zyt7iegaFmVhxoIznV2TgbtS5lHOx2J3kVbqe97iUHnBt2/sFNJaf/LkkklOgsMbcFq7dSrPNQXN9Nez5xKW/Nnc9H2/J6/R/4Ye9xRTVHP3/QXWTlW92ugam7MitJtzHNTQzJdSbRcPDee/6sXx4wzjiT2TBLOk1vuvCiN2VX8OjCwZz3+d7mP7MGi55fSObsipottr5emcB819cz/wX1/Hx1jzCdY14pLvur4ZZc1CAnA731EAvIxUNVv6zMpP/rs3GbBO5+kMjfXrs+0n6P1tzq07MkC7aAQGJx+/XLajsK99PtOmoPsCjUhs5Bo+qw3h2tTZoQacR4d3bsvqfRoBWo2VMyBi+z/6+r4fSb6iot7BkX4lL+5HryI5kVzSgqkK357LRkUT6ufPfnw8z94V13PvFbkJMRqYkBeHvaSCnshHHEWvdfYV1naKCjqYVRGMF7P3Mtb1494l9OYnkNKSnVbv3qKo6QlXVoaqqDlZV9YmW9kpVVWepqprU8m9Vh2P+oapqgqqqKaqq/tihfVvLORJUVb2jJ2tId4W/h6syp6+HHt8uakoPi/RFUZS2mn5r0oUhW1Jn5sGv9pJRVsejCwZh1GmwO5x4GlzrRPt2cb3j4h3q2haYDEZpMEh6F5ObrpPYUysagzvWIFeZBLtfgkuZq1AfN97ZkNNW/uhIPA06UkJd53akvwfDo/wYE9seuu1h0HLvOSmMjQ9gWnIQYb5SO6C/MbQLtdmhkT787fsDbMkRj4jDFU387t2tbM2p4u5Pd1PVaMWpwpc7Cvk5twm7f5LLORp1AdidKn5HVFxYODyCUJ/2BWGkrxvnDgnr5m8lOV1wOlW251STEnoCIah5v4hnay+QX1+IRlHwdzt+qsuRqFo9VXFTCd3zBYr96FUKUsL0bMzon1UMJoRP4JvMb3CqXT8HzjY8jDriAl1T//yOsWb09xD3uSlJgRRUm/m/zXnszK8B2u+prVGQ/p6u5/H3NNDQIjB22ejITlUSOmH0hKABru0mmS4jOXPpcdXuM4UBoSauGNOevq0o8PeFgxkUbupUaiXIy8iFI4SyZmmdmdXpnb3BThUyShtJDfXmuzsnMzbWnwfPHdipz/WTYkkO+RXGb8RIiJ7Q/l7nBnMel7kpkl4nNsCTxy5I7dR267R4/L09SYu7DtzaPX9W/xQawie25XcBRPi6Y3LT89HmPMrru65zatRruXNmUqeNqNRwE2Ni/Ynwc+eVq0bywfVjef3qUSy+YxIjuyglIuk/nDs0vJNhG2wyMmtACD8f6qyu7nCqpJXUuxz/9xUFWGc+Ju57LTSHT2B5TTgXj4pkYFhnQz0l1JvPb5nIW9eN5n/XjeaTWya0aVpIzj4OldXjZdR1aUh0orlKCCn5xx27Xzexu3wXcT6//lpm30jMpnCCDi45ap/EUD2ZJXbqzf3PWI0xxWDUGtlcvLmvh9Iv8PMw8PiCwei17WH+01OCGBxx9Gia1HATl42OIL+6iSh/9zadkFbMNie5LRE7A0K9uXRUu+GrUeCR8wcxKSGAT24ax4PnDjy6o8fgCTMfBn0HQz9iDESO+RXfVCI5PZC1lU4QHw89988fwKIREZTXW4gN9CQlxBuDTsNnt0wgvaQep6oyINS7TWnYw6glxGRsy6tuO5e7HqNBS3KIN8kh3lhsDgZH+JBX1USwt5EBYd54/Zr60T6RcOm7ULofLPUQlALBA497mETS3Wg0CotGRDAwzEReVRMhJjcGhHrjptfwZI4Pk0e9zwBtITb0bGoIxbfah5euCGVLTjWKItRzX1mdSUqoNx7Go9+mRkT78e0dk8gobcBNr2VgmDehLWHdwd5uUoH5NCIlRBi2wkhWSQnxRlVFNEGTtT1/0+ZQCfB0DS2M8vfAGTWO+mtXQEU6qsGLAn08I3X+XBVq6nLxF+Xv8euEHSVnHJuyKhkUfgI5zzkbhNdN+yue0SdJs91MZnUm58afd0rnqYmZQNiuT6mPGEmzf6zL50adQkKIji2ZFmYN7l/ROoqiMDVyKh8d/IgJ4ROOf8BZwIT4AL67YzJZ5Q34uOsZEOpN4DGedYHeRv4ybyDf7ymmuLbZ5Z4KYl0KIhryofMGctHICCoarMQFepLcstY9IaLGwc1roCxNGNYhqWCSkT6SMxdpSJ8Evh4GxscHuLQfbTEW7O3GI+encufHO2hNOZkQH8CwKF8MunYvmlGvZViUL8OifE99kN6hXYd4SyS9jNtR5vV1E+K48s1faLSK9tgAB+9MDMCo0/DcikNsz60BQK9VeOi8gW0P+KORGOxNYrD0JJ4JHHkvVVWVR84fxP1f7W1ru3JsNCOjfRgW6cPuAiGwY9BqeGD+QLEBGT1EvIBBvTt8yWnMz+nlJ5Ajr0LGTxA/s1fGtLd8N+Fe4bhpj5KTeoI4dUaq4yYRuvNjDk+/t8tNgNRIPWsPmvudIQ0wIUyEd+fV5RFtkuWUNBqFAWEmBoSduNhdgJeR6clB3P/VHm6YHMdLq9pLQV45NrpTFKSvh4EJCSemEN8lQSniJZGcBUhDuoc5JzWET26eQEZpPZ5GkdM5MKwfC9o014DdAt5S0VjSMwyL8uW7Oydjqy3Bqegx+Qe1lfd45cpRHCiupcFsJzHYiwGhvaOKK+mfKIrCwhHhJId4k9sSsTMozISfp4HXrxnFgaI6Gi12kkK8j563dzSaqsFhA+/gnhm85LTBbHOwNbeKK8cdx0gr3Q/WJgjo+frRDtXB9tLtTAif2C3nawpIwL3qMEEHl1A+eKHL50mher7f0UxFvYNAb1fdlr7EqDMyPXI6b+19iycmPdHXwzltiQn05JlLh5Fd1sAb14yipslGhJ87g8JMmLrQ++l1rM1grgEPf1GDWiI5DZCGdA+j12oYG+fP2LiTFwrpVWwWyF4FKx4TOWBjb4XhV8qQHEn301BGfMZnsOklUUJm1iPgOQcMHoT6uBHqI8OxJe2463WMjPFzyXEP83EnrAt19uNia4aM5bDyCVGeZcIdMPRyuXl4FrMpu5IYf0+8j5lSpcLODyFmEig9Ly9zoOIAnnqvXyUydjSq4yYTtvsLGkNSaDpCFEqvVUiN0rN6fzOXju9/AqWzY2bz8IaHuWHIDcT8CgVziaCrutT9guI9sPqfkLcREmbC1PsgRMYUSfo/UmxMIijaAR9fAeVp0FAGq57ouoyBRHKqpH0Pyx6C+hKozITProWCrX09KsnZQsE2+OwaqMyAhlJY/lc46Fo2S3L28MPuYkYdT4ww+2dR3idiVI+Px6E62Fi0kUEB3WtIOHVuVCTOJHz7R+iaqlw+HxFjYMU+s0v5o/6Al8GLOTFzeGbrM309FEl3U1sIH10Gh5YIj/T+r+Dz66BBlm6V9H+kIS0R5G9xbdvyJjRW9v5YJGculnrY8oZre9aq3h+L5Ozk8M+ubVveBHNd749F0ueYbQ6WHShh3LGixsrTYfPrMPhi0PR82POu0p146D0I9uj+tAOLTzi1EcOJ+uUtNLbmTp+F++nwMipsy+66UkJfc07MOaRVp7E6b3VfD0XSnVRlQX1x57aKQ1B9uG/GI5GcBNKQlgg8ulhEeIfJPBVJ96I1dF1TUobVSnoLry7mmim8V1SYJf2PpftLiA/yIsCri2edrRn2fgErHoXBF4FPRI+Pp9HWyIaiTQwPGt5j12gIHYLZFErkpv+6GNPjEo18taUJVe1/Xmm9Vs91g67j8U2PU9FccfwDJKcHek/XNkXpXEZLIumnSENaIogeD6YOiwSNFmY+BMb+lyslOY3RGWHK3Z2NFs9AiJ/Rd2OSnF3ETQHPoPb3Gp3Ix9P3P7ViSc+iqipvrstm5oAOnl9rA2SthtX/EGknhTtg7M2i5FXPj4gfs38k3jcOH2MPipIqCjUxE7C7+xG94WW0zTVtHw2M0NNocbIjx9pz1z8FUvxTmBwxmT+u+iMWR//0nEtOksAkGHFN57YJd0BAYt+MRyI5CaTYmEQQmATXLYaC7WCth7Dh4iWRdDdRE+CG5VC0E3TuIucwKLmvRyU5WwgaAL9dAkXbhQJz+Ah5rztLWZdRQU2TjVHRfiKUdP9X4hkYEA+BKTBlpqiF20tsLt5CrbWG0aGze/5iikJ17ES8i3YTt/YFikZeSVNQMhpFYWaqO+/+3MDQKAN6ndLzYzlJLki4gDf3vsndq+/mhRkvYND2A8Vpya/HzSRERweeD5XZYj0aMQr0UnhU0v+RhrSknYBEuQMo6Xk0GmG8hI/o65FIzlaCkuXmzVmOxe7gse/2c9lANzQrHxN5mjETYcq9YOj96IT9FfvZWrKV2TGz0fSCKjgAikJ9xHBsnoGE7/g/asOHUzHoXFLCjOzOtfLxxgaunXqSZeV6AY2i4YbBN/Dm3je5adlNPDf9OQLcA/p6WJJTwSsYkuf19SgkkpNGhnZLJBKJRCI5a1BVlce/3EaQJY/Rux8VGg2T74bYyb1uRKuo/FK8mdX5q5kWOQ0PXe/nhZp9IykedimGhnLiVz2FV+Euzhvhxvp0C2sONB//BH2ATqPjlqG3EOEVwcWLL2ZpztJ+mdctkUjObKRHWiKRSCQSyVmBtSyTf3y8ko2lev4al4mSeHefeKBBpbChiNV5a7A6rcyOmd0nRnQrTp0bVUkzcastJCh9KYGZK7kxYS5vrIuist7BwtGe6LT9K8xbo2i4MOlCUgNTeWnnS7y9722uH3w9M6JmyHBviUTSK0hDWiKRSCQSyZmHrRnqS2gsySD70AE2Hirkg5rBhHu48dBUPzy843ppICpWh5V6awNV5iqKGovJrM7A6rAwwH8g8b7xKPQPI9XsE0HJkItwr8phUPFynsDGG7sWsWaXD3OTHAyIMxESasLLTYui9I8xJ/sl89fxf2VH6Q7e2fcOj218jDGhYxgVMook3yQivCMIcAvAU+/Zb8YskUjODJQzORRGUZRyIPcEugYC/bmWQn8fH/T/MXb3+CpUVT2lhJ6TmJ8d6evfc19eX373E6ev5mdP0dd/+66QYzpxjhxXd8zPeiD9yPZ/zTaG/mWSsa0ExReOKdxru61TnyC16lQufeIcL3nuNFh+aQAFKMG1ROZlmtVsCV5sK+3G2tqqqmoURXGeyjk0nhqdRqc5psVctbqqtOi9ooKjfHxK87MP75398f9/fxtTfxsP9MHzXdJ9nNGG9ImiKMo2VVVH9/U4jkZ/Hx/0/zH29/GdKH39Pfry+vK7n/7z99fSH7+/HNOJ0xPj6q/ftSeQ31VyIvTH311/G1N/Gw/0zzFJThwpNiaRSCQSiUQikUgkEslJIA1piUQikUgkEolEIpFITgJpSAve6OsBHIf+Pj7o/2Ps7+M7Ufr6e/Tl9eV3P3vpj99fjunE6Ylx9dfv2hPI7yo5Efrj766/jam/jQf655gkJ4jMkZZIJBKJRCKRSCQSieQkkB5piUQikUgkEolEIpFITgJpSEskEolEIpFIJBKJRHISSENaIpFIJBKJRCKRSCSSk+CMNqTnzZunAvIlXz3xOmXk/JSvHnydMnJ+ylcPvk4ZOT/lqwdfp4Scm/LVwy9JP+KMNqQrKir6eggSyVGR81PSn5HzU9KfkfNT0l+Rc1MiOXs4ow1piUQikUgkEolEIpFIuhtpSEskEolEIpFIJBKJRHIS6Pp6ABJJT1DZXMm+in1k12YT5xPH4MDBBLoH9vWwJEdBVVUOVh5kT8UedBodQ4OGkuyX3NfDkkjOOtKq0thTvgcFhaFBQ0nxT+nrIUnOEkoaS9hTvoeihiKS/ZMZEjgEb4N3Xw9LIpFIjoo0pCVnHM32Zl7f/TqfpH/S1nZp8qXcO/pePPQefTgyydHYU76H65dej9VpBcBL78Xbc99mYMDAPh6ZRHL2sK9iH9cvvZ5mezMA7jp33pn7DqmBqX08MsmZTmVzJQ+vf5jNJZvb2u4dfS/XDLoGjSKDJyUSSf9E3p0kZxw5tTmdjGiAzw99zuG6w300IsmxcKpOPkr7qM2IBmiwNbAqb1UfjkoiOfv4JvObNiMaxKbkd1nf9eGIJGcLGdUZnYxogJd3vkxBfUEfjUgikUiOj/RIS844Oi4EO2K2m3t5JJITwel0UtJY4tLeVZtEIuk5ihuKXduaXNskku6m2eH63DY7zFgclj4YjaQrnE6V7/YUYbE7WTQ8AoNO+uIkEmlIS05vytKgeBeoTggbBiGpRJuiiTHFkFuX29Yt0iuSaO/ovhun5KjotDouT7mcHWU7OrXPjZ3b9QHl6eJv7rBD2FAIHdLzg5T0HeY6KNoJVdngHQrhI8E7pK9HdUZyYdKFrC1c26ltYcLCPhrNGU5tIRTvhIZyCEqBsOFgOHtTj+JMcXjpvWiwNbS1TYmYQoRXRB+OStKRfyw5yJr0Mtz0WpYfKOWNa0ahKEpfD0si6VOkIS3pv1RlQ9EusDVDSCqEDgVNhx3Qkr3w3gXQXC3eGzzhuu8IjBjFc9Oe4429b7CleAtjQsdwy9BbCPII6pOvITk+kyIm8cj4R3hr71votXpuH3Y7I0JGuHYs3Q/vnQ9NVeK93h2u+x4iR3fvgOqKhfHWWA6BiS2LXM/uvYbk+DidsON9WPZQe9ughXD+i+Dh13fjOlkqMqF4NzgsEDJYbP70wwXo2LCx/H3S33l99+ugwG3DbmNM6Ji+HtaZR30pfHUL5K5rb1v0Ggy/snO/ymyxaWhrhtDB4hnYD+dNdxDrE8sbc97g5V0vk1aVxpzoOVwz6Bqpa9JP2F9Uy9c7C3nq4qG46TQ8/v0BvtxRyCWjIvt6aBJJnyINaUn/pCITPrgQavPEe60ervkGYie39zmwuN2IBrA2wra3IXwkyf7JPDn5SWqttZj0Jow6Y68OX3Jy+Bh9uDTlUmbHzEaDBh83n647pv/YbkSDWGD+8hpc9AZotN0zmMZyWHwnZC5vb7vgJRh1bfecX3LiVGfDqr91bjvwLYy7FWIm9s2YTpbyNHhvATSUivc6I1z7HUSP69txdYHJYGJh4kKmRU0DwNfo27cDOlMp3dfZiAZY+iDETgHfKPG+IqPlGZgv3mv1cM23EDupd8faiwwJGsIL01+gwd6An9EPnUYuUfsLr63JYv7gULyM4m9yzfgYnlmazsLh4ei1MsRbcvYiZ7+kf5K7od2IBnDYYPW/wNrU3lad43pc1WHhxQIMWgNB7kHSiD6N8HPzO7oRDVDbhfBMdbaYH91F6f7ORjQIj2h1btf9JT2HtRm60jaw1Pf+WH4tWavbjWgAuwU2/Afs1qMf08f4Gn2lEd2TdDV/zTWd53ruhnYjGsQ97uenOj8Dz0Dc9e4EuQdJI7ofUdtsY3VaGdOTg9vakkO8CfI2smSv1FCQnN30O0NaUZQURVF2dXjVKYpyl6IojymKUtih/dy+HqukG7CZIX8L7Pw/OLQU6lsEphrKXPvW5XdeaAy+yLXPqOtA202eSUn/I6WL//ajbwC9W/ddw9zFItdSB0cRsWujPB32fSleFRndN56zGd9oiBzbuc1ogoDEvhlPR0oPwJ7PYf83IgT3aHS1+VNzWIR5S85OApNFZEJHBlwApg5hsnVdiC3W5ouNmI6UHYS9X8C+r6Ays/vHKjnrWXGglMERPni5dd7cmDUgmPc3yQ1mydlNv9vyU1U1HRgOoCiKFigEvgZ+BzyvquozfTc6SbdzcDF8dVP7+6S5sPBliB7v2nfU9eDh3/4+ehIseBlW/wOcdphyDyTM6vkxS/qOmAmw6HUR7uuwwKS7xZzpTgKTQOfWedMmYXbnRe6RFO8R+frmGvHe3Q+u+04KoZ0q7j7ifvDzU3DoJwgZCuf8DQIS+nZcBdvE39vW4h00RYjUk6Bk176Js2HTy53bRl8PRu8eH6aknxI8EK7+GpY9DBWHIPUimHwXGNzb+8ROhJ+POG707zprAxTtFPOw1cPtGSTuO8EDe/obSM4iftpfwohoV02KUTF+vLMxh7zKJqIDZC675Oyk3xnSRzALyFJVNVcqA56B1BbAj3/u3JaxVITWRo+HS9+F5Y+AuVbkRA69tHNfdxOMvAaS54KqSiXfswGjNwz/DSTNBqdDqDh3N8EDxCJ36QNQkQ4DF8DU+8DodfRjdn/SbkSDyN3f95U0pLuDoBQhxNRYAW6mvjdA7TbY+J92IxqgrhCyV3dtSEeOgQvfgJWPCx2HiXcK76Pk7EVRRK7zNd+AtQG8gkUOdEciRsMl74hnoKUOxt0Ggy9p/9zphK3/6xwm3lgOaUukIS3pNmwOJ5uyKrlohKt6uk6rYXycP4t3F3LHzKQ+GJ1E0vf0d0P6CuDjDu/vUBTlWmAbcI+qqtVHHqAoys3AzQDR0bLcUb/G1tRZLKwVc61QY069EGImg8MKpvCjq5V6BXfd3g+R87Ob8OxhBfbYiXDtYrDWgWewaxjmkZTud20rT++ZsfUg/XZ+6ozg00/K4DgsXYfud6XZAGIDZtjlkDBDRM54h52xyss9Tb+dn78Wdx/x6gqDh0hfip3S9TNQtUP5QdfjKmVaSV9wxs3NFvYU1BDsbcTXw9Dl52PjA/h0a540pCVnLf0uR7oVRVEMwALg85am14AERNh3MfBsV8epqvqGqqqjVVUdHRQkyx31a0wRImS2I1p95/xHryCxgD5DFp5yfp5GuPuAT9TxjWiAEVe7tg251LWtnyPn5wlg9IKR17m2Jx4nrcQr+NgbgpLjclbOz6M9A7UGGPlb1/4DF/TKsCSdOVPn5qasSgaGmY76+YAQb8rqLeRWNvbiqCSS/kO/NaSB+cAOVVVLAVRVLVVV1aGqqhN4Exh7zKMl/R+DJ8z/p/A8KxohwHLVFxA8qK9HJpGcHAkzYM7fhBCWmw/MfRLip/X1qCQ9xaCFMPXPoPcAjwBRHu1IUTSJpKdJPgdm/hUMXkKX4dxnTp+ycJLTgo1ZlQwIPXo6jUajMCrajxUHuxCIlUjOAvpzaPdv6BDWrShKmKqqrTr7FwL7+mRUku4lMFmIR815QiwGOoqJSSSnC56BMOkPMORiUBXwCe/rEUl6ElMYTH9AVAnQ6HomV18iOR5eIUJkc9gVYjPaJO87ku7D4VTZXVDDdRNjj9lveJQvy/aXcMPkuN4ZmETSj+iXhrSiKB7AHOCWDs1PK4oyHFCBnCM+k5zO6N1EmRuJ5HTH1E/yeCU9j0YDPsdQcpdIegNFkfNQ0iOkl9Tj52HA5KY/Zr/BET68uiaLBosdL2O/NCskkh6jX854VVWbgIAj2q7po+FIeoLydPHSe0BIqvDwSCT9CbsVyvZD1WGhCB+cCu6+fT0qyelAU7WYOw3l4B8n0lV0XYv1SCQ9Qusz1uApnrEyakJykuzIqyYp+BjVKlpw02tJDvFiY2YF56TKeSY5u+iXhrTkDKdgG7y/QJSCAYgYJUpdSa+0pD9x4Bv4+mZRWg1E+ZkZD4oSTBLJ0WiuFXXOt/1PvFcUuPhtocAskfQG+Zvh/UXtJdoix8Elb8lnrOSk2JFbTXzQ8Q1pgNRwH9YeKpeGtOSsoz+LjUnORKzNsPrJdiMaoHA75G3usrvdaafaXI3NYeulAUr6kjprHQ3Whr4ehihl9MM97UY0wObXui43I5F0pGx/uxENYg798Ceoye+7MR2HZnszNR3roEtOX6yNsPJvneucF2wWG9i9TKOtkVpzba9fV9I97MqvIeEEDenBET6sy6jo4RFJJP0P6ZGW9DxN1aBzg6YKqMmDsgOufWryXJqya7L5v4P/x9rCtYwOGc3vUn9Hsn9yLwxY0tvUWepYk7+Gt/a9hUFj4NZhtzIpYhLuOve+GZC5Dix1ru31JUc/pqlK1D/X99GYJf2DpkrXtuZqMNcCUV30rxIpLnq3Hh/akaiqys6ynby++3Vy63K5KOkiFiQsIMxLptqctlgaoDzNtb06B5xOkdvfiqqK+Wf0OrEyfyeIzWFjS8kWXt31KtWWaq4ZeA1zYucQ6B7YbdeQ9CwNFjvFtWai/E/seRYT4EF1k5WSWjOhPr1/L5NI+grpkZb0HHVFsOFFeHMGfHQZZCyFVX/vut5qxMhOb2vMNTyw/gE+O/QZJY0lfJ/9PXesuoPSxtJeGrykN9lYtJGHNjzE4drDpFenc/eau9lZurPvBmSKgMCUzm1aA9QXQ3Vu5/aafPj532Kef3q1CKuUnBk4bGIj0Ok48WN8ooWSd0dChrgK0VXnwep/whvT4fPr+sRjeKj6EDctu4lNxZsoaizi5V0v88HBD7A77b0+lrMWSwOY67vvfJ6BMPiSrj/LXt3+c1U2rHwc3pwOX94IRd13v91XuY/bVtzGnoo95Nfn8+SWJ1mes7zbzi/pefYW1BIb4IFOc2JmgkZRGBTuw6Zs6ZWWnF1IQ1rSM6gq7Hgflj8C1YchZy38dD8kzQaPQEieJ3IHDV4w/2mRJ92B/Pp8DlR29lwXNxaTU5fTi19C0hvYnXY+Sf/EpX1pztI+GE0Ltfkw4yEIHSrem8Jh1iNiYyh3Y3s/hx02vQKr/y48Ppkr4L0FULq/T4Yt6UZK98P3dwlDY9nDUJFxYsc5bDD7sXZxp7BhMPIa6JiyYLfCumfg539BTS4c+knoRpR14UnsQTJrMrE6rZ3aPkn7hLImWRO2x7E1Q/qP8N4F8PZc2PNZS9TCKaLRwribYeAC8Yw1esPkP4l70/d/EgJ41iZY/hisf15Egx1cLHKqK7NO/frAjtIdqKid2t4/+L4M8z6N2FtYQ2yg50kdkxLixaasqh4akUTSP5Gh3ZKeob4Yfnmtc5vDJhYPG1+E6Akw72lInisEUBSlU1ejzoiC4vIwNmq7L/xM0j/QKBoC3VxD/gLcA7ro3QtUZAqjJmkuRI2F5HNE+OPPT4tw74pD7X3rCmHbW52Pt5uh7KBQypWcntQWwkeXiw0VgF9eFR7jqz4/vnJ7QzGs/bfwCnr4CQN86QMQM4m20O7afNj1YefjrI0iBz94QHd/m6PipnUNwfQ2eKPXHLvcjaQbyNsMH1/R/v6rm+DS9yB10amf2z8eRlwLQSnifrT3M6gtEJ9Z6kT6wcFvOx9jrhEq3wEJp3x5L4NrXq2/0R+dVi45Txd25tUQd5KG9IAwE6//3D2bMRLJ6YK8q0l6BkUr1I2PFLDR6IS3OncjDLgA/GK6PDzGO4arBl7FhwfbF5tzYuYQ7xPfg4OW9AUaRcNVA69iZf7KtpBSd507s6K7SAHoDcrThGcofzPET4e1z3T+PGy48CR5BIBnsIiqaK7u3Kevcrslv46qHKjMEPntQQPEz7VHiIMVbBHhsEekobjgFye8zx0Fx4JTRVRDK1oD6D1d8/B7ed4M8B9ArCm2U6TPPaPuIcgjqFfHcVZy4Bvxb1CK2HRxWIS32NIgcpZPFQ8/saHTkbjp4BUCDaVCt8Ru7vx5N+k7jA4ZjZ/Rj2qLuC8qKNw+/HY89SdnmEn6jj0FtcwaEHJSx0T7eVBRb6Gq0Yq/pyz3Jzk7kIa0pPtRVcjbCKN+CyufaG83RYDDKkLPUi+EsBFHPYVRZ+TGITcyNnQsaVVpJPgmMCxoGCajLD10JjIseBgfzP+A7aXb0Wv0jAoZRYp/yvEP7Al0LV66mlzhfUyaI8IitQaYdBfs/RTSfhB9pv4ZZj8O3/2h/Xj/RAgd0tujlvxainbDhxe2i4TFz4Tp97v2UxQ4kYiYoAFw6ftiTjRVCiN60Wvg4d/exzdKpAosube9LXgQhA4+te9ykkR4R/DKrFfYWbaT0qZShgcNZ3Bg747hrMXDX2y6DFoEa/4JqrMlMkuFUb8D3SlGBYQMgYvehCX3iQ3tiNEw75/CSNd7wLS/iBzpViLGiDnYDST4JvDOvHfYXrqdems9I0NGMjhAzqvThZomK9VNVsJ8T040TKNRSArxZntuNXMGnZwRLpGcrkhDWtL9VB2Gb38vxJpmPybEmNxMopZl8Q6YfDc0lEHgsUPIAtwDmBE9gxnRM3pn3JI+Q6NoGBw4uH8s4kNSxSZP8U6REx07RYRc+ieIRWlehxzptU/DDSvgmm8gb5MQmoqZCH6yXutpgd0C657trLSdvQpGXAkp50P69+3tY24+sbBXrQ4Gng/hw0Vkg3dYZyO6laGXixDc/M3gGyPmjU/kKX+lkyXaFE20Sc7XXmfgAtDoYcPzwogGsQm99H6InQwhp2jU6o0w9DKIGi8iJEwR4O4jPtNohLEekgoFWyEgEaIngnf3GT8Jvgkk+J56mLik99lbWEt8oCeaI1LuToSEIE92SENachYhDWlJ99NcJfL9FEV4oL2CRbvTKsSZggfAyOva2yWSvsZhh8pDUFMoFpOXviMM48pMiBoHkWNFOGRHI7qV2gIYfCEkyA2f0w5LPRRudW2vzIbz/g2DL4LSfSKcO2rcyZWo8okUQk/l6VBUJzZi/OPaP3cziQoGXVUxkJz5hA8XG8p2S+d2p0OkipQfElExHgFiU9r4K8Oij7ap5+EnNEqS5/6680rOWPYUnLzQWCuJwV6sTpNihZKzB2lIS7ofo494OPtEweonRZvOCBe/DbMfPe7hTtWJ3WnHoJU5Nqczp83fUVXh4Hfw1Y3gtIsNoPlPw4hrhKJtTT7U5gnPYuhQKNnT+Xj/2D4ZtqQbcPcTnsHNr3duDx8ucpqHXCwqDFSkQ8le8Is9cTGmhnJY8Sjs+j/x3s0Xrv4SIkd34xfoGewOOyigO7KMl6T7sDSKSAV3v84aC17BwoP8fxcLcU4QqtuT7xabL2cQZrsZN52sOdzf2JlXw8CwXzfX4oO8eHl1Jk6nikZz8h5tieR0Qz4lJd1LeTp8eTNMuQs+/217u90iSsmEDj1m2OvByoN8nv45B6oOsDBhITOjZxLiKUOETjc6/h0XJS5iRtSMvv07VmaL8lRGL5Hr3Fwtwmr9YkQqwuI7hBENwrD+8S8i1/mT3whBHkWB2U/ABS/C17cI5W6jN8z/NwR1T16hpA/QaGHszeK+lb0atHqYfA9EjhGGTvEuqMkBnQdsfk2UxLryUxF6ezyKd7Ub0SDyVJc+BFd/IeZOP6TZ1sz20u28f+B9NIqGawZdw6iQUdLY+bXUl4l7haJAYDJ4tYi4NdeJkO7t78C0P4sUkvoS8AwS+fVf3dhuRAOsf05UD4gcK1Tg6wqFaFhgMuj6+UZlF+TU5vB99vesK1jH1KipnB9/PjGmroVHJb3PnoJazhsSfvyOXWBy0+Nt1HG4spGEoG4QzZNI+jnSkJZ0L7s+gpJdovzPkTSWQ9EOsePeRYhkbm0uNy2/iVqLqDW5v3I/+Q35/GnUn6Rn5DQipzaHG5fdSJ1VKBLvr9xPfn0+d4+6u2/+jrmb4KPL2hWSh18J9aUiB/qqL0QoZccavyByFvM3t6vaqios/yvctAZ+96Moj+Rm6hyqKzk9CUiAyz8QGy1ao9hgsVuE6vaKR8Vc0Brg3Gdg61uw+E64flm7UXQ06otd24p2QHNtvzWkd5bv5LaVt7W931C0gTfmvMGE8Al9OKrTlIoMsZlcuk+8jxwDF70h5lfZPmEcA6z+p8hlNoXDwAvA6WwvVdWRupL2yBmHTWwCnfccDLvytDKmq83V/GXdXzhQeQCAA1UH2Fi4kVdmvYKvm2/fDk5CWb2ZZpuDENOvLzUaH+TF3oJaaUhLzgo0fT0AyRmE3QqH14qfvcNcakPjFyfUjyvSuzw8oyajzYhu5eO0jylu6GJBKum3ZNZkthnRrXyU9lHf/B2bquC7P3YuM7TrI4iZID5b+nBLGasj6ljrjHBEDXNAGEeegRA+TBrRZwqqKkqYhQ6BoGQhFlayu92IBqH1sOwhmHinKIF1ZFm/rvCLdW1LnCPmWz/l8/TPXdq+yviqD0ZyBrDvq3YjGoSo16GfxM8dN1ksdWKDZuUT4pbjFSyU3o/EKxi+vV0Y0SA2AH/4kyjVdhqRU5vTZkS3sqdiD7l1uX00IklH9uTXkhjkhfIrhMZaifb3YG9h7fE7SiRnANKQlnQPTofw6Iy+HuY+KfKjz30WDC2CFaYIGHcL7PtChLB1gVbRurTpNXo0ipympxP96u/YXN31xo3eA8bfDmUHhJdw4WsirBLAzQcWviIMnpHXCW9k1FhRTsYnqnfHL+k5bGbIWgUfXwmfXg3Za8RmIEBdcbsR3YqlXhgxYSPEXKkvg5wNkL9VeJkrsyH7ZyjZBzaLqDc++zERLg7COJr5MBj6b41x9y7qWHfVJjkGqiq8ytmrXD/L2QDmenH/OZLQoWJeefjDwpfBtyUFSu8O5z0P1maY+AdRXq0Vp0NE15xGaDWuz4djtUt6l135NcT9SqGxVmICPKUhLTlrkPGyklPD0iB22svThQfHbhaGx9R7QWOECX8A1QZN1bDqb8Kzc5QSL8l+yUR4RVDYUNjWdvPQmwn3+nW5OpK+oV/9Hd39Rf3Uwm2d223NsO9Lsemz6yMxf6/+Esx1Ii1h6YMtJdpS4JK3Yev/RIkiW6NYJGvk5k6/pa5IeI0NnhCQJPLiuyJvE3xwYfv7tO/huu8hboqo86w1iPtVKx7+oHOHC56HhhL49DqoSBNh2vP+CT89IIxtRQNznoDRN8CEOyHlXFHFwDcGPPuvNxrg4uSLWXJ4CQ7VAYhNsQsTLzzOURLMdVC8W2wSV+eI1KXk+ZD3S+d+SXMgYxls/A9MuRc2vSyemb7RQn/Bw0/0s1sg+Vwx54IHwaq/i7mm0Yo5pdUL8TudEXwiev3rngqxplimRkxlbeHatrZZ0bOINcX23aAkbWzPrWZSYuDxOx6D2AAP0orrUFX1lDzbEsnpQL8zpBVFSQE+7dAUDzwCvN/SHgvkAJepqlp95PGSXiZ7NRTuEKq3rfmkDiusfQam/QXcTaJOa2OFWNguel0IpHSg3lpPTm0OdqedF6e/yC8lv5BZncm0qGmMChklb8SnAaqqkluXS1lTGUEeQbw661XWF64nozqjZ/+O5jrIWQfb3wPvUKG0HTm6pfSaDdJ/hCGXQGOZUODWGmDcrSLEsqFUiEFFjRce5+o8aCyFH+9rP39FOqT9IMrQZK+GA9+I/NiIkd3/XSSnTvEe+PgKIcYEMOYmmH6/a+g+wLa3YfDFooYuCFGoXR8KQ9rgLbyAS+8XxrGHv8hHjRoHXqHw0/3CsAEYcqmoTmCpF+9VJyx7WNTljRwFQSk9/727iWFBw3h33rssz12OqqpMjJiIu86dRmsjnoZT81KdsdQWwk9/EfnLIJ5vQy4VPyfPhUNLxc+pF4nPCraJEnv7v4IJd4h7VfRE0OggZ72YX9/cKgzysTfDD3eJ5ycID/TGF2H6g+Lzha+KzaJ+TH59PsUNxfi5+RHrE4vJaOLh8Q/zS/EvbC3ZypjQMYwPG4+XQebT9jVOp8rewlqumxh7Sufx9TCg1SiU1lkI9ZFChZIzm35nSKuqmg4MB1AURQsUAl8D9wMrVVX9l6Io97e8/0tfjVOC8OqtfxGGXQH2Zhh6ucgLVBRhXNubxc778CshZrJ48IcNbw91BIobivnX1n+xKk+EwQ3wH8Az057hutTr+uQrSU4eVVVZmbeSB9Y9gNlhxqg18rdJf+OqgVf1fLhexjL48ob293s+geuXQvgIYRh9dwdo9GKORo0Da70I342fLkoc7f4UJv0BfrhHGNnhw12vUbxbhFNWZQvj/PDP0pDuj1ibheeurj0Sgq1vCrXjpHNc+yfMhJ3vi8gEEPNj1PVCx+Gz64Qne8yNEDRQeP5WPAqXvieM7MNr2s/j4S+84EdSVwSMOvaYa/LFBo+7r1CJ1/96gZ/uQKfRMTx4OL5GX/7+y9/54OAHACxIWMBdI+8iyOM4AmtnI7kb2o1oEPedykyRMrLgVWH0Wptg9yfwznzRJ2EWxE2Fdc+IOuLWBrEZraoi/L86R/QzmtqN6KRzxH1HVSFiFNyyrt/rNPxS9At3r7mbBlsDOkXHX8b+hQsTLyTMK4wLky7kwiQZ7dCfyK5owNtNh4+7/vidj0NsgCcHi+ukIS054+nv8YmzgCxVVXOBhcB7Le3vAYv6alCSVhSxwPTwh+kPiHzTn5+CNf8SO+cBSWCuhfSfRGjjsofE4qIDW0q2tBnRAGlVaXx16CtUtQuhJ0m/JK8ujwfXP4jZISISLA4LD69/uOfFY5prReRDR+wWyN0ofq4rFvPQbobt74oFaPEeob699t+QtkSE5G57B4a2eDH9u6gRHDFKlD1qpYsccEk/oLlKGDVHUn2UedhYLjb8WsnfDAYP+OomYdjUl8D654V3sDxNGDeKRsyjqPHtxzWUi7DtIzGFHXu8+VvhzRnw7rnw3ynwyyvtXu0+xOa08fa+t9lcsrmtbXHWYnaV7+q7QfVnCra5thXtFBswDguEDYNDS2Dne+2fZ60UURI6N7HJ/MtrYl4BVGa11yo314hIm1G/E/eyNf8Sz9gVj3euPd0PKW0q5cH1D9JgExUR7KqdJzc/SVZNVh+PTHI0duTWkBjcPZEB4b7upJf2/f1MIulp+rshfQXwccvPIaqqFt+ZMXUAAQAASURBVAO0/Bvc1QGKotysKMo2RVG2lZeX99Iwz1IsdUKwqfyQMGpK9rZ/lrVSLDx9ImHC70WNXg9/sRDtwM6ynS6nXV+0nmZ7s0v7mcCZOD8rmitc/l5Wp5Xy5h7+foriqgwPIrXA0ijKyXQst2VrhJ0fti9Y6wqFl8hpAwVhhNeXQMr89mMiRouFbE2LMaYzCk/SGcppPT89/CFummu731G8dtlrXNvqi4Wae0dUp5gjgxYKA0cBQlKFgQSw93MRPt6qxq01wJR7RCTE0WiqgsV/EMY8CCNp5eOdVZ77iHprPZuKN7m0H6o+1Aej6Uy/nJ9RY13bIkaJv2lQitiUyVzh2qe2EM5/oV2Qs5X9X4uUBK9g2POZyKX2ChbP1FZKdotoGucRgnj9iKrmKpdngIpKadPpJY52ovTLuXmSbM2p6raSVRF+7hwsqjt+R4nkNKffhXa3oiiKAVgAPHAyx6mq+gbwBsDo0aOlW7MnaKwUYa61ecLDFzUOVv/DtV9lFiVz/84mezU/l21kxJSbmR4ygOiWfNpqczWzY2azMm8lNZaatsOmRkw9Y5Viz8T5GegRiLvOHbvTzoKEBQS6B6JVtAS7d7nXdUzSqtJYlrOM/Pp85sfNZ3ToaEwGU9ed3Uww9T744nftbTo3cPODrBWQvwXO+TuseEx4pRu6WNzkbxZ5iq1/iZ0fwIjrhPCPuQZip0NdAVzwH1HHNWlW1+HfZwin9fzUu8PMB6Fsf4v3WIHxvz96GH7yPFcPtk+kMIibKtvbFI3wLnoEi00YN5NQb590NzRXijmn94b5T4nNGL27yNkPGyHKpHVFUyWUH3BtrymA6BP/yqqqkl+fT2VzJYEegUR5n7yqfEZ1BstylpFdm83c2LmMChnFBXEXsCxvWaeokhS/vs/17pfzM2aiqAO95zPxPnSoqAcdNEAYwKoqwrLLDnY+LmGGSDOxHGFs2M1C+G5KS7qJX3znyIlW8jaIiK9WgbJWyg8JXYfC7TDwfIifIXKye4iM6gyW5y4nsyaTixIvws/ND7vTToBbAIP8B3Ggqn2eKyiEePbcWPqSfjk3T5LtudXcMLl70gWi/DxYe+j03FCQSE6GfmtIA/OBHaqqtm5fliqKEqaqarGiKGFAWR+O7eylPB2+vBFK9oj3o34Hbv4w5DKxeLU2tHU1D1rAyxW/8G32YgBWAlsaCzg37lwe/+Vxmu3NmAwm7hl9D89tf45aSy2pAaksTFwoBcZOI6K9o/nXlH9R2FDIx2kfk1+fj0bRYHPauC71OnyMPsc9h81hY1f5Lu5afVdbDeqfcn7isQmPcXHyxUc/MGmOENw5+K0oWxU2XOTmf/ZH8blvtEg7iBovQr2PJGKkEIRa0iK34BUMMeOFEn3SXPi/i4TRo3OD854Vi2RJ/yVksBCDq8oWOc4BSUJBuSsGXiBy7HPWifcJM8EUCVP+BGueEgaO1iBEE3d8IATrYiZC2BBhpH/xW6H3MOJa0V6TB/u/EWHgE//QXr6oKzz8IWiQqzHt23VFg65wqk5W5a3iwfUP0mxvxkvvxVNTnmJq1IlHTOTU5nDjshupMgsv/LLcZdw18i6cOBkSOIRLky/lk/RPGB08muFBw0/4vGcVpnAhTDe+pcazf0JndXZFESKI2T9D8S7Rlnqh0HF4bwEED4QZD4s8+eZqMe98omDpA6JM1qI3uq50ET1B3PM6UlsAH10O1dnifdp3onLG7Ec6aZN0F7m1uW3zZ2rkVJbnLeebzG9wqk6ivaP506g/kV2bzau7XwXggbEPkODTRfqMpM+pabJSXGsmJqB7RAUjfN3JqWzE6VTRaOR6TnLm0p8N6d/QHtYNsBi4DvhXy7/f9sWgzmocdiGI0mpEe4cK0abMpUJcZfzvwVwFW96E+Bkc8PZj8ZbvOp0iNTCVhzc8jF21A1BnreP57c/z2qzXcKgOYkwx+LkdscMu6dcoisKEsAncu/Ze8uvzAbHIf3Pvm4wOHc3E8InHPcf20u1sL9veZkS38uruV5keNZ0A9yPKBjkdIpfQXCNCI5trxRwMSISsNe39Bi0Sobkb/yOM5vlPC4VdVRUL4NmPg9EHRl4tzmltFF7p6Anww93tnkm7GRbfIQzpMGlM92u8Q07MA+cfB5d9IOaNooi5U1sAW9+Cy96H+iJR7qqxAoJToNZTeLtVJ6x/QZxj1qMix37b/0RpopG/FbWA1z0jyl4dDY8AWPAifPIbcX5FAzMeEhsBJ0huXS73r7sfi8MCQIOtgT+v+zOfX/D5CXum06vT24zoVt7a+xYXJl3I99nfs+TwEl6Z9QojgkfgqZeq3UfF6CUM41Zq8iBrNWSvhbjJQlzs6i/FPUurFxs89UUw+vp2IcOslULVW+8h7k+qKgQ8l9wNKecJz3L2anH+0KEw7DeuZfjKDrQb0a1sfhVGXQeBid3+tTvOn2FBw3hp50ttn+XV5/HZoc/w1Hny9ty3MRlMxJhi0Gn687Lz7GVHXjVJIV5ou8nodTdo8TbqKaxpJsq/i7rpEskZQr+8oymK4gHMAW7p0Pwv4DNFUW4A8oBL+2JsZzXmWuHBaWX6Q2IBebilHuTBxWLBcOXnsONdam2NqHSOcHKojjYjupUaSw0qKsODh/fwF5D0FLXWWrYUb3FpL6wv7KJ3ZxxOBx8e+JCBAQO7/MzJEXmAtmZR+3npAyKU1hQhlLd3fiQMH6dN9Bt6uRAea60hnf4DDFwI578ojJ3w4cKYNtdD8V6xSB31O4ibLha0dc92vq6qQm2+NKTPJDz8wGNM+3utHqb8WSjBN1XC5Lth7xfi7w4iZHbinWL+xE0TpY2qWsSTnA5xP5z5V2EUHU+1O2os3LRG5N+7+bYYV4Ui6sc7tGsvZAdKm0rbjOhWGm2NlDeVn7Ah3ZWoo0N1oGnRsnCqTpYeXsrkiMkndD4JoiTfkj/DoR/F+/1fQOI5cPGbED1OtOWsh8+vE8Z34Y72vuk/QvR4sZGXOEfc2+pLxLxKmS9y8VUVYia1pyxY6qEyWxjVXaZEqWLzpwdofb7rFB2NtkaXz3eV7WJR4iJqLbWMCB7h8rmk/7D1cDVJ3SQ01kqknzsZZfXSkJac0fRLsTFVVZtUVQ1QVbW2Q1ulqqqzVFVNavm36ljnkPQA1bmdd911hnYjupWslUI9N3MldoeFKRFTOn3srfduW6R1bPN38++pUUt6AW+Dd5cLpTDP4ygXIxZjVqcVnUbnkht/89CbCXI/ouTO/7N31uFNne8fvk+sTdKmqbsrLVLcncGQ+caYMabM3fedu7s7c+ZjjDF02HAvFeru3qbR8/vjpSmhhcFGN/Zb7uvqBXlzzslJ+vbkPO/zPJ9PVQYsvkUE0SBEw7Z+CJPuFYq2KTPFuF9sVxDdSeYPYvu6XCGO19EMnt7CcubsD8R8Xv04lPwugqVDMYT94ftx8y/G1AgrHuyqRFB5dAXRnWx5FwZeIMTGSrsvHmE9ILz3R6rd7fWi1HfXl6KfNfN7eHMsvDsZ3p4ggq0jEKgN7Jbd06q0x3QtTfJNwlvt7TJ2RsIZrCjqEraydi5MuTk66vZ3Bcad5P4qxkEssHx9qahECB/cfdvijWLeDZknyr07PdCzlwjV7jVPiz59gPoCcay3x8GbY4SY4ohrXY83aJ6wpewFkoxJGDQGbLKtx4qFVP9UCpoKcPRSIO/m+LGpoI6kYO8/3vAYCPHxJK+6+wKLGzf/nzghA2k3JyCt1fDdFRAxtMvqpacvR0O48FmdfB+RzdVEG6KZmzqX9MB0zko8ixS/FO4fcT8qSdwAeig9eGzMY0R4H31voJsTD71az02DbyJAG+Acm500mzT/tD/cV6VQcWHqhXyc+THXpF/DtJhpDAkewkOjHmJGbA/lsY3F3cdqMkHrB9Z2ccN50sOiZPtw2M3w2WzY94PweN33g/AUrjqgPL/rSxhzU5eirqSAk58UZZhu/n9iahRtK60HqQr3ZMPnsEFDAYT0FT35h6L2FPMvqHuFhctxty+ALy8U866lHL6/pktjoq1GiOg1Hb6iI9oQzUOjHnIG0xqFhkdGP0K0oQcrrsMQZ4zjvWnvcV7yeQwJHsJ9I+6jvqOe0tZS5zanJ55+1Mdzg6hMONx4fb4QOOycY4ezedR4iaqbFQ/D6JtEuTeI9oGDr0MZ37tWie3+AgKTYMxtIrM983khWqbSHI931o1YYyzvTn2X85LPo93azqnxpzqfC9AGMClqEjkNOSQaE3vl9d0cH8w2O5kVLSQGHf9Aen91l26OQ3ZQa6p125u6+X/FCVna7eYEpKFAZPFWPgKDLhZiOWq9WFEv24bVP4Hdo65gjakCz5ZMxqm0pO39GcvUe1lU8Atp/mmk+KVQY6ohPSidhacspNZUS4g+5Jhu/NyceOQ35rOhfAMVbRU8M+4ZLHYLBg8DsT6xR91XOSxkGE+MeYLPMj8j2hDNvNR5tFvbeX3X60R5RzEqbBRxxjixsSFUiPH0PQuUKlH6WLwZfMLF3Nz2ASRMASWiXLYzEwQQMxY8vCHvgHf5ykdEwNNWDcUHWf50NML6l+CMt8T2uoADwlUex+Uzc/MP0FAI7Q2iqqCnHupdXwiFdq1vl0evw+b6GISw4vYDvdWzXhCl3W214rlBc0UZb2Dy4UXOQCwG/fZU12OHTfwcTGs1tFaKed0DKoWKGbEzSPVLpcZUQ5BOqOR/lPERVe1VjA0fS3pQOjr1kcsqPZQe9A3oS6QhklhDLGFeYbTb2lGg4Pw+5zMw0F2Se0z4x4sWp4BE0TttbhUCdPog+OoSiBnTNadqcyBimGtlQ1CqyCAvf1DMiQ2vCCGz4DTRchKQJAJjmwWyfuz++oXr4Kx3hTXWoT3UvUAf/z5EekeS25jL3tq9TImaQoulhVpTLcXNxdw17C6q2qoI1AXiqTrC34Sbf4y9ZU2E+2rRapTH9bhhPlp+yagEhE3m/GXzKW0pJck3iVcnv3pUQqRu3JzouANpN0eHxkvcgDaXi9LGsEFiNX3yg5C3ku2hSVyx7UlkZJSSktLYmZw26RaCtQFMiZnCm7ve5Ov9X2O2m/H18OXDkz9kZNjIf/pdufmLFDcXc+WyK53eoAv2LeDBkQ8yKtxVYMxqt1LcUozNYSPSO7Lbzb2nypOxEWMZFTYKSZL4bv93PPj7g87ng3XBvD/tfaIMUeCfJG4sVz0qxMH84uC0N0WvYPoFQn25eh+sfAjG3SHmbNUeiJskblrXPSussUCUh9utULsfgvtBwW9dJ9VaDUhCUM/Nvxe7VdgJ/XhDlyLy2R9A5FBRjdBQIMTkcpaKeTLmZmHnZzPDprfhzLchdwVU7hRK7o1FYn4BLLlTKC4HpYCHQWQDPY4iqyPbu3r5QaiDS5JrhtLTp8ub+jCoFCoSfBNI8E2goKmAeb/Mc4o/fZL5CU+OfZKZcTMPu39JSwnzl82nsr3SOfb8+Oe5ceCNSJJElHcUHir34tExofOH4fPhh2tFZYE+AE59TVQdVOwUizVjbhHXr4zvYNydwps+fyVEjxHXr68v6VpYaa0S4nVzPhNVEJ2oNKJP/1BrrMgR4t+/IYjuZEnBEh7e+DAxhhimRE8h1S8Vq93KpopNfJH9BQCvTHqFCZET/rZzcnP0bC6oP+790QChPp4U1LYhyzJ3rb2LRGMidwy9gy+yvuCONXfw5pQ33Q4tbv71uEu73Rwd/glCVVathX5nixvGdc/DglOwarR8WL4aGZkEYwLPjn+W3KZcLltxNWcvOpuN5Ruxy3anME6DuYG9dXv/4Tfk5niQWZ/pDKI7eWn7S9S0d/lH1pnqeHXnq5z141mcvehs7lhzB7trdvcoRKZUKKk11fLi9hddxqvaq8iqzxIPGouE0JjlQO9VcBrs+QLeGAXvTREls6EDRCnl6ieEiJinUfTv5/zcFUSDKN8OTgOFCpKmCfurTtLOgIghf+HTcXNCUJMtxMM6/XqbSoSFX0226LV/c7ToS/Y0CEGnTW8J+6pxt8HZ74vs4sxn4ZJfIGa06EPtxNIqevHjJwobtaMJokEE80Ov7HqcuQhG3ShaCEAE1qe9dky9rRm1Gd0UuF/e/jINHV3Z9IaOBjLrMiltEaXbWXVZLkH0OUnn8HPBz5y96GzO+vEsHtv0GJVtlbg5BuoLxPxqO3ANbKuFby/vWiRpqxXuF6NuENoM4QNFD7WnEfJXi/LvfrNdj6nz67lVYMB5EHCQv3fkCFGN04u0WdvIrs+moKkAm8NGVVsVL+14ieEhwxkbMZYFGQu45bdbWFW6ilPiT3Hu98bON2izuPtlT0Q2F9Yf97JuAF+9hnaLjRWFGyhtKeW0hNNQSApmJ8+mrLWMZUXLjvtrunHzd+POSP+HqWruYGthPTtLGukX7sOwWH9CfA5TeqXyEGrGZ70vMnw/3+p8ylGyiVY/HRMiJzAoaBBfZn/JvjqRsemwd/Du3ne5fuD17Kje4dzHancL2Px/wHZoOSrid36wMvv26u28v/d95+PfSn8jUBvIrppdXDXgKiZGTUSt6PI4dcgOOmwdh3+thsKuQUkhrGBWPdY1lrtMZAg7y7obi8XPjOdEYGxpEzY0g+dB8skigJr5vOiTHn6NEPjxjRFVF9rjV3pmttrZUdLI+v21+Oo1jE4IIDnk+N+8uDmExuLufasdjZC7HHYd5LC473uRKexogjXPiAxzv9ld5fxKNYQNgYu+F+W2dguMvFa0CxwrSjWMug58o0UvbEh/sUDZ9yxRCeETIUqDjwGTzdRtrMPe4fy7yazL5K61d5HflI+X2ot7h9/r0nrhrfbGS+3FVzlfOce+y/2O/oH9OTvp7GN/j/9Vmsu6Fm06MbeIqgfvUGipENuseUb4T39/tWvrwLL74OKfwC9GaDWEDYIhl4jKG4TS+u7SJtbn1gIKzjj9S0IsxUgKldjH1CQqbHxjRevLcaS4uZgnNj/BurJ1qBQqruh3BTNiZ2C2mRkWOszF/iqjLoMgXRD9A/qzu3Y3bbY27PJh+scBk9VEaWspKoWKCO8Il+8EN72HLMvsKGrkrIHHX6dGIUmE+mh5Z/t3TIuZ5tRzUClUnJV4Fi/veJkp0VO6CdC6cfNvwh1I/0dps9h4ZmkWX2/rygrO7B/KE2f0w6A9zBeYTzi0VohytIPwKFzPRX0fpVAh02RuYkvllm67HmzTolaoe7Q6cvPvI8k3Ca1K63ITf3HaxYToQpyPt1Vu67bftqptJPgmcPua21k4ayHJfl1ZlSBdEBenXcxbu99yjmlVWhJ9DwQWB/e3egWLDPWhZC2Gs96Dtc+LUsphV0LiVFFmecZbotz34B5W/zgYe7NQXFZ5ijLb48za3Fou/6hLRdxXp2bh/JEkHmelVDeH4NVDP3TUCMj6uduwXLkbKWWmWGwZeBEYo1w3UHuI7HP0GED+ayJOhjBRAjzoYpGB/pOluFa7lRXFK2ixtKBRaLA4LM7nLkm7hEBdIM3mZh78/UHym4THcKu1lXvW3cN7U99z/v0m+Cb0WCm0vGi5O5A+FvQB4vdp7/o9oFSLxZELvoat7wvBsb5nHwh8G1z3t7SJQHzENcKOT+nhMjd2lTQy+62NWOxC7POF5RJfXDmSwd6N8POdkLVIvN7om8X86lT9/os4ZAcLsxeyrkyoydscNt7Y9QZp/mnMSxOaFoeyuXIzp8Wfxu7a3VySdgkGD0OPxy5tKeW5rc+xvHg5KoWKeWnzmNtnLr5a3+Ny7m4OT2FdO2qVAn+v3mnh8PdSkF3VwI0jznQZT/NP44fcH1hdsppJUZN65bXduPk7cC8D/UcpqGlzCaIBFu+uIK+m9TB7ILJ4n5/f3QLI1sFos4MWcwvFLcUkGBO67RpjiCHFL4XJUZN5b9p79PFzB9L/H0j0TeS9qe8xLWYaSb5J3Dv8Xs5JOsel7ynKENVtvwTfBIqbi3HIDmeZaScKScHs+DO4d/CtJPkmMS1yMu9Neq0rkA7uCyOvF/831fdsSRUyQGx3zodwyRJIP7/rhlKhPLwQlFrbK0F0s8nKc0uzXcYa2q1sLXK7+PU6gSmij7kTpRqGXSFEnw5B8k8ADviFf36usEirL4Adn8LKx0SvdEczqNTHTwlZ7fmX+ln3N+7njjV38HHmx9w0+CbGhI8hxS+F+0bcx6z4WQDUmGqcVUKdyMjUmet4b+p7nBxzMh5KD/oF9Ot2/CHB7vaGY8IvQVS4dGbZJAXMeFa0R4X0Ff8/fyEEJYsg+tAedIVSCJOBuB4dMje+2V7qDKIBrHaZpXsqxBzNWiQG7VZhk1Wy6bi9rWZzM78W/dptfE/tHmYnz+5RNDTJmIQsyzw+5nEmR08+7LF/zPuR5cXLARGgv7vnXXbU7Djs9m6OH9uLGkjqhf7oTixSDUGqNNRK1wSNJElMjp7Mx/s+7rXXduPm78Cdkf6PYrb17Ot48Bd0N5qKhbqxLAvbl4qdYtwQhl6hJlgfzCdZn3Dr4Ft5ZccrtNvECvXM2JmMChvFlKgpqBVqVMe53MzNP0u/wH48OfZJLHZLjwrBerWeVP9U5418oDaQvgF9nf1R/trugkpB+WuYs/RBTo0aiaZqN6o9q2Hu96Lk2tMHJtwJaacJL15JCeFDujyjvYJEkGRpA53vcS9v/DPYHA5azN3L4Nsthy91dHOc8NDDyGsgYbIom/aNFsrHPpHIe75Gqs8V2/kniB7nTW927dvRDItu7BIXA5j+DAy/khOFkpYSZGRqTbU8veVpBgQOIFgXzJCQIU47OoPGQLAuuJueQaBnIP0C+/HE2Cew2C1UtlWyung1+c0icx1niGNKdO/23P6/Q6mC/ueK78jmMrHQF5AsFnBAiIhteQfWvSDKr0ffJMq8ZYdYxDv5KdGWchjq27q3RYXrLJDxbfeNi36HlMOLzR0LOrWOfgH9qGircBmP9YklUBfImPAxTIma4gyIvdXe3DrkVpL9ko+o1t1iaeGXwl+6jW+p3OLOVP4NbC9uIDag9wLpOmsBvqqenVmGBA/hy+wvKWgqINYnttfOwY2b3uSfv8N0848Q468jLcxARnlXL1d8oBexAUewK9IFitX1qgxIno55yKWUe/uhslkIX/0c0TMeJtUvlTd3v8kFfS5ArVCTYExgUNCgHoMlN/9/UClUzv6nQ7HLdhKNiUyOmkygNpCCpgJe3/k6AJf1vYwgXRB5jXn4e/pj9DRCS5XoEzQ1oMs+qPy2YneX+JKHt/A0B9j5ubCcSTxJ3IxaTVC+XZTMniD46T24YmwcD/yY4RxTKiQGRblLF/8WNHoIH+Q6FpiMNG8R1fm7MJsthLfuRrH2OddtTA2uQTQIy7Tk6WCM7N1zPkoO9m4H2FWzi0BtoEv/c6AukAdHPcgNK2/AekAt/IKUC5xVHp1/v3HGON6c+iZZdVlIkkSKbwohXiG4OUZUGgjtJ34OpT4fNrws/t9QIHrzJ9wtrm0BSaKCQnX4/uBzhkSweI9rMJsWHQKNQ0TV2MEcycv8GNEoNVze73I2V26m0dwIwNDgoQwKEn9XnXPswj4X0mZrI8YQ46xGsjvslLWW4ZAdhHmFoVF2VXN4qjwZEDiAgqYCl9dL8k06bufu5vDsKGlk9uDeuZa129poshXiae3b4/MqhYrRYaP5Oudrbh96e6+cgxs3vY07kP6P4u/lwUtz0vl0YzGrsqsZmxjARSNjCPI+gs9jQCKc9BCUbKFM48GrDVtZvPc3PJQe3DR6PvFqHbOTZ+OQHdgddurMdUR4R+D/BxYubv791HfUs7tmN/sb9hPnE0eoPhQZmTifOIaFDOObnG/4Ie8HwvRhzE6ezcOjHybcKxyb3cbcJXOpaq8i0ZjIw6Mfpq/Kt7tYD4gAuSeiR8PWD2D3l+Kxzl8IQh3hZvSfYGb/UDRKBe+vLyDQ24PrJyXQP8L4T5/WfxtDGMpEf37PrGawt5p4pUaIQoGwUuupzN/a5tr/+g+T5JvEBSkX8GnWp4C4OX1w5INYbVaKmosI04ehVqoZFTaKz2Z8RkFzAZ5KT6FnUbWF/gH9CdQFAlDdXs3H+z7m88zPQYILUy5kbtpc5/NujgN2s6v4XU22EEu88FsIS//D3YfG+PHWRYN5beV+ZOCaCQmkRASA7jrhTNDpaR4xrMf2hT9LZVsl5a3l3D/ifqwOK0YPI8l+yfhr/aloq8BkNRGsD2ZwyGBaLa1Ut1dT1VaFRqlhYfZC3t79NjbZxunxpzN/wHzCvERLjlqh5oI+F7C2dC11HXUA9Avox9CQocft3N30jNlmJ6+6lZiAI3vN/1ky67II9/WmovDwlY5jwsfwzJZnuGnwTW6BOTf/StyB9H+YhCBv/jcrlZumJOLlqUap+IPeULUnDLkc4ifzY/Ev/FS2GhBCYrLak5t/u5VWq+ix9lZ78/qU192iYv8BTDYTr+98nS+zv3QKF02KmoTZaiZIL4TDHhj5ADkNOVgdVuKN8aT5p1HUXMTspbOdQnT7G/dz2+rb+GT6AgKGze/K2oDoIwxO6/kEfKNgzicic2g1C2s2vxOvTCzAy4Pzhkcxa0AoaqUCT7Xynz4lN4C/3oPZQyJpNQVji16NqiEftL4QlCo8fDX6Lqs1gAEXCPuqEwRvjTfXDbyOabHTaOhoIFgXzPaq7dy+5nYcsoNT40/l8n6X02pt5fOsz7E4LPyU/5Nz/1lxs7hn+D14a7xZV7auq2dRhg/3fUiCbwKnJZz2D727/4f4xkLMOChc0zXmFSyy0UeB3kPFtLQQxiYGIMviMQCh/eHylVCTJQTKgvq4CjP+BRo6Gnhww4OsL1/vHLsu/TrSA9P5Of9nHt/8OE3mJkaFjeLa9Gt5butzbK/eTpA2iBsG3cCrO1917rekcAnRPtFc2vdS51iKXwqfzviUvKY8ZyWbe/Gm98mpbCXUxxMPVe98F2XU7SXON4j8HBmTxYFW010LIkQfQrA+mDWla5gcdfg+ejduTlTcgfR/HKVCwkd3FKI5HS3QWgkePjQbI1m8YRU+Hj7MiJ3BsJBhWOwWzkw8E19PX1aXrGZXzS42V24mPSi9t9+Cm3+YwqZCak21XD/wehrNjRg9jOQ05JAWlEZOYw75Tflk1WXxcebHmGwmVJKKd6a+g8lmclFzByhrK6OivYqA4VeJYGb7AmH7MuYmIbxjaROBzaF4Bbl6QJ/AeHu6V93/UZrLwdIuelc1XZkYL60GtH0g+KDFP60R5v4Ia56FmkzoP0dkqo+X0NhhqGqvwmQ1EaQL6lF34FC8NF4MDBoIwKriVbRaW7mgzwU4ZAdeGi8y6zL5JPMThoQM4c1db7rs+1P+T5yXch79A/uzpGBJt2MvKVziDqT/DO31IjusDxA+0J14GmDWC0K9O2uRyByPufGYWwV0mh5u33yjxc9xJrcx1yWIBnhr91sMDRnKs1ufZUbsDLw13uyp3cMbu95AqRCBmYfKw7nfhMgJ9AvoR6O5EQUKylvKCfPuEooM9w4n3Dv8uJ+7m8Ozp6yJmCO18/1FsuqzmRY9FT8vJdVNDqIDexZVHBU2iq+yv3IH0m7+lbgD6f8gDodMRnkTu8ua8FApSI80khB0iAVP5V7RZwpC+GTNs5C3HHwi0J71HqPDRhPhHcF7e97j86zPGRoylFFho3hp+0tc1f8qylrLqDXV/v1vzs3fjs1hQ6vSuniIzoidQd/AvqwoXcEtq28hwjuC6wdez3t73qOuo45397zLNenXdDuWVqUVFimGcBh7CwycC1V74OvLhNBd4jSY+qjIOh9KczmUbYOmUgjsc8AHume7lT9Lm9nGrtJGcipbCDJ4kh5pJMyoPa6v4aaXsHZg3fcT6l/vhLZa7EnTYcrDKIMOzCWrCcp3CKVufRBEDBb2VxFDhPq7td01IOqNU7RbWV26msc2PkZdRx1jwsdw+5DbiTPGHfUxWq2tfJL5Cc0W0R6hVqh5fsLz9AvsR4R3BDJyt306fdvjfOLYWbWTDkeXj3u8T/xffFf/QUo2w483Qs0+cS069SWIHN71fECCuI6Nuw00XmJhxmX+BQoBRd/ujgfHitlqZ09ZExnlzfjqNaRHGInyP7ZS3p48yq0OK1aHlfkD5vP6ztep76hneMhwhoQOocPWwZ7aPdR31BOsCybVLxU/Tz+X74jM+kz+N+J/eGvc9n//FHvLmojy652y7lZLC40dDQTpg/DzMlHZZCM6sOeQY2jwUBZmL6SyrZIQvVuTwc2/i14NpCVJ0gApgAxky7J84jSW/YfZVtTA+e9uxGoXN1R+eg2fXzGC5JADX2hl2+HDmeLGEYSw07jbRSDdVIp15aNMmHov85fNd96UbancglJSMixkGJ9lfcap8acyPmL8P/H23Bxn2q3tZNRlkNeYR7Qhmpr2GhrNjYTqQzF6GFEpVSzOX+yyj1al5dFNj1LSUgIIn9BXdrzCgyMf5N7191LdXk2kdyRX9LuCd/a849zvnmH3EOV90M1jYxF8coZQigfYv1SUeZ/5tshQd9JWC4tuEs93ctIjMPK6v2QtdCg/7Czjnu+6vHaHx/rxyvkDj6wt4OaEoKN0J57fXeZ8rMxZglWpRXnWm2JOZS6Cb6/o2iF0IMz5FHzCRVvL4SzTjiPZDdncuvpW53V1Xdk6lJKSp8c9TUFTAZn1mU6bqhifmB6PUdBU4AyiQQQ8X+V8xdjwsVhsFuJ84px+0gCh+lCiDdHsrd1LjE8MVw+8mnCvcBZkLKCqvcodSB8rjSXwxXldvco1mfD5HLjyN1dfcoXCdWEm62f4pqvcmZD+MOdzMEb8pdNZnV3D/E+2OR8nBnnx/ryhRB4mgGrsaGRv7V6KW4qJ9I4kzT+NWEMsPh4+NJmbnNsNDR5KSUsJj218zDlfN1VuwlPlyZzkOWhVWnw0PsQb4+kf0J/b1tzm8jo/F/zMafGnkeSbxN66vVS0VRDtHU3fgL6H9Zt2c3zJKG/i1PTeqQLIbcoj3DscBQqMOgVVTYfvk/ZQeTAsdBjf7v+2xwV2N25OZHotkJYkaSbwJpAHSECsJEnzZVnuXjvm5m/DbLPz+upcZxANUN9mYV1uTVcgveOTriAawNwi+q58Y8BmYdvEWyhrLuqW2dhYsZEr+1/J1qqtTIicQIulhfzG/GPKprj5+2gyN7Gvbh8lLSWE6ENI80/rUV19ScESHvz9QealzeOjjI8obRW+zwpJwS2Db8HXw7fbXAjQBjiD6E5MNhPlbeXMS5tHuFc4vp6+XNr3UsaGj6XGVEO4VzgJxgQXD2rq9ncF0Z1kLRLK3n4xXWPVma5BNAgBn5QZwtboOFDa0M4TP2e5jG0qqCerosUdSP8LsNfs7zamzvoeU8P9aD08Yendrk9WHMgO+vx95aZFPVxXfyv9jez6bC799VJsDmGh5u/pz9PjnqawudBpJ9fZU3pwsNNJnamONaVryKwTWcBlRcvYVLmJwcGDuaLfFVS1V3HTqpuoMdUAoJJUPDfhOXZU7cDX060sf0w0FncF0Z2010NDsWsgfTAtVbD0Ltexyt1QtfsvBdL1rWYeWeyqOr+/upW95U09BtIdtg7e2fMOC/YtcI6dm3wutwy+hbenvM0bu95gb91eJkVOYnT4aEpbSrvN1zWla0jyTeKDvR9w0+CbeHH7i4wIHYFD7h5IFTQV8F3udy72V9emX8tl/S5zC0/1Mg6HzP7q1l7LSOc27CdEJ7LLRp2Cisbu9o8HMz5iPK/seIUr+l3RzXPajZsTmeOXqunOc8BEWZYnyLI8HpgIvNCLr+fmKLDZZcobO7qNVzUf1KvaUNh9x7Za0PpSMulONlZtc1qoHEyIPoQ6Ux0TIiZQ2lLKzatvZu4vc8muzz6O78DN8cBqt/Jp5qdcuexKHtn4CNeuuJYXtr1Ai6XFZbuy1jKe3fosEhKeKk9nEA3gkB18l/sdLZYWYrxjXPZTK9R4KrsHlyG6EPw8/ZgYORE40NsZPJCpMVNJC0jDQ+XhukNPiu8+0d37pC2t3bezdYC1+1z/s5itPXtBt/Uw5ubEw6IxdhuzG2MxS55irpgaetiph3nVixg9jN3GQvQh7Kje4QyiAeo66lhbtpbntj7HDatu4JHfH2Fj+Ua+zvmakWEjux1jTPgYtlVto7ajlptW38T02OlclnYZV/e/mmS/ZLZWbXUG0QA22caCjAWMjxzvVk8+VrRGUBwi3iQpxPjhsHWIYPtQzH9t/nXYHNS2mruNH+6atb9hf5fY3AE6fX5TA1J5ZvwzfHTyR1jsFm5cdWOPJd/hXuHUmGqYGjOVH3J/YGfNTkpbS0kwui5oBmgDCNAGdPOQfmvXWxQ3Fx/rW3VzjJQ1mtBplHh59E4+Lbcx16nM7qtXUNVoP+L2kd6RBOuCe/QUd+PmRKY3A+lqWZZzD3qcD1QfzY6SJBklSfpakqQsSZIyJUkaKUnSg5IklUmStPPAz4zeOe3/3+g9VMwdGU1CoI6Hxhu4c7QPSUFeXJSmESvmDjsMmtt9x8jhtAUm0xCWzpiIMc5+qE6UkpK5feaikBTE+MRQ2VYJiOzI6pLVf8+bc3PUFDUX8fbut13Gfsj7oZuXp8VuodXailKhxGrvvnhSZ6qjqKWIB0c/yLToaRg9jIwOG42/pz9zU13n0TlJ52B1WLE5bEfvKx7SH5KmdT1WqGDWc+B1iKJrQCIcWg4YMwY8fUSGqIdzd6G1BhqKwNb9prOTMKOWk9Nc+7c81QoSgryO5p24+YdRBiZjjZnYNaBQUTvuMbx8g8E7BE55BYZe3rV4o9RAYPLfeo4pvinORSYQ19V7h9/L0qKl3bY12UxOIbJVpavYWbOTh35/iA8zPuSR0Y8QbYgmRB/C/P7zyW3Mpd3WVWWU15hHQXMBeU3Cd7je1D2Iq+2oJdI7Ei+Ne34fE/6JMOl+17EpDwnxxMNdi7zDIP1C1zGlWnhK/wWCDZ5cMNw1C65USCQFu/Yl2x121pWtY1PFph576DvnjqfKk9KWUr7P+x4Q3yNDgoc4t1NJKs5LOY+lhUuJ9I5kf6OoAllSsIRZcbOYGDkRo4eRkaEjubTvpS7fN7GGWC5Ju4TZybN7/K5xc3zJqmzptWy0Q7ZT3FxMqD4UOBBINx05kAaYGj2Vd/a802P1ghs3JyrHfSlKkqQzD/w3Q5Kkn4GFiB7pc4AtR3mYl4BfZFk++0CftQ6YBrwgy/Kzx/uc/2ucnqDgzMZVaLe+BWotV429DWnDm5C7HIZdCUMuhVNehjVPi5X0cXdSHj6Ad/Pa+O7XS/DR+HBF/ytIC0hjaMhQrA4rwbpggrRBfLX/K0paSriq/1XO1yttKT3C2bj5JzDZTNjl7l9srYdk4EL0IYyLGMea0jV4abyQkFxutE6KPon8xnx0Kh1xPnGcFH0Sn2V9xkMbHyLVL5XHxjxGQ0cDZruZ7PpsOuwdDAoadPQn6h0Mp74KVXtFxjAgSdgSHYp/Alz0HSx/SJRE9pkFaWfBu5PBVA+D5sHAC6F2v5jTof3Esew2yF8Ji2+HpmJIPR0m3ivEgA5Bq1Fy1/QUAr01/LirgsRgL+46OYXEYLdYzglP4Xq8F9+GFNoPx8lPYVLoKfNMwCuyP6qWMtj4Omx5VygqD78KGgqg3zkQ3PdvPU1/nT8PjHyAOSlzaDI3EesTS6IxkZz6HPbVuZboDgwayJfZXzof2w94E+vVeipbKxkcPBgFCmx2G3q1awWHt8ab3MZcZsXNAmBw8GA+2veRyzanxp9KsP742Cf9p1BpxIJM+GBhyafyEJnldyaIa9igeTDqBlchMZVaiCt6eMPOT8A3Dk56qPv8MzVBxU5xrfIOg9B00B9+UVKpkLh0dCwalZIvNhcTbtRy1/QU0sJ8XLbb37Cf61Zcx5mJZxLhHeHynR2sC3YGRABt1i4ruEX5i5gZO5Nr068lSBdEvE88C7MXYrKZsNgt6FQ62m3t2GU7L25/kb4Bfbln+D0szF7I01ue5pK0SzB6GJkUNQmAz7I+w1PlSbwxngjvCPciTi+yv7ql14QyK9oq0av1aFXi+Ea9gvo2B3aHfESb1b4BfVmUv4glBUuYGTezV87NjZvjTW/UdJxy0P+rgE7FqRrgD5utJEkyAOOAeQAHBMosLn2Tbv4S+v2LYONL4oGtA+nXe2HKg6DWiVXw4t9h8MWQIi5kVdj5Muszvtr/NSDKCp/c/CSPjn6U57c9j16tZ27qXBbsW4BWqeXWwbfyYcaHztebEj3lb36Hbv6ICO8IEo2JzowBgK+HL9EGV+uUxo5GBgQMQKfSsbxwOXcPu5svs7+krqOOk6JPIso7ikjvSEpbS/lo30ekBaQxPHQ4FW0VKCQFOfU5Ljfovxb9yuuTXz+2k/UKAq9J3cfbG8DSIjxYVR5CXfn8L6CjGZrLRBDdyZZ3wG6BwrVQf8An+OKfwGETQkAHghAyvhX/P/MtVzGzA8QE6HnglDSum5SIl0aF3tNtfHDCU7sfPj0bydoONftQ7P4SXWg6CRd9h0Knh99eE4E0iBaWVY/Bme8gr3+VIkUUW+o8iPDV0i/cB6+/wbrMX+vPKO0o5+P6jnoazY1c2OdClhQsQafWcWbimRQ2if7oGlMNerWeRN9E5vefT7hXOPdvcM2IXtr3UgwaA82WZlL9Uqlur2Z79XZarWLhbFDQIB4b/Rhv7X6LVmsrs5NmMyFiQq+/1/93WNpEibanj7gGLblDfLcuf7Brmy3viIB58v1w8H2NbzSc9DCMug7UevA8ZIHOZsGx6S0Uqx9zDjmGXo5iykPgcfiAM9xXxx3TkrlkVAyeaiUGrZjDdaY6LHYLQbogCpoLsMt2vs/9nhsH3ciG8g3srtnNgMABjAob5dLyE2uMxUPp4bQuXFywmPER45mdNBuT3cTk6MnIyKwpWcNl/S5zUeoO9wrH7rAzMHggg4IH4aPx4d7h95Jdn827e98FwGw388jGRwj3Cmd0+Ohj/AW4OVqyK1sI8+mdQLqwqdBFfVutlNBpJBraHAR4H96zWpIkzko8i+e3Pc/EyIlHZf3nxs0/zXG/C5Rl+ZK/eIg4RND9gSRJA4BtwI0HnrtOkqS5wFbgVlmWe2hqc3NEzC2w/aPu440l0F4L+76H+MlipTukL+U1GWyo29dNlRkguz6bGbEzcMgO9Co956ecj1alJb85H5vDRrAumOsHXs/g4MG9/rbcHBu+nr48Ne4p3tj1BuvK1tEvoB+X9b0MheTa7dFh7+CVna+Q7JvM4ODBbK3aSopvCjPjZ7KnZg8rS1ZSb6rnvD7nEeYVxpbKLWTXZzMpahJ9/fu6KHJ3sqF8A0ZJTb/A/i4+vkeNLEPeKiEOVZcLqafBhLtFebdGL34yvu2+X84SSJ4hAmlTA9a936MOTu4KojvJ+hFaHgK/2B5fXqVUEGxwi4v9a6jLdRVPBKSKnUh1edDRJLzKD6VsG1Kf6XRUZHL7jwoUEnx7fiQDlEUiIA/qI7KFf0IRvqqtCoWkcIqD/REKFBQ0F7C/YT+ToiZhspl4Z/c7XNr3UuwOO+lB6ZyZcCYP/f4QRg8jqf7dKzY2lm/kgZEPUGuqpbCpkDd3Cy/pDrvQEPDx9OHUhFMZEDiA/Q37eW3Xa3yW9RlXDbiKU+JOwehpPOb3+Z+jKgNyfgGHQwTIgSkQNaa78BiIrPPwq0TFTSft9WKeegWLBe1DsNfmolzzpMuYYsu72PqfhypySLftD0aSJIIOXLM6bB38Vvobz2x5hkZzI+cmn+vsg7c6rDy79VmGBA9hdtJs/LR+PLP1Gd6b+p7zWAnGBN466S2e3fosBU0FTIycyMjQkdy+5nZMNhN3D7sb2SEzr+88TDYTtwy6BW+NN1q1Fh+1D7lNuSzMXojD4eDMxDOx2C2sKl3V7Zw3VmzsFkjb7DZqTDXoVDp8PH267ePm6MmtbmVQVO8ICRY0FRCkC3IZ89UrqG6yHzGQBkj2SybZN5mntzzNg6Me7JXzc+PmeNKbqt1xiBLtEYjS7t+Bm2RZLjjijuKcBgHXy7K8SZKkl4C7gFeBRw4c6xGEmNmlh+4sSdKVwJUAUVF/3YPx/x1KTxz+SShqXNWH8QoWq9oNRdDRAMUbobmMzJZ8NMZwQvQhVLVXueyiV+t5P+N9rh94PY9uepR2Wzs3DLyBi1IvYlrsNJQo8dP2ru/qv40TaX4m+iYyL20eofpQ8hrzuGr5VcQb43ll0itEeAul2M5+tt8rfie7QYjGaRQaToo9iQ8yPmBYyDBuHXwrGXUZnN/nfB7f+DjNlma+z/0ejUJDmFfYYebNRzwdNQt19Ggo3wktFUKFO7ifmId2m/CPrskR2Z3QAWAIFdnm0s2QtQRix4mFob3fiIBo5PViMSgoVcznQzFEQOtB51K7H6KHd9/OK1hUZ/wH+cfnZ22u+L2DCFQDEv94n7p8sY/dBiFp3ftKD77hVmtFpY0hHJoroHIX+ERAk6vCPB5e8Ot9RJ4qsmQPjfWi329XItVmiueVarjwO4gde9Rvrd5Uz495P/LOnndQKVRcm34tJ8ec/IdWP0ZPI2cknMH/1v+Pr3K+AiDCK4I+fn2YETeDNP80/rf+f9hlO5IkEaAN6HaMWJ9YtlVu47Psz5xjGoWGGEOMy3b76vdxx5o7nI+f3vI0QbogpsVM40TgH5+fh6N2P+z6QlybijeKMUmCGS9Ae0337Y0xole6aIMQRFRqYMNLULAWpj8lWgzsVjGXDyzYmFob8Tp00Q/oaG3kWAqgM+oyuO23LiuqBfsWkGxMZnzEeH4r/Q2AbVXbGB0+mnf3vEugNpAog+tnPTh4ME+Pe5rtVdv5KucrdlTvYH7/+fyU/xPv7X2PeanzeHzz406Lw/f2vEduUy5X9b+KV3e+6jzOR/s+4r4R9zm/gw4m3MtVLb+4uZh397zL4vzFRHhHcNewuxgWMgzlocJu/xAn7NzsAVmWKaht672MdHMBw0KGuYz56pVUNdlJPQoR+nOTz+XRjY/yQ+4PnJZwWq+coxs3x4verEv8DHgNOOPA4znAF0APd64ulAKlsixvOvD4a+AuWZadd8CSJL0D/NTTzrIsvw28DTBkyJDuqhn/dVRqHMPmo8hb3pWl8YkUfV0bXxM90go1rH8R4iZC/HBWl6zm5JiT2Ve3z6nWHWuIZXDwYJJ9k/lo30coJSUXp15MflM+hc2FpPj9NZGU/6+cSPOz1dLKU5ufYnftbudYbmMuu2t2OwPpho4GJkZOZGrMVCrbKvHSeBGqC6W6rZrZybOJ9IokSBfE7WtuR0Li6vSr0al0tFpbqTXVMjV6Kntr9zrnTbQhGrPdTIGpAkvmD6hNTfDD1V0ndfKTYg7mrRAl152iI9Gj4Kz3RKBVnQXZPwlhsAHnieB47zcQlg5rnhXB0kU/QmAf4eEKIvDpfw78ep/zpWqiZxIW0k/M8/wDGRFJgunPuGaK/kP8o/Ozci8sOKVLvVjrC3N/hND+h9+nOgs+Pl0sxIAomZ37o1hMqdojgmyfSOg/B0o2wbDLYduHwrO3b4Pw8U09Dcq3dwnN+cWJoNxqgrYalIpgTvEtRNkZRIMIclY8DBd9K17zKFhXvo7ntj3nfPzIxkcI0AY4+0MPR7OlmQUZC0QGWrajQEGrtZVVpav4reQ39Gq9U++gydyEQWMgSBdEdbvQ9tSpdFyYeiFeai9ara0sLVpKnCGO24fdToIxgZr2GjLrM2k2N2OymYjyjqK4pUs1eVHeohMmkD6Rrp9OavfDvh/F4ktnEA2icmb1Y0JoLCAJanPEuFItKmgKVouWgvp8SJgiRD6DUmHTG8LOr3PbC76FuHE0e4aj841D0dDlAY7On2Zt5DEF0ntr93Ybe3HHi3x48ofMSZ5DVXsVdtnOl1lfkuybzC1DbnEp0wXh2PB1zte8v/d959hL218SfufNBWhUGh4Y+QAVrRWUt5aT1ZBFql8qu2p2dXvtJQVLuDj1YrZVbXOqgId5hTE8tOtW0Wwz8+qOV1lSKNxT85vyuWb5NXw28zP6+Pc5hnffe5yQc/Mw1LSaUSsVePVCa5JDtlPWWkbQIfoKBp1E9VEIjgHo1DquHXgtz2x5hhB9iMtccOPmRKM3A2lJluWDfRQ+kSTpuj/aSZblSkmSSiRJSpZlORuYDOyTJClUluUDd0ucAXT/NnDTDVmWqW4x46FSYNRpoHY/yl/vEV/uSpWw6ajNFX2BdqsIXNY9B8Fp0FxGqNVGuFc4H2R8wBNjnqCgqQAZmWZLM7f9dhtXDbiKBGMC02Ons75sPWvK1nBW0ln/9Nt2cxR02Dooay3rNl7XUQdARWsFjeZG2qxtvLT5JefzI0NHcmr8qSzYtwAfDx9ifWLpH9Aff60/P+X/xIzYGby28zUAgnRBzO8/H4fswOhhpLilmAX7FnB74nno174FPoes3C9/QKht/3xHVxANInNTsUsETL/e2zW+8XUYe5sIliwHRHCsJlj/Apz7iQiQ26rF883loPEChZLygTdT7T+MMO8QOOMNqNgthID8EyGkH3WtZuwO2VkO6eZvYO/XrhZApgbYvfDIgfT+pV1BNIgKhc1vQ9oZ8NnsrvFJ90O/s+Hzc7tK+XcsgLQzxbw65WVRjYMsqht+F32dJRZvtGol+g7XqgoAGgvB1HhUgbTdYeebnG+6jS8tXPqHgbSn0hMfDx/n31Qnl/a9VCjqS0o0Cg0WhwVPpSfFLcXcNewumsxNmGwmBgUNIi0gDYAHRz3IdYOuQ6/WY9AYqG6v5u61d7O5cjMgvOFvHnwzb+x8w6nUHOcT94fv7z9N3iqwtdOjCUq7sI1k4j1ibrdWieyzQgk/3Sx0GwAyF4HFJHzvqw9ZsFl2H1y8CLVPMNtHvExaxrNoS9dhCRnMvgF3EegT6fKS1c0dqJQSfvpDrAQP0JNjQrhXOP5af2fmud3aztjwsfh4+CAhkV2fTa2pFrPdTJJvEhqlhm/2u87nOSlzeG/ve2TWi/NXKVS8Pvl1fisRWe56c32PQW+sTyxDQobw6YxP2d+wH7VSTYpvCpGGrvdVbaruplxvk23kN+WfMIH0v4mCmrZeExqrbq9Gp9ajPcT+0lenoPIoA2kQc3L+gPnc9tttfHTyR8QZ3dchNycmvaHa3VnLu0qSpLsQWWgZOBfo3mjbM9cDnx5Q7M4HLgFeliQp/cCxCoH5x/G0/19S0WTiy80lfPh7IX56DffN7MP4xhUoKndBXoj44k47Q9wIjr4RVFrxYzOLfq/xd2NTaYjSRaFT6dhevZ3Psj5zeY2d1TspbSkl1ieWNWVrCNQGEuF1FLU7bv5x/LR+nJ5wOu/tFf1vSknJ6PDR9A/sT2lLKdetvI4JERO63TD9XvE7pyeczpDgIWiVWkw2E/lN+Wwo38DEqIkEagNJD0xnZ81OqtureXXnq9w/4j4+yfyUirYKrog7nal1ZSJoPbTFwGY+IBZ2UKntgDkiS9hSKUTFfGOFqnIn+SuFcM/BAXZtNlja4eeuEkYM4ZB+PvvDT2dHRyhTIw5kWbxDxQ/CX3X53iqeWZpNh9XO/HHxnDEonACvnm9K3RxHDg4gOqn6g/XS2lzXx96hEDZQtARMuFvMmW0fwMqHYeYLPfTDL4KR18GSO2HMTbDiIZFJBGyRo9hmjkSWG3rul0+eBcqjuxlVSApifWLZXr3dZfzQklmT1USLtQWjhxGNUgOARqnh8v6Xs7FiIxaHCLyCdcGoFCpMNhMVrRXcO+JelhUuY0TYCL7Z/w1rStcwLWYaXmovtlRtIdQrFD9PP9RKtYsCc2ZdpjOIBpFp/Dzzc6bGTOX73O8xaAzMiHM7TR6RhkLIWy4W9BQqIWDYSdJ0aKuBRTd0jen8hRPBmJtAUkJ7nVCML1oLceO6H7+xCKztBHobqInsz5u1DxEQ1kKdTceEsDjCfUUbSnVzB99uL+OdtfnoPJTcdXIKk1KC0GrEbV6HrYMmcxPpgenEGmIpaBbXUJVCxfUDr3dRdtepdejUOvbV7ePFbS+yu3Y36YHpDA8dzrNbn+XVia8SrAumydzk3MfX09cZRAPYHDZe3PYidw67k0+zPqWyrZII7wh8PHyc+3mpvTg76Wy8NF4kahJJ9O25lcNT6Ymvh69zkbcTb43bMeHPUFDbRoihd77TiltKCNF1r+gy6hVklh2brVmKXwpnJJzBjatu5KtTvsJT5V7YdnPi0RsZ6W2IYLdTjvLggLezv/mIyLK8EzhUPeOi43Fy/98wWWxkVbZQXN9OiMGTPqEGpyrnt9tLeXGFUGVubLdy3w8ZrOqbL9bNSzbDlEcg+2fI+VkcTJJEZmbq42BpocQnmKv3vkakdyS3D7mdnwq6V9OXt5VzTfo13Lv+XgYGDuTOYXd2KwNzc2KikBTMTp6NyWpiWfEyrux/JYvzF3P1squZFDWJk6JPQpZlGs2N3fbNb8pnTPgYUvxSuHbFtc7S0h/zfsTmsHF+yvlc2vdSmixNxBhi6OObwgTveOyF6wja9hEKv0SYcBeUbhc9qpvfFkFOQLKwsuo3G3Z9Lkq3G4tE/yGITM6Uh2D1k9Bp1WWMgZyl0HqQTf3Ai+GgmzxAqOhufJ3Ii08nsV/PPWzbihq48YudzseP/ZyJt6eKOcP+XM9bSX07mRXNOGSZ5BADsQH6P97pv0r/2UKs6WAGnHfkfZKni8wyiDLY0TfAr//ryvSFDhBWRFveBfWBmzBJAcOuAK2f+L8xUlz7sn7GccF3VJXlU+/Qs6IplIxKFZePjcPhUw+T/geb3xGZ8rTTIXokeB2dH7okSZyTdA5LCpY4M71GDyNTorocDfbW7uWVHa+wp2YP4yLGcUX/K4g3xgOQHpguMnaN+9EoNYR7hfPWrrcYGjKUkWEjyW3M5czEM1mwb4HTm/ernK84M/FMVhSvwEfjwxmJZ3Q7ryZLU7exyvZKZsTOYFTYKJJ9k/8bmaC6XKjaJwLh4DShoH20xE8UbVHZv8Bpr8NvT4rgOvV0GH8H7D1I+FCSYNzt8M2lonIGRNn3yGthxyfiWngo6eeDXgg3xQTomTIghiaTlX6eKuIDuoq6l+yt5MlfxMJkXRtc+9kOPr18OKMTAsiuz+a1na+xpXILw0KG8ejoR6k2VdNuayfOJ47a9lp+LfyVBGOC8/dd0VrBNcuvcQav68vXU95azuDgwfxe+TuXpF3i7M1XSkpsBy8gHKCkpYRAbSD3j7ifl3a8xIKMBfxv+P+wOWwoJAXJfsnOOX4kAnWB3D38bpfe7kFBg9wtZH+Sgto2Ar17Jygtbi7CvwedBl+dkuqWY/eHHhM+hoy6DN7a9RY3Dr7xj3dw4+ZvpjdUu3uWunVz3LE7ZL7aVsr9P2Q4x64aH8cNkxIxWe18srHYZfuyRhNNoWMJ4C1xM+iwdgXRhnAYPE8EG14hUJNJYUgC/lp/Lkq9iF8Lf6WPXx+WFCxxOeaUqCmkB6Xzxcwv8PHwcfs+/ssI8wrj9mG3c2rCqVyy9BJnj9oPeT8wPGQ4Q4KHMDR4KFuqtuDr4cv4yPHY7DYivCLYWbOTQF1gNz/qZUXLuGrAVcT6uF4KAsMGgyEKQtJFT2rpVvFvTTaMuhHKtsG0x0V/8rjbRWm3X5wIqDtx2LtKd3d8LPqhB18synLzV4ry7qFXijJem1kITXUcFCz4xuIZePhL1Mqs6m5jH28s4rSB4WjVhxe1cThkatvM6DUq9B7isrq/qoV5H2ymrFEoI/vq1Hxy+fBuHq5uDhA7Hk56RPjXyzKMvRXij1z2TPRomP60aE2Jnww7P+8KokGU0UaOAK0vDl0AjgEXoPIKgKzFIngCUe5/9gfgG02mNZiZSzoVvluBVpZmVDI+Np1B/omiz16pEZnoyBGu9kV/QFpAGp/O+JSs+ix0ah1R3lEEH8jclLaUcvXyq52LVosLFlPQXMDbJ70tymsliRT/FFL8uwKHx8Y8xoJ9C7hjbZc42EWpF9FqbSW3Uby35UXLmRU3iy+yv2B67PRuGZ1YQ2w3b/iTY05mUNAgPFT/kSqM8l3w8WniOxHAGA0XfAWByUe3f+RwmPWiqGbIXwlTn4DwdHHtUnlAzGhYc2Db2PGQv1r4SCOLjHRbDag8xQKhSgunvyHsstrrYOBFB3RLFNjsDr7YXMLDP3X5iV83MYFrJ8Zjs8t8vLGo26mt3V9DdKCNG1feSFmbaONZWbKSnIYcFkxfIARCV9xAfrPou9ar9bw79V36BvSlqLmoWwa4oLmAaTHTyGvIo85UxzXp12C1W1EqlITpw1Ar1IyLGIfRwygqlCInEuYVxjnJ5zA+cjx2h51gfXA3d4ijYWLkRD6e/jEFTQX4ePiQ6p/aTRnazdFRUNtGSkjvZPMLm4tI8ev+t2PQSbSaHFhtMmrV0V83JUni3ORzefD3Bzmvz3nu37mbE47eVO3WAbcAUbIsXylJUiKQLMtyjyJhbo6dwto2HlvsWg755m/5TEgOpG+4DyE+nlQ0dTifk2XY75FGwOwFULBOKBMPmisCmoEXiv5U+4HSm6iRGDSnc07SOUJlU4YYYwx3D7ubl3e8jM1h49T4U2mztqFT6f5QedbNiYtKoaKyvdIZRHeyqXITZyaeiU6to3+g6FP9ueBnNEoNg4IH0S+gH3pV9wyrn6cfBs1h5kP+avjuCmf5LKmngX+8KMmd86loMzC3gIcBTnkFCn6DpGmQu6KrZLKpBPqeCVEjnDZtACROFYtDhnCRuQY4fyH8dAtUZ0DkSJjxtPClPgyhPt1X6SN9dagVh//iL6lv55NNRXyzrZQYfz23T0tmWKwfyzOrnUE0QEO7lS82F/PwaX2RjiEA+8+gDxAZ5b5niseG8D8OVLU+MHw+9JkFHa3w3kGe9YHJYo58ezkgOlhtY27H5heHqu5Az7+nEZKmQvU+iBuPR70VtVLCau8KLBUStHZYqQscin/kcBGoG8J6tCj6IxJ8EzB4GPgh9wce3fgo/p7+3DDoBjyVnt0qP/bV7aO0pRQfj54XXspay3h799suY59nfs7l/S53BtL+nv40mBuI9IpEpej+dZ/il8KLE1/k8U2PU2OqYWr0VK5Jv+a/E0Q7HLD1va4gGkQFzP5lRx9IexpgyCXiOuWwi7lxsJJ0xDA442349R4IGQTBKbD45i5Nh6A+oiw8ZWaXd338ZJGxVmudHtEFdW08scT1+/7VVblMSwshKdiLcKOW3OpWl+dlGX7dn+EMojspbS2ltLWUvMY8ZxAN0GZt48O9H/LE2Cd69PDtDIBHh4/mjZ1vsLJ0pfO5CRETeHzM47y751121exiRuwMTos/zamqfWgAZLFbaDY34+Phg/oo/pY0Sg3pQemkB6X/4bZujkxRXTvjk47Ofu9YKW0pZVxEdzcDhSTho1NQ02InzPfYQg9fT19GhI7gk32fcMuQW47Xqbpxc1w49mXBo+cDwAKMOvC4FHi0F1/vP0dzhxWzrXupzN6yZiQkbp2ajPKgAGBAuIFBnuWw8wsIGyBKInOWwuB5yJmL2D/5bpZNf4CN0x+mzi+GGnsbT295mtIW8aX70vaXMNlMnJN0Do+NfowtlVsoay1D8Se8VN3885isJupN9ciyjLfam5OiT2JW3CznjbtOpUOSJF7d+SreGm/e2/seFW0VFDUX8fDGh/HX+pPqn0qyr+sN513D7sJf64/ZZmZv7V6WFi5le9V2WusL4Odbu4JogH0/iBvNxiKxsJP/Gyw4Q4iIrXgIFl0vfFinPipuUAGSZ8LOz2DNM1C2VWRuQNhjGaNcb2KjRsC8xXDDTrjwqyMLVwETkgPx02ucjz1UCq4YF4tK2fMct9ocvPFbHm/9lk9tq4WtRQ1c9N5m8mtayaps7rZ9RnkzNscJLej6z+MTIX6OZbHBEC4WZPqf2zWWehpsfMNlM836Z7uuifGTYMRVYiFxxwLI+I5Ybzs3Tenq0/TXa1h+jicjN1+H/8cTcfz+upi/Pfn8OuzUm+rpsHV0e+5gFuUt4uUdL1NjqiGrIYtrV1yL2W7utp1KoaKkpYSc+hxWFq9kedFySltKnc83W5pdMskgBJg6xxSSgjOTzmR92XouTL2wx0BarVQzKWoSX8z6gsVnLObR0Y8SbTiGsuZ/O3YLVO7uPt5Tv/4fYQgTbQKH2jFpdDDgXJi7COLHw85Pu4Loztcyt3QF0QDWNtjyNrw1Fr64AEo202a2uyzwdNJksuChVnLtxATUSglJgpHxBi4ZG0CIwYO2DnE+af5pnJFwBmn+QnjOS+1FUXP3LHZOYw4dtg7ifOI4I8G1HeDMhDOJ9I5kSMgQbhpyk0tmeXjocO5aexfZDUKYbMG+BSwrXobNbqPeVI/Z1jXH9zfs577193H2orO5b/195DYconXgpteQZZmShvZeEdJstjRhcVgOu5Duq1dQ03z0gmMHMylyEt/u/xar/dj6rN246W16U7U7XpblcyVJOg9AlmWT5E7DHFfCjVoifLWUNnRlEr08VNS3WShtMDEyzp9vrx7Fvopm9BoVk/1q8FhwkiiZ3L8c4saLPj99IJuHXsDVO19w2hSdl3IelcUrur3mpopNWOwWtCotFW0VPDrm0T9VpuXmn2VH1Q6WFS3DITtIMiah1+gpbCrEZBcLJfmN+SQYE7DZbZyTeA4repgLa0rXkOybzPz+8+mwd2DQGDB6GOnj3wdZlvm54Gfu33C/c/sr0i7h8qBUdMW/ux7IbhFzsXy7UOfuM0uUZP98q8jwtFSKm93xd4qgJ3SAKOUFWHSjCMD7z+aw6HzFz1GQHGLgq/kj2VPWiNnmoG+4D6mhh6+2qGzuYOEWVw9ii91BRkUzU1OD+WFnuctzZw2KQH2YoNzNX0SpEr2mHU1CAVxSugo/AcgykmwXgXD0aFh5kGTHykdQegUxP7CZ8y70YlN7KAm6duJ+OMXZz6r4/WWhAn/qy6Js9wBFTUV8kf0FSwuXkuKXwjXp19A3oG+3U6w31fN51ucuYzIyu2t3MzN2JosLuvQ4z048G4vdwnUrr6OiTSiTB2mDeGzMY8T5xBHuFY5BY6DZ0rVgE6ANYHDQYO4Zdg/h3uF4SB58MO0DkvySjvjR9eQ9/Z9A7Sn68Mt3uI4nHWe7L0ubsMaq3C1KucfdJvrzJYVwEzhY38FqguUPwb7vxePWKijdTPK85YQeUmVm8FQR6Scyx0Oiffnh2tFUmvfz5f73+K0xmxH6SaR5z+Cx0U+xvPgX1patpX9Af+alzaPZ3EwfP1fFa39Pf65Pv55NlZvQq/Vc0e8KToo+idLWUkL1ocT6xBJtiKaxo5FUv1Q+m/EZRU1FKBVK6s313dp8Ps/6nHB9OC/veJk0/zSuGnAVwbpgblh5A6WtYlFoccFiMuoy+GDaBwTo/qPz8G+kod2KQpLw8jj+t/+lrWUE64KQ6PlW30enoLrp2PukAYL1wYR5hbGmdA2Toyf/ldN04+a40puBtEWSJC1CYAxJkuKB7svubo4Zq91BS4cVX72Gp87qx2OLs9hX0UyMv465I2N4e20e5w6JRKmQGBBpZECkUey4Z4PoG/WNhbLtsOpxAJrS5/Aklc4gGmBd2TpGhI7o9tq+nr5Mi55Gu7WdD6Z9QL/Afn/HW3ZzHMlvzGdf3T4y6zMpay2jj38fblvTJeLy7p53uXPonawrW0dWfRZX9LvCxVe2Ex+ND9evvJ7shmxA9Fu/Pvl1NEoNRU1FPLH5CZft38n4gEnpN9H34EBaqRaBsT4IPjun64bSNxbG3CKyziBaDrxCIWoULL/f5bhsfltkH49TOWp8kBfxQUfX6++hUuCjVVPXZnEZ16qUDI715eU5A/hhZzkb8uq5aGQ0U/q4+7t6Fb9YOO1VodjtsMLW90Ug0omnEcytMO0JyDqoy0ijhxFXw2ezUdmt+AFTk0/BNugSCBsEReu7tt2zUIhI+QuRpHZrO89te45VJcKLvKashp3VO/l81ufdsrtqpRp/T3+q2l3ttLw13iT7JjuFw7w13uQ35lPYXOgMokHYAK0qWcXSgqWcnng6j495nOe3PU9+Uz5JxiRmp8xmS5UQlHpu23OYbCYu7XspwbpgfDzdvfk9knIKNBbD5rdAoRYLdjFjjt/xza2icgZExc2ke+Gnm0QWGiCkv/A576SpFDJ/cD2GpQ1tYy5vXjSOe77dQ0Z5M/GBep44sx/R/qK9RqGQ0OkbuHf19bRaRYn3oqIvSRsSz1u7P3Few1eWrCSvMY+hIUMpayvjkrRLWJizELvDzu1Db+eedffQYRfB+uiw0Tw8+mHGHijVrTPV8U32N9ixs6xwGYUthcyIncHZiWe7qL934ufhR52pjhpTDatLV7O9ejuvTnrVGUR3UthcSHFLsTuQ/hsoqW8nuJcUu0uahbjc4fDRKahq6i5Kd7QMCR7CL4W/uANpNycUvZkaeQD4BYiUJOlTYAVwx5F3cfNH7K9q4f4f9jLr5XXc+90evD3VnJQaxLUTExiXFEhLh5VbpyRTVN9OXesh6xZqnejHAhd13DZjJAWHlHiVtJQwPHQ4WlVXuZlWpWVs+Fge3/Q4Rk+jOxP9L6WitYIXt7/I1qqtKCQFmyo2ddtmUd4ilAolpyacyu7a3UyOnoxa0VXOatAYiDfGO4NogPLWcpYVLgNE2emhPdcADb6REDH8wEHCYfYCSJohhMMOzso0FAhVbu1BmWStD/RUNmsIE9nHo8RksdPcbiG3uoVfMyr5Pa+WurajW+Oz2Ow0tFtwHCjPDjJ4ct+sVJdt+oQYiPHX89WWUp75NYc2i523LhrMbSclEezTO96dbg5C5QH+caLHdc5nEHjgmucfL5TiVz8B2UuQD/bfTTsDNr3dpREBKLMX4VG5FQISIXJY17Ye3kJw7ADlreXOILqTFmsL+U35HIq3xpsbBt3gkrEJ1gXT0NHAjpod+Gh8+DTzU17Z8QreGm+y6rO6HSOnIYdR4aOY+8tcbll9C6n+qTwy6hEmRU3iqc1P8c6ed/g482Nn6e4DGx5gbfnaY/0U/zv4hAmhr2u3wDUbhRWkzu+P9zsarCYcG1+HBacd8LMPE6XdnUE0iCx100FVLUoNqLtrT6DRMyDCyKeXD2flreP56qqRDIzypaHNgs3uoL7NzLbybGcQDaBWqPHRendbCC1qKSJAG8Dv5b/zS+EvXD/wej6Z/gkfZXzkDKJBKHVn1Aox01ZLK78W/kqlqZLntj7HxsqNVLZV8v7e93lj1xv4efoR7hXu3FdC4qyks2gwd/WfN1uaqW7vLugIuNxruOk9ShraCeotxe6WYgKOEEgbdQoq/2RGGmBg8EDWla1zSfq4cfNP02sZaVmWl0mStB0YgbDCulGW5dreer3/AnWtZq77bDvZVeKLcuHWUjYV1HPj5ETazTb6R/hw85c7abeI8qqxCQHccXIyVc1mtBolA/1T0Q28yCVgkb2CsPjFMkmeyLLi5S6vV9VWxeX9LkclqWi2NKNT63h6y9Po1XqaLE1um6t/KZXtlc6bpXZre49enL6evvh7+uOr8eXJzU+ikBRck34NLZYWFJKC4SHDWbBvQbf9dtfuZlvVNlSSijB9GOVtXaXNnkpPIvwS4cKvRbm21ge8gsFm6V5aCSJL5B0qhIACkiFkgFDU/f1VMB8oZ1VqaBpwBfllLSQGex+xXE2WZbYUNvDG6lym9AnmkcX76LCKL/VpacE8eno/Ar0Pv1K/r7yJt9bks62ogRn9Qjl/WBQxAXqmpQXzxZUj2FvWRJC3B4OjfflqWykvLhfWcyX1JrYVbeHbq0fRL8J42OO76QUihsAFX+HIXoqifKtQQ7Z1YIsciSphIuz5SizOeIeIPv1DsVtg24cw8V5hGQgw5WHRC3sAjVKDh9KjW5+zp7Lnm9VhIcN4+6S32VCxAY1Cg0N28GHGh1gdVuYkz+H8lPNZVbKKBnMDg4IGsbbMNQgeFjqMn/N/xiE7sMgWfsr/iZ/yf+K69Ouwy3aGhwxHq9QyMGggW6tEJvSzzM+YEjXF7cN6OJSqnr3C/yL26iyUq0XlF3W5op1g56fdN2w8KNA1RsHk+2FJV97BHj6UZu9EfAGjToNRpyGnsoWnfslmfW4t0/sGE+3vReMhpdWTIidRZ3JV3u4kWB9MtCGaouYivsz6kmBdCIXNhd22K28tZ13pOjZWbGRVySpmxM5wWrh18lP+T5wUfRInx5yMWqGm3daOn6cfVW1VbKna4rKtwcPAmQln8m1uly3YuUnnEuMT0+N5ujm+lDaY8PfS/PGGf4KS5mISIg/vtOCrV7CjyHLY5/8Io4eRIF0Qu2t2Mzh48J8+jhs3x5PeLO0G8AQaDrxOqiRJyLK85g/2cXMYCuvanEF0J0V17RTWtZFZ3kxdm8UZRAOsza1lRI4fz/yaA8DoBH8+GpuIqqlYCPkoPdgx/TEyJDMjwkbSbGlhU+UmDBoDF/a5kMX5i7E4LIwIGcHCnIVYHOICeHHaxdgddqIMf85b180/y8FCIA3mBgK0AXirvWmxiiyJSlIxMXIiWyq3oFQoqTWJ9a+Xtr+Eh9IDu2wnVB9Kkm9S95v8kGH8UvAL3+d+z/0j7+f9ve+T25hLiD6ER0Y9QowhRsw9T4PIylhMoFQKW5iyba4nGj8ZojqEmnPkMPCNAqLg0qVQspn2DhPb7Qnc9o2ZyuYN3DA5gavGxaM7TDC9r6KZC9/dxJTUID7eWOQMogGWZlRx7tAoJqX0XHpd2tDO3Pc3U9sq/gbeXpNPZnkzb1w4CC9PNSPi/BkRJzyFK5tMvL++wGV/q10ms6LFHUj/A5Q4/FlSk8wEoyeGgTG0hQylWA5iWEAf9Jf9CqVbsGkDkGInoSxY6brzgSyZSR9G0/B78YkbgjZmmMsmEd4RXJt+Lc9ve945Njh4MEm+Pfclq5VqQvQhfJ75OTaHDZtsQ6PQcMvgW/gx70d21+5mTPgYRoaOxCE7OCPhDBblLwIZZsTNINo7mo8yPup2XBmZ24bcxspiYW8U7xvPKXGnsCh/EQHagB7FxtwcRywmkO1OlW2AjsZq9J3iinu+grG3Q/IM0Y5yMOEHBQWSBAPOw+ybSGvBVhrUIaxojeKNt7L4+DIf+oX7UN3cwfxPtlJQKwLa4voOfsupJT3GQJrfADLqdwGi3WZd2TpOij6JZUXLnC8xI2YGmys3MyBwANNjpmO1qdhbu4eRYSNZWez6NxCoC+TJLU9yWd/L2Fa9rcdKNK1KS0lLCUqFks+zPsdsNzMybCSnxp/Kx5kfO7cbHjKcZN9kEo2JTIycSH5TPnHGOPoF9HNnpP8miuvaCfA6/qXddtlOVXv1EfUWjDoFtX9SbKyTPn59WF+23h1Iuzlh6E37q6eAc4EMoPOOVabLUdHNMeKhEuWrsQF6UkK8yalqoW+4D1F+ehKDvLj7273ObVND9PQNUKKQJC4c7UuwfyNKZR2VXsEEV+/BfM6H2Mu2kSlZeXbrs8iyzKy4Wbw++XV2VO9gYc5C/Dz9ODPxTJrNzdw29DaKm4vx1/pT0FTA1OipaJS9s6rppnfpG9iXRGMiNoeNmXEzsct2nh73NFn1WbTb2tGr9U6Fbk+VJ/0C+rGndg8AZrsZCQmzzUxdRx3nJJ3Dd/u/Awlmxc0ipyEHjVJDqD6UBzY8wFsnvYWfhx8GDwOBukCsDisdbfV4F2+C354SPavjbhVerH3PEgI7khKGXUFhSCpFWPDWeJOg98cZ/genUqyK5qw3NlDTasHLQ8WpqQZ2FVazPyWIAZG+lDW0s7+6FbVSQVKwF4HenmRVtGCxO4j01bFsX1W3z6W80cTyfZUEGzxJDPbCU911ecytanUG0UHeHgyK9qW80URxQzupoa69pxqlAoOnmmaTay+YVnP05edujh+51a08vq6Zd7yCeW9KMIkZbxHfXEBH+0UURExHHX8+KqVErS2UPtZ2lKUbRUvBiGsg41tQebCsMZx7NgbyalxfJni49s8rJAVnxc4gyZjIvvpMIr0jGRA4AH+t/2HPqcNm5Zr0azDbzeQ15hGoC+STzE+cZa+fZ31OXmMeF6VeRLhXOPPS5iEh4ZAdNJubCdIGUWDtWqxRKVTE+8Rzx9o7sB0QWHt95+vMTZ3LGQlncG7yue5AurewWaBwndBzMDfDqOshcRp4+mAzREJwP6gS10/WPgMT7sHR5zQUWT+KhZqJ94rKiYPxNPBzaxL3bbBistqxO4TK92sr93Pp6FiUComyhg6mpYWQGmZAp1YyItaPF1bkcMbQqxidUkGTtYqBAUNoNDcyMGggI0NHUtlWiVatJachhyUFSwAYEDCAs6Juo5VCPP08abG0sKVyC15qL67odwW/lf7G0OChZNVncVr8aehUOvr49SGzvkvZ/Nzkc/k081Pssp25qXMZHzmeKEMUFruFN6a8wb66fUR5R5EelI6fVpTNT4iawAQmiI/QYaPF0oKX2sttDdjLlDS0Mzz28NemP0tVWyUGjTeaI1iZeXlKdFhlTBYHWs2faw1M8U9xtpC5cXMi0JvfrKcjfKPdAmPHibhAPc/PHsD63Fp2ljQyd0Q0S/dVcdtXu+gf4cOYhABWZVfz5lRPBlV8iU/NVvIG3cMdzZ/ww/4cfDx88Pe5jo2WIgr2r+XUmOkYDgg0DQ4eTLxPPC3mFgYGDSTJN4k1pWv4eN/HXNHvCsK9wilvLSfAM4CZsTMJ9Qr9hz8NN38WlaTipkE30WhuZG/dXr7K/gqbbOPJsU/yzu53mBozlVPiT0Gj0LC+bD03DrqRF7a9QEZdBkYPI7cMvoUOW4fw9QxIx+hhBISKd3ZDNp5KT+akzOHDjA8pbCpkaPJQALLqsvh438fsqdvD9IBBnJo0mfC1L8En6+Gi7yEgRQiMSQq2RQ3i6jU3OvusZ8XN4rYhtzmDkyaTlZpWC7NTdVwbnkt0zoeYPfyxtN5EXuUgzn9/K1XN4tKTHmnk5TkD8VSLL+5tRQ2MTghgdXaNy+fSZLLyv+/FYtQ901O4eFQMHmoR/Hb+O29UDA5ZZkNeHTH+Olo7ugun+Hl5cM+MPlzz6XbnWJjRk37hbrGnfwIPlfi9PzpKQf8VFzgVuD1X3odhYBVXlp7MdZOTeHaNmVOSn+TiCa14lq5H2vIOSApyJr7F47/Z0GmUBHt7UN3cwf7qVhwOmQG+HRgKlmDY+j6jfWMZPeYWERQdIRjIqM3gymVXOtW2hwQPYUjwEAK1gcxOmo3FYUElqViUv4jKtkp+LfqVSZGTCNAG4Ofphx07T4x9gv+t/x+5jblCaXnQ9dR31DuD6NMTTifJNwkvtRd1pjpe2PYCF6ddzLCQYf8dj+i/i7Kt8OmZXbZ+318NF3wNuSvwyf0VW/Q4VANmw7IHsBtjydQORjP6EuIn3oNS5QG+MT3Ol/zaNlrNrteXveXNfLa5hE35dTxzdn++2V7KC8tExZm3h4pbpibx6OJMJPQE+/Th7LmpzIiFG1fdSIe9g+vTr+eVHa/gkLuqcUpaSwg22lFbPNA7ghgRMoJBQYMI0gVR3lrOj3k/ctWAq9hVs4u+AX15dsuzzIibwfiI8bRaW0k0JvJzwc/ONp5Xdr7CjLgZaFVatCotY8LHMCb88OJt+xv283nW52yt2srkqMmcHn860T7/IQu2v5myBhMB/Y5/EqS0tbSbV/ihSJKEn5eC6mYH0QF/LpBOMCbwWsNrmGwmdxWDmxOC3gyk8wE1bqXu40aH1c576wrIKG9GqZCob7eyIU/0P+0ubWJKn2BOibEzftPFKFrLQevL741Z5DSKL9rzU87nuW3PO4OTF3a+ypzkOTw+5nEqWitYV77O2VPn6+HL/SPvR6/WU9FWQbIxmcv6XobR0/iPvHc3x4eipiJu+e0WchrEnIjwimD+gPm8tvM1ytvKOS3hNF7e8bLzhnx28mwcDgdzU+dS3V6NTq1Dq9JS217L0sKlBHgG8M6ed1xeQ6/WO+dYZ99bSUsJVy670ik883pTAQVhY3k4dhyeBWugYK1QQm4sollS8Pj6O13Eyn7K/4lZcbMYHT4agBAfT1LDvLk+LIPItXcB4AF4lK6j9pRvnEE0wM6SRtbn1TIqzp8Ioydbixq4Y1oyzSYr24sb0WuUXDI6lhWZXVnqJ37JYmS8v7MUOynYiwuHR1Hd0sHPeyoBkencXFjPD9eMJjbQNUs5KSWQz68YwdbCegK9PRgW60dMQA8CQm56naRgb0bE+ZEgZzqD6E78977HKQNP5rPNJSgVCp5cVc5L65X8cvn52AIm8VuJjReXteCjU3LZmFgcsswlH2who6KZCF9Pfui3ETY/LQ5WnQl5K+DyFRDSs5tBh62D13a+5mJZtbVqK3P7zGNg0EBe3fkqAEpJybXp1xLhHUF+Uz6jwkbRZmvj2z3fYvAwcH7K+Tw48kH21e2jsLmQF7a+wAV9LgBE683G8o18n/s9IMTM5qTM4ZoV1/D+1PcZGjr0OH/C/3Fyl3cF0QAD5sCv90G1EOlS1e7HEZRG1qk/81u5Ar0jmKff2c7784Yy7AiZwfROt42DGBnvz+aCeiqaO2jusLJmf5fsTIvZxuLd5Tx7dn8UCkgL9SHYCA8ue9HZ02x1WF2CaIAHRz7IXetvdl6bR4SOYG6fuby5+0121wqP7QDPAM5JPIcGcwNnJ5+NSlLxY96PtFhbOC/5PLZVd7XljA0fi7/n0WU8K9squXbFtU5l+nf3vEtGbQbPTXiuR+0ON38NWZapaOo4ohbIn6W4uQR/zz9WXTfqFVQ32YkO+HPhh4fSg0jvSDJqMxgSMuSPd3DjppfpzUC6HdgpSdIKDgqmZVm+oRdf8/81BbXtyDJMTA4iv7a1m+XOb9nVnDO8UQTRAIYw9rSXOZ+XkbspKX+z/xu81d7oNXoGBA5gaMhQIrwjMNvM1JhqUCvUvLPnHQYGDXQH0f9irHYr+U357K3dy5SoKVgdVgqaCqjrqCNYF8z1A68nRBfC+rL1ziAaYGH2QoYFD+POtXc6xwwaA4+NeYzr069Ho9R0ExWbmzaX7VXbuXvY3aT6C0Xr/MZ8F/VWgF/K1zE//kLiC9YIJWSVBwQk0dpazv6G/d3eQ017VwY50NuTt85OIPKbm1w3ctjxq9tGXOAQ8mvanMN7y5o4b1gUCy4bzrrcWorq2rl8TCySJGHUqbntq92UNXb9bciyEGXpDKS9PFRcPDKak1927QlvNtnIqW7tFkh7qlWMjPdnZPzxL6Fzc2wEeHvw7DkDMOSXdX9So6fZKpFT1UL/cB92lzZhstjZVqNgRbaKOH8fLhrpT02LmSeXZPHY6X0ZEGkko6KZC1I98N/9luvxbGbkyj1IhwmkWy2tZNRldBt3yA4+zewSobLLdt7f+z7vT32flye+TIO5AYvNwty0uRQ3F/NL4S8k+yWzq2YXChQ0WZqwOqxEekeilJQuavpV7VXkNeYRa4jl16Jf3YH08ebQgM8nEnZ+5jKkqM5AJ7dTYArkx58z6bA6WJFZfcRAemCkkesnJfD2mnzMNgfjEgPoH+7DysxqFBLOVpODya9to2+EnmX7qnlzdT63zAh2mQt5jXmcHn864d7hWB1WYgwxlLaUMidlDrIs02JtYWH2QiZHTXYqxk+ImECzpZmq9irnoqlKoeKBkQ9gtpkxehhJMaawt34v/QL6ccvgW9Cqjy5TWNBU4GLvBvB7xe+UtpTSx7/PYfZy82dpMllRKECnOf63/sUtxSQYE/5wO6NOQfVf7JOO9YllZ/VOdyDt5oSgNwPpHw/8uDlOWO0Oovx1lNS3c1JqMDEH/CNDDJ5cMS6WtTm11HbIOIuu6/IYO/gcfi77DRBZjkPxVHqikBSEeYXxyO+POAWnZsbOZHjIcNqt7UyLmdZNpdPNv4cmcxObKzeTXZ+NzWHjq5yvOL/P+SzJX8K5KefywrYXnEHuyLCRnBZ/Gj/kdfmYdlY0dNJsaSajLoNoQzQGlYGXJr7Ento9lLWWkeibyMbyjXgoPUjzT0N/wMblYOusTlQKFUq7TQTRCV2+kL6evowJH9NNyOxQcbtIf29kjTeHFkV24MHklGAmJsu8t070kfY9UFbto1Xz/Y4yiuvbnc/delISFptrlsZDpcCoU9NksvBbdg0fbCjEV6fm3hl9+GBDISX1XUG3Rum2gTvRifDVQexg8ImCpi6F5JLBd/LhehNT+gSzMV9U91w5Lo682lYKatrQKBXEB3rx3Y5SjFoNe8qaMVntpIUZaLUiLAU7mlxeq9YEtRXN9Ak1cCg+nj5MiZrCwpyFLuMmezsyssvY8NDhNFmaeHH7i84KkhhDDCfHnkx5azlDQ4ays3on56ecz/Li5VS3VXN9+vX8duB6fzD7G/YTaYjE4NH9nNz8RRImw7rnuiytDlPWX9BoYeHWLpsrL88j334V1rfzy95Krh4fz8AoIztKGvliSwmnpYdhscuEGV0V2Mcl65kyuIkHt1yPVunF7LFn8+O2BkaGjGVtubBnK2guYHLUZF7f+ToyMuennE92QzbbqkRGOVgXzFNjn8LqsHLTwJswOUyUtJTgkB0ulUc2h41ntz7LqfGn8uzWZ3l2/LOE6cMI1gcf0xzr6XtBISnc/fy9RFmjqdesr8paSxkVNuoPt/PRKqhq+muBdJwxjh01PTh9uHHzD9Cb9lfdZUXd/Gnyalq5csFWmg/0ZGaUN3PnyclcMTYWf72GJ5dkYbXLJHgZSAwbgWf5RrB1MLxyP+fHn8EX+T8QbYgm3CucstauzMylfS+lpKWEteVrnUE0wOKCxcQb44k1xiIjE+cT97e/Zzd/nXpTPS9se4Hv874HRDb56gFX89L2l7hz6J38UviLS6b49/LfuS79OiQkZGSUkrJHGx8JiYzaDO4cJjLVKf4pfJH1BXcdKLMG+K30Nz6Z8Qkpfikk+CaQ6pfKvvp9zucvS55DhCoULlniUgqrVWm5efDN1Jnq2Fe/D61Ky62DbyXFL8X1JDy8kSbeDZ+d2zXm6cNORRrvrM1nUkoQo+P9CTNqsVjFF3dBbRvbixtdDvP2mnyeOKsfjy3OpKKpAz+9hrunpxDi48mKzGpuWbir6z3l1HL7tGSeXCKyNcnBXqSEuEsQe4viujYK69oxaFUkBHr/YfBxRPxi4aJvseetxlxbRJ73YJ7P9KFfuBcBXhqK69uZmBzE3rImZ8vMvopmIny1XDkujgAvD57/NQeT1c6V4+L4ZFMxs8fdQfRvNztfwuEVyqrmMJ55bzPfXDOKKD+dyymoFWouSr2IgqYCtlRtQa1Qc17KeXiqPFAr1E5/1DMSzqDF0sLq0tXOIBqgsLmQ+o56KtoqaLe2g4wz6Ig1xnLv+nu5sv+V3d76oOBBrCtdx9UDrv7zn5+bngntD/N+hvzVYG6FxKlQmwt7v3ZuYks5nW+LtYCoktFplExMPnI/6ca8OvZXt2KxO7jpy500tIu5kVHezOnpYagVEpePjeXj34tQKiTGDqjlmR0POfffUv0716W8gGyfQ6N/LXvq9jAtehqv7XoNGRmNQoO3xtsZRIOoXvil8Bcq2yq5asBV3LH2DlotrT3OqSZzE1qVlg57B49teoyPp398zAs18cZ4hocMZ1PlJufYucnnEuXtdgTpDcoaTAT0gvVVm7WVdms7Pkfx+zfqFeyv7K4tcizEGmL5Kvurv3QMN26OF8c9kJYkaQ8csrR+ELIs9z/er/lfILuyxRlEd/L8shxeO28g+6vbsNrFR/7u9hZCR9/N1IT9hJpyCYwdxa1RI5jd92Iy6zI5M/FM7A47NaYa0gPTCdOHYbabnYHWwXTYO/g081PuG3GfO5D+l7Kvbp/L77bZ0sxP+T8xMmwknipPl5v0TlosLXiqPFFJKq7ofwWmQ/pKYw2xNJmb8PX0xWa3OS2yXtv5mst2ZruZrPosUvxSCNIF8eyEZ9lcsZncxlyGhgxlYNBAVJ6+PZ53om8ib099m4q2CrQqLeH6SApq26hoqiHI4EFcgBcalQJiJ8C8xViyfqXWoWefdii3rhY3nCuzqnl5TjpvrclndILo3VL3kD1uMdsoqmtjckoQPjoNNruD2AA9/noP3vwtz2Vbu0Om3Wzj2okJhBs9GR0fQKjRLXjSG2wvamDeh5ud6ucXj4zmpilJ+Or/wo1gQCLKgETUdge6unbuTHQQ4uPJrpJGalvNjIjzd1k4AVHiH+qj5YmfM2mz2NFplNgdMk0mKz+ZB3HJud9gylyKSRfGDvVA7ltlwmxzsL+qpVsgDWCymegf2J9Z8bMobSllRfEKlhUt44aBN/DOnndos7YR4R3BqpJVPVYC5TXmEeEdQUlLCSqlihhDDF/N+ootVVuwOqwUNhUyK24WPxcIr+lx4eMYEjyE0+JPIy0g7c9/dm4OT2h/8dPJ1EcgeTqUboXwwTQFDGFQAei9W/BQK0kO9sJPf3h1Y+hS+VcrFc4gupPFeyoYHudLZZOJy8fGEhuk4vOSu1y2ccgOys27+HVdfz6d/zI15gIq2yudPdJ+Wr9uZdUAOQ05JPkm8cTmJ3h01KP8XPAzakmNUlJiP8inOkwfRr2pHoCKtgqq2qoI1gcf/WeGqD56ePTDbKncQlZ9FgODBjIoaJBbEK+XKG804afrBaGxljKCdEEo+OPqLF+9gpq/WNodoA3A4rBQ3V79hwJnbtz0Nr2RkZ7VC8f8z1DfZqawth2bw0Gr2UaIwdOp3HnesEi+3FKC48AyhUapYHtJE4pDKskeWd/GN6HJvHnheUT5e6EB4gnGZDNR0VqBXq1nUd4iRoSO4Kucrzgn+Rx21+xmQ8UGl+N4Kj2p66hDp9ahVLite/6NVJuqu41lN2RzStwpBGoDGRU2isUFi12ejzHE8OTYJ2mztvHS9pfo49+H24fcTl5THn4efgwMGsi+un34ePgwb+k8knyTOD3hdOIMcaiVagqaC5w2PhpF15d2pHckkd6RR33uPh4++Hj4IMsyP++p4OYvd2GxO1ApJB47oy9nDopArfaEmDHskPtw5YJtNJm6gn6lQiK3upWkYG+8PLqs405OC+GXjErnduOTA9la2MiqbHHO987sw5AYP9rMNmcv2eQ+QfQL98Ehy6SFGZiW5qpaX1LfTpEzc+qFzkNFWYOJwro2vDxUxAd6/bVs6n+MJpOVBxftdbEQ++j3Ik5KDWZMYuBRH8fukFEedIFsM9vIq2mlpcNGtL+O+CDR2z4+OYiyBhM1LWYkyVU7CqDdYqPNIm7+njyrP0atiuFxfvQJMVBpTWBeroKGNist5q6+/J4Wbcw2M2/tfosYQwyPbHzERY/gg4wPeHLsk2TVZ2GymShoKmBO8hw2lLtel0eEjiBCH4GPpw8xhhg8lZ4sL16Oh1IEH4sLFpPmn8YV/a4gRB/C1KipGDzdJd1/K4Yw6Hc29Dsbh0PmlZ/28eGGQoK8PbDaHTS0W3nm7P6cM6T7Qktrh5XcmlYSAvW8dG46Jqud6yYlsHBLCdUtZpJDtJw3zsba+mew+dvxCzid/VVBDAsZxpSoycIizdLMVzlfoVZ4cMGIaCzUc+3Ka7ltyG3Oyofa9toer8cDgwaypWoLpS2l7KvbR6p/KiG6EG4adBNv7X6LVmsrIfoQLkq9iJd3vAxAojHxT7cNhHmFcVrCaZzGaX9qfzdHT3ljx19biDwMpa0lR/SPPhijTgTSsiz/aaszSZKI9YllX90+dyDt5h/nuN/ZybJc9FePIUmSEXgX6IvIbl8KZANfAjFAITBbluWGno/w76Soro3/fb+XCcmBPP9rDucMiWRvWRNbi8TbjA/Uc+OUJF5YlkOUn44bJyegUkggSRi0Kpebzpn9w1iVVcPFo70obCpkUf4iNlVsYnjIcJQKJQnGBLRKLQYPA5ctvYxbhtwiRGma8pzlhhvKNxDhHUG0wW1F8W8l3Cu829jQYCE2dPmyy7lh4A1OT1CVpOKspLMobC7k18JfOb/P+Tw59klKWkpYV7aOqvYq+sT14fY1t/O/Ef/jnnX3ALCrZhd+Hn4MCxvG7+W/MyFyAj4aH77J+ea4CMYU1rVx+9e7sdhFJsXmkLn3u70MiDSSEiJu3mL99UT6aWkqE5kbpULijmlJxAd6Ud3cwfrcWqakhqBUSFw5Lo6hMb7sLmtiQISRQQf6DyN8PRmfHMTQaOFzqvdQccOkBJZkVFLdbObF5UIALcJXS7S/3vnaO4oauOSjLTQeyBpdOS6WU/qHccmHW5yCQOcPj+TWqcn4692ZlqOh2WRld2mzy1i0vw6L3cG6/TWE+GiJC9CjOHQV8QCVTR0sy6zk+x3lDIw0cvbgCIJ9PHllRS7vrxe98b46NR9cMpT0SFEVMXNAKLlVrZzSP4wfd3WJ5/UNN5AWZuCiEVFM6xvKKyv2s6mgHpVC4tQBodx0UhKnDgjj1VVd1QspIV4kBbsK0IGo9thRvYMo7yjUCrVLIF3fUY9SUiIhEWuIpc3aRrOlmUmRk1hZshKAyVGTifKO4svsLwnSBTE+Yjxeai+2VW3DT+vH+SnnszBnIRl1GThkB0+MfcIdRP9DtJtt5Na00mSyEuClQadRUt3S5Sawu7SRc4ZE4nDIznlc22Lm6aXZZJQ3MSYhgHfW5pMc4o1Rq2b++DheXZnL7DE2nttzq/M4v1eu572TPuCLnEo+yfwYgBC9CHxjvfrTNzCKdRVLMdlMvLvnXa5Lv45397xLi7WFytZK5iTPYWHOQhyyg4FBAwnQBlDaUkqybzJFzUWsKFnB5X0vp19APz6b+Rkdtg7KW8t5eOPDmGwmwr3CuTb92m4aFm5OPEob24kN6H5d+qsUNxcToD26BU6tRoFSIdFskvHR/XnP8AivCDLrMpkQOeFPH8ONm+NBr6VIJEkaAbwC9AE0gBJok2X5aL7VXwJ+kWX5bEmSNIAOuAdYIcvyk5Ik3QXcBdx5pIP821iZVU20n4531hQgI/qoOoNogLyaNpraLbw/bwhrcmpZuLWUGf1C0KoVPHRKGnVtFnKqWhgU5cuukkbq2yzMHOjNrb/dSk5DDlqVlklRkyhsKqTF2kJRSxHNlmYcOHhx24tc0OcCruh/BYVNhSwtXEq7rV2IiHiF/XMfips/RW17LevK1pFZn8nl/S7nw4wPsTlsJBgTuLzf5Vz262UAvLrzVU6KPonpsdNJMCaws3onW6u2MjFiIpIk8XXO19R11DE1eipt1jZe2PYC7bZ2ipq71sumRU9jY+VGdtWIkthdNbtI9U/lnanvEOsT+5ffS2uHjXaLaymYzSFT22KGEPE4yODJq+cPYltRPWarHb2Hmu+2l7G7tImpaSFIyJQ3tLM6p4bPN5eQU9VCqI8nv+ytpF+4D+9ePARjDyVvoxICqGuzcPvXu51jpQ0m3lmTz5Nn9qelw8q9P+x1BtEAb68pIMxH66Kq+9mmEqalhjD+D/oi3Qj89BpGxfs7e5Wj/XWcOTCc+R9vw2qX8VApeOHcdKb3DemW1bDaHGwprGNFZjXbihrYVtTAD7vKeez0vs4gGqCh3cqDP2bw8aXD8daq8dFqsMsyiUFe3DerD9uKGojy02G1yzS2W3nk9H58/HshmwrqGRzty0l9glmfV8uTS7I4Z3AkH1/qz67SRgyeasYlBRLi073k3+hhZFzEOJYVL+PMxDOdSt0ahYanxz3N+vL17K3dy+jw0Tw88mEe2vgQA4MGcsfQO4j3iaewudBFQX9d2TqeGvcUdtlOoDaQAG0Al/a9FAUKJkRMIN4Y3xu/Hjd/QLPJypdbinliSRYOGQK9PLh9WjKP/LQPhyzEDCcmB/Hwogwyyps5Y2A4E1OC2F/VQoiPB2MS4njs50zumdGHrUUNtHRYsdpkXpg9gJ8qnnd5LYWkILsxk2VFy5xjlW2V7Kndw9jwsbyT8aLTjqqirYKf8n/i4dEPU2uqxSE78PHwIco7Cl9PX1YWr+SdPe8Q7hXOaQmn8fzW57HJYrGnwdzArvxdbK3cypSoKTw19ilKW0uJ9I4kyTcJheQWXTzRKW/oYMiBheLjSXFL8RG9wg/F10sod/vo/vyciTJEsbdu75/e342b40Vv1hq+CswBvgKGAHOBP9TGlyTJAIwD5gHIsmwBLJIknQZMOLDZR8Bq/p8E0uWNJnYUNbAmp4a0cB8qmzuID/SioLat27YhBk/u+Hq38yZ9R0kDay4KIKBwEcry7diSZ2J3aDir5Sfa+57P/kabsw/2otSLeH/v+zSZhcrs1qqtTmGP4pZiPtr3ESH6EB4b/RgjQkcQZYgiUHf0ZZRuTgwcsoMvsr/grQPWPPHGeK7qfxUDgwaS6JvoUirqkB0sLVzK0sKl3DDwBt7e8zYA4yLGcfPqm53iRxsrNnJt+rXO/bSqriAhzhjH0qKlLuewr24frdbWnk/Q3ApF62DrB6D1hcHzIGIYKA76Um2rgZxfYfcXpAUms/jsWZy7yOxsc/BQKboFKlabg5I6Ez46Nfd8t9M5/ktGFa9fMIg95U1o1UrOGBhOXZuZd9cWYLY52FrUQF5NK4N7uMHwVCspqe/ep7oxv54mk5V9FU3sK2/u9vyh1nQgFsKGxdnQqt0l3n+E3kPF/2b24drPttNssvHqyUZaqjJ4caIPL++Sya7p4LavdmGy2Ph+ZzlzhkYyOiEAo6UaVd5KZu39mpnGcNouPpvPa2JoOlCtE+GrpbShq/x/V2kTTR1WvLVqalvM5FW3siGvjjCjJ8Ni/HhtVS4N7VYmJIsqjk0F9XioFExOCeLJX7Kcx1maUcUd05Kpa7NwwfDow5ZPtllkTo+9gOz6bMpby7ku/TrymvI4Le40ntjyhHOBanv1diZETOCpsU+R25jLrppd9Avo5yyl7aTV2kpJSwk7qnewo3oH6YHpBGgDyG3MZXrs9OP6O/nPYWqEgt9g20dgjIKBF0HE4CPuYjGbsRdvRLf9A+bZrYybNZu7tnmxo7yDH3eVc+HQMIb71DM4wMGGshy+39lBfZuFTQX13DwlAYNWw5ur87lyfBzzRsXw9C/Zzkqc9bl1vDwnnUNv27w13lS2VnY7l+3V2/ks6zO+yP6C+f3n4+vhS4O5gemx07lr7V2Y7WZmxM4goy6DouYiIr0jOTnmZOb3n0+kdyTPbn0Wm2zDU+lJjE8Mr+x4xSlUur16O6fGncp9I+/DU9U7KtBujj8VzSb8j3Npt0O2U9FaSeBRZqRB9ElXN9lJDDmyTsCRiPKO4rv93/3p/d24OV706h2dLMu5kiQpZVm2Ax9IkrThD3eCOKDmwPYDgG3AjUCwLMsVB45bIUnS/4vUjsli55mlWSzfV80FI6KoaTET5aejrLGd6f1Cum2v1ShdMl0/zfYj+OdLkJpKAVAXrUPd9yywNuPz0xVIF3R5kyokhTOI7uSH3B84L+U8Psj4AAC9Ss93ud9xdtLZ7iD6X0pFawUfZnzofJzXmMerO1/lzSlvsqliU48Bbpp/Gpn1mQB4qb2o66hzBtGd/FL4C+MjxjM4eDAa5R9/GR82Q5G3ChZe2PV4z1dw6VKIOMgTctuHsPJRcZyCNaR5fsUnsz7l9G+a8PJQ8ew5/dFplHyysYhf9lYyZ1gkT/+SRYy/3hlsd2J3yGzKr2NItC9VLWZyqlqoaTZz1/QUNuTVsWxfFYoj9Gp1WmcdzKSUQJo7rHy2qZj+EcJ/+GCCDd1vLk1WO5vzGxif7P67OhpSw3z4ev4odGXr0H53irAXUqhIH/kQV+/rw+6KDgrq2lm7v5a1+2t59bx0ZrV+g7TsfgAkwDvzB04/7TOGfdyGh0ohek23ljjty4ZE+1Jc145Rq+bTzUW8sKzLv3xlVjVzR8agUkqEGjzZU9pIaqiB1g4bv+6rcjlXu0OmsK6N5ZnVTEwOYlxS1+/YITvYXbObr3O+od7UxEDfaVzd535apQI8FB4EagNptDS6VHkArC5dzVmJZ1HcUszEyIlY7JYeLQwPHttZs5MbBt7A9Njp7lLbv0rmIvjxuq7Hu7+Ey351cRg4mNYOK6371xPy7VlwQNArOecnnjjpI2ZUqFHazfwvZA+a5feCw8aZHgb6THqd2b9qaDHb8FSreGxxJjaHjN5DRXVzhzOI7uTVVblcNW06y0sWO6sN8hrziPdJ6XY+I0NHOufUgn0LeGjUQ+yu3o3NYcNsFyXmdtnunD8lLSVOi6vL+l5Gh60DL7UXV/S/grLWMhe3D4BF+YuY13ceib6Jx/rJuvkHsDtk6lot+B3nQLq6vRq9Ru/UaDgajocFVpAuiCZzEy2WFrwP9XJ34+ZvpDdrcdoPlGXvlCTpaUmSbgb0R7GfChgEvCHL8kCEX8RdR96lC0mSrpQkaaskSVtramr+1In/nRTVt/H9znJazDbazHbqWsxcMjoGLw8VNS1mpqZ2qWAOijI6xY8Agg0exHTscwbRTjK+g/hJAMTmrWVQ0MDDvv7BZZGB2kDOTjqbpYVLkbq587o5HvTm/GzoaGBn9U7qO+q7BbFp/mlkN2Rz+5rb+SnvJ67qfxUqScylYF0wl/e7nFXFwmtURu7x96+UlFyTfg1nJ53NpKhJvDDhBWbGziTSO5LxEeNdth0eOpwYQ0z3k7S0w/oXuh77xkJwGuSt7BqrL4D1L7nu19FIf0U+31w9isU3jGF8UiDP/prN/77fy4a8WkobTBTXm3DI9BgUy4BDlnl9VS7fbi9jbW4tDy3aR3ygntPTw4gLPHzf2KAoX+aOiHbaw/YLN3DxqBhKG0wsy6zm9PRwwg8od6sUEreclMSQaCOx/kJISCEJocAtBfV8sKEA2yE3xycSJ9L1s77NTH1lIdqfrury6HXYCN/wP27s78DbQ4X1IP/vIFslbHzD9SCWNnybMlEpwGxz8MqKXM4YKHQDIny1nNw3hAvf28TGgnreWO2q0N7QbsVPryEx0IsOm4PZb22krNFEapihxzmmlCRkWaas0VXlfm/tXi755RJ+yPueteWreDnjLuptJWhVWh7b/BgP/P4AVru12/EAHDgw28z8b93/yK7P5pK+l7g87+vhi3yIMlqKXwqDggf9v/Ti/dvmZ1strHnadczaDmXbet4eyK9tQ5v1nTOI7iQ+/1MGRvpw3zAFml/vhM6+eHMzfTbeznVD9dx5cjKeaiW2A0qiS3aXY9R2z9apFBLFZb48OfoFYg2xxBhieGL0c5RWhHB20jnO63aiMZFoQzQz42YCQik+sy6T9eXrXZS315audW7TiValZVjIMB4Y9QC3Dr6VitYKgrTd8xaSJP1psaj/j5xI186eqGkxY9CqUfUggvhXKG4p6XF+HAlfvYLKxr8WSCskBZHekT06j7hx83fSm9+0FyEC9euAm4FI4Myj2K8UKJVludNY8GtEIF0lSVLogWx0KNBdjhiQZflt4G2AIUOGHNaG60Th4K+hjzcWMSEpkHaznefOGUBBbRv9I3xICxNqwTlVLXioFYQYPKls7iAlSIfG1r38W9zxi7ful7mYuy78nLUVv+Oj8cHf05+6jjrnpucknUOsIZb7ht9HhCGCm1bdRL+Afselt9VNd3prfhY0FXD32rvJqMsgwjuCOclz+CDjA3QqHfP7zyfGEMPTW58m1T+VvMY8Yg2x3DXsLmpMNTSYG9hdu5sgXRDlbeUkGBNID0pnYfZCOuwdzteY338+MT4xgFDUnhI9hSnRUwAYHDyY8ZHj+b3sd4aFDmNM+BiMnsbDnK0CdH4w+maozgBTA3iHimDJwxtsZughm62Q7QyOFsJQWZXNfLejjKExvkxOCUajFH9JmwrquG1qsou2gFopMTjal4Latm4Wcl9uKWHhVSPx6eGmtZMAbw/unpHCnGGRmG0OYvz1+Oo1yLIInp76JYuzB0fgp9egUSo4PT2MSH89V42Pp7TRhEKSWJ5ZRUZ5M5NTgk7om88T6fr59bYyIs35JLYecqmXZQIdtVw/eThvr+kKfh1I0NNne9BcstgdxAd6cf2kBGpbzTz9SzYOGXKrW3oMjo06NdP6hvDZpmJMVjufbipmYnIg5w2LZHtx1xzTKBVE+OmobbUQ6aslt7qFpXsrya1pJTJuvbPPdFr0NGKNseg9JDaUbaC+Q9gHmR1mkoxJ5DR23RROj5lObmMuVtnKzYNvpspUhUFt4MGRD7KhfAPRhmhifWJ5ZOMjzn0mRExgYNBAvDTHX1DoRODvm59Sj9cgjrDAXN1iJkbRw3VLoSDI24M4j9ruO7VUMCFC4twf85k7MhqNUoHF7qCwrp2EIC88VArMBy0WnTEwgsiwCpYUfU+yXzIAvxb/xJlx8/il2Mz8AfNBhtLWUl7d+Srz0uYRqA2k3dZOhFcEEyMnolFq0Kq0mGwm9Go9wbpgHhj5ABvKNxCsC6aPfx++z/2eJYVLiDZE45AdOHAQa4iloLlLY+CsxLOI9Dp6F4b/75xI186eKG86/mXd0Ck0dnSK3Z346hXkVXdvfzpWwr3DyWnIYXDwkVsu3LjpTXozkD5dluWXgA7gIQBJkm5ECIkdFlmWKyVJKpEkKVmW5WxgMrDvwM/FwJMH/v2hF8/9byPaX8fswRF8ubUUo05NTauZn/eUo1KAv5cHZpuD11fnOr9MYwP0zBsdTVlDBy0dVuxBfVH6xkBDYddBB5wPDcUA1J/6Io9ueZLCpkJiDDFcmHohtaZaKlorGBQ8CKOHEbtsp8nSBM1wRb8rODnmZHwP4+/r5sRDlmW+3/89GXUZAJS2lFLSUsIDIx9AhQqL3YK3xptpMdPIrs9maNJQ7A47OY05RHlHkVmXSZwxjpsH38zumt2Ee4XzyO+PcE36NeQ15tFiaeGU+FMYFTbqsOcQ5hXGOUnncE7SOUc+WY0Oxt4CNZmw+gmR5QHIWQpqrbCM8YmAIZfDuue69tP5QYBrCaFWrWR8kuhVnTsymmh/HUV17fy4q5y7p6ewu7QRT7WS4XH+/B97Zx0eV5n98c8d95lk4u5ed1egxSnusPgCiy6wi+yy+2NxlsVlkcXdnUIF6m5pk8bdk8kk4zP398ek04a00DRpm9L7eZ4+zdy5cu7MO/fe855zvmdDZTtRe0m3FgQBs+a367S0KgV5cb1TvNMiDTx61gj+/MEm3lxVhUGt4IlzR5JoDSbepEcZ+OsnW/EHdj9TXTIlpVc7Jom9U29z8sQPO7lmjAEM0dC1Ryq1IBCdkMa6VW1cMDEZf0Ckye6mSxsFE6+F7+7cva7ahD8iF18gGNFWK2TIBHjyx5Jex1td1sbFk1J4do++4REGFemR+j4TH4uKmmnucvO3k/LYVN2BTBDIiTXx0k9l/HFmOglhWi55ZQ0VrQ4iDCpOigs60X8o+APrGteF9AQmxU7inOxzeKfoHf618l/cP+1+ym3lbGvdxuS4yVR0VvDkhicBWFqzlNvH3U64JpwKWwWPzgz+Nqrt1dw0+iZWNqxkcuxkpiVM+9060YcUvRVm3AGfXL17mcoA8ft+YDdrlMiy58O21yGwO9omjLqASzSprK/qYMYve6uZ4uhWhNPh6OCj9bX8aU4mTy0KlhfsaOjk5mOyKG60Y3f5GJ0chj8QwOarw+618+ymYPbF6KjRKJVOSjpK+Kzss142iaLIOTnnYFFb+M/6/zAhdgKjokbx0PSH+Kn2JwqsBdy74l78op8MSwZbW7YSZ4jDHQimfu9KDa8truXeSffS7m5nY/NGZiXOYlLsJKnf8xFEg8016GndAFX2SrLCsvq1za4a6YESp4+jqK1owPuRkBgIB9ORvpi+TvMle1m2N64H3uxJDS8DLiUY3X5PEITLgCrgN57Yjww0SgU3zs3iuPwY1la2U9LUxdzcKLRKOdsbgsrC501I4pVlFQD8b3kFfz85H6VMRnW7A4/Djnb42eBoDabExo0i4HVRNWwW7aPORNAHH7w6PZ1sbtkcijzeOeFOXtryEpPiJrG8bjnjYsaxtXkrccY4Ek3SLPORhMPnYGnt0l7LFlYtJEobxbTEabQ523hj+xukmFPIj8jHF/BR3VWNTqkjy5JFnC6Oe1fdy6vbXuWktJNY07iGdnc7j617jARDAjqljurOanTJOtw+N5WdlTj9ThINiYRrD0ABNG0GtJbudqJ3seRByJgLWgvknRx0uqtWBHuyps+h3ZhNWUUbVoOapDAdtxyTxbtrqwF4c1UV185Kp8PhparVgUYp5/wJyRQ32vl8Ux3VbQ7uPjGvT5u4s8cmsL3BTqRRTbfbz+ryVj7bVEecRcsJw2JJjdSztqKdzzbWEqZXc+LwWEYkWoBgi60ThsWSH2eipctNtElDsnV39crIRAvvXDmRD9fV4PYFOHNMQiiiLrF/PL/ewexjHiX3p+vA1QFyFTWT/8mbJRqizXLeWVOFSaPEHwhw0+QwKFwPs++G6pWgj4KILFoaKpAJViKNau6cn4NaLgtF/nYxKT0CUQxw5/G5rChtITVCT2a0kWUlrRjUSkYlhaFTyUPq8VtrO/nDFCWPnzOK1i435S3dTPvDONIiDawobaWiNTi2W7o8xKlGEqOPwelzhpTtAVbUryDXmoteqQ8q4q//Nw9OfZDRkaNxBVx0uDs4O/tsPi35FJffxfvF75NpyWRG4gy2Nm+lILKARGMi5+aey7m55x7S7+WoIPsEOOct2PQuWBKDk3wxBX1Wq+9wUtvhJMqoQrlzNRzzD6hZG0zhTpyAULaYzz3JbK6WkTPtX0Qvuwf8XtCG4T7pWRqcwQm6mnYnb62q5Ka5WVgNKqx6FX98cz2RRg1JVg1KXTWoK2lxdrGmYU3o+Oub1rO+cT0LMhdQuKowtFwpU5JrzeXxdY9zRtYZxBniSLekY1Fb2Nm+k9zwXKrt1SEtjF0psl+Vf8VFeRexqGoRYk9mmyiKJBgTODXz1IP1aUscZOptB6eHdFVndb8UuwHMOhk2RwCvX0QpH0ALLGMCX5d/fcDbS0gMBoPuSAuCcC5wHpAqCMKe06MmoHXvW/VGFMWNBJW+f8mcARs4BJHLBB75rpjC+qD67/jUMHQqBW3dbt5fV8Oc3GjCdCpcXj8xZg1LiptJtuooiDPT7RfQLnkwGLUxx+Mt/pZvxp3DP5b/BZffhUVt4eoRV/PMxmdCIlNNjibquuoYHzue1wpf46FpDyEIAi9vfZn7pt53OD8KiQNAp9AxNX4qJR29o2z5kfnUd9VjUpkYGTWSFza/QJe3C4PSwJXDryTDkgECLK9fToG1gGV1y+j2dvequazpCtbf+1P9dLg7eGXrK7y67VUCYoA0cxqPzHik/2IzKj0o9nJDFwO7ozVxI8EQBZnH0uWX8UWlih/XVVIQb2Z7fScnj4zjmLxo3l0TdKT9AZEnfighxqTm/04bxp/e3kB+nIkpGRGMTgrj4kkp2F1e7j0pn7WV7dR1OJmZHcX2OhvXvLGOL/80jY3VHdz07saQOe+uqebvJ+dz/dsbQsteW1HBh9dMoiDeAoBMJpAWadhrjbVCLmNcSjjjUga/3cjvnVizlutnZ3D/1zs47wc1N499jXSNjeTERC7+tI2zxhkwBkRmZ0fT2u1heIKZ4oZOYiqXQ+GnQUGo5mLY+Cb6Yx7nP+eMorK1my+2NDAp3cqjZ43g+8JGutw+xqeE0+H0sLCwiWtmppEVY+TTjXXU90xefrG5nlcuHcs7V07ko/W11HY4OGtsIhNSgy2FrAY1VsPuyNwvSpZ56Qcv9yx4kDdLH+WXlHaUkmBIwOVzcV7ueTyz6RmywrN4e/vb+EQfsfpY/jT6Tzy29jFEUUQQBL6t+JYOdwd/Gf8X8iPyD9p3cNSjNUHOCcF/+2BNRRs3vL0Bg0aBSaPkrbg2WP4oRGaDTBEULMs6juhIFSeMTOFFWxQnHP85kbIu2pVRDMscQXZTF2atEpvTS6fLFyrjqre5uO+0YdS2O4mNbua+DTeRG56LSdW3g+iaxjWcn3M+t4+/nRV1K9Ar9UyKncTm5s3Udddh0VgYHjmcFze/iF/0k2hM5Pzc87F77H1PSgS9Us/fJv2NFfUrUMqUnJ55OiOiRgzmpytxiKnrcBK2lxaPA6HTY8MT8Ox1TP4acpmASSejxe4n1nLgbkiCIYHSjtLQtVFC4nBwMCLSy4F6IALY88nBDmze6xZHOVVtDmzO3WIzSeF6/vjm+pDwyKeb6nhowTB2Nndzz6fbQutFm9RMuzAHzElgq4KuRsqP+xt3F/43JCiyy/k5Of1k3trxFgATYiawon4F0bpoorRR6JV63i1+l1mJsxgXPe4QnrnEYCAIAgsyF7CifgVFbUVYNVbmJs9lfMx4VtStQKfU8eymZ3H6giJIXd4unt30LE/NfoqH1jxEUXsR0+Kncc2Ia9DKg73G71p2V2j/SpmSCbET2NayjZe3vhxaXmYr47lNz/Gvqf/qf4pf0kRQaMC3uwab6X8G3R4RW1McFV4zZz63gmZ7MNXwu8JGrpiWRm27k9p2B+eMT+IfX+yOwuTEGHlhSSkOj581Fe2sqWhHEODfZ43gpvc2IYqQGK4lyqDGoJaztqoDh8dPTZuDf3/fW7RkVJKF53tSfVOsOhweP012N8tLW0OOtMTB44yxCcSYNXy0voZyvwGHPIEVZT6cvjZizRru+nRrKLvg220N/HV+LpOn3ori61ugrmfyQ6WnXpfNf37YSUlTcCLxu8JGzhyTgNfvp9nu5sN11Vw9M4Mrpxtosrt5fmlZL2d4S62N4sYuJqdHMDzB8pt2Z0UbSbBoqOkIju2GTg9byrVMjZ/K5pbet8Ax0WPQyDXEGeK4YdEN/HHkH0Pp3NDT97f0C2YkziAnPIdXt73K6KjR+EU/q+pXSY70YaTZ7uLzjbWcOTaRHQ2dJITpaEk8ibiN/4Pm3emmwvirSHOYuPat4Jj8L8ESg5cvCYrepUcZePuKiXy8oYYUq54Hv90RGtefb6rn32ePYJttBb6Ajyp7FQsyFrCsblkvW/Ksefxr9b+YGj+VU9JOw6Cw8kXF+3xe9jkABoWR94reC61fba/mh6ofODXjVD7Y+QG+wO4snT8M+wPTE6YDcHrW6YP/wUkcFuo6nKT/iqjmgVDVWUWMLuaAxGnD9TIaOwbmSBtUBtRyNY2ORmL0fbvcSEgcCgbdkRZFsRKoBCYJghAN7PLMtoui6Nv3lkcfPn+AjdUdfL6pjsnpVjKjjeyot7FoR1PIiYZghKPL4+f1Fb3bozR2uvmpScMZ578PWz6A6pXUhyX1UuUEaHY2k2fNY2z0WPKseQTEAG9sf4Oc8BwuyrsIg8rARXkXkWJKwaTu38yixNAg1ZzKC3NfoKSjhNUNq2lztlHaUUpBRAGbmjaFnOhdOH1OPAFPKCLxU+1P/FT7EwAPT3+YJ2c/yftF7xOuDeeMzDPIt+bzzo53+hx3Rd0KOtwdRCui+7z3q8SOgEu+hPWvQWctjLkUUqb3Wa2wrjPkRO/indVVXDY1lcd/2MmkdCu3HZfNqvI2IgwqzpuQxH1fbu+1/vB4M19urg85R9VtTqrbnKRHGfEHRNQKGVaDqlctMwRnzZOtOk4cEUdhXScGtYKkcB1yaeb7kGDVqzllZDynjIxnbUUrZzy3ErVCxp9mZ9La7emVog/w2soK5pxzHKq5OuJK36NLn0Rh9MlstEVR0tS7ju7D9TW8efkE5DKB1Ag9gYDIA1/vYFZOVJ+IMkAgsP/aQfFhWl6+dDyfb6pjTUUbJw2PY3ZuFB7heJbWLGVr61YAxkaPpdXVyqamTUyNn4pf9IfaEu1JYVshVwy/gnd2vEO3t5vxseN5bO1jzEqctd82SQw+7Q4vTm+A137Y3TKtNCOM/5z1McatryELeGDsZXjjx/P6a70nUNy+AKvL25iSERRpyoszkReXx/trq/uM6zdWVjF2VLAMwea2ISIyLGIYW1q2BLe15qGUKWl2NvNp6aekqGfywMcNfHrDNSzIXEBbF5R39FU23ti0kXHR47hp9E1sat6Ey+firOyzGBezezK91l7LivoVbGraxLjYcYyPGS85LEco9TbXoGdHVdqriOyn0NguLPqBt8CCYHp3cXuxNC4lDhsHrUZaEIQzgUeAxQSlLp8UBOHPoih+cLCOeaSxrqqdc19Yya5nNIVM4IlzR7GmvDWkzL0LGcF2LQ02F/Zf9MklKgfmBCOIUa3bERBCtU0AFrUFs9pMQAzwWelndLg7gKBIyeio0WSEZxzM05Q4RLS52rhp8U10eoIlAu/vfJ9Hpj9CRlgGKpkKT2C3SqZKpiLeEM+Vw6/k7yv+DoBVY0Wv1JNiSiHHmsPMxJm99h9viO9zzJFRIw988iVhbO/e0XtjL16NNxDA4Q3egFeUtrKmvI0xyWEMSzDj9QeYVxDD+qoOAMJ0SuIt2lBt6550u71olXIePmM4OTEmrpudwV8+2hJ6f2NVB3fMz+Gm93bXtepUcl6++Ddslhh0jBolCpmA2xfgsYXF/PnY7D7reP0B3tlq57UVYdx5wuMginy+uZ7zJgRF5vQqORFGNbXtTvyiiEouY0zPg2Wn04NJq+TTjXXMzonixx27lcLTIvRkRvWvT2lWtJFb+tiYzDNzn6HcVo5MkBGhjWB1w2q2tWwj3hCPgIBK1jf1MtOSSVVnFUq5klvG3sLnpZ8jF+RMip3UL5skBhePz8/HG3r3Vl5c0s7Xw4fhir+biyelIAgCfq8fq16NSaPo1TXAu5c2eC5v3+tUTbuDS8OmIBPeICAGeHXbq8xPnc/lwy7HoDQiigKvbH2F6XFzGRt+Aq8tEpmbG0WSJZZudyRXvfgTlx1j7rPfPGseW1u3srRmKRflXsQNo29AtUfJTYerg3uW38PqhtUAfFL6CSelncTdE+9Gq9Qe8OcmcXho7Bx8sbEKW8UBO7AWnYz6AbbAAojVx1LSURLKopCQONQcTLGxu4Bxoig2AQiCEAksJNjO6qilvKWLn3a2UNRgJz3SwNzcaL4rDCrSjk4KQykXUCnkHJMXTVqEnk831hBu0BBj1nDF9DSUMgGXL8Bdn2zFoFYwLL73DTLRmMjNY27m8fWP4xf9aOQa/jYp2KdURAw50ammVLLDs0PtjCSOfDa3bA450bt4euPTvDbvNf4x5R/ctewufAEfCpmCeybdQ7w+HnmMnGfmPIPH72Fj80Z8AR/Nzmas3VYi9ZG99lUQUcBpGafxccnHQLDv+PWjrkerGNhDVXWbg3aHhwiDGpvTg9sXoKnTzeKiZkYmmrlwYhKvr6wKrX/RpBS+3daAXiXHalCRF2ciO9pIUriel38up63by10n5KBVKahuc9Dt9nNCejjjU8N4ZnEZXT0TUaeMjCc1Qk9apAGZTGB+QQwGtYK3VleRYNFy6ZQU/vrR1l62Ojx+ttTZmJgeQVFDJ4t2NNPQ6WJObhSjk8LQq39/vXsPNy12NzXtTm6bl81D3xThC4gERBGNUobLG2B0koWpmRHkxZpQyWVkxxhZUdqKWavk1JHxxBjV3DE/B39ApKy5i0smp+Dy+lEpd7cq6nT46HL7OWF4LDqlnJGJFhYXNTMm2cLZ4xKJNmvYUd8ZVOy2u5idE83oZAs6Vf++b4Fgr+kAASwqCwsyF3Baxml4A166fd0srlrMqRmn8knJJwCYVCbOyDqDWYmzKIgo4KUtL5FhzuCeifdQ113HJyWfkBOew8TYiYiI2D12YvQxWLXWwfwKJPaCWiHHv5eJPpvTy3trazh9dAJOr5815e0YNQrOGpeIVinnuSWlzMmJZlK6lQ1V7QQCIi1dbsqau0iLNIbG9S7OHJNAfngsLx37Em/veJtubzcnpJ5AjLqAFTs7cficnJt5JVqlnEVbRa6aZiQv2c+mxq1EaqOZlKEn3qLmpLST+bxH1TtcE868lHk8vPZhYnQxnJxxci8nGoKlO7uc6F18XvY5F+VfRE54zkH4RCUOFrvG2GA70lWdVYyIPLDa+XCDjJLGgSepxhnipF7SEoeVg/nUJ9vlRPfQSjCwetRS3+HkytfWsbOpi8npVqwGFcflx6CUC7Q7vJwzLpE/vrkerz94c5bLBB4/awQef4BvtjXidXZyQoKbKL2Od/4wGrlSTXbM7mhgp7uT1Q2r+bz0c64cfiV+0Y+AgFKmpLG7kZywHCbFTiJAgBZHC5+XfM6JaScero9DYpDx+r19lrn8Ln6u+5k2VxsvHvNiMIXP7+Lt7W+jVWh5YPUDnJ97Ps9tei7UM/rN7W/yl/F/YVjkMAoidqvUWrVWbh93O2dmnYnD5yDZlHzg6VRuO4G2Chq6fNzxo52c+AhKmrpYUtyMIMAJw2LRKuXc9uEWThoey1+Pz+GbrQ2cMjKeMcmWUHTH5vCSEW1gZVkrTy8q5YwxCYBAt9vPkz+WhrQHXl9ZyV/m53DvyXn8sKOJ+QWxlDV3YdIokcu6SbHqsehUnDQijuOHxSKXCZQ02Zk/LKZHfKo21ILO4fazs9HOOS+spN0R3P+ryyt48txRnDQi7sA+D4m94vH5eX5pKS/+VE5qhJ7rZmegUciZkR0RckS21Np48scSRBFm50Zxeq6BuWFNOEQlb61r484T8/liUx1b64KTTB+ur+WSySk0d7pY5mxmZVkbAnBcfjT//amM1RXtxJo1/Gl2BnlxJtIjDWyqbmdxUTPV7U4+21jHy8sqePb80cwfFrvf57KjdQdPb3yaxTWLERCYnzqfq4ZdRVpYGiq5igUZC4jXx1Ntr2bStElU26vp9nbz/KbnmZ4wnfGx4xkTPYZOdycvbn2R1wtfD+07NyyXYVHDeK/oPRIMCTwy4xGpfvogkxSu45xxiUTQydhwJ3UuNa8XBZXaJ6WHY3f5eGdNNU/skfqdYNHy/AVjeHZxKRe+tBqFTODMsQm0dHlwe/10efzce3I+S4ubaex0MzUzguo2B4JMwdjIsYyJHoOISFOnm9s/3EJmvIdq3uPZpYsQELg4/2LkxmSu+OFhHD4HuWF5LBi5gLtW/R/jYsZx7chrERDIDs+mrKOM+6bcx6ioUcQb42l2NNPkaMKisRBviO9TIraLPeupJY4MWrrdGNQKlPLBewR3+px0uDsI1xxYuni4Xk6jrW8pS3+JN8SzvG75gPcjIXGgHExH+mtBEL4F3u55fTbw1UE83pBnR4OdnU3BiEhVm4MnfihBJsBpo+I5b0Is3xc2hpxoCCoRf1PYwJT0CMabbZzqfALtzwtBJscx+mpqci8DdoszldpK+anmJ4ZFDsMv+nH5XHxZ9iXltnKyw7Kxaq08tfGp0PqPz3wclXzw2yFIHB6GRQ5DKVOG2pkAHJ96PA+teYiMsAxW1q/kp9qfGBE5gvPzzqeys5ICawH13fUhJxpAROS7yu/Y1rqNW8fdikVtCb2nV+kZFjlsYIa2lsE3dyDb+S1xMjlPjbiK5dZzeenn5uDxxaBS8nWzM9AoZXy+uZ4rpqdx3oQkNlXb2NFg5+MNtZQ2d4d2eemUFOLDtLyzppo/H5dFt9vfS8AP4L211YxPCWdYvBkB+GxTPQ98U4RaIeP2edmcNS4Jg1qBPxDg800N3PXJVrrcPpKtOm6fl8MDX+/AL4pkRRvZVNMRcqJ38ch3RUzNiDgoLUaOVirbHLzco55d3tLN4wuDTsmwhAlMyYigqs3BxxvqQuufnexgzsa/oKhbA3IVU8beQo0rMeRE7+L1lZXMK4jh8e+LGZ8WfBB88acyjh8Wy+qKduptLv7y8VY+vGYS762t4d7Pt+Hw+EmP1HP7/Gz+9dUOHv2+mMnpVsz7qYT7Y/WPdHm7uHr41YiILK9bzvL65aSFpQGglCuJN8Rz29LbsHt3qylfVnAZsfqgw15mK2NF3Qre3v52r31vb9/OrKRgzXRNVw33LLuHl457CYvGsp+ftER/USvl3DPKheazaxE2V4DaxKnHPcpnnniGJ8VR3dbNyz+X99pGq5Lz/fZG1lS2A+ALiLy9uppbj83m0e+LSI8y8Mi3xdwwJ4Mvtzbw3JJSLpmcwpaaDmJNGtRKOQICxY1dbKuzkZ1dwvKSRUDwum1UGfnnyn+ESrsKIvNZUrOYq4ZfhYDAqvpVrG1cyzUjrgn1oX5j/hs0OZr489I/0+hoxKQy8c8p/6TAWkC6OZ1S2+7e6hNiJ5BsTD4En67EYNJgc/XqLDAYVHVWEqOPRi4cmHMeZgj2kg6IIrIB6I7EGeKo7KzEH/Ajl8kPeD8SEgfKwYwQi8DzwHBgBPDCQTzWEYHXHyBcr0IuE0I1eAERPt5QS7fb1yudaxcOt59ul4857oVoKxYGFwb86NY+TWT7xl7rNjuaGRMzhpX1K3lh8wt8UvIJF+VdhE6hw6wxE64JZ1r8NMZGj+XxWY8zMW7iwT5liUNIbnguLx33EsclH8eIiBHcPOZmym3ltLvbmZU4ixX1Kzg141TiDHHctewuntzwJIIgkBWW1WdfLr+LVlcrzY7mwTVSFGHjm7Dz2+DrgJ+wDc+Q7y9ELut9My1qsJMcHuzL7POLLCxs5Pz/rqKm3dnLiQZ4e3UV8/KD0fFGm3uvglFOjx9fQKTL7aeqzRFqN+f2BfjHF9vZWmvrOW4XN723MZQCXtnq4O3VVVw/O4O/Hp9Do92J19f3AMH99/0NS+ybsuYu3lxZyf1fbWdJURP2X0x++PxiHxE42F1f+tPOltCycYl6ptS9EnSiAfweYlbdT6q7qM/2/oCIy+PHrFPx5I8lPPljCVFGDXJBIC1idy/wli4Pt3+4OVRjX9rczccbapmbGx0aT/uD0+tEKVNiVBl5bvNzvLjlRRKNiX3ExVItqfz3uP+yIGMBedY87ppwF+flnodcJsfpc/Lvdf/G7rHj24tuZ4DdY6+4o5gWV0ufdSQGD7+9CfXn1yC0VwQXuDvRfn4VIzUNrCxvY2V5Ox5f7+vBiJ6SgV/SYHNi1ipZW9FObqwRX0DE6fFzxbQ0KlodXP/2Roobd0+uOD0+8uL0bOlY2ms/br+7lz5KnjUPk9rEi1te5PnNz2NSmTgn+5xe61R0VnDr0ltpdARLzDo9ndy65FbsXjuPzXyMP+T/gdzwXK4deS33TLwHo7p/egESh5962+DXR1d2VhKl66fI6B6oFQIapUB798DumVqFFrPKTG1X7W+vLCFxEDiYjvQxoih+JIrizaIo3iSK4sfA/IN4vCFPVrSR8SlhrO+Zjd5FQASnJ8CY5LA+2xxXEEOqOUBUdd+m8/o96pdana3oFXqe3fhs6ILS6enkyQ1PMjNxJjX2GjrcHdwy5hZeOOYF5iTNQa/U99mnxJGLIAiMihrFg9Mf5L/H/ZcNjRv4sfpHALRyLcOsw4jURvJ1+dcExAAiIj9W/0iHu6NX1BlgVuIsym3lmFV9RWoGhKsTtn/aZ3Fk23piTJpey5KtOuo7nYxMNGNQK3js+2A0cm9OstcvouhJWxuRaGFiWjhKeW/H/OSRcawsayXQU2P7Sypbgs55dbujzzF2NnWhU8u5/+sdDE8IoyDBjOoXaXJXz0gn0tj7HCT2TXWbg0tfXcOdn2zl+aVlXPzKGj7bXNdrnSSrjpNGxHLGmASum53BpVNSyI4xhMS/RiRaQuvOSVJgqFzY5ziGrgpizb2/l5lZkSCIfLutAVEMjqkvt9TT6fKSF2tCJkCkUU17t6fP/rbWdpIZbeDqGWn7HeVRyVV4/B4WVQejhwExwFflX6GUKanr7H3OedY8/jb5b7w2/zXOzjmbKF0UAO2udn6u/ZmNzRuZFj+t1zaR2sheyvzRuujB/+1K9MLZVoesraT3QjFArNjIv78v5svNdZwysnepR6PNSUF83+8lwqimy+UjJ8aIIEC7w4NJo+Cln8v5ZmsDEMzOCK1vUCOKctIMvetT1fLd41Gr0NLkaOKr8q96Xe81Cg16xe57v0llosnR1Gs/3oCXWnstaZY0bhxzI6/Nf42rR1xNkimpfx+SxJCgweYiTKsc1H2W28qJ0kb+9oq/QoRRTsMgCI7FG+PZ2bHz11dqLQ12t7FJDrfE4DLojrQgCNcIgrAFyBYEYfMe/8o5yvtIp0ToufnYLPLj+qocW3QKatsd/GV+DuNSwhidFMZjZ47gvTXVBORauqL69ncWYoL1qx6/h1e2vkJtdy01XTW91vGJPmxuGzqFjhZHC9H6aJTywb2gSgwt5DI5nZ5OTkzfXf++vH45F+dfzI62HX3W/6nmJ+6acBcTYiYwLGIY14+6nvUN67lr4l1E6aMG1ziVHhL7ZkL4I/PQ7CH+lBdrxKpXcXxBLH+ancnG6nacPVFBvyhi/sVDwfyCGH7e2cyMzGDt7LTMSN64bAJzcqIoiDdx/ewMqlodnD0uCZfXR5PdxS/xiyJ1HU6ijH2doyijmoAIr/9hAsPjzRTEmXjrygnMy48hP87EQ6cP5+SRUn10fyis66Sy1dFr2YPf7KDettsh1KsUXDgxmXWVbTz1YwmfbqzjT7MzielxjKdnRjCyx5ne3BLAEzW8z3E6lJHcfWIeJ4+IIyfGyIUTk/nD1FTe3EPAbhdrK9qZnhXBDXOzOH5YUHzulySEaRmbZOGE4ftfHy0isqJ+RZ/lG5o3cPeKuynrKOu1XCbIejlFEOyZmhOWw8r6laSaUzkn+xyywrJYkLmAO8bfEUr3VslU3Dv5XiJ1A3vIlfh1PEoT6Pu2/nGqIuh0+Shu7EIuE7hiWhq5sUZOGB7D6WMSmJsbRYRhd3RwfGo4jZ0uYswaJqVbOXd8Eu+vrWHpzpZe3Qb2vC4lW/XMyo5inPVYEgwJoeVVnVWcn3s+ACmmFLa29BZLhGDbqw1NwZ7WJ6adSKw+ts+kuoBARE9bI0EQ0CikCcIjmdoOJ5bBVuzurCDGMLCWU2F62aA40jG6GEraS/a9wpqX4MXZsPYVeHYyFPUNTElIHCgHo0b6LeBr4H7gjj2W20VRbDsIxzti8AdEOhxeZuVEsaQ4KFwDkBNjoLXLw6zsSDw+ketmZaBVyVlb0c76qg6ufLOD7867mMzqRQj2egDExEko02cCwZvn69tf5+K8izGpTH2Umy0aC2aVmYzwDAwqwyE9Z4lDiyiKrKhbwV3L7iLBmMAtY29hYeVCHF4HJpWJPGteqF/0LvKt+bQ4WxgfM57xMePp8nYxN2nuwVF0lytgwtVQshB6xnIgcRLLfLncNDeRnU1dCEIwdXF9ZTsCBGsBo41cMDGJV5dX8PqKSq6bncGa8jYqWruZXxDDpDQrgiCQGW0kXK/C7vRS3tLFySPiCNMrqe1wMinNikYp4PaJlDZ3YVArQunb8/Nj8PoCrKloY3KalatnpPHckqBzo5LLePD04UzJsKJS7K7BGpsczohzLfhEEa1Sqs3aF90eH3XtTlQKGUnhOoSeeji3by/tfzyBXunSLXY3f35/cyga19bt4YZ3NvLlnwwoZDJWV7Ry6ZQUBIL1pk7j3ag+PAdcHcFjZJ3Ehw3RxCb4mZUTybz8aBxeP2aNgowoI99v7x2JG5ZgpqK1m2cWB7/7ylYHp4+O58P1wSiGWiHj/gXDmJbZPydVIVMwOmo0m5o39VqeaEhkYdtCNjZtJM2S9qv7MKlM3DHhDq5ZeA2vFb5GlC6KC3Mu5OT0k9EoNbw671Xa3e0kGBKkbgyDSGuXm+YuN+E6FVF7ZM2orUnUz3yE2G+ugB6hx9YxN1AuS0IpL8TrF3lnTTVhOiXjUsKYmGrl660NnDwijodPH06bw4vHH0AlF7A5vZw0PJbCBhsur4I/z8vmjg+3oFXJ6Xb7uGRyCjmxuyfgI4xqpmVF8N02L5elP4ze2IDd105tVw0GpYH7p96PL+Cn2dm01+t9iimF/Ih8Vtevps3Vxr2T7+X2pbeHBMZuHH3jb45HiSOHug4nSeG6Qduf0+ekzdWOVXNgPaR3YdHLqG8fuHhdvDF+r0ECAHYuhMUPwPGPgDEGWorhk2vgsoUQIbV+lRg4g+5Ii6JoA2zAuYO97yOddZVtnPfiKgBeuWQsOxrsuLwBEsK0tHV7WFPZQWaUgQ6nB5VcxvAEMzkxRnY02DnpvXb+MeNl5sV0YjYaKTVY2NC0kq7ahWSHZ/N/k/+PLm8XN46+kftW3Re6IV6afymJhkQywjJCD7ASv18qOyu5YdENuPwump3NFLUWcefEO3H73Wxt3cqk2EksrFwYEpCJN8Rj0Vh4YM0DALx47ItMiJvA9tbt/G/b/9ApdYyJHkOGZRBvODEFcNn3wRuaXIUsMgehws8P2xpo6XKH6l4NagW3HJvF/325nYdPH45Zp+TMsYmE6ZTEmNScOCyWbq+PSIOacIMajUJGmC4Yqd5WZ6OsxcHrKypxev1MybBy+qh4Iowarnt7fVDhdnIK0UY1Lp+fVeVt/O3zQgD+ddowrpudyXH5MbR1e0gK15He0yLrlygVMqT8jn1T3tLF/32xnR92NAVV2Odlc+aYBAwaJdkxRrRKOc49eudeNCmZSIOK9ZXtrCpvRSmXsWB0PM8vLQtF53wBkQabm9s/2kTDHqqv/zg5n3nfdnPz2NeZaGpDqTPxZpmOnOQkVpW3EqZT4/T4SIs0sL66nWmZEXy1pY7KtuCEZnqkngmp4Vz8yprQPhcXNTMlw8qrl44jEBBJsgbHwoFwcvrJfFfxHbXdQac8w5LB8MjhOHwOnD4nNfYaEozB6GJ9Vz0On4NoXXSvyc/R0aN576T3qLRVYlQbSTenh/q4D1gEUKIP6yvbufn9jVS0OIgxabjzhFzSI3QkhOl4d20NPl8eU0/8Al13DbqwWMplCVTbBW45JosHvy1CFKHD6SUjysiryyu4dlYGj35XzILRCTz6fVGvEpIRCWbOG5/Eo98XMy5NywMXqCnr3E6CMZ4JsUZMmt5XmswoI+kRBhweHzpVHm/veJuKzgq2t26nvjs4SfniMS+SYcmgpCMYrYs3xDMuZhwr6ldgVpvJseZg99qZkzSH9056j7quOgxKA1aNFbkgTQ7+Xqi3uRi1RxnMQBmo0Nguwg0yKpoH7kgnGBL4ofKHvm+47fDZtTDlxqATDRCRBQWnw5c3w8WfDfjYEhJS09NDhM8f4KWfy/EFREYnhfH2mmoWFzVzyeQUHvhmB42dux8IHzx9OO0OD+Ut3dx6bDblLd34RZHYWCNCooUSdxWXfnNpqCe0TJBx+7jbeXjNw8QYYrhq+FVE6aJQyVW8W/Quo6NHkxmeeZjOXOJQUttV20uB++qRV/PspmdDKf8yQcYzs59BRKSko4T67nqe3/Q8ALH6WFJNqaxrWMdVC68iIAYjhma1mVeOe4XMsEEcQ5ZESj1hrK1so7O6k3EpYczOiaK4sZMFo+MRRQiIIv/8YjsjEy2sKm/j3bXVAJw/IYnPN9VRWL9bfOeq6WksLGzkzLGJzMqNpLbDyWsrKtil/bWspJVIg5oThsXS6QzeuJ9eVMKNczNDStC7eOCb7czKjmRUUl/NAon9x+cP8PLP5fzQI6zo9Pq59/NC0iIMxFo0WA1K3rpiAs8tLqWkuYuzxiYyKT2chYVN/OmdDewKTIfplFw1I51/fx/sFSoIUNvh6OVEA7yyvILxqVb+/EMdoOThMzIZmalEIZOxtdbO+qrdqdxXTU+jpKmOP8/LocXuJiBCZWs3OxrsqOQynIHdzv2yklaump7OzNyBlTl0e7uZnTQbvUqPSqYiVh/LLUtuCf3OPi75mCdmP8HGpo3ct+o+Oj2djI4azd0T7yYjbPdEVrIpmWSTpJx8sGmwObn6jXU02YPjrKHTxaPfFXHLMVl0OH38tLOZpTtb+CzGyPWzJ7NiZxsryiooaeoiO9rIjXOziDSoEEVYWd7KmWMS+d/yCspaunH5/H10GDbV2Lh8mgKVQiA1ZTv3rPpP6L08az7/mfkfYgy9xZ1kMgGDRkmnp5O3i96msrOy1/vL65bz/NznKbWV4g/4cfqc3Lrk1pBYXZo5jRNST0AhU2DVWPmm/Bte3fYqATHA6Zmnc8XwKw68xaHEkKHe5hrUbhLltgqiByA0tgurQcbKnQNP7Y7Vx1LbVYvX7+1duvjzvyEqH2J/UfKTcyJ8ei1ULIOUKQM+vsTRjeRIHwICAZGy5i6a7W7UChkXT06mqtXB7JwoIgxqOp1e3l5THVKnfWFpGSeNiCU71sQ1b67jmNxobpuXTUpEMDLxZcWakBMNu4VrJsZN5Ofan3lm0zNkhWVRYC1gU/MmrBrr4ThtiUNEl6eLLS1b2N66HavWyjnZ5/BO0TsA6BS6XnXzATHA31f+nTePf5MEYwLvF79PrCGWsdFjuSDvAsxqM89tfi70cA9gc9tY3bB6UB3p0qYuznlhJc1dwYdUQYB3rpiA3aXlb59uo9PlY0qGlUunpGBQK7jvq+2hbaOM6l5O9JjkMLQqOdfPyeSR74qwaBXoNUoumpSCQiagVsh4YWkZP+1s4eSRcShkQih9+JeiYzqVHKfH36sNncSB0dbt4YvN9X2WLy9t4bUVlVgNKh4+YzhPnjcKlzdAdZuDfy8soq3bx55i2O0OL91uH3qVnG6Pn3PHJeLZy/fT6fRi3KOmeXV5Gw+fOYLvCxtYX9Vb4PGVZRX89fgcnG4fRo2S0uYulpe2Etfazckj43h3TXVo3SijmvRIA2XNXayvaqfD4WVUooVhCRZUiv2LyIiiyNs73ubL8i8BuCjvIl7Z+kqv31lRexGbmzdz+0+3h5atb1rPw2sf5szMM2lxtTAicgS51tz9OqbEwKjrcIWcaICRiRamZ0Vw5ydbQ9enm+ZmkmTV8eSiEublx1DS1AVAUaOdou/tmLQKHjtzJLNzorjjwy2hcgb1HuNmUrqVCanhBAKgkgmcOFrLe2W9m5wUtm5jS/OOPo70LnRyHfnW/D6OtFWdSEO7iglxE2l0NnDGZ2f0Unwvs5XR6Ggk15rL6obVvLjlxdB77xW/R7whnlPST8Gqk54hjlQCAZFmuwurfvDaX5XZSokehAmWYC/pgbfAUsqVROoiKbOVkR2eHVzY3Qpr/gsn/LvvBjIF5J0Kyx6XHGmJASM50oNEi92NzeklwqjCrN0981fT7mBFaSvFjXYumpRMh8PLf5eWcdLIeB76pogmu5uRiRYeP3skd368hU6XD5vTQ1Onm4qWbs6bkERGpKFXWtcva6Ah6OzsOXNsc9uYEj8Fq9ZKuiX94J68xGFDFEU+Lf2UB1Y/EFo2PHI4p2acyicln/RprwPBsWF320kPS+eWsbdw5fAr0Sl1KGVKujxdtLn6ShnY3LZBtXttZVvIiQ6eBxTW27m3J70adkeRF4yKRymTMa8ghiSrjiSrDo1Shssb4IppaVS2dvOfH3aiU8q5YGIyEUY1V7+xPuQsm7VKrpmZwc8lzXy7tYHLpqby/NJgDaxcENAoZUzNiGBkYhht3W5SI/R9FL8PBKfHT73NiUYpJ86iHfD+jjT0GgU5sUZWlPYeTzqVHJfPT027k8v/t5Yv/zSNlAg976+tQa1QYHM697q/G+dmkWTV0WBzMize3GtCBODEEXF8v62BiWnhjE0JZ0SCBQgKJ/0Sjz+AUaNgXWUH76+rRkBgweh48uJMaBRydMpgv99xyWFcMSONDqeHy19dS31nMNtDEODlS8YxK3v/otQBMUCzc3fbI7VcTbevu896Xd6uPsuW1y2nIKKAFza/gFqu5pXjXpHSuA8BZp0y5PD6AiLH5EXz8Le7W6ktK2nFqFaSFW3A5vDi/8WknFWv4pSRcQTEAF5vgKtmpPHVlga0SjkJFi2njYonP87EstJWHl+4E5NGwS3HZjMp3cxbdX3FEO1uR59lu1DIFVySfwnL65aHJtmzzHnU1MXyz7eX89YVE4i1+uj29h1zLl/wWEuql/R5b2HVQhDgrKyzJH2VI5TWbg86lWK/J/32hwpbBSMiRw54P2qlgFYl0NYVIMI4sFKCRGMiOzt27nakVz4NSZPBsI9rdPos2PgGdFSBRVKjlzhwDmb7q6MCURRZXtrCgmeXMeexJVz40iq21ASdjvoOJ9e8sZ4/f7CZF38q55ONtQREkbn5MTz0zY7QbPfG6g6eXVzKg6cPJ8Kg4sThcSwqauL7wkbizFru/3pHL2GecTHj+jwczkmaw8r6laHXCzIXUNxWzGUFl6FTDp7IhMTQoqarhv+s/0+vZZubNzMjYQYvHvMiKaYUFLLe82UnpZ1EpD4oliQTZJjVZpSy4ESNQWXgwtwLe60vIDAhdsKg2t35i37B0UZ1n56rAN8VNuIPiNx7cj47Gjp56scSnli4kzvm55AXa8Tu8vJdYSOiCN0eP88vLaO2w9nLwbI5vbR1u7l8aioqhZxNNR3ccmwW9582DL1awaNnjiDapOGR74p4eVkFd3+6jfu/3tHHxv5Q3tLFTe9uZM5jSzj+iZ/4cF0NLu/Aa8GOJPQqBX8+Lge9avcD0qhEC0323X2+uz3Bnt4ADXYXP5e0cFx+76ibIEC4XsV9X22n2+3j9NGJjEi08Ppl4xmXEkZSuI4b52YSCIgsGJOAXqXg6UUl3Pr+Jl5eVo5RowjVzu9iRlYEdTYXb62uwusX8fgDvLOmGrkgMCsnirtPzOPz66fyrwXDqGlzsrKsNeREQ3Di5+FvdvTpe70v5DI5Z2efHXq9sn4lc5Lm9FpHq9CSaEzss228IT7Uz93td/Phzg/365gSAyPRouU/54zk0ikpXDsrvU+fe4Alxc24vAGOHx6LXBBCooP5cSYunpzCxxtqufL19Xxb2EhBnJnTR8cTa9bw/NIy5uREsqO+k0U9pQ+dLh9/+2wbXreJOUnH9TqOTqEj0ZAaXM/dSYWtgnZX7ywLkyyZPw97mr+Mfpirsh4gS/gTLy6y4QuIPLe4DKsmktMyTuu1jUauCelf7C3TIdmUzEc7P6Kis+LAPkSJw069zdlLJX6gdHnsdHm7CNcOTulThFFOffvgpHcXtfVMdLm7YO3LkH/avjdQaCB1Bqx/Y8DHlji6kRzpAVLW0s1lr66lqkewZnNNJ9e9vZ5mu5vC+k621Aad6r/Oz2VaZiSt3R68/t7KtACF9Z3saOjkrhPy6HL7qLe5SInQs76qnYsnJxO9h1rosIhhPDXnKfKseSQYE7h5zM3khOeQYEgg3hDPZQWXYVaZKe8sR6+SekX/nvH4Pb36x+7CG/Dyv8L/sbJuJXdNuIsRkSOI1cdyXs55nJh2IiZV3xZsu5iTNIe7JgRVv/Ot+Tw15ymGRQxuBGx0Uhh7ZnJdOSMNj7+vI50aoaey3cHjPxRT3BiM1pW3Onjsu2JumJsZEibbk7LmbsJ/UQ/m9YtUtXXzzbYGjsmLJi/WRG2Hg//7cjvFjV28vbp3K6TPNtVR0tw3Org/eH0BnltSyjc9PYo7HF5ueX8TW2r6ZpL83hmdFMZn10/lhQvH8N+LxpIVbeDNVbs/611OMsDpoxMI0ylJCNNy67FZJIXrKIg38df5uXy0PlieIAAGjQK5TGBSegQPnT6cY/Ki+GBdNUnhWpo73fywowlRDE6g/OPzQtZXtXP7/Bzm5EQRY9Jw2qh45hfEsqyk79j5rrCBSKMamUwgTKeitLmbW9/fSJer7yRIa7eHTtf+T7ZMjJ3IfVPvI9WUisvn4vTM0zkv5zxi9DGMjR7LozMeJd2czvyU+aFtFDIF5+WcxzcV34SWNXQ3IO6tmbrEoLKirI1r3lzPc0vKeOKHkr1+5umReqJMGlrsHgIi3HVCLhPTwjllZByPfV9MuyM4Pn7Y0cQnG2tRyOCssQnMzYlCp1bwzbbGPvvc2egmTXYGF+VeSrQumnFRU7h77H/ICk9ja8tWLv/2ck765CQu/vpi1jWuC2338YZaHvy8hXXbY3jkU3h7RUfovUa7C1Bw+fDLuXL4lcToY5gcN5kXj30xVH8/PWE6ScbdkTmrxkqGJYPKzspQ1FriyKOuw7Xf/e73h3JbOTH6WGSD5D6EG2TUDYJyd4IxYbdy98Y3IboATL/RkjJtFmx6mz6CBRIS/UBK7R4g1a2OXqqzEGyZUtfhpLuntc7JI2LQqmQ8t6SUCyem7NVhsOiUdLmD0ZkP1tWgVsg4Z1wiNqeXBaMTeikGK+VKYnQxxOpiSTOn8XnJ5/xx5B85O/tsVHIV6xvX89LWl3hq9lMH9+QlDjtxhjjmJM3hh6rdipU6hQ67287PtT/zMz9zYuqJnJl1JlaNlXhjPCmmlF/dZ7g2nLNzzmZeyjwUckWfHqODwbAEC69eMo7Hvi8mXK9ifVU7RrWSMclhrKsMRlp2/Qaa7O5eYnwQjN5YtMG0ytqO3hMJKRF6HO7eN+acGCMbqjswaRTc9+V2Pr12ClMzIxERiLNoCezlPurwHNjNvaXLzeeb+tYGlzR3MS41/ID2eSSTHmkgPdKAPyDS2Oni3bW7a/ZvmJNJRlRwfOXFGjlheCz/+KIQi1bJzcdmIyBy9yfbmJwRwbyCGHJijL32nRpp4LKpaUzNiMSoUfDED317iXY6fTz6XTHPXTCG7fWdfLKxjjUVbczMimRlWe+084I4c6/X5S3dePwiyVYdMoFe4+TE4XH9antmUps4Of1kZibOxOv38vflf6eko4QJMRNo6G7g+h+v560T3uIvE/7C6Vmn0+nuRK/U87cVf+s1WXZ61ulSB4aDTKfTy4Pf7uj1fF3e4mByupXlpa1A8Pp014l5RJvUnDMukddXVtDp8nDL3Ex2NPZOoZYJ8H1hIyMTLTR0ujlzbCIyGSRbdWyr6z3BZtIo+ecXbfzjlNM5P+EYxibFkBhmxoONGxfdSKMj6HyXd5Zz/Q/X8+5J72JWxPDR+lpqO5xkRvf+jQBcPDkFnUqBThXPdSOv44LcC9AqtL36Q6eaU3lq9lP8WP0jLr8Lj9/Ds5ueJV4fT5JJSn09Uqm3Oftk5AyEMlsZMfqBC43tIlwvo6Zt4BHpRGMib21/CwJ+WPEUTLr+tzey9og41q6HhDEDtkHi6GRIOtKCIFQAdsAP+ERRHCsIwt+BK4BdhWZ/FUXxq8Nj4W4s+r4XKK1KBoh0uX2oFTJOG5XItjobp4yMRyYTyI82sWBUPB9tCLZBEQS4Yloarywr5+4T87h+dgbjUsIpiDcRvg+BiMrOSn6o3u08vbfzPUZEjuDLsi+RCTLun3o/Y6KlC8PvHa1Cy81jbiZWH8vX5V+THZ7NFcOu4IZFN4TW+aL8C74o/4IHpj3AVPPU/d63WWP+7ZUOEJVCxozsKMYkh+HxBbjqjXV8WdHAgtHxTM+KxOcPkBim5YN1NczJjUYpF3oJgAkCrC5vZ8HoeFaXt9Hd0xopJ8ZIRqSeG+YGhdFsTi9mbfA3urS4ibm5MZQ2d1PUYGdJcTNfbKnngvHJ5MUaewmYRRrVpFoPrCZQp1aQFqFn6y8ekK2DqJp6JCKXCSwYE09BvJnqdgexZg3Z0SY0yuBtaE1FO08vCrZla/C6ue2Dzdx5Qg53npDLxxtreeKHEr7YVMd9pw1jYpqV6nYnW2o6sLt85MQYiTAoSdqLY6JRyfEFRDbXdlDR4uDqGWm0Oz2kWQ18W9hIc0+JTYxJ02eiI0ynxOUN0OX28Zfjc/l4fS1t3R7mD4thRIKZ8AOI9JhUJipsFSyuWQzQSwyworOCPGteqJSiyxNsafjspmcJiAGuGn4VE2Mn9vuYEv3D5fPT/IvJu/fWVvPcBaO5ZmY6XS4fcRYt3xc28PzSMrRKObccm8WUjAi+3dYYEjHMjzNx/LBYuntE7dQKOc8tKWVYvAmnx88V09K4/cPNodKtUYkWTFoF8wpisbv8/PPLKi6ZLOPuEyPY0lIbcqJ3YffaqbHXEB0VR06skbKWbr7cXM/t87L5cH0tLq+fq6anMXcPxXlBEAjT7D0tN9WSygxxBi9tfYkVdSuYmTiTK4ddSZRuYIr1EoeP2g4n4brBu/eUdJSQGZY1aPuLMMrZUu0Z8H6sGisuvwv75ncwqowQtR+ijIIQFBvb+oHkSEscMEPSke5hliiKv8y9+7coio8cFmv2QUaUkSunpfHCT2WhZY+fNYpHvytme72dx84ayeKiJv63Yrea5qkj45mWaWV6ViQlzV2oFTI+Wl/LjKxI3lxVRVGDnTPGJOzTiYa+Ts6KuhVUd1bz/DHPY1abMasPnhMkMbRIMiVx69hbuazgMvQqPd2ebrQKbR9ROovacngM/BUMPSJ6J42IY01FOx+trw2998iZw7Hq1Zg0Cv4wZbdAGMC545JYuL2RilYH9y8YRnlLN0q5jMRwHRe9siYUSZqYFk5CmA6vP8CY5HDqbMHInssX4PMeRem31lRxyzFZZEXbWbqzhbFJYfxpbibxYQcmEGbWKrnrhDwuenl1KPtkYlo4w+Kl36RWqWBEooURe+lp+ummuj7Lut1+PlhXQ1FDMM2+rMXBpa+u4f2rJnHjuxspbQ5G/mQCPH72KC6cmMzfPtsWckyGJ5hp7nShVcoREPh8cx2T0q2EaVX8b0UFp4+OR62QIwjg8Ph5Z3UVM/cQEMuNNXHi8FheWVbBeROSGJcahgyBlHAdEwaQXaBT6IjURvYSIAMIU/V2cAwqAyekncDU+KmIoohF0/dzkxh8oowaLpyUzGM9Ldcg+MwdadQwJjn4HT2/pJSneiZ+vH4ff/uskEfOGM4j3xVx5phEZmZHMiY5rJdAWUG8iWmZEbQ7vFz2v7VcNiWFR84cQXlLNxqljKQwHZtqOkiyaimsD16/P95QyzUz0zGqjChkCnyB3pkyZrUZlULOVdPT+am4hS21NkqaujhnfALnT0ghI6p/E4IZYRn8Y/I/sLltmNQmVPKjewLwSKem3UlG5GAJxYlUdFYwI2HGIO0PrEYZdYNQIy0IAkmGxKASd/7p+79h0mRY8gAc9y+QMn0kDoCh7EgfERjUCq6bnc6c3Ciau9ykWnWICMhkAjIB3D4/r63s3ZLik421ZMcYsGhVZEcHBZMum5rC4uJmlHKB1y4bT7K1dzqtKIoUtRdR3F6MWqYmIyyDE9NO5IuyL4CgINSNY26UUrCOUuQyORG6CCAYpb574t38adGfQu11psdPxxvwsqV5CznWnJC42KGm2+1ja62NylYHEUY1w+LNmHUKKlu6uWZGOp9srEUpl3H6mAQqWrpRKWT85eOtjEy08N+LxlDe4sDtC7CspIVNPaJ+L/5UzrH5UdicXp75aEuvdMyVZW3cdEwE3S4fSVYtf/uskLm5Uayv3C3Uo1bIKGvp5rwJidw2L4dwvTIUJT1QJqSF89l1Uyht7saglpMbayJqD50Dib4UxJpCwku7iDZpQk70Lty+ANvqOkNONARTrp9evJN/nlzAdbMyMGmVCAKUNHWxtdbGbfOyefLHEv4wJYUVpS1sqO5gQqqV55aU9dr39bMzer22GtTcfEwWW2ptdDg8zMmJJjPKQOwAVdij9FHcNfEublp8U+g3ekzyMWRbs0PrVHdWs71tO06fk8ywTHLCcwZ0TIn+cebYBEDktRWVRBhU3D4vNzQZ1t7t5v11NX22WVvZTqxJw3trq7nvtIJQ7/NdbK3t5Ni8GAIBkZvmZrGoqIlRSWFoFDISLFpqOpzo1Aqyogy81aMlkBqhQ6eSY1Ulc8uYW3hwzYOh/V1WcDlp5jQARiRa+OTaKRQ32lEpZOTGmnp1C6jvqmdb6za6vF2km9N/9T6glCtD9xOJI5v6DicTUwenfVmTowmFTBmM+A4SYXoZnc4Abq+IWjkwR3amXwHdzZDYj6ydsBRAgIbNEDtiQMeXODoZqo60CHwnCIIIPC+K4q6mitcJgnARsBa4RRTF9l9uKAjClcCVAElJh8apNGlVTEizsr6qnb9+vJXNtTbGJYdx7ykF7Gyy71XHID5MS3FDF08tCtb0FcSbOH1UAhPTw8mN7Ru52tS8icu/uzzUzihaF80zc5/hlIxTaHO1kWRMImsQ020kDg6HanxOiZ/COye8Q0lHCW2uNra1buP6H69HJsh4YtYTzEgcvBnl/UUURT7ZUMudn2wNLZtXEM19pw6jy+3j+411zMmNwh8Q+e/SMi6alMLPPYJQG6s7UCpkiMAj3xX12m9CmJZtNZ2cNia+V9R6F3IB5uZF0e7w8Ool40iJ0HPJK6sBSAzXcvGkFF5bUcnHG2o5cXgsN87NJDViYDP4giCQE2siJ3bfom5DkcNx/dzFCSNieWdNdagtmlWvwqJVolPJcXh2RyzkgkCHo6/IV2OnmyU7mxmRYKGuw0m8WUuYTsXwBDOVrQ7uPjGX99bUsKIsWON63ng94XoVbd3BtMJIg5rj8nr3Rm3qdHHXJ1tDdbEAj589klNHxQ/4fKclTOPtE96msrMSi8pCtjWbcE0wyl3ZWck1C6+h2h7sZ62QKXjxmBcZGzN2wMc9kjmU4zPWrOVPc7I4d3wSKoU8VCJS1tzFh+tqSLBoQ32jdxFv0WLrUXKv63CFxtaeGDUK/u/L7ZS1dPPn47Lx+AJEGNXc8VGw/SWASavgjzMyeOz7Yv4yPxdjT+bOgswF5ITlUdRaRXe3nlXbNLzaVcuZYxOw6tWkRxlI30sEur6rnhsW3cD2tu1AsFvDk7OeZHri9MH7wI5yDue189eot7mwDpJqd2lHKXH63xDw6icyQcBqlFPX7iM1avfEjuD3om2rwKc24jHtR89qUeSU6q2stiYyR9aPVlqCAInjYfsXkiMtcUAMVdXuKaIojgbmA9cKgjAdeBZIB0YC9cCje9tQFMUXRFEcK4ri2MjIyENlL5Wt3Vz6yho21dgQRVhd0c4DX28nXK8i4RcporFmDdFGDavLdz+cba3t5N4vCrG7+qa4eP1eXtryUq+ewI2ORtY2rGVi7ESOTz2egogCKQXrCOBQjU+FTEGuNRedUscjax/h6/KvgWA/24fWPESHq+OgHXtfVLU5uO+r7b2WLSxsoqq1m5NGxDE6ycz7a2v4aH0tOrWcjGg9sp5Uq8npVnJiTIxLCSPWvDuya9IoGJ0cxjeFjXy8rpZpmb2jKBqljMQwHQ6Pn7QIA+0OD5tqOvi/0wowqhWcNTaR+7/eQVWbA39A5NONdTz8bdFR16pqF4fr+gmQE2Pig2sm8dwFY3jugtE8df4oHv2+iMumpvZa75i86FDEeU/m5cfwxeZ6PlhXw/vrarC5fcgE+PMHm3nyxxJWlrXhCwSjvxadkgabi2fOG83fT8rjxrmZnDk2gaq23iJRhfWdvZxogH98UUi9be+9rvuDUqYkz5rH/NT5TIqfFHKiATY0bgg50QC+gI+nNz6Nw7vvXsJHA4djfEYaNZi1Srz+AFWt3Xxf2MgryyuYnhWJbo/WbknhWrKiDejUwfjEitJW5ub2FmVSygXkgkBZS3CcPfVjCUqFjLUV7SEnGoICeQ2dLr6+YSrj9ygh0Cl1NDTFcOcbSv71sYcfCjt54Osd/FzcV4F+T7a1bgs50XB47wO/Vw7ntXNfeHwB2ro9hA1SjXRJR+mgCo3tIsLYW3DMVL2G4W+cR/rC/yPvwz+S8+lNaNqrfmUPYK5ahcXt4Hv5Ady7E8bDji/7v52EBEM0Ii2KYl3P/02CIHwMjBdFcemu9wVBeBH44nDZtzeq2hyhmehdVLQ6UMjgL/NzeHNVFRuqOhibEsbxBTFc9r81jE+1csuxWTz2fXEoau3ci1Kwx++huqu6z/L67r7KwBISe2L32Pssa3Q04vIf+nYmTo+/V2TRpFVw09ws7v1iO1trbUxOt/L8hWMoaujE4fGztLiZe0/JR6uUkxdnItqk4ZMNtZw0Io6kcB1Or58oo5p3elpXfbu9kfeumohBo2BJUTNpkXpOH53AP74o5PhhMaytbGd7j6BYuF7Fy5eMpaixC/8vJLu/3trA7fNySLYOycvj75pkqz5U1uLzB3j87FHUdzh54cIxbK61oZLL2FJr4+Vl5dx9Qh6vr6ykxe5m/rBYVAoZla0OzFolkQY1i3Y04fL6ef+qSdS0O0mx6tAoZbR1eShvdfDEjzv5YF0Np46Kx+sXeW9tNcfmRXP88N0RF7u77/W43eHB6Rl4Td+v0eLq6xjVdtXi9rvRKXUH9dgSfalq7ea5JWV8uL6GGLOGm+Zm8fGGGq6cnoYoBsUJGztdLN3ZzBmjE1ArZZi1SsYkhRFhUPPpxlqSwnWcOTaR55aUhvbr9PpRK2RU/mICB6C6zUF6VN8U2k821vZZ9sH6Gk75lSyJLk/fVn6NjkacficWLPv5KUgcaTTYXITrVXvtgX4glHSUMCNh8LMYrAYZ1a092Rg160hbeD91o8/HGZEOAT+WqpXkfnIDFTNupj1tWp/tZV4nST8/RVP+ybTXfIfD50Cn6Md1MioXOmvBVgPmhME6LYmjhCEXkRYEQS8IgnHX38CxwFZBEGL3WO00YOvetj9cGDW9H7pTrDoeO2sEAsH6y0smp/DG5eORCwJ//WQrXW4/P+5o4uedLUzPDM5emrQKUiL6thrSq/ScmXVmn+WT4iYdnJOR+N2Qbk5HJvT+mS/IWECE9uDXv9mcXuo7nHh7BLfiw7SMS9kdXTl/fDL//r6YjdUd+AIiS3e28Mi3RZS3OHhuSRlzcqKZlx/DrJyoUB/1qjYHOqUcpVzA4wtgc3o5eWQ8j5w5ApkgoFXISQrXce74JOItWu77cjutPTPyte27o4ht3R5+Lmnpky0CwRRfraofqWESBwWFXEZBvJlj8mOIMWt46scSHvu+mMVFTWREGWjtcvHAggLOGJvAmoo2XusRdDw2L5q1le1EGdWsrWynrdtNQpiWv3++jVOeXk5Fm4M7P9lKY6ebbo+fN1dVYdQoGJNk5oThsXy8voYfdzTS2OkiI9KAUt77IfS4vBhizbvHjT8gUt/hpMMxcOXZXYyMHNln2ZlZZ+5TbVni4OH1BXhmSSlvra7C7QtQ2erg/q+3c/nUNP63vIL//LCT1m4Pq8rbOGdcEpnRBsalhHNsXjQNnU6SwrXcPi+Hf56aT4vdxbSsyFCa+IgEM3aXl/EpfYXrThm59xTarL20t8qK/vVSlDRL2l7vA5HaoRE5lTg41HQ4iDQOTg9pj99NQ3fDQVFwjzLJqW71oXC2k/bD/dSPPi/oRAPI5HSkTKF6/GUk//QEsevf7N33WRRJXvI4Lksijug8YvTRVHb+evS6DzI5xI+Bnd8N3klJHDUMxZBLNPBxT59MBfCWKIrfCILwuiAIIwnWT1cAVx02C/dCRpSRc8cl8vaaas4ck8CkdCsPf1tEvS0Y+dOr5Dxx7igWF/dWaV1V3sYNczKwu7zcfWJeH5GxXRyTfAyd7k7+V/g/dAodN465kRGRUj2HxK+TY83hiVlP8NCah2h0NLIgYwEX5V+EQnbwfvqiKLKyrDVYB9jczckj47hmRjopEXruX1DA+2tr8AVE4iyaXumMADuburhsairHD4tlfEoYTXY3WpUMszaYmnb8sFhufm9jqK+0Ua3gxrmZfL65jqfPG0WSVc/8/BjO+++qUPQ71qzBalD1OVZpUzfnT0hmSrqVZT3pu4IA956ST5RREgYbSmREGrh8Wiqfbqjjj7PSeX9tDUuKmqmzuTh7bCJmrZJOpxe9WkFqhJ7LpqSQGqHnrdVVyGUyLn55Nd0eP5FGNZt7ROr2ZHV5G+eMT+TGdzeGntGmZUbwyBnDefXS8fzji0IqWro5cXgs183OCE20VLc5eHV5Be+sriLGrOGuE/OYmhGBUj6wOeqCiAIemfEIj6x9BJvbxnk553FS+kkD2qdE/7C7vHS5fHj8AT5a1zsKHBChvLWb8ycmY3d6qWlz9Cj/G4kwqDFplWyoaufPH2wJZapFGFRcMS2NjzfW8YcpKdicXiKNasqau9nRYOfK6Wm8t7YaAThrbCIF+1D5P2lEHG+vrqK9RyfArFWyYPSvR9Fyrbk8MesJHlzzIE2OJhZkLODC/AsP6n1A4vBT2+4k4gBa9O2NclsFUbqogyJUGmmSs3SHm8TlL9AZPwpHREafddyWBCqnXEfc+tcx1WygbswF+NRG4ta/gaajhuoJlwNB/aAyWxm5/RVnjBsdTO8e+4fBOCWJo4ghdxUVRbEM6OMhiqJ44WEwZ78xqBWcOyGJ9CgDXl+AwvrOkBMN0O3x89H6GoYnmHs9yJk0wQe/iWlWRiXtO9oQpYvi6hFXsyBzQVCh+RBEFCWOfJQyJTMSZzAicgQuv4sIbcRBf3ja0WDn4pfXhFo/vbumGrvLy2NnjUQQBJrtbr7d1sCtx2X32VYllyEToNPp4b21NXj9AUqbuzh1VDyT0yPYUtsRcqIhmHq7prIdj0/ktg8289l1UxmZFMZHf5xMUYMdpVxGfqyJ9VV9dAk5YXgsUSYNj501km31Ntq7vaRH6smLO7IEwo4GdGoF183KYHZOFJe+sibU3qquw8WGahvvranG4w9w0aRkNEo5gkygodPFY2eNIBAIhPqMd7t9WHR9HwRPHB7Dkz+U9Ap0/LSzhe0NdmZmR/HelRPpcvuINKpRKYJOtD8g8sqycl5eVgFAaXM3l726ho+umczIX7mW7w8ahYbjUo5jXPQ4PAEPUbqoPhFFiYPHmvI2/vXVdnY2dXHbcVlEm9VUt/Wui7f2CNVlxxjJjDIQpldz03sbWVHayn2nDePHHU29yr1aujxUtTkIiCL/XriT5y4YzWPfFXPqqHgWbm8k0qjmlJHxiKKI1x/Ya7YMBFuyfXjNZArrOhERyY01kbGXFPA9ORz3AYnDT027g3D9IAmN2UqJ08f+9ooHQLhBRpvdh6ZqE3Wzb9znej6tmapJ1xBWuYKkn59E5nPTFVNA9YQrEBXB84w1xFLSXgKp+9zN3okfDaueAa8TlAPryiBxdCFdSQeR3FgTDo+PJ37YSZxFh0Gt4Ji8aNQKGT/saKKspZsZWZG9HOnLpqbyr692MCUjgknpv+4cC4JA9EEQepD4/XMo+8+WNHeFnOhdfL21gVuPdXLXJ1tYUdoGwJKiZo7Lj+bbbY2h9S6flopcJrC+qoOfdrZQ1ebgsqmp/Li9kWijmvLmvrWEte1OooxqCus7KW/pJiVCT06MiZyY3Q6xXqPgtnnZPLOoFJkMbpyTxaT0YEuQaLOGaLMUgR7KeH0B3L4A7d2ekBMtCDA9K5IHv9kRWu+x73dy5/E5dDg8NNndfLOtgTvm7Y5M+PwiSeE6Ys2a0ESnWiFjbHI4D3zTWw0eoLVHQdysU2H+hWBPU6eLt1f31q4IiFDc2DVgR3oX4doD71UtcWDsbLRz4curcHmD4+zBb4q4fX4Of/tsW2iipSDeRLPdzTtrqpmdE2ynNyHVyjdbGzhvfBJfbq6juatvqn9dh4sIg5rGTjdrKtp484oJdDi8jEgwc8fHW3hzZSWnjYrnulkZoQmbvZEWaSDtAHoDS33Ijy4qWh2hsqiBUtxWRIq5v97p/qGQCcTIO1gffyJRit+wVyanPXUq7alT9/p2nCGOxdWLERER6EdtuNoI4elQ/hNkHbv/20kc9UiO9CCilMtICNNy8eRUHG4fKVY9H6yrxun1c9qoeJLDdRQ12rn5mCw8/gBhOiXNdhdNdjdJ4ZKAjMTvA5O672XF0pN6u8uJBlhc3Mzxw2L491kjqG53kBFlxB8QeXpRCc12N8flx2DSKogyavh4Qw2fb6rnxmOyeHdt7/6tM7IjeW15BQAGzd4vaREGNdfMSOe0UfEICMRIjvMRQ2lTF88tKeW7wkZunJsZWp5q1bO9vrPXuhdMSKKm3ckXm+uJMKg5c2wCjXY3txyTQZRZi16p4L8/lYXaBWmUMobFm4nQK5mRGdmr9EYmBPtI7wu1Uk60WU1FS28lbaNWuq0eyZQ2d4WcaAhmk/1veQXPnDeaitZuvH6RpHAtP25v4uSRcXy2sQ69WkFunInzJyRh0an4aEMtf5iayurytl77Hplo5qlFzUQYVIxJDufq19dR2tLNicNi+e+FY9FrFETtkfUgITEQatqdod7nA0Ok1FbGlPgpg7CvvqjsDSSJ9WzWjmYuA9OaMKnMiCK0OFv6rwEQPxqKvpIcaYl+Id3xB4jb66eo0U6Xy0tZi4Mmu4t311Rz7ayMXv1uX1haxu3zsvl4fW1ICXZ8ajhKuYBFp2RewX70yZOQOALIiTUxMS2clWW7HyLvOTGPML0KrVKO07tb8firLQ1kRxtJidAjF+C6dzawS0T7rdVVXDI5hTdXVVDaHHRWFm4POlMv/VSOxx/gjDEJhOuUXDAxmZp2J2kRerbU2qho6SbCoCI31oSlJ5IoCEIvkSiJoU+n08sdH21hTUVwLG2ptTEmOYx1le3YnN5ebV2SwnX4RZE3VgSFZlq7Pfzrq+08ee5oIowa3J4Ad360EV9AZGNPVtBpo+KQCQIjEiyMSg5DEAQWFzcRa9JwyZRU3N5AX6N6CNeruPuEPC5/bW0oUpkbYxykB1eJw8XeFI4bO93EWTQoFTLu/HgLp41KID5Mx7O7FLjtbv75xXYeOH0YzXY3Tq+fqlYHF05M5oN1NciEYPZZYX0nXr/IZVNTuendjaHsijdWVdFsd3PfacMkJ1pi0KhpdxA5CDXSDd2NyGVyTKqDU/YUXrKYSFMapZ2aATvSApBgjGdn+84DcKTHwaL7gmJmv+yvKCGxDyRH+gCx9Si0/rSzmc01NnJiTdz1yVaun52BUi5jQ1VHn22+2FzP+LRwftjehFIucNmUFJxeP38/yUzmXpQ4JSSORKJNGv599ki21Nho7faQEWlgWIIJtULObfOyuffzwtC6U9KttDs9FKhNlLc4+EUnKj5aX8PpYxIoba4AYHFRMyWNXdy/oIAttZ18X9jIm6uqOC4vmqtmprG9vpOLXllNT7tgzhqbwF+Pzw050wDdLh8un/9Xo40SQ4OadkfIiQb4aH0tZ49L5MKJSZS3OMiJNfLF5jraHV5mZkfy6ca6XtsHRKjrcPLfn8q4ZEoqvl8MsC83NxBj0uLw+Kls6cLu8vLHmRm0dLl56sedvHHZhF+1b1pmJB9dM5niBjtGrZJhCWYSwqTsoiMZrVIemqzZxcWTU1ArZMzNjSbGpKHD4eEfXxT22XZrjY0xKWGcPjqBD9bVkBSu48JJyaRF6NGp5EQY1cwviMXrD4Sc6F18t72Rc8cnMTNn8FWRJY4+3D4/bd2eQbnPlXTsJNFwcNpCyT1dGOq3YE0Zy5qWwREyi9XHUdxezOS4yf3b0JIEiNBUCNH5g2KLxO8fyZHuJzanh4WFjTz5YwlymcAlk1PwBQKhOk+NUkbXPgRtYkwaThsVx6hEC9OzIimIMyMbpP5+EhJDiVizllizFp8/2KJKEAQEQeC0UXGYtUoabC5kMoEOh4esaCNFjV14fX2jf+F6FR2O3v3Z3b4AK8vbeWNlZWjZd9sbyYwxsrCwkUsnp/LSz+UAvLe2hgWjE5iYZiUQEFlV3sqj3xVT0+7kvAlJnDEmgTiLFKUeqmiUctQKWS+n49011czMisTh8dPe7eGfpxbQYndj0SlZVtLSS+AJwBcI0NTlxuPr2/s5TK/E5vTyXWEjL1w0hge+2sHTi0qINql59KwR5P6G8JxKIWNUUtivCkVKHFmIQEaUgRlZkbi8fgxqBctKmom3qGm0u/nPwp1MTA0n2qShuLF3f+YYs5a/fbqNCWlWbj02m263j7RIPYuLmthYbeP+BQVsqOrY62SLUaOguNHO5EwrKrkUlZYYGLXtTiIN6kHpIV3ctpNY/d7bsQ0Uc+UqnNZUos0yKkoVgxIMTjIl8nX51/3fUBAgYRwUfSM50hL7jeRI95Plpa3c8v7m0Ou7P93GP07Jx+EJPuh5fCKT0qyE61WE6ZShFhUquYzzJiTx7++LuOekfIYnWA6H+RISh4zSpi5eXV7O94VNjE62cO2sDPLjgn1TH/2+GH9PdHByuhWPL8CopDCSwnVUtQXTuAUB/nxcNs/vSp/s4ca5mTz8XW9hKINKgcvrZ0eDnWPyolHJZSHBs/buYPbItvpOLnxpdSgq+dj3xTi9Pv58bI40oTVESbbquXFuJg/uIQQ2NzcKEXh3bRVnjknklWXliAQnMe85MY+/frw1lGqdGK6lw+FFFKHd4SU90kBp827n56JJKTy/pJSCeBMaRbBFYWOnC51KTtQgifRIHFnkxJh4elEJ766pRiYEsxqumZGOwxPgslfX4guIbKju4N6T8llZ1orXHxxsVr2KKGOwzd73hY18X9iIXCYwJjmMsclhDEuwcM+n29Cq5NwxL4eRiRY2VneEjnvxpBSq2x0oJHV2iUGgsm3whMZ2dhQzP/X4QdlXL8QAlorltGbOwaQKICLQ5pJh1e67pGZ/iNRF0emx0+HuwKK29G/j+LFQ+DFMv2VANkgcPUiOdD8QRZE3V/Zt9P7TzhamZ0ZgVCvYUNVOfpwZpVzg7yfn09LlptvtJ8Wq5x+fb+PvJ+czNllSYpX4fWNzerjtw82h9MivtjSwpryd96+eyFurqkNONECny0u8RcvLy8q5fGoqWpUcl9dPbqyJWdmRmDRKNtV0YHf5SLbqGJloJjlcR4djt/r9hZOS+XhDsNdrW7cHg0ZBW7cHuUwgpac3e1GDvU9q72vLK7loYgqxUlR6SCKXCZw/IYlh8RZ2NtmJt2gZkWimvKWbSIOGug5nqBzAqlfTYHNz23HZ2JxeYs1a6jqcoeyE11ZUcOmUVK6YlkplqwOjRsGXW+pxePzMzY3hvBdX8NIl436zlZDE75tIo5r/O6WAb7Y1YHP6CNMpWVLczPjU8ND1QxTh2SWl/PnYbHwBEZfPj0WrpKjR3mtf/oBImE5FjFnNPZ/uTgW/+JU1vH3FBNZWtmN3+bBolSwpbuL2ebnSpJ7EoFDd5iDCOPC07k6PDZunk0jd4Ldc1TcVISrUeAxRCEC8wUdJuxKr1v2b2/4aMgSSjElsb9vOpNhJ/ds4ZhgsfQi6msAglVlI/DaSI90PgmJFfWf4CuJM+AMi958+jIYOFzFmDTe8uxGFTMAXEInQqzh3QhKVbU7WVrQzK0dqYSXx+6aq1dGrxhCguctNZauDKJO61wPn1tpOrpyWzqIdzTy/tAxBCKp8P372SEqbHYxPDScz2oDT4yfarEGnUvDQGcPZVGOjps2BWilncVFTqJ1ReqSetm4P0SY1/zptGFkxQcdIp+qbLmnRqVAppAjQUMakVTE1M4Kpmbsf5AxqJVfNSKOx08XXWxsAmJUdxWsrKmh3eFHJZQxPMJNs1YWcn4AIzXYXRrUCvUqBQaNgakYEJw6P5eVl5dS0O1la3EykQY1GJUctiT4dtaRE6Gmxu3l7TXWorGByT7u8XdTbXCzc0cjZ4xKpaHVg1irJjjHyzurqUN9ytULG6aPj+c8PO/sc44vNdUxOj6Dd4UUURe4+MZ98qYe9xCBR1txF1CA40jvbS0gwJCBj8O+TlopldEXnhl7HGnzsbFcyIW5gjjRAkimJLS1b++9Iy5XBqHTRVzDmkgHbIfH7R3Kk+8l5E5L4bFNd6OY6MTUcty/A33sElNQKgYfOGMHzF4xmY00Hoiggl8FzPempYXrVPvctIfF7Qa2UI5cJvSLPAB5/gD/OTGd5aWvoPYtOicfr58a5mbh8fvQqBW5fgOvf3kCny8d9pxVw9thEFPLdN/LsGBORRjXvralmbWU7ayvb0ankXDAxmYQwLQtvnoFRo+iV2lYQbybFqqOidXe7ojtPyJVEx45A9GoFZ41NpKwpWFv//NIyutw+zNpgOY3HH6Cly80ZYxJIiQhOrITpVFgNKl5fUcms7CgcHg+vLq8MXcsvmJhMfaeLU55eRnqkgWtnZTA6Wap9PhpRyGVcMiWVRrubr7c2YFAryI8zkRSuparNCQT1G04fncBtH2wJXcuun5XOCxeOYXVFOwFRJCfGxJaajr1qpijlcho7XVw8OXVQ6lglJPaktLmb8akDz34saisizjD49dEKZwfatnLaU3a31Io3+NjRNjjPyKnmVN7Z8TYBRGT96ScNwTrpws8kR1piv5Ac6X4yMtHCB9dMZlVZKy12N3nxJv709sbQ+26fyF8/2sItx2aRG2Pmlvc3hnpSmrXKXlEVCYnfKylWHVdOT+PZxbvrmyelW/lkQy1XzUjnw6sns76qHa1SxpiUcOLMGuptLhweH+e8sKpXi6x7PytkfEp4H2V7i1ZFh9OLzenl2lkZeHwBvtpSz+R0KxlRhj42JYXrePXS8ayrbKely83IRAsjEi0H7TOQOPikRRm4cW4Wp49JIBAQKW60c9Ub6wE4cUQc93y6DW8ggE4px+H1IwAvXTyO7BgDi4uaQ050bqwRh8fHGyuD5QEVrQ6Wl7byybVTyI6RUr2PRlIi9Dx21khuPdaJSiEjMVxHepSBdZUdtHa5GZsSxuX/W9trsvDJRaUoFXKeXVyKIASFEf98XDZzc6NZVdYWyo4waRTMzY2iIN4sOdESB4WKlm5OGRk/4P0Ute9gesL0QbCoN+bKlTgiMhHluyeZEow+Pi/VD4rgWJjagkqmoqqzihRTcv82ThgHq54Blw00UjtDiV9HcqT7iSAIDIs3kx9rYllpMw02NzOyIllR2orHH8CgVjAxLRyNUs5D327nlmOyae12kxCmY3xKeCjNVELi90xAhPPHJ2HVq6hodRBpUFFnC/ZYH5UUxuXT0hiZZOm1TaYmqLqcH2ciXK9iVXkbNmcwutju6NtbUiYTOHd8ElVtDp5eVIJaIePmuVmM+sV+9yQlQk9KhH6Qz1bicCKTCcSYNAQAq0HN59dNZnlpK3EWXUhwbleqrUhQaTvOomN2TjSXTO7i9ZWVzM6O4oWfynrt1+n1s7PRLjnSRzFalZz0PSblUiMMxFu0eP0iNe2OkJjonnj8ATz+AKkRerKijexsDPaOvm1eNm5fAItWxfjUMLJjpDRuiYODxxegsdNN9ABTux2+bpocTcToYwbJsh4CfiyVK2nOnd9rsUUdvF43OuTE6Pt2WegvaZY0NjRt6L8jrdIFa6WLvoERZw/YDonfN5IjfYC4fH5cXpG3V1chinDzMVk0293o1HJ+2N7EV1sauGhSCq8sq2BMkoVbj83ulZoqIfF7xO31s7y0lWeXlODxBTh+WCy17Q7eXl0Vitzo1XuvPRVFEYFgLXNVm4NzxydSb3OxtLiZ+H2IgSVb9Tx65khuOsaBSi4jMUwnifUcRbi9flaWt7J4RzMxZg1fbqlHp5Jzzcx00iL0hOtVtHXvnoQxqBXEhwXHUoxZw53H53LRpGTcPj9vrKrq0zpLqp+X2IUoiqyvauf5JWWh69NlU1N46eeK0DpymYBKLuOmuZlUtTnYVGNjbHIYf5iahFWvDo09CYmDSWVrN1Em9YCfOXe27yTOEI9CGFxXwdCwFZ/GhFfXW3dAECDJ5GNHq3JQHOkMSwZLapZyWsap/d84aTJsfV9ypCV+E8mRPkBWlbdxxWtrQ6/LW7u5ZkY693+9I7RsRVkrtx6bxeikMMmJljgqWFfZzqWvrgm93lht47bjsvm5pAU/wbrCfanWF9Z3cumra0Lptjsa7Fw2NZWXLx5H/F76ru5Cq5KTKSktH5VsqO7gytfWcd3sjF7X3pVlbbx75USeu2A0N727idoOJzEmDY+cNSKk4g6gVMhIiwxGHG+fl81fP94aei89Qk+eJP4k0cP2+k7Oe3FV6Pr0t88KuWluJlMzrPxc0kqYTsnfT85nW52NJUUtIUHFkqYuNlV38PrlEw6n+RJHESVNXcQNQieKHW07iDcMPD38l4SXLaUrJm+v7yUYfGxtUTEzyTXg48QbE7C5bTQ4GonR9VPkN3EirH4BHG2gkzrtSOwbyZE+QN5d3bsN1oysSN76xTJ/QMQfgLEp0o9Q4ujg8831fZb9VNLC/51SgMvnZ2JaRJ9a510U1nWGHlJ38eH6Gq6annZQbJU48vl6az3jU8NZtKOpz3vfbmvgnpPy+fjaybR2uQnXq3+1r+rJI+JIDNOxsryNxDAtE9OsJPzKBI7E0UVhvb3P9enlZRV8eu0UnF4/Jo2S+DAtZq2SF5aW91pve4Od8pZuIiRhQ4lDwM6mLmIHoYf0tpZtzEycOXCD9kBtq0HZ3Yoj+7i9vp9q9vJ1+eCUX8kQyA7PZnX9ak5OP6l/G6t0ED8aCj+BsX8YFHskfp9IjvQBYtb2VuF0eQPo99ZeR6uUxEQkjhpM2r6XFItWyZljE38z5XpvabR6lQKF9PuR2AcmtRKX1492L9degyY4FqOMGqKMv/1QadAomZYVybSsyEG3U+LIR7WXrDK9So5Ro+iluxC+j84cSikrTeIQUVjfSXpkX8HN/tDl6aLZ2Tzo9dHhJYvoii0AYe+/h3ijj/ouOV0eAYNK3Os6/SE3PIeFVQs5Kf1EhP6qd6fOgA1vSI60xK8iXdkPkLPGJaGU7/5RLitp5o+zMnqtY9IqGJcqtU+ROHo4viAW9R4OsVwmcMnklP2qWx4WbybyFxGb2+ZlEy5FcST2wTH50WyrszE7J4o9h5hGKeOY3H6m8klI/ArD4oMt9/bkz/Oy+7TPS4vQc9KI2F7L5hfEkB4piRxKHBqKG+wkDrAef3tbIUmmJOTC3jVNDgSFoxV90w66onL3vY4Mks3B9O7BIM4Qj8fvpcJW0f+N48dAewU0Fw+KLRK/T4ZkRFoQhArADvgBnyiKYwVBCAfeBVKACuAsURTbD5eNoxItvH/VZBYVBVMKZ+VEkh1l5J0rJ7JoRxPhehXTsyIlZU6Jo4rhCWbev3oSi4ua8foDzMyOZESCZb+2TYs08NYVE1i6s5n6DhczsyMZlSRNREnsm+EJFt69chLrqtp5/OyRbKvrxKBRMDMrimEJUtsSicEjNdLAW5fvvj7NyI5k9F6uTwaNkjuPz2NOTjQbqtsZlWhhQqoVo6ZvL2kJicHG5fVT2+EccI301patJBqSBsmqIBHFP9AVnU9A8euT46lmL+sb1EyMcw/4mAJQYM1ncc1iUs2p/dtYpoD02bD2ZZj/wIBtkfh9MiQd6R5miaLYssfrO4AfRFF8QBCEO3pe3354TAu2XBmZZOnTwmdimpWJada9byQh8TtHEASGJ1gYvp/O8y/JjDbus4ZaQmJvDEuwMKxnvJ08CH1TJST2xf5en2LMGk4dFc+po6TxKHFoKWqwE2/RDrCUQGRr6zZOyzht0OxSOFox1G+iYeS5v7luZpiHD4uNQOegHLsgYhivbHuFc3LORSvvZ+145nHw1a0w555g3bSExC84klK7TwH+1/P3/4BTD58pEhISEhISEhISEkOHrXU2kq0Dc/jqu+vxB/xEaAcvKBS5/Wu6YobhV/62Ixtn8GP3CDR0D05auVFlINmUzPLaZQewcQxE58OmtwbFFonfH0PVkRaB7wRBWCcIwpU9y6JFUawH6Pk/am8bCoJwpSAIawVBWNvc3HyIzJWQ2D+k8SkxlJHGp8RQRhqfEkOVoTI2N1R29BK/OxA2N28h3ZLWf3GufaBpr0TfspPOuBH7tb5MgJxwLyvrBq48vovR0aP5tuI7AhyAgFnuSbDsCfD7Bs0eid8PQ9WRniKK4mhgPnCtIAjT93dDURRfEEVxrCiKYyMjB1d91esLsKOhkxWlLVS1OQZ13xJHBwdzfA5FKlq7WVHaws5GOz5/4Lc3kDisHO7x2eHwsL6qnfWV7XQ4PIf8+BJDm0M9Phs7Xawub2VLjQ2HW3qIltg3h/vauYsN1e1kDFCxe0PThv7XE+8LMUDMpg/oSJqAKN9/nYA8q4efqgfPkU4wJKCSKdnQtKH/G0cXgMYMWz8YNHskfj8MyRppURTrev5vEgThY2A80CgIQqwoivWCIMQCfRuHHkRcXh9vrarmvq+24w+ImLQKXrhwrFQPLSGxDxYXNXHtm+vp9vhRyWX836kFnDoqfq9triQkqlod/OXjzSwraQVgQmo4D50xnGSrpHYscejZUd/JFa+vpbrNCcAFE5O5cU4mEUapi4DE0MTm8FJvc5E0gNRuh6+bys4KTkg9YVBsCi9dREAmpzsis1/bZYZ7+KDYQItTRoR24JPwAjA+djyflX7G6KhR/Y+2jzgHfrwP8heAYnAUxSV+Hwy5J1pBEPSCIBh3/Q0cC2wFPgMu7lntYuDTQ2lXUUMX//iiEH8gmBbS6fRx6/ubaLK7DqUZEhJHBDXtDm58dyPdHj8AHn+AOz7aTGlz12G2TGKosnB7Y8iJBlhV3sa32xoPo0USRytur58nftgZcqIB3lhZyeaajsNnlITEb7Cmoo2saCMK2YE/2m9q3kyyKRlVP6LH+0JtqyG8ZDHt6TNA6J/jqpRBfoSbRZUDUx/fk4ywTFw+F5ubt/R/45jhwXrp1c8Pmj0Svw+GnCMNRAM/C4KwCVgNfCmK4jfAA8AxgiDsBI7peX3IqOtw9llW0+6krUtKP5SQ+CUtXR46HN5eywIiNNikiSeJvbO0uG9d4aIdkiMtcejpcHpZXtbaZ3lZS/dhsEZCYv/4uaSFrOiBpXWvaVhDhiVjwLbIvE7i1rxGe8pkfOoD68QxOtrN1+V6xAMoa96rTQhMjp3EB8UfHFit9Ng/wNJHwFY7OAZJ/C4Yco60KIploiiO6PmXL4rifT3LW0VRnCOKYmbP/22H0q699eRLCNNiNUgpHhISvyTCoCJM13tGWy4TiDEPXs2TxO+LGdl96wpn5UQfBkskjnYsOiWT0/uWbaVFSmUGEkOXJcXNB9x6EsDld7KjdfvAHWkxQOy6N3Cb4nD0M6V7T1JMQV2CDU2D95ydFZ6NiMjKuhX939icADknwOd/YtC8e4kjniHnSA9VsmIM/P2kPBSyYHqKRafk0TNHEGmUHAMJiV+SEKbj8bNHYlAHZRjUChkPLBhG+gBFUCR+v8zJjWZqxm7nZVKalePyJUda4tCjVsj505xMksJ3T6BfPCmZEQNwUiQkDiYVLd10ODykDkBTYkPjBhKMiWgVA0mnFonc+ikKTzftqZMHsJ9gNvjkeCfvbj+wiPZe9wnMTJzJ+8Uf4PK7+7+DgjOgowrW/HfQbJI4shmSYmNDEa1SwfkTk5mcHkGbw0NCmJaEMKk5u4TEvpiRHcWXf5pKvc2F1aAiLcKAXDY47TQkfn8khet4+vzRlDUH02fTIvSYdVLGj8ThISfGxAdXT6ayzYFWKSctUo9OJT0ySQxNvtpSz7iUcGQDuMf+XPszudbcAdkRXrIIQ9MOmvJPBmHgsbpRUW4WVerY3KxieOTglFImGOJJNCbwScnHnJN9Tv82lith2i3wzR0QOxISxw2KTRJHLlJEuh8o5TKyYoxMTLNKTrSExH6QbNUzMc1KZpRRcqIlfhOzVsWopDBGJYVJTrTEYSfKpGFcSjgF8WbJiZYYsoiiyPtra5icHnHA+2h1tlDZWUnmANK6zRUrCCv/ieac4wkoBkfdXiGDY1O7eXaDmcHsoDkjYSbLapdTaivr/8ameJh0Pbx7HrRXDJ5REkckkiP9KwQCImXNXWyq7qDFfgApIBISv3O6PT4K62xsr7fh8Eh9ViWGDs12FxurOyhv7kKU6tkkBgGvP0BJk53N1R20d0tCoxJDg2UlrQQQByQ0tqRmCXnWPJSyA1PrNlWvJbLoW5pyT8SvHlwtgRGRHlRykXd2DF5pmF6pY27SHJ7f9DxO/wGIoCaOD7bC+t8pYJdEMY9mpCnWfeD0+vh4fS3/+KIQlzdAslXHU+eOZliC+XCbJiExJKhpd/DA1zv4YnM9AKeOjOO2eTl7FeaTkDiUbKru4Nq31lPT7kSrlHPvKfmcMiIOtVJ+uE2TOELpdHp5Y2Ul/15YjNcvkhtr4vGzR5IdM3j1mxIS/UUURR77voj5BbEI/WwxtQtvwMOS6iWcnX32AW1vql5LVOHnNOWeiE8z+M/IggALsrp4ZoOZ7HAvY2MGJ7CVHZ5Npb2KFze/yHWjrkPW397SOSeCpwtePQEu/QoMUYNil8SRhRSR3gdF9Xb++vFWXN5gLkllq4M7P9mMzSnNQktIACzc3hRyogE+2VjHoh1Nh9EiCQlo7/Zw24ebqWkPtix0ev3c9sFmihrth9kyiSOZLbU2Hvq2CK8/mN2wvb6Tfy8sxuWVMnEkDh8frq+l3eFlWsaBp3Uvq11GtD4Gq7avUv1vYa5a1eNEn4BXF3bANvwWFnWA83LtPLgqjHUNg5M2DjA7aTatzhbe2fEO4oG0xBp+DiRNhJePA1vNoNklceQgOdL7oKqtb9/ozTWdtNglR1pCAuDbrfV9ln1fKKU4SRxemrvcFDX0dZqr2xyHwRqJ3wtVexk/i4uaaOv2HgZrJCRgXWU7//yikKumpx2wyJgv4OXzsi+YGDuh39tayn8iYsc3NOWdhFcXfkDH7w8pZh/n53Xy4CoLb283DErNtEKQc2rGqWxp3sy7Re8eWH/p4WdD+mx46Rho2jFwoySOKCRHeh9Em/rOeCWFa7HoDqx+RELi98behE0m7qX3qoTEocSiVRK7l37l0SapVaHEgROzlzE1IsGCSSNVyEkcWnz+AK+vqOAPr67h6hlpJA+g5dXCyoVEaK3EG+L7sZVIROGXhJcsoSn/ZLxaywEfv7+kmn38cZSNFbUarvk+ktX16gG3dNYqtJyVfRaFrYU8s/FpnL6+gbTfJO9UGHEuvHo8VPw8MIMkjigkR3of5MYauXJ6Wui1VinnwdOHYzUMXkqJhMSRzPHDY8mJ2S3+kR9r4tg8qe+vxOElyqTh4TOGo1Huvr1dOyuDHKmWVWIADIszc/ro3c6GWavkL8fnYNBIk+sSh4a2bg8vLi1l5iOLeXdNNXcen8vIxANPp251tvBl+VfMTJi539sIfg9xa1/H0LSdpoJT8KkP/XU1TBPgD8M6mZHg5NkNZq79PoKfazQEBuBQaxVazso6G1EUuWvZ3Wxp2dL/naTNgqk3wbsXwtpXD9wYiSMK4fesZjp27Fhx7dq1B7x9t9vHziY7HQ4vSeE60iIHTzFQ4ohnwL2cBjo+hwJNnS5KmrsQgIwoA5FGKeo3RDiqx6coipS1dFPV6sBqUJERaUCnliKHQ4gjcnx2Or3sbLLT7faTYtWRNIBIoMSQZkDjc7DHZnGjnWcWlbBwexOjk8OYkxNFVvTAHFi/6OPB1Q8Rb4jf77RuVVcT8WtexaMNoz1tGqLs8F9TAyJsb1WxuFqLKMIfhtmZGOfiAHXXACi3lbOw6gfiDLEsyFhAqjm1fzuw1cLif0HKVDj+EVANertcqZfoEOLw/wqGMHq1YkCzfRISv3eiTBqipJRZiSGGIAikRxpIlyY/JQYRk1bJmOSDXwsqIQFQ2drNQ9/sYHlpK8flx/DYWSMwDkIGhEiA17a9hojI+Nhxv71BwE9Y2U9YSxZiSxxPV1QuA/JUBxGZAPkRHvKsHra3qnhxs4n3i/RcM6qTzLAD0y9INadyacGlbG7axH82PEGULopZiTMZGTUKrXw/nnfM8XD8w7DqeXhuCpz2fLBdlsTvEsmRlpCQkJCQkJCQkBgCtHa5efLHEj7eUMtx+dE8dtZINIPUus/jd/PqtlepsddwRtYZyH6twlMMYKgVolxNAAAW4ElEQVTfQuSOr/ErtTQWnHZQ2lsNBoIAeREecqwe1jSoueuncMbFuLm4oJNIXf9VyRSCnNHRoxkRNYLi9p38WLWI/217jURjAknGJMK14ciR4w64sXu6sLltdHu78Aa8KAQlFo2ZhPgsRlriiHv7HITMY2HWnWBJPAhnL3E4kRxpCQkJCQkJCQkJicNIWXMXb6ys5IN1NUxKt/LAgmFYdKpB2bdf9LOhcT3vF39AtD6KM7POQiXfW3Q7gMrWgLF+M+bqNQSUWmyJ43BakoZMFPrXkAkwIdbN8EgPS6u1XP1dFNMTnJyS2U2Kuf+t6uSCnNzwHHLDc3D7PdR31dHsbKHGXkNADCCXKdDKtcTqY9AqtChkCnwBH3ZvF1W2KlZ019Ft1nBO7XJGPT0Ob+p0dOOuQEidDgpJc+n3gORIS0hISEhISEhISBxkbE4vm2s6cHj8dDg81Ha42FHfyaryNmxOL1MzIrj12GysBjUBMSgwtr+IBKjsrMDpdeH2u7B7u2lztVJjr6aivYw81EwPSyeGSLzlm/H7PSh8LhTublQuGxpHK5ruNgJyOd3GOJqiJ+La1dbK1nmQPpGDx5iwDrINclY3Wbj6uyg0cj8F4XZSjQ4iNR5MKh8aeYA0kwOTav+c7BhBRYwubt8riIAgJ1alBpUVLNm4/S6q7FWs11eQXPsT40q/J9IfoFVrosOShMeSAMYYBG04Mo2JWHMKxtRZcAjV0CUOnN+12JggCM1A5X6sGgG0HGRzBsJQtw+Gvo2DbV+LKIrzBrKDfozPPTncn/PhPL507vvP4RqfB4vD/d3vDcmm/eeXdg3G+LQDRQOy6shhqH6vB4OhcK4DGp+/du0Mm3NFnGnsKbF7e8/vtPsG0stJkIkyuV6211xtlShiCuxfivMgtGcecgQQaGfvaemnyxdyh+rVQ2eMDIwBEc2vfNePrnDX3fqdu34fbw/4+ikxePyuHen9RRCEtaIojj3cduyLoW4fDH0bh7p9+8vhPo/DeXzp3I/88XugDMXzl2zafw6GXUP1XA8G0rlK7A9D8bMbajYNNXtgaNoksf9IfaQlJCQkJCQkJCQkJCQkJPqB5EhLSEhISEhISEhISEhISPQDyZEO8sLhNuA3GOr2wdC3cajbt78c7vM4nMeXzv3oZSiev2TT/nMw7Bqq53owkM5VYn8Yip/dULNpqNkDQ9Mmif1EqpGWkJCQkJCQkJCQkJCQkOgHUkRaQkJCQkJCQkJCQkJCQqIfHFWOtCAIGkEQVguCsEkQhG2CINzbszxcEITvBUHY2fN/2GG2Uy4IwgZBEL4YovZVCIKwRRCEjYIgrB1qNgqCYBEE4QNBEHYIgrBdEIRJQ8m+vSEIwsuCIDQJgrB1j2UP95zDZkEQPhYEwbKPbft8H4N0/L8LglDbs9+NgiAcv49t5wmCUCQIQokgCHcM0rHf3eO4FYIgbNzHtgM6d0EQEgVBWNQzTrYJgnBDz/L9Gi+DcO77Ov4h++4PN/v4/kcKgrBy13kJgjB+j/f+0vN5FwmCcNxBsqnf4+Iw27XP8XKw7dqXTXu8f6sgCKIgCBG/ZtNgfuaCIIzp+V2UCILwhCAIwmCf92Ag9ONefySfq9DPe/KRfK6Hir1d+3/tMz1ENg2pZy9BELKF3c8RGwVB6BQE4cYh8Dnd1HON2yoIwttC0DcZ0s+oEr+CKIpHzT9AAAw9fyuBVcBE4CHgjp7ldwAPHmY7bwbeAr7oeT3U7KsAIn6xbMjYCPwPuLznbxVgGUr27cPm6cBoYOsey44FFD1/P7gvm/f2fQzS8f8O3Pob28mBUiCt57PeBOQN9Ni/eP9R4J6Dce5ALDC6528jUAzk7c94GaRz39fxD9l3f7j/7WPsfQfM7/n7eGBxz995PZ+zGkjt+fzlB8Gmfo2LIWDXXsfLobBrXzb1vE4EviXYUzfi12wazM8cWA1MInjP/3rXWBpq/9jPe/2Rfq704558pJ/rIfxMKxhiz2H9+Z4Pw+clBxqA5MNpExAPlAPantfvAZcMlc9J+tf/f0dVRFoM0tXzUtnzTwROIXgBoOf/Uw+9dUEEQUgATgD+u8fiIWPfrzAkbBQEwUTwwfwlAFEUPaIodgwV+/aFKIpLgbZfLPtOFEVfz8uVQMKhPP5+Mh4oEUWxTBRFD/AOwc96UI7dE3E4C3j7AGzbn2PXi6K4vudvO7Cd4I1uf8bLYJz7Xo9/KL/7w80+vn8RMPX8bQbqev4+BXhHFEW3KIrlQAnB72GwbervuDisdv3KeDnodv3KZwXwb+A2gt/nLvZq02B95oIgxAImURRXiKIoAq8xxK730O97/RF7rgdwTz5iz3UIcNiec46AZ685QKkoipVDwCYFoBUEQQHoCN7fDrdNEgfIUeVIQyiVaiPQBHwviuIqIFoUxXoIPhQAUYfRxMcJPngE9lg2lOyD4EPRd4IgrBME4cqeZUPFxjSgGXilJ2Xuv4Ig6P+/vXOPtqq67vD3qxKsmviqJr7SS1CxGhSDMT5QqRCilmK1GrA+h9ZWTdKI1VYHDocmccRUW42lipVQjFoaMYmPmBgTFF8RRXldRJQqJCCKmmFR4gth9o81j3dzOI977j337n248xvjjLvPPGuvNdfec8/12HOtWyD9uspZpBn4SlS6H83i60rholOqhBrtCizPfF9BRye6GRwOrDKzJVV+b1rdJbUBB5AiVTpjL02te1n5WfK693lyAXCNpOXAtcClLu9pe9uITtpF3nplydpLr+qV1UnSGOAVM5tflqyuTt285rv6cdX8C8L1dL6tb+W6Ntomt3Jde5Oi9cOK3vcaR8eEfG46mdkrpDbtd8CrwGozezBPnYLu0ecG0ma2zsyGkGbsD5L0+ZxV+hhJo4HXzezZvHWpw2Fm9gXgGOBrko7IW6EMm5PCRG8yswOAP5DCZFoWSROAj4A7qiTpqftxEzAQGEJy+P9aSb0Ksmb+K4CTqf02uil1l7Q18GPgAjN7u7OnVZB1qe7Vys/x3ufNecB4M9sdGI+/5aDn7W0DGrCLQuhVwV56Ta+sTq7DBODySklr6dSEa96r96IrdKGtb9m60nib3Mp17U2K5vsL2/eS9AlgDDC9ALpsR3r7PADYBdhK0qn5ahV0hz43kC7hISczgaOBVR42hP99PSe1DgPGSFpGChM9StLtBdIPADNb6X9fB35KChUsio4rgBUeaQBwF8m5F0W/hpB0BjAaOMXD2Taiyv3oNma2yiee1gO3VMl3BWkdZInd6AjD7RYe9nQC8KMaOna77pL6kTrud5jZT1zcGXtpSt2rlJ/rvS8AZwClazGdjnr1mL2V06Bd5K1XNXvpFb0q6DSQ1FGc7+3ZbsAcSZ+ppVOTrvkKNlwK0WP3ohs02ta3cl0bbZNbua69RgH7YUXuex0DzDGzVf49T51GAkvN7A0zW0tq5w7NWaegG/SpgbSkHeW7mUr6Y5JBLwbuJXXc8L/35KGfmV1qZruZWRspDOUhMzu1KPoBSNpK0idLx6RNbhZSEB3N7DVguaRBLhoBLKIg+jWCpKOBfwbGmNm7VdJUux/NKH/nzNfjq+Q7G9hT0gCf9R1HutbNYCSw2MxWVPqxGXX3Ndg/AJ43s3/L/NQZe+l23auVn/e9LwArgSP9+CigFNp/LzBOUn9JA4A9SRsQNZUu2EWuetWwlx7Xq5JOZtZuZjuZWZu3ZytIG4m9Vk2nZl1zD4t8R9LBnufpFMzfd6Gtb+W6Ntomt2xde4si9sMK3vcqj2zLU6ffAQdL2tLteARpP4giXKegK1gBdjzrrQ+wHzAXWEByOpe7fAdgBqmzNgPYvgC6DqdjJ8/C6EdaBzPfP88BEwqo4xDgGb/PdwPbFUm/KjpPI4VPryV1Os8mbbKyHJjnn0medhfg57XuR5PKvw1o9+t4L7Bzefn+/VjSDrsvdaX8SmW7fCpwblnaptYdGEYKD1yQuc7HVrOXHqh7tfJ77d7n/alie8OAZ71uTwFDM+kn+PV+gR7atbdRuyiAXhXtpTf0qqZTWZplZHYYrqRTM685cCCpjX8JmAgobzuvcf2G04m2vpXrSoNtcivXtZeuZyH7YY3e517SaUvg98A2GVneOl1Jeom3kNTP6p+3TvHp+kd+U4MgCIIgCIIgCIIg6AR9KrQ7CIIgCIIgCIIgCLpLDKSDIAiCIAiCIAiCoAFiIB0EQRAEQRAEQRAEDRAD6SAIgiAIgiAIgiBogBhIB0EQBEEQBEEQBEEDxEA6CIIgCIIgCIKNkLStpPPrpGmT9DedyKtN0sJu6LJM0p9UkE+VdGJX8w2CrhID6Ryo5kgkTZa0jx9/7CwkrWk0ryboOFzSoZnv4aT6EM200Qp5dNmWwi43fST9g6TnJb0iaaLLzpV0ek76VOy4dTPPDTqdks4s1TXYtOhOG+3+7mfN1ikIGmRboOZAGmgD6g6kg2BTIwbSBcLM/tbMFuWthzMcOLReoqBvUQAbHU7Y5abO+cCxwISSwMwmmdkPe6pAJXqzPWwjOp1BELQGVwMDJc2TdI1/FkpqlzQ2k+ZwTzPeJ5AekzTHPxu12z6B+BNJD0haIulfMr+NkvSknztd0taZUy+W9LR/9sjIR3qZL0oa3SNXIgjKiIF0fmwu6VZJCyTdJWlLSTMlHdjVDCVt5g5utuf79y4f7nnfJWmxpDskyX871mWPS7pB0s8ktQHnAuPdKR7uRRwh6TeSXq71FtDLe0TSne7QrpZ0iju9dkkDPd1USTdJetjzPFLSFH8bNbWr1yFoGk2xUR+kTJS0SNL9wE6Z34a6rTwr6ZeSdnb5TEnXu70tlHRQ2OWmj6RJwOeAe4HtMvIrJF3kxxvZRibNbZIe8k7ZOZnzL874xStd1ub39EZgDrB7J/Q71e1lnqSbJW3m8jWSrpI0X9IsSZ92+UD/PlvSt9QRubFBp9Nlu6hCh7KKHmskfc+fm1/78zHT7XWMpzlT0t2S7pO0VNLXJV0oaa7rtH39OxI0iUq+dITfi3b3L/0BJB0tb5OBE1z2R24XO2a+/6+qREp01od5mmckPVd6Llx+tfvrBZKuddlJ/rzNl/RotYp63e70c38k6Sl1o18TFIJLgJfMbAgwCxgC7A+MBK5RarcvAR4zsyFmdh3wOvBlM/sCMBa4oUreQ/z3wcBYSbu7XV8GjPTznwEuzJzztpkdBEwErs/I24Ajgb8AJknaonvVDoL6xEA6PwYB/2lm+wFvUz9spjOcDaw2sy8CXwTOkTTAfzsAuADYh9RRPcydzM3AMWY2DNgRwMyWAZOA69wpPuZ57AwMA0aTOoK12B/4Jsk5ngbs5Y5vMvCNTLrtgKOA8cB9wHXAvsBgSUMavwRBE2mWjR7veQ0GzsHfKEvqB/w7cKKZDQWmAFdlztvKzA71cqeEXW76mNm5wErgz4G3aiTdwDYy8v1InahDgMsl7SJpFLAncBCp0zZU0hGefhDwQzM7wMx+W0s3SX9G6vAd5h3KdcApJX2AWWa2P/Aoyc4Bvg98333yykx25Z1OqNChrFV/YKY/N+8A3wG+THrWvpVJ93nSm++DSM/Wu2Z2APAkkEuofB+l3JdeCEwFxprZYGBz4Dxvk28B/hI4HPgMgJmtB26nw95GAvPN7M0aZXbGh00wswNJz82RkvbzCZbjgX1d3+942suBr7iNj6lR7vnAW37ut4Ghda5N0FoMA6aZ2TozWwU8QupvltMPuEVSOzCd1PesxAwzW21m7wOLgD8FDvb0T0iaB5zh8hLTMn8PycjvNLP1ZrYEeBnYuysVDIJGiIF0fiw3syf8+HaSc+ouo4DT3fE8BexA6kACPG1mK7xBnkeaudsbeNnMlnqaadTmbndSi4BP10k728xeNbMPgJeAB13e7mWXuM/MzOWrzKzddXyuLF3Q+zTLRo+go+FdCTzk8kGkjv6v3GYvA3bLnDcNwMweBT4ladsq+Ydd9j2q2cY9ZvaeDzAeJg0gR/lnLunN8950+MXfmtmsTpY5gjQomO32OoI0KQnwIVBay/osHTZyCKkTCfDfdfKv1KGsxofAA37cDjxiZmvZ2I4fNrN3zOwNYDVpQEWFdEHPUu5LRwBLzexFl91K8pN7u3yJ+5/bM3lMoWPy4yzgv+qU2Rkf9lVJc0jPxr6kwcvbwPvAZEknAO962ieAqR7psVmNcocB/wNgZguBBXX0DFoLdTLdeGAVafL6QOATVdJ9kDleR5pUEvArn2gcYmb7mNnZmXTWieNK34Og6cRAOj964oEX8I2M8xlgZqWBQjVn1QjZPOqdm027PvN9vZddnm59hXOy6YLep5k2WulcAc9l7HWwmY3qQvlhl32ParZRSS7guxk728PMfuC//6GBMgXcmslnkJld4b+t9UELdPjXRqnko6uRLe9jG/WBUiU73iAdYce9TSO+s2JaM1sOrJJ0FPAl4Bd18qnpwzxa7SJghL89vh/Ywsw+Ik1A/Rj4K3zCxqNFLiMtgZgnaYcq5TbarwiKzzvAJ/34UVLEzGa+1OAI4OmyNADbAK+6TzqN2pMv5cwiRU3uAR8vF9gr8/vYzN8nM/KTfNnDQNIk5wsNlBkEXSIG0vnxWUmlkJSTgcebkOcvSeFh/QAk7SVpqxrpFwOfU1p7Ch3OCTZ2ikHfo1k2+igwzhvenUlhu5AauR1LZUjqJ2nfzHljXT6MtGRhNWGXQaKSbQAcJ2kL7+QPB2aT/OJZ8s1qJO0qaacKedZjBnBi6VxJ20uq9dYYUofwr/14XEYedty3KPelvwba1LFR0mmkENnFwAAfCJTSZplMekt9p5mt66ZOnyJNJK1WWtN/DIA/J9uY2c9Jy8GGuHygmT1lZpcDb1J9T4HHga/6OfuQlioELYyZ/Z4UZr2QFGWzAJhPii77JzN7zWUf+Rr68cCNwBmSZgF70cCkpUfQnAlMk7SA5EezYdr9JT1FWqY1PiN/gfQc/QI416N7gqBHiRnp/Hie5GRuBpYAN5HWRXWHyaSQrTmSBLxBmlGuiJm9p/S/AR+Q9CZpVrHEfcBdko5jw7WjQd+hWTb6U9JavXbgRVJDh5l9qLQ52A2StiH5o+tJoYcAb0n6DanDd5bLwi4DqGwbkHzY/cBngW/7UoKVvr75yeQWWQOcSnrr22nMbJGky4AHlXb4Xgt8Dai1tvoC4HZJ/+h6lQb8H3c6SWtla60HD1qfcl/6TdLgYLqkzUkTPpPM7ANJfwfc723y46TlLyXuJYV01wvrrouZzZc0l+RvXyaFbkOa4LnH12uLjoHKNZL2dNkM0kCqEjcCt/oAaC7J1ldXSRu0CGZW/l8GLi77fS1pyUKW/TLHl3q6ZbhNm9lUkv8r5TE6c/wQFdZem1mbH15ZJj+zThWCoEdQR3RY0BeRtLWZrfGB938ASzKb3wRBLkiaCVxkZs/krUtQLKrZhqQrgDVmdm0eelVC0pbAe2ZmksYBJ5vZcXnrFbQmvvv1dWZ2eN3EOaG0k30/M3vf36zPIG3q+GHOqgVBEDSdeCMdnCPpDNJGEHNJu3gHQRAE3WcoMNEnKv+PDd+eB0GnkXQJcB4dO3cXlS2Bh32JmYDzYhAdBMGmSryRbhEkDQZuKxN/YGZfykMfKKZOQX4UxR6KokfQWviau/5l4tPMrD0PfaCYOgXFQdIE4KQy8XQzu6pS+iaX/RXge2XipWZ2fE+XHQRBUBRiIB0EQRAEQRAEQRAEDRC7dgdBEARBEARBEARBA8RAOgiCIAiCIAiCIAgaIAbSQRAEQRAEQRAEQdAAMZAOgiAIgiAIgiAIggaIgXQQBEEQBEEQBEEQNMD/AywQMvqv4qFFAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "sns.pairplot(pingviner, hue = \"species\")" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "korrelasjon = pingviner.corr()\n", + "sns.heatmap(korrelasjon, annot=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Maskinlæring" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.model_selection import train_test_split, cross_val_score\n", + "from sklearn import tree\n", + "from sklearn.metrics import accuracy_score, confusion_matrix" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [], + "source": [ + "pingviner.dropna(inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": {}, + "outputs": [], + "source": [ + "kriterier = pingviner[[\"body_mass_g\", \"bill_length_mm\", \"bill_depth_mm\", \"flipper_length_mm\"]]\n", + "kategorier = pingviner[\"species\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": {}, + "outputs": [], + "source": [ + "testandel = 0.20 # bruker 20 % av datasettet til å teste\n", + "ml_data = train_test_split(kriterier, kategorier, test_size=testandel, random_state=42)\n", + "\n", + "treningskriterier = ml_data[0]\n", + "testkriterier = ml_data[1]\n", + "treningskategorier = ml_data[2]\n", + "testkategorier = ml_data[3]" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "DecisionTreeClassifier()" + ] + }, + "execution_count": 76, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "modell = tree.DecisionTreeClassifier()\n", + "modell.fit(treningskriterier, treningskategorier)" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.9850746268656716" + ] + }, + "execution_count": 77, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "forutsigelser = modell.predict(testkriterier)\n", + "accuracy_score(testkategorier, forutsigelser)" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['Adelie'], dtype=object)" + ] + }, + "execution_count": 78, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "modell.predict([[2000, 40, 60, 500]])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/_sources/docs/tema5_modellering/regresjonsmodeller.ipynb b/_sources/docs/tema5_modellering/regresjonsmodeller.ipynb new file mode 100644 index 00000000..9816d36d --- /dev/null +++ b/_sources/docs/tema5_modellering/regresjonsmodeller.ipynb @@ -0,0 +1,263 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Regresjonsmodeller\n", + "\n", + "Regresjon er en form for modellering som brukes i mange ulike fagdisipliner, fra samfunnsvitenskap og økonomi til naturvitenskap og matematikk. Det betyr å finne en funksjon som er best tilpasset datasettet vårt. Regresjon tar ofte utgangspunkt i _minste kvadraters metode_, som gjør at vi får en modellfunksjon som gir minst mulig varians. Regresjonsmodeller passer derfor ofte ikke perfekt med alle, eller noen, av punktene. Modellene har heller et avvik fra gjennomsnittet av punktene (varians) som er så lite som mulig.\n", + "\n", + "## Lineær regresjon\n", + "\n", + "Vi har tidligere sett på enkel [polynomregresjon](https://andreasdh.github.io/NAT3000/docs/tema3_datahandtering/statistikk.html#regresjon) med funksjonen _polyfit_ fra numpy-biblioteket. Denne kan brukes dersom vi for eksempel ønsker å utføre lineær regresjon eller andregradsregresjon. Men hvis vi ønsker å tilpasse dataene våre til en vilkårlig modell, må vi bruke en annen funksjon. Funksjonen _curve\\_fit_ fra scipy-biblioteket har den funksjonaliteten vi ønsker. Da definerer vi en bestemt modell, i form av en Python-funksjon, som er utgangspunktet for regresjonen vår. Modellfunksjonen må ta som parameter en uavhengig variabel, i tillegg til koeffisientene/konstantene i uttrykket. Hvis vi for eksempel ønsker å gjøre en lineær regresjon, kan vi definere følgende funksjon:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "def modell(x, a, b):\n", + " return a*x + b" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Her ser vi at variabelen _x_ og konstantene _a_ og _b_ er gitt som parametre i funksjonen. La oss lage en lineær modell ut fra følgende data, som et eksempel:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "x = [1, 2, 3, 4, 5]\n", + "y = [2.1, 3.9, 6.5, 7.1, 11.0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Først importerer vi funksjonen fra underbiblioteket _optimize_, som finnes i scipy-biblioteket. Deretter bruker vi funksjonen til å lage en lineær modell som passer best mulig med dataene våre. Funksjonen _curve_\\fit_ gir både koeffisientene _a_ og _b_, men også et mål på hvor godt modellen passer dataene våre som kalles _kovarians_. Dette skal vi ikke se på her, men vi må passe på å lagre koeffisientene og kovariansen i ulike variabler, slik at vi får ut riktige verdier for modellen vår. Parametrene i _curve\\_fit_ er modellfunksjonen vår og dataene vi vil beskrive med modellen vår (her _x_ og _y_): " + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Koeffisienter: [ 2.1 -0.18]\n", + "Kovarians: [[ 0.06359996 -0.19079989]\n", + " [-0.19079989 0.69959972]]\n" + ] + } + ], + "source": [ + "from scipy.optimize import curve_fit\n", + "\n", + "koeffisienter, kovarians = curve_fit(modell, x, y)\n", + "print(\"Koeffisienter:\", koeffisienter)\n", + "print(\"Kovarians:\", kovarians)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Vi overser her de fire verdiene som utgjør kovariansen vår, og ser at vi har fått koeffisientene $a = 2,1$ og $b = -0,18$. Dette betyr at regresjonsmodellen har formen $y = 2,1x - 0,18$. Koeffisientene kommer i den rekkefølgen vi har gitt i modellfunksjonen vår. La oss derfor legge dem i hver sin variabel: " + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "a = koeffisienter[0]\n", + "b = koeffisienter[1]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Nå kan vi for eksempel plotte datapunktene og modellfunksjonen i samme koordinatsystem. Da genererer vi noen nye _x_-verdier som vi kan lage funksjonsverdier ut fra, og deretter bruker vi modellfunksjonen til å generere _y_-verdier:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "\n", + "x_ny = np.linspace(0, 6, 1000)\n", + "y_modell = modell(x_ny, a, b)\n", + "\n", + "plt.plot(x_ny, y_modell, color = \"cornflowerblue\", label = \"Tilpasset modell\")\n", + "plt.scatter(x, y, color = \"navy\", label = \"Datapunkter\")\n", + "plt.xlabel(\"x\")\n", + "plt.ylabel(\"y\")\n", + "plt.grid()\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "En måte å måle hvor godt modellen er tilpasset dataene våre, er å regne ut $R^2$. Da mater vi inn de originale _x_-verdiene i modellen vår, og sammenlikner dem med de originale _y_-verdiene:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "R2 = 0.9585289514866979\n" + ] + } + ], + "source": [ + "from sklearn.metrics import r2_score\n", + "\n", + "x = np.array(x)\n", + "y_predikert = modell(x,a,b)\n", + "\n", + "R2 = r2_score(y, y_predikert)\n", + "print(\"R2 =\", R2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "En $R^2$-score varierer mellom 0 og 1, der 1 er perfekt tilpasning til modellen, og 0 er ingen tilpasning. Desto høyere verdi $R^2$ har, desto bedre forklarer modellen de allerede eksisterende dataene (men ikke nødvendigvis data i framtiden!)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Andre regresjonsmodeller\n", + "\n", + "Hvis vi ønsker å bruke andre regresjonsmodeller, er det bare å endre modellfunksjonen vår. Dersom vi for eksempel ønsker å gjøre en logistisk regresjon av dataene våre ovenfor, kan vi definere en generell logistisk funksjon:\n", + "\n", + "$$f(x) = \\frac{c}{1 + a\\cdot e^{-bx}}$$\n", + "\n", + "Dette kan vi gjøre enkelt i Python, og vi kan gjenta den samme prosedyren med tilpasning og plotting som med lineær regresjon. Et fullstendig program vil kunne se slik ut:" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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ltPS0khJSSEuLg6n00laWhp+v7/R5UaMGMGgQYMAuOOOO1i1alXtEfex7SYnJxMfH09aWhrx8fHcdNNNpKenM3z4cA4ePFj7XJs3b+YnP/kJH330EWeccQYQGJ0zMTGx9rkWL17M119/jcMR+CJYXl6OMYbExEQmT55MRkbGae2rU0lKSqod17++aD2lvql1WWsp3O5h3vJKDpT46X9mHNcOT+acMzoDvSJWV7ipruYLRW0hDX5jTDyB0M+11r4NYK3dX2f+C8CCRlZvNTt3ljRrektt27YNp9NJRkYGTzzxRIPDLdfX2LDM0PAwzvWnu93u45apO7xy3XGYevTogdvtZvXq1bXBX5/f72fRokW14+zXdWzwOGm+HQe8/G1ZJd9866VHJycPT3RxQc/4E15fkXAJZa8eA7wIbLTW/q7O9B51FrseWB+qGo7p2TO9WdNb4tglBx988EGMMZSUlNCjRw8cDgd//etfa4dbrj9UcmPLAaxcuZLt27fj9/t54403GD16NBBo+tq4cSN+v5933nmnSfV17NiR999/n//4j/+o/dpYv5bx48fzpz/9qfZxS8b4l+9UVvvJXVzBrHml7D3iY8qYFB67tQMDeyUo9CWiQjk03yhgKnBFva6b/22MWWeMWQuMBX4awhoAmDVrHCkpx19UJCUlnlmzxp3W81ZVVdV257zyyisZP348jz32GAD3338/r7zyCoMHD2bTpk21R8yDBg3C6XQycuRIZs+e3ehyELgK14MPPsh5551H7969uf766wH49a9/zaRJkxg5ciQ9evQ4sbBGZGZmsmDBAh544AFWrFjBNddcwzvvvFP74+7TTz/N6tWrGTRoEAMGDNBwyi1krWXl5mp+8XoJizdUM25QIrOmdCTngiRdTlCig7U26m/Dhg2z9W3YsOGEaQ0pLS211lr76qtrba9es60xj9tevWbbV19d26T1Q+VYXY3Jy8uzEydODFM13zlVXaF0stc0Ly8vfIU0Q/26DpZ47e/ml9gfPltsf/m3o7bogCcq6ooWqqv5Tqc2oMA2kKkx0yF7ypSBTJkyMNJlSDtlreWzTTXM/bQCgNtGpzD2gkSddCVRKWaCv63JycmJ2l4GcrySSj9/za9gTZGHc86I454rUunaQQOnSfRq08FvrdWPZO2EbQNXgmvIrrIO/H1uCW6P5ZZRKYwblIhD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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "from scipy.optimize import curve_fit\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "\n", + "x = [1, 2, 3, 4, 5]\n", + "y = [2.1, 3.9, 6.5, 7.1, 11.0]\n", + "\n", + "def modell_logistisk(x, a, b, c):\n", + " return c/(1 + a*np.exp(-b*x))\n", + "\n", + "koeffisienter, kovarians = curve_fit(modell_logistisk, x, y)\n", + "\n", + "a = koeffisienter[0]\n", + "b = koeffisienter[1]\n", + "c = koeffisienter[2]\n", + "\n", + "x_ny = np.linspace(0, 20, 1000)\n", + "y_modell = modell_logistisk(x_ny, a, b, c)\n", + "\n", + "plt.plot(x_ny, y_modell, color = \"cornflowerblue\", label = \"Tilpasset modell\")\n", + "plt.scatter(x, y, color = \"navy\", label = \"Datapunkter\")\n", + "plt.xlabel(\"x\")\n", + "plt.ylabel(\"y\")\n", + "plt.grid()\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```{admonition} Oppgave\n", + ":class: tip\n", + "1. Forklar hvordan programmet ovenfor fungerer.\n", + "2. Lag en modell som beskriver dataene som beskriver [antall smittede som funksjon av tid](https://raw.githubusercontent.com/andreasdh/NAT3000/master/docs/datafiler/smitte_virus.csv).\n", + "3. Tolk modellen og beskriv hva den kan fortelle oss.\n", + "4. Regn ut $R^2$ for modellen og forklar hva dette sier oss.\n", + "```" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/tema5_modellering/temperaturmodellering.ipynb b/_sources/docs/tema5_modellering/temperaturmodellering.ipynb new file mode 100644 index 00000000..79ccc2ab --- /dev/null +++ b/_sources/docs/tema5_modellering/temperaturmodellering.ipynb @@ -0,0 +1,357 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "82210676", + "metadata": {}, + "outputs": [], + "source": [ + "from pylab import *" + ] + }, + { + "cell_type": "markdown", + "id": "af31e097", + "metadata": {}, + "source": [ + "# Strålingsbalansen på jorda" + ] + }, + { + "cell_type": "markdown", + "id": "7ac71bb7", + "metadata": {}, + "source": [ + "Det som hovedsakelig varmer opp planeten vår, er sollys. Solen sender ut energi i form av elektromagnetisk stråling som treffer jordkloden. All elektromagnetisk stråling som treffer toppen av atmosfæren, har blitt målt til ca 1361 W/m$^2$ Hvor mye energi som treffer toppen av atmosfæren er nesten konstant, og har bare variert med 0.2 prosent på 400 år. Strålingen blir kalt for _solkonstanten_." + ] + }, + { + "cell_type": "markdown", + "id": "37e33057", + "metadata": {}, + "source": [ + "![sunlight_angle.png](https://www.uio.no/studier/emner/matnat/ifi/IN-KJM1900/h20/datafiler/sunlight_angle.png)" + ] + }, + { + "cell_type": "markdown", + "id": "71786d5c", + "metadata": {}, + "source": [ + "![solar_insolation_planet_sphere_disk_600x320.png](https://www.uio.no/studier/emner/matnat/ifi/IN-KJM1900/h20/datafiler/solar_insolation_planet_sphere_disk_600x320.png)" + ] + }, + { + "cell_type": "markdown", + "id": "6e1fc738", + "metadata": {}, + "source": [ + "### Energi som treffer planeten\n", + "\n", + "$$ E_{inn} = K_s \\cdot \\pi R{_E}^2$$" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "e74d82f2", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Planeten blir truffet av 1.735e+17 W stråling\n" + ] + } + ], + "source": [ + "Ks = 1361 #[watt per kvadratmeter] Solinnstråling\n", + "radius_jorda = 6371000 #[m] Jorda\n", + "\n", + "e_inn = Ks * pi * radius_jorda**2\n", + "\n", + "print(f\"Planeten blir truffet av {e_inn:.3e} W stråling\")" + ] + }, + { + "cell_type": "markdown", + "id": "363ff8ab", + "metadata": {}, + "source": [ + "### Energi inn i systemet\n", + "\n", + "$$E_{absorbert} = K_s \\cdot (1 - albedo) \\cdot \\pi R{_E}^2$$" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "e3eea153", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Planeten absorberer 1.215e+17 W stråling\n" + ] + } + ], + "source": [ + "albedo = 0.30\n", + "e_absorbert = Ks * (1-albedo) * pi * radius_jorda**2\n", + "print (f\"Planeten absorberer {e_absorbert:.3e} W stråling\")" + ] + }, + { + "cell_type": "markdown", + "id": "b910a359", + "metadata": {}, + "source": [ + "### Energi ut av systemet\n", + "\n", + "Stefan-Boltzmann loven: Hvor mye energi som blir sendt ut fra overfalten til et legeme per flatenhet og tidsenhet i form av varmestråling. \n", + "\n", + "$$\\phi=\\sigma T^4$$\n", + "\n", + "$\\sigma$ er Stefan-Boltzmann constant. $\\sigma = 5.670373 \\cdot 10^{-8} W / (m^2K^4)$\n", + "\n", + "$$E_{emittert} = \\sigma T^4 \\cdot 4\\pi R{_E}^2$$\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "63132bac", + "metadata": {}, + "outputs": [], + "source": [ + "sigma = 5.670373e-8" + ] + }, + { + "cell_type": "markdown", + "id": "0b144ecf", + "metadata": {}, + "source": [ + "### Energi inn = Energi ut\n", + "\n", + "\n", + "På grunn av energiprinsippet, loven om at energi er konstant, må energi inn på planeten være det samme som energi ut.\n", + "\n", + "$$ E_{absorbert}= E_{emittert}$$\n", + "\n", + "$$ K_s \\cdot (1 - albedo) \\cdot \\pi R{_E}^2 = \\sigma T^4 \\cdot 4\\pi R{_E}^2$$\n", + "\n", + "$$T = \\sqrt[4]{\\frac{K_s\\cdot(1-albedo)}{4\\sigma}}$$\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "11db413a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Beregningen av gjennomsnittstemperaturen gir en temperatur på: -18.57 celsius\n" + ] + } + ], + "source": [ + "temperatur_kelvin = ((Ks*(1-albedo))/(4*sigma))**(1/4)\n", + "temperatur_celsius = temperatur_kelvin - 273.15\n", + "print (f\"Beregningen av gjennomsnittstemperaturen gir en temperatur på: {temperatur_celsius:.2f} celsius\")" + ] + }, + { + "cell_type": "markdown", + "id": "0ba8cdc5", + "metadata": {}, + "source": [ + "# Støtte til modelleringsoppgave 2 (temperaturmodellering)" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "938f7515", + "metadata": {}, + "outputs": [], + "source": [ + "\"\"\"Konstanter\"\"\"\n", + "#Stefan-Boltzman Konstant\n", + "sigma=(5.67e-8) #[W m^2 K^4]\n", + "#Temperatur Sola\n", + "temperatur_sol = 5778 #[Kelvin]\n", + "diameter_sol = 1391016e3 #[m]\n", + "distanse_sol_jord = 149600000e3 #[m]\n", + "radius_jord = 6371e3 #[m]\n", + "albedo = 0.3" + ] + }, + { + "cell_type": "markdown", + "id": "fcf5f37b", + "metadata": {}, + "source": [ + "## Oppgave 1)\n", + "Formelen for å kalkulere mengden energi som treffer toppen av atmosfæren ($S_0$) er: \n", + "\n", + "$$S_0 = \\large\\frac{{radius_{sun}}^2}{{distanse_{jord\\space sol}}^2} \\cdot stråling\\space sol$$ " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "bd78a3f6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1365.948361181013\n" + ] + } + ], + "source": [ + "stråling_sol = sigma*(temperatur_sol**4)\n", + "s0 = ((diameter_sol/2)**2)/(distanse_sol_jord**2)*stråling_sol\n", + "print (s0)" + ] + }, + { + "cell_type": "markdown", + "id": "36d1064c", + "metadata": {}, + "source": [ + "## Oppgave 2)\n", + "Bruk energiprinsippet og Stefan-Boltzmanns lov til å lage et utrykk for gjennomsnittlig temperatur på jorden. Noe av innstrålingen fra solen vil bli reflektert, og målet for refleksjonen til en flate kalles albedo. Legg til denne refleksjonsfaktoren for jordkloden og kalkuler temperaturen på jorden. Anta at\n", + "temperaturen på planeten er konstant, og at planeten er en flat sirkel." + ] + }, + { + "cell_type": "markdown", + "id": "0dcddf6a", + "metadata": {}, + "source": [ + "![solar_insolation_planet_sphere_disk_600x320.png](https://www.uio.no/studier/emner/matnat/ifi/IN-KJM1900/h20/datafiler/solar_insolation_planet_sphere_disk_600x320.png)" + ] + }, + { + "cell_type": "markdown", + "id": "5bc539f3", + "metadata": {}, + "source": [ + "### Utrykket for temperatur man skal komme frem til:\n", + "$$T = \\sqrt[4]{\\frac{K_s\\cdot(1-albedo)}{4\\sigma}}$$\n", + "\n", + "Prøv å vis hvordan man får dette utrykket." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "5ad019b4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "-18.336567683297915" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "temperatur = ((s0*(1-albedo))/(4*sigma))**(1/4)\n", + "temperatur - 273.15" + ] + }, + { + "cell_type": "markdown", + "id": "eeba839f", + "metadata": {}, + "source": [ + "## Oppgave 3) \n", + "\n", + "Når vi skal legge til atmosfæren i modellen gjør vi ganske mange forenklinger. Vi antar tre ting (og ingen av antagelsene er faktisk sanne!): \n", + "\n", + "1) Atmosfæren har en konstant temperatur - dvs. at atmosfæren er en stor blokk hvor hele blokken har den samme temperaturen.
    \n", + "2) Atmosfæren er fullstendig gjennomsiktig for stråling fra solen - dvs at all stråling fra solen treffer jordoverflaten.
    \n", + "3) Atmosfæren tar imot all stråling fra jorden." + ] + }, + { + "cell_type": "markdown", + "id": "da9d605f", + "metadata": {}, + "source": [ + "![Atmosf%C3%A6re.png](https://www.uio.no/studier/emner/matnat/ifi/IN-KJM1900/h20/datafiler/atmosferestraling.png)" + ] + }, + { + "cell_type": "markdown", + "id": "4d173112", + "metadata": {}, + "source": [ + "Figuren over viser situasjonen med antagelsene:
    \n", + "(1) viser solinnstårlingen som treffer jordkloden.
    \n", + "(3) viser utsrålingen fra jordkloden som treffer atmosfæren.
    \n", + "(2) viser situasjonen til atmosfæren. Atmosfæren vil sende ut stråling til verdensrommet, men også stråling tilbake til jorden. Energien atmosfæren sender ut kan da kalkuleres ved å bruke stefan-boltzmans lov. \n", + "\n", + "Prøv å legg inn atmosfæren som et ledd i din kalkulering og se hvordan det påvirker temperaturen.\n", + "\n", + "#### Løsning ved bruk av figuren over.\n", + "$Energi_{inn} = Energi_{ut}$ er fortsatt det som gjelder, men denne gangen blir det to ligninger. Etter systemet nevnt i oppgave 3(a) blir likningene:\n", + "\n", + "$$\\space s_0\\cdot(1-albedo) = \\sigma T_{a}^4 $$\n", + "$$\\space s_0\\cdot(1-albedo) + \\sigma T_{a}^4 = \\sigma T_{s}^4$$\n", + "\n", + "Sett likning 1 inn i 2 for å få en løsning for $T_{s}$\n", + "\n", + "Prøv å vis på figuren hvilke piler disse to likningene representerer. Prøv å forklar til deg selv hva som er gjort her for å forstå likningsystemet. \n", + "\n", + "Kommentar: Resultatet her vil være veldig høyt. I denne situasjonen vil energien til atmosfæren være det jorden sender ut. Vi har jo kalkulert at jorden blir truffet med 1365 watt/m^2, men denne energien vil bare være når solen står på sitt høyeste vertikalt rett ned på jorden. På grunn av rotasjonen til jorden, med natt og dagsykluser, og at jorden egentlig er en kule vil ikke dette være den faktiske gjennomsnittelige innstrålingen som treffer jorden. En forenkling for å finne gjennomsnitt på innstrålingen over hele jordkloden når man tenker at deler ikke får like mye sollys hele tiden vil da være: $S_{0}$/4 = 1365/4 watt/$m^2$. Dette nummeret er veldig nærme den observerte gjennomsnittelige energien som treffer jorden. Sett inn $S_{0}/4$ inn for $S_{0}$ og sjekk hva som skjer med $T_{s}$." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b38cd1ad", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "celltoolbar": "Edit Metadata", + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/_sources/docs/temaX_grafikk/Untitled.ipynb b/_sources/docs/temaX_grafikk/Untitled.ipynb new file mode 100644 index 00000000..fe7492dc --- /dev/null +++ b/_sources/docs/temaX_grafikk/Untitled.ipynb @@ -0,0 +1,222 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Grafiske brukergrensesnitt\n", + "Vi kan benytte et bibliotek kalt _tkinter_ for å lage grafiske grensesnitt til programmene våre." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "import tkinter" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "vindu = tkinter.Tk()\n", + "vindu.title(\"Simuleringsplattform\")\n", + "\n", + "merkelapp = tkinter.Label(vindu, text = \"Velkommen!\")\n", + "# pack brukes til å vise objektet i vinduet, omtrent som \"show\" i plotting\n", + "merkelapp.pack()\n", + "\n", + "knapp1 = tkinter.Button(vindu, text=\"Trykk her\", fg=\"green\")\n", + "knapp2 = tkinter.Button(vindu, text=\"Ikke trykk her\", fg=\"red\")\n", + "knapp1.pack()\n", + "knapp2.pack()\n", + "\n", + "vindu.mainloop()" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "vindu = tkinter.Tk()\n", + "vindu.title(\"Simuleringsplattform\")\n", + "\n", + "merkelapp = tkinter.Label(vindu, text = \"Velkommen!\")\n", + "# pack brukes til å vise objektet i vinduet, omtrent som \"show\" i plotting\n", + "merkelapp.pack()\n", + "\n", + "toppramme = tkinter.Frame(vindu)\n", + "toppramme.pack(side = \"top\")\n", + "bunnramme = tkinter.Frame(vindu)\n", + "bunnramme.pack(side = \"bottom\")\n", + "\n", + "knapp1 = tkinter.Button(bunnramme, text=\"Trykk her\", fg=\"green\")\n", + "knapp2 = tkinter.Button(toppramme, text=\"Ikke trykk her\", fg=\"red\")\n", + "knapp1.pack()\n", + "knapp2.pack()\n", + "vindu.mainloop()" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "ename": "TclError", + "evalue": "can't invoke \"label\" command: application has been destroyed", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mTclError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[0mCheckVar1\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mtkinter\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mIntVar\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[0mCheckVar2\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mtkinter\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mIntVar\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 4\u001b[1;33m \u001b[0mtkinter\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mLabel\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mvindu\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtext\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;34m\"Username\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 5\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 6\u001b[0m \u001b[1;31m#tkinter.Checkbutton(toppramme, text = \"Machine Learning\",variable = CheckVar1,onvalue = 1, offvalue=0).grid(row=0,sticky=\"W\")\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\anaconda3\\lib\\tkinter\\__init__.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, master, cnf, **kw)\u001b[0m\n\u001b[0;32m 3141\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3142\u001b[0m \"\"\"\n\u001b[1;32m-> 3143\u001b[1;33m \u001b[0mWidget\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__init__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmaster\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'label'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcnf\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mkw\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 3144\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3145\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\anaconda3\\lib\\tkinter\\__init__.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, master, widgetName, cnf, kw, extra)\u001b[0m\n\u001b[0;32m 2565\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mk\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mv\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mclasses\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2566\u001b[0m \u001b[1;32mdel\u001b[0m \u001b[0mcnf\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mk\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2567\u001b[1;33m self.tk.call(\n\u001b[0m\u001b[0;32m 2568\u001b[0m (widgetName, self._w) + extra + self._options(cnf))\n\u001b[0;32m 2569\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mk\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mv\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mclasses\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mTclError\u001b[0m: can't invoke \"label\" command: application has been destroyed" + ] + } + ], + "source": [ + "top = tkinter.Tk()\n", + "CheckVar1 = tkinter.IntVar()\n", + "CheckVar2 = tkinter.IntVar()\n", + "tkinter.Label(vindu, text = \"Username\")\n", + " \n", + "#tkinter.Checkbutton(toppramme, text = \"Machine Learning\",variable = CheckVar1,onvalue = 1, offvalue=0).grid(row=0,sticky=\"W\")\n", + "#tkinter.Checkbutton(toppramme, text = \"Deep Learning\", variable = CheckVar2, onvalue = 0, offvalue =1).grid(row=1,sticky=\"W\")" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout\n", + "app = QApplication([])\n", + "window = QWidget()\n", + "layout = QVBoxLayout()\n", + "layout.addWidget(QPushButton('Top'))\n", + "layout.addWidget(QPushButton('Bottom'))\n", + "window.setLayout(layout)\n", + "window.show()\n", + "app.exec()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "import sys\n", + "\n", + "# 1. Import `QApplication` and all the required widgets\n", + "from PyQt5.QtWidgets import QApplication\n", + "from PyQt5.QtWidgets import QLabel\n", + "from PyQt5.QtWidgets import QWidget" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "# 2. Create an instance of QApplication\n", + "app = QApplication(sys.argv)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# 3. Create an instance of your application's GUI\n", + "window = QWidget()\n", + "window.setWindowTitle('PyQt5 App')\n", + "window.setGeometry(100, 100, 280, 80)\n", + "window.move(60, 15)\n", + "helloMsg = QLabel('

    Hello World!

    ', parent=window)\n", + "helloMsg.move(60, 15)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "ename": "SystemExit", + "evalue": "0", + "output_type": "error", + "traceback": [ + "An exception has occurred, use %tb to see the full traceback.\n", + "\u001b[1;31mSystemExit\u001b[0m\u001b[1;31m:\u001b[0m 0\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\a_har\\anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py:3426: UserWarning: To exit: use 'exit', 'quit', or Ctrl-D.\n", + " warn(\"To exit: use 'exit', 'quit', or Ctrl-D.\", stacklevel=1)\n" + ] + } + ], + "source": [ + "# 4. Show your application's GUI\n", + "window.show()\n", + "\n", + "# 5. Run your application's event loop (or main loop)\n", + "sys.exit(app.exec_())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/temaX_grafikk/tilfeldige_tall_grafikk.ipynb b/_sources/docs/temaX_grafikk/tilfeldige_tall_grafikk.ipynb new file mode 100644 index 00000000..86c2fc8f --- /dev/null +++ b/_sources/docs/temaX_grafikk/tilfeldige_tall_grafikk.ipynb @@ -0,0 +1,145 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Tilfeldige tall og grafikk (teori)\n", + "```{admonition} Læringsutbytte\n", + "Etter å ha arbeidet med dette temaet, skal du kunne:\n", + "1. Generere tilfeldige flyttall og heltall.\n", + "2. Bruke enkel Turtle-grafikk.\n", + "3. Bruke grafikkmoduler (Pygame, Turtle eller VPython) i eget prosjekt.\n", + "```\n", + "\n", + "## Tilfeldige tall" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "tags": [ + "remove-input" + ] + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import IFrame\n", + "IFrame(\"https://www.youtube.com/embed/W5LchfvbcO4? autoplay=0&rel=0\", width=800, height=600)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Når du har sett videoen, kan du gjøre følgende oppgave for å sjekke om du forstår innholdet:\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Kast en terning 10000 ganger og plott relativ frekvens av seksere for hvert kast som funksjon av antall kast.\n", + "```\n", + "\n", + "\n", + "\n", + "\n", + "## Turtle-grafikk" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "tags": [ + "remove-input" + ] + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import IFrame\n", + "IFrame(\"https://www.youtube.com/embed/PafdmVrIJHU? autoplay=0&rel=0\", width=800, height=600)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Når du har sett videoen, kan du gjøre følgende oppgave for å sjekke om du forstår innholdet:\n", + "\n", + "```{admonition} Underveisoppgave\n", + ":class: tip\n", + "Tegn en rettvinkla trekant der en av sidene er 3 lang og den andre er 4 lang.\n", + "```\n", + "\n", + "\n", + "" + ] + } + ], + "metadata": { + "celltoolbar": "Edit Metadata", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/temaX_grafikk/tkinter-demo.ipynb b/_sources/docs/temaX_grafikk/tkinter-demo.ipynb new file mode 100644 index 00000000..8687cff8 --- /dev/null +++ b/_sources/docs/temaX_grafikk/tkinter-demo.ipynb @@ -0,0 +1,267 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Introduksjon" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "from tkinter import *" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "vindu = Tk()\n", + "vindu.title(\"Simuleringsplattform\")\n", + "# Lager Label-Widget.\n", + " \n", + "lb = Label(vindu, text=\"Hei på deg!\")\n", + "lb.pack()\n", + "\n", + "vindu.mainloop()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Gridsystem (rutenettsystem - rad og kolonner)." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "vindu = Tk()\n", + "vindu.title(\"Simuleringsplattform\")\n", + "# Lager Label-Widget.\n", + " \n", + "lb1 = Label(vindu, text=\"Hei på deg!\")\n", + "lb2 = Label(vindu, text=\"Du er grei!\")\n", + "lb1.grid(row=0, column=0)\n", + "lb2.grid(row=1, column=1)\n", + "\n", + "vindu.mainloop()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from vpython import *\n", + "\n", + "vindu = 500\n", + "Natoms = 200 # change this to have more or fewer atoms\n", + "\n", + "# Typical values\n", + "L = 1 # container is a cube L on a side\n", + "gray = color.gray(0.7) # color of edges of container\n", + "mass = 4E-3/6E23 # helium mass\n", + "Ratom = 0.03 # wildly exaggerated size of helium atom\n", + "k = 1.4E-23 # Boltzmann constant\n", + "T = 300 # around room temperature\n", + "dt = 1E-5\n", + "\n", + "animation = canvas( width=win, height=win, align='left')\n", + "animation.range = L\n", + "animation.title = 'A \"hard-sphere\" gas'\n", + "s = \"\"\" Theoretical and averaged speed distributions (meters/sec).\n", + " Initially all atoms have the same speed, but collisions\n", + " change the speeds of the colliding atoms. One of the atoms is\n", + " marked and leaves a trail so you can follow its path.\n", + " \n", + "\"\"\"\n", + "animation.caption = s\n", + "\n", + "d = L/2+Ratom\n", + "r = 0.005\n", + "boxbottom = curve(color=gray, radius=r)\n", + "boxbottom.append([vector(-d,-d,-d), vector(-d,-d,d), vector(d,-d,d), vector(d,-d,-d), vector(-d,-d,-d)])\n", + "boxtop = curve(color=gray, radius=r)\n", + "boxtop.append([vector(-d,d,-d), vector(-d,d,d), vector(d,d,d), vector(d,d,-d), vector(-d,d,-d)])\n", + "vert1 = curve(color=gray, radius=r)\n", + "vert2 = curve(color=gray, radius=r)\n", + "vert3 = curve(color=gray, radius=r)\n", + "vert4 = curve(color=gray, radius=r)\n", + "vert1.append([vector(-d,-d,-d), vector(-d,d,-d)])\n", + "vert2.append([vector(-d,-d,d), vector(-d,d,d)])\n", + "vert3.append([vector(d,-d,d), vector(d,d,d)])\n", + "vert4.append([vector(d,-d,-d), vector(d,d,-d)])\n", + "\n", + "Atoms = []\n", + "p = []\n", + "apos = []\n", + "pavg = sqrt(2*mass*1.5*k*T) # average kinetic energy p**2/(2mass) = (3/2)kT\n", + " \n", + "for i in range(Natoms):\n", + " x = L*random()-L/2\n", + " y = L*random()-L/2\n", + " z = L*random()-L/2\n", + " if i == 0:\n", + " Atoms.append(sphere(pos=vector(x,y,z), radius=Ratom, color=color.cyan, make_trail=True, retain=100, trail_radius=0.3*Ratom))\n", + " else: Atoms.append(sphere(pos=vector(x,y,z), radius=Ratom, color=gray))\n", + " apos.append(vec(x,y,z))\n", + " theta = pi*random()\n", + " phi = 2*pi*random()\n", + " px = pavg*sin(theta)*cos(phi)\n", + " py = pavg*sin(theta)*sin(phi)\n", + " pz = pavg*cos(theta)\n", + " p.append(vector(px,py,pz))\n", + "\n", + "deltav = 100 # binning for v histogram\n", + "\n", + "def barx(v):\n", + " return int(v/deltav) # index into bars array\n", + "\n", + "nhisto = int(4500/deltav)\n", + "histo = []\n", + "for i in range(nhisto): histo.append(0.0)\n", + "histo[barx(pavg/mass)] = Natoms\n", + "\n", + "gg = graph( width=win, height=0.4*win, xmax=3000, align='left',\n", + " xtitle='speed, m/s', ytitle='Number of atoms', ymax=Natoms*deltav/1000)\n", + "\n", + "theory = gcurve( color=color.cyan )\n", + "dv = 10\n", + "for v in range(0,3001+dv,dv): # theoretical prediction\n", + " theory.plot( v, (deltav/dv)*Natoms*4*pi*((mass/(2*pi*k*T))**1.5) *exp(-0.5*mass*(v**2)/(k*T))*(v**2)*dv )\n", + "\n", + "accum = []\n", + "for i in range(int(3000/deltav)): accum.append([deltav*(i+.5),0])\n", + "vdist = gvbars(color=color.red, delta=deltav )\n", + "\n", + "def interchange(v1, v2): # remove from v1 bar, add to v2 bar\n", + " barx1 = barx(v1)\n", + " barx2 = barx(v2)\n", + " if barx1 == barx2: return\n", + " if barx1 >= len(histo) or barx2 >= len(histo): return\n", + " histo[barx1] -= 1\n", + " histo[barx2] += 1\n", + " \n", + "def checkCollisions():\n", + " hitlist = []\n", + " r2 = 2*Ratom\n", + " r2 *= r2\n", + " for i in range(Natoms):\n", + " ai = apos[i]\n", + " for j in range(i) :\n", + " aj = apos[j]\n", + " dr = ai - aj\n", + " if mag2(dr) < r2: hitlist.append([i,j])\n", + " return hitlist\n", + "\n", + "nhisto = 0 # number of histogram snapshots to average\n", + "@numba\n", + "while True:\n", + " rate(300)\n", + " # Accumulate and average histogram snapshots\n", + " for i in range(len(accum)): accum[i][1] = (nhisto*accum[i][1] + histo[i])/(nhisto+1)\n", + " if nhisto % 10 == 0:\n", + " vdist.data = accum\n", + " nhisto += 1\n", + "\n", + " # Update all positions\n", + " for i in range(Natoms): Atoms[i].pos = apos[i] = apos[i] + (p[i]/mass)*dt\n", + " \n", + " # Check for collisions\n", + " hitlist = checkCollisions()\n", + "\n", + " # If any collisions took place, update momenta of the two atoms\n", + " for ij in hitlist:\n", + " i = ij[0]\n", + " j = ij[1]\n", + " ptot = p[i]+p[j]\n", + " posi = apos[i]\n", + " posj = apos[j]\n", + " vi = p[i]/mass\n", + " vj = p[j]/mass\n", + " vrel = vj-vi\n", + " a = vrel.mag2\n", + " if a == 0: continue; # exactly same velocities\n", + " rrel = posi-posj\n", + " if rrel.mag > Ratom: continue # one atom went all the way through another\n", + " \n", + " # theta is the angle between vrel and rrel:\n", + " dx = dot(rrel, vrel.hat) # rrel.mag*cos(theta)\n", + " dy = cross(rrel, vrel.hat).mag # rrel.mag*sin(theta)\n", + " # alpha is the angle of the triangle composed of rrel, path of atom j, and a line\n", + " # from the center of atom i to the center of atom j where atome j hits atom i:\n", + " alpha = asin(dy/(2*Ratom)) \n", + " d = (2*Ratom)*cos(alpha)-dx # distance traveled into the atom from first contact\n", + " deltat = d/vrel.mag # time spent moving from first contact to position inside atom\n", + " \n", + " posi = posi-vi*deltat # back up to contact configuration\n", + " posj = posj-vj*deltat\n", + " mtot = 2*mass\n", + " pcmi = p[i]-ptot*mass/mtot # transform momenta to cm frame\n", + " pcmj = p[j]-ptot*mass/mtot\n", + " rrel = norm(rrel)\n", + " pcmi = pcmi-2*pcmi.dot(rrel)*rrel # bounce in cm frame\n", + " pcmj = pcmj-2*pcmj.dot(rrel)*rrel\n", + " p[i] = pcmi+ptot*mass/mtot # transform momenta back to lab frame\n", + " p[j] = pcmj+ptot*mass/mtot\n", + " apos[i] = posi+(p[i]/mass)*deltat # move forward deltat in time\n", + " apos[j] = posj+(p[j]/mass)*deltat\n", + " interchange(vi.mag, p[i].mag/mass)\n", + " interchange(vj.mag, p[j].mag/mass)\n", + " \n", + " for i in range(Natoms):\n", + " loc = apos[i]\n", + " if abs(loc.x) > L/2:\n", + " if loc.x < 0: p[i].x = abs(p[i].x)\n", + " else: p[i].x = -abs(p[i].x)\n", + " \n", + " if abs(loc.y) > L/2:\n", + " if loc.y < 0: p[i].y = abs(p[i].y)\n", + " else: p[i].y = -abs(p[i].y)\n", + " \n", + " if abs(loc.z) > L/2:\n", + " if loc.z < 0: p[i].z = abs(p[i].z)\n", + " else: p[i].z = -abs(p[i].z)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/docs/test_quiz.ipynb b/_sources/docs/test_quiz.ipynb new file mode 100644 index 00000000..04ca8a77 --- /dev/null +++ b/_sources/docs/test_quiz.ipynb @@ -0,0 +1,2638 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Review" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this Chapter, we started working with real data, introduced Pands, partitions, summary statistics, binary hypothesis testing via bootstrap resampling, and two-dimensional statistics. " + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "tags": [ + "remove-input" + ] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from jupyterquiz import display_quiz\n", + "\n", + "display_quiz('https://raw.githubusercontent.com/jmshea/intro-data-science-for-engineers/main/questions/ch3.json')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Spaced Repetition Review\n", + "\n", + "Answer these questions to check your retention on knowledge from Chapters 1 and 2:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "tags": [ + "remove-input" + ] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "display_quiz('https://raw.githubusercontent.com/jmshea/intro-data-science-for-engineers/main/questions/ch1.json', 3)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "tags": [ + "remove-input" + ] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "display_quiz('https://raw.githubusercontent.com/jmshea/intro-data-science-for-engineers/main/questions/ch2.json', 2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Key Take-aways:**\n", + "* Pandas stores data in dataframes. **Dataframes store tabular data, like spreadsheets or database tables.**\n", + "* **Pandas can import data from standard file formats**, including comma-separated value (CSV) files and Excel files.\n", + "* **Scatter plots are useful for initial data exploration and identifying outliers.**\n", + "* **Partitions divide data into disjoint subsets.**\n", + "* **Summary statistics represent a group of data by a single number.** \n", + "* **Common summary statistics minimize a measure of error from the summary statistic to the data:**\n", + " * Mode minimizes the *error count*.\n", + " * Median minimizes the *sum of absolute errors*.\n", + " * Average, or sample mean, minimizes the *sum of squared errors*.\n", + "* A **statistical hypothesis is a hypothesis that is testable using data.**\n", + "* A **binary hypothesis test is a statistical test that decides between two competing statistical hypotheses.**\n", + " * A **null hypothesis, denoted $H_0$ assumes that the data being evaluated come from the same underlying random phenomena**. Observed differences are caused by random sampling.\n", + "* **Resampling is a model-free technique to draw new samples of data for use in statistical testing.**\n", + " * **Bootstrap resampling is when data is drawn from the pooled data with replacement.**\n", + "* **Two-dimensional statistical methods can be used to directly work with pairs of data** through techniques such as curve fitting." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "celltoolbar": "Edit Metadata", + "finalized": { + "timestamp": 1622574926456, + "trusted": true + }, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sphinx_design_static/design-style.4045f2051d55cab465a707391d5b2007.min.css b/_sphinx_design_static/design-style.4045f2051d55cab465a707391d5b2007.min.css new file mode 100644 index 00000000..3225661c --- /dev/null +++ b/_sphinx_design_static/design-style.4045f2051d55cab465a707391d5b2007.min.css @@ -0,0 +1 @@ +.sd-bg-primary{background-color:var(--sd-color-primary) !important}.sd-bg-text-primary{color:var(--sd-color-primary-text) !important}button.sd-bg-primary:focus,button.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}a.sd-bg-primary:focus,a.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}.sd-bg-secondary{background-color:var(--sd-color-secondary) !important}.sd-bg-text-secondary{color:var(--sd-color-secondary-text) !important}button.sd-bg-secondary:focus,button.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}a.sd-bg-secondary:focus,a.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}.sd-bg-success{background-color:var(--sd-color-success) !important}.sd-bg-text-success{color:var(--sd-color-success-text) !important}button.sd-bg-success:focus,button.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}a.sd-bg-success:focus,a.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}.sd-bg-info{background-color:var(--sd-color-info) !important}.sd-bg-text-info{color:var(--sd-color-info-text) !important}button.sd-bg-info:focus,button.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}a.sd-bg-info:focus,a.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}.sd-bg-warning{background-color:var(--sd-color-warning) !important}.sd-bg-text-warning{color:var(--sd-color-warning-text) !important}button.sd-bg-warning:focus,button.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}a.sd-bg-warning:focus,a.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}.sd-bg-danger{background-color:var(--sd-color-danger) !important}.sd-bg-text-danger{color:var(--sd-color-danger-text) !important}button.sd-bg-danger:focus,button.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}a.sd-bg-danger:focus,a.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}.sd-bg-light{background-color:var(--sd-color-light) !important}.sd-bg-text-light{color:var(--sd-color-light-text) !important}button.sd-bg-light:focus,button.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}a.sd-bg-light:focus,a.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}.sd-bg-muted{background-color:var(--sd-color-muted) !important}.sd-bg-text-muted{color:var(--sd-color-muted-text) !important}button.sd-bg-muted:focus,button.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}a.sd-bg-muted:focus,a.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}.sd-bg-dark{background-color:var(--sd-color-dark) !important}.sd-bg-text-dark{color:var(--sd-color-dark-text) !important}button.sd-bg-dark:focus,button.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}a.sd-bg-dark:focus,a.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}.sd-bg-black{background-color:var(--sd-color-black) !important}.sd-bg-text-black{color:var(--sd-color-black-text) !important}button.sd-bg-black:focus,button.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}a.sd-bg-black:focus,a.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}.sd-bg-white{background-color:var(--sd-color-white) !important}.sd-bg-text-white{color:var(--sd-color-white-text) !important}button.sd-bg-white:focus,button.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}a.sd-bg-white:focus,a.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}.sd-text-primary,.sd-text-primary>p{color:var(--sd-color-primary) !important}a.sd-text-primary:focus,a.sd-text-primary:hover{color:var(--sd-color-primary-highlight) !important}.sd-text-secondary,.sd-text-secondary>p{color:var(--sd-color-secondary) !important}a.sd-text-secondary:focus,a.sd-text-secondary:hover{color:var(--sd-color-secondary-highlight) !important}.sd-text-success,.sd-text-success>p{color:var(--sd-color-success) !important}a.sd-text-success:focus,a.sd-text-success:hover{color:var(--sd-color-success-highlight) !important}.sd-text-info,.sd-text-info>p{color:var(--sd-color-info) !important}a.sd-text-info:focus,a.sd-text-info:hover{color:var(--sd-color-info-highlight) !important}.sd-text-warning,.sd-text-warning>p{color:var(--sd-color-warning) !important}a.sd-text-warning:focus,a.sd-text-warning:hover{color:var(--sd-color-warning-highlight) !important}.sd-text-danger,.sd-text-danger>p{color:var(--sd-color-danger) !important}a.sd-text-danger:focus,a.sd-text-danger:hover{color:var(--sd-color-danger-highlight) !important}.sd-text-light,.sd-text-light>p{color:var(--sd-color-light) !important}a.sd-text-light:focus,a.sd-text-light:hover{color:var(--sd-color-light-highlight) !important}.sd-text-muted,.sd-text-muted>p{color:var(--sd-color-muted) !important}a.sd-text-muted:focus,a.sd-text-muted:hover{color:var(--sd-color-muted-highlight) !important}.sd-text-dark,.sd-text-dark>p{color:var(--sd-color-dark) !important}a.sd-text-dark:focus,a.sd-text-dark:hover{color:var(--sd-color-dark-highlight) !important}.sd-text-black,.sd-text-black>p{color:var(--sd-color-black) !important}a.sd-text-black:focus,a.sd-text-black:hover{color:var(--sd-color-black-highlight) !important}.sd-text-white,.sd-text-white>p{color:var(--sd-color-white) !important}a.sd-text-white:focus,a.sd-text-white:hover{color:var(--sd-color-white-highlight) !important}.sd-outline-primary{border-color:var(--sd-color-primary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-primary:focus,a.sd-outline-primary:hover{border-color:var(--sd-color-primary-highlight) !important}.sd-outline-secondary{border-color:var(--sd-color-secondary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-secondary:focus,a.sd-outline-secondary:hover{border-color:var(--sd-color-secondary-highlight) !important}.sd-outline-success{border-color:var(--sd-color-success) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-success:focus,a.sd-outline-success:hover{border-color:var(--sd-color-success-highlight) !important}.sd-outline-info{border-color:var(--sd-color-info) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-info:focus,a.sd-outline-info:hover{border-color:var(--sd-color-info-highlight) !important}.sd-outline-warning{border-color:var(--sd-color-warning) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-warning:focus,a.sd-outline-warning:hover{border-color:var(--sd-color-warning-highlight) !important}.sd-outline-danger{border-color:var(--sd-color-danger) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-danger:focus,a.sd-outline-danger:hover{border-color:var(--sd-color-danger-highlight) !important}.sd-outline-light{border-color:var(--sd-color-light) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-light:focus,a.sd-outline-light:hover{border-color:var(--sd-color-light-highlight) !important}.sd-outline-muted{border-color:var(--sd-color-muted) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-muted:focus,a.sd-outline-muted:hover{border-color:var(--sd-color-muted-highlight) !important}.sd-outline-dark{border-color:var(--sd-color-dark) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-dark:focus,a.sd-outline-dark:hover{border-color:var(--sd-color-dark-highlight) !important}.sd-outline-black{border-color:var(--sd-color-black) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-black:focus,a.sd-outline-black:hover{border-color:var(--sd-color-black-highlight) !important}.sd-outline-white{border-color:var(--sd-color-white) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-white:focus,a.sd-outline-white:hover{border-color:var(--sd-color-white-highlight) !important}.sd-bg-transparent{background-color:transparent !important}.sd-outline-transparent{border-color:transparent !important}.sd-text-transparent{color:transparent !important}.sd-p-0{padding:0 !important}.sd-pt-0,.sd-py-0{padding-top:0 !important}.sd-pr-0,.sd-px-0{padding-right:0 !important}.sd-pb-0,.sd-py-0{padding-bottom:0 !important}.sd-pl-0,.sd-px-0{padding-left:0 !important}.sd-p-1{padding:.25rem !important}.sd-pt-1,.sd-py-1{padding-top:.25rem !important}.sd-pr-1,.sd-px-1{padding-right:.25rem !important}.sd-pb-1,.sd-py-1{padding-bottom:.25rem !important}.sd-pl-1,.sd-px-1{padding-left:.25rem !important}.sd-p-2{padding:.5rem !important}.sd-pt-2,.sd-py-2{padding-top:.5rem !important}.sd-pr-2,.sd-px-2{padding-right:.5rem !important}.sd-pb-2,.sd-py-2{padding-bottom:.5rem !important}.sd-pl-2,.sd-px-2{padding-left:.5rem !important}.sd-p-3{padding:1rem !important}.sd-pt-3,.sd-py-3{padding-top:1rem !important}.sd-pr-3,.sd-px-3{padding-right:1rem !important}.sd-pb-3,.sd-py-3{padding-bottom:1rem !important}.sd-pl-3,.sd-px-3{padding-left:1rem !important}.sd-p-4{padding:1.5rem !important}.sd-pt-4,.sd-py-4{padding-top:1.5rem !important}.sd-pr-4,.sd-px-4{padding-right:1.5rem !important}.sd-pb-4,.sd-py-4{padding-bottom:1.5rem !important}.sd-pl-4,.sd-px-4{padding-left:1.5rem !important}.sd-p-5{padding:3rem !important}.sd-pt-5,.sd-py-5{padding-top:3rem !important}.sd-pr-5,.sd-px-5{padding-right:3rem !important}.sd-pb-5,.sd-py-5{padding-bottom:3rem !important}.sd-pl-5,.sd-px-5{padding-left:3rem !important}.sd-m-auto{margin:auto !important}.sd-mt-auto,.sd-my-auto{margin-top:auto !important}.sd-mr-auto,.sd-mx-auto{margin-right:auto !important}.sd-mb-auto,.sd-my-auto{margin-bottom:auto !important}.sd-ml-auto,.sd-mx-auto{margin-left:auto !important}.sd-m-0{margin:0 !important}.sd-mt-0,.sd-my-0{margin-top:0 !important}.sd-mr-0,.sd-mx-0{margin-right:0 !important}.sd-mb-0,.sd-my-0{margin-bottom:0 !important}.sd-ml-0,.sd-mx-0{margin-left:0 !important}.sd-m-1{margin:.25rem !important}.sd-mt-1,.sd-my-1{margin-top:.25rem !important}.sd-mr-1,.sd-mx-1{margin-right:.25rem !important}.sd-mb-1,.sd-my-1{margin-bottom:.25rem !important}.sd-ml-1,.sd-mx-1{margin-left:.25rem !important}.sd-m-2{margin:.5rem !important}.sd-mt-2,.sd-my-2{margin-top:.5rem !important}.sd-mr-2,.sd-mx-2{margin-right:.5rem !important}.sd-mb-2,.sd-my-2{margin-bottom:.5rem !important}.sd-ml-2,.sd-mx-2{margin-left:.5rem !important}.sd-m-3{margin:1rem !important}.sd-mt-3,.sd-my-3{margin-top:1rem !important}.sd-mr-3,.sd-mx-3{margin-right:1rem !important}.sd-mb-3,.sd-my-3{margin-bottom:1rem !important}.sd-ml-3,.sd-mx-3{margin-left:1rem !important}.sd-m-4{margin:1.5rem !important}.sd-mt-4,.sd-my-4{margin-top:1.5rem !important}.sd-mr-4,.sd-mx-4{margin-right:1.5rem !important}.sd-mb-4,.sd-my-4{margin-bottom:1.5rem !important}.sd-ml-4,.sd-mx-4{margin-left:1.5rem !important}.sd-m-5{margin:3rem !important}.sd-mt-5,.sd-my-5{margin-top:3rem !important}.sd-mr-5,.sd-mx-5{margin-right:3rem !important}.sd-mb-5,.sd-my-5{margin-bottom:3rem !important}.sd-ml-5,.sd-mx-5{margin-left:3rem !important}.sd-w-25{width:25% !important}.sd-w-50{width:50% !important}.sd-w-75{width:75% !important}.sd-w-100{width:100% !important}.sd-w-auto{width:auto !important}.sd-h-25{height:25% !important}.sd-h-50{height:50% !important}.sd-h-75{height:75% !important}.sd-h-100{height:100% !important}.sd-h-auto{height:auto !important}.sd-d-none{display:none !important}.sd-d-inline{display:inline !important}.sd-d-inline-block{display:inline-block !important}.sd-d-block{display:block !important}.sd-d-grid{display:grid !important}.sd-d-flex-row{display:-ms-flexbox !important;display:flex !important;flex-direction:row !important}.sd-d-flex-column{display:-ms-flexbox !important;display:flex !important;flex-direction:column !important}.sd-d-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}@media(min-width: 576px){.sd-d-sm-none{display:none !important}.sd-d-sm-inline{display:inline !important}.sd-d-sm-inline-block{display:inline-block !important}.sd-d-sm-block{display:block !important}.sd-d-sm-grid{display:grid !important}.sd-d-sm-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-sm-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 768px){.sd-d-md-none{display:none !important}.sd-d-md-inline{display:inline !important}.sd-d-md-inline-block{display:inline-block !important}.sd-d-md-block{display:block !important}.sd-d-md-grid{display:grid !important}.sd-d-md-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-md-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 992px){.sd-d-lg-none{display:none !important}.sd-d-lg-inline{display:inline !important}.sd-d-lg-inline-block{display:inline-block !important}.sd-d-lg-block{display:block !important}.sd-d-lg-grid{display:grid !important}.sd-d-lg-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-lg-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 1200px){.sd-d-xl-none{display:none !important}.sd-d-xl-inline{display:inline !important}.sd-d-xl-inline-block{display:inline-block !important}.sd-d-xl-block{display:block !important}.sd-d-xl-grid{display:grid !important}.sd-d-xl-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-xl-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}.sd-align-major-start{justify-content:flex-start !important}.sd-align-major-end{justify-content:flex-end !important}.sd-align-major-center{justify-content:center !important}.sd-align-major-justify{justify-content:space-between !important}.sd-align-major-spaced{justify-content:space-evenly !important}.sd-align-minor-start{align-items:flex-start !important}.sd-align-minor-end{align-items:flex-end !important}.sd-align-minor-center{align-items:center !important}.sd-align-minor-stretch{align-items:stretch !important}.sd-text-justify{text-align:justify !important}.sd-text-left{text-align:left !important}.sd-text-right{text-align:right !important}.sd-text-center{text-align:center !important}.sd-font-weight-light{font-weight:300 !important}.sd-font-weight-lighter{font-weight:lighter !important}.sd-font-weight-normal{font-weight:400 !important}.sd-font-weight-bold{font-weight:700 !important}.sd-font-weight-bolder{font-weight:bolder !important}.sd-font-italic{font-style:italic !important}.sd-text-decoration-none{text-decoration:none !important}.sd-text-lowercase{text-transform:lowercase !important}.sd-text-uppercase{text-transform:uppercase !important}.sd-text-capitalize{text-transform:capitalize !important}.sd-text-wrap{white-space:normal !important}.sd-text-nowrap{white-space:nowrap !important}.sd-text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sd-fs-1,.sd-fs-1>p{font-size:calc(1.375rem + 1.5vw) !important;line-height:unset !important}.sd-fs-2,.sd-fs-2>p{font-size:calc(1.325rem + 0.9vw) !important;line-height:unset !important}.sd-fs-3,.sd-fs-3>p{font-size:calc(1.3rem + 0.6vw) !important;line-height:unset !important}.sd-fs-4,.sd-fs-4>p{font-size:calc(1.275rem + 0.3vw) !important;line-height:unset !important}.sd-fs-5,.sd-fs-5>p{font-size:1.25rem !important;line-height:unset !important}.sd-fs-6,.sd-fs-6>p{font-size:1rem !important;line-height:unset !important}.sd-border-0{border:0 solid !important}.sd-border-top-0{border-top:0 solid !important}.sd-border-bottom-0{border-bottom:0 solid !important}.sd-border-right-0{border-right:0 solid !important}.sd-border-left-0{border-left:0 solid !important}.sd-border-1{border:1px solid !important}.sd-border-top-1{border-top:1px solid !important}.sd-border-bottom-1{border-bottom:1px solid !important}.sd-border-right-1{border-right:1px solid !important}.sd-border-left-1{border-left:1px solid !important}.sd-border-2{border:2px solid !important}.sd-border-top-2{border-top:2px solid !important}.sd-border-bottom-2{border-bottom:2px solid !important}.sd-border-right-2{border-right:2px solid !important}.sd-border-left-2{border-left:2px solid !important}.sd-border-3{border:3px solid !important}.sd-border-top-3{border-top:3px solid !important}.sd-border-bottom-3{border-bottom:3px solid !important}.sd-border-right-3{border-right:3px solid !important}.sd-border-left-3{border-left:3px solid !important}.sd-border-4{border:4px solid !important}.sd-border-top-4{border-top:4px solid !important}.sd-border-bottom-4{border-bottom:4px solid !important}.sd-border-right-4{border-right:4px solid !important}.sd-border-left-4{border-left:4px solid !important}.sd-border-5{border:5px solid !important}.sd-border-top-5{border-top:5px solid !important}.sd-border-bottom-5{border-bottom:5px solid !important}.sd-border-right-5{border-right:5px solid !important}.sd-border-left-5{border-left:5px solid !important}.sd-rounded-0{border-radius:0 !important}.sd-rounded-1{border-radius:.2rem !important}.sd-rounded-2{border-radius:.3rem !important}.sd-rounded-3{border-radius:.5rem !important}.sd-rounded-pill{border-radius:50rem !important}.sd-rounded-circle{border-radius:50% !important}.shadow-none{box-shadow:none !important}.sd-shadow-sm{box-shadow:0 .125rem .25rem var(--sd-color-shadow) !important}.sd-shadow-md{box-shadow:0 .5rem 1rem var(--sd-color-shadow) !important}.sd-shadow-lg{box-shadow:0 1rem 3rem var(--sd-color-shadow) !important}@keyframes sd-slide-from-left{0%{transform:translateX(-100%)}100%{transform:translateX(0)}}@keyframes sd-slide-from-right{0%{transform:translateX(200%)}100%{transform:translateX(0)}}@keyframes sd-grow100{0%{transform:scale(0);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50{0%{transform:scale(0.5);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50-rot20{0%{transform:scale(0.5) rotateZ(-20deg);opacity:.5}75%{transform:scale(1) rotateZ(5deg);opacity:1}95%{transform:scale(1) rotateZ(-1deg);opacity:1}100%{transform:scale(1) rotateZ(0);opacity:1}}.sd-animate-slide-from-left{animation:1s ease-out 0s 1 normal none running sd-slide-from-left}.sd-animate-slide-from-right{animation:1s ease-out 0s 1 normal none running sd-slide-from-right}.sd-animate-grow100{animation:1s ease-out 0s 1 normal none running sd-grow100}.sd-animate-grow50{animation:1s ease-out 0s 1 normal none running sd-grow50}.sd-animate-grow50-rot20{animation:1s ease-out 0s 1 normal none running sd-grow50-rot20}.sd-badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.sd-badge:empty{display:none}a.sd-badge{text-decoration:none}.sd-btn .sd-badge{position:relative;top:-1px}.sd-btn{background-color:transparent;border:1px solid transparent;border-radius:.25rem;cursor:pointer;display:inline-block;font-weight:400;font-size:1rem;line-height:1.5;padding:.375rem .75rem;text-align:center;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;vertical-align:middle;user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none}.sd-btn:hover{text-decoration:none}@media(prefers-reduced-motion: reduce){.sd-btn{transition:none}}.sd-btn-primary,.sd-btn-outline-primary:hover,.sd-btn-outline-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-primary:hover,.sd-btn-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary-highlight) !important;border-color:var(--sd-color-primary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-primary{color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary,.sd-btn-outline-secondary:hover,.sd-btn-outline-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary:hover,.sd-btn-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary-highlight) !important;border-color:var(--sd-color-secondary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-secondary{color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success,.sd-btn-outline-success:hover,.sd-btn-outline-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success:hover,.sd-btn-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success-highlight) !important;border-color:var(--sd-color-success-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-success{color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info,.sd-btn-outline-info:hover,.sd-btn-outline-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info:hover,.sd-btn-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info-highlight) !important;border-color:var(--sd-color-info-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-info{color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning,.sd-btn-outline-warning:hover,.sd-btn-outline-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning:hover,.sd-btn-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning-highlight) !important;border-color:var(--sd-color-warning-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-warning{color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger,.sd-btn-outline-danger:hover,.sd-btn-outline-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger:hover,.sd-btn-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger-highlight) !important;border-color:var(--sd-color-danger-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-danger{color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light,.sd-btn-outline-light:hover,.sd-btn-outline-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light:hover,.sd-btn-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light-highlight) !important;border-color:var(--sd-color-light-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-light{color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted,.sd-btn-outline-muted:hover,.sd-btn-outline-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted:hover,.sd-btn-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted-highlight) !important;border-color:var(--sd-color-muted-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-muted{color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark,.sd-btn-outline-dark:hover,.sd-btn-outline-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark:hover,.sd-btn-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark-highlight) !important;border-color:var(--sd-color-dark-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-dark{color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black,.sd-btn-outline-black:hover,.sd-btn-outline-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black:hover,.sd-btn-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black-highlight) !important;border-color:var(--sd-color-black-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-black{color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white,.sd-btn-outline-white:hover,.sd-btn-outline-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white:hover,.sd-btn-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white-highlight) !important;border-color:var(--sd-color-white-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-white{color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.sd-hide-link-text{font-size:0}.sd-octicon,.sd-material-icon{display:inline-block;fill:currentColor;vertical-align:middle}.sd-avatar-xs{border-radius:50%;object-fit:cover;object-position:center;width:1rem;height:1rem}.sd-avatar-sm{border-radius:50%;object-fit:cover;object-position:center;width:3rem;height:3rem}.sd-avatar-md{border-radius:50%;object-fit:cover;object-position:center;width:5rem;height:5rem}.sd-avatar-lg{border-radius:50%;object-fit:cover;object-position:center;width:7rem;height:7rem}.sd-avatar-xl{border-radius:50%;object-fit:cover;object-position:center;width:10rem;height:10rem}.sd-avatar-inherit{border-radius:50%;object-fit:cover;object-position:center;width:inherit;height:inherit}.sd-avatar-initial{border-radius:50%;object-fit:cover;object-position:center;width:initial;height:initial}.sd-card{background-clip:border-box;background-color:var(--sd-color-card-background);border:1px solid var(--sd-color-card-border);border-radius:.25rem;color:var(--sd-color-card-text);display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;position:relative;word-wrap:break-word}.sd-card>hr{margin-left:0;margin-right:0}.sd-card-hover:hover{border-color:var(--sd-color-card-border-hover);transform:scale(1.01)}.sd-card-body{-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem 1rem}.sd-card-title{margin-bottom:.5rem}.sd-card-subtitle{margin-top:-0.25rem;margin-bottom:0}.sd-card-text:last-child{margin-bottom:0}.sd-card-link:hover{text-decoration:none}.sd-card-link+.card-link{margin-left:1rem}.sd-card-header{padding:.5rem 1rem;margin-bottom:0;background-color:var(--sd-color-card-header);border-bottom:1px solid var(--sd-color-card-border)}.sd-card-header:first-child{border-radius:calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0}.sd-card-footer{padding:.5rem 1rem;background-color:var(--sd-color-card-footer);border-top:1px solid var(--sd-color-card-border)}.sd-card-footer:last-child{border-radius:0 0 calc(0.25rem - 1px) calc(0.25rem - 1px)}.sd-card-header-tabs{margin-right:-0.5rem;margin-bottom:-0.5rem;margin-left:-0.5rem;border-bottom:0}.sd-card-header-pills{margin-right:-0.5rem;margin-left:-0.5rem}.sd-card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom,.sd-card-img-top{width:100%}.sd-card-img,.sd-card-img-top{border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom{border-bottom-left-radius:calc(0.25rem - 1px);border-bottom-right-radius:calc(0.25rem - 1px)}.sd-cards-carousel{width:100%;display:flex;flex-wrap:nowrap;-ms-flex-direction:row;flex-direction:row;overflow-x:hidden;scroll-snap-type:x mandatory}.sd-cards-carousel.sd-show-scrollbar{overflow-x:auto}.sd-cards-carousel:hover,.sd-cards-carousel:focus{overflow-x:auto}.sd-cards-carousel>.sd-card{flex-shrink:0;scroll-snap-align:start}.sd-cards-carousel>.sd-card:not(:last-child){margin-right:3px}.sd-card-cols-1>.sd-card{width:90%}.sd-card-cols-2>.sd-card{width:45%}.sd-card-cols-3>.sd-card{width:30%}.sd-card-cols-4>.sd-card{width:22.5%}.sd-card-cols-5>.sd-card{width:18%}.sd-card-cols-6>.sd-card{width:15%}.sd-card-cols-7>.sd-card{width:12.8571428571%}.sd-card-cols-8>.sd-card{width:11.25%}.sd-card-cols-9>.sd-card{width:10%}.sd-card-cols-10>.sd-card{width:9%}.sd-card-cols-11>.sd-card{width:8.1818181818%}.sd-card-cols-12>.sd-card{width:7.5%}.sd-container,.sd-container-fluid,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container-xl{margin-left:auto;margin-right:auto;padding-left:var(--sd-gutter-x, 0.75rem);padding-right:var(--sd-gutter-x, 0.75rem);width:100%}@media(min-width: 576px){.sd-container-sm,.sd-container{max-width:540px}}@media(min-width: 768px){.sd-container-md,.sd-container-sm,.sd-container{max-width:720px}}@media(min-width: 992px){.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:960px}}@media(min-width: 1200px){.sd-container-xl,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:1140px}}.sd-row{--sd-gutter-x: 1.5rem;--sd-gutter-y: 0;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:calc(var(--sd-gutter-y) * -1);margin-right:calc(var(--sd-gutter-x) * -0.5);margin-left:calc(var(--sd-gutter-x) * -0.5)}.sd-row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--sd-gutter-x) * 0.5);padding-left:calc(var(--sd-gutter-x) * 0.5);margin-top:var(--sd-gutter-y)}.sd-col{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-auto>*{flex:0 0 auto;width:auto}.sd-row-cols-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}@media(min-width: 576px){.sd-col-sm{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-sm-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-sm-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-sm-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-sm-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-sm-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-sm-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-sm-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-sm-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-sm-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-sm-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-sm-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-sm-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-sm-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 768px){.sd-col-md{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-md-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-md-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-md-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-md-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-md-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-md-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-md-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-md-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-md-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-md-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-md-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-md-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-md-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 992px){.sd-col-lg{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-lg-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-lg-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-lg-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-lg-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-lg-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-lg-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-lg-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-lg-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-lg-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-lg-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-lg-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-lg-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-lg-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 1200px){.sd-col-xl{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-xl-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-xl-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-xl-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-xl-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-xl-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-xl-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-xl-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-xl-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-xl-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-xl-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-xl-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-xl-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-xl-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}.sd-col-auto{flex:0 0 auto;-ms-flex:0 0 auto;width:auto}.sd-col-1{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}.sd-col-2{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-col-3{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-col-4{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-col-5{flex:0 0 auto;-ms-flex:0 0 auto;width:41.6666666667%}.sd-col-6{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-col-7{flex:0 0 auto;-ms-flex:0 0 auto;width:58.3333333333%}.sd-col-8{flex:0 0 auto;-ms-flex:0 0 auto;width:66.6666666667%}.sd-col-9{flex:0 0 auto;-ms-flex:0 0 auto;width:75%}.sd-col-10{flex:0 0 auto;-ms-flex:0 0 auto;width:83.3333333333%}.sd-col-11{flex:0 0 auto;-ms-flex:0 0 auto;width:91.6666666667%}.sd-col-12{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-g-0,.sd-gy-0{--sd-gutter-y: 0}.sd-g-0,.sd-gx-0{--sd-gutter-x: 0}.sd-g-1,.sd-gy-1{--sd-gutter-y: 0.25rem}.sd-g-1,.sd-gx-1{--sd-gutter-x: 0.25rem}.sd-g-2,.sd-gy-2{--sd-gutter-y: 0.5rem}.sd-g-2,.sd-gx-2{--sd-gutter-x: 0.5rem}.sd-g-3,.sd-gy-3{--sd-gutter-y: 1rem}.sd-g-3,.sd-gx-3{--sd-gutter-x: 1rem}.sd-g-4,.sd-gy-4{--sd-gutter-y: 1.5rem}.sd-g-4,.sd-gx-4{--sd-gutter-x: 1.5rem}.sd-g-5,.sd-gy-5{--sd-gutter-y: 3rem}.sd-g-5,.sd-gx-5{--sd-gutter-x: 3rem}@media(min-width: 576px){.sd-col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-sm-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-sm-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-sm-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-sm-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-sm-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-sm-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-sm-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-sm-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-sm-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-sm-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-sm-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-sm-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-sm-0,.sd-gy-sm-0{--sd-gutter-y: 0}.sd-g-sm-0,.sd-gx-sm-0{--sd-gutter-x: 0}.sd-g-sm-1,.sd-gy-sm-1{--sd-gutter-y: 0.25rem}.sd-g-sm-1,.sd-gx-sm-1{--sd-gutter-x: 0.25rem}.sd-g-sm-2,.sd-gy-sm-2{--sd-gutter-y: 0.5rem}.sd-g-sm-2,.sd-gx-sm-2{--sd-gutter-x: 0.5rem}.sd-g-sm-3,.sd-gy-sm-3{--sd-gutter-y: 1rem}.sd-g-sm-3,.sd-gx-sm-3{--sd-gutter-x: 1rem}.sd-g-sm-4,.sd-gy-sm-4{--sd-gutter-y: 1.5rem}.sd-g-sm-4,.sd-gx-sm-4{--sd-gutter-x: 1.5rem}.sd-g-sm-5,.sd-gy-sm-5{--sd-gutter-y: 3rem}.sd-g-sm-5,.sd-gx-sm-5{--sd-gutter-x: 3rem}}@media(min-width: 768px){.sd-col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-md-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-md-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-md-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-md-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-md-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-md-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-md-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-md-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-md-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-md-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-md-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-md-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-md-0,.sd-gy-md-0{--sd-gutter-y: 0}.sd-g-md-0,.sd-gx-md-0{--sd-gutter-x: 0}.sd-g-md-1,.sd-gy-md-1{--sd-gutter-y: 0.25rem}.sd-g-md-1,.sd-gx-md-1{--sd-gutter-x: 0.25rem}.sd-g-md-2,.sd-gy-md-2{--sd-gutter-y: 0.5rem}.sd-g-md-2,.sd-gx-md-2{--sd-gutter-x: 0.5rem}.sd-g-md-3,.sd-gy-md-3{--sd-gutter-y: 1rem}.sd-g-md-3,.sd-gx-md-3{--sd-gutter-x: 1rem}.sd-g-md-4,.sd-gy-md-4{--sd-gutter-y: 1.5rem}.sd-g-md-4,.sd-gx-md-4{--sd-gutter-x: 1.5rem}.sd-g-md-5,.sd-gy-md-5{--sd-gutter-y: 3rem}.sd-g-md-5,.sd-gx-md-5{--sd-gutter-x: 3rem}}@media(min-width: 992px){.sd-col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-lg-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-lg-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-lg-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-lg-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-lg-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-lg-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-lg-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-lg-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-lg-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-lg-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-lg-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-lg-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-lg-0,.sd-gy-lg-0{--sd-gutter-y: 0}.sd-g-lg-0,.sd-gx-lg-0{--sd-gutter-x: 0}.sd-g-lg-1,.sd-gy-lg-1{--sd-gutter-y: 0.25rem}.sd-g-lg-1,.sd-gx-lg-1{--sd-gutter-x: 0.25rem}.sd-g-lg-2,.sd-gy-lg-2{--sd-gutter-y: 0.5rem}.sd-g-lg-2,.sd-gx-lg-2{--sd-gutter-x: 0.5rem}.sd-g-lg-3,.sd-gy-lg-3{--sd-gutter-y: 1rem}.sd-g-lg-3,.sd-gx-lg-3{--sd-gutter-x: 1rem}.sd-g-lg-4,.sd-gy-lg-4{--sd-gutter-y: 1.5rem}.sd-g-lg-4,.sd-gx-lg-4{--sd-gutter-x: 1.5rem}.sd-g-lg-5,.sd-gy-lg-5{--sd-gutter-y: 3rem}.sd-g-lg-5,.sd-gx-lg-5{--sd-gutter-x: 3rem}}@media(min-width: 1200px){.sd-col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-xl-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-xl-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-xl-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-xl-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-xl-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-xl-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-xl-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-xl-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-xl-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-xl-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-xl-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-xl-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-xl-0,.sd-gy-xl-0{--sd-gutter-y: 0}.sd-g-xl-0,.sd-gx-xl-0{--sd-gutter-x: 0}.sd-g-xl-1,.sd-gy-xl-1{--sd-gutter-y: 0.25rem}.sd-g-xl-1,.sd-gx-xl-1{--sd-gutter-x: 0.25rem}.sd-g-xl-2,.sd-gy-xl-2{--sd-gutter-y: 0.5rem}.sd-g-xl-2,.sd-gx-xl-2{--sd-gutter-x: 0.5rem}.sd-g-xl-3,.sd-gy-xl-3{--sd-gutter-y: 1rem}.sd-g-xl-3,.sd-gx-xl-3{--sd-gutter-x: 1rem}.sd-g-xl-4,.sd-gy-xl-4{--sd-gutter-y: 1.5rem}.sd-g-xl-4,.sd-gx-xl-4{--sd-gutter-x: 1.5rem}.sd-g-xl-5,.sd-gy-xl-5{--sd-gutter-y: 3rem}.sd-g-xl-5,.sd-gx-xl-5{--sd-gutter-x: 3rem}}.sd-flex-row-reverse{flex-direction:row-reverse !important}details.sd-dropdown{position:relative}details.sd-dropdown .sd-summary-title{font-weight:700;padding-right:3em !important;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none}details.sd-dropdown:hover{cursor:pointer}details.sd-dropdown .sd-summary-content{cursor:default}details.sd-dropdown summary{list-style:none;padding:1em}details.sd-dropdown summary .sd-octicon.no-title{vertical-align:middle}details.sd-dropdown[open] summary .sd-octicon.no-title{visibility:hidden}details.sd-dropdown summary::-webkit-details-marker{display:none}details.sd-dropdown summary:focus{outline:none}details.sd-dropdown .sd-summary-icon{margin-right:.5em}details.sd-dropdown .sd-summary-icon svg{opacity:.8}details.sd-dropdown summary:hover .sd-summary-up svg,details.sd-dropdown summary:hover .sd-summary-down svg{opacity:1;transform:scale(1.1)}details.sd-dropdown .sd-summary-up svg,details.sd-dropdown .sd-summary-down svg{display:block;opacity:.6}details.sd-dropdown .sd-summary-up,details.sd-dropdown .sd-summary-down{pointer-events:none;position:absolute;right:1em;top:1em}details.sd-dropdown[open]>.sd-summary-title .sd-summary-down{visibility:hidden}details.sd-dropdown:not([open])>.sd-summary-title .sd-summary-up{visibility:hidden}details.sd-dropdown:not([open]).sd-card{border:none}details.sd-dropdown:not([open])>.sd-card-header{border:1px solid var(--sd-color-card-border);border-radius:.25rem}details.sd-dropdown.sd-fade-in[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out;animation:sd-fade-in .5s ease-in-out}details.sd-dropdown.sd-fade-in-slide-down[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out}.sd-col>.sd-dropdown{width:100%}.sd-summary-content>.sd-tab-set:first-child{margin-top:0}@keyframes sd-fade-in{0%{opacity:0}100%{opacity:1}}@keyframes sd-slide-down{0%{transform:translate(0, -10px)}100%{transform:translate(0, 0)}}.sd-tab-set{border-radius:.125rem;display:flex;flex-wrap:wrap;margin:1em 0;position:relative}.sd-tab-set>input{opacity:0;position:absolute}.sd-tab-set>input:checked+label{border-color:var(--sd-color-tabs-underline-active);color:var(--sd-color-tabs-label-active)}.sd-tab-set>input:checked+label+.sd-tab-content{display:block}.sd-tab-set>input:not(:checked)+label:hover{color:var(--sd-color-tabs-label-hover);border-color:var(--sd-color-tabs-underline-hover)}.sd-tab-set>input:focus+label{outline-style:auto}.sd-tab-set>input:not(.focus-visible)+label{outline:none;-webkit-tap-highlight-color:transparent}.sd-tab-set>label{border-bottom:.125rem solid transparent;margin-bottom:0;color:var(--sd-color-tabs-label-inactive);border-color:var(--sd-color-tabs-underline-inactive);cursor:pointer;font-size:var(--sd-fontsize-tabs-label);font-weight:700;padding:1em 1.25em .5em;transition:color 250ms;width:auto;z-index:1}html .sd-tab-set>label:hover{color:var(--sd-color-tabs-label-active)}.sd-col>.sd-tab-set{width:100%}.sd-tab-content{box-shadow:0 -0.0625rem var(--sd-color-tabs-overline),0 .0625rem var(--sd-color-tabs-underline);display:none;order:99;padding-bottom:.75rem;padding-top:.75rem;width:100%}.sd-tab-content>:first-child{margin-top:0 !important}.sd-tab-content>:last-child{margin-bottom:0 !important}.sd-tab-content>.sd-tab-set{margin:0}.sd-sphinx-override,.sd-sphinx-override *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sd-sphinx-override p{margin-top:0}:root{--sd-color-primary: #007bff;--sd-color-secondary: #6c757d;--sd-color-success: #28a745;--sd-color-info: #17a2b8;--sd-color-warning: #f0b37e;--sd-color-danger: #dc3545;--sd-color-light: #f8f9fa;--sd-color-muted: #6c757d;--sd-color-dark: #212529;--sd-color-black: black;--sd-color-white: white;--sd-color-primary-highlight: #0069d9;--sd-color-secondary-highlight: #5c636a;--sd-color-success-highlight: #228e3b;--sd-color-info-highlight: #148a9c;--sd-color-warning-highlight: #cc986b;--sd-color-danger-highlight: #bb2d3b;--sd-color-light-highlight: #d3d4d5;--sd-color-muted-highlight: #5c636a;--sd-color-dark-highlight: #1c1f23;--sd-color-black-highlight: black;--sd-color-white-highlight: #d9d9d9;--sd-color-primary-text: #fff;--sd-color-secondary-text: #fff;--sd-color-success-text: #fff;--sd-color-info-text: #fff;--sd-color-warning-text: #212529;--sd-color-danger-text: #fff;--sd-color-light-text: #212529;--sd-color-muted-text: #fff;--sd-color-dark-text: #fff;--sd-color-black-text: #fff;--sd-color-white-text: #212529;--sd-color-shadow: rgba(0, 0, 0, 0.15);--sd-color-card-border: rgba(0, 0, 0, 0.125);--sd-color-card-border-hover: hsla(231, 99%, 66%, 1);--sd-color-card-background: transparent;--sd-color-card-text: inherit;--sd-color-card-header: transparent;--sd-color-card-footer: transparent;--sd-color-tabs-label-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-hover: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-inactive: hsl(0, 0%, 66%);--sd-color-tabs-underline-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-underline-hover: rgba(178, 206, 245, 0.62);--sd-color-tabs-underline-inactive: transparent;--sd-color-tabs-overline: rgb(222, 222, 222);--sd-color-tabs-underline: rgb(222, 222, 222);--sd-fontsize-tabs-label: 1rem} diff --git a/_sphinx_design_static/design-tabs.js b/_sphinx_design_static/design-tabs.js new file mode 100644 index 00000000..36b38cf0 --- /dev/null +++ b/_sphinx_design_static/design-tabs.js @@ -0,0 +1,27 @@ +var sd_labels_by_text = {}; + +function ready() { + const li = document.getElementsByClassName("sd-tab-label"); + for (const label of li) { + syncId = label.getAttribute("data-sync-id"); + if (syncId) { + label.onclick = onLabelClick; + if (!sd_labels_by_text[syncId]) { + sd_labels_by_text[syncId] = []; + } + sd_labels_by_text[syncId].push(label); + } + } +} + +function onLabelClick() { + // Activate other inputs with the same sync id. + syncId = this.getAttribute("data-sync-id"); + for (label of sd_labels_by_text[syncId]) { + if (label === this) continue; + label.previousElementSibling.checked = true; + } + window.localStorage.setItem("sphinx-design-last-tab", syncId); +} + +document.addEventListener("DOMContentLoaded", ready, false); diff --git a/_static/_sphinx_javascript_frameworks_compat.js b/_static/_sphinx_javascript_frameworks_compat.js new file mode 100644 index 00000000..8549469d --- /dev/null +++ b/_static/_sphinx_javascript_frameworks_compat.js @@ -0,0 +1,134 @@ +/* + * _sphinx_javascript_frameworks_compat.js + * ~~~~~~~~~~ + * + * Compatability shim for jQuery and underscores.js. + * + * WILL BE REMOVED IN Sphinx 6.0 + * xref RemovedInSphinx60Warning + * + */ + +/** + * select a different prefix for underscore + */ +$u = _.noConflict(); + + +/** + * small helper function to urldecode strings + * + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL + */ +jQuery.urldecode = function(x) { + if (!x) { + return x + } + return decodeURIComponent(x.replace(/\+/g, ' ')); +}; + +/** + * small helper function to urlencode strings + */ +jQuery.urlencode = encodeURIComponent; + +/** + * This function returns the parsed url parameters of the + * current request. Multiple values per key are supported, + * it will always return arrays of strings for the value parts. + */ +jQuery.getQueryParameters = function(s) { + if (typeof s === 'undefined') + s = document.location.search; + var parts = s.substr(s.indexOf('?') + 1).split('&'); + var result = {}; + for (var i = 0; i < parts.length; i++) { + var tmp = parts[i].split('=', 2); + var key = jQuery.urldecode(tmp[0]); + var value = jQuery.urldecode(tmp[1]); + if (key in result) + result[key].push(value); + else + result[key] = [value]; + } + return result; +}; + +/** + * highlight a given string on a jquery object by wrapping it in + * span elements with the given class name. + */ +jQuery.fn.highlightText = function(text, className) { + function highlight(node, addItems) { + if (node.nodeType === 3) { + var val = node.nodeValue; + var pos = val.toLowerCase().indexOf(text); + if (pos >= 0 && + !jQuery(node.parentNode).hasClass(className) && + !jQuery(node.parentNode).hasClass("nohighlight")) { + var span; + var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.className = className; + } + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + node.parentNode.insertBefore(span, node.parentNode.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling)); + node.nodeValue = val.substr(0, pos); + if (isInSVG) { + var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); + var bbox = node.parentElement.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute('class', className); + addItems.push({ + "parent": node.parentNode, + "target": rect}); + } + } + } + else if (!jQuery(node).is("button, select, textarea")) { + jQuery.each(node.childNodes, function() { + highlight(this, addItems); + }); + } + } + var addItems = []; + var result = this.each(function() { + highlight(this, addItems); + }); + for (var i = 0; i < addItems.length; ++i) { + jQuery(addItems[i].parent).before(addItems[i].target); + } + return result; +}; + +/* + * backward compatibility for jQuery.browser + * This will be supported until firefox bug is fixed. + */ +if (!jQuery.browser) { + jQuery.uaMatch = function(ua) { + ua = ua.toLowerCase(); + + var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || + /(webkit)[ \/]([\w.]+)/.exec(ua) || + /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || + /(msie) ([\w.]+)/.exec(ua) || + ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || + []; + + return { + browser: match[ 1 ] || "", + version: match[ 2 ] || "0" + }; + }; + jQuery.browser = {}; + jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; +} diff --git a/_static/basic.css b/_static/basic.css new file mode 100644 index 00000000..9e364ed3 --- /dev/null +++ b/_static/basic.css @@ -0,0 +1,930 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 270px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li p.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 360px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, figure.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, figure.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar, +aside.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} +nav.contents, +aside.topic, + +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ +nav.contents, +aside.topic, + +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +nav.contents > :last-child, +aside.topic > :last-child, + +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +nav.contents::after, +aside.topic::after, + +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure, figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption, figcaption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number, +figcaption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text, +figcaption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +/* Docutils 0.17 and older (footnotes & citations) */ +dl.footnote > dt, +dl.citation > dt { + float: left; + margin-right: 0.5em; +} + +dl.footnote > dd, +dl.citation > dd { + margin-bottom: 0em; +} + +dl.footnote > dd:after, +dl.citation > dd:after { + content: ""; + clear: both; +} + +/* Docutils 0.18+ (footnotes & citations) */ +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type:after { + content: ""; + clear: both; +} + +/* Footnotes & citations ends */ + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dt:after { + content: ":"; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/_static/check-solid.svg b/_static/check-solid.svg new file mode 100644 index 00000000..92fad4b5 --- /dev/null +++ b/_static/check-solid.svg @@ -0,0 +1,4 @@ + + + + diff --git a/_static/clipboard.min.js b/_static/clipboard.min.js new file mode 100644 index 00000000..54b3c463 --- /dev/null +++ b/_static/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v2.0.8 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return o}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),c=n.n(e);function a(t){try{return document.execCommand(t)}catch(t){return}}var f=function(t){t=c()(t);return a("cut"),t};var l=function(t){var e,n,o,r=1 + + + + diff --git a/_static/copybutton.css b/_static/copybutton.css new file mode 100644 index 00000000..f1916ec7 --- /dev/null +++ b/_static/copybutton.css @@ -0,0 +1,94 @@ +/* Copy buttons */ +button.copybtn { + position: absolute; + display: flex; + top: .3em; + right: .3em; + width: 1.7em; + height: 1.7em; + opacity: 0; + transition: opacity 0.3s, border .3s, background-color .3s; + user-select: none; + padding: 0; + border: none; + outline: none; + border-radius: 0.4em; + /* The colors that GitHub uses */ + border: #1b1f2426 1px solid; + background-color: #f6f8fa; + color: #57606a; +} + +button.copybtn.success { + border-color: #22863a; + color: #22863a; +} + +button.copybtn svg { + stroke: currentColor; + width: 1.5em; + height: 1.5em; + padding: 0.1em; +} + +div.highlight { + position: relative; +} + +/* Show the copybutton */ +.highlight:hover button.copybtn, button.copybtn.success { + opacity: 1; +} + +.highlight button.copybtn:hover { + background-color: rgb(235, 235, 235); +} + +.highlight button.copybtn:active { + background-color: rgb(187, 187, 187); +} + +/** + * A minimal CSS-only tooltip copied from: + * https://codepen.io/mildrenben/pen/rVBrpK + * + * To use, write HTML like the following: + * + *

    Short

    + */ + .o-tooltip--left { + position: relative; + } + + .o-tooltip--left:after { + opacity: 0; + visibility: hidden; + position: absolute; + content: attr(data-tooltip); + padding: .2em; + font-size: .8em; + left: -.2em; + background: grey; + color: white; + white-space: nowrap; + z-index: 2; + border-radius: 2px; + transform: translateX(-102%) translateY(0); + transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); +} + +.o-tooltip--left:hover:after { + display: block; + opacity: 1; + visibility: visible; + transform: translateX(-100%) translateY(0); + transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); + transition-delay: .5s; +} + +/* By default the copy button shouldn't show up when printing a page */ +@media print { + button.copybtn { + display: none; + } +} diff --git a/_static/copybutton.js b/_static/copybutton.js new file mode 100644 index 00000000..2ea7ff3e --- /dev/null +++ b/_static/copybutton.js @@ -0,0 +1,248 @@ +// Localization support +const messages = { + 'en': { + 'copy': 'Copy', + 'copy_to_clipboard': 'Copy to clipboard', + 'copy_success': 'Copied!', + 'copy_failure': 'Failed to copy', + }, + 'es' : { + 'copy': 'Copiar', + 'copy_to_clipboard': 'Copiar al portapapeles', + 'copy_success': '¡Copiado!', + 'copy_failure': 'Error al copiar', + }, + 'de' : { + 'copy': 'Kopieren', + 'copy_to_clipboard': 'In die Zwischenablage kopieren', + 'copy_success': 'Kopiert!', + 'copy_failure': 'Fehler beim Kopieren', + }, + 'fr' : { + 'copy': 'Copier', + 'copy_to_clipboard': 'Copier dans le presse-papier', + 'copy_success': 'Copié !', + 'copy_failure': 'Échec de la copie', + }, + 'ru': { + 'copy': 'Скопировать', + 'copy_to_clipboard': 'Скопировать в буфер', + 'copy_success': 'Скопировано!', + 'copy_failure': 'Не удалось скопировать', + }, + 'zh-CN': { + 'copy': '复制', + 'copy_to_clipboard': '复制到剪贴板', + 'copy_success': '复制成功!', + 'copy_failure': '复制失败', + }, + 'it' : { + 'copy': 'Copiare', + 'copy_to_clipboard': 'Copiato negli appunti', + 'copy_success': 'Copiato!', + 'copy_failure': 'Errore durante la copia', + } +} + +let locale = 'en' +if( document.documentElement.lang !== undefined + && messages[document.documentElement.lang] !== undefined ) { + locale = document.documentElement.lang +} + +let doc_url_root = DOCUMENTATION_OPTIONS.URL_ROOT; +if (doc_url_root == '#') { + doc_url_root = ''; +} + +/** + * SVG files for our copy buttons + */ +let iconCheck = ` + ${messages[locale]['copy_success']} + + +` + +// If the user specified their own SVG use that, otherwise use the default +let iconCopy = ``; +if (!iconCopy) { + iconCopy = ` + ${messages[locale]['copy_to_clipboard']} + + + +` +} + +/** + * Set up copy/paste for code blocks + */ + +const runWhenDOMLoaded = cb => { + if (document.readyState != 'loading') { + cb() + } else if (document.addEventListener) { + document.addEventListener('DOMContentLoaded', cb) + } else { + document.attachEvent('onreadystatechange', function() { + if (document.readyState == 'complete') cb() + }) + } +} + +const codeCellId = index => `codecell${index}` + +// Clears selected text since ClipboardJS will select the text when copying +const clearSelection = () => { + if (window.getSelection) { + window.getSelection().removeAllRanges() + } else if (document.selection) { + document.selection.empty() + } +} + +// Changes tooltip text for a moment, then changes it back +// We want the timeout of our `success` class to be a bit shorter than the +// tooltip and icon change, so that we can hide the icon before changing back. +var timeoutIcon = 2000; +var timeoutSuccessClass = 1500; + +const temporarilyChangeTooltip = (el, oldText, newText) => { + el.setAttribute('data-tooltip', newText) + el.classList.add('success') + // Remove success a little bit sooner than we change the tooltip + // So that we can use CSS to hide the copybutton first + setTimeout(() => el.classList.remove('success'), timeoutSuccessClass) + setTimeout(() => el.setAttribute('data-tooltip', oldText), timeoutIcon) +} + +// Changes the copy button icon for two seconds, then changes it back +const temporarilyChangeIcon = (el) => { + el.innerHTML = iconCheck; + setTimeout(() => {el.innerHTML = iconCopy}, timeoutIcon) +} + +const addCopyButtonToCodeCells = () => { + // If ClipboardJS hasn't loaded, wait a bit and try again. This + // happens because we load ClipboardJS asynchronously. + if (window.ClipboardJS === undefined) { + setTimeout(addCopyButtonToCodeCells, 250) + return + } + + // Add copybuttons to all of our code cells + const COPYBUTTON_SELECTOR = 'div.highlight pre'; + const codeCells = document.querySelectorAll(COPYBUTTON_SELECTOR) + codeCells.forEach((codeCell, index) => { + const id = codeCellId(index) + codeCell.setAttribute('id', id) + + const clipboardButton = id => + `` + codeCell.insertAdjacentHTML('afterend', clipboardButton(id)) + }) + +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} + +/** + * Removes excluded text from a Node. + * + * @param {Node} target Node to filter. + * @param {string} exclude CSS selector of nodes to exclude. + * @returns {DOMString} Text from `target` with text removed. + */ +function filterText(target, exclude) { + const clone = target.cloneNode(true); // clone as to not modify the live DOM + if (exclude) { + // remove excluded nodes + clone.querySelectorAll(exclude).forEach(node => node.remove()); + } + return clone.innerText; +} + +// Callback when a copy button is clicked. Will be passed the node that was clicked +// should then grab the text and replace pieces of text that shouldn't be used in output +function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { + var regexp; + var match; + + // Do we check for line continuation characters and "HERE-documents"? + var useLineCont = !!lineContinuationChar + var useHereDoc = !!hereDocDelim + + // create regexp to capture prompt and remaining line + if (isRegexp) { + regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') + } else { + regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') + } + + const outputLines = []; + var promptFound = false; + var gotLineCont = false; + var gotHereDoc = false; + const lineGotPrompt = []; + for (const line of textContent.split('\n')) { + match = line.match(regexp) + if (match || gotLineCont || gotHereDoc) { + promptFound = regexp.test(line) + lineGotPrompt.push(promptFound) + if (removePrompts && promptFound) { + outputLines.push(match[2]) + } else { + outputLines.push(line) + } + gotLineCont = line.endsWith(lineContinuationChar) & useLineCont + if (line.includes(hereDocDelim) & useHereDoc) + gotHereDoc = !gotHereDoc + } else if (!onlyCopyPromptLines) { + outputLines.push(line) + } else if (copyEmptyLines && line.trim() === '') { + outputLines.push(line) + } + } + + // If no lines with the prompt were found then just use original lines + if (lineGotPrompt.some(v => v === true)) { + textContent = outputLines.join('\n'); + } + + // Remove a trailing newline to avoid auto-running when pasting + if (textContent.endsWith("\n")) { + textContent = textContent.slice(0, -1) + } + return textContent +} + + +var copyTargetText = (trigger) => { + var target = document.querySelector(trigger.attributes['data-clipboard-target'].value); + + // get filtered text + let exclude = '.linenos'; + + let text = filterText(target, exclude); + return formatCopyText(text, '', false, true, true, true, '', '') +} + + // Initialize with a callback so we can modify the text before copy + const clipboard = new ClipboardJS('.copybtn', {text: copyTargetText}) + + // Update UI with error/success messages + clipboard.on('success', event => { + clearSelection() + temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_success']) + temporarilyChangeIcon(event.trigger) + }) + + clipboard.on('error', event => { + temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_failure']) + }) +} + +runWhenDOMLoaded(addCopyButtonToCodeCells) \ No newline at end of file diff --git a/_static/copybutton_funcs.js b/_static/copybutton_funcs.js new file mode 100644 index 00000000..dbe1aaad --- /dev/null +++ b/_static/copybutton_funcs.js @@ -0,0 +1,73 @@ +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} + +/** + * Removes excluded text from a Node. + * + * @param {Node} target Node to filter. + * @param {string} exclude CSS selector of nodes to exclude. + * @returns {DOMString} Text from `target` with text removed. + */ +export function filterText(target, exclude) { + const clone = target.cloneNode(true); // clone as to not modify the live DOM + if (exclude) { + // remove excluded nodes + clone.querySelectorAll(exclude).forEach(node => node.remove()); + } + return clone.innerText; +} + +// Callback when a copy button is clicked. Will be passed the node that was clicked +// should then grab the text and replace pieces of text that shouldn't be used in output +export function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { + var regexp; + var match; + + // Do we check for line continuation characters and "HERE-documents"? + var useLineCont = !!lineContinuationChar + var useHereDoc = !!hereDocDelim + + // create regexp to capture prompt and remaining line + if (isRegexp) { + regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') + } else { + regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') + } + + const outputLines = []; + var promptFound = false; + var gotLineCont = false; + var gotHereDoc = false; + const lineGotPrompt = []; + for (const line of textContent.split('\n')) { + match = line.match(regexp) + if (match || gotLineCont || gotHereDoc) { + promptFound = regexp.test(line) + lineGotPrompt.push(promptFound) + if (removePrompts && promptFound) { + outputLines.push(match[2]) + } else { + outputLines.push(line) + } + gotLineCont = line.endsWith(lineContinuationChar) & useLineCont + if (line.includes(hereDocDelim) & useHereDoc) + gotHereDoc = !gotHereDoc + } else if (!onlyCopyPromptLines) { + outputLines.push(line) + } else if (copyEmptyLines && line.trim() === '') { + outputLines.push(line) + } + } + + // If no lines with the prompt were found then just use original lines + if (lineGotPrompt.some(v => v === true)) { + textContent = outputLines.join('\n'); + } + + // Remove a trailing newline to avoid auto-running when pasting + if (textContent.endsWith("\n")) { + textContent = textContent.slice(0, -1) + } + return textContent +} diff --git a/_static/datalogo.png b/_static/datalogo.png new file mode 100644 index 00000000..2b1fc919 Binary files /dev/null and b/_static/datalogo.png differ diff --git a/_static/design-style.4045f2051d55cab465a707391d5b2007.min.css b/_static/design-style.4045f2051d55cab465a707391d5b2007.min.css new file mode 100644 index 00000000..3225661c --- /dev/null +++ b/_static/design-style.4045f2051d55cab465a707391d5b2007.min.css @@ -0,0 +1 @@ +.sd-bg-primary{background-color:var(--sd-color-primary) !important}.sd-bg-text-primary{color:var(--sd-color-primary-text) !important}button.sd-bg-primary:focus,button.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}a.sd-bg-primary:focus,a.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}.sd-bg-secondary{background-color:var(--sd-color-secondary) !important}.sd-bg-text-secondary{color:var(--sd-color-secondary-text) !important}button.sd-bg-secondary:focus,button.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}a.sd-bg-secondary:focus,a.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}.sd-bg-success{background-color:var(--sd-color-success) !important}.sd-bg-text-success{color:var(--sd-color-success-text) !important}button.sd-bg-success:focus,button.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}a.sd-bg-success:focus,a.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}.sd-bg-info{background-color:var(--sd-color-info) !important}.sd-bg-text-info{color:var(--sd-color-info-text) !important}button.sd-bg-info:focus,button.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}a.sd-bg-info:focus,a.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}.sd-bg-warning{background-color:var(--sd-color-warning) !important}.sd-bg-text-warning{color:var(--sd-color-warning-text) !important}button.sd-bg-warning:focus,button.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}a.sd-bg-warning:focus,a.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}.sd-bg-danger{background-color:var(--sd-color-danger) !important}.sd-bg-text-danger{color:var(--sd-color-danger-text) !important}button.sd-bg-danger:focus,button.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}a.sd-bg-danger:focus,a.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}.sd-bg-light{background-color:var(--sd-color-light) !important}.sd-bg-text-light{color:var(--sd-color-light-text) !important}button.sd-bg-light:focus,button.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}a.sd-bg-light:focus,a.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}.sd-bg-muted{background-color:var(--sd-color-muted) !important}.sd-bg-text-muted{color:var(--sd-color-muted-text) !important}button.sd-bg-muted:focus,button.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}a.sd-bg-muted:focus,a.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}.sd-bg-dark{background-color:var(--sd-color-dark) !important}.sd-bg-text-dark{color:var(--sd-color-dark-text) !important}button.sd-bg-dark:focus,button.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}a.sd-bg-dark:focus,a.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}.sd-bg-black{background-color:var(--sd-color-black) !important}.sd-bg-text-black{color:var(--sd-color-black-text) !important}button.sd-bg-black:focus,button.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}a.sd-bg-black:focus,a.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}.sd-bg-white{background-color:var(--sd-color-white) !important}.sd-bg-text-white{color:var(--sd-color-white-text) !important}button.sd-bg-white:focus,button.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}a.sd-bg-white:focus,a.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}.sd-text-primary,.sd-text-primary>p{color:var(--sd-color-primary) !important}a.sd-text-primary:focus,a.sd-text-primary:hover{color:var(--sd-color-primary-highlight) !important}.sd-text-secondary,.sd-text-secondary>p{color:var(--sd-color-secondary) !important}a.sd-text-secondary:focus,a.sd-text-secondary:hover{color:var(--sd-color-secondary-highlight) !important}.sd-text-success,.sd-text-success>p{color:var(--sd-color-success) !important}a.sd-text-success:focus,a.sd-text-success:hover{color:var(--sd-color-success-highlight) !important}.sd-text-info,.sd-text-info>p{color:var(--sd-color-info) !important}a.sd-text-info:focus,a.sd-text-info:hover{color:var(--sd-color-info-highlight) !important}.sd-text-warning,.sd-text-warning>p{color:var(--sd-color-warning) !important}a.sd-text-warning:focus,a.sd-text-warning:hover{color:var(--sd-color-warning-highlight) !important}.sd-text-danger,.sd-text-danger>p{color:var(--sd-color-danger) !important}a.sd-text-danger:focus,a.sd-text-danger:hover{color:var(--sd-color-danger-highlight) !important}.sd-text-light,.sd-text-light>p{color:var(--sd-color-light) !important}a.sd-text-light:focus,a.sd-text-light:hover{color:var(--sd-color-light-highlight) !important}.sd-text-muted,.sd-text-muted>p{color:var(--sd-color-muted) !important}a.sd-text-muted:focus,a.sd-text-muted:hover{color:var(--sd-color-muted-highlight) !important}.sd-text-dark,.sd-text-dark>p{color:var(--sd-color-dark) !important}a.sd-text-dark:focus,a.sd-text-dark:hover{color:var(--sd-color-dark-highlight) !important}.sd-text-black,.sd-text-black>p{color:var(--sd-color-black) !important}a.sd-text-black:focus,a.sd-text-black:hover{color:var(--sd-color-black-highlight) !important}.sd-text-white,.sd-text-white>p{color:var(--sd-color-white) !important}a.sd-text-white:focus,a.sd-text-white:hover{color:var(--sd-color-white-highlight) !important}.sd-outline-primary{border-color:var(--sd-color-primary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-primary:focus,a.sd-outline-primary:hover{border-color:var(--sd-color-primary-highlight) !important}.sd-outline-secondary{border-color:var(--sd-color-secondary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-secondary:focus,a.sd-outline-secondary:hover{border-color:var(--sd-color-secondary-highlight) !important}.sd-outline-success{border-color:var(--sd-color-success) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-success:focus,a.sd-outline-success:hover{border-color:var(--sd-color-success-highlight) !important}.sd-outline-info{border-color:var(--sd-color-info) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-info:focus,a.sd-outline-info:hover{border-color:var(--sd-color-info-highlight) !important}.sd-outline-warning{border-color:var(--sd-color-warning) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-warning:focus,a.sd-outline-warning:hover{border-color:var(--sd-color-warning-highlight) !important}.sd-outline-danger{border-color:var(--sd-color-danger) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-danger:focus,a.sd-outline-danger:hover{border-color:var(--sd-color-danger-highlight) !important}.sd-outline-light{border-color:var(--sd-color-light) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-light:focus,a.sd-outline-light:hover{border-color:var(--sd-color-light-highlight) !important}.sd-outline-muted{border-color:var(--sd-color-muted) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-muted:focus,a.sd-outline-muted:hover{border-color:var(--sd-color-muted-highlight) !important}.sd-outline-dark{border-color:var(--sd-color-dark) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-dark:focus,a.sd-outline-dark:hover{border-color:var(--sd-color-dark-highlight) !important}.sd-outline-black{border-color:var(--sd-color-black) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-black:focus,a.sd-outline-black:hover{border-color:var(--sd-color-black-highlight) !important}.sd-outline-white{border-color:var(--sd-color-white) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-white:focus,a.sd-outline-white:hover{border-color:var(--sd-color-white-highlight) !important}.sd-bg-transparent{background-color:transparent !important}.sd-outline-transparent{border-color:transparent !important}.sd-text-transparent{color:transparent !important}.sd-p-0{padding:0 !important}.sd-pt-0,.sd-py-0{padding-top:0 !important}.sd-pr-0,.sd-px-0{padding-right:0 !important}.sd-pb-0,.sd-py-0{padding-bottom:0 !important}.sd-pl-0,.sd-px-0{padding-left:0 !important}.sd-p-1{padding:.25rem !important}.sd-pt-1,.sd-py-1{padding-top:.25rem !important}.sd-pr-1,.sd-px-1{padding-right:.25rem !important}.sd-pb-1,.sd-py-1{padding-bottom:.25rem !important}.sd-pl-1,.sd-px-1{padding-left:.25rem !important}.sd-p-2{padding:.5rem !important}.sd-pt-2,.sd-py-2{padding-top:.5rem !important}.sd-pr-2,.sd-px-2{padding-right:.5rem !important}.sd-pb-2,.sd-py-2{padding-bottom:.5rem !important}.sd-pl-2,.sd-px-2{padding-left:.5rem !important}.sd-p-3{padding:1rem !important}.sd-pt-3,.sd-py-3{padding-top:1rem !important}.sd-pr-3,.sd-px-3{padding-right:1rem !important}.sd-pb-3,.sd-py-3{padding-bottom:1rem !important}.sd-pl-3,.sd-px-3{padding-left:1rem !important}.sd-p-4{padding:1.5rem !important}.sd-pt-4,.sd-py-4{padding-top:1.5rem !important}.sd-pr-4,.sd-px-4{padding-right:1.5rem !important}.sd-pb-4,.sd-py-4{padding-bottom:1.5rem !important}.sd-pl-4,.sd-px-4{padding-left:1.5rem !important}.sd-p-5{padding:3rem !important}.sd-pt-5,.sd-py-5{padding-top:3rem !important}.sd-pr-5,.sd-px-5{padding-right:3rem !important}.sd-pb-5,.sd-py-5{padding-bottom:3rem !important}.sd-pl-5,.sd-px-5{padding-left:3rem !important}.sd-m-auto{margin:auto !important}.sd-mt-auto,.sd-my-auto{margin-top:auto !important}.sd-mr-auto,.sd-mx-auto{margin-right:auto !important}.sd-mb-auto,.sd-my-auto{margin-bottom:auto !important}.sd-ml-auto,.sd-mx-auto{margin-left:auto !important}.sd-m-0{margin:0 !important}.sd-mt-0,.sd-my-0{margin-top:0 !important}.sd-mr-0,.sd-mx-0{margin-right:0 !important}.sd-mb-0,.sd-my-0{margin-bottom:0 !important}.sd-ml-0,.sd-mx-0{margin-left:0 !important}.sd-m-1{margin:.25rem !important}.sd-mt-1,.sd-my-1{margin-top:.25rem !important}.sd-mr-1,.sd-mx-1{margin-right:.25rem !important}.sd-mb-1,.sd-my-1{margin-bottom:.25rem !important}.sd-ml-1,.sd-mx-1{margin-left:.25rem !important}.sd-m-2{margin:.5rem !important}.sd-mt-2,.sd-my-2{margin-top:.5rem !important}.sd-mr-2,.sd-mx-2{margin-right:.5rem !important}.sd-mb-2,.sd-my-2{margin-bottom:.5rem !important}.sd-ml-2,.sd-mx-2{margin-left:.5rem !important}.sd-m-3{margin:1rem !important}.sd-mt-3,.sd-my-3{margin-top:1rem !important}.sd-mr-3,.sd-mx-3{margin-right:1rem !important}.sd-mb-3,.sd-my-3{margin-bottom:1rem !important}.sd-ml-3,.sd-mx-3{margin-left:1rem !important}.sd-m-4{margin:1.5rem !important}.sd-mt-4,.sd-my-4{margin-top:1.5rem !important}.sd-mr-4,.sd-mx-4{margin-right:1.5rem !important}.sd-mb-4,.sd-my-4{margin-bottom:1.5rem !important}.sd-ml-4,.sd-mx-4{margin-left:1.5rem !important}.sd-m-5{margin:3rem !important}.sd-mt-5,.sd-my-5{margin-top:3rem !important}.sd-mr-5,.sd-mx-5{margin-right:3rem !important}.sd-mb-5,.sd-my-5{margin-bottom:3rem !important}.sd-ml-5,.sd-mx-5{margin-left:3rem !important}.sd-w-25{width:25% !important}.sd-w-50{width:50% !important}.sd-w-75{width:75% !important}.sd-w-100{width:100% !important}.sd-w-auto{width:auto !important}.sd-h-25{height:25% !important}.sd-h-50{height:50% !important}.sd-h-75{height:75% !important}.sd-h-100{height:100% !important}.sd-h-auto{height:auto !important}.sd-d-none{display:none !important}.sd-d-inline{display:inline !important}.sd-d-inline-block{display:inline-block !important}.sd-d-block{display:block !important}.sd-d-grid{display:grid !important}.sd-d-flex-row{display:-ms-flexbox !important;display:flex !important;flex-direction:row !important}.sd-d-flex-column{display:-ms-flexbox !important;display:flex !important;flex-direction:column !important}.sd-d-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}@media(min-width: 576px){.sd-d-sm-none{display:none !important}.sd-d-sm-inline{display:inline !important}.sd-d-sm-inline-block{display:inline-block !important}.sd-d-sm-block{display:block !important}.sd-d-sm-grid{display:grid !important}.sd-d-sm-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-sm-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 768px){.sd-d-md-none{display:none !important}.sd-d-md-inline{display:inline !important}.sd-d-md-inline-block{display:inline-block !important}.sd-d-md-block{display:block !important}.sd-d-md-grid{display:grid !important}.sd-d-md-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-md-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 992px){.sd-d-lg-none{display:none !important}.sd-d-lg-inline{display:inline !important}.sd-d-lg-inline-block{display:inline-block !important}.sd-d-lg-block{display:block !important}.sd-d-lg-grid{display:grid !important}.sd-d-lg-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-lg-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 1200px){.sd-d-xl-none{display:none !important}.sd-d-xl-inline{display:inline !important}.sd-d-xl-inline-block{display:inline-block !important}.sd-d-xl-block{display:block !important}.sd-d-xl-grid{display:grid !important}.sd-d-xl-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-xl-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}.sd-align-major-start{justify-content:flex-start !important}.sd-align-major-end{justify-content:flex-end !important}.sd-align-major-center{justify-content:center !important}.sd-align-major-justify{justify-content:space-between !important}.sd-align-major-spaced{justify-content:space-evenly !important}.sd-align-minor-start{align-items:flex-start !important}.sd-align-minor-end{align-items:flex-end !important}.sd-align-minor-center{align-items:center !important}.sd-align-minor-stretch{align-items:stretch !important}.sd-text-justify{text-align:justify !important}.sd-text-left{text-align:left !important}.sd-text-right{text-align:right !important}.sd-text-center{text-align:center !important}.sd-font-weight-light{font-weight:300 !important}.sd-font-weight-lighter{font-weight:lighter !important}.sd-font-weight-normal{font-weight:400 !important}.sd-font-weight-bold{font-weight:700 !important}.sd-font-weight-bolder{font-weight:bolder !important}.sd-font-italic{font-style:italic !important}.sd-text-decoration-none{text-decoration:none !important}.sd-text-lowercase{text-transform:lowercase !important}.sd-text-uppercase{text-transform:uppercase !important}.sd-text-capitalize{text-transform:capitalize !important}.sd-text-wrap{white-space:normal !important}.sd-text-nowrap{white-space:nowrap !important}.sd-text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sd-fs-1,.sd-fs-1>p{font-size:calc(1.375rem + 1.5vw) !important;line-height:unset !important}.sd-fs-2,.sd-fs-2>p{font-size:calc(1.325rem + 0.9vw) !important;line-height:unset !important}.sd-fs-3,.sd-fs-3>p{font-size:calc(1.3rem + 0.6vw) !important;line-height:unset !important}.sd-fs-4,.sd-fs-4>p{font-size:calc(1.275rem + 0.3vw) !important;line-height:unset !important}.sd-fs-5,.sd-fs-5>p{font-size:1.25rem !important;line-height:unset !important}.sd-fs-6,.sd-fs-6>p{font-size:1rem !important;line-height:unset !important}.sd-border-0{border:0 solid !important}.sd-border-top-0{border-top:0 solid !important}.sd-border-bottom-0{border-bottom:0 solid !important}.sd-border-right-0{border-right:0 solid !important}.sd-border-left-0{border-left:0 solid !important}.sd-border-1{border:1px solid !important}.sd-border-top-1{border-top:1px solid !important}.sd-border-bottom-1{border-bottom:1px solid !important}.sd-border-right-1{border-right:1px solid !important}.sd-border-left-1{border-left:1px solid !important}.sd-border-2{border:2px solid !important}.sd-border-top-2{border-top:2px solid !important}.sd-border-bottom-2{border-bottom:2px solid !important}.sd-border-right-2{border-right:2px solid !important}.sd-border-left-2{border-left:2px solid !important}.sd-border-3{border:3px solid !important}.sd-border-top-3{border-top:3px solid !important}.sd-border-bottom-3{border-bottom:3px solid !important}.sd-border-right-3{border-right:3px solid !important}.sd-border-left-3{border-left:3px solid !important}.sd-border-4{border:4px solid !important}.sd-border-top-4{border-top:4px solid !important}.sd-border-bottom-4{border-bottom:4px solid !important}.sd-border-right-4{border-right:4px solid !important}.sd-border-left-4{border-left:4px solid !important}.sd-border-5{border:5px solid !important}.sd-border-top-5{border-top:5px solid !important}.sd-border-bottom-5{border-bottom:5px solid !important}.sd-border-right-5{border-right:5px solid !important}.sd-border-left-5{border-left:5px solid !important}.sd-rounded-0{border-radius:0 !important}.sd-rounded-1{border-radius:.2rem !important}.sd-rounded-2{border-radius:.3rem !important}.sd-rounded-3{border-radius:.5rem !important}.sd-rounded-pill{border-radius:50rem !important}.sd-rounded-circle{border-radius:50% !important}.shadow-none{box-shadow:none !important}.sd-shadow-sm{box-shadow:0 .125rem .25rem var(--sd-color-shadow) !important}.sd-shadow-md{box-shadow:0 .5rem 1rem var(--sd-color-shadow) !important}.sd-shadow-lg{box-shadow:0 1rem 3rem var(--sd-color-shadow) !important}@keyframes sd-slide-from-left{0%{transform:translateX(-100%)}100%{transform:translateX(0)}}@keyframes sd-slide-from-right{0%{transform:translateX(200%)}100%{transform:translateX(0)}}@keyframes sd-grow100{0%{transform:scale(0);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50{0%{transform:scale(0.5);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50-rot20{0%{transform:scale(0.5) rotateZ(-20deg);opacity:.5}75%{transform:scale(1) rotateZ(5deg);opacity:1}95%{transform:scale(1) rotateZ(-1deg);opacity:1}100%{transform:scale(1) rotateZ(0);opacity:1}}.sd-animate-slide-from-left{animation:1s ease-out 0s 1 normal none running sd-slide-from-left}.sd-animate-slide-from-right{animation:1s ease-out 0s 1 normal none running sd-slide-from-right}.sd-animate-grow100{animation:1s ease-out 0s 1 normal none running sd-grow100}.sd-animate-grow50{animation:1s ease-out 0s 1 normal none running sd-grow50}.sd-animate-grow50-rot20{animation:1s ease-out 0s 1 normal none running sd-grow50-rot20}.sd-badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.sd-badge:empty{display:none}a.sd-badge{text-decoration:none}.sd-btn .sd-badge{position:relative;top:-1px}.sd-btn{background-color:transparent;border:1px solid transparent;border-radius:.25rem;cursor:pointer;display:inline-block;font-weight:400;font-size:1rem;line-height:1.5;padding:.375rem .75rem;text-align:center;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;vertical-align:middle;user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none}.sd-btn:hover{text-decoration:none}@media(prefers-reduced-motion: reduce){.sd-btn{transition:none}}.sd-btn-primary,.sd-btn-outline-primary:hover,.sd-btn-outline-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-primary:hover,.sd-btn-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary-highlight) !important;border-color:var(--sd-color-primary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-primary{color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary,.sd-btn-outline-secondary:hover,.sd-btn-outline-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary:hover,.sd-btn-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary-highlight) !important;border-color:var(--sd-color-secondary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-secondary{color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success,.sd-btn-outline-success:hover,.sd-btn-outline-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success:hover,.sd-btn-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success-highlight) !important;border-color:var(--sd-color-success-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-success{color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info,.sd-btn-outline-info:hover,.sd-btn-outline-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info:hover,.sd-btn-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info-highlight) !important;border-color:var(--sd-color-info-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-info{color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning,.sd-btn-outline-warning:hover,.sd-btn-outline-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning:hover,.sd-btn-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning-highlight) !important;border-color:var(--sd-color-warning-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-warning{color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger,.sd-btn-outline-danger:hover,.sd-btn-outline-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger:hover,.sd-btn-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger-highlight) !important;border-color:var(--sd-color-danger-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-danger{color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light,.sd-btn-outline-light:hover,.sd-btn-outline-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light:hover,.sd-btn-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light-highlight) !important;border-color:var(--sd-color-light-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-light{color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted,.sd-btn-outline-muted:hover,.sd-btn-outline-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted:hover,.sd-btn-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted-highlight) !important;border-color:var(--sd-color-muted-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-muted{color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark,.sd-btn-outline-dark:hover,.sd-btn-outline-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark:hover,.sd-btn-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark-highlight) !important;border-color:var(--sd-color-dark-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-dark{color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black,.sd-btn-outline-black:hover,.sd-btn-outline-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black:hover,.sd-btn-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black-highlight) !important;border-color:var(--sd-color-black-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-black{color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white,.sd-btn-outline-white:hover,.sd-btn-outline-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white:hover,.sd-btn-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white-highlight) !important;border-color:var(--sd-color-white-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-white{color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.sd-hide-link-text{font-size:0}.sd-octicon,.sd-material-icon{display:inline-block;fill:currentColor;vertical-align:middle}.sd-avatar-xs{border-radius:50%;object-fit:cover;object-position:center;width:1rem;height:1rem}.sd-avatar-sm{border-radius:50%;object-fit:cover;object-position:center;width:3rem;height:3rem}.sd-avatar-md{border-radius:50%;object-fit:cover;object-position:center;width:5rem;height:5rem}.sd-avatar-lg{border-radius:50%;object-fit:cover;object-position:center;width:7rem;height:7rem}.sd-avatar-xl{border-radius:50%;object-fit:cover;object-position:center;width:10rem;height:10rem}.sd-avatar-inherit{border-radius:50%;object-fit:cover;object-position:center;width:inherit;height:inherit}.sd-avatar-initial{border-radius:50%;object-fit:cover;object-position:center;width:initial;height:initial}.sd-card{background-clip:border-box;background-color:var(--sd-color-card-background);border:1px solid var(--sd-color-card-border);border-radius:.25rem;color:var(--sd-color-card-text);display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;position:relative;word-wrap:break-word}.sd-card>hr{margin-left:0;margin-right:0}.sd-card-hover:hover{border-color:var(--sd-color-card-border-hover);transform:scale(1.01)}.sd-card-body{-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem 1rem}.sd-card-title{margin-bottom:.5rem}.sd-card-subtitle{margin-top:-0.25rem;margin-bottom:0}.sd-card-text:last-child{margin-bottom:0}.sd-card-link:hover{text-decoration:none}.sd-card-link+.card-link{margin-left:1rem}.sd-card-header{padding:.5rem 1rem;margin-bottom:0;background-color:var(--sd-color-card-header);border-bottom:1px solid var(--sd-color-card-border)}.sd-card-header:first-child{border-radius:calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0}.sd-card-footer{padding:.5rem 1rem;background-color:var(--sd-color-card-footer);border-top:1px solid var(--sd-color-card-border)}.sd-card-footer:last-child{border-radius:0 0 calc(0.25rem - 1px) calc(0.25rem - 1px)}.sd-card-header-tabs{margin-right:-0.5rem;margin-bottom:-0.5rem;margin-left:-0.5rem;border-bottom:0}.sd-card-header-pills{margin-right:-0.5rem;margin-left:-0.5rem}.sd-card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom,.sd-card-img-top{width:100%}.sd-card-img,.sd-card-img-top{border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom{border-bottom-left-radius:calc(0.25rem - 1px);border-bottom-right-radius:calc(0.25rem - 1px)}.sd-cards-carousel{width:100%;display:flex;flex-wrap:nowrap;-ms-flex-direction:row;flex-direction:row;overflow-x:hidden;scroll-snap-type:x mandatory}.sd-cards-carousel.sd-show-scrollbar{overflow-x:auto}.sd-cards-carousel:hover,.sd-cards-carousel:focus{overflow-x:auto}.sd-cards-carousel>.sd-card{flex-shrink:0;scroll-snap-align:start}.sd-cards-carousel>.sd-card:not(:last-child){margin-right:3px}.sd-card-cols-1>.sd-card{width:90%}.sd-card-cols-2>.sd-card{width:45%}.sd-card-cols-3>.sd-card{width:30%}.sd-card-cols-4>.sd-card{width:22.5%}.sd-card-cols-5>.sd-card{width:18%}.sd-card-cols-6>.sd-card{width:15%}.sd-card-cols-7>.sd-card{width:12.8571428571%}.sd-card-cols-8>.sd-card{width:11.25%}.sd-card-cols-9>.sd-card{width:10%}.sd-card-cols-10>.sd-card{width:9%}.sd-card-cols-11>.sd-card{width:8.1818181818%}.sd-card-cols-12>.sd-card{width:7.5%}.sd-container,.sd-container-fluid,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container-xl{margin-left:auto;margin-right:auto;padding-left:var(--sd-gutter-x, 0.75rem);padding-right:var(--sd-gutter-x, 0.75rem);width:100%}@media(min-width: 576px){.sd-container-sm,.sd-container{max-width:540px}}@media(min-width: 768px){.sd-container-md,.sd-container-sm,.sd-container{max-width:720px}}@media(min-width: 992px){.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:960px}}@media(min-width: 1200px){.sd-container-xl,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:1140px}}.sd-row{--sd-gutter-x: 1.5rem;--sd-gutter-y: 0;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:calc(var(--sd-gutter-y) * -1);margin-right:calc(var(--sd-gutter-x) * -0.5);margin-left:calc(var(--sd-gutter-x) * -0.5)}.sd-row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--sd-gutter-x) * 0.5);padding-left:calc(var(--sd-gutter-x) * 0.5);margin-top:var(--sd-gutter-y)}.sd-col{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-auto>*{flex:0 0 auto;width:auto}.sd-row-cols-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}@media(min-width: 576px){.sd-col-sm{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-sm-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-sm-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-sm-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-sm-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-sm-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-sm-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-sm-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-sm-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-sm-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-sm-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-sm-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-sm-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-sm-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 768px){.sd-col-md{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-md-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-md-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-md-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-md-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-md-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-md-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-md-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-md-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-md-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-md-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-md-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-md-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-md-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 992px){.sd-col-lg{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-lg-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-lg-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-lg-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-lg-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-lg-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-lg-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-lg-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-lg-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-lg-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-lg-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-lg-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-lg-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-lg-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 1200px){.sd-col-xl{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-xl-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-xl-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-xl-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-xl-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-xl-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-xl-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-xl-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-xl-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-xl-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-xl-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-xl-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-xl-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-xl-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}.sd-col-auto{flex:0 0 auto;-ms-flex:0 0 auto;width:auto}.sd-col-1{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}.sd-col-2{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-col-3{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-col-4{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-col-5{flex:0 0 auto;-ms-flex:0 0 auto;width:41.6666666667%}.sd-col-6{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-col-7{flex:0 0 auto;-ms-flex:0 0 auto;width:58.3333333333%}.sd-col-8{flex:0 0 auto;-ms-flex:0 0 auto;width:66.6666666667%}.sd-col-9{flex:0 0 auto;-ms-flex:0 0 auto;width:75%}.sd-col-10{flex:0 0 auto;-ms-flex:0 0 auto;width:83.3333333333%}.sd-col-11{flex:0 0 auto;-ms-flex:0 0 auto;width:91.6666666667%}.sd-col-12{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-g-0,.sd-gy-0{--sd-gutter-y: 0}.sd-g-0,.sd-gx-0{--sd-gutter-x: 0}.sd-g-1,.sd-gy-1{--sd-gutter-y: 0.25rem}.sd-g-1,.sd-gx-1{--sd-gutter-x: 0.25rem}.sd-g-2,.sd-gy-2{--sd-gutter-y: 0.5rem}.sd-g-2,.sd-gx-2{--sd-gutter-x: 0.5rem}.sd-g-3,.sd-gy-3{--sd-gutter-y: 1rem}.sd-g-3,.sd-gx-3{--sd-gutter-x: 1rem}.sd-g-4,.sd-gy-4{--sd-gutter-y: 1.5rem}.sd-g-4,.sd-gx-4{--sd-gutter-x: 1.5rem}.sd-g-5,.sd-gy-5{--sd-gutter-y: 3rem}.sd-g-5,.sd-gx-5{--sd-gutter-x: 3rem}@media(min-width: 576px){.sd-col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-sm-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-sm-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-sm-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-sm-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-sm-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-sm-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-sm-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-sm-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-sm-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-sm-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-sm-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-sm-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-sm-0,.sd-gy-sm-0{--sd-gutter-y: 0}.sd-g-sm-0,.sd-gx-sm-0{--sd-gutter-x: 0}.sd-g-sm-1,.sd-gy-sm-1{--sd-gutter-y: 0.25rem}.sd-g-sm-1,.sd-gx-sm-1{--sd-gutter-x: 0.25rem}.sd-g-sm-2,.sd-gy-sm-2{--sd-gutter-y: 0.5rem}.sd-g-sm-2,.sd-gx-sm-2{--sd-gutter-x: 0.5rem}.sd-g-sm-3,.sd-gy-sm-3{--sd-gutter-y: 1rem}.sd-g-sm-3,.sd-gx-sm-3{--sd-gutter-x: 1rem}.sd-g-sm-4,.sd-gy-sm-4{--sd-gutter-y: 1.5rem}.sd-g-sm-4,.sd-gx-sm-4{--sd-gutter-x: 1.5rem}.sd-g-sm-5,.sd-gy-sm-5{--sd-gutter-y: 3rem}.sd-g-sm-5,.sd-gx-sm-5{--sd-gutter-x: 3rem}}@media(min-width: 768px){.sd-col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-md-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-md-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-md-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-md-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-md-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-md-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-md-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-md-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-md-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-md-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-md-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-md-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-md-0,.sd-gy-md-0{--sd-gutter-y: 0}.sd-g-md-0,.sd-gx-md-0{--sd-gutter-x: 0}.sd-g-md-1,.sd-gy-md-1{--sd-gutter-y: 0.25rem}.sd-g-md-1,.sd-gx-md-1{--sd-gutter-x: 0.25rem}.sd-g-md-2,.sd-gy-md-2{--sd-gutter-y: 0.5rem}.sd-g-md-2,.sd-gx-md-2{--sd-gutter-x: 0.5rem}.sd-g-md-3,.sd-gy-md-3{--sd-gutter-y: 1rem}.sd-g-md-3,.sd-gx-md-3{--sd-gutter-x: 1rem}.sd-g-md-4,.sd-gy-md-4{--sd-gutter-y: 1.5rem}.sd-g-md-4,.sd-gx-md-4{--sd-gutter-x: 1.5rem}.sd-g-md-5,.sd-gy-md-5{--sd-gutter-y: 3rem}.sd-g-md-5,.sd-gx-md-5{--sd-gutter-x: 3rem}}@media(min-width: 992px){.sd-col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-lg-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-lg-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-lg-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-lg-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-lg-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-lg-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-lg-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-lg-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-lg-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-lg-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-lg-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-lg-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-lg-0,.sd-gy-lg-0{--sd-gutter-y: 0}.sd-g-lg-0,.sd-gx-lg-0{--sd-gutter-x: 0}.sd-g-lg-1,.sd-gy-lg-1{--sd-gutter-y: 0.25rem}.sd-g-lg-1,.sd-gx-lg-1{--sd-gutter-x: 0.25rem}.sd-g-lg-2,.sd-gy-lg-2{--sd-gutter-y: 0.5rem}.sd-g-lg-2,.sd-gx-lg-2{--sd-gutter-x: 0.5rem}.sd-g-lg-3,.sd-gy-lg-3{--sd-gutter-y: 1rem}.sd-g-lg-3,.sd-gx-lg-3{--sd-gutter-x: 1rem}.sd-g-lg-4,.sd-gy-lg-4{--sd-gutter-y: 1.5rem}.sd-g-lg-4,.sd-gx-lg-4{--sd-gutter-x: 1.5rem}.sd-g-lg-5,.sd-gy-lg-5{--sd-gutter-y: 3rem}.sd-g-lg-5,.sd-gx-lg-5{--sd-gutter-x: 3rem}}@media(min-width: 1200px){.sd-col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-xl-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-xl-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-xl-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-xl-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-xl-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-xl-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-xl-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-xl-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-xl-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-xl-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-xl-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-xl-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-xl-0,.sd-gy-xl-0{--sd-gutter-y: 0}.sd-g-xl-0,.sd-gx-xl-0{--sd-gutter-x: 0}.sd-g-xl-1,.sd-gy-xl-1{--sd-gutter-y: 0.25rem}.sd-g-xl-1,.sd-gx-xl-1{--sd-gutter-x: 0.25rem}.sd-g-xl-2,.sd-gy-xl-2{--sd-gutter-y: 0.5rem}.sd-g-xl-2,.sd-gx-xl-2{--sd-gutter-x: 0.5rem}.sd-g-xl-3,.sd-gy-xl-3{--sd-gutter-y: 1rem}.sd-g-xl-3,.sd-gx-xl-3{--sd-gutter-x: 1rem}.sd-g-xl-4,.sd-gy-xl-4{--sd-gutter-y: 1.5rem}.sd-g-xl-4,.sd-gx-xl-4{--sd-gutter-x: 1.5rem}.sd-g-xl-5,.sd-gy-xl-5{--sd-gutter-y: 3rem}.sd-g-xl-5,.sd-gx-xl-5{--sd-gutter-x: 3rem}}.sd-flex-row-reverse{flex-direction:row-reverse !important}details.sd-dropdown{position:relative}details.sd-dropdown .sd-summary-title{font-weight:700;padding-right:3em !important;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none}details.sd-dropdown:hover{cursor:pointer}details.sd-dropdown .sd-summary-content{cursor:default}details.sd-dropdown summary{list-style:none;padding:1em}details.sd-dropdown summary .sd-octicon.no-title{vertical-align:middle}details.sd-dropdown[open] summary .sd-octicon.no-title{visibility:hidden}details.sd-dropdown summary::-webkit-details-marker{display:none}details.sd-dropdown summary:focus{outline:none}details.sd-dropdown .sd-summary-icon{margin-right:.5em}details.sd-dropdown .sd-summary-icon svg{opacity:.8}details.sd-dropdown summary:hover .sd-summary-up svg,details.sd-dropdown summary:hover .sd-summary-down svg{opacity:1;transform:scale(1.1)}details.sd-dropdown .sd-summary-up svg,details.sd-dropdown .sd-summary-down svg{display:block;opacity:.6}details.sd-dropdown .sd-summary-up,details.sd-dropdown .sd-summary-down{pointer-events:none;position:absolute;right:1em;top:1em}details.sd-dropdown[open]>.sd-summary-title .sd-summary-down{visibility:hidden}details.sd-dropdown:not([open])>.sd-summary-title .sd-summary-up{visibility:hidden}details.sd-dropdown:not([open]).sd-card{border:none}details.sd-dropdown:not([open])>.sd-card-header{border:1px solid var(--sd-color-card-border);border-radius:.25rem}details.sd-dropdown.sd-fade-in[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out;animation:sd-fade-in .5s ease-in-out}details.sd-dropdown.sd-fade-in-slide-down[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out}.sd-col>.sd-dropdown{width:100%}.sd-summary-content>.sd-tab-set:first-child{margin-top:0}@keyframes sd-fade-in{0%{opacity:0}100%{opacity:1}}@keyframes sd-slide-down{0%{transform:translate(0, -10px)}100%{transform:translate(0, 0)}}.sd-tab-set{border-radius:.125rem;display:flex;flex-wrap:wrap;margin:1em 0;position:relative}.sd-tab-set>input{opacity:0;position:absolute}.sd-tab-set>input:checked+label{border-color:var(--sd-color-tabs-underline-active);color:var(--sd-color-tabs-label-active)}.sd-tab-set>input:checked+label+.sd-tab-content{display:block}.sd-tab-set>input:not(:checked)+label:hover{color:var(--sd-color-tabs-label-hover);border-color:var(--sd-color-tabs-underline-hover)}.sd-tab-set>input:focus+label{outline-style:auto}.sd-tab-set>input:not(.focus-visible)+label{outline:none;-webkit-tap-highlight-color:transparent}.sd-tab-set>label{border-bottom:.125rem solid transparent;margin-bottom:0;color:var(--sd-color-tabs-label-inactive);border-color:var(--sd-color-tabs-underline-inactive);cursor:pointer;font-size:var(--sd-fontsize-tabs-label);font-weight:700;padding:1em 1.25em .5em;transition:color 250ms;width:auto;z-index:1}html .sd-tab-set>label:hover{color:var(--sd-color-tabs-label-active)}.sd-col>.sd-tab-set{width:100%}.sd-tab-content{box-shadow:0 -0.0625rem var(--sd-color-tabs-overline),0 .0625rem var(--sd-color-tabs-underline);display:none;order:99;padding-bottom:.75rem;padding-top:.75rem;width:100%}.sd-tab-content>:first-child{margin-top:0 !important}.sd-tab-content>:last-child{margin-bottom:0 !important}.sd-tab-content>.sd-tab-set{margin:0}.sd-sphinx-override,.sd-sphinx-override *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sd-sphinx-override p{margin-top:0}:root{--sd-color-primary: #007bff;--sd-color-secondary: #6c757d;--sd-color-success: #28a745;--sd-color-info: #17a2b8;--sd-color-warning: #f0b37e;--sd-color-danger: #dc3545;--sd-color-light: #f8f9fa;--sd-color-muted: #6c757d;--sd-color-dark: #212529;--sd-color-black: black;--sd-color-white: white;--sd-color-primary-highlight: #0069d9;--sd-color-secondary-highlight: #5c636a;--sd-color-success-highlight: #228e3b;--sd-color-info-highlight: #148a9c;--sd-color-warning-highlight: #cc986b;--sd-color-danger-highlight: #bb2d3b;--sd-color-light-highlight: #d3d4d5;--sd-color-muted-highlight: #5c636a;--sd-color-dark-highlight: #1c1f23;--sd-color-black-highlight: black;--sd-color-white-highlight: #d9d9d9;--sd-color-primary-text: #fff;--sd-color-secondary-text: #fff;--sd-color-success-text: #fff;--sd-color-info-text: #fff;--sd-color-warning-text: #212529;--sd-color-danger-text: #fff;--sd-color-light-text: #212529;--sd-color-muted-text: #fff;--sd-color-dark-text: #fff;--sd-color-black-text: #fff;--sd-color-white-text: #212529;--sd-color-shadow: rgba(0, 0, 0, 0.15);--sd-color-card-border: rgba(0, 0, 0, 0.125);--sd-color-card-border-hover: hsla(231, 99%, 66%, 1);--sd-color-card-background: transparent;--sd-color-card-text: inherit;--sd-color-card-header: transparent;--sd-color-card-footer: transparent;--sd-color-tabs-label-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-hover: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-inactive: hsl(0, 0%, 66%);--sd-color-tabs-underline-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-underline-hover: rgba(178, 206, 245, 0.62);--sd-color-tabs-underline-inactive: transparent;--sd-color-tabs-overline: rgb(222, 222, 222);--sd-color-tabs-underline: rgb(222, 222, 222);--sd-fontsize-tabs-label: 1rem} diff --git a/_static/design-tabs.js b/_static/design-tabs.js new file mode 100644 index 00000000..36b38cf0 --- /dev/null +++ b/_static/design-tabs.js @@ -0,0 +1,27 @@ +var sd_labels_by_text = {}; + +function ready() { + const li = document.getElementsByClassName("sd-tab-label"); + for (const label of li) { + syncId = label.getAttribute("data-sync-id"); + if (syncId) { + label.onclick = onLabelClick; + if (!sd_labels_by_text[syncId]) { + sd_labels_by_text[syncId] = []; + } + sd_labels_by_text[syncId].push(label); + } + } +} + +function onLabelClick() { + // Activate other inputs with the same sync id. + syncId = this.getAttribute("data-sync-id"); + for (label of sd_labels_by_text[syncId]) { + if (label === this) continue; + label.previousElementSibling.checked = true; + } + window.localStorage.setItem("sphinx-design-last-tab", syncId); +} + +document.addEventListener("DOMContentLoaded", ready, false); diff --git a/_static/doctools.js b/_static/doctools.js new file mode 100644 index 00000000..c3db08d1 --- /dev/null +++ b/_static/doctools.js @@ -0,0 +1,264 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Base JavaScript utilities for all Sphinx HTML documentation. + * + * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); + } +}; + +/** + * highlight a given string on a node by wrapping it in + * span elements with the given class name. + */ +const _highlight = (node, addItems, text, className) => { + if (node.nodeType === Node.TEXT_NODE) { + const val = node.nodeValue; + const parent = node.parentNode; + const pos = val.toLowerCase().indexOf(text); + if ( + pos >= 0 && + !parent.classList.contains(className) && + !parent.classList.contains("nohighlight") + ) { + let span; + + const closestNode = parent.closest("body, svg, foreignObject"); + const isInSVG = closestNode && closestNode.matches("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.classList.add(className); + } + + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + parent.insertBefore( + span, + parent.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling + ) + ); + node.nodeValue = val.substr(0, pos); + + if (isInSVG) { + const rect = document.createElementNS( + "http://www.w3.org/2000/svg", + "rect" + ); + const bbox = parent.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute("class", className); + addItems.push({ parent: parent, target: rect }); + } + } + } else if (node.matches && !node.matches("button, select, textarea")) { + node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); + } +}; +const _highlightText = (thisNode, text, className) => { + let addItems = []; + _highlight(thisNode, addItems, text, className); + addItems.forEach((obj) => + obj.parent.insertAdjacentElement("beforebegin", obj.target) + ); +}; + +/** + * Small JavaScript module for the documentation. + */ +const Documentation = { + init: () => { + Documentation.highlightSearchWords(); + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); + }, + + /** + * i18n support + */ + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), + LOCALE: "unknown", + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } + }, + + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; + }, + + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})` + ); + Documentation.LOCALE = catalog.locale; + }, + + /** + * highlight the search words provided in the url in the text + */ + highlightSearchWords: () => { + const highlight = + new URLSearchParams(window.location.search).get("highlight") || ""; + const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); + if (terms.length === 0) return; // nothing to do + + // There should never be more than one element matching "div.body" + const divBody = document.querySelectorAll("div.body"); + const body = divBody.length ? divBody[0] : document.querySelector("body"); + window.setTimeout(() => { + terms.forEach((term) => _highlightText(body, term, "highlighted")); + }, 10); + + const searchBox = document.getElementById("searchbox"); + if (searchBox === null) return; + searchBox.appendChild( + document + .createRange() + .createContextualFragment( + '" + ) + ); + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords: () => { + document + .querySelectorAll("#searchbox .highlight-link") + .forEach((el) => el.remove()); + document + .querySelectorAll("span.highlighted") + .forEach((el) => el.classList.remove("highlighted")); + const url = new URL(window.location); + url.searchParams.delete("highlight"); + window.history.replaceState({}, "", url); + }, + + /** + * helper function to focus on search bar + */ + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); + }, + + /** + * Initialise the domain index toggle buttons + */ + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); + } + }; + + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)) + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); + }, + + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + const blacklistedElements = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", + ]); + document.addEventListener("keydown", (event) => { + if (blacklistedElements.has(document.activeElement.tagName)) return; // bail for input elements + if (event.altKey || event.ctrlKey || event.metaKey) return; // bail with special keys + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); + } + break; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); + } + break; + case "Escape": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.hideSearchWords(); + event.preventDefault(); + } + } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } + }); + }, +}; + +// quick alias for translations +const _ = Documentation.gettext; + +_ready(Documentation.init); diff --git a/_static/documentation_options.js b/_static/documentation_options.js new file mode 100644 index 00000000..30637825 --- /dev/null +++ b/_static/documentation_options.js @@ -0,0 +1,14 @@ +var DOCUMENTATION_OPTIONS = { + URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), + VERSION: '', + LANGUAGE: 'en', + COLLAPSE_INDEX: false, + BUILDER: 'html', + FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '', + NAVIGATION_WITH_KEYS: true, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: false, +}; \ No newline at end of file diff --git a/_static/file.png b/_static/file.png new file mode 100644 index 00000000..a858a410 Binary files /dev/null and b/_static/file.png differ diff --git a/_static/images/logo_binder.svg b/_static/images/logo_binder.svg new file mode 100644 index 00000000..45fecf75 --- /dev/null +++ b/_static/images/logo_binder.svg @@ -0,0 +1,19 @@ + + + + +logo + + + + + + + + diff --git a/_static/images/logo_colab.png b/_static/images/logo_colab.png new file mode 100644 index 00000000..b7560ec2 Binary files /dev/null and b/_static/images/logo_colab.png differ diff --git a/_static/images/logo_deepnote.svg b/_static/images/logo_deepnote.svg new file mode 100644 index 00000000..fa77ebfc --- /dev/null +++ b/_static/images/logo_deepnote.svg @@ -0,0 +1 @@ + diff --git a/_static/images/logo_jupyterhub.svg b/_static/images/logo_jupyterhub.svg new file mode 100644 index 00000000..60cfe9f2 --- /dev/null +++ b/_static/images/logo_jupyterhub.svg @@ -0,0 +1 @@ +logo_jupyterhubHub diff --git a/_static/jquery-3.6.0.js b/_static/jquery-3.6.0.js new file mode 100644 index 00000000..fc6c299b --- /dev/null +++ b/_static/jquery-3.6.0.js @@ -0,0 +1,10881 @@ +/*! + * jQuery JavaScript Library v3.6.0 + * https://jquery.com/ + * + * Includes Sizzle.js + * https://sizzlejs.com/ + * + * Copyright OpenJS Foundation and other contributors + * Released under the MIT license + * https://jquery.org/license + * + * Date: 2021-03-02T17:08Z + */ +( function( global, factory ) { + + "use strict"; + + if ( typeof module === "object" && typeof module.exports === "object" ) { + + // For CommonJS and CommonJS-like environments where a proper `window` + // is present, execute the factory and get jQuery. + // For environments that do not have a `window` with a `document` + // (such as Node.js), expose a factory as module.exports. + // This accentuates the need for the creation of a real `window`. + // e.g. var jQuery = require("jquery")(window); + // See ticket #14549 for more info. + module.exports = global.document ? + factory( global, true ) : + function( w ) { + if ( !w.document ) { + throw new Error( "jQuery requires a window with a document" ); + } + return factory( w ); + }; + } else { + factory( global ); + } + +// Pass this if window is not defined yet +} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { + +// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 +// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode +// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common +// enough that all such attempts are guarded in a try block. +"use strict"; + +var arr = []; + +var getProto = Object.getPrototypeOf; + +var slice = arr.slice; + +var flat = arr.flat ? function( array ) { + return arr.flat.call( array ); +} : function( array ) { + return arr.concat.apply( [], array ); +}; + + +var push = arr.push; + +var indexOf = arr.indexOf; + +var class2type = {}; + +var toString = class2type.toString; + +var hasOwn = class2type.hasOwnProperty; + +var fnToString = hasOwn.toString; + +var ObjectFunctionString = fnToString.call( Object ); + +var support = {}; + +var isFunction = function isFunction( obj ) { + + // Support: Chrome <=57, Firefox <=52 + // In some browsers, typeof returns "function" for HTML elements + // (i.e., `typeof document.createElement( "object" ) === "function"`). + // We don't want to classify *any* DOM node as a function. + // Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5 + // Plus for old WebKit, typeof returns "function" for HTML collections + // (e.g., `typeof document.getElementsByTagName("div") === "function"`). (gh-4756) + return typeof obj === "function" && typeof obj.nodeType !== "number" && + typeof obj.item !== "function"; + }; + + +var isWindow = function isWindow( obj ) { + return obj != null && obj === obj.window; + }; + + +var document = window.document; + + + + var preservedScriptAttributes = { + type: true, + src: true, + nonce: true, + noModule: true + }; + + function DOMEval( code, node, doc ) { + doc = doc || document; + + var i, val, + script = doc.createElement( "script" ); + + script.text = code; + if ( node ) { + for ( i in preservedScriptAttributes ) { + + // Support: Firefox 64+, Edge 18+ + // Some browsers don't support the "nonce" property on scripts. + // On the other hand, just using `getAttribute` is not enough as + // the `nonce` attribute is reset to an empty string whenever it + // becomes browsing-context connected. + // See https://github.com/whatwg/html/issues/2369 + // See https://html.spec.whatwg.org/#nonce-attributes + // The `node.getAttribute` check was added for the sake of + // `jQuery.globalEval` so that it can fake a nonce-containing node + // via an object. + val = node[ i ] || node.getAttribute && node.getAttribute( i ); + if ( val ) { + script.setAttribute( i, val ); + } + } + } + doc.head.appendChild( script ).parentNode.removeChild( script ); + } + + +function toType( obj ) { + if ( obj == null ) { + return obj + ""; + } + + // Support: Android <=2.3 only (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; +} +/* global Symbol */ +// Defining this global in .eslintrc.json would create a danger of using the global +// unguarded in another place, it seems safer to define global only for this module + + + +var + version = "3.6.0", + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }; + +jQuery.fn = jQuery.prototype = { + + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + + // Return all the elements in a clean array + if ( num == null ) { + return slice.call( this ); + } + + // Return just the one element from the set + return num < 0 ? this[ num + this.length ] : this[ num ]; + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + each: function( callback ) { + return jQuery.each( this, callback ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map( this, function( elem, i ) { + return callback.call( elem, i, elem ); + } ) ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + even: function() { + return this.pushStack( jQuery.grep( this, function( _elem, i ) { + return ( i + 1 ) % 2; + } ) ); + }, + + odd: function() { + return this.pushStack( jQuery.grep( this, function( _elem, i ) { + return i % 2; + } ) ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: arr.sort, + splice: arr.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[ 0 ] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // Skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !isFunction( target ) ) { + target = {}; + } + + // Extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + + // Only deal with non-null/undefined values + if ( ( options = arguments[ i ] ) != null ) { + + // Extend the base object + for ( name in options ) { + copy = options[ name ]; + + // Prevent Object.prototype pollution + // Prevent never-ending loop + if ( name === "__proto__" || target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject( copy ) || + ( copyIsArray = Array.isArray( copy ) ) ) ) { + src = target[ name ]; + + // Ensure proper type for the source value + if ( copyIsArray && !Array.isArray( src ) ) { + clone = []; + } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) { + clone = {}; + } else { + clone = src; + } + copyIsArray = false; + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend( { + + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + isPlainObject: function( obj ) { + var proto, Ctor; + + // Detect obvious negatives + // Use toString instead of jQuery.type to catch host objects + if ( !obj || toString.call( obj ) !== "[object Object]" ) { + return false; + } + + proto = getProto( obj ); + + // Objects with no prototype (e.g., `Object.create( null )`) are plain + if ( !proto ) { + return true; + } + + // Objects with prototype are plain iff they were constructed by a global Object function + Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; + return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; + }, + + isEmptyObject: function( obj ) { + var name; + + for ( name in obj ) { + return false; + } + return true; + }, + + // Evaluates a script in a provided context; falls back to the global one + // if not specified. + globalEval: function( code, options, doc ) { + DOMEval( code, { nonce: options && options.nonce }, doc ); + }, + + each: function( obj, callback ) { + var length, i = 0; + + if ( isArrayLike( obj ) ) { + length = obj.length; + for ( ; i < length; i++ ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } else { + for ( i in obj ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } + + return obj; + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArrayLike( Object( arr ) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + return arr == null ? -1 : indexOf.call( arr, elem, i ); + }, + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + for ( ; j < len; j++ ) { + first[ i++ ] = second[ j ]; + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var length, value, + i = 0, + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArrayLike( elems ) ) { + length = elems.length; + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return flat( ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +} ); + +if ( typeof Symbol === "function" ) { + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; +} + +// Populate the class2type map +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), + function( _i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); + } ); + +function isArrayLike( obj ) { + + // Support: real iOS 8.2 only (not reproducible in simulator) + // `in` check used to prevent JIT error (gh-2145) + // hasOwn isn't used here due to false negatives + // regarding Nodelist length in IE + var length = !!obj && "length" in obj && obj.length, + type = toType( obj ); + + if ( isFunction( obj ) || isWindow( obj ) ) { + return false; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v2.3.6 + * https://sizzlejs.com/ + * + * Copyright JS Foundation and other contributors + * Released under the MIT license + * https://js.foundation/ + * + * Date: 2021-02-16 + */ +( function( window ) { +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + 1 * new Date(), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + nonnativeSelectorCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // Instance methods + hasOwn = ( {} ).hasOwnProperty, + arr = [], + pop = arr.pop, + pushNative = arr.push, + push = arr.push, + slice = arr.slice, + + // Use a stripped-down indexOf as it's faster than native + // https://jsperf.com/thor-indexof-vs-for/5 + indexOf = function( list, elem ) { + var i = 0, + len = list.length; + for ( ; i < len; i++ ) { + if ( list[ i ] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|" + + "ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + + // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram + identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + + "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + + // "Attribute values must be CSS identifiers [capture 5] + // or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + + whitespace + "*\\]", + + pseudos = ":(" + identifier + ")(?:\\((" + + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rwhitespace = new RegExp( whitespace + "+", "g" ), + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + + "*" ), + rdescend = new RegExp( whitespace + "|>" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + identifier + ")" ), + "CLASS": new RegExp( "^\\.(" + identifier + ")" ), + "TAG": new RegExp( "^(" + identifier + "|[*])" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rhtml = /HTML$/i, + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + + // CSS escapes + // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g" ), + funescape = function( escape, nonHex ) { + var high = "0x" + escape.slice( 1 ) - 0x10000; + + return nonHex ? + + // Strip the backslash prefix from a non-hex escape sequence + nonHex : + + // Replace a hexadecimal escape sequence with the encoded Unicode code point + // Support: IE <=11+ + // For values outside the Basic Multilingual Plane (BMP), manually construct a + // surrogate pair + high < 0 ? + String.fromCharCode( high + 0x10000 ) : + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }, + + // CSS string/identifier serialization + // https://drafts.csswg.org/cssom/#common-serializing-idioms + rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, + fcssescape = function( ch, asCodePoint ) { + if ( asCodePoint ) { + + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER + if ( ch === "\0" ) { + return "\uFFFD"; + } + + // Control characters and (dependent upon position) numbers get escaped as code points + return ch.slice( 0, -1 ) + "\\" + + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; + } + + // Other potentially-special ASCII characters get backslash-escaped + return "\\" + ch; + }, + + // Used for iframes + // See setDocument() + // Removing the function wrapper causes a "Permission Denied" + // error in IE + unloadHandler = function() { + setDocument(); + }, + + inDisabledFieldset = addCombinator( + function( elem ) { + return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset"; + }, + { dir: "parentNode", next: "legend" } + ); + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + ( arr = slice.call( preferredDoc.childNodes ) ), + preferredDoc.childNodes + ); + + // Support: Android<4.0 + // Detect silently failing push.apply + // eslint-disable-next-line no-unused-expressions + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + pushNative.apply( target, slice.call( els ) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + + // Can't trust NodeList.length + while ( ( target[ j++ ] = els[ i++ ] ) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var m, i, elem, nid, match, groups, newSelector, + newContext = context && context.ownerDocument, + + // nodeType defaults to 9, since context defaults to document + nodeType = context ? context.nodeType : 9; + + results = results || []; + + // Return early from calls with invalid selector or context + if ( typeof selector !== "string" || !selector || + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { + + return results; + } + + // Try to shortcut find operations (as opposed to filters) in HTML documents + if ( !seed ) { + setDocument( context ); + context = context || document; + + if ( documentIsHTML ) { + + // If the selector is sufficiently simple, try using a "get*By*" DOM method + // (excepting DocumentFragment context, where the methods don't exist) + if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) { + + // ID selector + if ( ( m = match[ 1 ] ) ) { + + // Document context + if ( nodeType === 9 ) { + if ( ( elem = context.getElementById( m ) ) ) { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + + // Element context + } else { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( newContext && ( elem = newContext.getElementById( m ) ) && + contains( context, elem ) && + elem.id === m ) { + + results.push( elem ); + return results; + } + } + + // Type selector + } else if ( match[ 2 ] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Class selector + } else if ( ( m = match[ 3 ] ) && support.getElementsByClassName && + context.getElementsByClassName ) { + + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // Take advantage of querySelectorAll + if ( support.qsa && + !nonnativeSelectorCache[ selector + " " ] && + ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) && + + // Support: IE 8 only + // Exclude object elements + ( nodeType !== 1 || context.nodeName.toLowerCase() !== "object" ) ) { + + newSelector = selector; + newContext = context; + + // qSA considers elements outside a scoping root when evaluating child or + // descendant combinators, which is not what we want. + // In such cases, we work around the behavior by prefixing every selector in the + // list with an ID selector referencing the scope context. + // The technique has to be used as well when a leading combinator is used + // as such selectors are not recognized by querySelectorAll. + // Thanks to Andrew Dupont for this technique. + if ( nodeType === 1 && + ( rdescend.test( selector ) || rcombinators.test( selector ) ) ) { + + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + + // We can use :scope instead of the ID hack if the browser + // supports it & if we're not changing the context. + if ( newContext !== context || !support.scope ) { + + // Capture the context ID, setting it first if necessary + if ( ( nid = context.getAttribute( "id" ) ) ) { + nid = nid.replace( rcssescape, fcssescape ); + } else { + context.setAttribute( "id", ( nid = expando ) ); + } + } + + // Prefix every selector in the list + groups = tokenize( selector ); + i = groups.length; + while ( i-- ) { + groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " + + toSelector( groups[ i ] ); + } + newSelector = groups.join( "," ); + } + + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch ( qsaError ) { + nonnativeSelectorCache( selector, true ); + } finally { + if ( nid === expando ) { + context.removeAttribute( "id" ); + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {function(string, object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return ( cache[ key + " " ] = value ); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created element and returns a boolean result + */ +function assert( fn ) { + var el = document.createElement( "fieldset" ); + + try { + return !!fn( el ); + } catch ( e ) { + return false; + } finally { + + // Remove from its parent by default + if ( el.parentNode ) { + el.parentNode.removeChild( el ); + } + + // release memory in IE + el = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split( "|" ), + i = arr.length; + + while ( i-- ) { + Expr.attrHandle[ arr[ i ] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + a.sourceIndex - b.sourceIndex; + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( ( cur = cur.nextSibling ) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return ( name === "input" || name === "button" ) && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for :enabled/:disabled + * @param {Boolean} disabled true for :disabled; false for :enabled + */ +function createDisabledPseudo( disabled ) { + + // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable + return function( elem ) { + + // Only certain elements can match :enabled or :disabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled + if ( "form" in elem ) { + + // Check for inherited disabledness on relevant non-disabled elements: + // * listed form-associated elements in a disabled fieldset + // https://html.spec.whatwg.org/multipage/forms.html#category-listed + // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled + // * option elements in a disabled optgroup + // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled + // All such elements have a "form" property. + if ( elem.parentNode && elem.disabled === false ) { + + // Option elements defer to a parent optgroup if present + if ( "label" in elem ) { + if ( "label" in elem.parentNode ) { + return elem.parentNode.disabled === disabled; + } else { + return elem.disabled === disabled; + } + } + + // Support: IE 6 - 11 + // Use the isDisabled shortcut property to check for disabled fieldset ancestors + return elem.isDisabled === disabled || + + // Where there is no isDisabled, check manually + /* jshint -W018 */ + elem.isDisabled !== !disabled && + inDisabledFieldset( elem ) === disabled; + } + + return elem.disabled === disabled; + + // Try to winnow out elements that can't be disabled before trusting the disabled property. + // Some victims get caught in our net (label, legend, menu, track), but it shouldn't + // even exist on them, let alone have a boolean value. + } else if ( "label" in elem ) { + return elem.disabled === disabled; + } + + // Remaining elements are neither :enabled nor :disabled + return false; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction( function( argument ) { + argument = +argument; + return markFunction( function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ ( j = matchIndexes[ i ] ) ] ) { + seed[ j ] = !( matches[ j ] = seed[ j ] ); + } + } + } ); + } ); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== "undefined" && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +isXML = Sizzle.isXML = function( elem ) { + var namespace = elem && elem.namespaceURI, + docElem = elem && ( elem.ownerDocument || elem ).documentElement; + + // Support: IE <=8 + // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes + // https://bugs.jquery.com/ticket/4833 + return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" ); +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var hasCompare, subWindow, + doc = node ? node.ownerDocument || node : preferredDoc; + + // Return early if doc is invalid or already selected + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Update global variables + document = doc; + docElem = document.documentElement; + documentIsHTML = !isXML( document ); + + // Support: IE 9 - 11+, Edge 12 - 18+ + // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( preferredDoc != document && + ( subWindow = document.defaultView ) && subWindow.top !== subWindow ) { + + // Support: IE 11, Edge + if ( subWindow.addEventListener ) { + subWindow.addEventListener( "unload", unloadHandler, false ); + + // Support: IE 9 - 10 only + } else if ( subWindow.attachEvent ) { + subWindow.attachEvent( "onunload", unloadHandler ); + } + } + + // Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only, + // Safari 4 - 5 only, Opera <=11.6 - 12.x only + // IE/Edge & older browsers don't support the :scope pseudo-class. + // Support: Safari 6.0 only + // Safari 6.0 supports :scope but it's an alias of :root there. + support.scope = assert( function( el ) { + docElem.appendChild( el ).appendChild( document.createElement( "div" ) ); + return typeof el.querySelectorAll !== "undefined" && + !el.querySelectorAll( ":scope fieldset div" ).length; + } ); + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties + // (excepting IE8 booleans) + support.attributes = assert( function( el ) { + el.className = "i"; + return !el.getAttribute( "className" ); + } ); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert( function( el ) { + el.appendChild( document.createComment( "" ) ); + return !el.getElementsByTagName( "*" ).length; + } ); + + // Support: IE<9 + support.getElementsByClassName = rnative.test( document.getElementsByClassName ); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programmatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert( function( el ) { + docElem.appendChild( el ).id = expando; + return !document.getElementsByName || !document.getElementsByName( expando ).length; + } ); + + // ID filter and find + if ( support.getById ) { + Expr.filter[ "ID" ] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute( "id" ) === attrId; + }; + }; + Expr.find[ "ID" ] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var elem = context.getElementById( id ); + return elem ? [ elem ] : []; + } + }; + } else { + Expr.filter[ "ID" ] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== "undefined" && + elem.getAttributeNode( "id" ); + return node && node.value === attrId; + }; + }; + + // Support: IE 6 - 7 only + // getElementById is not reliable as a find shortcut + Expr.find[ "ID" ] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var node, i, elems, + elem = context.getElementById( id ); + + if ( elem ) { + + // Verify the id attribute + node = elem.getAttributeNode( "id" ); + if ( node && node.value === id ) { + return [ elem ]; + } + + // Fall back on getElementsByName + elems = context.getElementsByName( id ); + i = 0; + while ( ( elem = elems[ i++ ] ) ) { + node = elem.getAttributeNode( "id" ); + if ( node && node.value === id ) { + return [ elem ]; + } + } + } + + return []; + } + }; + } + + // Tag + Expr.find[ "TAG" ] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( tag ); + + // DocumentFragment nodes don't have gEBTN + } else if ( support.qsa ) { + return context.querySelectorAll( tag ); + } + } : + + function( tag, context ) { + var elem, + tmp = [], + i = 0, + + // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( ( elem = results[ i++ ] ) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find[ "CLASS" ] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See https://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) { + + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert( function( el ) { + + var input; + + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // https://bugs.jquery.com/ticket/12359 + docElem.appendChild( el ).innerHTML = "" + + ""; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( el.querySelectorAll( "[msallowcapture^='']" ).length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !el.querySelectorAll( "[selected]" ).length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ + if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { + rbuggyQSA.push( "~=" ); + } + + // Support: IE 11+, Edge 15 - 18+ + // IE 11/Edge don't find elements on a `[name='']` query in some cases. + // Adding a temporary attribute to the document before the selection works + // around the issue. + // Interestingly, IE 10 & older don't seem to have the issue. + input = document.createElement( "input" ); + input.setAttribute( "name", "" ); + el.appendChild( input ); + if ( !el.querySelectorAll( "[name='']" ).length ) { + rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" + + whitespace + "*(?:''|\"\")" ); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !el.querySelectorAll( ":checked" ).length ) { + rbuggyQSA.push( ":checked" ); + } + + // Support: Safari 8+, iOS 8+ + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibling-combinator selector` fails + if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { + rbuggyQSA.push( ".#.+[+~]" ); + } + + // Support: Firefox <=3.6 - 5 only + // Old Firefox doesn't throw on a badly-escaped identifier. + el.querySelectorAll( "\\\f" ); + rbuggyQSA.push( "[\\r\\n\\f]" ); + } ); + + assert( function( el ) { + el.innerHTML = "" + + ""; + + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = document.createElement( "input" ); + input.setAttribute( "type", "hidden" ); + el.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( el.querySelectorAll( "[name=d]" ).length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( el.querySelectorAll( ":enabled" ).length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: IE9-11+ + // IE's :disabled selector does not pick up the children of disabled fieldsets + docElem.appendChild( el ).disabled = true; + if ( el.querySelectorAll( ":disabled" ).length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: Opera 10 - 11 only + // Opera 10-11 does not throw on post-comma invalid pseudos + el.querySelectorAll( "*,:x" ); + rbuggyQSA.push( ",.*:" ); + } ); + } + + if ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector ) ) ) ) { + + assert( function( el ) { + + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( el, "*" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( el, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + } ); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( "|" ) ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully self-exclusive + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + ) ); + } : + function( a, b ) { + if ( b ) { + while ( ( b = b.parentNode ) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = hasCompare ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + ( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) { + + // Choose the first element that is related to our preferred document + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( a == document || a.ownerDocument == preferredDoc && + contains( preferredDoc, a ) ) { + return -1; + } + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( b == document || b.ownerDocument == preferredDoc && + contains( preferredDoc, b ) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Parentless nodes are either documents or disconnected + if ( !aup || !bup ) { + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + /* eslint-disable eqeqeq */ + return a == document ? -1 : + b == document ? 1 : + /* eslint-enable eqeqeq */ + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( ( cur = cur.parentNode ) ) { + ap.unshift( cur ); + } + cur = b; + while ( ( cur = cur.parentNode ) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[ i ] === bp[ i ] ) { + i++; + } + + return i ? + + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[ i ], bp[ i ] ) : + + // Otherwise nodes in our document sort first + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + /* eslint-disable eqeqeq */ + ap[ i ] == preferredDoc ? -1 : + bp[ i ] == preferredDoc ? 1 : + /* eslint-enable eqeqeq */ + 0; + }; + + return document; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + setDocument( elem ); + + if ( support.matchesSelector && documentIsHTML && + !nonnativeSelectorCache[ expr + " " ] && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch ( e ) { + nonnativeSelectorCache( expr, true ); + } + } + + return Sizzle( expr, document, null, [ elem ] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + + // Set document vars if needed + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( ( context.ownerDocument || context ) != document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + + // Set document vars if needed + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( ( elem.ownerDocument || elem ) != document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val !== undefined ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + ( val = elem.getAttributeNode( name ) ) && val.specified ? + val.value : + null; +}; + +Sizzle.escape = function( sel ) { + return ( sel + "" ).replace( rcssescape, fcssescape ); +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( ( elem = results[ i++ ] ) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + + // If no nodeType, this is expected to be an array + while ( ( node = elem[ i++ ] ) ) { + + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + + // Use textContent for elements + // innerText usage removed for consistency of new lines (jQuery #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[ 1 ] = match[ 1 ].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[ 3 ] = ( match[ 3 ] || match[ 4 ] || + match[ 5 ] || "" ).replace( runescape, funescape ); + + if ( match[ 2 ] === "~=" ) { + match[ 3 ] = " " + match[ 3 ] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[ 1 ] = match[ 1 ].toLowerCase(); + + if ( match[ 1 ].slice( 0, 3 ) === "nth" ) { + + // nth-* requires argument + if ( !match[ 3 ] ) { + Sizzle.error( match[ 0 ] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[ 4 ] = +( match[ 4 ] ? + match[ 5 ] + ( match[ 6 ] || 1 ) : + 2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) ); + match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" ); + + // other types prohibit arguments + } else if ( match[ 3 ] ) { + Sizzle.error( match[ 0 ] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[ 6 ] && match[ 2 ]; + + if ( matchExpr[ "CHILD" ].test( match[ 0 ] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[ 3 ] ) { + match[ 2 ] = match[ 4 ] || match[ 5 ] || ""; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + + // Get excess from tokenize (recursively) + ( excess = tokenize( unquoted, true ) ) && + + // advance to the next closing parenthesis + ( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) { + + // excess is a negative index + match[ 0 ] = match[ 0 ].slice( 0, excess ); + match[ 2 ] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { + return true; + } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + ( pattern = new RegExp( "(^|" + whitespace + + ")" + className + "(" + whitespace + "|$)" ) ) && classCache( + className, function( elem ) { + return pattern.test( + typeof elem.className === "string" && elem.className || + typeof elem.getAttribute !== "undefined" && + elem.getAttribute( "class" ) || + "" + ); + } ); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + /* eslint-disable max-len */ + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + /* eslint-enable max-len */ + + }; + }, + + "CHILD": function( type, what, _argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, _context, xml ) { + var cache, uniqueCache, outerCache, node, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType, + diff = false; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( ( node = node[ dir ] ) ) { + if ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) { + + return false; + } + } + + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + + // Seek `elem` from a previously-cached index + + // ...in a gzip-friendly way + node = parent; + outerCache = node[ expando ] || ( node[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + ( outerCache[ node.uniqueID ] = {} ); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex && cache[ 2 ]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( ( node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + ( diff = nodeIndex = 0 ) || start.pop() ) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + } else { + + // Use previously-cached element index if available + if ( useCache ) { + + // ...in a gzip-friendly way + node = elem; + outerCache = node[ expando ] || ( node[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + ( outerCache[ node.uniqueID ] = {} ); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex; + } + + // xml :nth-child(...) + // or :nth-last-child(...) or :nth(-last)?-of-type(...) + if ( diff === false ) { + + // Use the same loop as above to seek `elem` from the start + while ( ( node = ++nodeIndex && node && node[ dir ] || + ( diff = nodeIndex = 0 ) || start.pop() ) ) { + + if ( ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) && + ++diff ) { + + // Cache the index of each encountered element + if ( useCache ) { + outerCache = node[ expando ] || + ( node[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + ( outerCache[ node.uniqueID ] = {} ); + + uniqueCache[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction( function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf( seed, matched[ i ] ); + seed[ idx ] = !( matches[ idx ] = matched[ i ] ); + } + } ) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + + // Potentially complex pseudos + "not": markFunction( function( selector ) { + + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction( function( seed, matches, _context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( ( elem = unmatched[ i ] ) ) { + seed[ i ] = !( matches[ i ] = elem ); + } + } + } ) : + function( elem, _context, xml ) { + input[ 0 ] = elem; + matcher( input, null, xml, results ); + + // Don't keep the element (issue #299) + input[ 0 ] = null; + return !results.pop(); + }; + } ), + + "has": markFunction( function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + } ), + + "contains": markFunction( function( text ) { + text = text.replace( runescape, funescape ); + return function( elem ) { + return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1; + }; + } ), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + + // lang value must be a valid identifier + if ( !ridentifier.test( lang || "" ) ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( ( elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( ( elem = elem.parentNode ) && elem.nodeType === 1 ); + return false; + }; + } ), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && + ( !document.hasFocus || document.hasFocus() ) && + !!( elem.type || elem.href || ~elem.tabIndex ); + }, + + // Boolean properties + "enabled": createDisabledPseudo( false ), + "disabled": createDisabledPseudo( true ), + + "checked": function( elem ) { + + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return ( nodeName === "input" && !!elem.checked ) || + ( nodeName === "option" && !!elem.selected ); + }, + + "selected": function( elem ) { + + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + // eslint-disable-next-line no-unused-expressions + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos[ "empty" ]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" + ( ( attr = elem.getAttribute( "type" ) ) == null || + attr.toLowerCase() === "text" ); + }, + + // Position-in-collection + "first": createPositionalPseudo( function() { + return [ 0 ]; + } ), + + "last": createPositionalPseudo( function( _matchIndexes, length ) { + return [ length - 1 ]; + } ), + + "eq": createPositionalPseudo( function( _matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + } ), + + "even": createPositionalPseudo( function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ), + + "odd": createPositionalPseudo( function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ), + + "lt": createPositionalPseudo( function( matchIndexes, length, argument ) { + var i = argument < 0 ? + argument + length : + argument > length ? + length : + argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ), + + "gt": createPositionalPseudo( function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ) + } +}; + +Expr.pseudos[ "nth" ] = Expr.pseudos[ "eq" ]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +tokenize = Sizzle.tokenize = function( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || ( match = rcomma.exec( soFar ) ) ) { + if ( match ) { + + // Don't consume trailing commas as valid + soFar = soFar.slice( match[ 0 ].length ) || soFar; + } + groups.push( ( tokens = [] ) ); + } + + matched = false; + + // Combinators + if ( ( match = rcombinators.exec( soFar ) ) ) { + matched = match.shift(); + tokens.push( { + value: matched, + + // Cast descendant combinators to space + type: match[ 0 ].replace( rtrim, " " ) + } ); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] || + ( match = preFilters[ type ]( match ) ) ) ) { + matched = match.shift(); + tokens.push( { + value: matched, + type: type, + matches: match + } ); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +}; + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[ i ].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + skip = combinator.next, + key = skip || dir, + checkNonElements = base && key === "parentNode", + doneName = done++; + + return combinator.first ? + + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( ( elem = elem[ dir ] ) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + return false; + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, uniqueCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching + if ( xml ) { + while ( ( elem = elem[ dir ] ) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( ( elem = elem[ dir ] ) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || ( elem[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ elem.uniqueID ] || + ( outerCache[ elem.uniqueID ] = {} ); + + if ( skip && skip === elem.nodeName.toLowerCase() ) { + elem = elem[ dir ] || elem; + } else if ( ( oldCache = uniqueCache[ key ] ) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return ( newCache[ 2 ] = oldCache[ 2 ] ); + } else { + + // Reuse newcache so results back-propagate to previous elements + uniqueCache[ key ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) { + return true; + } + } + } + } + } + return false; + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[ i ]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[ 0 ]; +} + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[ i ], results ); + } + return results; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( ( elem = unmatched[ i ] ) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction( function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( + selector || "*", + context.nodeType ? [ context ] : context, + [] + ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( ( elem = temp[ i ] ) ) { + matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem ); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( ( elem = matcherOut[ i ] ) ) { + + // Restore matcherIn since elem is not yet a final match + temp.push( ( matcherIn[ i ] = elem ) ); + } + } + postFinder( null, ( matcherOut = [] ), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( ( elem = matcherOut[ i ] ) && + ( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) { + + seed[ temp ] = !( results[ temp ] = elem ); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + } ); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[ 0 ].type ], + implicitRelative = leadingRelative || Expr.relative[ " " ], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + ( checkContext = context ).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + + // Avoid hanging onto element (issue #299) + checkContext = null; + return ret; + } ]; + + for ( ; i < len; i++ ) { + if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) { + matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ]; + } else { + matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[ j ].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens + .slice( 0, i - 1 ) + .concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } ) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find[ "TAG" ]( "*", outermost ), + + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ), + len = elems.length; + + if ( outermost ) { + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + outermostContext = context == document || context || outermost; + } + + // Add elements passing elementMatchers directly to results + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id + for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( !context && elem.ownerDocument != document ) { + setDocument( elem ); + xml = !documentIsHTML; + } + while ( ( matcher = elementMatchers[ j++ ] ) ) { + if ( matcher( elem, context || document, xml ) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + + // They will have gone through all possible matchers + if ( ( elem = !matcher && elem ) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // `i` is now the count of elements visited above, and adding it to `matchedCount` + // makes the latter nonnegative. + matchedCount += i; + + // Apply set filters to unmatched elements + // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` + // equals `i`), unless we didn't visit _any_ elements in the above loop because we have + // no element matchers and no seed. + // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that + // case, which will result in a "00" `matchedCount` that differs from `i` but is also + // numerically zero. + if ( bySet && i !== matchedCount ) { + j = 0; + while ( ( matcher = setMatchers[ j++ ] ) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !( unmatched[ i ] || setMatched[ i ] ) ) { + setMatched[ i ] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + + // Generate a function of recursive functions that can be used to check each element + if ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[ i ] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( + selector, + matcherFromGroupMatchers( elementMatchers, setMatchers ) + ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; +}; + +/** + * A low-level selection function that works with Sizzle's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with Sizzle.compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +select = Sizzle.select = function( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( ( selector = compiled.selector || selector ) ); + + results = results || []; + + // Try to minimize operations if there is only one selector in the list and no seed + // (the latter of which guarantees us context) + if ( match.length === 1 ) { + + // Reduce context if the leading compound selector is an ID + tokens = match[ 0 ] = match[ 0 ].slice( 0 ); + if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" && + context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) { + + context = ( Expr.find[ "ID" ]( token.matches[ 0 ] + .replace( runescape, funescape ), context ) || [] )[ 0 ]; + if ( !context ) { + return results; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr[ "needsContext" ].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[ i ]; + + // Abort if we hit a combinator + if ( Expr.relative[ ( type = token.type ) ] ) { + break; + } + if ( ( find = Expr.find[ type ] ) ) { + + // Search, expanding context for leading sibling combinators + if ( ( seed = find( + token.matches[ 0 ].replace( runescape, funescape ), + rsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) || + context + ) ) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + + // Compile and execute a filtering function if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + !context || rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +}; + +// One-time assignments + +// Sort stability +support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando; + +// Support: Chrome 14-35+ +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = !!hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert( function( el ) { + + // Should return 1, but returns 4 (following) + return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1; +} ); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert( function( el ) { + el.innerHTML = ""; + return el.firstChild.getAttribute( "href" ) === "#"; +} ) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + } ); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert( function( el ) { + el.innerHTML = ""; + el.firstChild.setAttribute( "value", "" ); + return el.firstChild.getAttribute( "value" ) === ""; +} ) ) { + addHandle( "value", function( elem, _name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + } ); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert( function( el ) { + return el.getAttribute( "disabled" ) == null; +} ) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return elem[ name ] === true ? name.toLowerCase() : + ( val = elem.getAttributeNode( name ) ) && val.specified ? + val.value : + null; + } + } ); +} + +return Sizzle; + +} )( window ); + + + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; + +// Deprecated +jQuery.expr[ ":" ] = jQuery.expr.pseudos; +jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; +jQuery.escapeSelector = Sizzle.escape; + + + + +var dir = function( elem, dir, until ) { + var matched = [], + truncate = until !== undefined; + + while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { + if ( elem.nodeType === 1 ) { + if ( truncate && jQuery( elem ).is( until ) ) { + break; + } + matched.push( elem ); + } + } + return matched; +}; + + +var siblings = function( n, elem ) { + var matched = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + matched.push( n ); + } + } + + return matched; +}; + + +var rneedsContext = jQuery.expr.match.needsContext; + + + +function nodeName( elem, name ) { + + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + +} +var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); + + + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + return !!qualifier.call( elem, i, elem ) !== not; + } ); + } + + // Single element + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + } ); + } + + // Arraylike of elements (jQuery, arguments, Array) + if ( typeof qualifier !== "string" ) { + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not; + } ); + } + + // Filtered directly for both simple and complex selectors + return jQuery.filter( qualifier, elements, not ); +} + +jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + if ( elems.length === 1 && elem.nodeType === 1 ) { + return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; + } + + return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + } ) ); +}; + +jQuery.fn.extend( { + find: function( selector ) { + var i, ret, + len = this.length, + self = this; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter( function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + } ) ); + } + + ret = this.pushStack( [] ); + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + return len > 1 ? jQuery.uniqueSort( ret ) : ret; + }, + filter: function( selector ) { + return this.pushStack( winnow( this, selector || [], false ) ); + }, + not: function( selector ) { + return this.pushStack( winnow( this, selector || [], true ) ); + }, + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + } +} ); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + // Shortcut simple #id case for speed + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, + + init = jQuery.fn.init = function( selector, context, root ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Method init() accepts an alternate rootjQuery + // so migrate can support jQuery.sub (gh-2101) + root = root || rootjQuery; + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector[ 0 ] === "<" && + selector[ selector.length - 1 ] === ">" && + selector.length >= 3 ) { + + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && ( match[ 1 ] || !context ) ) { + + // HANDLE: $(html) -> $(array) + if ( match[ 1 ] ) { + context = context instanceof jQuery ? context[ 0 ] : context; + + // Option to run scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + jQuery.merge( this, jQuery.parseHTML( + match[ 1 ], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + + // Properties of context are called as methods if possible + if ( isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[ 2 ] ); + + if ( elem ) { + + // Inject the element directly into the jQuery object + this[ 0 ] = elem; + this.length = 1; + } + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || root ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this[ 0 ] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( isFunction( selector ) ) { + return root.ready !== undefined ? + root.ready( selector ) : + + // Execute immediately if ready is not present + selector( jQuery ); + } + + return jQuery.makeArray( selector, this ); + }; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, + + // Methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend( { + has: function( target ) { + var targets = jQuery( target, this ), + l = targets.length; + + return this.filter( function() { + var i = 0; + for ( ; i < l; i++ ) { + if ( jQuery.contains( this, targets[ i ] ) ) { + return true; + } + } + } ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + targets = typeof selectors !== "string" && jQuery( selectors ); + + // Positional selectors never match, since there's no _selection_ context + if ( !rneedsContext.test( selectors ) ) { + for ( ; i < l; i++ ) { + for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { + + // Always skip document fragments + if ( cur.nodeType < 11 && ( targets ? + targets.index( cur ) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector( cur, selectors ) ) ) { + + matched.push( cur ); + break; + } + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); + }, + + // Determine the position of an element within the set + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; + } + + // Index in selector + if ( typeof elem === "string" ) { + return indexOf.call( jQuery( elem ), this[ 0 ] ); + } + + // Locate the position of the desired element + return indexOf.call( this, + + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[ 0 ] : elem + ); + }, + + add: function( selector, context ) { + return this.pushStack( + jQuery.uniqueSort( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + } +} ); + +function sibling( cur, dir ) { + while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} + return cur; +} + +jQuery.each( { + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, _i, until ) { + return dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, _i, until ) { + return dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, _i, until ) { + return dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return siblings( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return siblings( elem.firstChild ); + }, + contents: function( elem ) { + if ( elem.contentDocument != null && + + // Support: IE 11+ + // elements with no `data` attribute has an object + // `contentDocument` with a `null` prototype. + getProto( elem.contentDocument ) ) { + + return elem.contentDocument; + } + + // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only + // Treat the template element as a regular one in browsers that + // don't support it. + if ( nodeName( elem, "template" ) ) { + elem = elem.content || elem; + } + + return jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var matched = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + matched = jQuery.filter( selector, matched ); + } + + if ( this.length > 1 ) { + + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + jQuery.uniqueSort( matched ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + matched.reverse(); + } + } + + return this.pushStack( matched ); + }; +} ); +var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); + + + +// Convert String-formatted options into Object-formatted ones +function createOptions( options ) { + var object = {}; + jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { + object[ flag ] = true; + } ); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + createOptions( options ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + + // Last fire value for non-forgettable lists + memory, + + // Flag to know if list was already fired + fired, + + // Flag to prevent firing + locked, + + // Actual callback list + list = [], + + // Queue of execution data for repeatable lists + queue = [], + + // Index of currently firing callback (modified by add/remove as needed) + firingIndex = -1, + + // Fire callbacks + fire = function() { + + // Enforce single-firing + locked = locked || options.once; + + // Execute callbacks for all pending executions, + // respecting firingIndex overrides and runtime changes + fired = firing = true; + for ( ; queue.length; firingIndex = -1 ) { + memory = queue.shift(); + while ( ++firingIndex < list.length ) { + + // Run callback and check for early termination + if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && + options.stopOnFalse ) { + + // Jump to end and forget the data so .add doesn't re-fire + firingIndex = list.length; + memory = false; + } + } + } + + // Forget the data if we're done with it + if ( !options.memory ) { + memory = false; + } + + firing = false; + + // Clean up if we're done firing for good + if ( locked ) { + + // Keep an empty list if we have data for future add calls + if ( memory ) { + list = []; + + // Otherwise, this object is spent + } else { + list = ""; + } + } + }, + + // Actual Callbacks object + self = { + + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + + // If we have memory from a past run, we should fire after adding + if ( memory && !firing ) { + firingIndex = list.length - 1; + queue.push( memory ); + } + + ( function add( args ) { + jQuery.each( args, function( _, arg ) { + if ( isFunction( arg ) ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && toType( arg ) !== "string" ) { + + // Inspect recursively + add( arg ); + } + } ); + } )( arguments ); + + if ( memory && !firing ) { + fire(); + } + } + return this; + }, + + // Remove a callback from the list + remove: function() { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + + // Handle firing indexes + if ( index <= firingIndex ) { + firingIndex--; + } + } + } ); + return this; + }, + + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? + jQuery.inArray( fn, list ) > -1 : + list.length > 0; + }, + + // Remove all callbacks from the list + empty: function() { + if ( list ) { + list = []; + } + return this; + }, + + // Disable .fire and .add + // Abort any current/pending executions + // Clear all callbacks and values + disable: function() { + locked = queue = []; + list = memory = ""; + return this; + }, + disabled: function() { + return !list; + }, + + // Disable .fire + // Also disable .add unless we have memory (since it would have no effect) + // Abort any pending executions + lock: function() { + locked = queue = []; + if ( !memory && !firing ) { + list = memory = ""; + } + return this; + }, + locked: function() { + return !!locked; + }, + + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( !locked ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + queue.push( args ); + if ( !firing ) { + fire(); + } + } + return this; + }, + + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; + + +function Identity( v ) { + return v; +} +function Thrower( ex ) { + throw ex; +} + +function adoptValue( value, resolve, reject, noValue ) { + var method; + + try { + + // Check for promise aspect first to privilege synchronous behavior + if ( value && isFunction( ( method = value.promise ) ) ) { + method.call( value ).done( resolve ).fail( reject ); + + // Other thenables + } else if ( value && isFunction( ( method = value.then ) ) ) { + method.call( value, resolve, reject ); + + // Other non-thenables + } else { + + // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: + // * false: [ value ].slice( 0 ) => resolve( value ) + // * true: [ value ].slice( 1 ) => resolve() + resolve.apply( undefined, [ value ].slice( noValue ) ); + } + + // For Promises/A+, convert exceptions into rejections + // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in + // Deferred#then to conditionally suppress rejection. + } catch ( value ) { + + // Support: Android 4.0 only + // Strict mode functions invoked without .call/.apply get global-object context + reject.apply( undefined, [ value ] ); + } +} + +jQuery.extend( { + + Deferred: function( func ) { + var tuples = [ + + // action, add listener, callbacks, + // ... .then handlers, argument index, [final state] + [ "notify", "progress", jQuery.Callbacks( "memory" ), + jQuery.Callbacks( "memory" ), 2 ], + [ "resolve", "done", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 0, "resolved" ], + [ "reject", "fail", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 1, "rejected" ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + "catch": function( fn ) { + return promise.then( null, fn ); + }, + + // Keep pipe for back-compat + pipe: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + + return jQuery.Deferred( function( newDefer ) { + jQuery.each( tuples, function( _i, tuple ) { + + // Map tuples (progress, done, fail) to arguments (done, fail, progress) + var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; + + // deferred.progress(function() { bind to newDefer or newDefer.notify }) + // deferred.done(function() { bind to newDefer or newDefer.resolve }) + // deferred.fail(function() { bind to newDefer or newDefer.reject }) + deferred[ tuple[ 1 ] ]( function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && isFunction( returned.promise ) ) { + returned.promise() + .progress( newDefer.notify ) + .done( newDefer.resolve ) + .fail( newDefer.reject ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( + this, + fn ? [ returned ] : arguments + ); + } + } ); + } ); + fns = null; + } ).promise(); + }, + then: function( onFulfilled, onRejected, onProgress ) { + var maxDepth = 0; + function resolve( depth, deferred, handler, special ) { + return function() { + var that = this, + args = arguments, + mightThrow = function() { + var returned, then; + + // Support: Promises/A+ section 2.3.3.3.3 + // https://promisesaplus.com/#point-59 + // Ignore double-resolution attempts + if ( depth < maxDepth ) { + return; + } + + returned = handler.apply( that, args ); + + // Support: Promises/A+ section 2.3.1 + // https://promisesaplus.com/#point-48 + if ( returned === deferred.promise() ) { + throw new TypeError( "Thenable self-resolution" ); + } + + // Support: Promises/A+ sections 2.3.3.1, 3.5 + // https://promisesaplus.com/#point-54 + // https://promisesaplus.com/#point-75 + // Retrieve `then` only once + then = returned && + + // Support: Promises/A+ section 2.3.4 + // https://promisesaplus.com/#point-64 + // Only check objects and functions for thenability + ( typeof returned === "object" || + typeof returned === "function" ) && + returned.then; + + // Handle a returned thenable + if ( isFunction( then ) ) { + + // Special processors (notify) just wait for resolution + if ( special ) { + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ) + ); + + // Normal processors (resolve) also hook into progress + } else { + + // ...and disregard older resolution values + maxDepth++; + + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ), + resolve( maxDepth, deferred, Identity, + deferred.notifyWith ) + ); + } + + // Handle all other returned values + } else { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Identity ) { + that = undefined; + args = [ returned ]; + } + + // Process the value(s) + // Default process is resolve + ( special || deferred.resolveWith )( that, args ); + } + }, + + // Only normal processors (resolve) catch and reject exceptions + process = special ? + mightThrow : + function() { + try { + mightThrow(); + } catch ( e ) { + + if ( jQuery.Deferred.exceptionHook ) { + jQuery.Deferred.exceptionHook( e, + process.stackTrace ); + } + + // Support: Promises/A+ section 2.3.3.3.4.1 + // https://promisesaplus.com/#point-61 + // Ignore post-resolution exceptions + if ( depth + 1 >= maxDepth ) { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Thrower ) { + that = undefined; + args = [ e ]; + } + + deferred.rejectWith( that, args ); + } + } + }; + + // Support: Promises/A+ section 2.3.3.3.1 + // https://promisesaplus.com/#point-57 + // Re-resolve promises immediately to dodge false rejection from + // subsequent errors + if ( depth ) { + process(); + } else { + + // Call an optional hook to record the stack, in case of exception + // since it's otherwise lost when execution goes async + if ( jQuery.Deferred.getStackHook ) { + process.stackTrace = jQuery.Deferred.getStackHook(); + } + window.setTimeout( process ); + } + }; + } + + return jQuery.Deferred( function( newDefer ) { + + // progress_handlers.add( ... ) + tuples[ 0 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onProgress ) ? + onProgress : + Identity, + newDefer.notifyWith + ) + ); + + // fulfilled_handlers.add( ... ) + tuples[ 1 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onFulfilled ) ? + onFulfilled : + Identity + ) + ); + + // rejected_handlers.add( ... ) + tuples[ 2 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onRejected ) ? + onRejected : + Thrower + ) + ); + } ).promise(); + }, + + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 5 ]; + + // promise.progress = list.add + // promise.done = list.add + // promise.fail = list.add + promise[ tuple[ 1 ] ] = list.add; + + // Handle state + if ( stateString ) { + list.add( + function() { + + // state = "resolved" (i.e., fulfilled) + // state = "rejected" + state = stateString; + }, + + // rejected_callbacks.disable + // fulfilled_callbacks.disable + tuples[ 3 - i ][ 2 ].disable, + + // rejected_handlers.disable + // fulfilled_handlers.disable + tuples[ 3 - i ][ 3 ].disable, + + // progress_callbacks.lock + tuples[ 0 ][ 2 ].lock, + + // progress_handlers.lock + tuples[ 0 ][ 3 ].lock + ); + } + + // progress_handlers.fire + // fulfilled_handlers.fire + // rejected_handlers.fire + list.add( tuple[ 3 ].fire ); + + // deferred.notify = function() { deferred.notifyWith(...) } + // deferred.resolve = function() { deferred.resolveWith(...) } + // deferred.reject = function() { deferred.rejectWith(...) } + deferred[ tuple[ 0 ] ] = function() { + deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); + return this; + }; + + // deferred.notifyWith = list.fireWith + // deferred.resolveWith = list.fireWith + // deferred.rejectWith = list.fireWith + deferred[ tuple[ 0 ] + "With" ] = list.fireWith; + } ); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( singleValue ) { + var + + // count of uncompleted subordinates + remaining = arguments.length, + + // count of unprocessed arguments + i = remaining, + + // subordinate fulfillment data + resolveContexts = Array( i ), + resolveValues = slice.call( arguments ), + + // the primary Deferred + primary = jQuery.Deferred(), + + // subordinate callback factory + updateFunc = function( i ) { + return function( value ) { + resolveContexts[ i ] = this; + resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( !( --remaining ) ) { + primary.resolveWith( resolveContexts, resolveValues ); + } + }; + }; + + // Single- and empty arguments are adopted like Promise.resolve + if ( remaining <= 1 ) { + adoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject, + !remaining ); + + // Use .then() to unwrap secondary thenables (cf. gh-3000) + if ( primary.state() === "pending" || + isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { + + return primary.then(); + } + } + + // Multiple arguments are aggregated like Promise.all array elements + while ( i-- ) { + adoptValue( resolveValues[ i ], updateFunc( i ), primary.reject ); + } + + return primary.promise(); + } +} ); + + +// These usually indicate a programmer mistake during development, +// warn about them ASAP rather than swallowing them by default. +var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; + +jQuery.Deferred.exceptionHook = function( error, stack ) { + + // Support: IE 8 - 9 only + // Console exists when dev tools are open, which can happen at any time + if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { + window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); + } +}; + + + + +jQuery.readyException = function( error ) { + window.setTimeout( function() { + throw error; + } ); +}; + + + + +// The deferred used on DOM ready +var readyList = jQuery.Deferred(); + +jQuery.fn.ready = function( fn ) { + + readyList + .then( fn ) + + // Wrap jQuery.readyException in a function so that the lookup + // happens at the time of error handling instead of callback + // registration. + .catch( function( error ) { + jQuery.readyException( error ); + } ); + + return this; +}; + +jQuery.extend( { + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + } +} ); + +jQuery.ready.then = readyList.then; + +// The ready event handler and self cleanup method +function completed() { + document.removeEventListener( "DOMContentLoaded", completed ); + window.removeEventListener( "load", completed ); + jQuery.ready(); +} + +// Catch cases where $(document).ready() is called +// after the browser event has already occurred. +// Support: IE <=9 - 10 only +// Older IE sometimes signals "interactive" too soon +if ( document.readyState === "complete" || + ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { + + // Handle it asynchronously to allow scripts the opportunity to delay ready + window.setTimeout( jQuery.ready ); + +} else { + + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed ); +} + + + + +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + len = elems.length, + bulk = key == null; + + // Sets many values + if ( toType( key ) === "object" ) { + chainable = true; + for ( i in key ) { + access( elems, fn, i, key[ i ], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, _key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < len; i++ ) { + fn( + elems[ i ], key, raw ? + value : + value.call( elems[ i ], i, fn( elems[ i ], key ) ) + ); + } + } + } + + if ( chainable ) { + return elems; + } + + // Gets + if ( bulk ) { + return fn.call( elems ); + } + + return len ? fn( elems[ 0 ], key ) : emptyGet; +}; + + +// Matches dashed string for camelizing +var rmsPrefix = /^-ms-/, + rdashAlpha = /-([a-z])/g; + +// Used by camelCase as callback to replace() +function fcamelCase( _all, letter ) { + return letter.toUpperCase(); +} + +// Convert dashed to camelCase; used by the css and data modules +// Support: IE <=9 - 11, Edge 12 - 15 +// Microsoft forgot to hump their vendor prefix (#9572) +function camelCase( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); +} +var acceptData = function( owner ) { + + // Accepts only: + // - Node + // - Node.ELEMENT_NODE + // - Node.DOCUMENT_NODE + // - Object + // - Any + return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); +}; + + + + +function Data() { + this.expando = jQuery.expando + Data.uid++; +} + +Data.uid = 1; + +Data.prototype = { + + cache: function( owner ) { + + // Check if the owner object already has a cache + var value = owner[ this.expando ]; + + // If not, create one + if ( !value ) { + value = {}; + + // We can accept data for non-element nodes in modern browsers, + // but we should not, see #8335. + // Always return an empty object. + if ( acceptData( owner ) ) { + + // If it is a node unlikely to be stringify-ed or looped over + // use plain assignment + if ( owner.nodeType ) { + owner[ this.expando ] = value; + + // Otherwise secure it in a non-enumerable property + // configurable must be true to allow the property to be + // deleted when data is removed + } else { + Object.defineProperty( owner, this.expando, { + value: value, + configurable: true + } ); + } + } + } + + return value; + }, + set: function( owner, data, value ) { + var prop, + cache = this.cache( owner ); + + // Handle: [ owner, key, value ] args + // Always use camelCase key (gh-2257) + if ( typeof data === "string" ) { + cache[ camelCase( data ) ] = value; + + // Handle: [ owner, { properties } ] args + } else { + + // Copy the properties one-by-one to the cache object + for ( prop in data ) { + cache[ camelCase( prop ) ] = data[ prop ]; + } + } + return cache; + }, + get: function( owner, key ) { + return key === undefined ? + this.cache( owner ) : + + // Always use camelCase key (gh-2257) + owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ]; + }, + access: function( owner, key, value ) { + + // In cases where either: + // + // 1. No key was specified + // 2. A string key was specified, but no value provided + // + // Take the "read" path and allow the get method to determine + // which value to return, respectively either: + // + // 1. The entire cache object + // 2. The data stored at the key + // + if ( key === undefined || + ( ( key && typeof key === "string" ) && value === undefined ) ) { + + return this.get( owner, key ); + } + + // When the key is not a string, or both a key and value + // are specified, set or extend (existing objects) with either: + // + // 1. An object of properties + // 2. A key and value + // + this.set( owner, key, value ); + + // Since the "set" path can have two possible entry points + // return the expected data based on which path was taken[*] + return value !== undefined ? value : key; + }, + remove: function( owner, key ) { + var i, + cache = owner[ this.expando ]; + + if ( cache === undefined ) { + return; + } + + if ( key !== undefined ) { + + // Support array or space separated string of keys + if ( Array.isArray( key ) ) { + + // If key is an array of keys... + // We always set camelCase keys, so remove that. + key = key.map( camelCase ); + } else { + key = camelCase( key ); + + // If a key with the spaces exists, use it. + // Otherwise, create an array by matching non-whitespace + key = key in cache ? + [ key ] : + ( key.match( rnothtmlwhite ) || [] ); + } + + i = key.length; + + while ( i-- ) { + delete cache[ key[ i ] ]; + } + } + + // Remove the expando if there's no more data + if ( key === undefined || jQuery.isEmptyObject( cache ) ) { + + // Support: Chrome <=35 - 45 + // Webkit & Blink performance suffers when deleting properties + // from DOM nodes, so set to undefined instead + // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) + if ( owner.nodeType ) { + owner[ this.expando ] = undefined; + } else { + delete owner[ this.expando ]; + } + } + }, + hasData: function( owner ) { + var cache = owner[ this.expando ]; + return cache !== undefined && !jQuery.isEmptyObject( cache ); + } +}; +var dataPriv = new Data(); + +var dataUser = new Data(); + + + +// Implementation Summary +// +// 1. Enforce API surface and semantic compatibility with 1.9.x branch +// 2. Improve the module's maintainability by reducing the storage +// paths to a single mechanism. +// 3. Use the same single mechanism to support "private" and "user" data. +// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) +// 5. Avoid exposing implementation details on user objects (eg. expando properties) +// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 + +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /[A-Z]/g; + +function getData( data ) { + if ( data === "true" ) { + return true; + } + + if ( data === "false" ) { + return false; + } + + if ( data === "null" ) { + return null; + } + + // Only convert to a number if it doesn't change the string + if ( data === +data + "" ) { + return +data; + } + + if ( rbrace.test( data ) ) { + return JSON.parse( data ); + } + + return data; +} + +function dataAttr( elem, key, data ) { + var name; + + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = getData( data ); + } catch ( e ) {} + + // Make sure we set the data so it isn't changed later + dataUser.set( elem, key, data ); + } else { + data = undefined; + } + } + return data; +} + +jQuery.extend( { + hasData: function( elem ) { + return dataUser.hasData( elem ) || dataPriv.hasData( elem ); + }, + + data: function( elem, name, data ) { + return dataUser.access( elem, name, data ); + }, + + removeData: function( elem, name ) { + dataUser.remove( elem, name ); + }, + + // TODO: Now that all calls to _data and _removeData have been replaced + // with direct calls to dataPriv methods, these can be deprecated. + _data: function( elem, name, data ) { + return dataPriv.access( elem, name, data ); + }, + + _removeData: function( elem, name ) { + dataPriv.remove( elem, name ); + } +} ); + +jQuery.fn.extend( { + data: function( key, value ) { + var i, name, data, + elem = this[ 0 ], + attrs = elem && elem.attributes; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = dataUser.get( elem ); + + if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + + // Support: IE 11 only + // The attrs elements can be null (#14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = camelCase( name.slice( 5 ) ); + dataAttr( elem, name, data[ name ] ); + } + } + } + dataPriv.set( elem, "hasDataAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each( function() { + dataUser.set( this, key ); + } ); + } + + return access( this, function( value ) { + var data; + + // The calling jQuery object (element matches) is not empty + // (and therefore has an element appears at this[ 0 ]) and the + // `value` parameter was not undefined. An empty jQuery object + // will result in `undefined` for elem = this[ 0 ] which will + // throw an exception if an attempt to read a data cache is made. + if ( elem && value === undefined ) { + + // Attempt to get data from the cache + // The key will always be camelCased in Data + data = dataUser.get( elem, key ); + if ( data !== undefined ) { + return data; + } + + // Attempt to "discover" the data in + // HTML5 custom data-* attrs + data = dataAttr( elem, key ); + if ( data !== undefined ) { + return data; + } + + // We tried really hard, but the data doesn't exist. + return; + } + + // Set the data... + this.each( function() { + + // We always store the camelCased key + dataUser.set( this, key, value ); + } ); + }, null, value, arguments.length > 1, null, true ); + }, + + removeData: function( key ) { + return this.each( function() { + dataUser.remove( this, key ); + } ); + } +} ); + + +jQuery.extend( { + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = dataPriv.get( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || Array.isArray( data ) ) { + queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // Clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // Not public - generate a queueHooks object, or return the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { + empty: jQuery.Callbacks( "once memory" ).add( function() { + dataPriv.remove( elem, [ type + "queue", key ] ); + } ) + } ); + } +} ); + +jQuery.fn.extend( { + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[ 0 ], type ); + } + + return data === undefined ? + this : + this.each( function() { + var queue = jQuery.queue( this, type, data ); + + // Ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + } ); + }, + dequeue: function( type ) { + return this.each( function() { + jQuery.dequeue( this, type ); + } ); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while ( i-- ) { + tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +} ); +var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; + +var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); + + +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + +var documentElement = document.documentElement; + + + + var isAttached = function( elem ) { + return jQuery.contains( elem.ownerDocument, elem ); + }, + composed = { composed: true }; + + // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only + // Check attachment across shadow DOM boundaries when possible (gh-3504) + // Support: iOS 10.0-10.2 only + // Early iOS 10 versions support `attachShadow` but not `getRootNode`, + // leading to errors. We need to check for `getRootNode`. + if ( documentElement.getRootNode ) { + isAttached = function( elem ) { + return jQuery.contains( elem.ownerDocument, elem ) || + elem.getRootNode( composed ) === elem.ownerDocument; + }; + } +var isHiddenWithinTree = function( elem, el ) { + + // isHiddenWithinTree might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + + // Inline style trumps all + return elem.style.display === "none" || + elem.style.display === "" && + + // Otherwise, check computed style + // Support: Firefox <=43 - 45 + // Disconnected elements can have computed display: none, so first confirm that elem is + // in the document. + isAttached( elem ) && + + jQuery.css( elem, "display" ) === "none"; + }; + + + +function adjustCSS( elem, prop, valueParts, tween ) { + var adjusted, scale, + maxIterations = 20, + currentValue = tween ? + function() { + return tween.cur(); + } : + function() { + return jQuery.css( elem, prop, "" ); + }, + initial = currentValue(), + unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), + + // Starting value computation is required for potential unit mismatches + initialInUnit = elem.nodeType && + ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && + rcssNum.exec( jQuery.css( elem, prop ) ); + + if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { + + // Support: Firefox <=54 + // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) + initial = initial / 2; + + // Trust units reported by jQuery.css + unit = unit || initialInUnit[ 3 ]; + + // Iteratively approximate from a nonzero starting point + initialInUnit = +initial || 1; + + while ( maxIterations-- ) { + + // Evaluate and update our best guess (doubling guesses that zero out). + // Finish if the scale equals or crosses 1 (making the old*new product non-positive). + jQuery.style( elem, prop, initialInUnit + unit ); + if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { + maxIterations = 0; + } + initialInUnit = initialInUnit / scale; + + } + + initialInUnit = initialInUnit * 2; + jQuery.style( elem, prop, initialInUnit + unit ); + + // Make sure we update the tween properties later on + valueParts = valueParts || []; + } + + if ( valueParts ) { + initialInUnit = +initialInUnit || +initial || 0; + + // Apply relative offset (+=/-=) if specified + adjusted = valueParts[ 1 ] ? + initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : + +valueParts[ 2 ]; + if ( tween ) { + tween.unit = unit; + tween.start = initialInUnit; + tween.end = adjusted; + } + } + return adjusted; +} + + +var defaultDisplayMap = {}; + +function getDefaultDisplay( elem ) { + var temp, + doc = elem.ownerDocument, + nodeName = elem.nodeName, + display = defaultDisplayMap[ nodeName ]; + + if ( display ) { + return display; + } + + temp = doc.body.appendChild( doc.createElement( nodeName ) ); + display = jQuery.css( temp, "display" ); + + temp.parentNode.removeChild( temp ); + + if ( display === "none" ) { + display = "block"; + } + defaultDisplayMap[ nodeName ] = display; + + return display; +} + +function showHide( elements, show ) { + var display, elem, + values = [], + index = 0, + length = elements.length; + + // Determine new display value for elements that need to change + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + display = elem.style.display; + if ( show ) { + + // Since we force visibility upon cascade-hidden elements, an immediate (and slow) + // check is required in this first loop unless we have a nonempty display value (either + // inline or about-to-be-restored) + if ( display === "none" ) { + values[ index ] = dataPriv.get( elem, "display" ) || null; + if ( !values[ index ] ) { + elem.style.display = ""; + } + } + if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { + values[ index ] = getDefaultDisplay( elem ); + } + } else { + if ( display !== "none" ) { + values[ index ] = "none"; + + // Remember what we're overwriting + dataPriv.set( elem, "display", display ); + } + } + } + + // Set the display of the elements in a second loop to avoid constant reflow + for ( index = 0; index < length; index++ ) { + if ( values[ index ] != null ) { + elements[ index ].style.display = values[ index ]; + } + } + + return elements; +} + +jQuery.fn.extend( { + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + if ( typeof state === "boolean" ) { + return state ? this.show() : this.hide(); + } + + return this.each( function() { + if ( isHiddenWithinTree( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + } ); + } +} ); +var rcheckableType = ( /^(?:checkbox|radio)$/i ); + +var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i ); + +var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); + + + +( function() { + var fragment = document.createDocumentFragment(), + div = fragment.appendChild( document.createElement( "div" ) ), + input = document.createElement( "input" ); + + // Support: Android 4.0 - 4.3 only + // Check state lost if the name is set (#11217) + // Support: Windows Web Apps (WWA) + // `name` and `type` must use .setAttribute for WWA (#14901) + input.setAttribute( "type", "radio" ); + input.setAttribute( "checked", "checked" ); + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + + // Support: Android <=4.1 only + // Older WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE <=11 only + // Make sure textarea (and checkbox) defaultValue is properly cloned + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; + + // Support: IE <=9 only + // IE <=9 replaces "; + support.option = !!div.lastChild; +} )(); + + +// We have to close these tags to support XHTML (#13200) +var wrapMap = { + + // XHTML parsers do not magically insert elements in the + // same way that tag soup parsers do. So we cannot shorten + // this by omitting or other required elements. + thead: [ 1, "", "
    " ], + col: [ 2, "", "
    " ], + tr: [ 2, "", "
    " ], + td: [ 3, "", "
    " ], + + _default: [ 0, "", "" ] +}; + +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +// Support: IE <=9 only +if ( !support.option ) { + wrapMap.optgroup = wrapMap.option = [ 1, "" ]; +} + + +function getAll( context, tag ) { + + // Support: IE <=9 - 11 only + // Use typeof to avoid zero-argument method invocation on host objects (#15151) + var ret; + + if ( typeof context.getElementsByTagName !== "undefined" ) { + ret = context.getElementsByTagName( tag || "*" ); + + } else if ( typeof context.querySelectorAll !== "undefined" ) { + ret = context.querySelectorAll( tag || "*" ); + + } else { + ret = []; + } + + if ( tag === undefined || tag && nodeName( context, tag ) ) { + return jQuery.merge( [ context ], ret ); + } + + return ret; +} + + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + dataPriv.set( + elems[ i ], + "globalEval", + !refElements || dataPriv.get( refElements[ i ], "globalEval" ) + ); + } +} + + +var rhtml = /<|&#?\w+;/; + +function buildFragment( elems, context, scripts, selection, ignored ) { + var elem, tmp, tag, wrap, attached, j, + fragment = context.createDocumentFragment(), + nodes = [], + i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( toType( elem ) === "object" ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; + + // Descend through wrappers to the right content + j = wrap[ 0 ]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, tmp.childNodes ); + + // Remember the top-level container + tmp = fragment.firstChild; + + // Ensure the created nodes are orphaned (#12392) + tmp.textContent = ""; + } + } + } + + // Remove wrapper from fragment + fragment.textContent = ""; + + i = 0; + while ( ( elem = nodes[ i++ ] ) ) { + + // Skip elements already in the context collection (trac-4087) + if ( selection && jQuery.inArray( elem, selection ) > -1 ) { + if ( ignored ) { + ignored.push( elem ); + } + continue; + } + + attached = isAttached( elem ); + + // Append to fragment + tmp = getAll( fragment.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( attached ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( ( elem = tmp[ j++ ] ) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + return fragment; +} + + +var rtypenamespace = /^([^.]*)(?:\.(.+)|)/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +// Support: IE <=9 - 11+ +// focus() and blur() are asynchronous, except when they are no-op. +// So expect focus to be synchronous when the element is already active, +// and blur to be synchronous when the element is not already active. +// (focus and blur are always synchronous in other supported browsers, +// this just defines when we can count on it). +function expectSync( elem, type ) { + return ( elem === safeActiveElement() ) === ( type === "focus" ); +} + +// Support: IE <=9 only +// Accessing document.activeElement can throw unexpectedly +// https://bugs.jquery.com/ticket/13393 +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +function on( elem, types, selector, data, fn, one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + on( elem, type, selector, data, types[ type ], one ); + } + return elem; + } + + if ( data == null && fn == null ) { + + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return elem; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return elem.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + } ); +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + + var handleObjIn, eventHandle, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.get( elem ); + + // Only attach events to objects that accept data + if ( !acceptData( elem ) ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Ensure that invalid selectors throw exceptions at attach time + // Evaluate against documentElement in case elem is a non-element node (e.g., document) + if ( selector ) { + jQuery.find.matchesSelector( documentElement, selector ); + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !( events = elemData.events ) ) { + events = elemData.events = Object.create( null ); + } + if ( !( eventHandle = elemData.handle ) ) { + eventHandle = elemData.handle = function( e ) { + + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? + jQuery.event.dispatch.apply( elem, arguments ) : undefined; + }; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend( { + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join( "." ) + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !( handlers = events[ type ] ) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener if the special events handler returns false + if ( !special.setup || + special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var j, origCount, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); + + if ( !elemData || !( events = elemData.events ) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[ 2 ] && + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || + selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || + special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove data and the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + dataPriv.remove( elem, "handle events" ); + } + }, + + dispatch: function( nativeEvent ) { + + var i, j, ret, matched, handleObj, handlerQueue, + args = new Array( arguments.length ), + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( nativeEvent ), + + handlers = ( + dataPriv.get( this, "events" ) || Object.create( null ) + )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[ 0 ] = event; + + for ( i = 1; i < arguments.length; i++ ) { + args[ i ] = arguments[ i ]; + } + + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( ( handleObj = matched.handlers[ j++ ] ) && + !event.isImmediatePropagationStopped() ) { + + // If the event is namespaced, then each handler is only invoked if it is + // specially universal or its namespaces are a superset of the event's. + if ( !event.rnamespace || handleObj.namespace === false || + event.rnamespace.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || + handleObj.handler ).apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( ( event.result = ret ) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var i, handleObj, sel, matchedHandlers, matchedSelectors, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + if ( delegateCount && + + // Support: IE <=9 + // Black-hole SVG instance trees (trac-13180) + cur.nodeType && + + // Support: Firefox <=42 + // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) + // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click + // Support: IE 11 only + // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) + !( event.type === "click" && event.button >= 1 ) ) { + + for ( ; cur !== this; cur = cur.parentNode || this ) { + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { + matchedHandlers = []; + matchedSelectors = {}; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matchedSelectors[ sel ] === undefined ) { + matchedSelectors[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) > -1 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matchedSelectors[ sel ] ) { + matchedHandlers.push( handleObj ); + } + } + if ( matchedHandlers.length ) { + handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); + } + } + } + } + + // Add the remaining (directly-bound) handlers + cur = this; + if ( delegateCount < handlers.length ) { + handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); + } + + return handlerQueue; + }, + + addProp: function( name, hook ) { + Object.defineProperty( jQuery.Event.prototype, name, { + enumerable: true, + configurable: true, + + get: isFunction( hook ) ? + function() { + if ( this.originalEvent ) { + return hook( this.originalEvent ); + } + } : + function() { + if ( this.originalEvent ) { + return this.originalEvent[ name ]; + } + }, + + set: function( value ) { + Object.defineProperty( this, name, { + enumerable: true, + configurable: true, + writable: true, + value: value + } ); + } + } ); + }, + + fix: function( originalEvent ) { + return originalEvent[ jQuery.expando ] ? + originalEvent : + new jQuery.Event( originalEvent ); + }, + + special: { + load: { + + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + click: { + + // Utilize native event to ensure correct state for checkable inputs + setup: function( data ) { + + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Claim the first handler + if ( rcheckableType.test( el.type ) && + el.click && nodeName( el, "input" ) ) { + + // dataPriv.set( el, "click", ... ) + leverageNative( el, "click", returnTrue ); + } + + // Return false to allow normal processing in the caller + return false; + }, + trigger: function( data ) { + + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Force setup before triggering a click + if ( rcheckableType.test( el.type ) && + el.click && nodeName( el, "input" ) ) { + + leverageNative( el, "click" ); + } + + // Return non-false to allow normal event-path propagation + return true; + }, + + // For cross-browser consistency, suppress native .click() on links + // Also prevent it if we're currently inside a leveraged native-event stack + _default: function( event ) { + var target = event.target; + return rcheckableType.test( target.type ) && + target.click && nodeName( target, "input" ) && + dataPriv.get( target, "click" ) || + nodeName( target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + event.originalEvent.returnValue = event.result; + } + } + } + } +}; + +// Ensure the presence of an event listener that handles manually-triggered +// synthetic events by interrupting progress until reinvoked in response to +// *native* events that it fires directly, ensuring that state changes have +// already occurred before other listeners are invoked. +function leverageNative( el, type, expectSync ) { + + // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add + if ( !expectSync ) { + if ( dataPriv.get( el, type ) === undefined ) { + jQuery.event.add( el, type, returnTrue ); + } + return; + } + + // Register the controller as a special universal handler for all event namespaces + dataPriv.set( el, type, false ); + jQuery.event.add( el, type, { + namespace: false, + handler: function( event ) { + var notAsync, result, + saved = dataPriv.get( this, type ); + + if ( ( event.isTrigger & 1 ) && this[ type ] ) { + + // Interrupt processing of the outer synthetic .trigger()ed event + // Saved data should be false in such cases, but might be a leftover capture object + // from an async native handler (gh-4350) + if ( !saved.length ) { + + // Store arguments for use when handling the inner native event + // There will always be at least one argument (an event object), so this array + // will not be confused with a leftover capture object. + saved = slice.call( arguments ); + dataPriv.set( this, type, saved ); + + // Trigger the native event and capture its result + // Support: IE <=9 - 11+ + // focus() and blur() are asynchronous + notAsync = expectSync( this, type ); + this[ type ](); + result = dataPriv.get( this, type ); + if ( saved !== result || notAsync ) { + dataPriv.set( this, type, false ); + } else { + result = {}; + } + if ( saved !== result ) { + + // Cancel the outer synthetic event + event.stopImmediatePropagation(); + event.preventDefault(); + + // Support: Chrome 86+ + // In Chrome, if an element having a focusout handler is blurred by + // clicking outside of it, it invokes the handler synchronously. If + // that handler calls `.remove()` on the element, the data is cleared, + // leaving `result` undefined. We need to guard against this. + return result && result.value; + } + + // If this is an inner synthetic event for an event with a bubbling surrogate + // (focus or blur), assume that the surrogate already propagated from triggering the + // native event and prevent that from happening again here. + // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the + // bubbling surrogate propagates *after* the non-bubbling base), but that seems + // less bad than duplication. + } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) { + event.stopPropagation(); + } + + // If this is a native event triggered above, everything is now in order + // Fire an inner synthetic event with the original arguments + } else if ( saved.length ) { + + // ...and capture the result + dataPriv.set( this, type, { + value: jQuery.event.trigger( + + // Support: IE <=9 - 11+ + // Extend with the prototype to reset the above stopImmediatePropagation() + jQuery.extend( saved[ 0 ], jQuery.Event.prototype ), + saved.slice( 1 ), + this + ) + } ); + + // Abort handling of the native event + event.stopImmediatePropagation(); + } + } + } ); +} + +jQuery.removeEvent = function( elem, type, handle ) { + + // This "if" is needed for plain objects + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle ); + } +}; + +jQuery.Event = function( src, props ) { + + // Allow instantiation without the 'new' keyword + if ( !( this instanceof jQuery.Event ) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || + src.defaultPrevented === undefined && + + // Support: Android <=2.3 only + src.returnValue === false ? + returnTrue : + returnFalse; + + // Create target properties + // Support: Safari <=6 - 7 only + // Target should not be a text node (#504, #13143) + this.target = ( src.target && src.target.nodeType === 3 ) ? + src.target.parentNode : + src.target; + + this.currentTarget = src.currentTarget; + this.relatedTarget = src.relatedTarget; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || Date.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + constructor: jQuery.Event, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + isSimulated: false, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + + if ( e && !this.isSimulated ) { + e.preventDefault(); + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Includes all common event props including KeyEvent and MouseEvent specific props +jQuery.each( { + altKey: true, + bubbles: true, + cancelable: true, + changedTouches: true, + ctrlKey: true, + detail: true, + eventPhase: true, + metaKey: true, + pageX: true, + pageY: true, + shiftKey: true, + view: true, + "char": true, + code: true, + charCode: true, + key: true, + keyCode: true, + button: true, + buttons: true, + clientX: true, + clientY: true, + offsetX: true, + offsetY: true, + pointerId: true, + pointerType: true, + screenX: true, + screenY: true, + targetTouches: true, + toElement: true, + touches: true, + which: true +}, jQuery.event.addProp ); + +jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { + jQuery.event.special[ type ] = { + + // Utilize native event if possible so blur/focus sequence is correct + setup: function() { + + // Claim the first handler + // dataPriv.set( this, "focus", ... ) + // dataPriv.set( this, "blur", ... ) + leverageNative( this, type, expectSync ); + + // Return false to allow normal processing in the caller + return false; + }, + trigger: function() { + + // Force setup before trigger + leverageNative( this, type ); + + // Return non-false to allow normal event-path propagation + return true; + }, + + // Suppress native focus or blur as it's already being fired + // in leverageNative. + _default: function() { + return true; + }, + + delegateType: delegateType + }; +} ); + +// Create mouseenter/leave events using mouseover/out and event-time checks +// so that event delegation works in jQuery. +// Do the same for pointerenter/pointerleave and pointerover/pointerout +// +// Support: Safari 7 only +// Safari sends mouseenter too often; see: +// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 +// for the description of the bug (it existed in older Chrome versions as well). +jQuery.each( { + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mouseenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +} ); + +jQuery.fn.extend( { + + on: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn ); + }, + one: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? + handleObj.origType + "." + handleObj.namespace : + handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each( function() { + jQuery.event.remove( this, types, fn, selector ); + } ); + } +} ); + + +var + + // Support: IE <=10 - 11, Edge 12 - 13 only + // In IE/Edge using regex groups here causes severe slowdowns. + // See https://connect.microsoft.com/IE/feedback/details/1736512/ + rnoInnerhtml = /\s*$/g; + +// Prefer a tbody over its parent table for containing new rows +function manipulationTarget( elem, content ) { + if ( nodeName( elem, "table" ) && + nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { + + return jQuery( elem ).children( "tbody" )[ 0 ] || elem; + } + + return elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { + elem.type = elem.type.slice( 5 ); + } else { + elem.removeAttribute( "type" ); + } + + return elem; +} + +function cloneCopyEvent( src, dest ) { + var i, l, type, pdataOld, udataOld, udataCur, events; + + if ( dest.nodeType !== 1 ) { + return; + } + + // 1. Copy private data: events, handlers, etc. + if ( dataPriv.hasData( src ) ) { + pdataOld = dataPriv.get( src ); + events = pdataOld.events; + + if ( events ) { + dataPriv.remove( dest, "handle events" ); + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + } + + // 2. Copy user data + if ( dataUser.hasData( src ) ) { + udataOld = dataUser.access( src ); + udataCur = jQuery.extend( {}, udataOld ); + + dataUser.set( dest, udataCur ); + } +} + +// Fix IE bugs, see support tests +function fixInput( src, dest ) { + var nodeName = dest.nodeName.toLowerCase(); + + // Fails to persist the checked state of a cloned checkbox or radio button. + if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + dest.checked = src.checked; + + // Fails to return the selected option to the default selected state when cloning options + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +function domManip( collection, args, callback, ignored ) { + + // Flatten any nested arrays + args = flat( args ); + + var fragment, first, scripts, hasScripts, node, doc, + i = 0, + l = collection.length, + iNoClone = l - 1, + value = args[ 0 ], + valueIsFunction = isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( valueIsFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return collection.each( function( index ) { + var self = collection.eq( index ); + if ( valueIsFunction ) { + args[ 0 ] = value.call( this, index, self.html() ); + } + domManip( self, args, callback, ignored ); + } ); + } + + if ( l ) { + fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + // Require either new content or an interest in ignored elements to invoke the callback + if ( first || ignored ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item + // instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( collection[ i ], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !dataPriv.access( node, "globalEval" ) && + jQuery.contains( doc, node ) ) { + + if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { + + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl && !node.noModule ) { + jQuery._evalUrl( node.src, { + nonce: node.nonce || node.getAttribute( "nonce" ) + }, doc ); + } + } else { + DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc ); + } + } + } + } + } + } + + return collection; +} + +function remove( elem, selector, keepData ) { + var node, + nodes = selector ? jQuery.filter( selector, elem ) : elem, + i = 0; + + for ( ; ( node = nodes[ i ] ) != null; i++ ) { + if ( !keepData && node.nodeType === 1 ) { + jQuery.cleanData( getAll( node ) ); + } + + if ( node.parentNode ) { + if ( keepData && isAttached( node ) ) { + setGlobalEval( getAll( node, "script" ) ); + } + node.parentNode.removeChild( node ); + } + } + + return elem; +} + +jQuery.extend( { + htmlPrefilter: function( html ) { + return html; + }, + + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var i, l, srcElements, destElements, + clone = elem.cloneNode( true ), + inPage = isAttached( elem ); + + // Fix IE cloning issues + if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && + !jQuery.isXMLDoc( elem ) ) { + + // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + fixInput( srcElements[ i ], destElements[ i ] ); + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + cloneCopyEvent( srcElements[ i ], destElements[ i ] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + // Return the cloned set + return clone; + }, + + cleanData: function( elems ) { + var data, elem, type, + special = jQuery.event.special, + i = 0; + + for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { + if ( acceptData( elem ) ) { + if ( ( data = elem[ dataPriv.expando ] ) ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataPriv.expando ] = undefined; + } + if ( elem[ dataUser.expando ] ) { + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataUser.expando ] = undefined; + } + } + } + } +} ); + +jQuery.fn.extend( { + detach: function( selector ) { + return remove( this, selector, true ); + }, + + remove: function( selector ) { + return remove( this, selector ); + }, + + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().each( function() { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.textContent = value; + } + } ); + }, null, value, arguments.length ); + }, + + append: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + } ); + }, + + prepend: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + } ); + }, + + before: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + } ); + }, + + after: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + } ); + }, + + empty: function() { + var elem, + i = 0; + + for ( ; ( elem = this[ i ] ) != null; i++ ) { + if ( elem.nodeType === 1 ) { + + // Prevent memory leaks + jQuery.cleanData( getAll( elem, false ) ); + + // Remove any remaining nodes + elem.textContent = ""; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function() { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + } ); + }, + + html: function( value ) { + return access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined && elem.nodeType === 1 ) { + return elem.innerHTML; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { + + value = jQuery.htmlPrefilter( value ); + + try { + for ( ; i < l; i++ ) { + elem = this[ i ] || {}; + + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch ( e ) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var ignored = []; + + // Make the changes, replacing each non-ignored context element with the new content + return domManip( this, arguments, function( elem ) { + var parent = this.parentNode; + + if ( jQuery.inArray( this, ignored ) < 0 ) { + jQuery.cleanData( getAll( this ) ); + if ( parent ) { + parent.replaceChild( elem, this ); + } + } + + // Force callback invocation + }, ignored ); + } +} ); + +jQuery.each( { + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1, + i = 0; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone( true ); + jQuery( insert[ i ] )[ original ]( elems ); + + // Support: Android <=4.0 only, PhantomJS 1 only + // .get() because push.apply(_, arraylike) throws on ancient WebKit + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +} ); +var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); + +var getStyles = function( elem ) { + + // Support: IE <=11 only, Firefox <=30 (#15098, #14150) + // IE throws on elements created in popups + // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" + var view = elem.ownerDocument.defaultView; + + if ( !view || !view.opener ) { + view = window; + } + + return view.getComputedStyle( elem ); + }; + +var swap = function( elem, options, callback ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.call( elem ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; +}; + + +var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); + + + +( function() { + + // Executing both pixelPosition & boxSizingReliable tests require only one layout + // so they're executed at the same time to save the second computation. + function computeStyleTests() { + + // This is a singleton, we need to execute it only once + if ( !div ) { + return; + } + + container.style.cssText = "position:absolute;left:-11111px;width:60px;" + + "margin-top:1px;padding:0;border:0"; + div.style.cssText = + "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + + "margin:auto;border:1px;padding:1px;" + + "width:60%;top:1%"; + documentElement.appendChild( container ).appendChild( div ); + + var divStyle = window.getComputedStyle( div ); + pixelPositionVal = divStyle.top !== "1%"; + + // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 + reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12; + + // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 + // Some styles come back with percentage values, even though they shouldn't + div.style.right = "60%"; + pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36; + + // Support: IE 9 - 11 only + // Detect misreporting of content dimensions for box-sizing:border-box elements + boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36; + + // Support: IE 9 only + // Detect overflow:scroll screwiness (gh-3699) + // Support: Chrome <=64 + // Don't get tricked when zoom affects offsetWidth (gh-4029) + div.style.position = "absolute"; + scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12; + + documentElement.removeChild( container ); + + // Nullify the div so it wouldn't be stored in the memory and + // it will also be a sign that checks already performed + div = null; + } + + function roundPixelMeasures( measure ) { + return Math.round( parseFloat( measure ) ); + } + + var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, + reliableTrDimensionsVal, reliableMarginLeftVal, + container = document.createElement( "div" ), + div = document.createElement( "div" ); + + // Finish early in limited (non-browser) environments + if ( !div.style ) { + return; + } + + // Support: IE <=9 - 11 only + // Style of cloned element affects source element cloned (#8908) + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + jQuery.extend( support, { + boxSizingReliable: function() { + computeStyleTests(); + return boxSizingReliableVal; + }, + pixelBoxStyles: function() { + computeStyleTests(); + return pixelBoxStylesVal; + }, + pixelPosition: function() { + computeStyleTests(); + return pixelPositionVal; + }, + reliableMarginLeft: function() { + computeStyleTests(); + return reliableMarginLeftVal; + }, + scrollboxSize: function() { + computeStyleTests(); + return scrollboxSizeVal; + }, + + // Support: IE 9 - 11+, Edge 15 - 18+ + // IE/Edge misreport `getComputedStyle` of table rows with width/height + // set in CSS while `offset*` properties report correct values. + // Behavior in IE 9 is more subtle than in newer versions & it passes + // some versions of this test; make sure not to make it pass there! + // + // Support: Firefox 70+ + // Only Firefox includes border widths + // in computed dimensions. (gh-4529) + reliableTrDimensions: function() { + var table, tr, trChild, trStyle; + if ( reliableTrDimensionsVal == null ) { + table = document.createElement( "table" ); + tr = document.createElement( "tr" ); + trChild = document.createElement( "div" ); + + table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate"; + tr.style.cssText = "border:1px solid"; + + // Support: Chrome 86+ + // Height set through cssText does not get applied. + // Computed height then comes back as 0. + tr.style.height = "1px"; + trChild.style.height = "9px"; + + // Support: Android 8 Chrome 86+ + // In our bodyBackground.html iframe, + // display for all div elements is set to "inline", + // which causes a problem only in Android 8 Chrome 86. + // Ensuring the div is display: block + // gets around this issue. + trChild.style.display = "block"; + + documentElement + .appendChild( table ) + .appendChild( tr ) + .appendChild( trChild ); + + trStyle = window.getComputedStyle( tr ); + reliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) + + parseInt( trStyle.borderTopWidth, 10 ) + + parseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight; + + documentElement.removeChild( table ); + } + return reliableTrDimensionsVal; + } + } ); +} )(); + + +function curCSS( elem, name, computed ) { + var width, minWidth, maxWidth, ret, + + // Support: Firefox 51+ + // Retrieving style before computed somehow + // fixes an issue with getting wrong values + // on detached elements + style = elem.style; + + computed = computed || getStyles( elem ); + + // getPropertyValue is needed for: + // .css('filter') (IE 9 only, #12537) + // .css('--customProperty) (#3144) + if ( computed ) { + ret = computed.getPropertyValue( name ) || computed[ name ]; + + if ( ret === "" && !isAttached( elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Android Browser returns percentage for some values, + // but width seems to be reliably pixels. + // This is against the CSSOM draft spec: + // https://drafts.csswg.org/cssom/#resolved-values + if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret !== undefined ? + + // Support: IE <=9 - 11 only + // IE returns zIndex value as an integer. + ret + "" : + ret; +} + + +function addGetHookIf( conditionFn, hookFn ) { + + // Define the hook, we'll check on the first run if it's really needed. + return { + get: function() { + if ( conditionFn() ) { + + // Hook not needed (or it's not possible to use it due + // to missing dependency), remove it. + delete this.get; + return; + } + + // Hook needed; redefine it so that the support test is not executed again. + return ( this.get = hookFn ).apply( this, arguments ); + } + }; +} + + +var cssPrefixes = [ "Webkit", "Moz", "ms" ], + emptyStyle = document.createElement( "div" ).style, + vendorProps = {}; + +// Return a vendor-prefixed property or undefined +function vendorPropName( name ) { + + // Check for vendor prefixed names + var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in emptyStyle ) { + return name; + } + } +} + +// Return a potentially-mapped jQuery.cssProps or vendor prefixed property +function finalPropName( name ) { + var final = jQuery.cssProps[ name ] || vendorProps[ name ]; + + if ( final ) { + return final; + } + if ( name in emptyStyle ) { + return name; + } + return vendorProps[ name ] = vendorPropName( name ) || name; +} + + +var + + // Swappable if display is none or starts with table + // except "table", "table-cell", or "table-caption" + // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rcustomProp = /^--/, + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: "0", + fontWeight: "400" + }; + +function setPositiveNumber( _elem, value, subtract ) { + + // Any relative (+/-) values have already been + // normalized at this point + var matches = rcssNum.exec( value ); + return matches ? + + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : + value; +} + +function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { + var i = dimension === "width" ? 1 : 0, + extra = 0, + delta = 0; + + // Adjustment may not be necessary + if ( box === ( isBorderBox ? "border" : "content" ) ) { + return 0; + } + + for ( ; i < 4; i += 2 ) { + + // Both box models exclude margin + if ( box === "margin" ) { + delta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); + } + + // If we get here with a content-box, we're seeking "padding" or "border" or "margin" + if ( !isBorderBox ) { + + // Add padding + delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // For "border" or "margin", add border + if ( box !== "padding" ) { + delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + + // But still keep track of it otherwise + } else { + extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + + // If we get here with a border-box (content + padding + border), we're seeking "content" or + // "padding" or "margin" + } else { + + // For "content", subtract padding + if ( box === "content" ) { + delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // For "content" or "padding", subtract border + if ( box !== "margin" ) { + delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + // Account for positive content-box scroll gutter when requested by providing computedVal + if ( !isBorderBox && computedVal >= 0 ) { + + // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border + // Assuming integer scroll gutter, subtract the rest and round down + delta += Math.max( 0, Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + computedVal - + delta - + extra - + 0.5 + + // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter + // Use an explicit zero to avoid NaN (gh-3964) + ) ) || 0; + } + + return delta; +} + +function getWidthOrHeight( elem, dimension, extra ) { + + // Start with computed style + var styles = getStyles( elem ), + + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322). + // Fake content-box until we know it's needed to know the true value. + boxSizingNeeded = !support.boxSizingReliable() || extra, + isBorderBox = boxSizingNeeded && + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + valueIsBorderBox = isBorderBox, + + val = curCSS( elem, dimension, styles ), + offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ); + + // Support: Firefox <=54 + // Return a confounding non-pixel value or feign ignorance, as appropriate. + if ( rnumnonpx.test( val ) ) { + if ( !extra ) { + return val; + } + val = "auto"; + } + + + // Support: IE 9 - 11 only + // Use offsetWidth/offsetHeight for when box sizing is unreliable. + // In those cases, the computed value can be trusted to be border-box. + if ( ( !support.boxSizingReliable() && isBorderBox || + + // Support: IE 10 - 11+, Edge 15 - 18+ + // IE/Edge misreport `getComputedStyle` of table rows with width/height + // set in CSS while `offset*` properties report correct values. + // Interestingly, in some cases IE 9 doesn't suffer from this issue. + !support.reliableTrDimensions() && nodeName( elem, "tr" ) || + + // Fall back to offsetWidth/offsetHeight when value is "auto" + // This happens for inline elements with no explicit setting (gh-3571) + val === "auto" || + + // Support: Android <=4.1 - 4.3 only + // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) + !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) && + + // Make sure the element is visible & connected + elem.getClientRects().length ) { + + isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // Where available, offsetWidth/offsetHeight approximate border box dimensions. + // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the + // retrieved value as a content box dimension. + valueIsBorderBox = offsetProp in elem; + if ( valueIsBorderBox ) { + val = elem[ offsetProp ]; + } + } + + // Normalize "" and auto + val = parseFloat( val ) || 0; + + // Adjust for the element's box model + return ( val + + boxModelAdjustment( + elem, + dimension, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles, + + // Provide the current computed size to request scroll gutter calculation (gh-3589) + val + ) + ) + "px"; +} + +jQuery.extend( { + + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Don't automatically add "px" to these possibly-unitless properties + cssNumber: { + "animationIterationCount": true, + "columnCount": true, + "fillOpacity": true, + "flexGrow": true, + "flexShrink": true, + "fontWeight": true, + "gridArea": true, + "gridColumn": true, + "gridColumnEnd": true, + "gridColumnStart": true, + "gridRow": true, + "gridRowEnd": true, + "gridRowStart": true, + "lineHeight": true, + "opacity": true, + "order": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: {}, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = camelCase( name ), + isCustomProp = rcustomProp.test( name ), + style = elem.style; + + // Make sure that we're working with the right name. We don't + // want to query the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Gets hook for the prefixed version, then unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // Convert "+=" or "-=" to relative numbers (#7345) + if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { + value = adjustCSS( elem, name, ret ); + + // Fixes bug #9237 + type = "number"; + } + + // Make sure that null and NaN values aren't set (#7116) + if ( value == null || value !== value ) { + return; + } + + // If a number was passed in, add the unit (except for certain CSS properties) + // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append + // "px" to a few hardcoded values. + if ( type === "number" && !isCustomProp ) { + value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); + } + + // background-* props affect original clone's values + if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !( "set" in hooks ) || + ( value = hooks.set( elem, value, extra ) ) !== undefined ) { + + if ( isCustomProp ) { + style.setProperty( name, value ); + } else { + style[ name ] = value; + } + } + + } else { + + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && + ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { + + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var val, num, hooks, + origName = camelCase( name ), + isCustomProp = rcustomProp.test( name ); + + // Make sure that we're working with the right name. We don't + // want to modify the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Try prefixed name followed by the unprefixed name + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + // Convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Make numeric if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || isFinite( num ) ? num || 0 : val; + } + + return val; + } +} ); + +jQuery.each( [ "height", "width" ], function( _i, dimension ) { + jQuery.cssHooks[ dimension ] = { + get: function( elem, computed, extra ) { + if ( computed ) { + + // Certain elements can have dimension info if we invisibly show them + // but it must have a current display style that would benefit + return rdisplayswap.test( jQuery.css( elem, "display" ) ) && + + // Support: Safari 8+ + // Table columns in Safari have non-zero offsetWidth & zero + // getBoundingClientRect().width unless display is changed. + // Support: IE <=11 only + // Running getBoundingClientRect on a disconnected node + // in IE throws an error. + ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? + swap( elem, cssShow, function() { + return getWidthOrHeight( elem, dimension, extra ); + } ) : + getWidthOrHeight( elem, dimension, extra ); + } + }, + + set: function( elem, value, extra ) { + var matches, + styles = getStyles( elem ), + + // Only read styles.position if the test has a chance to fail + // to avoid forcing a reflow. + scrollboxSizeBuggy = !support.scrollboxSize() && + styles.position === "absolute", + + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991) + boxSizingNeeded = scrollboxSizeBuggy || extra, + isBorderBox = boxSizingNeeded && + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + subtract = extra ? + boxModelAdjustment( + elem, + dimension, + extra, + isBorderBox, + styles + ) : + 0; + + // Account for unreliable border-box dimensions by comparing offset* to computed and + // faking a content-box to get border and padding (gh-3699) + if ( isBorderBox && scrollboxSizeBuggy ) { + subtract -= Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + parseFloat( styles[ dimension ] ) - + boxModelAdjustment( elem, dimension, "border", false, styles ) - + 0.5 + ); + } + + // Convert to pixels if value adjustment is needed + if ( subtract && ( matches = rcssNum.exec( value ) ) && + ( matches[ 3 ] || "px" ) !== "px" ) { + + elem.style[ dimension ] = value; + value = jQuery.css( elem, dimension ); + } + + return setPositiveNumber( elem, value, subtract ); + } + }; +} ); + +jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, + function( elem, computed ) { + if ( computed ) { + return ( parseFloat( curCSS( elem, "marginLeft" ) ) || + elem.getBoundingClientRect().left - + swap( elem, { marginLeft: 0 }, function() { + return elem.getBoundingClientRect().left; + } ) + ) + "px"; + } + } +); + +// These hooks are used by animate to expand properties +jQuery.each( { + margin: "", + padding: "", + border: "Width" +}, function( prefix, suffix ) { + jQuery.cssHooks[ prefix + suffix ] = { + expand: function( value ) { + var i = 0, + expanded = {}, + + // Assumes a single number if not a string + parts = typeof value === "string" ? value.split( " " ) : [ value ]; + + for ( ; i < 4; i++ ) { + expanded[ prefix + cssExpand[ i ] + suffix ] = + parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; + } + + return expanded; + } + }; + + if ( prefix !== "margin" ) { + jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; + } +} ); + +jQuery.fn.extend( { + css: function( name, value ) { + return access( this, function( elem, name, value ) { + var styles, len, + map = {}, + i = 0; + + if ( Array.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + } +} ); + + +function Tween( elem, options, prop, end, easing ) { + return new Tween.prototype.init( elem, options, prop, end, easing ); +} +jQuery.Tween = Tween; + +Tween.prototype = { + constructor: Tween, + init: function( elem, options, prop, end, easing, unit ) { + this.elem = elem; + this.prop = prop; + this.easing = easing || jQuery.easing._default; + this.options = options; + this.start = this.now = this.cur(); + this.end = end; + this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); + }, + cur: function() { + var hooks = Tween.propHooks[ this.prop ]; + + return hooks && hooks.get ? + hooks.get( this ) : + Tween.propHooks._default.get( this ); + }, + run: function( percent ) { + var eased, + hooks = Tween.propHooks[ this.prop ]; + + if ( this.options.duration ) { + this.pos = eased = jQuery.easing[ this.easing ]( + percent, this.options.duration * percent, 0, 1, this.options.duration + ); + } else { + this.pos = eased = percent; + } + this.now = ( this.end - this.start ) * eased + this.start; + + if ( this.options.step ) { + this.options.step.call( this.elem, this.now, this ); + } + + if ( hooks && hooks.set ) { + hooks.set( this ); + } else { + Tween.propHooks._default.set( this ); + } + return this; + } +}; + +Tween.prototype.init.prototype = Tween.prototype; + +Tween.propHooks = { + _default: { + get: function( tween ) { + var result; + + // Use a property on the element directly when it is not a DOM element, + // or when there is no matching style property that exists. + if ( tween.elem.nodeType !== 1 || + tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { + return tween.elem[ tween.prop ]; + } + + // Passing an empty string as a 3rd parameter to .css will automatically + // attempt a parseFloat and fallback to a string if the parse fails. + // Simple values such as "10px" are parsed to Float; + // complex values such as "rotate(1rad)" are returned as-is. + result = jQuery.css( tween.elem, tween.prop, "" ); + + // Empty strings, null, undefined and "auto" are converted to 0. + return !result || result === "auto" ? 0 : result; + }, + set: function( tween ) { + + // Use step hook for back compat. + // Use cssHook if its there. + // Use .style if available and use plain properties where available. + if ( jQuery.fx.step[ tween.prop ] ) { + jQuery.fx.step[ tween.prop ]( tween ); + } else if ( tween.elem.nodeType === 1 && ( + jQuery.cssHooks[ tween.prop ] || + tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) { + jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); + } else { + tween.elem[ tween.prop ] = tween.now; + } + } + } +}; + +// Support: IE <=9 only +// Panic based approach to setting things on disconnected nodes +Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { + set: function( tween ) { + if ( tween.elem.nodeType && tween.elem.parentNode ) { + tween.elem[ tween.prop ] = tween.now; + } + } +}; + +jQuery.easing = { + linear: function( p ) { + return p; + }, + swing: function( p ) { + return 0.5 - Math.cos( p * Math.PI ) / 2; + }, + _default: "swing" +}; + +jQuery.fx = Tween.prototype.init; + +// Back compat <1.8 extension point +jQuery.fx.step = {}; + + + + +var + fxNow, inProgress, + rfxtypes = /^(?:toggle|show|hide)$/, + rrun = /queueHooks$/; + +function schedule() { + if ( inProgress ) { + if ( document.hidden === false && window.requestAnimationFrame ) { + window.requestAnimationFrame( schedule ); + } else { + window.setTimeout( schedule, jQuery.fx.interval ); + } + + jQuery.fx.tick(); + } +} + +// Animations created synchronously will run synchronously +function createFxNow() { + window.setTimeout( function() { + fxNow = undefined; + } ); + return ( fxNow = Date.now() ); +} + +// Generate parameters to create a standard animation +function genFx( type, includeWidth ) { + var which, + i = 0, + attrs = { height: type }; + + // If we include width, step value is 1 to do all cssExpand values, + // otherwise step value is 2 to skip over Left and Right + includeWidth = includeWidth ? 1 : 0; + for ( ; i < 4; i += 2 - includeWidth ) { + which = cssExpand[ i ]; + attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; + } + + if ( includeWidth ) { + attrs.opacity = attrs.width = type; + } + + return attrs; +} + +function createTween( value, prop, animation ) { + var tween, + collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), + index = 0, + length = collection.length; + for ( ; index < length; index++ ) { + if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { + + // We're done with this property + return tween; + } + } +} + +function defaultPrefilter( elem, props, opts ) { + var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, + isBox = "width" in props || "height" in props, + anim = this, + orig = {}, + style = elem.style, + hidden = elem.nodeType && isHiddenWithinTree( elem ), + dataShow = dataPriv.get( elem, "fxshow" ); + + // Queue-skipping animations hijack the fx hooks + if ( !opts.queue ) { + hooks = jQuery._queueHooks( elem, "fx" ); + if ( hooks.unqueued == null ) { + hooks.unqueued = 0; + oldfire = hooks.empty.fire; + hooks.empty.fire = function() { + if ( !hooks.unqueued ) { + oldfire(); + } + }; + } + hooks.unqueued++; + + anim.always( function() { + + // Ensure the complete handler is called before this completes + anim.always( function() { + hooks.unqueued--; + if ( !jQuery.queue( elem, "fx" ).length ) { + hooks.empty.fire(); + } + } ); + } ); + } + + // Detect show/hide animations + for ( prop in props ) { + value = props[ prop ]; + if ( rfxtypes.test( value ) ) { + delete props[ prop ]; + toggle = toggle || value === "toggle"; + if ( value === ( hidden ? "hide" : "show" ) ) { + + // Pretend to be hidden if this is a "show" and + // there is still data from a stopped show/hide + if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { + hidden = true; + + // Ignore all other no-op show/hide data + } else { + continue; + } + } + orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); + } + } + + // Bail out if this is a no-op like .hide().hide() + propTween = !jQuery.isEmptyObject( props ); + if ( !propTween && jQuery.isEmptyObject( orig ) ) { + return; + } + + // Restrict "overflow" and "display" styles during box animations + if ( isBox && elem.nodeType === 1 ) { + + // Support: IE <=9 - 11, Edge 12 - 15 + // Record all 3 overflow attributes because IE does not infer the shorthand + // from identically-valued overflowX and overflowY and Edge just mirrors + // the overflowX value there. + opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; + + // Identify a display type, preferring old show/hide data over the CSS cascade + restoreDisplay = dataShow && dataShow.display; + if ( restoreDisplay == null ) { + restoreDisplay = dataPriv.get( elem, "display" ); + } + display = jQuery.css( elem, "display" ); + if ( display === "none" ) { + if ( restoreDisplay ) { + display = restoreDisplay; + } else { + + // Get nonempty value(s) by temporarily forcing visibility + showHide( [ elem ], true ); + restoreDisplay = elem.style.display || restoreDisplay; + display = jQuery.css( elem, "display" ); + showHide( [ elem ] ); + } + } + + // Animate inline elements as inline-block + if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { + if ( jQuery.css( elem, "float" ) === "none" ) { + + // Restore the original display value at the end of pure show/hide animations + if ( !propTween ) { + anim.done( function() { + style.display = restoreDisplay; + } ); + if ( restoreDisplay == null ) { + display = style.display; + restoreDisplay = display === "none" ? "" : display; + } + } + style.display = "inline-block"; + } + } + } + + if ( opts.overflow ) { + style.overflow = "hidden"; + anim.always( function() { + style.overflow = opts.overflow[ 0 ]; + style.overflowX = opts.overflow[ 1 ]; + style.overflowY = opts.overflow[ 2 ]; + } ); + } + + // Implement show/hide animations + propTween = false; + for ( prop in orig ) { + + // General show/hide setup for this element animation + if ( !propTween ) { + if ( dataShow ) { + if ( "hidden" in dataShow ) { + hidden = dataShow.hidden; + } + } else { + dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); + } + + // Store hidden/visible for toggle so `.stop().toggle()` "reverses" + if ( toggle ) { + dataShow.hidden = !hidden; + } + + // Show elements before animating them + if ( hidden ) { + showHide( [ elem ], true ); + } + + /* eslint-disable no-loop-func */ + + anim.done( function() { + + /* eslint-enable no-loop-func */ + + // The final step of a "hide" animation is actually hiding the element + if ( !hidden ) { + showHide( [ elem ] ); + } + dataPriv.remove( elem, "fxshow" ); + for ( prop in orig ) { + jQuery.style( elem, prop, orig[ prop ] ); + } + } ); + } + + // Per-property setup + propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); + if ( !( prop in dataShow ) ) { + dataShow[ prop ] = propTween.start; + if ( hidden ) { + propTween.end = propTween.start; + propTween.start = 0; + } + } + } +} + +function propFilter( props, specialEasing ) { + var index, name, easing, value, hooks; + + // camelCase, specialEasing and expand cssHook pass + for ( index in props ) { + name = camelCase( index ); + easing = specialEasing[ name ]; + value = props[ index ]; + if ( Array.isArray( value ) ) { + easing = value[ 1 ]; + value = props[ index ] = value[ 0 ]; + } + + if ( index !== name ) { + props[ name ] = value; + delete props[ index ]; + } + + hooks = jQuery.cssHooks[ name ]; + if ( hooks && "expand" in hooks ) { + value = hooks.expand( value ); + delete props[ name ]; + + // Not quite $.extend, this won't overwrite existing keys. + // Reusing 'index' because we have the correct "name" + for ( index in value ) { + if ( !( index in props ) ) { + props[ index ] = value[ index ]; + specialEasing[ index ] = easing; + } + } + } else { + specialEasing[ name ] = easing; + } + } +} + +function Animation( elem, properties, options ) { + var result, + stopped, + index = 0, + length = Animation.prefilters.length, + deferred = jQuery.Deferred().always( function() { + + // Don't match elem in the :animated selector + delete tick.elem; + } ), + tick = function() { + if ( stopped ) { + return false; + } + var currentTime = fxNow || createFxNow(), + remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), + + // Support: Android 2.3 only + // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) + temp = remaining / animation.duration || 0, + percent = 1 - temp, + index = 0, + length = animation.tweens.length; + + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( percent ); + } + + deferred.notifyWith( elem, [ animation, percent, remaining ] ); + + // If there's more to do, yield + if ( percent < 1 && length ) { + return remaining; + } + + // If this was an empty animation, synthesize a final progress notification + if ( !length ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + } + + // Resolve the animation and report its conclusion + deferred.resolveWith( elem, [ animation ] ); + return false; + }, + animation = deferred.promise( { + elem: elem, + props: jQuery.extend( {}, properties ), + opts: jQuery.extend( true, { + specialEasing: {}, + easing: jQuery.easing._default + }, options ), + originalProperties: properties, + originalOptions: options, + startTime: fxNow || createFxNow(), + duration: options.duration, + tweens: [], + createTween: function( prop, end ) { + var tween = jQuery.Tween( elem, animation.opts, prop, end, + animation.opts.specialEasing[ prop ] || animation.opts.easing ); + animation.tweens.push( tween ); + return tween; + }, + stop: function( gotoEnd ) { + var index = 0, + + // If we are going to the end, we want to run all the tweens + // otherwise we skip this part + length = gotoEnd ? animation.tweens.length : 0; + if ( stopped ) { + return this; + } + stopped = true; + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( 1 ); + } + + // Resolve when we played the last frame; otherwise, reject + if ( gotoEnd ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + deferred.resolveWith( elem, [ animation, gotoEnd ] ); + } else { + deferred.rejectWith( elem, [ animation, gotoEnd ] ); + } + return this; + } + } ), + props = animation.props; + + propFilter( props, animation.opts.specialEasing ); + + for ( ; index < length; index++ ) { + result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); + if ( result ) { + if ( isFunction( result.stop ) ) { + jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = + result.stop.bind( result ); + } + return result; + } + } + + jQuery.map( props, createTween, animation ); + + if ( isFunction( animation.opts.start ) ) { + animation.opts.start.call( elem, animation ); + } + + // Attach callbacks from options + animation + .progress( animation.opts.progress ) + .done( animation.opts.done, animation.opts.complete ) + .fail( animation.opts.fail ) + .always( animation.opts.always ); + + jQuery.fx.timer( + jQuery.extend( tick, { + elem: elem, + anim: animation, + queue: animation.opts.queue + } ) + ); + + return animation; +} + +jQuery.Animation = jQuery.extend( Animation, { + + tweeners: { + "*": [ function( prop, value ) { + var tween = this.createTween( prop, value ); + adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); + return tween; + } ] + }, + + tweener: function( props, callback ) { + if ( isFunction( props ) ) { + callback = props; + props = [ "*" ]; + } else { + props = props.match( rnothtmlwhite ); + } + + var prop, + index = 0, + length = props.length; + + for ( ; index < length; index++ ) { + prop = props[ index ]; + Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; + Animation.tweeners[ prop ].unshift( callback ); + } + }, + + prefilters: [ defaultPrefilter ], + + prefilter: function( callback, prepend ) { + if ( prepend ) { + Animation.prefilters.unshift( callback ); + } else { + Animation.prefilters.push( callback ); + } + } +} ); + +jQuery.speed = function( speed, easing, fn ) { + var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { + complete: fn || !fn && easing || + isFunction( speed ) && speed, + duration: speed, + easing: fn && easing || easing && !isFunction( easing ) && easing + }; + + // Go to the end state if fx are off + if ( jQuery.fx.off ) { + opt.duration = 0; + + } else { + if ( typeof opt.duration !== "number" ) { + if ( opt.duration in jQuery.fx.speeds ) { + opt.duration = jQuery.fx.speeds[ opt.duration ]; + + } else { + opt.duration = jQuery.fx.speeds._default; + } + } + } + + // Normalize opt.queue - true/undefined/null -> "fx" + if ( opt.queue == null || opt.queue === true ) { + opt.queue = "fx"; + } + + // Queueing + opt.old = opt.complete; + + opt.complete = function() { + if ( isFunction( opt.old ) ) { + opt.old.call( this ); + } + + if ( opt.queue ) { + jQuery.dequeue( this, opt.queue ); + } + }; + + return opt; +}; + +jQuery.fn.extend( { + fadeTo: function( speed, to, easing, callback ) { + + // Show any hidden elements after setting opacity to 0 + return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() + + // Animate to the value specified + .end().animate( { opacity: to }, speed, easing, callback ); + }, + animate: function( prop, speed, easing, callback ) { + var empty = jQuery.isEmptyObject( prop ), + optall = jQuery.speed( speed, easing, callback ), + doAnimation = function() { + + // Operate on a copy of prop so per-property easing won't be lost + var anim = Animation( this, jQuery.extend( {}, prop ), optall ); + + // Empty animations, or finishing resolves immediately + if ( empty || dataPriv.get( this, "finish" ) ) { + anim.stop( true ); + } + }; + + doAnimation.finish = doAnimation; + + return empty || optall.queue === false ? + this.each( doAnimation ) : + this.queue( optall.queue, doAnimation ); + }, + stop: function( type, clearQueue, gotoEnd ) { + var stopQueue = function( hooks ) { + var stop = hooks.stop; + delete hooks.stop; + stop( gotoEnd ); + }; + + if ( typeof type !== "string" ) { + gotoEnd = clearQueue; + clearQueue = type; + type = undefined; + } + if ( clearQueue ) { + this.queue( type || "fx", [] ); + } + + return this.each( function() { + var dequeue = true, + index = type != null && type + "queueHooks", + timers = jQuery.timers, + data = dataPriv.get( this ); + + if ( index ) { + if ( data[ index ] && data[ index ].stop ) { + stopQueue( data[ index ] ); + } + } else { + for ( index in data ) { + if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { + stopQueue( data[ index ] ); + } + } + } + + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && + ( type == null || timers[ index ].queue === type ) ) { + + timers[ index ].anim.stop( gotoEnd ); + dequeue = false; + timers.splice( index, 1 ); + } + } + + // Start the next in the queue if the last step wasn't forced. + // Timers currently will call their complete callbacks, which + // will dequeue but only if they were gotoEnd. + if ( dequeue || !gotoEnd ) { + jQuery.dequeue( this, type ); + } + } ); + }, + finish: function( type ) { + if ( type !== false ) { + type = type || "fx"; + } + return this.each( function() { + var index, + data = dataPriv.get( this ), + queue = data[ type + "queue" ], + hooks = data[ type + "queueHooks" ], + timers = jQuery.timers, + length = queue ? queue.length : 0; + + // Enable finishing flag on private data + data.finish = true; + + // Empty the queue first + jQuery.queue( this, type, [] ); + + if ( hooks && hooks.stop ) { + hooks.stop.call( this, true ); + } + + // Look for any active animations, and finish them + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && timers[ index ].queue === type ) { + timers[ index ].anim.stop( true ); + timers.splice( index, 1 ); + } + } + + // Look for any animations in the old queue and finish them + for ( index = 0; index < length; index++ ) { + if ( queue[ index ] && queue[ index ].finish ) { + queue[ index ].finish.call( this ); + } + } + + // Turn off finishing flag + delete data.finish; + } ); + } +} ); + +jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) { + var cssFn = jQuery.fn[ name ]; + jQuery.fn[ name ] = function( speed, easing, callback ) { + return speed == null || typeof speed === "boolean" ? + cssFn.apply( this, arguments ) : + this.animate( genFx( name, true ), speed, easing, callback ); + }; +} ); + +// Generate shortcuts for custom animations +jQuery.each( { + slideDown: genFx( "show" ), + slideUp: genFx( "hide" ), + slideToggle: genFx( "toggle" ), + fadeIn: { opacity: "show" }, + fadeOut: { opacity: "hide" }, + fadeToggle: { opacity: "toggle" } +}, function( name, props ) { + jQuery.fn[ name ] = function( speed, easing, callback ) { + return this.animate( props, speed, easing, callback ); + }; +} ); + +jQuery.timers = []; +jQuery.fx.tick = function() { + var timer, + i = 0, + timers = jQuery.timers; + + fxNow = Date.now(); + + for ( ; i < timers.length; i++ ) { + timer = timers[ i ]; + + // Run the timer and safely remove it when done (allowing for external removal) + if ( !timer() && timers[ i ] === timer ) { + timers.splice( i--, 1 ); + } + } + + if ( !timers.length ) { + jQuery.fx.stop(); + } + fxNow = undefined; +}; + +jQuery.fx.timer = function( timer ) { + jQuery.timers.push( timer ); + jQuery.fx.start(); +}; + +jQuery.fx.interval = 13; +jQuery.fx.start = function() { + if ( inProgress ) { + return; + } + + inProgress = true; + schedule(); +}; + +jQuery.fx.stop = function() { + inProgress = null; +}; + +jQuery.fx.speeds = { + slow: 600, + fast: 200, + + // Default speed + _default: 400 +}; + + +// Based off of the plugin by Clint Helfers, with permission. +// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ +jQuery.fn.delay = function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = window.setTimeout( next, time ); + hooks.stop = function() { + window.clearTimeout( timeout ); + }; + } ); +}; + + +( function() { + var input = document.createElement( "input" ), + select = document.createElement( "select" ), + opt = select.appendChild( document.createElement( "option" ) ); + + input.type = "checkbox"; + + // Support: Android <=4.3 only + // Default value for a checkbox should be "on" + support.checkOn = input.value !== ""; + + // Support: IE <=11 only + // Must access selectedIndex to make default options select + support.optSelected = opt.selected; + + // Support: IE <=11 only + // An input loses its value after becoming a radio + input = document.createElement( "input" ); + input.value = "t"; + input.type = "radio"; + support.radioValue = input.value === "t"; +} )(); + + +var boolHook, + attrHandle = jQuery.expr.attrHandle; + +jQuery.fn.extend( { + attr: function( name, value ) { + return access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each( function() { + jQuery.removeAttr( this, name ); + } ); + } +} ); + +jQuery.extend( { + attr: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set attributes on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + // Attribute hooks are determined by the lowercase version + // Grab necessary hook if one is defined + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + hooks = jQuery.attrHooks[ name.toLowerCase() ] || + ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); + } + + if ( value !== undefined ) { + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + } + + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + elem.setAttribute( name, value + "" ); + return value; + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + ret = jQuery.find.attr( elem, name ); + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? undefined : ret; + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !support.radioValue && value === "radio" && + nodeName( elem, "input" ) ) { + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + removeAttr: function( elem, value ) { + var name, + i = 0, + + // Attribute names can contain non-HTML whitespace characters + // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 + attrNames = value && value.match( rnothtmlwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( ( name = attrNames[ i++ ] ) ) { + elem.removeAttribute( name ); + } + } + } +} ); + +// Hooks for boolean attributes +boolHook = { + set: function( elem, value, name ) { + if ( value === false ) { + + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + elem.setAttribute( name, name ); + } + return name; + } +}; + +jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) { + var getter = attrHandle[ name ] || jQuery.find.attr; + + attrHandle[ name ] = function( elem, name, isXML ) { + var ret, handle, + lowercaseName = name.toLowerCase(); + + if ( !isXML ) { + + // Avoid an infinite loop by temporarily removing this function from the getter + handle = attrHandle[ lowercaseName ]; + attrHandle[ lowercaseName ] = ret; + ret = getter( elem, name, isXML ) != null ? + lowercaseName : + null; + attrHandle[ lowercaseName ] = handle; + } + return ret; + }; +} ); + + + + +var rfocusable = /^(?:input|select|textarea|button)$/i, + rclickable = /^(?:a|area)$/i; + +jQuery.fn.extend( { + prop: function( name, value ) { + return access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + return this.each( function() { + delete this[ jQuery.propFix[ name ] || name ]; + } ); + } +} ); + +jQuery.extend( { + prop: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set properties on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + return ( elem[ name ] = value ); + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + return elem[ name ]; + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + + // Support: IE <=9 - 11 only + // elem.tabIndex doesn't always return the + // correct value when it hasn't been explicitly set + // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + // Use proper attribute retrieval(#12072) + var tabindex = jQuery.find.attr( elem, "tabindex" ); + + if ( tabindex ) { + return parseInt( tabindex, 10 ); + } + + if ( + rfocusable.test( elem.nodeName ) || + rclickable.test( elem.nodeName ) && + elem.href + ) { + return 0; + } + + return -1; + } + } + }, + + propFix: { + "for": "htmlFor", + "class": "className" + } +} ); + +// Support: IE <=11 only +// Accessing the selectedIndex property +// forces the browser to respect setting selected +// on the option +// The getter ensures a default option is selected +// when in an optgroup +// eslint rule "no-unused-expressions" is disabled for this code +// since it considers such accessions noop +if ( !support.optSelected ) { + jQuery.propHooks.selected = { + get: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent && parent.parentNode ) { + parent.parentNode.selectedIndex; + } + return null; + }, + set: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent ) { + parent.selectedIndex; + + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + } + }; +} + +jQuery.each( [ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable" +], function() { + jQuery.propFix[ this.toLowerCase() ] = this; +} ); + + + + + // Strip and collapse whitespace according to HTML spec + // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace + function stripAndCollapse( value ) { + var tokens = value.match( rnothtmlwhite ) || []; + return tokens.join( " " ); + } + + +function getClass( elem ) { + return elem.getAttribute && elem.getAttribute( "class" ) || ""; +} + +function classesToArray( value ) { + if ( Array.isArray( value ) ) { + return value; + } + if ( typeof value === "string" ) { + return value.match( rnothtmlwhite ) || []; + } + return []; +} + +jQuery.fn.extend( { + addClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + classes = classesToArray( value ); + + if ( classes.length ) { + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + if ( cur.indexOf( " " + clazz + " " ) < 0 ) { + cur += clazz + " "; + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + if ( !arguments.length ) { + return this.attr( "class", "" ); + } + + classes = classesToArray( value ); + + if ( classes.length ) { + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + + // This expression is here for better compressibility (see addClass) + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + + // Remove *all* instances + while ( cur.indexOf( " " + clazz + " " ) > -1 ) { + cur = cur.replace( " " + clazz + " ", " " ); + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value, + isValidValue = type === "string" || Array.isArray( value ); + + if ( typeof stateVal === "boolean" && isValidValue ) { + return stateVal ? this.addClass( value ) : this.removeClass( value ); + } + + if ( isFunction( value ) ) { + return this.each( function( i ) { + jQuery( this ).toggleClass( + value.call( this, i, getClass( this ), stateVal ), + stateVal + ); + } ); + } + + return this.each( function() { + var className, i, self, classNames; + + if ( isValidValue ) { + + // Toggle individual class names + i = 0; + self = jQuery( this ); + classNames = classesToArray( value ); + + while ( ( className = classNames[ i++ ] ) ) { + + // Check each className given, space separated list + if ( self.hasClass( className ) ) { + self.removeClass( className ); + } else { + self.addClass( className ); + } + } + + // Toggle whole class name + } else if ( value === undefined || type === "boolean" ) { + className = getClass( this ); + if ( className ) { + + // Store className if set + dataPriv.set( this, "__className__", className ); + } + + // If the element has a class name or if we're passed `false`, + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + if ( this.setAttribute ) { + this.setAttribute( "class", + className || value === false ? + "" : + dataPriv.get( this, "__className__" ) || "" + ); + } + } + } ); + }, + + hasClass: function( selector ) { + var className, elem, + i = 0; + + className = " " + selector + " "; + while ( ( elem = this[ i++ ] ) ) { + if ( elem.nodeType === 1 && + ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { + return true; + } + } + + return false; + } +} ); + + + + +var rreturn = /\r/g; + +jQuery.fn.extend( { + val: function( value ) { + var hooks, ret, valueIsFunction, + elem = this[ 0 ]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || + jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && + "get" in hooks && + ( ret = hooks.get( elem, "value" ) ) !== undefined + ) { + return ret; + } + + ret = elem.value; + + // Handle most common string cases + if ( typeof ret === "string" ) { + return ret.replace( rreturn, "" ); + } + + // Handle cases where value is null/undef or number + return ret == null ? "" : ret; + } + + return; + } + + valueIsFunction = isFunction( value ); + + return this.each( function( i ) { + var val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( valueIsFunction ) { + val = value.call( this, i, jQuery( this ).val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + + } else if ( typeof val === "number" ) { + val += ""; + + } else if ( Array.isArray( val ) ) { + val = jQuery.map( val, function( value ) { + return value == null ? "" : value + ""; + } ); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + } ); + } +} ); + +jQuery.extend( { + valHooks: { + option: { + get: function( elem ) { + + var val = jQuery.find.attr( elem, "value" ); + return val != null ? + val : + + // Support: IE <=10 - 11 only + // option.text throws exceptions (#14686, #14858) + // Strip and collapse whitespace + // https://html.spec.whatwg.org/#strip-and-collapse-whitespace + stripAndCollapse( jQuery.text( elem ) ); + } + }, + select: { + get: function( elem ) { + var value, option, i, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one", + values = one ? null : [], + max = one ? index + 1 : options.length; + + if ( index < 0 ) { + i = max; + + } else { + i = one ? index : 0; + } + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Support: IE <=9 only + // IE8-9 doesn't update selected after form reset (#2551) + if ( ( option.selected || i === index ) && + + // Don't return options that are disabled or in a disabled optgroup + !option.disabled && + ( !option.parentNode.disabled || + !nodeName( option.parentNode, "optgroup" ) ) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + }, + + set: function( elem, value ) { + var optionSet, option, + options = elem.options, + values = jQuery.makeArray( value ), + i = options.length; + + while ( i-- ) { + option = options[ i ]; + + /* eslint-disable no-cond-assign */ + + if ( option.selected = + jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 + ) { + optionSet = true; + } + + /* eslint-enable no-cond-assign */ + } + + // Force browsers to behave consistently when non-matching value is set + if ( !optionSet ) { + elem.selectedIndex = -1; + } + return values; + } + } + } +} ); + +// Radios and checkboxes getter/setter +jQuery.each( [ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + set: function( elem, value ) { + if ( Array.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); + } + } + }; + if ( !support.checkOn ) { + jQuery.valHooks[ this ].get = function( elem ) { + return elem.getAttribute( "value" ) === null ? "on" : elem.value; + }; + } +} ); + + + + +// Return jQuery for attributes-only inclusion + + +support.focusin = "onfocusin" in window; + + +var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + stopPropagationCallback = function( e ) { + e.stopPropagation(); + }; + +jQuery.extend( jQuery.event, { + + trigger: function( event, data, elem, onlyHandlers ) { + + var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, + eventPath = [ elem || document ], + type = hasOwn.call( event, "type" ) ? event.type : event, + namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; + + cur = lastElement = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "." ) > -1 ) { + + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split( "." ); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf( ":" ) < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join( "." ); + event.rnamespace = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === ( elem.ownerDocument || document ) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { + lastElement = cur; + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( dataPriv.get( cur, "events" ) || Object.create( null ) )[ event.type ] && + dataPriv.get( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && handle.apply && acceptData( cur ) ) { + event.result = handle.apply( cur, data ); + if ( event.result === false ) { + event.preventDefault(); + } + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( ( !special._default || + special._default.apply( eventPath.pop(), data ) === false ) && + acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name as the event. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + + if ( event.isPropagationStopped() ) { + lastElement.addEventListener( type, stopPropagationCallback ); + } + + elem[ type ](); + + if ( event.isPropagationStopped() ) { + lastElement.removeEventListener( type, stopPropagationCallback ); + } + + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + // Piggyback on a donor event to simulate a different one + // Used only for `focus(in | out)` events + simulate: function( type, elem, event ) { + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true + } + ); + + jQuery.event.trigger( e, null, elem ); + } + +} ); + +jQuery.fn.extend( { + + trigger: function( type, data ) { + return this.each( function() { + jQuery.event.trigger( type, data, this ); + } ); + }, + triggerHandler: function( type, data ) { + var elem = this[ 0 ]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +} ); + + +// Support: Firefox <=44 +// Firefox doesn't have focus(in | out) events +// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 +// +// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 +// focus(in | out) events fire after focus & blur events, +// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order +// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 +if ( !support.focusin ) { + jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler on the document while someone wants focusin/focusout + var handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + + // Handle: regular nodes (via `this.ownerDocument`), window + // (via `this.document`) & document (via `this`). + var doc = this.ownerDocument || this.document || this, + attaches = dataPriv.access( doc, fix ); + + if ( !attaches ) { + doc.addEventListener( orig, handler, true ); + } + dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this.document || this, + attaches = dataPriv.access( doc, fix ) - 1; + + if ( !attaches ) { + doc.removeEventListener( orig, handler, true ); + dataPriv.remove( doc, fix ); + + } else { + dataPriv.access( doc, fix, attaches ); + } + } + }; + } ); +} +var location = window.location; + +var nonce = { guid: Date.now() }; + +var rquery = ( /\?/ ); + + + +// Cross-browser xml parsing +jQuery.parseXML = function( data ) { + var xml, parserErrorElem; + if ( !data || typeof data !== "string" ) { + return null; + } + + // Support: IE 9 - 11 only + // IE throws on parseFromString with invalid input. + try { + xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); + } catch ( e ) {} + + parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ]; + if ( !xml || parserErrorElem ) { + jQuery.error( "Invalid XML: " + ( + parserErrorElem ? + jQuery.map( parserErrorElem.childNodes, function( el ) { + return el.textContent; + } ).join( "\n" ) : + data + ) ); + } + return xml; +}; + + +var + rbracket = /\[\]$/, + rCRLF = /\r?\n/g, + rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, + rsubmittable = /^(?:input|select|textarea|keygen)/i; + +function buildParams( prefix, obj, traditional, add ) { + var name; + + if ( Array.isArray( obj ) ) { + + // Serialize array item. + jQuery.each( obj, function( i, v ) { + if ( traditional || rbracket.test( prefix ) ) { + + // Treat each array item as a scalar. + add( prefix, v ); + + } else { + + // Item is non-scalar (array or object), encode its numeric index. + buildParams( + prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", + v, + traditional, + add + ); + } + } ); + + } else if ( !traditional && toType( obj ) === "object" ) { + + // Serialize object item. + for ( name in obj ) { + buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); + } + + } else { + + // Serialize scalar item. + add( prefix, obj ); + } +} + +// Serialize an array of form elements or a set of +// key/values into a query string +jQuery.param = function( a, traditional ) { + var prefix, + s = [], + add = function( key, valueOrFunction ) { + + // If value is a function, invoke it and use its return value + var value = isFunction( valueOrFunction ) ? + valueOrFunction() : + valueOrFunction; + + s[ s.length ] = encodeURIComponent( key ) + "=" + + encodeURIComponent( value == null ? "" : value ); + }; + + if ( a == null ) { + return ""; + } + + // If an array was passed in, assume that it is an array of form elements. + if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { + + // Serialize the form elements + jQuery.each( a, function() { + add( this.name, this.value ); + } ); + + } else { + + // If traditional, encode the "old" way (the way 1.3.2 or older + // did it), otherwise encode params recursively. + for ( prefix in a ) { + buildParams( prefix, a[ prefix ], traditional, add ); + } + } + + // Return the resulting serialization + return s.join( "&" ); +}; + +jQuery.fn.extend( { + serialize: function() { + return jQuery.param( this.serializeArray() ); + }, + serializeArray: function() { + return this.map( function() { + + // Can add propHook for "elements" to filter or add form elements + var elements = jQuery.prop( this, "elements" ); + return elements ? jQuery.makeArray( elements ) : this; + } ).filter( function() { + var type = this.type; + + // Use .is( ":disabled" ) so that fieldset[disabled] works + return this.name && !jQuery( this ).is( ":disabled" ) && + rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && + ( this.checked || !rcheckableType.test( type ) ); + } ).map( function( _i, elem ) { + var val = jQuery( this ).val(); + + if ( val == null ) { + return null; + } + + if ( Array.isArray( val ) ) { + return jQuery.map( val, function( val ) { + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ); + } + + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ).get(); + } +} ); + + +var + r20 = /%20/g, + rhash = /#.*$/, + rantiCache = /([?&])_=[^&]*/, + rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, + + // #7653, #8125, #8152: local protocol detection + rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, + rnoContent = /^(?:GET|HEAD)$/, + rprotocol = /^\/\//, + + /* Prefilters + * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) + * 2) These are called: + * - BEFORE asking for a transport + * - AFTER param serialization (s.data is a string if s.processData is true) + * 3) key is the dataType + * 4) the catchall symbol "*" can be used + * 5) execution will start with transport dataType and THEN continue down to "*" if needed + */ + prefilters = {}, + + /* Transports bindings + * 1) key is the dataType + * 2) the catchall symbol "*" can be used + * 3) selection will start with transport dataType and THEN go to "*" if needed + */ + transports = {}, + + // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression + allTypes = "*/".concat( "*" ), + + // Anchor tag for parsing the document origin + originAnchor = document.createElement( "a" ); + +originAnchor.href = location.href; + +// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport +function addToPrefiltersOrTransports( structure ) { + + // dataTypeExpression is optional and defaults to "*" + return function( dataTypeExpression, func ) { + + if ( typeof dataTypeExpression !== "string" ) { + func = dataTypeExpression; + dataTypeExpression = "*"; + } + + var dataType, + i = 0, + dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; + + if ( isFunction( func ) ) { + + // For each dataType in the dataTypeExpression + while ( ( dataType = dataTypes[ i++ ] ) ) { + + // Prepend if requested + if ( dataType[ 0 ] === "+" ) { + dataType = dataType.slice( 1 ) || "*"; + ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); + + // Otherwise append + } else { + ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); + } + } + } + }; +} + +// Base inspection function for prefilters and transports +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { + + var inspected = {}, + seekingTransport = ( structure === transports ); + + function inspect( dataType ) { + var selected; + inspected[ dataType ] = true; + jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { + var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); + if ( typeof dataTypeOrTransport === "string" && + !seekingTransport && !inspected[ dataTypeOrTransport ] ) { + + options.dataTypes.unshift( dataTypeOrTransport ); + inspect( dataTypeOrTransport ); + return false; + } else if ( seekingTransport ) { + return !( selected = dataTypeOrTransport ); + } + } ); + return selected; + } + + return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); +} + +// A special extend for ajax options +// that takes "flat" options (not to be deep extended) +// Fixes #9887 +function ajaxExtend( target, src ) { + var key, deep, + flatOptions = jQuery.ajaxSettings.flatOptions || {}; + + for ( key in src ) { + if ( src[ key ] !== undefined ) { + ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; + } + } + if ( deep ) { + jQuery.extend( true, target, deep ); + } + + return target; +} + +/* Handles responses to an ajax request: + * - finds the right dataType (mediates between content-type and expected dataType) + * - returns the corresponding response + */ +function ajaxHandleResponses( s, jqXHR, responses ) { + + var ct, type, finalDataType, firstDataType, + contents = s.contents, + dataTypes = s.dataTypes; + + // Remove auto dataType and get content-type in the process + while ( dataTypes[ 0 ] === "*" ) { + dataTypes.shift(); + if ( ct === undefined ) { + ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); + } + } + + // Check if we're dealing with a known content-type + if ( ct ) { + for ( type in contents ) { + if ( contents[ type ] && contents[ type ].test( ct ) ) { + dataTypes.unshift( type ); + break; + } + } + } + + // Check to see if we have a response for the expected dataType + if ( dataTypes[ 0 ] in responses ) { + finalDataType = dataTypes[ 0 ]; + } else { + + // Try convertible dataTypes + for ( type in responses ) { + if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { + finalDataType = type; + break; + } + if ( !firstDataType ) { + firstDataType = type; + } + } + + // Or just use first one + finalDataType = finalDataType || firstDataType; + } + + // If we found a dataType + // We add the dataType to the list if needed + // and return the corresponding response + if ( finalDataType ) { + if ( finalDataType !== dataTypes[ 0 ] ) { + dataTypes.unshift( finalDataType ); + } + return responses[ finalDataType ]; + } +} + +/* Chain conversions given the request and the original response + * Also sets the responseXXX fields on the jqXHR instance + */ +function ajaxConvert( s, response, jqXHR, isSuccess ) { + var conv2, current, conv, tmp, prev, + converters = {}, + + // Work with a copy of dataTypes in case we need to modify it for conversion + dataTypes = s.dataTypes.slice(); + + // Create converters map with lowercased keys + if ( dataTypes[ 1 ] ) { + for ( conv in s.converters ) { + converters[ conv.toLowerCase() ] = s.converters[ conv ]; + } + } + + current = dataTypes.shift(); + + // Convert to each sequential dataType + while ( current ) { + + if ( s.responseFields[ current ] ) { + jqXHR[ s.responseFields[ current ] ] = response; + } + + // Apply the dataFilter if provided + if ( !prev && isSuccess && s.dataFilter ) { + response = s.dataFilter( response, s.dataType ); + } + + prev = current; + current = dataTypes.shift(); + + if ( current ) { + + // There's only work to do if current dataType is non-auto + if ( current === "*" ) { + + current = prev; + + // Convert response if prev dataType is non-auto and differs from current + } else if ( prev !== "*" && prev !== current ) { + + // Seek a direct converter + conv = converters[ prev + " " + current ] || converters[ "* " + current ]; + + // If none found, seek a pair + if ( !conv ) { + for ( conv2 in converters ) { + + // If conv2 outputs current + tmp = conv2.split( " " ); + if ( tmp[ 1 ] === current ) { + + // If prev can be converted to accepted input + conv = converters[ prev + " " + tmp[ 0 ] ] || + converters[ "* " + tmp[ 0 ] ]; + if ( conv ) { + + // Condense equivalence converters + if ( conv === true ) { + conv = converters[ conv2 ]; + + // Otherwise, insert the intermediate dataType + } else if ( converters[ conv2 ] !== true ) { + current = tmp[ 0 ]; + dataTypes.unshift( tmp[ 1 ] ); + } + break; + } + } + } + } + + // Apply converter (if not an equivalence) + if ( conv !== true ) { + + // Unless errors are allowed to bubble, catch and return them + if ( conv && s.throws ) { + response = conv( response ); + } else { + try { + response = conv( response ); + } catch ( e ) { + return { + state: "parsererror", + error: conv ? e : "No conversion from " + prev + " to " + current + }; + } + } + } + } + } + } + + return { state: "success", data: response }; +} + +jQuery.extend( { + + // Counter for holding the number of active queries + active: 0, + + // Last-Modified header cache for next request + lastModified: {}, + etag: {}, + + ajaxSettings: { + url: location.href, + type: "GET", + isLocal: rlocalProtocol.test( location.protocol ), + global: true, + processData: true, + async: true, + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + + /* + timeout: 0, + data: null, + dataType: null, + username: null, + password: null, + cache: null, + throws: false, + traditional: false, + headers: {}, + */ + + accepts: { + "*": allTypes, + text: "text/plain", + html: "text/html", + xml: "application/xml, text/xml", + json: "application/json, text/javascript" + }, + + contents: { + xml: /\bxml\b/, + html: /\bhtml/, + json: /\bjson\b/ + }, + + responseFields: { + xml: "responseXML", + text: "responseText", + json: "responseJSON" + }, + + // Data converters + // Keys separate source (or catchall "*") and destination types with a single space + converters: { + + // Convert anything to text + "* text": String, + + // Text to html (true = no transformation) + "text html": true, + + // Evaluate text as a json expression + "text json": JSON.parse, + + // Parse text as xml + "text xml": jQuery.parseXML + }, + + // For options that shouldn't be deep extended: + // you can add your own custom options here if + // and when you create one that shouldn't be + // deep extended (see ajaxExtend) + flatOptions: { + url: true, + context: true + } + }, + + // Creates a full fledged settings object into target + // with both ajaxSettings and settings fields. + // If target is omitted, writes into ajaxSettings. + ajaxSetup: function( target, settings ) { + return settings ? + + // Building a settings object + ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : + + // Extending ajaxSettings + ajaxExtend( jQuery.ajaxSettings, target ); + }, + + ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), + ajaxTransport: addToPrefiltersOrTransports( transports ), + + // Main method + ajax: function( url, options ) { + + // If url is an object, simulate pre-1.5 signature + if ( typeof url === "object" ) { + options = url; + url = undefined; + } + + // Force options to be an object + options = options || {}; + + var transport, + + // URL without anti-cache param + cacheURL, + + // Response headers + responseHeadersString, + responseHeaders, + + // timeout handle + timeoutTimer, + + // Url cleanup var + urlAnchor, + + // Request state (becomes false upon send and true upon completion) + completed, + + // To know if global events are to be dispatched + fireGlobals, + + // Loop variable + i, + + // uncached part of the url + uncached, + + // Create the final options object + s = jQuery.ajaxSetup( {}, options ), + + // Callbacks context + callbackContext = s.context || s, + + // Context for global events is callbackContext if it is a DOM node or jQuery collection + globalEventContext = s.context && + ( callbackContext.nodeType || callbackContext.jquery ) ? + jQuery( callbackContext ) : + jQuery.event, + + // Deferreds + deferred = jQuery.Deferred(), + completeDeferred = jQuery.Callbacks( "once memory" ), + + // Status-dependent callbacks + statusCode = s.statusCode || {}, + + // Headers (they are sent all at once) + requestHeaders = {}, + requestHeadersNames = {}, + + // Default abort message + strAbort = "canceled", + + // Fake xhr + jqXHR = { + readyState: 0, + + // Builds headers hashtable if needed + getResponseHeader: function( key ) { + var match; + if ( completed ) { + if ( !responseHeaders ) { + responseHeaders = {}; + while ( ( match = rheaders.exec( responseHeadersString ) ) ) { + responseHeaders[ match[ 1 ].toLowerCase() + " " ] = + ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] ) + .concat( match[ 2 ] ); + } + } + match = responseHeaders[ key.toLowerCase() + " " ]; + } + return match == null ? null : match.join( ", " ); + }, + + // Raw string + getAllResponseHeaders: function() { + return completed ? responseHeadersString : null; + }, + + // Caches the header + setRequestHeader: function( name, value ) { + if ( completed == null ) { + name = requestHeadersNames[ name.toLowerCase() ] = + requestHeadersNames[ name.toLowerCase() ] || name; + requestHeaders[ name ] = value; + } + return this; + }, + + // Overrides response content-type header + overrideMimeType: function( type ) { + if ( completed == null ) { + s.mimeType = type; + } + return this; + }, + + // Status-dependent callbacks + statusCode: function( map ) { + var code; + if ( map ) { + if ( completed ) { + + // Execute the appropriate callbacks + jqXHR.always( map[ jqXHR.status ] ); + } else { + + // Lazy-add the new callbacks in a way that preserves old ones + for ( code in map ) { + statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; + } + } + } + return this; + }, + + // Cancel the request + abort: function( statusText ) { + var finalText = statusText || strAbort; + if ( transport ) { + transport.abort( finalText ); + } + done( 0, finalText ); + return this; + } + }; + + // Attach deferreds + deferred.promise( jqXHR ); + + // Add protocol if not provided (prefilters might expect it) + // Handle falsy url in the settings object (#10093: consistency with old signature) + // We also use the url parameter if available + s.url = ( ( url || s.url || location.href ) + "" ) + .replace( rprotocol, location.protocol + "//" ); + + // Alias method option to type as per ticket #12004 + s.type = options.method || options.type || s.method || s.type; + + // Extract dataTypes list + s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; + + // A cross-domain request is in order when the origin doesn't match the current origin. + if ( s.crossDomain == null ) { + urlAnchor = document.createElement( "a" ); + + // Support: IE <=8 - 11, Edge 12 - 15 + // IE throws exception on accessing the href property if url is malformed, + // e.g. http://example.com:80x/ + try { + urlAnchor.href = s.url; + + // Support: IE <=8 - 11 only + // Anchor's host property isn't correctly set when s.url is relative + urlAnchor.href = urlAnchor.href; + s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== + urlAnchor.protocol + "//" + urlAnchor.host; + } catch ( e ) { + + // If there is an error parsing the URL, assume it is crossDomain, + // it can be rejected by the transport if it is invalid + s.crossDomain = true; + } + } + + // Convert data if not already a string + if ( s.data && s.processData && typeof s.data !== "string" ) { + s.data = jQuery.param( s.data, s.traditional ); + } + + // Apply prefilters + inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); + + // If request was aborted inside a prefilter, stop there + if ( completed ) { + return jqXHR; + } + + // We can fire global events as of now if asked to + // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) + fireGlobals = jQuery.event && s.global; + + // Watch for a new set of requests + if ( fireGlobals && jQuery.active++ === 0 ) { + jQuery.event.trigger( "ajaxStart" ); + } + + // Uppercase the type + s.type = s.type.toUpperCase(); + + // Determine if request has content + s.hasContent = !rnoContent.test( s.type ); + + // Save the URL in case we're toying with the If-Modified-Since + // and/or If-None-Match header later on + // Remove hash to simplify url manipulation + cacheURL = s.url.replace( rhash, "" ); + + // More options handling for requests with no content + if ( !s.hasContent ) { + + // Remember the hash so we can put it back + uncached = s.url.slice( cacheURL.length ); + + // If data is available and should be processed, append data to url + if ( s.data && ( s.processData || typeof s.data === "string" ) ) { + cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; + + // #9682: remove data so that it's not used in an eventual retry + delete s.data; + } + + // Add or update anti-cache param if needed + if ( s.cache === false ) { + cacheURL = cacheURL.replace( rantiCache, "$1" ); + uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) + + uncached; + } + + // Put hash and anti-cache on the URL that will be requested (gh-1732) + s.url = cacheURL + uncached; + + // Change '%20' to '+' if this is encoded form body content (gh-2658) + } else if ( s.data && s.processData && + ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { + s.data = s.data.replace( r20, "+" ); + } + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + if ( jQuery.lastModified[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); + } + if ( jQuery.etag[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); + } + } + + // Set the correct header, if data is being sent + if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { + jqXHR.setRequestHeader( "Content-Type", s.contentType ); + } + + // Set the Accepts header for the server, depending on the dataType + jqXHR.setRequestHeader( + "Accept", + s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? + s.accepts[ s.dataTypes[ 0 ] ] + + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : + s.accepts[ "*" ] + ); + + // Check for headers option + for ( i in s.headers ) { + jqXHR.setRequestHeader( i, s.headers[ i ] ); + } + + // Allow custom headers/mimetypes and early abort + if ( s.beforeSend && + ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { + + // Abort if not done already and return + return jqXHR.abort(); + } + + // Aborting is no longer a cancellation + strAbort = "abort"; + + // Install callbacks on deferreds + completeDeferred.add( s.complete ); + jqXHR.done( s.success ); + jqXHR.fail( s.error ); + + // Get transport + transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); + + // If no transport, we auto-abort + if ( !transport ) { + done( -1, "No Transport" ); + } else { + jqXHR.readyState = 1; + + // Send global event + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); + } + + // If request was aborted inside ajaxSend, stop there + if ( completed ) { + return jqXHR; + } + + // Timeout + if ( s.async && s.timeout > 0 ) { + timeoutTimer = window.setTimeout( function() { + jqXHR.abort( "timeout" ); + }, s.timeout ); + } + + try { + completed = false; + transport.send( requestHeaders, done ); + } catch ( e ) { + + // Rethrow post-completion exceptions + if ( completed ) { + throw e; + } + + // Propagate others as results + done( -1, e ); + } + } + + // Callback for when everything is done + function done( status, nativeStatusText, responses, headers ) { + var isSuccess, success, error, response, modified, + statusText = nativeStatusText; + + // Ignore repeat invocations + if ( completed ) { + return; + } + + completed = true; + + // Clear timeout if it exists + if ( timeoutTimer ) { + window.clearTimeout( timeoutTimer ); + } + + // Dereference transport for early garbage collection + // (no matter how long the jqXHR object will be used) + transport = undefined; + + // Cache response headers + responseHeadersString = headers || ""; + + // Set readyState + jqXHR.readyState = status > 0 ? 4 : 0; + + // Determine if successful + isSuccess = status >= 200 && status < 300 || status === 304; + + // Get response data + if ( responses ) { + response = ajaxHandleResponses( s, jqXHR, responses ); + } + + // Use a noop converter for missing script but not if jsonp + if ( !isSuccess && + jQuery.inArray( "script", s.dataTypes ) > -1 && + jQuery.inArray( "json", s.dataTypes ) < 0 ) { + s.converters[ "text script" ] = function() {}; + } + + // Convert no matter what (that way responseXXX fields are always set) + response = ajaxConvert( s, response, jqXHR, isSuccess ); + + // If successful, handle type chaining + if ( isSuccess ) { + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + modified = jqXHR.getResponseHeader( "Last-Modified" ); + if ( modified ) { + jQuery.lastModified[ cacheURL ] = modified; + } + modified = jqXHR.getResponseHeader( "etag" ); + if ( modified ) { + jQuery.etag[ cacheURL ] = modified; + } + } + + // if no content + if ( status === 204 || s.type === "HEAD" ) { + statusText = "nocontent"; + + // if not modified + } else if ( status === 304 ) { + statusText = "notmodified"; + + // If we have data, let's convert it + } else { + statusText = response.state; + success = response.data; + error = response.error; + isSuccess = !error; + } + } else { + + // Extract error from statusText and normalize for non-aborts + error = statusText; + if ( status || !statusText ) { + statusText = "error"; + if ( status < 0 ) { + status = 0; + } + } + } + + // Set data for the fake xhr object + jqXHR.status = status; + jqXHR.statusText = ( nativeStatusText || statusText ) + ""; + + // Success/Error + if ( isSuccess ) { + deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); + } else { + deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); + } + + // Status-dependent callbacks + jqXHR.statusCode( statusCode ); + statusCode = undefined; + + if ( fireGlobals ) { + globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", + [ jqXHR, s, isSuccess ? success : error ] ); + } + + // Complete + completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); + + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); + + // Handle the global AJAX counter + if ( !( --jQuery.active ) ) { + jQuery.event.trigger( "ajaxStop" ); + } + } + } + + return jqXHR; + }, + + getJSON: function( url, data, callback ) { + return jQuery.get( url, data, callback, "json" ); + }, + + getScript: function( url, callback ) { + return jQuery.get( url, undefined, callback, "script" ); + } +} ); + +jQuery.each( [ "get", "post" ], function( _i, method ) { + jQuery[ method ] = function( url, data, callback, type ) { + + // Shift arguments if data argument was omitted + if ( isFunction( data ) ) { + type = type || callback; + callback = data; + data = undefined; + } + + // The url can be an options object (which then must have .url) + return jQuery.ajax( jQuery.extend( { + url: url, + type: method, + dataType: type, + data: data, + success: callback + }, jQuery.isPlainObject( url ) && url ) ); + }; +} ); + +jQuery.ajaxPrefilter( function( s ) { + var i; + for ( i in s.headers ) { + if ( i.toLowerCase() === "content-type" ) { + s.contentType = s.headers[ i ] || ""; + } + } +} ); + + +jQuery._evalUrl = function( url, options, doc ) { + return jQuery.ajax( { + url: url, + + // Make this explicit, since user can override this through ajaxSetup (#11264) + type: "GET", + dataType: "script", + cache: true, + async: false, + global: false, + + // Only evaluate the response if it is successful (gh-4126) + // dataFilter is not invoked for failure responses, so using it instead + // of the default converter is kludgy but it works. + converters: { + "text script": function() {} + }, + dataFilter: function( response ) { + jQuery.globalEval( response, options, doc ); + } + } ); +}; + + +jQuery.fn.extend( { + wrapAll: function( html ) { + var wrap; + + if ( this[ 0 ] ) { + if ( isFunction( html ) ) { + html = html.call( this[ 0 ] ); + } + + // The elements to wrap the target around + wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); + + if ( this[ 0 ].parentNode ) { + wrap.insertBefore( this[ 0 ] ); + } + + wrap.map( function() { + var elem = this; + + while ( elem.firstElementChild ) { + elem = elem.firstElementChild; + } + + return elem; + } ).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( isFunction( html ) ) { + return this.each( function( i ) { + jQuery( this ).wrapInner( html.call( this, i ) ); + } ); + } + + return this.each( function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + } ); + }, + + wrap: function( html ) { + var htmlIsFunction = isFunction( html ); + + return this.each( function( i ) { + jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); + } ); + }, + + unwrap: function( selector ) { + this.parent( selector ).not( "body" ).each( function() { + jQuery( this ).replaceWith( this.childNodes ); + } ); + return this; + } +} ); + + +jQuery.expr.pseudos.hidden = function( elem ) { + return !jQuery.expr.pseudos.visible( elem ); +}; +jQuery.expr.pseudos.visible = function( elem ) { + return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); +}; + + + + +jQuery.ajaxSettings.xhr = function() { + try { + return new window.XMLHttpRequest(); + } catch ( e ) {} +}; + +var xhrSuccessStatus = { + + // File protocol always yields status code 0, assume 200 + 0: 200, + + // Support: IE <=9 only + // #1450: sometimes IE returns 1223 when it should be 204 + 1223: 204 + }, + xhrSupported = jQuery.ajaxSettings.xhr(); + +support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); +support.ajax = xhrSupported = !!xhrSupported; + +jQuery.ajaxTransport( function( options ) { + var callback, errorCallback; + + // Cross domain only allowed if supported through XMLHttpRequest + if ( support.cors || xhrSupported && !options.crossDomain ) { + return { + send: function( headers, complete ) { + var i, + xhr = options.xhr(); + + xhr.open( + options.type, + options.url, + options.async, + options.username, + options.password + ); + + // Apply custom fields if provided + if ( options.xhrFields ) { + for ( i in options.xhrFields ) { + xhr[ i ] = options.xhrFields[ i ]; + } + } + + // Override mime type if needed + if ( options.mimeType && xhr.overrideMimeType ) { + xhr.overrideMimeType( options.mimeType ); + } + + // X-Requested-With header + // For cross-domain requests, seeing as conditions for a preflight are + // akin to a jigsaw puzzle, we simply never set it to be sure. + // (it can always be set on a per-request basis or even using ajaxSetup) + // For same-domain requests, won't change header if already provided. + if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { + headers[ "X-Requested-With" ] = "XMLHttpRequest"; + } + + // Set headers + for ( i in headers ) { + xhr.setRequestHeader( i, headers[ i ] ); + } + + // Callback + callback = function( type ) { + return function() { + if ( callback ) { + callback = errorCallback = xhr.onload = + xhr.onerror = xhr.onabort = xhr.ontimeout = + xhr.onreadystatechange = null; + + if ( type === "abort" ) { + xhr.abort(); + } else if ( type === "error" ) { + + // Support: IE <=9 only + // On a manual native abort, IE9 throws + // errors on any property access that is not readyState + if ( typeof xhr.status !== "number" ) { + complete( 0, "error" ); + } else { + complete( + + // File: protocol always yields status 0; see #8605, #14207 + xhr.status, + xhr.statusText + ); + } + } else { + complete( + xhrSuccessStatus[ xhr.status ] || xhr.status, + xhr.statusText, + + // Support: IE <=9 only + // IE9 has no XHR2 but throws on binary (trac-11426) + // For XHR2 non-text, let the caller handle it (gh-2498) + ( xhr.responseType || "text" ) !== "text" || + typeof xhr.responseText !== "string" ? + { binary: xhr.response } : + { text: xhr.responseText }, + xhr.getAllResponseHeaders() + ); + } + } + }; + }; + + // Listen to events + xhr.onload = callback(); + errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" ); + + // Support: IE 9 only + // Use onreadystatechange to replace onabort + // to handle uncaught aborts + if ( xhr.onabort !== undefined ) { + xhr.onabort = errorCallback; + } else { + xhr.onreadystatechange = function() { + + // Check readyState before timeout as it changes + if ( xhr.readyState === 4 ) { + + // Allow onerror to be called first, + // but that will not handle a native abort + // Also, save errorCallback to a variable + // as xhr.onerror cannot be accessed + window.setTimeout( function() { + if ( callback ) { + errorCallback(); + } + } ); + } + }; + } + + // Create the abort callback + callback = callback( "abort" ); + + try { + + // Do send the request (this may raise an exception) + xhr.send( options.hasContent && options.data || null ); + } catch ( e ) { + + // #14683: Only rethrow if this hasn't been notified as an error yet + if ( callback ) { + throw e; + } + } + }, + + abort: function() { + if ( callback ) { + callback(); + } + } + }; + } +} ); + + + + +// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) +jQuery.ajaxPrefilter( function( s ) { + if ( s.crossDomain ) { + s.contents.script = false; + } +} ); + +// Install script dataType +jQuery.ajaxSetup( { + accepts: { + script: "text/javascript, application/javascript, " + + "application/ecmascript, application/x-ecmascript" + }, + contents: { + script: /\b(?:java|ecma)script\b/ + }, + converters: { + "text script": function( text ) { + jQuery.globalEval( text ); + return text; + } + } +} ); + +// Handle cache's special case and crossDomain +jQuery.ajaxPrefilter( "script", function( s ) { + if ( s.cache === undefined ) { + s.cache = false; + } + if ( s.crossDomain ) { + s.type = "GET"; + } +} ); + +// Bind script tag hack transport +jQuery.ajaxTransport( "script", function( s ) { + + // This transport only deals with cross domain or forced-by-attrs requests + if ( s.crossDomain || s.scriptAttrs ) { + var script, callback; + return { + send: function( _, complete ) { + script = jQuery( " +{% endmacro %} diff --git a/_static/scripts/bootstrap.js b/_static/scripts/bootstrap.js new file mode 100644 index 00000000..4ec783e7 --- /dev/null +++ b/_static/scripts/bootstrap.js @@ -0,0 +1,32 @@ +!function(t){var e={};function n(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return t[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(i,o,function(e){return t[e]}.bind(null,o));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=5)}([function(t,e){t.exports=jQuery},function(t,e,n){"use strict";n.r(e),function(t){ +/**! + * @fileOverview Kickass library to create and place poppers near their reference elements. + * @version 1.16.1 + * @license + * Copyright (c) 2016 Federico Zivolo and contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +var n="undefined"!=typeof window&&"undefined"!=typeof document&&"undefined"!=typeof navigator,i=function(){for(var t=["Edge","Trident","Firefox"],e=0;e=0)return 1;return 0}();var o=n&&window.Promise?function(t){var e=!1;return function(){e||(e=!0,window.Promise.resolve().then((function(){e=!1,t()})))}}:function(t){var e=!1;return function(){e||(e=!0,setTimeout((function(){e=!1,t()}),i))}};function r(t){return t&&"[object Function]"==={}.toString.call(t)}function a(t,e){if(1!==t.nodeType)return[];var n=t.ownerDocument.defaultView.getComputedStyle(t,null);return e?n[e]:n}function s(t){return"HTML"===t.nodeName?t:t.parentNode||t.host}function l(t){if(!t)return document.body;switch(t.nodeName){case"HTML":case"BODY":return t.ownerDocument.body;case"#document":return t.body}var e=a(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/(auto|scroll|overlay)/.test(n+o+i)?t:l(s(t))}function u(t){return t&&t.referenceNode?t.referenceNode:t}var f=n&&!(!window.MSInputMethodContext||!document.documentMode),d=n&&/MSIE 10/.test(navigator.userAgent);function c(t){return 11===t?f:10===t?d:f||d}function h(t){if(!t)return document.documentElement;for(var e=c(10)?document.body:null,n=t.offsetParent||null;n===e&&t.nextElementSibling;)n=(t=t.nextElementSibling).offsetParent;var i=n&&n.nodeName;return i&&"BODY"!==i&&"HTML"!==i?-1!==["TH","TD","TABLE"].indexOf(n.nodeName)&&"static"===a(n,"position")?h(n):n:t?t.ownerDocument.documentElement:document.documentElement}function p(t){return null!==t.parentNode?p(t.parentNode):t}function m(t,e){if(!(t&&t.nodeType&&e&&e.nodeType))return document.documentElement;var n=t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING,i=n?t:e,o=n?e:t,r=document.createRange();r.setStart(i,0),r.setEnd(o,0);var a,s,l=r.commonAncestorContainer;if(t!==l&&e!==l||i.contains(o))return"BODY"===(s=(a=l).nodeName)||"HTML"!==s&&h(a.firstElementChild)!==a?h(l):l;var u=p(t);return u.host?m(u.host,e):m(t,p(e).host)}function g(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"top",n="top"===e?"scrollTop":"scrollLeft",i=t.nodeName;if("BODY"===i||"HTML"===i){var o=t.ownerDocument.documentElement,r=t.ownerDocument.scrollingElement||o;return r[n]}return t[n]}function v(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=g(e,"top"),o=g(e,"left"),r=n?-1:1;return t.top+=i*r,t.bottom+=i*r,t.left+=o*r,t.right+=o*r,t}function _(t,e){var n="x"===e?"Left":"Top",i="Left"===n?"Right":"Bottom";return parseFloat(t["border"+n+"Width"])+parseFloat(t["border"+i+"Width"])}function b(t,e,n,i){return Math.max(e["offset"+t],e["scroll"+t],n["client"+t],n["offset"+t],n["scroll"+t],c(10)?parseInt(n["offset"+t])+parseInt(i["margin"+("Height"===t?"Top":"Left")])+parseInt(i["margin"+("Height"===t?"Bottom":"Right")]):0)}function y(t){var e=t.body,n=t.documentElement,i=c(10)&&getComputedStyle(n);return{height:b("Height",e,n,i),width:b("Width",e,n,i)}}var w=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},E=function(){function t(t,e){for(var n=0;n2&&void 0!==arguments[2]&&arguments[2],i=c(10),o="HTML"===e.nodeName,r=N(t),s=N(e),u=l(t),f=a(e),d=parseFloat(f.borderTopWidth),h=parseFloat(f.borderLeftWidth);n&&o&&(s.top=Math.max(s.top,0),s.left=Math.max(s.left,0));var p=S({top:r.top-s.top-d,left:r.left-s.left-h,width:r.width,height:r.height});if(p.marginTop=0,p.marginLeft=0,!i&&o){var m=parseFloat(f.marginTop),g=parseFloat(f.marginLeft);p.top-=d-m,p.bottom-=d-m,p.left-=h-g,p.right-=h-g,p.marginTop=m,p.marginLeft=g}return(i&&!n?e.contains(u):e===u&&"BODY"!==u.nodeName)&&(p=v(p,e)),p}function k(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=t.ownerDocument.documentElement,i=D(t,n),o=Math.max(n.clientWidth,window.innerWidth||0),r=Math.max(n.clientHeight,window.innerHeight||0),a=e?0:g(n),s=e?0:g(n,"left"),l={top:a-i.top+i.marginTop,left:s-i.left+i.marginLeft,width:o,height:r};return S(l)}function A(t){var e=t.nodeName;if("BODY"===e||"HTML"===e)return!1;if("fixed"===a(t,"position"))return!0;var n=s(t);return!!n&&A(n)}function O(t){if(!t||!t.parentElement||c())return document.documentElement;for(var e=t.parentElement;e&&"none"===a(e,"transform");)e=e.parentElement;return e||document.documentElement}function I(t,e,n,i){var o=arguments.length>4&&void 0!==arguments[4]&&arguments[4],r={top:0,left:0},a=o?O(t):m(t,u(e));if("viewport"===i)r=k(a,o);else{var f=void 0;"scrollParent"===i?"BODY"===(f=l(s(e))).nodeName&&(f=t.ownerDocument.documentElement):f="window"===i?t.ownerDocument.documentElement:i;var d=D(f,a,o);if("HTML"!==f.nodeName||A(a))r=d;else{var c=y(t.ownerDocument),h=c.height,p=c.width;r.top+=d.top-d.marginTop,r.bottom=h+d.top,r.left+=d.left-d.marginLeft,r.right=p+d.left}}var g="number"==typeof(n=n||0);return r.left+=g?n:n.left||0,r.top+=g?n:n.top||0,r.right-=g?n:n.right||0,r.bottom-=g?n:n.bottom||0,r}function x(t){return t.width*t.height}function j(t,e,n,i,o){var r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===t.indexOf("auto"))return t;var a=I(n,i,r,o),s={top:{width:a.width,height:e.top-a.top},right:{width:a.right-e.right,height:a.height},bottom:{width:a.width,height:a.bottom-e.bottom},left:{width:e.left-a.left,height:a.height}},l=Object.keys(s).map((function(t){return C({key:t},s[t],{area:x(s[t])})})).sort((function(t,e){return e.area-t.area})),u=l.filter((function(t){var e=t.width,i=t.height;return e>=n.clientWidth&&i>=n.clientHeight})),f=u.length>0?u[0].key:l[0].key,d=t.split("-")[1];return f+(d?"-"+d:"")}function L(t,e,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,o=i?O(e):m(e,u(n));return D(n,o,i)}function P(t){var e=t.ownerDocument.defaultView.getComputedStyle(t),n=parseFloat(e.marginTop||0)+parseFloat(e.marginBottom||0),i=parseFloat(e.marginLeft||0)+parseFloat(e.marginRight||0);return{width:t.offsetWidth+i,height:t.offsetHeight+n}}function F(t){var e={left:"right",right:"left",bottom:"top",top:"bottom"};return t.replace(/left|right|bottom|top/g,(function(t){return e[t]}))}function R(t,e,n){n=n.split("-")[0];var i=P(t),o={width:i.width,height:i.height},r=-1!==["right","left"].indexOf(n),a=r?"top":"left",s=r?"left":"top",l=r?"height":"width",u=r?"width":"height";return o[a]=e[a]+e[l]/2-i[l]/2,o[s]=n===s?e[s]-i[u]:e[F(s)],o}function M(t,e){return Array.prototype.find?t.find(e):t.filter(e)[0]}function H(t,e,n){return(void 0===n?t:t.slice(0,function(t,e,n){if(Array.prototype.findIndex)return t.findIndex((function(t){return t[e]===n}));var i=M(t,(function(t){return t[e]===n}));return t.indexOf(i)}(t,"name",n))).forEach((function(t){t.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var n=t.function||t.fn;t.enabled&&r(n)&&(e.offsets.popper=S(e.offsets.popper),e.offsets.reference=S(e.offsets.reference),e=n(e,t))})),e}function B(){if(!this.state.isDestroyed){var t={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};t.offsets.reference=L(this.state,this.popper,this.reference,this.options.positionFixed),t.placement=j(this.options.placement,t.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),t.originalPlacement=t.placement,t.positionFixed=this.options.positionFixed,t.offsets.popper=R(this.popper,t.offsets.reference,t.placement),t.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",t=H(this.modifiers,t),this.state.isCreated?this.options.onUpdate(t):(this.state.isCreated=!0,this.options.onCreate(t))}}function q(t,e){return t.some((function(t){var n=t.name;return t.enabled&&n===e}))}function Q(t){for(var e=[!1,"ms","Webkit","Moz","O"],n=t.charAt(0).toUpperCase()+t.slice(1),i=0;i1&&void 0!==arguments[1]&&arguments[1],n=Z.indexOf(t),i=Z.slice(n+1).concat(Z.slice(0,n));return e?i.reverse():i}var et="flip",nt="clockwise",it="counterclockwise";function ot(t,e,n,i){var o=[0,0],r=-1!==["right","left"].indexOf(i),a=t.split(/(\+|\-)/).map((function(t){return t.trim()})),s=a.indexOf(M(a,(function(t){return-1!==t.search(/,|\s/)})));a[s]&&-1===a[s].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var l=/\s*,\s*|\s+/,u=-1!==s?[a.slice(0,s).concat([a[s].split(l)[0]]),[a[s].split(l)[1]].concat(a.slice(s+1))]:[a];return(u=u.map((function(t,i){var o=(1===i?!r:r)?"height":"width",a=!1;return t.reduce((function(t,e){return""===t[t.length-1]&&-1!==["+","-"].indexOf(e)?(t[t.length-1]=e,a=!0,t):a?(t[t.length-1]+=e,a=!1,t):t.concat(e)}),[]).map((function(t){return function(t,e,n,i){var o=t.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),r=+o[1],a=o[2];if(!r)return t;if(0===a.indexOf("%")){var s=void 0;switch(a){case"%p":s=n;break;case"%":case"%r":default:s=i}return S(s)[e]/100*r}if("vh"===a||"vw"===a){return("vh"===a?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*r}return r}(t,o,e,n)}))}))).forEach((function(t,e){t.forEach((function(n,i){K(n)&&(o[e]+=n*("-"===t[i-1]?-1:1))}))})),o}var rt={placement:"bottom",positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(t){var e=t.placement,n=e.split("-")[0],i=e.split("-")[1];if(i){var o=t.offsets,r=o.reference,a=o.popper,s=-1!==["bottom","top"].indexOf(n),l=s?"left":"top",u=s?"width":"height",f={start:T({},l,r[l]),end:T({},l,r[l]+r[u]-a[u])};t.offsets.popper=C({},a,f[i])}return t}},offset:{order:200,enabled:!0,fn:function(t,e){var n=e.offset,i=t.placement,o=t.offsets,r=o.popper,a=o.reference,s=i.split("-")[0],l=void 0;return l=K(+n)?[+n,0]:ot(n,r,a,s),"left"===s?(r.top+=l[0],r.left-=l[1]):"right"===s?(r.top+=l[0],r.left+=l[1]):"top"===s?(r.left+=l[0],r.top-=l[1]):"bottom"===s&&(r.left+=l[0],r.top+=l[1]),t.popper=r,t},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(t,e){var n=e.boundariesElement||h(t.instance.popper);t.instance.reference===n&&(n=h(n));var i=Q("transform"),o=t.instance.popper.style,r=o.top,a=o.left,s=o[i];o.top="",o.left="",o[i]="";var l=I(t.instance.popper,t.instance.reference,e.padding,n,t.positionFixed);o.top=r,o.left=a,o[i]=s,e.boundaries=l;var u=e.priority,f=t.offsets.popper,d={primary:function(t){var n=f[t];return f[t]l[t]&&!e.escapeWithReference&&(i=Math.min(f[n],l[t]-("right"===t?f.width:f.height))),T({},n,i)}};return u.forEach((function(t){var e=-1!==["left","top"].indexOf(t)?"primary":"secondary";f=C({},f,d[e](t))})),t.offsets.popper=f,t},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(t){var e=t.offsets,n=e.popper,i=e.reference,o=t.placement.split("-")[0],r=Math.floor,a=-1!==["top","bottom"].indexOf(o),s=a?"right":"bottom",l=a?"left":"top",u=a?"width":"height";return n[s]r(i[s])&&(t.offsets.popper[l]=r(i[s])),t}},arrow:{order:500,enabled:!0,fn:function(t,e){var n;if(!G(t.instance.modifiers,"arrow","keepTogether"))return t;var i=e.element;if("string"==typeof i){if(!(i=t.instance.popper.querySelector(i)))return t}else if(!t.instance.popper.contains(i))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),t;var o=t.placement.split("-")[0],r=t.offsets,s=r.popper,l=r.reference,u=-1!==["left","right"].indexOf(o),f=u?"height":"width",d=u?"Top":"Left",c=d.toLowerCase(),h=u?"left":"top",p=u?"bottom":"right",m=P(i)[f];l[p]-ms[p]&&(t.offsets.popper[c]+=l[c]+m-s[p]),t.offsets.popper=S(t.offsets.popper);var g=l[c]+l[f]/2-m/2,v=a(t.instance.popper),_=parseFloat(v["margin"+d]),b=parseFloat(v["border"+d+"Width"]),y=g-t.offsets.popper[c]-_-b;return y=Math.max(Math.min(s[f]-m,y),0),t.arrowElement=i,t.offsets.arrow=(T(n={},c,Math.round(y)),T(n,h,""),n),t},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(t,e){if(q(t.instance.modifiers,"inner"))return t;if(t.flipped&&t.placement===t.originalPlacement)return t;var n=I(t.instance.popper,t.instance.reference,e.padding,e.boundariesElement,t.positionFixed),i=t.placement.split("-")[0],o=F(i),r=t.placement.split("-")[1]||"",a=[];switch(e.behavior){case et:a=[i,o];break;case nt:a=tt(i);break;case it:a=tt(i,!0);break;default:a=e.behavior}return a.forEach((function(s,l){if(i!==s||a.length===l+1)return t;i=t.placement.split("-")[0],o=F(i);var u=t.offsets.popper,f=t.offsets.reference,d=Math.floor,c="left"===i&&d(u.right)>d(f.left)||"right"===i&&d(u.left)d(f.top)||"bottom"===i&&d(u.top)d(n.right),m=d(u.top)d(n.bottom),v="left"===i&&h||"right"===i&&p||"top"===i&&m||"bottom"===i&&g,_=-1!==["top","bottom"].indexOf(i),b=!!e.flipVariations&&(_&&"start"===r&&h||_&&"end"===r&&p||!_&&"start"===r&&m||!_&&"end"===r&&g),y=!!e.flipVariationsByContent&&(_&&"start"===r&&p||_&&"end"===r&&h||!_&&"start"===r&&g||!_&&"end"===r&&m),w=b||y;(c||v||w)&&(t.flipped=!0,(c||v)&&(i=a[l+1]),w&&(r=function(t){return"end"===t?"start":"start"===t?"end":t}(r)),t.placement=i+(r?"-"+r:""),t.offsets.popper=C({},t.offsets.popper,R(t.instance.popper,t.offsets.reference,t.placement)),t=H(t.instance.modifiers,t,"flip"))})),t},behavior:"flip",padding:5,boundariesElement:"viewport",flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:function(t){var e=t.placement,n=e.split("-")[0],i=t.offsets,o=i.popper,r=i.reference,a=-1!==["left","right"].indexOf(n),s=-1===["top","left"].indexOf(n);return o[a?"left":"top"]=r[n]-(s?o[a?"width":"height"]:0),t.placement=F(e),t.offsets.popper=S(o),t}},hide:{order:800,enabled:!0,fn:function(t){if(!G(t.instance.modifiers,"hide","preventOverflow"))return t;var e=t.offsets.reference,n=M(t.instance.modifiers,(function(t){return"preventOverflow"===t.name})).boundaries;if(e.bottomn.right||e.top>n.bottom||e.right2&&void 0!==arguments[2]?arguments[2]:{};w(this,t),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=o(this.update.bind(this)),this.options=C({},t.Defaults,a),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=e&&e.jquery?e[0]:e,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(C({},t.Defaults.modifiers,a.modifiers)).forEach((function(e){i.options.modifiers[e]=C({},t.Defaults.modifiers[e]||{},a.modifiers?a.modifiers[e]:{})})),this.modifiers=Object.keys(this.options.modifiers).map((function(t){return C({name:t},i.options.modifiers[t])})).sort((function(t,e){return t.order-e.order})),this.modifiers.forEach((function(t){t.enabled&&r(t.onLoad)&&t.onLoad(i.reference,i.popper,i.options,t,i.state)})),this.update();var s=this.options.eventsEnabled;s&&this.enableEventListeners(),this.state.eventsEnabled=s}return E(t,[{key:"update",value:function(){return B.call(this)}},{key:"destroy",value:function(){return W.call(this)}},{key:"enableEventListeners",value:function(){return Y.call(this)}},{key:"disableEventListeners",value:function(){return z.call(this)}}]),t}();at.Utils=("undefined"!=typeof window?window:t).PopperUtils,at.placements=J,at.Defaults=rt,e.default=at}.call(this,n(3))},function(t,e,n){ +/*! + * Bootstrap v4.6.1 (https://getbootstrap.com/) + * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +!function(t,e,n){"use strict";function i(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var o=i(e),r=i(n);function a(t,e){for(var n=0;n=4)throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}};d.jQueryDetection(),o.default.fn.emulateTransitionEnd=f,o.default.event.special[d.TRANSITION_END]={bindType:"transitionend",delegateType:"transitionend",handle:function(t){if(o.default(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}};var c=o.default.fn.alert,h=function(){function t(t){this._element=t}var e=t.prototype;return e.close=function(t){var e=this._element;t&&(e=this._getRootElement(t)),this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},e.dispose=function(){o.default.removeData(this._element,"bs.alert"),this._element=null},e._getRootElement=function(t){var e=d.getSelectorFromElement(t),n=!1;return e&&(n=document.querySelector(e)),n||(n=o.default(t).closest(".alert")[0]),n},e._triggerCloseEvent=function(t){var e=o.default.Event("close.bs.alert");return o.default(t).trigger(e),e},e._removeElement=function(t){var e=this;if(o.default(t).removeClass("show"),o.default(t).hasClass("fade")){var n=d.getTransitionDurationFromElement(t);o.default(t).one(d.TRANSITION_END,(function(n){return e._destroyElement(t,n)})).emulateTransitionEnd(n)}else this._destroyElement(t)},e._destroyElement=function(t){o.default(t).detach().trigger("closed.bs.alert").remove()},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data("bs.alert");i||(i=new t(this),n.data("bs.alert",i)),"close"===e&&i[e](this)}))},t._handleDismiss=function(t){return function(e){e&&e.preventDefault(),t.close(this)}},s(t,null,[{key:"VERSION",get:function(){return"4.6.1"}}]),t}();o.default(document).on("click.bs.alert.data-api",'[data-dismiss="alert"]',h._handleDismiss(new h)),o.default.fn.alert=h._jQueryInterface,o.default.fn.alert.Constructor=h,o.default.fn.alert.noConflict=function(){return o.default.fn.alert=c,h._jQueryInterface};var p=o.default.fn.button,m=function(){function t(t){this._element=t,this.shouldAvoidTriggerChange=!1}var e=t.prototype;return e.toggle=function(){var t=!0,e=!0,n=o.default(this._element).closest('[data-toggle="buttons"]')[0];if(n){var i=this._element.querySelector('input:not([type="hidden"])');if(i){if("radio"===i.type)if(i.checked&&this._element.classList.contains("active"))t=!1;else{var r=n.querySelector(".active");r&&o.default(r).removeClass("active")}t&&("checkbox"!==i.type&&"radio"!==i.type||(i.checked=!this._element.classList.contains("active")),this.shouldAvoidTriggerChange||o.default(i).trigger("change")),i.focus(),e=!1}}this._element.hasAttribute("disabled")||this._element.classList.contains("disabled")||(e&&this._element.setAttribute("aria-pressed",!this._element.classList.contains("active")),t&&o.default(this._element).toggleClass("active"))},e.dispose=function(){o.default.removeData(this._element,"bs.button"),this._element=null},t._jQueryInterface=function(e,n){return this.each((function(){var i=o.default(this),r=i.data("bs.button");r||(r=new t(this),i.data("bs.button",r)),r.shouldAvoidTriggerChange=n,"toggle"===e&&r[e]()}))},s(t,null,[{key:"VERSION",get:function(){return"4.6.1"}}]),t}();o.default(document).on("click.bs.button.data-api",'[data-toggle^="button"]',(function(t){var e=t.target,n=e;if(o.default(e).hasClass("btn")||(e=o.default(e).closest(".btn")[0]),!e||e.hasAttribute("disabled")||e.classList.contains("disabled"))t.preventDefault();else{var i=e.querySelector('input:not([type="hidden"])');if(i&&(i.hasAttribute("disabled")||i.classList.contains("disabled")))return void t.preventDefault();"INPUT"!==n.tagName&&"LABEL"===e.tagName||m._jQueryInterface.call(o.default(e),"toggle","INPUT"===n.tagName)}})).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',(function(t){var e=o.default(t.target).closest(".btn")[0];o.default(e).toggleClass("focus",/^focus(in)?$/.test(t.type))})),o.default(window).on("load.bs.button.data-api",(function(){for(var t=[].slice.call(document.querySelectorAll('[data-toggle="buttons"] .btn')),e=0,n=t.length;e0,this._pointerEvent=Boolean(window.PointerEvent||window.MSPointerEvent),this._addEventListeners()}var e=t.prototype;return e.next=function(){this._isSliding||this._slide("next")},e.nextWhenVisible=function(){var t=o.default(this._element);!document.hidden&&t.is(":visible")&&"hidden"!==t.css("visibility")&&this.next()},e.prev=function(){this._isSliding||this._slide("prev")},e.pause=function(t){t||(this._isPaused=!0),this._element.querySelector(".carousel-item-next, .carousel-item-prev")&&(d.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},e.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},e.to=function(t){var e=this;this._activeElement=this._element.querySelector(".active.carousel-item");var n=this._getItemIndex(this._activeElement);if(!(t>this._items.length-1||t<0))if(this._isSliding)o.default(this._element).one("slid.bs.carousel",(function(){return e.to(t)}));else{if(n===t)return this.pause(),void this.cycle();var i=t>n?"next":"prev";this._slide(i,this._items[t])}},e.dispose=function(){o.default(this._element).off(v),o.default.removeData(this._element,"bs.carousel"),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},e._getConfig=function(t){return t=l({},b,t),d.typeCheckConfig(g,t,y),t},e._handleSwipe=function(){var t=Math.abs(this.touchDeltaX);if(!(t<=40)){var e=t/this.touchDeltaX;this.touchDeltaX=0,e>0&&this.prev(),e<0&&this.next()}},e._addEventListeners=function(){var t=this;this._config.keyboard&&o.default(this._element).on("keydown.bs.carousel",(function(e){return t._keydown(e)})),"hover"===this._config.pause&&o.default(this._element).on("mouseenter.bs.carousel",(function(e){return t.pause(e)})).on("mouseleave.bs.carousel",(function(e){return t.cycle(e)})),this._config.touch&&this._addTouchEventListeners()},e._addTouchEventListeners=function(){var t=this;if(this._touchSupported){var e=function(e){t._pointerEvent&&w[e.originalEvent.pointerType.toUpperCase()]?t.touchStartX=e.originalEvent.clientX:t._pointerEvent||(t.touchStartX=e.originalEvent.touches[0].clientX)},n=function(e){t._pointerEvent&&w[e.originalEvent.pointerType.toUpperCase()]&&(t.touchDeltaX=e.originalEvent.clientX-t.touchStartX),t._handleSwipe(),"hover"===t._config.pause&&(t.pause(),t.touchTimeout&&clearTimeout(t.touchTimeout),t.touchTimeout=setTimeout((function(e){return t.cycle(e)}),500+t._config.interval))};o.default(this._element.querySelectorAll(".carousel-item img")).on("dragstart.bs.carousel",(function(t){return t.preventDefault()})),this._pointerEvent?(o.default(this._element).on("pointerdown.bs.carousel",(function(t){return e(t)})),o.default(this._element).on("pointerup.bs.carousel",(function(t){return n(t)})),this._element.classList.add("pointer-event")):(o.default(this._element).on("touchstart.bs.carousel",(function(t){return e(t)})),o.default(this._element).on("touchmove.bs.carousel",(function(e){return function(e){t.touchDeltaX=e.originalEvent.touches&&e.originalEvent.touches.length>1?0:e.originalEvent.touches[0].clientX-t.touchStartX}(e)})),o.default(this._element).on("touchend.bs.carousel",(function(t){return n(t)})))}},e._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next()}},e._getItemIndex=function(t){return this._items=t&&t.parentNode?[].slice.call(t.parentNode.querySelectorAll(".carousel-item")):[],this._items.indexOf(t)},e._getItemByDirection=function(t,e){var n="next"===t,i="prev"===t,o=this._getItemIndex(e),r=this._items.length-1;if((i&&0===o||n&&o===r)&&!this._config.wrap)return e;var a=(o+("prev"===t?-1:1))%this._items.length;return-1===a?this._items[this._items.length-1]:this._items[a]},e._triggerSlideEvent=function(t,e){var n=this._getItemIndex(t),i=this._getItemIndex(this._element.querySelector(".active.carousel-item")),r=o.default.Event("slide.bs.carousel",{relatedTarget:t,direction:e,from:i,to:n});return o.default(this._element).trigger(r),r},e._setActiveIndicatorElement=function(t){if(this._indicatorsElement){var e=[].slice.call(this._indicatorsElement.querySelectorAll(".active"));o.default(e).removeClass("active");var n=this._indicatorsElement.children[this._getItemIndex(t)];n&&o.default(n).addClass("active")}},e._updateInterval=function(){var t=this._activeElement||this._element.querySelector(".active.carousel-item");if(t){var e=parseInt(t.getAttribute("data-interval"),10);e?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,this._config.interval=e):this._config.interval=this._config.defaultInterval||this._config.interval}},e._slide=function(t,e){var n,i,r,a=this,s=this._element.querySelector(".active.carousel-item"),l=this._getItemIndex(s),u=e||s&&this._getItemByDirection(t,s),f=this._getItemIndex(u),c=Boolean(this._interval);if("next"===t?(n="carousel-item-left",i="carousel-item-next",r="left"):(n="carousel-item-right",i="carousel-item-prev",r="right"),u&&o.default(u).hasClass("active"))this._isSliding=!1;else if(!this._triggerSlideEvent(u,r).isDefaultPrevented()&&s&&u){this._isSliding=!0,c&&this.pause(),this._setActiveIndicatorElement(u),this._activeElement=u;var h=o.default.Event("slid.bs.carousel",{relatedTarget:u,direction:r,from:l,to:f});if(o.default(this._element).hasClass("slide")){o.default(u).addClass(i),d.reflow(u),o.default(s).addClass(n),o.default(u).addClass(n);var p=d.getTransitionDurationFromElement(s);o.default(s).one(d.TRANSITION_END,(function(){o.default(u).removeClass(n+" "+i).addClass("active"),o.default(s).removeClass("active "+i+" "+n),a._isSliding=!1,setTimeout((function(){return o.default(a._element).trigger(h)}),0)})).emulateTransitionEnd(p)}else o.default(s).removeClass("active"),o.default(u).addClass("active"),this._isSliding=!1,o.default(this._element).trigger(h);c&&this.cycle()}},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this).data("bs.carousel"),i=l({},b,o.default(this).data());"object"==typeof e&&(i=l({},i,e));var r="string"==typeof e?e:i.slide;if(n||(n=new t(this,i),o.default(this).data("bs.carousel",n)),"number"==typeof e)n.to(e);else if("string"==typeof r){if(void 0===n[r])throw new TypeError('No method named "'+r+'"');n[r]()}else i.interval&&i.ride&&(n.pause(),n.cycle())}))},t._dataApiClickHandler=function(e){var n=d.getSelectorFromElement(this);if(n){var i=o.default(n)[0];if(i&&o.default(i).hasClass("carousel")){var r=l({},o.default(i).data(),o.default(this).data()),a=this.getAttribute("data-slide-to");a&&(r.interval=!1),t._jQueryInterface.call(o.default(i),r),a&&o.default(i).data("bs.carousel").to(a),e.preventDefault()}}},s(t,null,[{key:"VERSION",get:function(){return"4.6.1"}},{key:"Default",get:function(){return b}}]),t}();o.default(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",E._dataApiClickHandler),o.default(window).on("load.bs.carousel.data-api",(function(){for(var t=[].slice.call(document.querySelectorAll('[data-ride="carousel"]')),e=0,n=t.length;e0&&(this._selector=a,this._triggerArray.push(r))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var e=t.prototype;return e.toggle=function(){o.default(this._element).hasClass("show")?this.hide():this.show()},e.show=function(){var e,n,i=this;if(!(this._isTransitioning||o.default(this._element).hasClass("show")||(this._parent&&0===(e=[].slice.call(this._parent.querySelectorAll(".show, .collapsing")).filter((function(t){return"string"==typeof i._config.parent?t.getAttribute("data-parent")===i._config.parent:t.classList.contains("collapse")}))).length&&(e=null),e&&(n=o.default(e).not(this._selector).data("bs.collapse"))&&n._isTransitioning))){var r=o.default.Event("show.bs.collapse");if(o.default(this._element).trigger(r),!r.isDefaultPrevented()){e&&(t._jQueryInterface.call(o.default(e).not(this._selector),"hide"),n||o.default(e).data("bs.collapse",null));var a=this._getDimension();o.default(this._element).removeClass("collapse").addClass("collapsing"),this._element.style[a]=0,this._triggerArray.length&&o.default(this._triggerArray).removeClass("collapsed").attr("aria-expanded",!0),this.setTransitioning(!0);var s="scroll"+(a[0].toUpperCase()+a.slice(1)),l=d.getTransitionDurationFromElement(this._element);o.default(this._element).one(d.TRANSITION_END,(function(){o.default(i._element).removeClass("collapsing").addClass("collapse show"),i._element.style[a]="",i.setTransitioning(!1),o.default(i._element).trigger("shown.bs.collapse")})).emulateTransitionEnd(l),this._element.style[a]=this._element[s]+"px"}}},e.hide=function(){var t=this;if(!this._isTransitioning&&o.default(this._element).hasClass("show")){var e=o.default.Event("hide.bs.collapse");if(o.default(this._element).trigger(e),!e.isDefaultPrevented()){var n=this._getDimension();this._element.style[n]=this._element.getBoundingClientRect()[n]+"px",d.reflow(this._element),o.default(this._element).addClass("collapsing").removeClass("collapse show");var i=this._triggerArray.length;if(i>0)for(var r=0;r0},e._getOffset=function(){var t=this,e={};return"function"==typeof this._config.offset?e.fn=function(e){return e.offsets=l({},e.offsets,t._config.offset(e.offsets,t._element)),e}:e.offset=this._config.offset,e},e._getPopperConfig=function(){var t={placement:this._getPlacement(),modifiers:{offset:this._getOffset(),flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return"static"===this._config.display&&(t.modifiers.applyStyle={enabled:!1}),l({},t,this._config.popperConfig)},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this).data("bs.dropdown");if(n||(n=new t(this,"object"==typeof e?e:null),o.default(this).data("bs.dropdown",n)),"string"==typeof e){if(void 0===n[e])throw new TypeError('No method named "'+e+'"');n[e]()}}))},t._clearMenus=function(e){if(!e||3!==e.which&&("keyup"!==e.type||9===e.which))for(var n=[].slice.call(document.querySelectorAll('[data-toggle="dropdown"]')),i=0,r=n.length;i0&&a--,40===e.which&&adocument.documentElement.clientHeight;n||(this._element.style.overflowY="hidden"),this._element.classList.add("modal-static");var i=d.getTransitionDurationFromElement(this._dialog);o.default(this._element).off(d.TRANSITION_END),o.default(this._element).one(d.TRANSITION_END,(function(){t._element.classList.remove("modal-static"),n||o.default(t._element).one(d.TRANSITION_END,(function(){t._element.style.overflowY=""})).emulateTransitionEnd(t._element,i)})).emulateTransitionEnd(i),this._element.focus()}},e._showElement=function(t){var e=this,n=o.default(this._element).hasClass("fade"),i=this._dialog?this._dialog.querySelector(".modal-body"):null;this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),o.default(this._dialog).hasClass("modal-dialog-scrollable")&&i?i.scrollTop=0:this._element.scrollTop=0,n&&d.reflow(this._element),o.default(this._element).addClass("show"),this._config.focus&&this._enforceFocus();var r=o.default.Event("shown.bs.modal",{relatedTarget:t}),a=function(){e._config.focus&&e._element.focus(),e._isTransitioning=!1,o.default(e._element).trigger(r)};if(n){var s=d.getTransitionDurationFromElement(this._dialog);o.default(this._dialog).one(d.TRANSITION_END,a).emulateTransitionEnd(s)}else a()},e._enforceFocus=function(){var t=this;o.default(document).off("focusin.bs.modal").on("focusin.bs.modal",(function(e){document!==e.target&&t._element!==e.target&&0===o.default(t._element).has(e.target).length&&t._element.focus()}))},e._setEscapeEvent=function(){var t=this;this._isShown?o.default(this._element).on("keydown.dismiss.bs.modal",(function(e){t._config.keyboard&&27===e.which?(e.preventDefault(),t.hide()):t._config.keyboard||27!==e.which||t._triggerBackdropTransition()})):this._isShown||o.default(this._element).off("keydown.dismiss.bs.modal")},e._setResizeEvent=function(){var t=this;this._isShown?o.default(window).on("resize.bs.modal",(function(e){return t.handleUpdate(e)})):o.default(window).off("resize.bs.modal")},e._hideModal=function(){var t=this;this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._showBackdrop((function(){o.default(document.body).removeClass("modal-open"),t._resetAdjustments(),t._resetScrollbar(),o.default(t._element).trigger("hidden.bs.modal")}))},e._removeBackdrop=function(){this._backdrop&&(o.default(this._backdrop).remove(),this._backdrop=null)},e._showBackdrop=function(t){var e=this,n=o.default(this._element).hasClass("fade")?"fade":"";if(this._isShown&&this._config.backdrop){if(this._backdrop=document.createElement("div"),this._backdrop.className="modal-backdrop",n&&this._backdrop.classList.add(n),o.default(this._backdrop).appendTo(document.body),o.default(this._element).on("click.dismiss.bs.modal",(function(t){e._ignoreBackdropClick?e._ignoreBackdropClick=!1:t.target===t.currentTarget&&("static"===e._config.backdrop?e._triggerBackdropTransition():e.hide())})),n&&d.reflow(this._backdrop),o.default(this._backdrop).addClass("show"),!t)return;if(!n)return void t();var i=d.getTransitionDurationFromElement(this._backdrop);o.default(this._backdrop).one(d.TRANSITION_END,t).emulateTransitionEnd(i)}else if(!this._isShown&&this._backdrop){o.default(this._backdrop).removeClass("show");var r=function(){e._removeBackdrop(),t&&t()};if(o.default(this._element).hasClass("fade")){var a=d.getTransitionDurationFromElement(this._backdrop);o.default(this._backdrop).one(d.TRANSITION_END,r).emulateTransitionEnd(a)}else r()}else t&&t()},e._adjustDialog=function(){var t=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},e._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},e._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=Math.round(t.left+t.right)
    ',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",customClass:"",sanitize:!0,sanitizeFn:null,whiteList:H,popperConfig:null},X={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(number|string|function)",container:"(string|element|boolean)",fallbackPlacement:"(string|array)",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",whiteList:"object",popperConfig:"(null|object)"},$={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"},G=function(){function t(t,e){if(void 0===r.default)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var e=t.prototype;return e.enable=function(){this._isEnabled=!0},e.disable=function(){this._isEnabled=!1},e.toggleEnabled=function(){this._isEnabled=!this._isEnabled},e.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=o.default(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),o.default(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(o.default(this.getTipElement()).hasClass("show"))return void this._leave(null,this);this._enter(null,this)}},e.dispose=function(){clearTimeout(this._timeout),o.default.removeData(this.element,this.constructor.DATA_KEY),o.default(this.element).off(this.constructor.EVENT_KEY),o.default(this.element).closest(".modal").off("hide.bs.modal",this._hideModalHandler),this.tip&&o.default(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},e.show=function(){var t=this;if("none"===o.default(this.element).css("display"))throw new Error("Please use show on visible elements");var e=o.default.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){o.default(this.element).trigger(e);var n=d.findShadowRoot(this.element),i=o.default.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(e.isDefaultPrevented()||!i)return;var a=this.getTipElement(),s=d.getUID(this.constructor.NAME);a.setAttribute("id",s),this.element.setAttribute("aria-describedby",s),this.setContent(),this.config.animation&&o.default(a).addClass("fade");var l="function"==typeof this.config.placement?this.config.placement.call(this,a,this.element):this.config.placement,u=this._getAttachment(l);this.addAttachmentClass(u);var f=this._getContainer();o.default(a).data(this.constructor.DATA_KEY,this),o.default.contains(this.element.ownerDocument.documentElement,this.tip)||o.default(a).appendTo(f),o.default(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new r.default(this.element,a,this._getPopperConfig(u)),o.default(a).addClass("show"),o.default(a).addClass(this.config.customClass),"ontouchstart"in document.documentElement&&o.default(document.body).children().on("mouseover",null,o.default.noop);var c=function(){t.config.animation&&t._fixTransition();var e=t._hoverState;t._hoverState=null,o.default(t.element).trigger(t.constructor.Event.SHOWN),"out"===e&&t._leave(null,t)};if(o.default(this.tip).hasClass("fade")){var h=d.getTransitionDurationFromElement(this.tip);o.default(this.tip).one(d.TRANSITION_END,c).emulateTransitionEnd(h)}else c()}},e.hide=function(t){var e=this,n=this.getTipElement(),i=o.default.Event(this.constructor.Event.HIDE),r=function(){"show"!==e._hoverState&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),o.default(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(o.default(this.element).trigger(i),!i.isDefaultPrevented()){if(o.default(n).removeClass("show"),"ontouchstart"in document.documentElement&&o.default(document.body).children().off("mouseover",null,o.default.noop),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,o.default(this.tip).hasClass("fade")){var a=d.getTransitionDurationFromElement(n);o.default(n).one(d.TRANSITION_END,r).emulateTransitionEnd(a)}else r();this._hoverState=""}},e.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},e.isWithContent=function(){return Boolean(this.getTitle())},e.addAttachmentClass=function(t){o.default(this.getTipElement()).addClass("bs-tooltip-"+t)},e.getTipElement=function(){return this.tip=this.tip||o.default(this.config.template)[0],this.tip},e.setContent=function(){var t=this.getTipElement();this.setElementContent(o.default(t.querySelectorAll(".tooltip-inner")),this.getTitle()),o.default(t).removeClass("fade show")},e.setElementContent=function(t,e){"object"!=typeof e||!e.nodeType&&!e.jquery?this.config.html?(this.config.sanitize&&(e=Q(e,this.config.whiteList,this.config.sanitizeFn)),t.html(e)):t.text(e):this.config.html?o.default(e).parent().is(t)||t.empty().append(e):t.text(o.default(e).text())},e.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},e._getPopperConfig=function(t){var e=this;return l({},{placement:t,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:".arrow"},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}},this.config.popperConfig)},e._getOffset=function(){var t=this,e={};return"function"==typeof this.config.offset?e.fn=function(e){return e.offsets=l({},e.offsets,t.config.offset(e.offsets,t.element)),e}:e.offset=this.config.offset,e},e._getContainer=function(){return!1===this.config.container?document.body:d.isElement(this.config.container)?o.default(this.config.container):o.default(document).find(this.config.container)},e._getAttachment=function(t){return z[t.toUpperCase()]},e._setListeners=function(){var t=this;this.config.trigger.split(" ").forEach((function(e){if("click"===e)o.default(t.element).on(t.constructor.Event.CLICK,t.config.selector,(function(e){return t.toggle(e)}));else if("manual"!==e){var n="hover"===e?t.constructor.Event.MOUSEENTER:t.constructor.Event.FOCUSIN,i="hover"===e?t.constructor.Event.MOUSELEAVE:t.constructor.Event.FOCUSOUT;o.default(t.element).on(n,t.config.selector,(function(e){return t._enter(e)})).on(i,t.config.selector,(function(e){return t._leave(e)}))}})),this._hideModalHandler=function(){t.element&&t.hide()},o.default(this.element).closest(".modal").on("hide.bs.modal",this._hideModalHandler),this.config.selector?this.config=l({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},e._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},e._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||o.default(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),o.default(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?"focus":"hover"]=!0),o.default(e.getTipElement()).hasClass("show")||"show"===e._hoverState?e._hoverState="show":(clearTimeout(e._timeout),e._hoverState="show",e.config.delay&&e.config.delay.show?e._timeout=setTimeout((function(){"show"===e._hoverState&&e.show()}),e.config.delay.show):e.show())},e._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||o.default(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),o.default(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?"focus":"hover"]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState="out",e.config.delay&&e.config.delay.hide?e._timeout=setTimeout((function(){"out"===e._hoverState&&e.hide()}),e.config.delay.hide):e.hide())},e._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},e._getConfig=function(t){var e=o.default(this.element).data();return Object.keys(e).forEach((function(t){-1!==Y.indexOf(t)&&delete e[t]})),"number"==typeof(t=l({},this.constructor.Default,e,"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),d.typeCheckConfig(W,t,this.constructor.DefaultType),t.sanitize&&(t.template=Q(t.template,t.whiteList,t.sanitizeFn)),t},e._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},e._cleanTipClass=function(){var t=o.default(this.getTipElement()),e=t.attr("class").match(V);null!==e&&e.length&&t.removeClass(e.join(""))},e._handlePopperPlacementChange=function(t){this.tip=t.instance.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},e._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(o.default(t).removeClass("fade"),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data("bs.tooltip"),r="object"==typeof e&&e;if((i||!/dispose|hide/.test(e))&&(i||(i=new t(this,r),n.data("bs.tooltip",i)),"string"==typeof e)){if(void 0===i[e])throw new TypeError('No method named "'+e+'"');i[e]()}}))},s(t,null,[{key:"VERSION",get:function(){return"4.6.1"}},{key:"Default",get:function(){return K}},{key:"NAME",get:function(){return W}},{key:"DATA_KEY",get:function(){return"bs.tooltip"}},{key:"Event",get:function(){return $}},{key:"EVENT_KEY",get:function(){return".bs.tooltip"}},{key:"DefaultType",get:function(){return X}}]),t}();o.default.fn[W]=G._jQueryInterface,o.default.fn[W].Constructor=G,o.default.fn[W].noConflict=function(){return o.default.fn[W]=U,G._jQueryInterface};var J="popover",Z=o.default.fn[J],tt=new RegExp("(^|\\s)bs-popover\\S+","g"),et=l({},G.Default,{placement:"right",trigger:"click",content:"",template:''}),nt=l({},G.DefaultType,{content:"(string|element|function)"}),it={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"},ot=function(t){var e,n;function i(){return t.apply(this,arguments)||this}n=t,(e=i).prototype=Object.create(n.prototype),e.prototype.constructor=e,u(e,n);var r=i.prototype;return r.isWithContent=function(){return this.getTitle()||this._getContent()},r.addAttachmentClass=function(t){o.default(this.getTipElement()).addClass("bs-popover-"+t)},r.getTipElement=function(){return this.tip=this.tip||o.default(this.config.template)[0],this.tip},r.setContent=function(){var t=o.default(this.getTipElement());this.setElementContent(t.find(".popover-header"),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(".popover-body"),e),t.removeClass("fade show")},r._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},r._cleanTipClass=function(){var t=o.default(this.getTipElement()),e=t.attr("class").match(tt);null!==e&&e.length>0&&t.removeClass(e.join(""))},i._jQueryInterface=function(t){return this.each((function(){var e=o.default(this).data("bs.popover"),n="object"==typeof t?t:null;if((e||!/dispose|hide/.test(t))&&(e||(e=new i(this,n),o.default(this).data("bs.popover",e)),"string"==typeof t)){if(void 0===e[t])throw new TypeError('No method named "'+t+'"');e[t]()}}))},s(i,null,[{key:"VERSION",get:function(){return"4.6.1"}},{key:"Default",get:function(){return et}},{key:"NAME",get:function(){return J}},{key:"DATA_KEY",get:function(){return"bs.popover"}},{key:"Event",get:function(){return it}},{key:"EVENT_KEY",get:function(){return".bs.popover"}},{key:"DefaultType",get:function(){return nt}}]),i}(G);o.default.fn[J]=ot._jQueryInterface,o.default.fn[J].Constructor=ot,o.default.fn[J].noConflict=function(){return o.default.fn[J]=Z,ot._jQueryInterface};var rt="scrollspy",at=o.default.fn[rt],st={offset:10,method:"auto",target:""},lt={offset:"number",method:"string",target:"(string|element)"},ut=function(){function t(t,e){var n=this;this._element=t,this._scrollElement="BODY"===t.tagName?window:t,this._config=this._getConfig(e),this._selector=this._config.target+" .nav-link,"+this._config.target+" .list-group-item,"+this._config.target+" .dropdown-item",this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,o.default(this._scrollElement).on("scroll.bs.scrollspy",(function(t){return n._process(t)})),this.refresh(),this._process()}var e=t.prototype;return e.refresh=function(){var t=this,e=this._scrollElement===this._scrollElement.window?"offset":"position",n="auto"===this._config.method?e:this._config.method,i="position"===n?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),[].slice.call(document.querySelectorAll(this._selector)).map((function(t){var e,r=d.getSelectorFromElement(t);if(r&&(e=document.querySelector(r)),e){var a=e.getBoundingClientRect();if(a.width||a.height)return[o.default(e)[n]().top+i,r]}return null})).filter((function(t){return t})).sort((function(t,e){return t[0]-e[0]})).forEach((function(e){t._offsets.push(e[0]),t._targets.push(e[1])}))},e.dispose=function(){o.default.removeData(this._element,"bs.scrollspy"),o.default(this._scrollElement).off(".bs.scrollspy"),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},e._getConfig=function(t){if("string"!=typeof(t=l({},st,"object"==typeof t&&t?t:{})).target&&d.isElement(t.target)){var e=o.default(t.target).attr("id");e||(e=d.getUID(rt),o.default(t.target).attr("id",e)),t.target="#"+e}return d.typeCheckConfig(rt,t,lt),t},e._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},e._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},e._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},e._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;)this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&(void 0===this._offsets[o+1]||t li > .active":".active";n=(n=o.default.makeArray(o.default(i).find(a)))[n.length-1]}var s=o.default.Event("hide.bs.tab",{relatedTarget:this._element}),l=o.default.Event("show.bs.tab",{relatedTarget:n});if(n&&o.default(n).trigger(s),o.default(this._element).trigger(l),!l.isDefaultPrevented()&&!s.isDefaultPrevented()){r&&(e=document.querySelector(r)),this._activate(this._element,i);var u=function(){var e=o.default.Event("hidden.bs.tab",{relatedTarget:t._element}),i=o.default.Event("shown.bs.tab",{relatedTarget:n});o.default(n).trigger(e),o.default(t._element).trigger(i)};e?this._activate(e,e.parentNode,u):u()}}},e.dispose=function(){o.default.removeData(this._element,"bs.tab"),this._element=null},e._activate=function(t,e,n){var i=this,r=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?o.default(e).children(".active"):o.default(e).find("> li > .active"))[0],a=n&&r&&o.default(r).hasClass("fade"),s=function(){return i._transitionComplete(t,r,n)};if(r&&a){var l=d.getTransitionDurationFromElement(r);o.default(r).removeClass("show").one(d.TRANSITION_END,s).emulateTransitionEnd(l)}else s()},e._transitionComplete=function(t,e,n){if(e){o.default(e).removeClass("active");var i=o.default(e.parentNode).find("> .dropdown-menu .active")[0];i&&o.default(i).removeClass("active"),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}o.default(t).addClass("active"),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),d.reflow(t),t.classList.contains("fade")&&t.classList.add("show");var r=t.parentNode;if(r&&"LI"===r.nodeName&&(r=r.parentNode),r&&o.default(r).hasClass("dropdown-menu")){var a=o.default(t).closest(".dropdown")[0];if(a){var s=[].slice.call(a.querySelectorAll(".dropdown-toggle"));o.default(s).addClass("active")}t.setAttribute("aria-expanded",!0)}n&&n()},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data("bs.tab");if(i||(i=new t(this),n.data("bs.tab",i)),"string"==typeof e){if(void 0===i[e])throw new TypeError('No method named "'+e+'"');i[e]()}}))},s(t,null,[{key:"VERSION",get:function(){return"4.6.1"}}]),t}();o.default(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',(function(t){t.preventDefault(),dt._jQueryInterface.call(o.default(this),"show")})),o.default.fn.tab=dt._jQueryInterface,o.default.fn.tab.Constructor=dt,o.default.fn.tab.noConflict=function(){return o.default.fn.tab=ft,dt._jQueryInterface};var ct="toast",ht=o.default.fn[ct],pt={animation:!0,autohide:!0,delay:500},mt={animation:"boolean",autohide:"boolean",delay:"number"},gt=function(){function t(t,e){this._element=t,this._config=this._getConfig(e),this._timeout=null,this._setListeners()}var e=t.prototype;return e.show=function(){var t=this,e=o.default.Event("show.bs.toast");if(o.default(this._element).trigger(e),!e.isDefaultPrevented()){this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");var n=function(){t._element.classList.remove("showing"),t._element.classList.add("show"),o.default(t._element).trigger("shown.bs.toast"),t._config.autohide&&(t._timeout=setTimeout((function(){t.hide()}),t._config.delay))};if(this._element.classList.remove("hide"),d.reflow(this._element),this._element.classList.add("showing"),this._config.animation){var i=d.getTransitionDurationFromElement(this._element);o.default(this._element).one(d.TRANSITION_END,n).emulateTransitionEnd(i)}else n()}},e.hide=function(){if(this._element.classList.contains("show")){var t=o.default.Event("hide.bs.toast");o.default(this._element).trigger(t),t.isDefaultPrevented()||this._close()}},e.dispose=function(){this._clearTimeout(),this._element.classList.contains("show")&&this._element.classList.remove("show"),o.default(this._element).off("click.dismiss.bs.toast"),o.default.removeData(this._element,"bs.toast"),this._element=null,this._config=null},e._getConfig=function(t){return t=l({},pt,o.default(this._element).data(),"object"==typeof t&&t?t:{}),d.typeCheckConfig(ct,t,this.constructor.DefaultType),t},e._setListeners=function(){var t=this;o.default(this._element).on("click.dismiss.bs.toast",'[data-dismiss="toast"]',(function(){return t.hide()}))},e._close=function(){var t=this,e=function(){t._element.classList.add("hide"),o.default(t._element).trigger("hidden.bs.toast")};if(this._element.classList.remove("show"),this._config.animation){var n=d.getTransitionDurationFromElement(this._element);o.default(this._element).one(d.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},e._clearTimeout=function(){clearTimeout(this._timeout),this._timeout=null},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data("bs.toast");if(i||(i=new t(this,"object"==typeof e&&e),n.data("bs.toast",i)),"string"==typeof e){if(void 0===i[e])throw new TypeError('No method named "'+e+'"');i[e](this)}}))},s(t,null,[{key:"VERSION",get:function(){return"4.6.1"}},{key:"DefaultType",get:function(){return mt}},{key:"Default",get:function(){return pt}}]),t}();o.default.fn[ct]=gt._jQueryInterface,o.default.fn[ct].Constructor=gt,o.default.fn[ct].noConflict=function(){return o.default.fn[ct]=ht,gt._jQueryInterface},t.Alert=h,t.Button=m,t.Carousel=E,t.Collapse=D,t.Dropdown=j,t.Modal=R,t.Popover=ot,t.Scrollspy=ut,t.Tab=dt,t.Toast=gt,t.Tooltip=G,t.Util=d,Object.defineProperty(t,"__esModule",{value:!0})}(e,n(0),n(1))},function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(t){"object"==typeof window&&(n=window)}t.exports=n},,function(t,e,n){"use strict";n.r(e);n(0),n(2),n.p;$('[data-toggle="tooltip"]').tooltip({delay:{show:500,hide:100}})}]); \ No newline at end of file diff --git a/_static/scripts/pydata-sphinx-theme.js b/_static/scripts/pydata-sphinx-theme.js new file mode 100644 index 00000000..04d3cd80 --- /dev/null +++ b/_static/scripts/pydata-sphinx-theme.js @@ -0,0 +1 @@ +!function(e){var t={};function o(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,o),r.l=!0,r.exports}o.m=e,o.c=t,o.d=function(e,t,n){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)o.d(n,r,function(t){return e[t]}.bind(null,r));return n},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=4)}([function(e,t){e.exports=jQuery},,,,function(e,t,o){"use strict";o.r(t);o(0),o.p;var n=window.matchMedia("(prefers-color-scheme: dark)");function r(e){document.documentElement.dataset.theme=n.matches?"dark":"light"}function a(e){"light"!==e&&"dark"!==e&&"auto"!==e&&(console.error(`Got invalid theme mode: ${e}. Resetting to auto.`),e="auto");var t=n.matches?"dark":"light";document.documentElement.dataset.mode=e;var o="auto"==e?t:e;document.documentElement.dataset.theme=o,localStorage.setItem("mode",e),localStorage.setItem("theme",o),console.log(`[PST]: Changed to ${e} mode using the ${o} theme.`),n.onchange="auto"==e?r:""}function c(){const e=document.documentElement.dataset.defaultMode||"auto",t=localStorage.getItem("mode")||e;var o,r,c=n.matches?["auto","light","dark"]:["auto","dark","light"];a(((r=(o=c).indexOf(t)+1)===o.length&&(r=0),o[r]))}var l=()=>{let e=document.querySelectorAll("form.bd-search");return e.length?(1==e.length?e[0]:document.querySelector("div:not(.search-button__search-container) > form.bd-search")).querySelector("input"):void 0},i=()=>{let e=l(),t=document.querySelector(".search-button__wrapper");e===t.querySelector("input")&&t.classList.toggle("show"),document.activeElement===e?e.blur():(e.focus(),e.select(),e.scrollIntoView({block:"center"}))};function d(e){const t=DOCUMENTATION_OPTIONS.pagename+".html",o=e.target.getAttribute("href");let n=o.replace(t,"");return $.ajax({type:"HEAD",url:o,success:function(){location.href=o}}).fail((function(){location.href=n})),!1}var s=document.querySelectorAll("version-switcher__button");s&&$.getJSON(DOCUMENTATION_OPTIONS.theme_switcher_json_url,(function(e,t,o){const n=DOCUMENTATION_OPTIONS.pagename+".html";s.forEach(e=>{e.dataset.activeVersionName="",e.dataset.activeVersion=""}),$.each(e,(function(e,t){"name"in t||(t.name=t.version);const o=document.createElement("span");o.textContent=""+t.name;const r=document.createElement("a");r.setAttribute("class","list-group-item list-group-item-action py-1"),r.setAttribute("href",`${t.url}${n}`),r.appendChild(o),r.onclick=d,r.dataset.versionName=t.name,r.dataset.version=t.version,$(".version-switcher__menu").append(r),"DOCUMENTATION_OPTIONS.version_switcher_version_match"==t.version&&(r.classList.add("active"),s.forEach(e=>{e.innerText=e.dataset.activeVersionName=t.name,e.dataset.activeVersion=t.version}))}))})),$((function(){a(document.documentElement.dataset.mode),document.querySelectorAll(".theme-switch-button").forEach(e=>{e.addEventListener("click",c)})})),$((function(){if(!document.getElementById("bd-docs-nav"))return;var e=document.querySelector("div.bd-sidebar");let t=parseInt(sessionStorage.getItem("sidebar-scroll-top"),10);if(isNaN(t)){var o=document.getElementById("bd-docs-nav").querySelectorAll(".active");if(o.length>0){var n=o[o.length-1],r=n.getBoundingClientRect().y-e.getBoundingClientRect().y;if(n.getBoundingClientRect().y>.5*window.innerHeight){let t=.25;e.scrollTop=r-e.clientHeight*t,console.log("[PST]: Scrolled sidebar using last active link...")}}}else e.scrollTop=t,console.log("[PST]: Scrolled sidebar using stored browser position...");window.addEventListener("beforeunload",()=>{sessionStorage.setItem("sidebar-scroll-top",e.scrollTop)})})),$((function(){$(window).on("activate.bs.scrollspy",(function(){document.querySelectorAll("#bd-toc-nav a").forEach(e=>{e.parentElement.classList.remove("active")});document.querySelectorAll("#bd-toc-nav a.active").forEach(e=>{e.parentElement.classList.add("active")})}))})),$(()=>{(()=>{let e=document.querySelectorAll("form.bd-search");window.navigator.platform.toUpperCase().indexOf("MAC")>=0&&e.forEach(e=>e.querySelector("kbd.kbd-shortcut__modifier").innerText="⌘")})(),window.addEventListener("keydown",e=>{let t=l();(e.ctrlKey||e.metaKey)&&"KeyK"==e.code?(e.preventDefault(),i()):document.activeElement===t&&"Escape"==e.code&&i()},!0),document.querySelectorAll(".search-button__button").forEach(e=>{e.onclick=i});let e=document.querySelector(".search-button__overlay");e&&(e.onclick=i)}),$((function(){new MutationObserver((e,t)=>{e.forEach(e=>{0!==e.addedNodes.length&&void 0!==e.addedNodes[0].data&&-1!=e.addedNodes[0].data.search("Inserted RTD Footer")&&e.addedNodes.forEach(e=>{document.getElementById("rtd-footer-container").append(e)})})}).observe(document.body,{childList:!0})}))}]); \ No newline at end of file diff --git a/_static/scripts/sphinx-book-theme.js b/_static/scripts/sphinx-book-theme.js new file mode 100644 index 00000000..116ff5ad --- /dev/null +++ b/_static/scripts/sphinx-book-theme.js @@ -0,0 +1,2 @@ +!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){e.exports=n(1)},function(e,t,n){"use strict";n.r(t);n.p;var r=e=>{"loading"!=document.readyState?e():document.addEventListener?document.addEventListener("DOMContentLoaded",e):document.attachEvent("onreadystatechange",(function(){"complete"==document.readyState&&e()}))};window.initThebeSBT=()=>{var e=$("div.section h1")[0];$(e).next().hasClass("thebe-launch-button")||$("").insertAfter($(e)),initThebe()},window.printPdf=e=>{let t=$(e).attr("aria-describedby"),n=$("#"+t).detach();window.print(),$("body").append(n)},window.toggleFullScreen=()=>{var e=document.fullscreenElement&&null!==document.fullscreenElement||document.webkitFullscreenElement&&null!==document.webkitFullscreenElement;let t=document.documentElement;e?(console.log("[SBT]: Exiting full screen"),document.exitFullscreen?document.exitFullscreen():document.webkitExitFullscreen&&document.webkitExitFullscreen()):(console.log("[SBT]: Entering full screen"),t.requestFullscreen?t.requestFullscreen():t.webkitRequestFullscreen&&t.webkitRequestFullscreen())},r(()=>{var e=[];let t=new IntersectionObserver((t,n)=>{t.forEach(t=>{if(t.isIntersecting)e.push(t.target);else for(let n=0;n0?$("div.bd-sidebar-secondary").addClass("hide"):$("div.bd-sidebar-secondary").removeClass("hide")},{rootMargin:"0px 0px -33% 0px"});let n=[];["marginnote","sidenote","margin","margin-caption","full-width","sidebar","popout"].forEach(e=>{n.push("."+e,".tag_"+e,"."+e.replace("-","_"),".tag_"+e.replace("-","_"))}),document.querySelectorAll(n.join(", ")).forEach(e=>{t.observe(e)}),new IntersectionObserver((e,t)=>{e[0].boundingClientRect.y<0?document.body.classList.add("scrolled"):document.body.classList.remove("scrolled")}).observe(document.querySelector(".sbt-scroll-pixel-helper"))}),r((function(){$("div.bd-sidebar-primary").addClass("noprint"),$("div.bd-sidebar-secondary").addClass("noprint"),$("div.bd-header-article").addClass("noprint"),$("div.bd-header-announcement").addClass("noprint"),$("footer.bd-footer-article").addClass("noprint")})),r((function(){document.documentElement.dataset.mode="light",document.documentElement.dataset.theme="light"}))}]); +//# sourceMappingURL=sphinx-book-theme.js.map \ No newline at end of file diff --git a/_static/scripts/sphinx-book-theme.js.map b/_static/scripts/sphinx-book-theme.js.map new file mode 100644 index 00000000..df2d2159 --- /dev/null +++ b/_static/scripts/sphinx-book-theme.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/sphinx_book_theme/assets/styles/index.scss","webpack:///./src/sphinx_book_theme/assets/scripts/index.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","sbRunWhenDOMLoaded","cb","document","readyState","addEventListener","attachEvent","window","initThebeSBT","title","$","next","hasClass","insertAfter","initThebe","printPdf","el","tooltipID","attr","tooltipTextDiv","detach","print","append","toggleFullScreen","isInFullScreen","fullscreenElement","webkitFullscreenElement","docElm","documentElement","console","log","exitFullscreen","webkitExitFullscreen","requestFullscreen","webkitRequestFullscreen","onScreenItems","tocObserver","IntersectionObserver","entries","observer","forEach","entry","isIntersecting","push","target","ii","length","splice","addClass","removeClass","rootMargin","marginSelector","replace","querySelectorAll","join","observe","boundingClientRect","y","body","classList","add","remove","querySelector","dataset","theme"],"mappings":"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","file":"scripts/sphinx-book-theme.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","export default __webpack_public_path__ + \"styles/sphinx-book-theme.css\";","// Import CSS variables\n// ref: https://css-tricks.com/getting-javascript-to-talk-to-css-and-sass/\nimport \"../styles/index.scss\";\n\n/**\n * A helper function to load scripts when the DOM is loaded.\n * This waits for everything to be on the page first before running, since\n * some functionality doesn't behave properly until everything is ready.\n */\nvar sbRunWhenDOMLoaded = (cb) => {\n if (document.readyState != \"loading\") {\n cb();\n } else if (document.addEventListener) {\n document.addEventListener(\"DOMContentLoaded\", cb);\n } else {\n document.attachEvent(\"onreadystatechange\", function () {\n if (document.readyState == \"complete\") cb();\n });\n }\n};\n\n/**\n * Toggle full-screen with button\n *\n * There are some browser-specific hacks in here:\n * - Safari requires a `webkit` prefix, so this uses conditionals to check for that\n * ref: https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API\n */\nvar toggleFullScreen = () => {\n var isInFullScreen =\n (document.fullscreenElement && document.fullscreenElement !== null) ||\n (document.webkitFullscreenElement &&\n document.webkitFullscreenElement !== null);\n let docElm = document.documentElement;\n if (!isInFullScreen) {\n console.log(\"[SBT]: Entering full screen\");\n if (docElm.requestFullscreen) {\n docElm.requestFullscreen();\n } else if (docElm.webkitRequestFullscreen) {\n docElm.webkitRequestFullscreen();\n }\n } else {\n console.log(\"[SBT]: Exiting full screen\");\n if (document.exitFullscreen) {\n document.exitFullscreen();\n } else if (document.webkitExitFullscreen) {\n document.webkitExitFullscreen();\n }\n }\n};\n\n/**\n * Called when the \"print to PDF\" button is clicked.\n * This is a hack to prevent tooltips from showing up in the printed PDF.\n */\nvar printPdf = (el) => {\n // Detach the tooltip text from DOM to hide in PDF\n // and then reattach it for HTML\n let tooltipID = $(el).attr(\"aria-describedby\");\n let tooltipTextDiv = $(\"#\" + tooltipID).detach();\n window.print();\n $(\"body\").append(tooltipTextDiv);\n};\n\n/**\n * Manage scrolling behavior. This is primarily two things:\n *\n * 1. Hide the Table of Contents any time sidebar content is on the screen.\n *\n * This will be triggered any time a sidebar item enters or exits the screen.\n * It adds/removes items from an array if they have entered the screen, and\n * removes them when they exit the screen. It hides the TOC if anything is\n * on-screen.\n *\n * ref: https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n *\n * 2. Add a `scrolled` class to to trigger CSS changes.\n */\nvar initTocHide = () => {\n var onScreenItems = [];\n let hideTocCallback = (entries, observer) => {\n // Check whether any sidebar item is displayed\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n // If an element just came on screen, add it our list\n onScreenItems.push(entry.target);\n } else {\n // Otherwise, if it's in our list then remove it\n for (let ii = 0; ii < onScreenItems.length; ii++) {\n if (onScreenItems[ii] === entry.target) {\n onScreenItems.splice(ii, 1);\n break;\n }\n }\n }\n });\n\n // Hide the TOC if any margin content is displayed on the screen\n if (onScreenItems.length > 0) {\n $(\"div.bd-sidebar-secondary\").addClass(\"hide\");\n } else {\n $(\"div.bd-sidebar-secondary\").removeClass(\"hide\");\n }\n };\n let manageScrolledClassOnBody = (entries, observer) => {\n // The pixel is at the top, so if we're < 0 that it means we've scrolled\n if (entries[0].boundingClientRect.y < 0) {\n document.body.classList.add(\"scrolled\");\n } else {\n document.body.classList.remove(\"scrolled\");\n }\n };\n\n // Set up the intersection observer to watch all margin content\n let options = {\n // Trigger callback when the top of a margin item is 1/3 up the screen\n rootMargin: \"0px 0px -33% 0px\",\n };\n let tocObserver = new IntersectionObserver(hideTocCallback, options);\n // TODO: deprecate popout after v0.5.0\n const selectorClasses = [\n \"marginnote\",\n \"sidenote\",\n \"margin\",\n \"margin-caption\",\n \"full-width\",\n \"sidebar\",\n \"popout\",\n ];\n let marginSelector = [];\n selectorClasses.forEach((ii) => {\n // Use three permutations of each class name because `tag_` and `_` used to be supported\n marginSelector.push(\n ...[\n `.${ii}`,\n `.tag_${ii}`,\n `.${ii.replace(\"-\", \"_\")}`,\n `.tag_${ii.replace(\"-\", \"_\")}`,\n ],\n );\n });\n document.querySelectorAll(marginSelector.join(\", \")).forEach((ii) => {\n tocObserver.observe(ii);\n });\n\n // Set up the observer to check if we've scrolled from top of page\n let scrollObserver = new IntersectionObserver(manageScrolledClassOnBody);\n scrollObserver.observe(document.querySelector(\".sbt-scroll-pixel-helper\"));\n};\n\n/**\n * Activate Thebe with a custom button click.\n */\nvar initThebeSBT = () => {\n var title = $(\"div.section h1\")[0];\n if (!$(title).next().hasClass(\"thebe-launch-button\")) {\n $(\"\").insertAfter($(title));\n }\n initThebe();\n};\n\n/**\n * Add no print class to certain DOM elements\n */\n\nfunction addNoPrint() {\n $(\"div.bd-sidebar-primary\").addClass(\"noprint\");\n $(\"div.bd-sidebar-secondary\").addClass(\"noprint\");\n $(\"div.bd-header-article\").addClass(\"noprint\");\n $(\"div.bd-header-announcement\").addClass(\"noprint\");\n $(\"footer.bd-footer-article\").addClass(\"noprint\");\n}\n\n/**\n * Set Mode of the theme\n * Remove this function once all modes are supported.\n */\n\nfunction setMode() {\n document.documentElement.dataset.mode = \"light\";\n document.documentElement.dataset.theme = \"light\";\n}\n\n/**\n * Set up callback functions for UI click actions\n */\nwindow.initThebeSBT = initThebeSBT;\nwindow.printPdf = printPdf;\nwindow.toggleFullScreen = toggleFullScreen;\n\n/**\n * Set up functions to load when the DOM is ready\n */\nsbRunWhenDOMLoaded(initTocHide);\nsbRunWhenDOMLoaded(addNoPrint);\nsbRunWhenDOMLoaded(setMode);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/_static/searchtools.js b/_static/searchtools.js new file mode 100644 index 00000000..ac4d5861 --- /dev/null +++ b/_static/searchtools.js @@ -0,0 +1,531 @@ +/* + * searchtools.js + * ~~~~~~~~~~~~~~~~ + * + * Sphinx JavaScript utilities for the full-text search. + * + * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +/** + * Simple result scoring code. + */ +if (typeof Scorer === "undefined") { + var Scorer = { + // Implement the following function to further tweak the score for each result + // The function takes a result array [docname, title, anchor, descr, score, filename] + // and returns the new score. + /* + score: result => { + const [docname, title, anchor, descr, score, filename] = result + return score + }, + */ + + // query matches the full name of an object + objNameMatch: 11, + // or matches in the last dotted part of the object name + objPartialMatch: 6, + // Additive scores depending on the priority of the object + objPrio: { + 0: 15, // used to be importantResults + 1: 5, // used to be objectResults + 2: -5, // used to be unimportantResults + }, + // Used when the priority is not in the mapping. + objPrioDefault: 0, + + // query found in title + title: 15, + partialTitle: 7, + // query found in terms + term: 5, + partialTerm: 2, + }; +} + +const _removeChildren = (element) => { + while (element && element.lastChild) element.removeChild(element.lastChild); +}; + +/** + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping + */ +const _escapeRegExp = (string) => + string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string + +const _displayItem = (item, highlightTerms, searchTerms) => { + const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; + const docUrlRoot = DOCUMENTATION_OPTIONS.URL_ROOT; + const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; + const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; + const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; + + const [docName, title, anchor, descr] = item; + + let listItem = document.createElement("li"); + let requestUrl; + let linkUrl; + if (docBuilder === "dirhtml") { + // dirhtml builder + let dirname = docName + "/"; + if (dirname.match(/\/index\/$/)) + dirname = dirname.substring(0, dirname.length - 6); + else if (dirname === "index/") dirname = ""; + requestUrl = docUrlRoot + dirname; + linkUrl = requestUrl; + } else { + // normal html builders + requestUrl = docUrlRoot + docName + docFileSuffix; + linkUrl = docName + docLinkSuffix; + } + const params = new URLSearchParams(); + params.set("highlight", [...highlightTerms].join(" ")); + let linkEl = listItem.appendChild(document.createElement("a")); + linkEl.href = linkUrl + "?" + params.toString() + anchor; + linkEl.innerHTML = title; + if (descr) + listItem.appendChild(document.createElement("span")).innerText = + " (" + descr + ")"; + else if (showSearchSummary) + fetch(requestUrl) + .then((responseData) => responseData.text()) + .then((data) => { + if (data) + listItem.appendChild( + Search.makeSearchSummary(data, searchTerms, highlightTerms) + ); + }); + Search.output.appendChild(listItem); +}; +const _finishSearch = (resultCount) => { + Search.stopPulse(); + Search.title.innerText = _("Search Results"); + if (!resultCount) + Search.status.innerText = Documentation.gettext( + "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories." + ); + else + Search.status.innerText = _( + `Search finished, found ${resultCount} page(s) matching the search query.` + ); +}; +const _displayNextItem = ( + results, + resultCount, + highlightTerms, + searchTerms +) => { + // results left, load the summary and display it + // this is intended to be dynamic (don't sub resultsCount) + if (results.length) { + _displayItem(results.pop(), highlightTerms, searchTerms); + setTimeout( + () => _displayNextItem(results, resultCount, highlightTerms, searchTerms), + 5 + ); + } + // search finished, update title and status message + else _finishSearch(resultCount); +}; + +/** + * Default splitQuery function. Can be overridden in ``sphinx.search`` with a + * custom function per language. + * + * The regular expression works by splitting the string on consecutive characters + * that are not Unicode letters, numbers, underscores, or emoji characters. + * This is the same as ``\W+`` in Python, preserving the surrogate pair area. + */ +if (typeof splitQuery === "undefined") { + var splitQuery = (query) => query + .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu) + .filter(term => term) // remove remaining empty strings +} + +/** + * Search Module + */ +const Search = { + _index: null, + _queued_query: null, + _pulse_status: -1, + + htmlToText: (htmlString) => { + const htmlElement = document + .createRange() + .createContextualFragment(htmlString); + _removeChildren(htmlElement.querySelectorAll(".headerlink")); + const docContent = htmlElement.querySelector('[role="main"]'); + if (docContent !== undefined) return docContent.textContent; + console.warn( + "Content block not found. Sphinx search tries to obtain it via '[role=main]'. Could you check your theme or template." + ); + return ""; + }, + + init: () => { + const query = new URLSearchParams(window.location.search).get("q"); + document + .querySelectorAll('input[name="q"]') + .forEach((el) => (el.value = query)); + if (query) Search.performSearch(query); + }, + + loadIndex: (url) => + (document.body.appendChild(document.createElement("script")).src = url), + + setIndex: (index) => { + Search._index = index; + if (Search._queued_query !== null) { + const query = Search._queued_query; + Search._queued_query = null; + Search.query(query); + } + }, + + hasIndex: () => Search._index !== null, + + deferQuery: (query) => (Search._queued_query = query), + + stopPulse: () => (Search._pulse_status = -1), + + startPulse: () => { + if (Search._pulse_status >= 0) return; + + const pulse = () => { + Search._pulse_status = (Search._pulse_status + 1) % 4; + Search.dots.innerText = ".".repeat(Search._pulse_status); + if (Search._pulse_status >= 0) window.setTimeout(pulse, 500); + }; + pulse(); + }, + + /** + * perform a search for something (or wait until index is loaded) + */ + performSearch: (query) => { + // create the required interface elements + const searchText = document.createElement("h2"); + searchText.textContent = _("Searching"); + const searchSummary = document.createElement("p"); + searchSummary.classList.add("search-summary"); + searchSummary.innerText = ""; + const searchList = document.createElement("ul"); + searchList.classList.add("search"); + + const out = document.getElementById("search-results"); + Search.title = out.appendChild(searchText); + Search.dots = Search.title.appendChild(document.createElement("span")); + Search.status = out.appendChild(searchSummary); + Search.output = out.appendChild(searchList); + + const searchProgress = document.getElementById("search-progress"); + // Some themes don't use the search progress node + if (searchProgress) { + searchProgress.innerText = _("Preparing search..."); + } + Search.startPulse(); + + // index already loaded, the browser was quick! + if (Search.hasIndex()) Search.query(query); + else Search.deferQuery(query); + }, + + /** + * execute search (requires search index to be loaded) + */ + query: (query) => { + // stem the search terms and add them to the correct list + const stemmer = new Stemmer(); + const searchTerms = new Set(); + const excludedTerms = new Set(); + const highlightTerms = new Set(); + const objectTerms = new Set(splitQuery(query.toLowerCase().trim())); + splitQuery(query.trim()).forEach((queryTerm) => { + const queryTermLower = queryTerm.toLowerCase(); + + // maybe skip this "word" + // stopwords array is from language_data.js + if ( + stopwords.indexOf(queryTermLower) !== -1 || + queryTerm.match(/^\d+$/) + ) + return; + + // stem the word + let word = stemmer.stemWord(queryTermLower); + // select the correct list + if (word[0] === "-") excludedTerms.add(word.substr(1)); + else { + searchTerms.add(word); + highlightTerms.add(queryTermLower); + } + }); + + // console.debug("SEARCH: searching for:"); + // console.info("required: ", [...searchTerms]); + // console.info("excluded: ", [...excludedTerms]); + + // array of [docname, title, anchor, descr, score, filename] + let results = []; + _removeChildren(document.getElementById("search-progress")); + + // lookup as object + objectTerms.forEach((term) => + results.push(...Search.performObjectSearch(term, objectTerms)) + ); + + // lookup as search terms in fulltext + results.push(...Search.performTermsSearch(searchTerms, excludedTerms)); + + // let the scorer override scores with a custom scoring function + if (Scorer.score) results.forEach((item) => (item[4] = Scorer.score(item))); + + // now sort the results by score (in opposite order of appearance, since the + // display function below uses pop() to retrieve items) and then + // alphabetically + results.sort((a, b) => { + const leftScore = a[4]; + const rightScore = b[4]; + if (leftScore === rightScore) { + // same score: sort alphabetically + const leftTitle = a[1].toLowerCase(); + const rightTitle = b[1].toLowerCase(); + if (leftTitle === rightTitle) return 0; + return leftTitle > rightTitle ? -1 : 1; // inverted is intentional + } + return leftScore > rightScore ? 1 : -1; + }); + + // remove duplicate search results + // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept + let seen = new Set(); + results = results.reverse().reduce((acc, result) => { + let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(','); + if (!seen.has(resultStr)) { + acc.push(result); + seen.add(resultStr); + } + return acc; + }, []); + + results = results.reverse(); + + // for debugging + //Search.lastresults = results.slice(); // a copy + // console.info("search results:", Search.lastresults); + + // print the results + _displayNextItem(results, results.length, highlightTerms, searchTerms); + }, + + /** + * search for object names + */ + performObjectSearch: (object, objectTerms) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const objects = Search._index.objects; + const objNames = Search._index.objnames; + const titles = Search._index.titles; + + const results = []; + + const objectSearchCallback = (prefix, match) => { + const name = match[4] + const fullname = (prefix ? prefix + "." : "") + name; + const fullnameLower = fullname.toLowerCase(); + if (fullnameLower.indexOf(object) < 0) return; + + let score = 0; + const parts = fullnameLower.split("."); + + // check for different match types: exact matches of full name or + // "last name" (i.e. last dotted part) + if (fullnameLower === object || parts.slice(-1)[0] === object) + score += Scorer.objNameMatch; + else if (parts.slice(-1)[0].indexOf(object) > -1) + score += Scorer.objPartialMatch; // matches in last name + + const objName = objNames[match[1]][2]; + const title = titles[match[0]]; + + // If more than one term searched for, we require other words to be + // found in the name/title/description + const otherTerms = new Set(objectTerms); + otherTerms.delete(object); + if (otherTerms.size > 0) { + const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase(); + if ( + [...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0) + ) + return; + } + + let anchor = match[3]; + if (anchor === "") anchor = fullname; + else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname; + + const descr = objName + _(", in ") + title; + + // add custom score for some objects according to scorer + if (Scorer.objPrio.hasOwnProperty(match[2])) + score += Scorer.objPrio[match[2]]; + else score += Scorer.objPrioDefault; + + results.push([ + docNames[match[0]], + fullname, + "#" + anchor, + descr, + score, + filenames[match[0]], + ]); + }; + Object.keys(objects).forEach((prefix) => + objects[prefix].forEach((array) => + objectSearchCallback(prefix, array) + ) + ); + return results; + }, + + /** + * search for full-text terms in the index + */ + performTermsSearch: (searchTerms, excludedTerms) => { + // prepare search + const terms = Search._index.terms; + const titleTerms = Search._index.titleterms; + const docNames = Search._index.docnames; + const filenames = Search._index.filenames; + const titles = Search._index.titles; + + const scoreMap = new Map(); + const fileMap = new Map(); + + // perform the search on the required terms + searchTerms.forEach((word) => { + const files = []; + const arr = [ + { files: terms[word], score: Scorer.term }, + { files: titleTerms[word], score: Scorer.title }, + ]; + // add support for partial matches + if (word.length > 2) { + const escapedWord = _escapeRegExp(word); + Object.keys(terms).forEach((term) => { + if (term.match(escapedWord) && !terms[word]) + arr.push({ files: terms[term], score: Scorer.partialTerm }); + }); + Object.keys(titleTerms).forEach((term) => { + if (term.match(escapedWord) && !titleTerms[word]) + arr.push({ files: titleTerms[word], score: Scorer.partialTitle }); + }); + } + + // no match but word was a required one + if (arr.every((record) => record.files === undefined)) return; + + // found search word in contents + arr.forEach((record) => { + if (record.files === undefined) return; + + let recordFiles = record.files; + if (recordFiles.length === undefined) recordFiles = [recordFiles]; + files.push(...recordFiles); + + // set score for the word in each file + recordFiles.forEach((file) => { + if (!scoreMap.has(file)) scoreMap.set(file, {}); + scoreMap.get(file)[word] = record.score; + }); + }); + + // create the mapping + files.forEach((file) => { + if (fileMap.has(file) && fileMap.get(file).indexOf(word) === -1) + fileMap.get(file).push(word); + else fileMap.set(file, [word]); + }); + }); + + // now check if the files don't contain excluded terms + const results = []; + for (const [file, wordList] of fileMap) { + // check if all requirements are matched + + // as search terms with length < 3 are discarded + const filteredTermCount = [...searchTerms].filter( + (term) => term.length > 2 + ).length; + if ( + wordList.length !== searchTerms.size && + wordList.length !== filteredTermCount + ) + continue; + + // ensure that none of the excluded terms is in the search result + if ( + [...excludedTerms].some( + (term) => + terms[term] === file || + titleTerms[term] === file || + (terms[term] || []).includes(file) || + (titleTerms[term] || []).includes(file) + ) + ) + break; + + // select one (max) score for the file. + const score = Math.max(...wordList.map((w) => scoreMap.get(file)[w])); + // add result to the result list + results.push([ + docNames[file], + titles[file], + "", + null, + score, + filenames[file], + ]); + } + return results; + }, + + /** + * helper function to return a node containing the + * search summary for a given text. keywords is a list + * of stemmed words, highlightWords is the list of normal, unstemmed + * words. the first one is used to find the occurrence, the + * latter for highlighting it. + */ + makeSearchSummary: (htmlText, keywords, highlightWords) => { + const text = Search.htmlToText(htmlText).toLowerCase(); + if (text === "") return null; + + const actualStartPosition = [...keywords] + .map((k) => text.indexOf(k.toLowerCase())) + .filter((i) => i > -1) + .slice(-1)[0]; + const startWithContext = Math.max(actualStartPosition - 120, 0); + + const top = startWithContext === 0 ? "" : "..."; + const tail = startWithContext + 240 < text.length ? "..." : ""; + + let summary = document.createElement("div"); + summary.classList.add("context"); + summary.innerText = top + text.substr(startWithContext, 240).trim() + tail; + + highlightWords.forEach((highlightWord) => + _highlightText(summary, highlightWord, "highlighted") + ); + + return summary; + }, +}; + +_ready(Search.init); diff --git a/_static/sphinx-thebe.css b/_static/sphinx-thebe.css new file mode 100644 index 00000000..1da27930 --- /dev/null +++ b/_static/sphinx-thebe.css @@ -0,0 +1,129 @@ +/* Thebelab Buttons */ +.thebelab-button { + z-index: 999; + display: inline-block; + padding: 0.35em 1.2em; + margin: 0px 1px; + border-radius: 0.12em; + box-sizing: border-box; + text-decoration: none; + font-family: "Roboto", sans-serif; + font-weight: 300; + text-align: center; + transition: all 0.2s; + background-color: #dddddd; + border: 0.05em solid white; + color: #000000; +} + +.thebelab-button:hover { + border: 0.05em solid black; + background-color: #fcfcfc; +} + +.thebe-launch-button { + height: 2.2em; + font-size: 0.8em; + border: 1px black solid; +} + +/* Thebelab Cell */ +.thebelab-cell pre { + background: none; +} + +.thebelab-cell .thebelab-input { + padding-left: 1em; + margin-bottom: 0.5em; + margin-top: 0.5em; +} + +.thebelab-cell .jp-OutputArea { + margin-top: 0.5em; + margin-left: 1em; +} + +button.thebelab-button.thebelab-run-button { + margin-left: 1.5em; + margin-bottom: 0.5em; +} + +/* Loading button */ +button.thebe-launch-button div.spinner { + float: left; + margin-right: 1em; +} + +/* Remove the spinner when thebelab is ready */ +.thebe-launch-button.thebe-status-ready .spinner { + display: none; +} + +.thebe-launch-button span.status { + font-family: monospace; + font-weight: bold; +} + +.thebe-launch-button.thebe-status-ready span.status { + color: green; +} + +.spinner { + height: 2em; + text-align: center; + font-size: 0.7em; +} + +.spinner > div { + background-color: #f37726; + height: 100%; + width: 6px; + display: inline-block; + + -webkit-animation: sk-stretchdelay 1.2s infinite ease-in-out; + animation: sk-stretchdelay 1.2s infinite ease-in-out; +} + +.spinner .rect2 { + -webkit-animation-delay: -1.1s; + animation-delay: -1.1s; +} + +.spinner .rect3 { + -webkit-animation-delay: -1s; + animation-delay: -1s; +} + +.spinner .rect4 { + -webkit-animation-delay: -0.9s; + animation-delay: -0.9s; +} + +.spinner .rect5 { + -webkit-animation-delay: -0.8s; + animation-delay: -0.8s; +} + +@-webkit-keyframes sk-stretchdelay { + 0%, + 40%, + 100% { + -webkit-transform: scaleY(0.4); + } + 20% { + -webkit-transform: scaleY(1); + } +} + +@keyframes sk-stretchdelay { + 0%, + 40%, + 100% { + transform: scaleY(0.4); + -webkit-transform: scaleY(0.4); + } + 20% { + transform: scaleY(1); + -webkit-transform: scaleY(1); + } +} diff --git a/_static/sphinx-thebe.js b/_static/sphinx-thebe.js new file mode 100644 index 00000000..7626dbb0 --- /dev/null +++ b/_static/sphinx-thebe.js @@ -0,0 +1,126 @@ +/** + * Add attributes to Thebe blocks to initialize thebe properly + */ +var configureThebe = () => { + // Load thebe config in case we want to update it as some point + console.log("[sphinx-thebe]: Loading thebe config..."); + thebe_config = $('script[type="text/x-thebe-config"]')[0]; + + // If we already detect a Thebe cell, don't re-run + if (document.querySelectorAll("div.thebe-cell").length > 0) { + return; + } + + // Update thebe buttons with loading message + $(".thebe-launch-button").each((ii, button) => { + button.innerHTML = ` +
    +
    +
    +
    +
    +
    + `; + }); + + // Set thebe event hooks + var thebeStatus; + thebelab.on("status", function (evt, data) { + console.log("Status changed:", data.status, data.message); + + $(".thebe-launch-button ") + .removeClass("thebe-status-" + thebeStatus) + .addClass("thebe-status-" + data.status) + .find(".loading-text") + .html( + "Launching from mybinder.org: " + + data.status + + "" + ); + + // Now update our thebe status + thebeStatus = data.status; + + // Find any cells with an initialization tag and ask thebe to run them when ready + if (data.status === "ready") { + var thebeInitCells = document.querySelectorAll( + ".thebe-init, .tag_thebe-init" + ); + thebeInitCells.forEach((cell) => { + console.log("Initializing Thebe with cell: " + cell.id); + cell.querySelector(".thebelab-run-button").click(); + }); + } + }); +}; + +/** + * Update the page DOM to use Thebe elements + */ +var modifyDOMForThebe = () => { + // Find all code cells, replace with Thebe interactive code cells + const codeCells = document.querySelectorAll(thebe_selector); + codeCells.forEach((codeCell, index) => { + const codeCellId = (index) => `codecell${index}`; + codeCell.id = codeCellId(index); + codeCellText = codeCell.querySelector(thebe_selector_input); + codeCellOutput = codeCell.querySelector(thebe_selector_output); + + // Clean up the language to make it work w/ CodeMirror and add it to the cell + dataLanguage = detectLanguage(kernelName); + + // Re-arrange the cell and add metadata + if (codeCellText) { + codeCellText.setAttribute("data-language", dataLanguage); + codeCellText.setAttribute("data-executable", "true"); + + // If we had an output, insert it just after the `pre` cell + if (codeCellOutput) { + $(codeCellOutput).attr("data-output", ""); + $(codeCellOutput).insertAfter(codeCellText); + } + } + + // Remove sphinx-copybutton blocks, which are common in Sphinx + codeCell.querySelectorAll("button.copybtn").forEach((el) => { + el.remove(); + }); + }); +}; + +var initThebe = () => { + // Load thebe dynamically if it's not already loaded + if (typeof thebelab === "undefined") { + console.log("[sphinx-thebe]: Loading thebe from CDN..."); + $(".thebe-launch-button ").text("Loading thebe from CDN..."); + + const script = document.createElement("script"); + script.src = `${THEBE_JS_URL}`; + document.head.appendChild(script); + + // Runs once the script has finished loading + script.addEventListener("load", () => { + console.log("[sphinx-thebe]: Finished loading thebe from CDN..."); + configureThebe(); + modifyDOMForThebe(); + thebelab.bootstrap(); + }); + } else { + console.log( + "[sphinx-thebe]: thebe already loaded, not loading from CDN..." + ); + configureThebe(); + modifyDOMForThebe(); + thebelab.bootstrap(); + } +}; + +// Helper function to munge the language name +var detectLanguage = (language) => { + if (language.indexOf("python") > -1) { + language = "python"; + } else if (language === "ir") { + language = "r"; + } + return language; +}; diff --git a/_static/styles/bootstrap.css b/_static/styles/bootstrap.css new file mode 100644 index 00000000..034bf60e --- /dev/null +++ b/_static/styles/bootstrap.css @@ -0,0 +1,6 @@ +/*! + * Bootstrap v4.6.1 (https://getbootstrap.com/) + * Copyright 2011-2021 The Bootstrap Authors + * Copyright 2011-2021 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:540px;--breakpoint-md:720px;--breakpoint-lg:960px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,:after,:before{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0);font-family:sans-serif;line-height:1.15}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{background-color:#fff;color:#212529;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,Liberation Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-size:1rem;font-weight:400;line-height:1.5;margin:0;text-align:left}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;margin-top:0}p{margin-bottom:1rem;margin-top:0}abbr[data-original-title],abbr[title]{border-bottom:0;cursor:help;text-decoration:underline;text-decoration:underline dotted;text-decoration-skip-ink:none}address{font-style:normal;line-height:inherit}address,dl,ol,ul{margin-bottom:1rem}dl,ol,ul{margin-top:0}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{background-color:transparent;color:#007bff;text-decoration:none}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}pre{-ms-overflow-style:scrollbar;margin-bottom:1rem;margin-top:0;overflow:auto}figure{margin:0 0 1rem}img{border-style:none}img,svg{vertical-align:middle}svg{overflow:hidden}table{border-collapse:collapse}caption{caption-side:bottom;color:#6c757d;padding-bottom:.75rem;padding-top:.75rem;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit;margin:0}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{border:0;margin:0;min-width:0;padding:0}legend{color:inherit;display:block;font-size:1.5rem;line-height:inherit;margin-bottom:.5rem;max-width:100%;padding:0;white-space:normal;width:100%}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:none;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}output{display:inline-block}summary{cursor:pointer;display:list-item}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-weight:500;line-height:1.2;margin-bottom:.5rem}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem}.display-1,.display-2{font-weight:300;line-height:1.2}.display-2{font-size:5.5rem}.display-3{font-size:4.5rem}.display-3,.display-4{font-weight:300;line-height:1.2}.display-4{font-size:3.5rem}hr{border:0;border-top:1px solid rgba(0,0,0,.1);margin-bottom:1rem;margin-top:1rem}.small,small{font-size:80%;font-weight:400}.mark,mark{background-color:#fcf8e3;padding:.2em}.list-inline,.list-unstyled{list-style:none;padding-left:0}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{font-size:1.25rem;margin-bottom:1rem}.blockquote-footer{color:#6c757d;display:block;font-size:80%}.blockquote-footer:before{content:"\2014\00A0"}.img-fluid,.img-thumbnail{height:auto;max-width:100%}.img-thumbnail{background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;padding:.25rem}.figure{display:inline-block}.figure-img{line-height:1;margin-bottom:.5rem}.figure-caption{color:#6c757d;font-size:90%}code{word-wrap:break-word;color:#e83e8c;font-size:87.5%}a>code{color:inherit}kbd{background-color:#212529;border-radius:.2rem;color:#fff;font-size:87.5%;padding:.2rem .4rem}kbd kbd{font-size:100%;font-weight:700;padding:0}pre{color:#212529;display:block;font-size:87.5%}pre code{color:inherit;font-size:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl{margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px;width:100%}@media (min-width:540px){.container,.container-sm{max-width:540px}}@media (min-width:720px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:960px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1400px}}.row{display:flex;flex-wrap:wrap;margin-left:-15px;margin-right:-15px}.no-gutters{margin-left:0;margin-right:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-left:0;padding-right:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{padding-left:15px;padding-right:15px;position:relative;width:100%}.col{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-1>*{flex:0 0 100%;max-width:100%}.row-cols-2>*{flex:0 0 50%;max-width:50%}.row-cols-3>*{flex:0 0 33.33333%;max-width:33.33333%}.row-cols-4>*{flex:0 0 25%;max-width:25%}.row-cols-5>*{flex:0 0 20%;max-width:20%}.row-cols-6>*{flex:0 0 16.66667%;max-width:16.66667%}.col-auto{flex:0 0 auto;max-width:100%;width:auto}.col-1{flex:0 0 8.33333%;max-width:8.33333%}.col-2{flex:0 0 16.66667%;max-width:16.66667%}.col-3{flex:0 0 25%;max-width:25%}.col-4{flex:0 0 33.33333%;max-width:33.33333%}.col-5{flex:0 0 41.66667%;max-width:41.66667%}.col-6{flex:0 0 50%;max-width:50%}.col-7{flex:0 0 58.33333%;max-width:58.33333%}.col-8{flex:0 0 66.66667%;max-width:66.66667%}.col-9{flex:0 0 75%;max-width:75%}.col-10{flex:0 0 83.33333%;max-width:83.33333%}.col-11{flex:0 0 91.66667%;max-width:91.66667%}.col-12{flex:0 0 100%;max-width:100%}.order-first{order:-1}.order-last{order:13}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-9{order:9}.order-10{order:10}.order-11{order:11}.order-12{order:12}.offset-1{margin-left:8.33333%}.offset-2{margin-left:16.66667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333%}.offset-5{margin-left:41.66667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333%}.offset-8{margin-left:66.66667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333%}.offset-11{margin-left:91.66667%}@media (min-width:540px){.col-sm{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-sm-1>*{flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{flex:0 0 33.33333%;max-width:33.33333%}.row-cols-sm-4>*{flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{flex:0 0 16.66667%;max-width:16.66667%}.col-sm-auto{flex:0 0 auto;max-width:100%;width:auto}.col-sm-1{flex:0 0 8.33333%;max-width:8.33333%}.col-sm-2{flex:0 0 16.66667%;max-width:16.66667%}.col-sm-3{flex:0 0 25%;max-width:25%}.col-sm-4{flex:0 0 33.33333%;max-width:33.33333%}.col-sm-5{flex:0 0 41.66667%;max-width:41.66667%}.col-sm-6{flex:0 0 50%;max-width:50%}.col-sm-7{flex:0 0 58.33333%;max-width:58.33333%}.col-sm-8{flex:0 0 66.66667%;max-width:66.66667%}.col-sm-9{flex:0 0 75%;max-width:75%}.col-sm-10{flex:0 0 83.33333%;max-width:83.33333%}.col-sm-11{flex:0 0 91.66667%;max-width:91.66667%}.col-sm-12{flex:0 0 100%;max-width:100%}.order-sm-first{order:-1}.order-sm-last{order:13}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-6{order:6}.order-sm-7{order:7}.order-sm-8{order:8}.order-sm-9{order:9}.order-sm-10{order:10}.order-sm-11{order:11}.order-sm-12{order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333%}.offset-sm-2{margin-left:16.66667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333%}.offset-sm-5{margin-left:41.66667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333%}.offset-sm-8{margin-left:66.66667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333%}.offset-sm-11{margin-left:91.66667%}}@media (min-width:720px){.col-md{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-md-1>*{flex:0 0 100%;max-width:100%}.row-cols-md-2>*{flex:0 0 50%;max-width:50%}.row-cols-md-3>*{flex:0 0 33.33333%;max-width:33.33333%}.row-cols-md-4>*{flex:0 0 25%;max-width:25%}.row-cols-md-5>*{flex:0 0 20%;max-width:20%}.row-cols-md-6>*{flex:0 0 16.66667%;max-width:16.66667%}.col-md-auto{flex:0 0 auto;max-width:100%;width:auto}.col-md-1{flex:0 0 8.33333%;max-width:8.33333%}.col-md-2{flex:0 0 16.66667%;max-width:16.66667%}.col-md-3{flex:0 0 25%;max-width:25%}.col-md-4{flex:0 0 33.33333%;max-width:33.33333%}.col-md-5{flex:0 0 41.66667%;max-width:41.66667%}.col-md-6{flex:0 0 50%;max-width:50%}.col-md-7{flex:0 0 58.33333%;max-width:58.33333%}.col-md-8{flex:0 0 66.66667%;max-width:66.66667%}.col-md-9{flex:0 0 75%;max-width:75%}.col-md-10{flex:0 0 83.33333%;max-width:83.33333%}.col-md-11{flex:0 0 91.66667%;max-width:91.66667%}.col-md-12{flex:0 0 100%;max-width:100%}.order-md-first{order:-1}.order-md-last{order:13}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-6{order:6}.order-md-7{order:7}.order-md-8{order:8}.order-md-9{order:9}.order-md-10{order:10}.order-md-11{order:11}.order-md-12{order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333%}.offset-md-2{margin-left:16.66667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333%}.offset-md-5{margin-left:41.66667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333%}.offset-md-8{margin-left:66.66667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333%}.offset-md-11{margin-left:91.66667%}}@media (min-width:960px){.col-lg{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-lg-1>*{flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{flex:0 0 33.33333%;max-width:33.33333%}.row-cols-lg-4>*{flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{flex:0 0 16.66667%;max-width:16.66667%}.col-lg-auto{flex:0 0 auto;max-width:100%;width:auto}.col-lg-1{flex:0 0 8.33333%;max-width:8.33333%}.col-lg-2{flex:0 0 16.66667%;max-width:16.66667%}.col-lg-3{flex:0 0 25%;max-width:25%}.col-lg-4{flex:0 0 33.33333%;max-width:33.33333%}.col-lg-5{flex:0 0 41.66667%;max-width:41.66667%}.col-lg-6{flex:0 0 50%;max-width:50%}.col-lg-7{flex:0 0 58.33333%;max-width:58.33333%}.col-lg-8{flex:0 0 66.66667%;max-width:66.66667%}.col-lg-9{flex:0 0 75%;max-width:75%}.col-lg-10{flex:0 0 83.33333%;max-width:83.33333%}.col-lg-11{flex:0 0 91.66667%;max-width:91.66667%}.col-lg-12{flex:0 0 100%;max-width:100%}.order-lg-first{order:-1}.order-lg-last{order:13}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-6{order:6}.order-lg-7{order:7}.order-lg-8{order:8}.order-lg-9{order:9}.order-lg-10{order:10}.order-lg-11{order:11}.order-lg-12{order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333%}.offset-lg-2{margin-left:16.66667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333%}.offset-lg-5{margin-left:41.66667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333%}.offset-lg-8{margin-left:66.66667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333%}.offset-lg-11{margin-left:91.66667%}}@media (min-width:1200px){.col-xl{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-xl-1>*{flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{flex:0 0 33.33333%;max-width:33.33333%}.row-cols-xl-4>*{flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{flex:0 0 16.66667%;max-width:16.66667%}.col-xl-auto{flex:0 0 auto;max-width:100%;width:auto}.col-xl-1{flex:0 0 8.33333%;max-width:8.33333%}.col-xl-2{flex:0 0 16.66667%;max-width:16.66667%}.col-xl-3{flex:0 0 25%;max-width:25%}.col-xl-4{flex:0 0 33.33333%;max-width:33.33333%}.col-xl-5{flex:0 0 41.66667%;max-width:41.66667%}.col-xl-6{flex:0 0 50%;max-width:50%}.col-xl-7{flex:0 0 58.33333%;max-width:58.33333%}.col-xl-8{flex:0 0 66.66667%;max-width:66.66667%}.col-xl-9{flex:0 0 75%;max-width:75%}.col-xl-10{flex:0 0 83.33333%;max-width:83.33333%}.col-xl-11{flex:0 0 91.66667%;max-width:91.66667%}.col-xl-12{flex:0 0 100%;max-width:100%}.order-xl-first{order:-1}.order-xl-last{order:13}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-6{order:6}.order-xl-7{order:7}.order-xl-8{order:8}.order-xl-9{order:9}.order-xl-10{order:10}.order-xl-11{order:11}.order-xl-12{order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333%}.offset-xl-2{margin-left:16.66667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333%}.offset-xl-5{margin-left:41.66667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333%}.offset-xl-8{margin-left:66.66667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333%}.offset-xl-11{margin-left:91.66667%}}.table{color:#212529;margin-bottom:1rem;width:100%}.table td,.table th{border-top:1px solid #dee2e6;padding:.75rem;vertical-align:top}.table thead th{border-bottom:2px solid #dee2e6;vertical-align:bottom}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-bordered,.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{background-color:rgba(0,0,0,.075);color:#212529}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#7abaff}.table-hover .table-primary:hover,.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#b3b7bb}.table-hover .table-secondary:hover,.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8fd19e}.table-hover .table-success:hover,.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover,.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7e}.table-hover .table-warning:hover,.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#ed969e}.table-hover .table-danger:hover,.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover,.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#95999c}.table-hover .table-dark:hover,.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th,.table-hover .table-active:hover,.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{background-color:#343a40;border-color:#454d55;color:#fff}.table .thead-light th{background-color:#e9ecef;border-color:#dee2e6;color:#495057}.table-dark{background-color:#343a40;color:#fff}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:hsla(0,0%,100%,.05)}.table-dark.table-hover tbody tr:hover{background-color:hsla(0,0%,100%,.075);color:#fff}@media (max-width:539.98px){.table-responsive-sm{-webkit-overflow-scrolling:touch;display:block;overflow-x:auto;width:100%}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:719.98px){.table-responsive-md{-webkit-overflow-scrolling:touch;display:block;overflow-x:auto;width:100%}.table-responsive-md>.table-bordered{border:0}}@media (max-width:959.98px){.table-responsive-lg{-webkit-overflow-scrolling:touch;display:block;overflow-x:auto;width:100%}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{-webkit-overflow-scrolling:touch;display:block;overflow-x:auto;width:100%}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{-webkit-overflow-scrolling:touch;display:block;overflow-x:auto;width:100%}.table-responsive>.table-bordered{border:0}.form-control{background-clip:padding-box;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem;color:#495057;display:block;font-size:1rem;font-weight:400;height:calc(1.5em + .75rem + 2px);line-height:1.5;padding:.375rem .75rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;width:100%}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{background-color:#fff;border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25);color:#495057;outline:0}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{appearance:none}select.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}select.form-control:focus::-ms-value{background-color:#fff;color:#495057}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{font-size:inherit;line-height:1.5;margin-bottom:0;padding-bottom:calc(.375rem + 1px);padding-top:calc(.375rem + 1px)}.col-form-label-lg{font-size:1.25rem;line-height:1.5;padding-bottom:calc(.5rem + 1px);padding-top:calc(.5rem + 1px)}.col-form-label-sm{font-size:.875rem;line-height:1.5;padding-bottom:calc(.25rem + 1px);padding-top:calc(.25rem + 1px)}.form-control-plaintext{background-color:transparent;border:solid transparent;border-width:1px 0;color:#212529;display:block;font-size:1rem;line-height:1.5;margin-bottom:0;padding:.375rem 0;width:100%}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-left:0;padding-right:0}.form-control-sm{border-radius:.2rem;font-size:.875rem;height:calc(1.5em + .5rem + 2px);line-height:1.5;padding:.25rem .5rem}.form-control-lg{border-radius:.3rem;font-size:1.25rem;height:calc(1.5em + 1rem + 2px);line-height:1.5;padding:.5rem 1rem}select.form-control[multiple],select.form-control[size],textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:flex;flex-wrap:wrap;margin-left:-5px;margin-right:-5px}.form-row>.col,.form-row>[class*=col-]{padding-left:5px;padding-right:5px}.form-check{display:block;padding-left:1.25rem;position:relative}.form-check-input{margin-left:-1.25rem;margin-top:.3rem;position:absolute}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{align-items:center;display:inline-flex;margin-right:.75rem;padding-left:0}.form-check-inline .form-check-input{margin-left:0;margin-right:.3125rem;margin-top:0;position:static}.valid-feedback{color:#28a745;display:none;font-size:80%;margin-top:.25rem;width:100%}.valid-tooltip{background-color:rgba(40,167,69,.9);border-radius:.25rem;color:#fff;display:none;font-size:.875rem;left:0;line-height:1.5;margin-top:.1rem;max-width:100%;padding:.25rem .5rem;position:absolute;top:100%;z-index:5}.form-row>.col>.valid-tooltip,.form-row>[class*=col-]>.valid-tooltip{left:5px}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath fill='%2328a745' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E");background-position:right calc(.375em + .1875rem) center;background-repeat:no-repeat;background-size:calc(.75em + .375rem) calc(.75em + .375rem);border-color:#28a745;padding-right:calc(1.5em + .75rem)!important}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.was-validated select.form-control:valid,select.form-control.is-valid{background-position:right 1.5rem center;padding-right:3rem!important}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem);padding-right:calc(1.5em + .75rem)}.custom-select.is-valid,.was-validated .custom-select:valid{background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5'%3E%3Cpath fill='%23343a40' d='M2 0 0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath fill='%2328a745' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat;border-color:#28a745;padding-right:calc(.75em + 2.3125rem)!important}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label:before,.was-validated .custom-control-input:valid~.custom-control-label:before{border-color:#28a745}.custom-control-input.is-valid:checked~.custom-control-label:before,.was-validated .custom-control-input:valid:checked~.custom-control-label:before{background-color:#34ce57;border-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label:before,.was-validated .custom-control-input:valid:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label:before,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label:before{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{color:#dc3545;display:none;font-size:80%;margin-top:.25rem;width:100%}.invalid-tooltip{background-color:rgba(220,53,69,.9);border-radius:.25rem;color:#fff;display:none;font-size:.875rem;left:0;line-height:1.5;margin-top:.1rem;max-width:100%;padding:.25rem .5rem;position:absolute;top:100%;z-index:5}.form-row>.col>.invalid-tooltip,.form-row>[class*=col-]>.invalid-tooltip{left:5px}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545'%3E%3Ccircle cx='6' cy='6' r='4.5'/%3E%3Cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3E%3Ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3E%3C/svg%3E");background-position:right calc(.375em + .1875rem) center;background-repeat:no-repeat;background-size:calc(.75em + .375rem) calc(.75em + .375rem);border-color:#dc3545;padding-right:calc(1.5em + .75rem)!important}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.was-validated select.form-control:invalid,select.form-control.is-invalid{background-position:right 1.5rem center;padding-right:3rem!important}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem);padding-right:calc(1.5em + .75rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5'%3E%3Cpath fill='%23343a40' d='M2 0 0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545'%3E%3Ccircle cx='6' cy='6' r='4.5'/%3E%3Cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3E%3Ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3E%3C/svg%3E") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat;border-color:#dc3545;padding-right:calc(.75em + 2.3125rem)!important}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label:before,.was-validated .custom-control-input:invalid~.custom-control-label:before{border-color:#dc3545}.custom-control-input.is-invalid:checked~.custom-control-label:before,.was-validated .custom-control-input:invalid:checked~.custom-control-label:before{background-color:#e4606d;border-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label:before,.was-validated .custom-control-input:invalid:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label:before,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label:before{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{align-items:center;display:flex;flex-flow:row wrap}.form-inline .form-check{width:100%}@media (min-width:540px){.form-inline label{justify-content:center}.form-inline .form-group,.form-inline label{align-items:center;display:flex;margin-bottom:0}.form-inline .form-group{flex:0 0 auto;flex-flow:row wrap}.form-inline .form-control{display:inline-block;vertical-align:middle;width:auto}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{align-items:center;display:flex;justify-content:center;padding-left:0;width:auto}.form-inline .form-check-input{flex-shrink:0;margin-left:0;margin-right:.25rem;margin-top:0;position:relative}.form-inline .custom-control{align-items:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{background-color:transparent;border:1px solid transparent;border-radius:.25rem;color:#212529;display:inline-block;font-size:1rem;font-weight:400;line-height:1.5;padding:.375rem .75rem;text-align:center;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;user-select:none;vertical-align:middle}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn.focus,.btn:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.25);outline:0}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{background-color:#007bff;border-color:#007bff;color:#fff}.btn-primary.focus,.btn-primary:focus,.btn-primary:hover{background-color:#0069d9;border-color:#0062cc;color:#fff}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-primary.disabled,.btn-primary:disabled{background-color:#007bff;border-color:#007bff;color:#fff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{background-color:#0062cc;border-color:#005cbf;color:#fff}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-secondary{background-color:#6c757d;border-color:#6c757d;color:#fff}.btn-secondary.focus,.btn-secondary:focus,.btn-secondary:hover{background-color:#5a6268;border-color:#545b62;color:#fff}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 .2rem hsla(208,6%,54%,.5)}.btn-secondary.disabled,.btn-secondary:disabled{background-color:#6c757d;border-color:#6c757d;color:#fff}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{background-color:#545b62;border-color:#4e555b;color:#fff}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem hsla(208,6%,54%,.5)}.btn-success{background-color:#28a745;border-color:#28a745;color:#fff}.btn-success.focus,.btn-success:focus,.btn-success:hover{background-color:#218838;border-color:#1e7e34;color:#fff}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-success.disabled,.btn-success:disabled{background-color:#28a745;border-color:#28a745;color:#fff}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{background-color:#1e7e34;border-color:#1c7430;color:#fff}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-info{background-color:#17a2b8;border-color:#17a2b8;color:#fff}.btn-info.focus,.btn-info:focus,.btn-info:hover{background-color:#138496;border-color:#117a8b;color:#fff}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-info.disabled,.btn-info:disabled{background-color:#17a2b8;border-color:#17a2b8;color:#fff}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{background-color:#117a8b;border-color:#10707f;color:#fff}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-warning{background-color:#ffc107;border-color:#ffc107;color:#212529}.btn-warning.focus,.btn-warning:focus,.btn-warning:hover{background-color:#e0a800;border-color:#d39e00;color:#212529}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-warning.disabled,.btn-warning:disabled{background-color:#ffc107;border-color:#ffc107;color:#212529}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{background-color:#d39e00;border-color:#c69500;color:#212529}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-danger{background-color:#dc3545;border-color:#dc3545;color:#fff}.btn-danger.focus,.btn-danger:focus,.btn-danger:hover{background-color:#c82333;border-color:#bd2130;color:#fff}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{background-color:#dc3545;border-color:#dc3545;color:#fff}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{background-color:#bd2130;border-color:#b21f2d;color:#fff}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-light{background-color:#f8f9fa;border-color:#f8f9fa;color:#212529}.btn-light.focus,.btn-light:focus,.btn-light:hover{background-color:#e2e6ea;border-color:#dae0e5;color:#212529}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 .2rem hsla(220,4%,85%,.5)}.btn-light.disabled,.btn-light:disabled{background-color:#f8f9fa;border-color:#f8f9fa;color:#212529}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{background-color:#dae0e5;border-color:#d3d9df;color:#212529}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem hsla(220,4%,85%,.5)}.btn-dark{background-color:#343a40;border-color:#343a40;color:#fff}.btn-dark.focus,.btn-dark:focus,.btn-dark:hover{background-color:#23272b;border-color:#1d2124;color:#fff}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-dark.disabled,.btn-dark:disabled{background-color:#343a40;border-color:#343a40;color:#fff}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{background-color:#1d2124;border-color:#171a1d;color:#fff}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-outline-primary{border-color:#007bff;color:#007bff}.btn-outline-primary:hover{background-color:#007bff;border-color:#007bff;color:#fff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{background-color:transparent;color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{background-color:#007bff;border-color:#007bff;color:#fff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{border-color:#6c757d;color:#6c757d}.btn-outline-secondary:hover{background-color:#6c757d;border-color:#6c757d;color:#fff}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem hsla(208,7%,46%,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{background-color:transparent;color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{background-color:#6c757d;border-color:#6c757d;color:#fff}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem hsla(208,7%,46%,.5)}.btn-outline-success{border-color:#28a745;color:#28a745}.btn-outline-success:hover{background-color:#28a745;border-color:#28a745;color:#fff}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{background-color:transparent;color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{background-color:#28a745;border-color:#28a745;color:#fff}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{border-color:#17a2b8;color:#17a2b8}.btn-outline-info:hover{background-color:#17a2b8;border-color:#17a2b8;color:#fff}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{background-color:transparent;color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{background-color:#17a2b8;border-color:#17a2b8;color:#fff}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{border-color:#ffc107;color:#ffc107}.btn-outline-warning:hover{background-color:#ffc107;border-color:#ffc107;color:#212529}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{background-color:transparent;color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{background-color:#ffc107;border-color:#ffc107;color:#212529}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{border-color:#dc3545;color:#dc3545}.btn-outline-danger:hover{background-color:#dc3545;border-color:#dc3545;color:#fff}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{background-color:transparent;color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{background-color:#dc3545;border-color:#dc3545;color:#fff}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{border-color:#f8f9fa;color:#f8f9fa}.btn-outline-light:hover{background-color:#f8f9fa;border-color:#f8f9fa;color:#212529}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{background-color:transparent;color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{background-color:#f8f9fa;border-color:#f8f9fa;color:#212529}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{border-color:#343a40;color:#343a40}.btn-outline-dark:hover{background-color:#343a40;border-color:#343a40;color:#fff}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{background-color:transparent;color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{background-color:#343a40;border-color:#343a40;color:#fff}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{color:#007bff;font-weight:400;text-decoration:none}.btn-link:hover{color:#0056b3}.btn-link.focus,.btn-link:focus,.btn-link:hover{text-decoration:underline}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{border-radius:.3rem;font-size:1.25rem;line-height:1.5;padding:.5rem 1rem}.btn-group-sm>.btn,.btn-sm{border-radius:.2rem;font-size:.875rem;line-height:1.5;padding:.25rem .5rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;position:relative;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{border-bottom:0;border-left:.3em solid transparent;border-right:.3em solid transparent;border-top:.3em solid;content:"";display:inline-block;margin-left:.255em;vertical-align:.255em}.dropdown-toggle:empty:after{margin-left:0}.dropdown-menu{background-clip:padding-box;background-color:#fff;border:1px solid rgba(0,0,0,.15);border-radius:.25rem;color:#212529;display:none;float:left;font-size:1rem;left:0;list-style:none;margin:.125rem 0 0;min-width:10rem;padding:.5rem 0;position:absolute;text-align:left;top:100%;z-index:1000}.dropdown-menu-left{left:0;right:auto}.dropdown-menu-right{left:auto;right:0}@media (min-width:540px){.dropdown-menu-sm-left{left:0;right:auto}.dropdown-menu-sm-right{left:auto;right:0}}@media (min-width:720px){.dropdown-menu-md-left{left:0;right:auto}.dropdown-menu-md-right{left:auto;right:0}}@media (min-width:960px){.dropdown-menu-lg-left{left:0;right:auto}.dropdown-menu-lg-right{left:auto;right:0}}@media (min-width:1200px){.dropdown-menu-xl-left{left:0;right:auto}.dropdown-menu-xl-right{left:auto;right:0}}.dropup .dropdown-menu{bottom:100%;margin-bottom:.125rem;margin-top:0;top:auto}.dropup .dropdown-toggle:after{border-bottom:.3em solid;border-left:.3em solid transparent;border-right:.3em solid transparent;border-top:0;content:"";display:inline-block;margin-left:.255em;vertical-align:.255em}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-menu{left:100%;margin-left:.125rem;margin-top:0;right:auto;top:0}.dropright .dropdown-toggle:after{border-bottom:.3em solid transparent;border-left:.3em solid;border-right:0;border-top:.3em solid transparent;content:"";display:inline-block;margin-left:.255em;vertical-align:.255em}.dropright .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-toggle:after{vertical-align:0}.dropleft .dropdown-menu{left:auto;margin-right:.125rem;margin-top:0;right:100%;top:0}.dropleft .dropdown-toggle:after{content:"";display:inline-block;display:none;margin-left:.255em;vertical-align:.255em}.dropleft .dropdown-toggle:before{border-bottom:.3em solid transparent;border-right:.3em solid;border-top:.3em solid transparent;content:"";display:inline-block;margin-right:.255em;vertical-align:.255em}.dropleft .dropdown-toggle:empty:after{margin-left:0}.dropleft .dropdown-toggle:before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{bottom:auto;right:auto}.dropdown-divider{border-top:1px solid #e9ecef;height:0;margin:.5rem 0;overflow:hidden}.dropdown-item{background-color:transparent;border:0;clear:both;color:#212529;display:block;font-weight:400;padding:.25rem 1.5rem;text-align:inherit;white-space:nowrap;width:100%}.dropdown-item:focus,.dropdown-item:hover{background-color:#e9ecef;color:#16181b;text-decoration:none}.dropdown-item.active,.dropdown-item:active{background-color:#007bff;color:#fff;text-decoration:none}.dropdown-item.disabled,.dropdown-item:disabled{background-color:transparent;color:#adb5bd;pointer-events:none}.dropdown-menu.show{display:block}.dropdown-header{color:#6c757d;display:block;font-size:.875rem;margin-bottom:0;padding:.5rem 1.5rem;white-space:nowrap}.dropdown-item-text{color:#212529;display:block;padding:.25rem 1.5rem}.btn-group,.btn-group-vertical{display:inline-flex;position:relative;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{flex:1 1 auto;position:relative}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.dropdown-toggle-split{padding-left:.5625rem;padding-right:.5625rem}.dropdown-toggle-split:after,.dropright .dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after{margin-left:0}.dropleft .dropdown-toggle-split:before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-left:.375rem;padding-right:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-left:.75rem;padding-right:.75rem}.btn-group-vertical{align-items:flex-start;flex-direction:column;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-left-radius:0;border-bottom-right-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{clip:rect(0,0,0,0);pointer-events:none;position:absolute}.input-group{align-items:stretch;display:flex;flex-wrap:wrap;position:relative;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{flex:1 1 auto;margin-bottom:0;min-width:0;position:relative;width:1%}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.input-group>.custom-file{align-items:center;display:flex}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label:after{border-bottom-right-radius:0;border-top-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-bottom-left-radius:0;border-top-left-radius:0}.input-group.has-validation>.custom-file:nth-last-child(n+3) .custom-file-label,.input-group.has-validation>.custom-file:nth-last-child(n+3) .custom-file-label:after,.input-group.has-validation>.custom-select:nth-last-child(n+3),.input-group.has-validation>.form-control:nth-last-child(n+3),.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label,.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label:after,.input-group:not(.has-validation)>.custom-select:not(:last-child),.input-group:not(.has-validation)>.form-control:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.input-group-append,.input-group-prepend{display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{align-items:center;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem;color:#495057;display:flex;font-size:1rem;font-weight:400;line-height:1.5;margin-bottom:0;padding:.375rem .75rem;text-align:center;white-space:nowrap}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{border-radius:.3rem;font-size:1.25rem;line-height:1.5;padding:.5rem 1rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{border-radius:.2rem;font-size:.875rem;line-height:1.5;padding:.25rem .5rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.btn,.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.input-group-text,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.btn,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-bottom-right-radius:0;border-top-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-bottom-left-radius:0;border-top-left-radius:0}.custom-control{color-adjust:exact;display:block;min-height:1.5rem;padding-left:1.5rem;position:relative;z-index:1}.custom-control-inline{display:inline-flex;margin-right:1rem}.custom-control-input{height:1.25rem;left:0;opacity:0;position:absolute;width:1rem;z-index:-1}.custom-control-input:checked~.custom-control-label:before{background-color:#007bff;border-color:#007bff;color:#fff}.custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label:before{border-color:#80bdff}.custom-control-input:not(:disabled):active~.custom-control-label:before{background-color:#b3d7ff;border-color:#b3d7ff;color:#fff}.custom-control-input:disabled~.custom-control-label,.custom-control-input[disabled]~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label:before,.custom-control-input[disabled]~.custom-control-label:before{background-color:#e9ecef}.custom-control-label{margin-bottom:0;position:relative;vertical-align:top}.custom-control-label:before{background-color:#fff;border:1px solid #adb5bd;pointer-events:none}.custom-control-label:after,.custom-control-label:before{content:"";display:block;height:1rem;left:-1.5rem;position:absolute;top:.25rem;width:1rem}.custom-control-label:after{background:50%/50% 50% no-repeat}.custom-checkbox .custom-control-label:before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath fill='%23fff' d='m6.564.75-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:before{background-color:#007bff;border-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label:before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label:before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(0,123,255,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label:before{border-radius:.5rem;left:-2.25rem;pointer-events:all;width:1.75rem}.custom-switch .custom-control-label:after{background-color:#adb5bd;border-radius:.5rem;height:calc(1rem - 4px);left:calc(-2.25rem + 2px);top:calc(.25rem + 2px);transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;width:calc(1rem - 4px)}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label:after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label:after{background-color:#fff;transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(0,123,255,.5)}.custom-select{appearance:none;background:#fff url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5'%3E%3Cpath fill='%23343a40' d='M2 0 0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") right .75rem center/8px 10px no-repeat;border:1px solid #ced4da;border-radius:.25rem;color:#495057;display:inline-block;font-size:1rem;font-weight:400;height:calc(1.5em + .75rem + 2px);line-height:1.5;padding:.375rem 1.75rem .375rem .75rem;vertical-align:middle;width:100%}.custom-select:focus{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25);outline:0}.custom-select:focus::-ms-value{background-color:#fff;color:#495057}.custom-select[multiple],.custom-select[size]:not([size="1"]){background-image:none;height:auto;padding-right:.75rem}.custom-select:disabled{background-color:#e9ecef;color:#6c757d}.custom-select::-ms-expand{display:none}.custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.custom-select-sm{font-size:.875rem;height:calc(1.5em + .5rem + 2px);padding-bottom:.25rem;padding-left:.5rem;padding-top:.25rem}.custom-select-lg{font-size:1.25rem;height:calc(1.5em + 1rem + 2px);padding-bottom:.5rem;padding-left:1rem;padding-top:.5rem}.custom-file{display:inline-block;margin-bottom:0}.custom-file,.custom-file-input{height:calc(1.5em + .75rem + 2px);position:relative;width:100%}.custom-file-input{margin:0;opacity:0;overflow:hidden;z-index:2}.custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:disabled~.custom-file-label,.custom-file-input[disabled]~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label:after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]:after{content:attr(data-browse)}.custom-file-label{background-color:#fff;border:1px solid #ced4da;border-radius:.25rem;font-weight:400;height:calc(1.5em + .75rem + 2px);left:0;overflow:hidden;z-index:1}.custom-file-label,.custom-file-label:after{color:#495057;line-height:1.5;padding:.375rem .75rem;position:absolute;right:0;top:0}.custom-file-label:after{background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0;bottom:0;content:"Browse";display:block;height:calc(1.5em + .75rem);z-index:3}.custom-range{appearance:none;background-color:transparent;height:1.4rem;padding:0;width:100%}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{appearance:none;background-color:#007bff;border:0;border-radius:1rem;height:1rem;margin-top:-.25rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;width:1rem}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{background-color:#dee2e6;border-color:transparent;border-radius:1rem;color:transparent;cursor:pointer;height:.5rem;width:100%}.custom-range::-moz-range-thumb{appearance:none;background-color:#007bff;border:0;border-radius:1rem;height:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;width:1rem}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{transition:none}}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{background-color:#dee2e6;border-color:transparent;border-radius:1rem;color:transparent;cursor:pointer;height:.5rem;width:100%}.custom-range::-ms-thumb{appearance:none;background-color:#007bff;border:0;border-radius:1rem;height:1rem;margin-left:.2rem;margin-right:.2rem;margin-top:0;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;width:1rem}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{transition:none}}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{background-color:transparent;border-color:transparent;border-width:.5rem;color:transparent;cursor:pointer;height:.5rem;width:100%}.custom-range::-ms-fill-lower,.custom-range::-ms-fill-upper{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label:before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label:before,.custom-file-label,.custom-select{transition:none}}.nav{display:flex;flex-wrap:wrap;list-style:none;margin-bottom:0;padding-left:0}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;cursor:default;pointer-events:none}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem;margin-bottom:-1px}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{background-color:transparent;border-color:transparent;color:#6c757d}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{background-color:#fff;border-color:#dee2e6 #dee2e6 #fff;color:#495057}.nav-tabs .dropdown-menu{border-top-left-radius:0;border-top-right-radius:0;margin-top:-1px}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{background-color:#007bff;color:#fff}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{padding:.5rem 1rem;position:relative}.navbar,.navbar .container,.navbar .container-fluid,.navbar .container-lg,.navbar .container-md,.navbar .container-sm,.navbar .container-xl{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between}.navbar-brand{display:inline-block;font-size:1.25rem;line-height:inherit;margin-right:1rem;padding-bottom:.3125rem;padding-top:.3125rem;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:flex;flex-direction:column;list-style:none;margin-bottom:0;padding-left:0}.navbar-nav .nav-link{padding-left:0;padding-right:0}.navbar-nav .dropdown-menu{float:none;position:static}.navbar-text{display:inline-block;padding-bottom:.5rem;padding-top:.5rem}.navbar-collapse{align-items:center;flex-basis:100%;flex-grow:1}.navbar-toggler{background-color:transparent;border:1px solid transparent;border-radius:.25rem;font-size:1.25rem;line-height:1;padding:.25rem .75rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{background:50%/100% 100% no-repeat;content:"";display:inline-block;height:1.5em;vertical-align:middle;width:1.5em}.navbar-nav-scroll{max-height:75vh;overflow-y:auto}@media (max-width:539.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{padding-left:0;padding-right:0}}@media (min-width:540px){.navbar-expand-sm{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-left:.5rem;padding-right:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{flex-wrap:nowrap}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:719.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{padding-left:0;padding-right:0}}@media (min-width:720px){.navbar-expand-md{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-left:.5rem;padding-right:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{flex-wrap:nowrap}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:959.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{padding-left:0;padding-right:0}}@media (min-width:960px){.navbar-expand-lg{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-left:.5rem;padding-right:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{flex-wrap:nowrap}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{padding-left:0;padding-right:0}}@media (min-width:1200px){.navbar-expand-xl{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-left:.5rem;padding-right:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{flex-wrap:nowrap}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{padding-left:0;padding-right:0}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-left:.5rem;padding-right:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{flex-wrap:nowrap}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand,.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{border-color:rgba(0,0,0,.1);color:rgba(0,0,0,.5)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30'%3E%3Cpath stroke='rgba(0,0,0,0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand,.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:hsla(0,0%,100%,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:hsla(0,0%,100%,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:hsla(0,0%,100%,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{border-color:hsla(0,0%,100%,.1);color:hsla(0,0%,100%,.5)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30'%3E%3Cpath stroke='rgba(255,255,255,0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-dark .navbar-text{color:hsla(0,0%,100%,.5)}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{word-wrap:break-word;background-clip:border-box;background-color:#fff;border:1px solid rgba(0,0,0,.125);border-radius:.25rem;display:flex;flex-direction:column;min-width:0;position:relative}.card>hr{margin-left:0;margin-right:0}.card>.list-group{border-bottom:inherit;border-top:inherit}.card>.list-group:first-child{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px);border-top-width:0}.card>.list-group:last-child{border-bottom-left-radius:calc(.25rem - 1px);border-bottom-right-radius:calc(.25rem - 1px);border-bottom-width:0}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;min-height:1px;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem}.card-subtitle,.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125);margin-bottom:0;padding:.75rem 1.25rem}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125);padding:.75rem 1.25rem}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{border-bottom:0;margin-bottom:-.75rem}.card-header-pills,.card-header-tabs{margin-left:-.625rem;margin-right:-.625rem}.card-img-overlay{border-radius:calc(.25rem - 1px);bottom:0;left:0;padding:1.25rem;position:absolute;right:0;top:0}.card-img,.card-img-bottom,.card-img-top{flex-shrink:0;width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-left-radius:calc(.25rem - 1px);border-bottom-right-radius:calc(.25rem - 1px)}.card-deck .card{margin-bottom:15px}@media (min-width:540px){.card-deck{display:flex;flex-flow:row wrap;margin-left:-15px;margin-right:-15px}.card-deck .card{flex:1 0 0%;margin-bottom:0;margin-left:15px;margin-right:15px}}.card-group>.card{margin-bottom:15px}@media (min-width:540px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{border-left:0;margin-left:0}.card-group>.card:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:540px){.card-columns{column-count:3;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion{overflow-anchor:none}.accordion>.card{overflow:hidden}.accordion>.card:not(:last-of-type){border-bottom:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.accordion>.card:not(:first-of-type){border-top-left-radius:0;border-top-right-radius:0}.accordion>.card>.card-header{border-radius:0;margin-bottom:-1px}.breadcrumb{background-color:#e9ecef;border-radius:.25rem;display:flex;flex-wrap:wrap;list-style:none;margin-bottom:1rem;padding:.75rem 1rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item:before{color:#6c757d;content:"/";float:left;padding-right:.5rem}.breadcrumb-item+.breadcrumb-item:hover:before{text-decoration:underline;text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{border-radius:.25rem;display:flex;list-style:none;padding-left:0}.page-link{background-color:#fff;border:1px solid #dee2e6;color:#007bff;display:block;line-height:1.25;margin-left:-1px;padding:.5rem .75rem;position:relative}.page-link:hover{background-color:#e9ecef;border-color:#dee2e6;color:#0056b3;text-decoration:none;z-index:2}.page-link:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.25);outline:0;z-index:3}.page-item:first-child .page-link{border-bottom-left-radius:.25rem;border-top-left-radius:.25rem;margin-left:0}.page-item:last-child .page-link{border-bottom-right-radius:.25rem;border-top-right-radius:.25rem}.page-item.active .page-link{background-color:#007bff;border-color:#007bff;color:#fff;z-index:3}.page-item.disabled .page-link{background-color:#fff;border-color:#dee2e6;color:#6c757d;cursor:auto;pointer-events:none}.pagination-lg .page-link{font-size:1.25rem;line-height:1.5;padding:.75rem 1.5rem}.pagination-lg .page-item:first-child .page-link{border-bottom-left-radius:.3rem;border-top-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-bottom-right-radius:.3rem;border-top-right-radius:.3rem}.pagination-sm .page-link{font-size:.875rem;line-height:1.5;padding:.25rem .5rem}.pagination-sm .page-item:first-child .page-link{border-bottom-left-radius:.2rem;border-top-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-bottom-right-radius:.2rem;border-top-right-radius:.2rem}.badge{border-radius:.25rem;display:inline-block;font-size:75%;font-weight:700;line-height:1;padding:.25em .4em;text-align:center;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;vertical-align:baseline;white-space:nowrap}@media (prefers-reduced-motion:reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{border-radius:10rem;padding-left:.6em;padding-right:.6em}.badge-primary{background-color:#007bff;color:#fff}a.badge-primary:focus,a.badge-primary:hover{background-color:#0062cc;color:#fff}a.badge-primary.focus,a.badge-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5);outline:0}.badge-secondary{background-color:#6c757d;color:#fff}a.badge-secondary:focus,a.badge-secondary:hover{background-color:#545b62;color:#fff}a.badge-secondary.focus,a.badge-secondary:focus{box-shadow:0 0 0 .2rem hsla(208,7%,46%,.5);outline:0}.badge-success{background-color:#28a745;color:#fff}a.badge-success:focus,a.badge-success:hover{background-color:#1e7e34;color:#fff}a.badge-success.focus,a.badge-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5);outline:0}.badge-info{background-color:#17a2b8;color:#fff}a.badge-info:focus,a.badge-info:hover{background-color:#117a8b;color:#fff}a.badge-info.focus,a.badge-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5);outline:0}.badge-warning{background-color:#ffc107;color:#212529}a.badge-warning:focus,a.badge-warning:hover{background-color:#d39e00;color:#212529}a.badge-warning.focus,a.badge-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5);outline:0}.badge-danger{background-color:#dc3545;color:#fff}a.badge-danger:focus,a.badge-danger:hover{background-color:#bd2130;color:#fff}a.badge-danger.focus,a.badge-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5);outline:0}.badge-light{background-color:#f8f9fa;color:#212529}a.badge-light:focus,a.badge-light:hover{background-color:#dae0e5;color:#212529}a.badge-light.focus,a.badge-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5);outline:0}.badge-dark{background-color:#343a40;color:#fff}a.badge-dark:focus,a.badge-dark:hover{background-color:#1d2124;color:#fff}a.badge-dark.focus,a.badge-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5);outline:0}.jumbotron{background-color:#e9ecef;border-radius:.3rem;margin-bottom:2rem;padding:2rem 1rem}@media (min-width:540px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{border-radius:0;padding-left:0;padding-right:0}.alert{border:1px solid transparent;border-radius:.25rem;margin-bottom:1rem;padding:.75rem 1.25rem;position:relative}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{color:inherit;padding:.75rem 1.25rem;position:absolute;right:0;top:0;z-index:2}.alert-primary{background-color:#cce5ff;border-color:#b8daff;color:#004085}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{background-color:#e2e3e5;border-color:#d6d8db;color:#383d41}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{background-color:#d4edda;border-color:#c3e6cb;color:#155724}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{background-color:#d1ecf1;border-color:#bee5eb;color:#0c5460}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{background-color:#fff3cd;border-color:#ffeeba;color:#856404}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{background-color:#f8d7da;border-color:#f5c6cb;color:#721c24}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{background-color:#fefefe;border-color:#fdfdfe;color:#818182}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{background-color:#d6d8d9;border-color:#c6c8ca;color:#1b1e21}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@keyframes progress-bar-stripes{0%{background-position:1rem 0}to{background-position:0 0}}.progress{background-color:#e9ecef;border-radius:.25rem;font-size:.75rem;height:1rem;line-height:0}.progress,.progress-bar{display:flex;overflow:hidden}.progress-bar{background-color:#007bff;color:#fff;flex-direction:column;justify-content:center;text-align:center;transition:width .6s ease;white-space:nowrap}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-size:1rem 1rem}.progress-bar-animated{animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion:reduce){.progress-bar-animated{animation:none}}.media{align-items:flex-start;display:flex}.media-body{flex:1}.list-group{border-radius:.25rem;display:flex;flex-direction:column;margin-bottom:0;padding-left:0}.list-group-item-action{color:#495057;text-align:inherit;width:100%}.list-group-item-action:focus,.list-group-item-action:hover{background-color:#f8f9fa;color:#495057;text-decoration:none;z-index:1}.list-group-item-action:active{background-color:#e9ecef;color:#212529}.list-group-item{background-color:#fff;border:1px solid rgba(0,0,0,.125);display:block;padding:.75rem 1.25rem;position:relative}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{background-color:#fff;color:#6c757d;pointer-events:none}.list-group-item.active{background-color:#007bff;border-color:#007bff;color:#fff;z-index:2}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{border-top-width:1px;margin-top:-1px}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-bottom-left-radius:0;border-top-right-radius:.25rem}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-left-width:0;border-top-width:1px}.list-group-horizontal>.list-group-item+.list-group-item.active{border-left-width:1px;margin-left:-1px}@media (min-width:540px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-bottom-left-radius:0;border-top-right-radius:.25rem}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-left-width:0;border-top-width:1px}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{border-left-width:1px;margin-left:-1px}}@media (min-width:720px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-bottom-left-radius:0;border-top-right-radius:.25rem}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-left-width:0;border-top-width:1px}.list-group-horizontal-md>.list-group-item+.list-group-item.active{border-left-width:1px;margin-left:-1px}}@media (min-width:960px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-bottom-left-radius:0;border-top-right-radius:.25rem}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-left-width:0;border-top-width:1px}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{border-left-width:1px;margin-left:-1px}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-bottom-left-radius:0;border-top-right-radius:.25rem}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-left-width:0;border-top-width:1px}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{border-left-width:1px;margin-left:-1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{background-color:#b8daff;color:#004085}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{background-color:#9fcdff;color:#004085}.list-group-item-primary.list-group-item-action.active{background-color:#004085;border-color:#004085;color:#fff}.list-group-item-secondary{background-color:#d6d8db;color:#383d41}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{background-color:#c8cbcf;color:#383d41}.list-group-item-secondary.list-group-item-action.active{background-color:#383d41;border-color:#383d41;color:#fff}.list-group-item-success{background-color:#c3e6cb;color:#155724}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{background-color:#b1dfbb;color:#155724}.list-group-item-success.list-group-item-action.active{background-color:#155724;border-color:#155724;color:#fff}.list-group-item-info{background-color:#bee5eb;color:#0c5460}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{background-color:#abdde5;color:#0c5460}.list-group-item-info.list-group-item-action.active{background-color:#0c5460;border-color:#0c5460;color:#fff}.list-group-item-warning{background-color:#ffeeba;color:#856404}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{background-color:#ffe8a1;color:#856404}.list-group-item-warning.list-group-item-action.active{background-color:#856404;border-color:#856404;color:#fff}.list-group-item-danger{background-color:#f5c6cb;color:#721c24}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{background-color:#f1b0b7;color:#721c24}.list-group-item-danger.list-group-item-action.active{background-color:#721c24;border-color:#721c24;color:#fff}.list-group-item-light{background-color:#fdfdfe;color:#818182}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{background-color:#ececf6;color:#818182}.list-group-item-light.list-group-item-action.active{background-color:#818182;border-color:#818182;color:#fff}.list-group-item-dark{background-color:#c6c8ca;color:#1b1e21}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{background-color:#b9bbbe;color:#1b1e21}.list-group-item-dark.list-group-item-action.active{background-color:#1b1e21;border-color:#1b1e21;color:#fff}.close{color:#000;float:right;font-size:1.5rem;font-weight:700;line-height:1;opacity:.5;text-shadow:0 1px 0 #fff}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{background-color:transparent;border:0;padding:0}a.close.disabled{pointer-events:none}.toast{background-clip:padding-box;background-color:hsla(0,0%,100%,.85);border:1px solid rgba(0,0,0,.1);border-radius:.25rem;box-shadow:0 .25rem .75rem rgba(0,0,0,.1);flex-basis:350px;font-size:.875rem;max-width:350px;opacity:0}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{align-items:center;background-clip:padding-box;background-color:hsla(0,0%,100%,.85);border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px);color:#6c757d;display:flex;padding:.25rem .75rem}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{display:none;height:100%;left:0;outline:0;overflow:hidden;position:fixed;top:0;width:100%;z-index:1050}.modal-dialog{margin:.5rem;pointer-events:none;position:relative;width:auto}.modal.fade .modal-dialog{transform:translateY(-50px);transition:transform .3s ease-out}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{align-items:center;display:flex;min-height:calc(100% - 1rem)}.modal-dialog-centered:before{content:"";display:block;height:calc(100vh - 1rem);height:min-content}.modal-dialog-centered.modal-dialog-scrollable{flex-direction:column;height:100%;justify-content:center}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable:before{content:none}.modal-content{background-clip:padding-box;background-color:#fff;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;display:flex;flex-direction:column;outline:0;pointer-events:auto;position:relative;width:100%}.modal-backdrop{background-color:#000;height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:1040}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{align-items:flex-start;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px);display:flex;justify-content:space-between;padding:1rem}.modal-header .close{margin:-1rem -1rem -1rem auto;padding:1rem}.modal-title{line-height:1.5;margin-bottom:0}.modal-body{flex:1 1 auto;padding:1rem;position:relative}.modal-footer{align-items:center;border-bottom-left-radius:calc(.3rem - 1px);border-bottom-right-radius:calc(.3rem - 1px);border-top:1px solid #dee2e6;display:flex;flex-wrap:wrap;justify-content:flex-end;padding:.75rem}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{height:50px;overflow:scroll;position:absolute;top:-9999px;width:50px}@media (min-width:540px){.modal-dialog{margin:1.75rem auto;max-width:500px}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered:before{height:calc(100vh - 3.5rem);height:min-content}.modal-sm{max-width:300px}}@media (min-width:960px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{word-wrap:break-word;display:block;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,Liberation Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-size:.875rem;font-style:normal;font-weight:400;letter-spacing:normal;line-break:auto;line-height:1.5;margin:0;opacity:0;position:absolute;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;z-index:1070}.tooltip.show{opacity:.9}.tooltip .arrow{display:block;height:.4rem;position:absolute;width:.8rem}.tooltip .arrow:before{border-color:transparent;border-style:solid;content:"";position:absolute}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow:before,.bs-tooltip-top .arrow:before{border-top-color:#000;border-width:.4rem .4rem 0;top:0}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{height:.8rem;left:0;width:.4rem}.bs-tooltip-auto[x-placement^=right] .arrow:before,.bs-tooltip-right .arrow:before{border-right-color:#000;border-width:.4rem .4rem .4rem 0;right:0}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow:before,.bs-tooltip-bottom .arrow:before{border-bottom-color:#000;border-width:0 .4rem .4rem;bottom:0}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{height:.8rem;right:0;width:.4rem}.bs-tooltip-auto[x-placement^=left] .arrow:before,.bs-tooltip-left .arrow:before{border-left-color:#000;border-width:.4rem 0 .4rem .4rem;left:0}.tooltip-inner{background-color:#000;border-radius:.25rem;color:#fff;max-width:200px;padding:.25rem .5rem;text-align:center}.popover{word-wrap:break-word;background-clip:padding-box;background-color:#fff;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,Liberation Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-size:.875rem;font-style:normal;font-weight:400;left:0;letter-spacing:normal;line-break:auto;line-height:1.5;max-width:276px;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;top:0;white-space:normal;word-break:normal;word-spacing:normal;z-index:1060}.popover,.popover .arrow{display:block;position:absolute}.popover .arrow{height:.5rem;margin:0 .3rem;width:1rem}.popover .arrow:after,.popover .arrow:before{border-color:transparent;border-style:solid;content:"";display:block;position:absolute}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow:before,.bs-popover-top>.arrow:before{border-top-color:rgba(0,0,0,.25);border-width:.5rem .5rem 0;bottom:0}.bs-popover-auto[x-placement^=top]>.arrow:after,.bs-popover-top>.arrow:after{border-top-color:#fff;border-width:.5rem .5rem 0;bottom:1px}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{height:1rem;left:calc(-.5rem - 1px);margin:.3rem 0;width:.5rem}.bs-popover-auto[x-placement^=right]>.arrow:before,.bs-popover-right>.arrow:before{border-right-color:rgba(0,0,0,.25);border-width:.5rem .5rem .5rem 0;left:0}.bs-popover-auto[x-placement^=right]>.arrow:after,.bs-popover-right>.arrow:after{border-right-color:#fff;border-width:.5rem .5rem .5rem 0;left:1px}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow:before,.bs-popover-bottom>.arrow:before{border-bottom-color:rgba(0,0,0,.25);border-width:0 .5rem .5rem;top:0}.bs-popover-auto[x-placement^=bottom]>.arrow:after,.bs-popover-bottom>.arrow:after{border-bottom-color:#fff;border-width:0 .5rem .5rem;top:1px}.bs-popover-auto[x-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{border-bottom:1px solid #f7f7f7;content:"";display:block;left:50%;margin-left:-.5rem;position:absolute;top:0;width:1rem}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{height:1rem;margin:.3rem 0;right:calc(-.5rem - 1px);width:.5rem}.bs-popover-auto[x-placement^=left]>.arrow:before,.bs-popover-left>.arrow:before{border-left-color:rgba(0,0,0,.25);border-width:.5rem 0 .5rem .5rem;right:0}.bs-popover-auto[x-placement^=left]>.arrow:after,.bs-popover-left>.arrow:after{border-left-color:#fff;border-width:.5rem 0 .5rem .5rem;right:1px}.popover-header{background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px);font-size:1rem;margin-bottom:0;padding:.5rem .75rem}.popover-header:empty{display:none}.popover-body{color:#212529;padding:.5rem .75rem}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{overflow:hidden;position:relative;width:100%}.carousel-inner:after{clear:both;content:"";display:block}.carousel-item{backface-visibility:hidden;display:none;float:left;margin-right:-100%;position:relative;transition:transform .6s ease-in-out;width:100%}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transform:none;transition-property:opacity}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{opacity:1;z-index:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{opacity:0;transition:opacity 0s .6s;z-index:0}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{align-items:center;background:none;border:0;bottom:0;color:#fff;display:flex;justify-content:center;opacity:.5;padding:0;position:absolute;text-align:center;top:0;transition:opacity .15s ease;width:15%;z-index:1}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;opacity:.9;outline:0;text-decoration:none}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{background:50%/100% 100% no-repeat;display:inline-block;height:20px;width:20px}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8'%3E%3Cpath d='m5.25 0-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8'%3E%3Cpath d='m2.75 0-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{bottom:0;display:flex;justify-content:center;left:0;list-style:none;margin-left:15%;margin-right:15%;padding-left:0;position:absolute;right:0;z-index:15}.carousel-indicators li{background-clip:padding-box;background-color:#fff;border-bottom:10px solid transparent;border-top:10px solid transparent;box-sizing:content-box;cursor:pointer;flex:0 1 auto;height:3px;margin-left:3px;margin-right:3px;opacity:.5;text-indent:-999px;transition:opacity .6s ease;width:30px}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{bottom:20px;color:#fff;left:15%;padding-bottom:20px;padding-top:20px;position:absolute;right:15%;text-align:center;z-index:10}@keyframes spinner-border{to{transform:rotate(1turn)}}.spinner-border{animation:spinner-border .75s linear infinite;border:.25em solid;border-radius:50%;border-right:.25em solid transparent;display:inline-block;height:2rem;vertical-align:-.125em;width:2rem}.spinner-border-sm{border-width:.2em;height:1rem;width:1rem}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{animation:spinner-grow .75s linear infinite;background-color:currentColor;border-radius:50%;display:inline-block;height:2rem;opacity:0;vertical-align:-.125em;width:2rem}.spinner-grow-sm{height:1rem;width:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{animation-duration:1.5s}}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important}.rounded-right,.rounded-top{border-top-right-radius:.25rem!important}.rounded-bottom,.rounded-right{border-bottom-right-radius:.25rem!important}.rounded-bottom,.rounded-left{border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix:after{clear:both;content:"";display:block}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}@media (min-width:540px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}}@media (min-width:720px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}}@media (min-width:960px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}}.embed-responsive{display:block;overflow:hidden;padding:0;position:relative;width:100%}.embed-responsive:before{content:"";display:block}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{border:0;bottom:0;height:100%;left:0;position:absolute;top:0;width:100%}.embed-responsive-21by9:before{padding-top:42.85714%}.embed-responsive-16by9:before{padding-top:56.25%}.embed-responsive-4by3:before{padding-top:75%}.embed-responsive-1by1:before{padding-top:100%}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-fill{flex:1 1 auto!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}@media (min-width:540px){.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}}@media (min-width:720px){.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}}@media (min-width:960px){.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:540px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:720px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:960px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.user-select-all{user-select:all!important}.user-select-auto{user-select:auto!important}.user-select-none{user-select:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:sticky!important}.fixed-top{top:0}.fixed-bottom,.fixed-top{left:0;position:fixed;right:0;z-index:1030}.fixed-bottom{bottom:0}@supports (position:sticky){.sticky-top{position:sticky;top:0;z-index:1020}}.sr-only{clip:rect(0,0,0,0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;overflow:visible;position:static;white-space:normal;width:auto}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:540px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:720px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:960px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.stretched-link:after{background-color:transparent;bottom:0;content:"";left:0;pointer-events:auto;position:absolute;right:0;top:0;z-index:1}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:540px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:720px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:960px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0056b3!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#494f54!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#ba8b00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#a71d2a!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#121416!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:hsla(0,0%,100%,.5)!important}.text-hide{background-color:transparent;border:0;color:transparent;font:0/0 a;text-shadow:none}.text-decoration-none{text-decoration:none!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,:after,:before{box-shadow:none!important;text-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]:after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd}blockquote,img,pre,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}.container,body{min-width:960px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{border-color:#dee2e6;color:inherit}} \ No newline at end of file diff --git a/_static/styles/pydata-sphinx-theme.css b/_static/styles/pydata-sphinx-theme.css new file mode 100644 index 00000000..4685d7ac --- /dev/null +++ b/_static/styles/pydata-sphinx-theme.css @@ -0,0 +1 @@ +html{--pst-header-height:3rem;--pst-header-article-height:calc(var(--pst-header-height)*2/3);--pst-sidebar-secondary:17rem;--pst-font-size-base:15px;--pst-font-size-h1:36px;--pst-font-size-h2:32px;--pst-font-size-h3:26px;--pst-font-size-h4:21px;--pst-font-size-h5:18px;--pst-font-size-h6:16px;--pst-font-size-milli:12px;--pst-sidebar-font-size:0.9em;--pst-sidebar-font-size-mobile:1.2em;--pst-sidebar-header-font-size:1.2em;--pst-sidebar-header-font-weight:600;--pst-font-weight-caption:300;--pst-font-weight-heading:600;--pst-font-family-base-system:-apple-system,BlinkMacSystemFont,Segoe UI,"Helvetica Neue",Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;--pst-font-family-monospace-system:"SFMono-Regular",Menlo,Consolas,Monaco,Liberation Mono,Lucida Console,monospace;--pst-font-family-base:var(--pst-font-family-base-system);--pst-font-family-heading:var(--pst-font-family-base-system);--pst-font-family-monospace:var(--pst-font-family-monospace-system);--pst-font-size-icon:1.5rem;--pst-icon-check-circle:"\f058";--pst-icon-info-circle:"\f05a";--pst-icon-exclamation-triangle:"\f071";--pst-icon-exclamation-circle:"\f06a";--pst-icon-times-circle:"\f057";--pst-icon-lightbulb:"\f0eb";--pst-icon-download:"\f019";--pst-icon-angle-left:"\f104";--pst-icon-angle-right:"\f105";--pst-icon-external-link:"\f35d";--pst-icon-search-minus:"\f010";--pst-icon-github:"\f09b";--pst-icon-gitlab:"\f296";--pst-icon-share:"\f064";--pst-icon-bell:"\f0f3";--pst-icon-pencil:"\f303";--pst-icon-admonition-default:var(--pst-icon-bell);--pst-icon-admonition-note:var(--pst-icon-info-circle);--pst-icon-admonition-attention:var(--pst-icon-exclamation-circle);--pst-icon-admonition-caution:var(--pst-icon-exclamation-triangle);--pst-icon-admonition-warning:var(--pst-icon-exclamation-triangle);--pst-icon-admonition-danger:var(--pst-icon-exclamation-triangle);--pst-icon-admonition-error:var(--pst-icon-times-circle);--pst-icon-admonition-hint:var(--pst-icon-lightbulb);--pst-icon-admonition-tip:var(--pst-icon-lightbulb);--pst-icon-admonition-important:var(--pst-icon-exclamation-circle);--pst-icon-admonition-seealso:var(--pst-icon-share);--pst-icon-admonition-todo:var(--pst-icon-pencil);--pst-icon-versionmodified-default:var(--pst-icon-exclamation-circle);--pst-icon-versionmodified-added:var(--pst-icon-exclamation-circle);--pst-icon-versionmodified-changed:var(--pst-icon-exclamation-circle);--pst-icon-versionmodified-deprecated:var(--pst-icon-exclamation-circle)}html[data-theme=light]{--pst-color-attention:#ffc107;--pst-color-text-base:#323232;--pst-color-text-muted:#646464;--pst-color-shadow:#d8d8d8;--pst-color-border:#c9c9c9;--pst-color-inline-code:#e83e8c;--pst-color-target:#fbe54e;--pst-color-background:#fff;--pst-color-on-background:#fff;--pst-color-surface:#f5f5f5;--pst-color-on-surface:#e1e1e1;--pst-color-link:var(--pst-color-primary);--pst-color-link-hover:var(--pst-color-warning)}html[data-theme=light] .only-dark{display:none!important}html[data-theme=dark]{--pst-color-attention:#dca90f;--pst-color-text-base:#cecece;--pst-color-text-muted:#a6a6a6;--pst-color-shadow:#212121;--pst-color-border:silver;--pst-color-inline-code:#dd9ec2;--pst-color-target:#472700;--pst-color-background:#121212;--pst-color-on-background:#1e1e1e;--pst-color-surface:#212121;--pst-color-on-surface:#373737;--pst-color-link:var(--pst-color-primary);--pst-color-link-hover:var(--pst-color-warning)}html[data-theme=dark] .only-light{display:none!important}html[data-theme=dark] img:not(.only-dark):not(.dark-light){filter:brightness(.8) contrast(1.2)}html[data-theme=dark] .bd-content img:not(.only-dark):not(.dark-light){background:#fff;border-radius:.25rem}html[data-theme=dark] .MathJax_SVG *{fill:var(--pst-color-text-base)}html{font-size:var(--pst-font-size-base);scroll-padding-top:calc(var(--pst-header-height) + 12px)}body{background-color:var(--pst-color-background);color:var(--pst-color-text-base);display:flex;flex-direction:column;font-family:var(--pst-font-family-base);font-weight:400;line-height:1.65;min-height:100vh}body::-webkit-scrollbar{height:.5rem;width:.5rem}body::-webkit-scrollbar-thumb{background:var(--pst-color-text-muted);border-radius:.25rem}body::-webkit-scrollbar-track{background:transparent}body::-webkit-scrollbar-thumb{background:var(--pst-color-on-surface)}body::-webkit-scrollbar-thumb:hover,body:hover::-webkit-scrollbar-thumb{background:var(--pst-color-text-muted)}body::-webkit-scrollbar-track{background:var(--pst-color-background)}p{color:var(--pst-color-text-base);font-size:1em;margin-bottom:1.15rem}p.rubric{border-bottom:1px solid var(--pst-color-border)}p.centered{text-align:center}a{color:var(--pst-color-link);text-decoration:none}a:hover{color:var(--pst-color-link-hover);text-decoration:underline}a.headerlink{color:var(--pst-color-warning);font-size:.8em;margin-left:.2em;opacity:.4;padding:0 4px;text-decoration:none;transition:all .2s ease-out;user-select:none}a.headerlink:hover{opacity:1}a:before{color:var(--pst-color-text-muted);font-family:Font Awesome\ 6 Brands;margin-right:.25rem}a.github:before{content:var(--pst-icon-github)}a.gitlab:before{content:var(--pst-icon-gitlab)}.heading-style,h1,h2,h3,h4,h5,h6{font-family:var(--pst-font-family-heading);font-weight:400;line-height:1.15;margin:2.75rem 0 1.05rem}h1{font-size:var(--pst-font-size-h1);margin-top:0}h1,h2{color:var(--pst-color-primary)}h2{font-size:var(--pst-font-size-h2)}h3{font-size:var(--pst-font-size-h3)}h3,h4{color:var(--pst-color-text-base)}h4{font-size:var(--pst-font-size-h4)}h5{font-size:var(--pst-font-size-h5)}h5,h6{color:var(--pst-color-text-base)}h6{font-size:var(--pst-font-size-h6)}.text_small,small{font-size:var(--pst-font-size-milli)}hr{border:0;border-top:1px solid var(--pst-color-border)}code,kbd,pre,samp{font-family:var(--pst-font-family-monospace)}kbd{background-color:var(--pst-color-on-background);color:var(--pst-color-text-muted)}kbd:not(.compound){border:1px solid var(--pst-color-border);box-shadow:1px 1px 1px var(--pst-color-shadow);margin:0 .1rem;padding:.1rem .4rem}code{color:var(--pst-color-inline-code)}pre{background-color:var(--pst-color-surface);border:1px solid var(--pst-color-border);border-radius:.25rem;color:var(--pst-color-text-base);line-height:1.2em;margin:1.5em 0;padding:1rem}pre::-webkit-scrollbar{height:.5rem;width:.5rem}pre::-webkit-scrollbar-thumb{background:var(--pst-color-text-muted);border-radius:.25rem}pre::-webkit-scrollbar-track{background:transparent}pre::-webkit-scrollbar-thumb{background:var(--pst-color-on-surface)}pre::-webkit-scrollbar-thumb:hover,pre:hover::-webkit-scrollbar-thumb{background:var(--pst-color-text-muted)}pre .linenos{opacity:.5;padding-right:10px}.skip-link{background-color:var(--pst-color-background);border-bottom:1px solid var(--pst-color-border);color:var(--pst-color-link);left:0;padding:.5rem;position:fixed;right:0;text-align:center;top:0;transition:translate .15s ease-in-out;translate:0 -100%;z-index:1050}.skip-link:focus{translate:0}.bd-container{display:flex;flex-grow:1;justify-content:center}.bd-container .bd-container__inner{display:flex}.bd-page-width{width:100%}@media (min-width:960px){.bd-page-width{max-width:88rem}}.bd-header-announcement{align-items:center;display:flex;justify-content:center;min-height:3rem;padding:.5rem 12.5%;position:relative;text-align:center;width:100%}@media (max-width:1199.98px){.bd-header-announcement{padding:.5rem 2%}}.bd-header-announcement p{font-weight:700;margin:0}.bd-header-announcement:after{background-color:var(--pst-color-info);content:"";height:100%;left:0;opacity:.2;position:absolute;top:0;width:100%;z-index:-1}.bd-header-announcement:empty{display:none}.bd-main{display:flex;flex-direction:column;flex-grow:1;min-width:0}.bd-main .bd-content{display:flex;height:100%;justify-content:center}.bd-main .bd-content .bd-article-container{display:flex;flex-direction:column;justify-content:start;max-width:60em;overflow-x:auto;padding:1rem;width:100%}@media (min-width:1200px){.bd-main .bd-content .bd-article-container .bd-article{padding-left:2rem;padding-top:1.5rem}}footer.bd-footer{border-top:1px solid var(--pst-color-border);padding:10px;width:100%}footer.bd-footer .footer-item p{margin-bottom:0}.bd-footer-article{display:flex;margin-top:auto}.bd-header{background:var(--pst-color-on-background)!important;box-shadow:0 .125rem .25rem 0 var(--pst-color-shadow);justify-content:center;max-width:100vw;min-height:var(--pst-header-height);padding:.5rem 0;position:sticky;top:0;width:100%;z-index:1030}.bd-header .bd-header__inner{align-items:center;display:flex;height:100%;padding-left:1rem;padding-right:1rem}@media (min-width:960px){.bd-header .navbar-header-items{display:flex;flex-grow:1;padding:0 0 0 .5rem}}.bd-header #navbar-center,.bd-header #navbar-end,.bd-header #navbar-start{align-items:center;display:flex;flex-flow:wrap}.bd-header #navbar-center,.bd-header #navbar-end{gap:1rem}.bd-header #navbar-start{gap:.5rem;margin-right:auto}.bd-header #navbar-end{justify-content:end}.bd-header .navbar-nav{display:flex}@media (min-width:960px){.bd-header .navbar-nav{align-items:center}}.bd-header .navbar-nav li a.nav-link{color:var(--pst-color-text-muted)}.bd-header .navbar-nav li a.nav-link:focus,.bd-header .navbar-nav li a.nav-link:hover{color:var(--pst-color-primary)}.bd-header .navbar-nav>.active>.nav-link{color:var(--pst-color-primary);font-weight:600}.bd-header .navbar-nav .dropdown button{border:none;color:var(--pst-color-text-muted);display:unset}.bd-header .navbar-nav .dropdown .dropdown-menu{background-color:var(--pst-color-on-background);border:1px solid var(--pst-color-border);box-shadow:0 0 .3rem .1rem var(--pst-color-shadow);margin:.5rem 0;min-width:20rem;padding:.5rem 1rem;z-index:1060}.bd-header .navbar-nav .dropdown .dropdown-menu:not(.show){display:none}@media (min-width:960px){.navbar-center-item{display:inline-block}}.toc-entry>.nav-link.active{background-color:transparent;border-left:2px solid var(--pst-color-primary);color:var(--pst-color-primary);font-weight:600}.nav-link:hover{border-style:none}.nav-link.nav-external:after{content:var(--pst-icon-external-link);font-family:Font Awesome\ 6 Free;font-size:.75em;font-weight:900;margin-left:.3em}#navbar-main-elements li.nav-item i{font-size:.7rem;padding-left:2px;vertical-align:middle}.bd-header label.sidebar-toggle{align-items:center;color:var(--pst-color-muted);cursor:pointer;display:flex;font-size:var(--pst-font-size-icon);margin-bottom:0}.bd-header label.primary-toggle{padding-right:1rem}@media (min-width:960px){.bd-header label.primary-toggle{display:none}}.bd-header label.secondary-toggle{padding-left:1rem}@media (min-width:1200px){.bd-header label.secondary-toggle{display:none}}.bd-header .navbar-header-items{display:none}@media (min-width:960px){.bd-header .navbar-header-items{display:inherit}}.navbar-persistent--mobile{margin-left:auto}@media (min-width:960px){.navbar-persistent--mobile{display:none}}.navbar-persistent--container{display:none}@media (min-width:960px){.navbar-persistent--container{display:flex}}.bd-header-article__inner{align-items:center;display:flex;min-height:var(--pst-header-article-height);padding:0 .5rem}.bd-header-article__inner .bd-header-article__end{margin-left:auto}.bd-sidebar-primary{background-color:var(--pst-color-background);border-right:1px solid var(--pst-color-border);display:flex;flex:0 0 25%;flex-direction:column;font-size:var(--pst-sidebar-font-size-mobile);gap:1rem;max-height:calc(100vh - var(--pst-header-height));max-width:25%;overflow-y:auto;padding:2rem 1rem 1rem;position:sticky;top:var(--pst-header-height)}.bd-sidebar-primary::-webkit-scrollbar{height:.5rem;width:.5rem}.bd-sidebar-primary::-webkit-scrollbar-thumb{background:var(--pst-color-text-muted);border-radius:.25rem}.bd-sidebar-primary::-webkit-scrollbar-track{background:transparent}.bd-sidebar-primary::-webkit-scrollbar-thumb{background:var(--pst-color-on-surface)}.bd-sidebar-primary::-webkit-scrollbar-thumb:hover,.bd-sidebar-primary:hover::-webkit-scrollbar-thumb{background:var(--pst-color-text-muted)}@media (min-width:960px){.bd-sidebar-primary{font-size:var(--pst-sidebar-font-size)}}.bd-sidebar-primary.no-sidebar{border-right:0}@media (min-width:960px){.bd-sidebar-primary.hide-on-wide{display:none}}.bd-sidebar-primary .sidebar-end-items__item,.bd-sidebar-primary .sidebar-start-items__item{padding:.5rem 0}.bd-sidebar-primary .sidebar-header-items{display:flex;flex-direction:column}.bd-sidebar-primary .sidebar-header-items .sidebar-header-items__title{color:var(--pst-color-text-base);font-size:var(--pst-sidebar-header-font-size);font-weight:var(--pst-sidebar-header-font-weight);margin-bottom:.5rem}.bd-sidebar-primary .sidebar-header-items .nav-item.dropdown button{display:none}.bd-sidebar-primary .sidebar-header-items .nav-item.dropdown .dropdown-menu{background-color:inherit;border:none;display:flex;flex-direction:column;font-size:inherit;margin:0;padding:0}.bd-sidebar-primary .sidebar-header-items .sidebar-header-items__center{display:flex;flex-direction:column}.bd-sidebar-primary .sidebar-header-items .sidebar-header-items__end{align-items:center;display:flex;gap:.5rem}@media (min-width:960px){.bd-sidebar-primary .sidebar-header-items{display:none}}.bd-sidebar-primary .sidebar-start-items{border-top:1px solid var(--pst-color-border)}@media (min-width:960px){.bd-sidebar-primary .sidebar-start-items{border-top:none}}.bd-sidebar-primary .sidebar-end-items{margin-bottom:1em;margin-top:auto}.bd-sidebar-primary .list-caption{list-style:none;padding-left:0}.bd-sidebar-primary li{position:relative}.bd-sidebar-primary li.has-children>.reference{padding-right:30px}.bd-sidebar-primary label.toctree-toggle{align-items:center;cursor:pointer;display:flex;height:30px;justify-content:center;position:absolute;right:0;top:0;width:30px}.bd-sidebar-primary label.toctree-toggle:hover{background:var(--pst-color-surface)}.bd-sidebar-primary label.toctree-toggle i{display:inline-block;font-size:.75rem;text-align:center}.bd-sidebar-primary label.toctree-toggle i:hover{color:var(--pst-color-primary)}.bd-sidebar-primary .label-parts{height:100%;width:100%}.bd-sidebar-primary .label-parts:hover{background:none}.bd-sidebar-primary .label-parts i{position:absolute;right:0;top:.3em;width:30px}nav.bd-links{margin-right:-1rem}@media (min-width:960px){nav.bd-links{display:block}}nav.bd-links ul{list-style:none}nav.bd-links ul ul{padding:0 0 0 1rem}nav.bd-links li>a{color:var(--pst-color-text-muted);display:block;padding:.25rem 0}nav.bd-links li>a:hover{background-color:transparent;color:var(--pst-color-primary);text-decoration:none}nav.bd-links li>a.reference.external:after{content:var(--pst-icon-external-link);font-family:Font Awesome\ 6 Free;font-size:.75em;font-weight:900;margin-left:.3em}nav.bd-links .active:hover>a,nav.bd-links .active>a{color:var(--pst-color-primary);font-weight:600}nav.bd-links p.bd-links__title{font-size:var(--pst-sidebar-header-font-size);font-weight:var(--pst-sidebar-header-font-weight);margin-bottom:.5rem}nav.bd-links p.caption{color:var(--pst-color-text-base);font-weight:var(--pst-sidebar-header-font-weight);margin-bottom:.5em;margin-top:1.25em;position:relative}nav.bd-links p.caption:first-child{margin-top:0}.bd-sidebar-secondary{background-color:var(--pst-color-background);display:flex;flex-direction:column;flex-shrink:0;font-size:var(--pst-sidebar-font-size-mobile);max-height:calc(100vh - var(--pst-header-height));order:2;overflow-y:auto;padding:2rem 1rem 1rem;position:sticky;top:var(--pst-header-height);width:var(--pst-sidebar-secondary)}@media (min-width:1200px){.bd-sidebar-secondary{font-size:var(--pst-sidebar-secondary-font-size)}}.bd-sidebar-secondary .onthispage{color:var(--pst-color-text-base);font-weight:var(--pst-sidebar-header-font-weight)}.bd-sidebar-secondary::-webkit-scrollbar{height:.5rem;width:.5rem}.bd-sidebar-secondary::-webkit-scrollbar-thumb{background:var(--pst-color-text-muted);border-radius:.25rem}.bd-sidebar-secondary::-webkit-scrollbar-track{background:transparent}.bd-sidebar-secondary::-webkit-scrollbar-thumb{background:var(--pst-color-on-surface)}.bd-sidebar-secondary::-webkit-scrollbar-thumb:hover,.bd-sidebar-secondary:hover::-webkit-scrollbar-thumb{background:var(--pst-color-text-muted)}.toc-item{padding:.5rem}@media (min-width:1200px){.toc-item{border-left:1px solid var(--pst-color-border);padding-left:1rem}}.toc-item i{padding-right:.5rem}.section-nav{border-bottom:none;padding-left:0}.section-nav ul{padding-left:1rem}div#searchbox p.highlight-link{margin-bottom:0}div#searchbox p.highlight-link a:before{color:unset;content:var(--pst-icon-search-minus);font-family:Font Awesome\ 6 Free;font-weight:900;margin-right:0;padding-right:.5rem}input.sidebar-toggle{display:none}label.overlay{background-color:#000;height:0;left:0;opacity:.5;position:fixed;top:0;transition:opacity .2s ease-out;width:0;z-index:1040}input#__primary:checked+label.overlay.overlay-primary,input#__secondary:checked+label.overlay.overlay-secondary{height:100vh;width:100vw}input#__primary:checked~.bd-container .bd-sidebar-primary{margin-left:0;visibility:visible}input#__secondary:checked~.bd-container .bd-sidebar-secondary{margin-right:0;visibility:visible}@media (min-width:960px){label.sidebar-toggle.primary-toggle{display:none}input#__primary:checked+label.overlay.overlay-primary{height:0;width:0}.bd-sidebar-primary{margin-left:0;visibility:visible}}@media (max-width:959.98px){.bd-sidebar-primary{flex-grow:0.75;height:100vh;left:0;margin-left:-75%;max-height:100vh;max-width:350px;position:fixed;top:0;transition:visibility .2s ease-out,margin .2s ease-out;visibility:hidden;width:75%;z-index:1050}}@media (max-width:1199.98px){.bd-sidebar-secondary{flex-grow:0.75;height:100vh;margin-right:-75%;max-height:100vh;max-width:350px;position:fixed;right:0;top:0;transition:visibility .2s ease-out,margin .2s ease-out;visibility:hidden;width:75%;z-index:1050}}#navbar-icon-links i.fa-brands,#navbar-icon-links i.fa-regular,#navbar-icon-links i.fa-solid{font-size:var(--pst-font-size-icon);font-style:normal;vertical-align:middle}#navbar-icon-links i.fa-square-twitter:before{color:#55acee}#navbar-icon-links i.fa-square-gitlab:before{color:#548}#navbar-icon-links i.fa-bitbucket:before{color:#0052cc}#navbar-icon-links img.icon-link-image{border-radius:.2rem;height:1.5em}#navbar-icon-links li:first-child a{padding-left:0}#navbar-icon-links a span{align-items:center;display:flex}@media (max-width:1199.98px){#navbar-icon-links{flex-direction:row}#navbar-icon-links a{padding:0 .5rem}}.navbar-brand{align-items:center;display:flex;gap:.5rem;height:var(--pst-header-height);margin:0;padding:0;position:relative;width:auto}.navbar-brand p{margin-bottom:0}.navbar-brand img{height:100%;max-width:100%;width:auto}.navbar-nav ul{display:block;list-style:none}.navbar-nav ul ul{padding:0 0 0 1rem}.navbar-nav li{display:flex;flex-direction:column}.navbar-nav li a{align-items:center;color:var(--pst-color-text-muted);display:flex;height:100%;padding-bottom:.25rem;padding-top:.25rem}.navbar-nav li a:hover{border-style:none;text-decoration-line:none}.navbar-nav li a:focus,.navbar-nav li a:hover,.navbar-nav li.current>a{color:var(--pst-color-primary)}.navbar-nav li.current>a{font-weight:600}.navbar-nav .toctree-checkbox{display:none;position:absolute}.navbar-nav .toctree-checkbox~ul{display:none}.navbar-nav .toctree-checkbox~label i{transform:rotate(0deg)}.navbar-nav .toctree-checkbox:checked~ul{display:block}.navbar-nav .toctree-checkbox:checked~label i{transform:rotate(180deg)}.bd-header .navbar-nav>p.sidebar-header-items__title{display:none}.prev-next-area{width:100%}.prev-next-area p{line-height:1.3em;margin:0 .3em}.prev-next-area i{font-size:1.2em}.prev-next-area a{align-items:center;border:none;color:var(--pst-color-text-muted);display:flex;max-width:45%;overflow-x:hidden;padding:10px;text-decoration:none}.prev-next-area a p.prev-next-title{color:var(--pst-color-primary);font-size:1.1em;font-weight:var(--pst-font-weight-heading)}.prev-next-area a:hover p.prev-next-title{text-decoration:underline}.prev-next-area a .prev-next-info{flex-direction:column;margin:0 .5em}.prev-next-area a .prev-next-info .prev-next-subtitle{text-transform:capitalize}.prev-next-area a.left-prev{float:left}.prev-next-area a.right-next{float:right}.prev-next-area a.right-next div.prev-next-info{text-align:right}.bd-search{margin-left:-15px;margin-right:-15px;padding:1rem 15px;position:relative}.bd-search .icon{color:var(--pst-color-border);left:25px;position:absolute}.bd-search i.fa-solid.fa-magnifying-glass{color:var(--pst-color-text-muted);left:1.6rem;position:absolute}.bd-search input{background-color:var(--pst-color-background);border:1px solid var(--pst-color-border);border-radius:.25rem;color:var(--pst-color-text-base);padding-left:2.5rem}.bd-search input::placeholder{color:var(--pst-color-border)}.bd-search input:active,.bd-search input:focus{background-color:var(--pst-color-background);color:var(--pst-color-text-base)}.bd-search input::-webkit-search-cancel-button,.bd-search input::-webkit-search-decoration{-webkit-appearance:none;appearance:none}.bd-search .search-button__kbd-shortcut{color:var(--pst-color-border);position:absolute;right:2em}.search-button{align-content:center;align-items:center;color:var(--pst-color-text-muted);display:flex;padding:0}.search-button:hover{color:var(--pst-color-primary)}.search-button i{font-size:1.3rem}.search-button__overlay,.search-button__search-container{display:none}.search-button__wrapper.show .search-button__search-container{display:flex;left:50%;margin-top:.5rem;max-width:800px;position:fixed;right:1rem;top:30%;transform:translate(-50%,-50%);width:90%;z-index:1050}.search-button__wrapper.show .search-button__overlay{background-color:#000;display:flex;height:100%;left:0;opacity:.5;position:fixed;top:0;width:100%;z-index:1040}.search-button__wrapper.show form.bd-search{flex-grow:1;padding-bottom:0;padding-top:0}.search-button__wrapper.show i,.search-button__wrapper.show input{font-size:var(--pst-font-size-icon)}.theme-switch-button{border-color:var(--pst-color-on-background);font-size:calc(var(--pst-font-size-icon) - .1rem);margin:0 -.5rem;padding:0}.theme-switch-button span{color:var(--pst-color-text-muted);display:none;padding:.5rem}.theme-switch-button span:active,.theme-switch-button span:focus,.theme-switch-button span:hover{text-decoration:none}.theme-switch-button:active,.theme-switch-button:hover{background-color:var(--pst-color-on-surface)!important;border-color:var(--pst-color-on-background)!important}.theme-switch-button:active a,.theme-switch-button:hover a{color:var(--pst-color-text-muted)}.bd-sidebar-primary .theme-switch-button{border-color:var(--pst-color-background)}.bd-sidebar-primary .theme-switch-button:active,.bd-sidebar-primary .theme-switch-button:hover{border-color:var(--pst-color-background)!important}html[data-mode=auto] .theme-switch-button span[data-mode=auto],html[data-mode=dark] .theme-switch-button span[data-mode=dark],html[data-mode=light] .theme-switch-button span[data-mode=light]{display:flex}button.version-switcher__button{border-color:var(--pst-color-border);color:var(--pst-color-text-base);margin-bottom:1em}@media (min-width:960px){button.version-switcher__button{margin-bottom:unset}}button.version-switcher__button:hover{color:var(--pst-color-text-base)}.version-switcher__menu{border-color:var(--pst-color-border)}.version-switcher__menu a.list-group-item{background-color:var(--pst-color-on-background);border-color:var(--pst-color-border);color:var(--pst-color-text-base)}.version-switcher__menu a.list-group-item:hover{background-color:var(--pst-color-surface)}.version-switcher__menu a.list-group-item.active{color:var(--pst-color-primary)}.version-switcher__menu a.list-group-item.active span:before{background-color:var(--pst-color-primary);content:"";height:100%;left:0;opacity:.1;position:absolute;top:0;width:100%}.version-switcher__menu,button.version-switcher__button{font-size:1.1em}@media (min-width:960px){.version-switcher__menu,button.version-switcher__button{font-size:unset}}nav.page-toc{margin-bottom:1rem}nav.page-toc ul>li{font-size:.95em}.bd-toc .nav .nav,.list-caption .nav{display:none}.bd-toc .nav .nav.visible,.bd-toc .nav>.active>ul,.list-caption .nav.visible,.list-caption>.active>ul,.toc-entry{display:block}.toc-entry a.nav-link{color:var(--pst-color-text-muted);display:block;margin-left:-1rem;padding:.125rem 0 .125rem 1rem}.toc-entry a.nav-link:hover{color:var(--pst-color-primary);text-decoration:none}.toc-entry a.nav-link.active{background-color:transparent;border-left:2px solid var(--pst-color-primary);color:var(--pst-color-primary);font-weight:600}div.deprecated,div.versionadded,div.versionchanged{background-color:var(--pst-color-on-background);border-left:.2rem solid;border-color:var(--pst-color-info);border-radius:.25rem;box-shadow:0 .2rem .5rem var(--pst-color-shadow),0 0 .0625rem var(--pst-color-shadow)!important;margin:1.5625em auto;overflow:hidden;padding:0 .6rem;page-break-inside:avoid;position:relative;transition:color .25s,background-color .25s,border-color .25s;vertical-align:middle}div.deprecated>p,div.versionadded>p,div.versionchanged>p{margin-bottom:.6rem;margin-top:.6rem}div.deprecated>p:before,div.versionadded>p:before,div.versionchanged>p:before{background-color:var(--pst-color-info);content:"";height:100%;left:0;opacity:.1;pointer-events:none;position:absolute;top:0;width:100%}div.versionadded{border-color:var(--pst-color-success)}div.versionadded p:before{background-color:var(--pst-color-success)}div.versionchanged{border-color:var(--pst-color-warning)}div.versionchanged p:before{background-color:var(--pst-color-warning)}div.deprecated{border-color:var(--pst-color-danger)}div.deprecated p:before{background-color:var(--pst-color-danger)}span.versionmodified{font-weight:600}span.versionmodified:before{color:var(--pst-color-info);content:var(--pst-icon-versionmodified-default);font-family:Font Awesome\ 6 Free;font-style:normal;font-weight:900;margin-right:.6rem}span.versionmodified.added:before{color:var(--pst-color-success);content:var(--pst-icon-versionmodified-added)}span.versionmodified.changed:before{color:var(--pst-color-warning);content:var(--pst-icon-versionmodified-changed)}span.versionmodified.deprecated:before{color:var(--pst-color-danger);content:var(--pst-icon-versionmodified-deprecated)}.sidebar-indices-items{border-top:1px solid var(--pst-color-border);display:flex;flex-direction:column}@media (min-width:960px){.sidebar-indices-items{border-top:none}}.sidebar-indices-items .sidebar-indices-items__title{color:var(--pst-color-text-base);font-size:var(--pst-sidebar-header-font-size);font-weight:var(--pst-sidebar-header-font-weight);margin-bottom:.5rem}.sidebar-indices-items ul.indices-link{list-style:none;margin-right:-1rem;padding:0}.sidebar-indices-items ul.indices-link li>a{color:var(--pst-color-text-muted);display:block;padding:.25rem 0}.sidebar-indices-items ul.indices-link li>a:hover{background-color:transparent;color:var(--pst-color-primary);text-decoration:none}.bd-sidebar-primary div#rtd-footer-container{bottom:-1rem;margin:-1rem;position:sticky}.bd-sidebar-primary div#rtd-footer-container .rst-versions.rst-badge{font-family:var(--pst-font-family-base);font-size:.9em;max-width:unset;position:unset}.bd-sidebar-primary div#rtd-footer-container .rst-versions.rst-badge .rst-current-version{align-items:center;background-color:var(--pst-color-background);border-top:1px solid var(--pst-color-border);color:var(--pst-color-success);display:flex;gap:.2rem;height:2.5rem;transition:background-color .2s ease-out}.bd-sidebar-primary div#rtd-footer-container .rst-versions.rst-badge .fa.fa-book{color:var(--pst-color-text-muted);margin-right:auto}.bd-sidebar-primary div#rtd-footer-container .rst-versions.rst-badge .fa.fa-book:after{color:var(--pst-color-text-base);content:"Read The Docs";font-family:var(--pst-font-family-base);font-weight:var(--pst-font-weight-heading)}.bd-sidebar-primary div#rtd-footer-container .rst-versions.rst-badge .fa.fa-caret-down{color:var(--pst-color-text-muted)}.bd-sidebar-primary div#rtd-footer-container .rst-versions.rst-badge.shift-up .rst-current-version{border-bottom:1px solid var(--pst-color-border)}.bd-sidebar-primary div#rtd-footer-container .rst-other-versions{background-color:var(--pst-color-surface);color:var(--pst-color-text-base)}.bd-sidebar-primary div#rtd-footer-container .rst-other-versions dl dd a{color:var(--pst-color-text-muted)}.bd-sidebar-primary div#rtd-footer-container .rst-other-versions hr{background-color:var(--pst-color-border)}.bd-sidebar-primary div#rtd-footer-container .rst-other-versions small a{color:var(--pst-color-link)}.bd-sidebar-primary div#rtd-footer-container .rst-other-versions input{background-color:var(--pst-color-surface);border:1px solid var(--pst-color-border);padding-left:.5rem}.admonition,div.admonition{background-color:var(--pst-color-on-background);border-left:.2rem solid;border-color:var(--pst-color-info);border-radius:.25rem;box-shadow:0 .2rem .5rem var(--pst-color-shadow),0 0 .0625rem var(--pst-color-shadow)!important;margin:1.5625em auto;overflow:hidden;padding:0 .6rem .8rem;page-break-inside:avoid}.admonition :last-child,div.admonition :last-child{margin-bottom:0}.admonition p.admonition-title~*,div.admonition p.admonition-title~*{margin-left:1.4rem;margin-right:1.4rem}.admonition>ol,.admonition>ul,div.admonition>ol,div.admonition>ul{margin-left:1em}.admonition>.admonition-title,div.admonition>.admonition-title{font-weight:var(--pst-font-weight-heading);margin:0 -.6rem;padding:.4rem .6rem .4rem 2rem;position:relative}.admonition>.admonition-title:after,div.admonition>.admonition-title:after{color:var(--pst-color-info);content:var(--pst-icon-admonition-default);font-family:Font Awesome\ 6 Free;font-weight:900;height:1rem;left:.5rem;opacity:1;position:absolute;width:1rem}.admonition>.admonition-title:before,div.admonition>.admonition-title:before{background-color:var(--pst-color-info);content:"";height:100%;left:0;opacity:.1;pointer-events:none;position:absolute;top:0;width:100%}.admonition>.admonition-title+*,div.admonition>.admonition-title+*{margin-top:.4em}.admonition.attention,div.admonition.attention{border-color:var(--pst-color-attention)}.admonition.attention>.admonition-title:before,div.admonition.attention>.admonition-title:before{background-color:var(--pst-color-attention)}.admonition.attention>.admonition-title:after,div.admonition.attention>.admonition-title:after{color:var(--pst-color-attention);content:var(--pst-icon-admonition-attention)}.admonition.caution,div.admonition.caution{border-color:var(--pst-color-warning)}.admonition.caution>.admonition-title:before,div.admonition.caution>.admonition-title:before{background-color:var(--pst-color-warning)}.admonition.caution>.admonition-title:after,div.admonition.caution>.admonition-title:after{color:var(--pst-color-warning);content:var(--pst-icon-admonition-caution)}.admonition.warning,div.admonition.warning{border-color:var(--pst-color-warning)}.admonition.warning>.admonition-title:before,div.admonition.warning>.admonition-title:before{background-color:var(--pst-color-warning)}.admonition.warning>.admonition-title:after,div.admonition.warning>.admonition-title:after{color:var(--pst-color-warning);content:var(--pst-icon-admonition-warning)}.admonition.danger,div.admonition.danger{border-color:var(--pst-color-danger)}.admonition.danger>.admonition-title:before,div.admonition.danger>.admonition-title:before{background-color:var(--pst-color-danger)}.admonition.danger>.admonition-title:after,div.admonition.danger>.admonition-title:after{color:var(--pst-color-danger);content:var(--pst-icon-admonition-danger)}.admonition.error,div.admonition.error{border-color:var(--pst-color-danger)}.admonition.error>.admonition-title:before,div.admonition.error>.admonition-title:before{background-color:var(--pst-color-danger)}.admonition.error>.admonition-title:after,div.admonition.error>.admonition-title:after{color:var(--pst-color-danger);content:var(--pst-icon-admonition-error)}.admonition.hint,div.admonition.hint{border-color:var(--pst-color-success)}.admonition.hint>.admonition-title:before,div.admonition.hint>.admonition-title:before{background-color:var(--pst-color-success)}.admonition.hint>.admonition-title:after,div.admonition.hint>.admonition-title:after{color:var(--pst-color-success);content:var(--pst-icon-admonition-hint)}.admonition.tip,div.admonition.tip{border-color:var(--pst-color-success)}.admonition.tip>.admonition-title:before,div.admonition.tip>.admonition-title:before{background-color:var(--pst-color-success)}.admonition.tip>.admonition-title:after,div.admonition.tip>.admonition-title:after{color:var(--pst-color-success);content:var(--pst-icon-admonition-tip)}.admonition.important,div.admonition.important{border-color:var(--pst-color-attention)}.admonition.important>.admonition-title:before,div.admonition.important>.admonition-title:before{background-color:var(--pst-color-attention)}.admonition.important>.admonition-title:after,div.admonition.important>.admonition-title:after{color:var(--pst-color-attention);content:var(--pst-icon-admonition-important)}.admonition.note,div.admonition.note{border-color:var(--pst-color-info)}.admonition.note>.admonition-title:before,div.admonition.note>.admonition-title:before{background-color:var(--pst-color-info)}.admonition.note>.admonition-title:after,div.admonition.note>.admonition-title:after{color:var(--pst-color-info);content:var(--pst-icon-admonition-note)}.admonition.seealso,div.admonition.seealso{border-color:var(--pst-color-success)}.admonition.seealso>.admonition-title:before,div.admonition.seealso>.admonition-title:before{background-color:var(--pst-color-success)}.admonition.seealso>.admonition-title:after,div.admonition.seealso>.admonition-title:after{color:var(--pst-color-success);content:var(--pst-icon-admonition-seealso)}.admonition.admonition-todo,div.admonition.admonition-todo{border-color:var(--pst-color-border)}.admonition.admonition-todo>.admonition-title:before,div.admonition.admonition-todo>.admonition-title:before{background-color:var(--pst-color-border)}.admonition.admonition-todo>.admonition-title:after,div.admonition.admonition-todo>.admonition-title:after{color:var(--pst-color-border);content:var(--pst-icon-admonition-todo)}.admonition.sidebar,div.admonition.sidebar{border-width:0 0 0 .2rem;clear:both;float:right;margin-left:.5rem;margin-top:0;max-width:40%}.admonition.sidebar.attention,.admonition.sidebar.important,div.admonition.sidebar.attention,div.admonition.sidebar.important{border-color:var(--pst-color-attention)}.admonition.sidebar.caution,.admonition.sidebar.warning,div.admonition.sidebar.caution,div.admonition.sidebar.warning{border-color:var(--pst-color-warning)}.admonition.sidebar.danger,.admonition.sidebar.error,div.admonition.sidebar.danger,div.admonition.sidebar.error{border-color:var(--pst-color-danger)}.admonition.sidebar.hint,.admonition.sidebar.seealso,.admonition.sidebar.tip,div.admonition.sidebar.hint,div.admonition.sidebar.seealso,div.admonition.sidebar.tip{border-color:var(--pst-color-success)}.admonition.sidebar.note,.admonition.sidebar.todo,div.admonition.sidebar.note,div.admonition.sidebar.todo{border-color:var(--pst-color-info)}.admonition.sidebar p.admonition-title~*,div.admonition.sidebar p.admonition-title~*{margin-left:0;margin-right:0}aside.topic,div.topic,div.topic.contents,nav.contents{background-color:var(--pst-color-surface);border-color:var(--pst-color-border);border-radius:.25rem;box-shadow:0 .2rem .5rem var(--pst-color-shadow),0 0 .0625rem var(--pst-color-shadow)!important;display:flex;flex-direction:column;padding:1rem 1.25rem}aside.topic .topic-title,div.topic .topic-title,div.topic.contents .topic-title,nav.contents .topic-title{margin:0 0 .5rem}aside.topic ul.simple,div.topic ul.simple,div.topic.contents ul.simple,nav.contents ul.simple{padding-left:1rem}aside.topic ul.simple ul,div.topic ul.simple ul,div.topic.contents ul.simple ul,nav.contents ul.simple ul{padding-left:2em}aside.sidebar{background-color:var(--pst-color-surface);border:1px solid var(--pst-color-border);border-radius:.25rem;margin-left:.5rem;padding:0}aside.sidebar>:last-child{padding-bottom:1rem}aside.sidebar p.sidebar-title{border-bottom:1px solid var(--pst-color-border);font-family:var(--pst-font-family-heading);font-weight:var(--pst-font-weight-heading);margin-bottom:0;padding-bottom:.5rem;padding-top:.5rem;position:relative}aside.sidebar>:not(.sidebar-title):first-child,aside.sidebar>p.sidebar-title+*{margin-top:1rem}aside.sidebar>*{padding-left:1rem;padding-right:1rem}p.rubric{display:flex;flex-direction:column}.seealso dd{margin-bottom:0;margin-top:0}table.field-list{border-collapse:separate;border-spacing:10px;margin-left:1px}table.field-list th.field-name{background-color:var(--pst-color-surface);padding:1px 8px 1px 5px;white-space:nowrap}table.field-list td.field-body p{font-style:italic}table.field-list td.field-body p>strong{font-style:normal}table.field-list td.field-body blockquote{border-left:none;margin:0 0 .3em;padding-left:30px}.table.autosummary td:first-child{white-space:nowrap}.sig{font-family:var(--pst-font-family-monospace)}.sig-inline.c-texpr,.sig-inline.cpp-texpr{font-family:unset}.sig.c .k,.sig.c .kt,.sig.c .m,.sig.c .s,.sig.c .sc,.sig.cpp .k,.sig.cpp .kt,.sig.cpp .m,.sig.cpp .s,.sig.cpp .sc{color:var(--pst-color-text-base)}.sig-name{color:var(--pst-color-inline-code)}dt:target,span.highlighted{background-color:var(--pst-color-target)}.viewcode-back{font-family:var(--pst-font-family-base)}.viewcode-block:target{background-color:var(--pst-color-target);border-bottom:1px solid var(--pst-color-border);border-top:1px solid var(--pst-color-border);position:relative}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dd{margin-left:2rem}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dd>dl.simple>dt{display:flex}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dl.field-list{display:grid;grid-template-columns:unset}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dt.field-even,dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dt.field-odd{background-color:var(--pst-color-surface);margin-bottom:.1rem;margin-top:.2rem}div.highlight,div.literal-block-wrapper,div[class*=highlight-]{border-radius:.25rem;display:flex;flex-direction:column;width:unset}div.literal-block-wrapper{border:1px solid var(--pst-color-border);border-radius:.25rem}div.literal-block-wrapper div.code-block-caption{border-bottom:1px solid var(--pst-color-border);font-size:1rem;font-weight:var(--pst-font-weight-caption);margin:0;padding:.5rem}div.literal-block-wrapper div.code-block-caption a.headerlink{font-size:inherit}div.literal-block-wrapper div[class*=highlight-]{border-radius:0;margin:0}div.literal-block-wrapper div[class*=highlight-] pre{border:none;box-shadow:none}code.literal{background-color:var(--pst-color-surface);border:1px solid var(--pst-color-on-surface);border-radius:.25rem;padding:.1rem .25rem}figure a.headerlink{font-size:inherit;position:absolute}figure:hover a.headerlink{visibility:visible}figure figcaption{color:var(--pst-color-text-muted);font-family:var(--pst-font-family-heading);font-weight:var(--pst-font-weight-caption);margin-left:auto;margin-right:auto}figure figcaption table.table{margin-left:auto;margin-right:auto;width:fit-content}dt.label>span.brackets:not(:only-child):before{content:"["}dt.label>span.brackets:not(:only-child):after{content:"]"}a.footnote-reference{font-size:small;vertical-align:super}aside.footnote{margin-bottom:.5rem}aside.footnote:last-child{margin-bottom:1rem}aside.footnote span.backrefs,aside.footnote span.label{font-weight:700}aside.footnote:target{background-color:var(--pst-color-target)}div.doctest>div.highlight span.gp,span.linenos,table.highlighttable td.linenos{user-select:none;-webkit-user-select:text;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}dd{margin-bottom:10px;margin-left:30px;margin-top:3px}ol li>p:first-child,ul li>p:first-child{margin-bottom:.25rem;margin-top:.25rem}blockquote{border-left:.25em solid var(--pst-color-border);border-radius:.25rem;padding:1em;position:relative}blockquote,blockquote p{color:var(--pst-color-text-muted)}blockquote .line-block{margin:0}blockquote p:last-child{margin-bottom:0}blockquote:before{background-color:var(--pst-color-border);content:"";height:100%;left:0;opacity:.1;pointer-events:none;position:absolute;top:0;width:100%;z-index:-1}span.guilabel{border:1px solid var(--pst-color-info);border-radius:4px;color:var(--pst-color-info);font-size:80%;font-weight:700;margin:auto 2px;padding:2.4px 6px;position:relative}span.guilabel:before{background-color:var(--pst-color-info);content:"";height:100%;left:0;opacity:.1;pointer-events:none;position:absolute;top:0;width:100%}a.reference.download:before{color:var(--pst-color-text-muted);content:var(--pst-icon-download);font-family:Font Awesome\ 6 Free;font-size:.8em;font-weight:600;padding:0 .25em}table{display:table;margin-left:auto;margin-right:auto;max-width:100%;overflow:auto;width:fit-content}table::-webkit-scrollbar{height:.5rem;width:.5rem}table::-webkit-scrollbar-thumb{background:var(--pst-color-text-muted);border-radius:.25rem}table::-webkit-scrollbar-track{background:transparent}table::-webkit-scrollbar-thumb{background:var(--pst-color-on-surface)}table::-webkit-scrollbar-thumb:hover,table:hover::-webkit-scrollbar-thumb{background:var(--pst-color-text-muted)}table.table-right{margin-right:0}table.table-left{margin-left:0}table caption{caption-side:top;color:var(--pst-color-text-muted);text-align:center}td.text-align\:left,th.text-align\:left{text-align:left}td.text-align\:right,th.text-align\:right{text-align:right}td.text-align\:center,th.text-align\:center{text-align:center}.toctree-wrapper p.caption{font-size:1.5em;margin-bottom:0}.toctree-wrapper>ul{padding-left:0}.toctree-wrapper li[class^=toctree-l]{list-style:none;margin-bottom:.2em}.toctree-wrapper li[class^=toctree-l]>a{font-size:1.1em;list-style:none}.toctree-wrapper li[class^=toctree-l]>ul{list-style:none;padding-inline-start:1.5em}.toctree-wrapper .toctree-l1>a{font-size:1.3em}div.topic.contents ul.simple,nav.contents ul.simple{list-style:none;padding-left:0}div.math,span.math{align-items:center;display:flex;max-width:100%;overflow:hidden}span.math{display:inline-flex}div.math{flex-direction:row-reverse;gap:.5em}div.math span.eqno a.headerlink{font-size:1em;position:relative}div.math mjx-container{flex-grow:1;overflow-x:auto;padding-bottom:.2rem}div.math mjx-container::-webkit-scrollbar{height:.5rem;width:.5rem}div.math mjx-container::-webkit-scrollbar-thumb{background:var(--pst-color-text-muted);border-radius:.25rem}div.math mjx-container::-webkit-scrollbar-track{background:transparent}div.math mjx-container::-webkit-scrollbar-thumb{background:var(--pst-color-on-surface)}div.math mjx-container::-webkit-scrollbar-thumb:hover,div.math mjx-container:hover::-webkit-scrollbar-thumb{background:var(--pst-color-text-muted)}.bd-sidebar-primary .sidebar-start-items>h2,.bd-sidebar-primary .sidebar-start-items>h3{margin-top:1rem}.bd-sidebar-primary .sidebar-start-items>ul{list-style:none;padding-left:0}article.bd-article>section+div.section{font-size:1.2em}article.bd-article>section+div.section span:first-child:before{content:var(--pst-icon-angle-left);font-family:Font Awesome\ 6 Free;font-weight:800}article.bd-article>section+div.section span:last-child:after{content:var(--pst-icon-angle-right);font-family:Font Awesome\ 6 Free;font-weight:800}.ablog-post ul.ablog-archive{padding-left:0}.docutils.container{margin-left:unset;margin-right:unset;max-width:unset;padding-left:unset;padding-right:unset;width:unset}div.highlight button.copybtn{align-items:center;background-color:unset;background-color:var(--pst-color-surface);border:none;display:flex;justify-content:center}div.highlight button.copybtn:not(.success){color:var(--pst-color-muted)}div.highlight button.copybtn:hover:not(.success){color:var(--pst-color-text)}div.highlight button.copybtn.o-tooltip--left:after{background-color:var(--pst-color-surface);color:var(--pst-color-text)}#ethical-ad-placement .ethical-footer a,#ethical-ad-placement .ethical-footer a:active,#ethical-ad-placement .ethical-footer a:hover,#ethical-ad-placement .ethical-footer a:visited,#ethical-ad-placement .ethical-sidebar a,#ethical-ad-placement .ethical-sidebar a:active,#ethical-ad-placement .ethical-sidebar a:hover,#ethical-ad-placement .ethical-sidebar a:visited{color:var(--pst-color-text-base)}#ethical-ad-placement .ethical-footer,#ethical-ad-placement .ethical-sidebar{background-color:var(--pst-color-background);border:1px solid var(--pst-color-border);border-radius:5px;color:var(--pst-color-text-base);font-size:14px;line-height:20px}html[data-theme=dark] .bd-content div.jupyter_container{background-color:var(--pst-color-surface);border:1px solid var(--pst-color-border);border-radius:.25rem}html[data-theme=dark] .bd-content div.jupyter_container div.highlight,html[data-theme=dark] .bd-content div.jupyter_container div.output{border-radius:.25rem}html[data-theme=dark] .bd-content div.jupyter_container div.highlight{background-color:var(--pst-color-surface)}.xr-wrap[hidden]{display:block!important}html[data-theme=light]{--pst-color-primary:#459db9;--pst-color-primary-text:#fff;--pst-color-primary-highlight:#306e81;--sd-color-primary:var(--pst-color-primary);--sd-color-primary-text:var(--pst-color-primary-text);--sd-color-primary-highlight:var(--pst-color-primary-highlight);--pst-color-secondary:#ee9040;--pst-color-secondary-text:#fff;--pst-color-secondary-highlight:#cf6912;--sd-color-secondary:var(--pst-color-secondary);--sd-color-secondary-text:var(--pst-color-secondary-text);--sd-color-secondary-highlight:var(--pst-color-secondary-highlight);--pst-color-success:#28a745;--pst-color-success-text:#fff;--pst-color-success-highlight:#19692c;--sd-color-success:var(--pst-color-success);--sd-color-success-text:var(--pst-color-success-text);--sd-color-success-highlight:var(--pst-color-success-highlight);--pst-color-info:#459db9;--pst-color-info-text:#fff;--pst-color-info-highlight:#306e81;--sd-color-info:var(--pst-color-info);--sd-color-info-text:var(--pst-color-info-text);--sd-color-info-highlight:var(--pst-color-info-highlight);--pst-color-warning:#ee9040;--pst-color-warning-text:#fff;--pst-color-warning-highlight:#cf6912;--sd-color-warning:var(--pst-color-warning);--sd-color-warning-text:var(--pst-color-warning-text);--sd-color-warning-highlight:var(--pst-color-warning-highlight);--pst-color-danger:#dc3545;--pst-color-danger-text:#fff;--pst-color-danger-highlight:#a71d2a;--sd-color-danger:var(--pst-color-danger);--sd-color-danger-text:var(--pst-color-danger-text);--sd-color-danger-highlight:var(--pst-color-danger-highlight);--pst-color-light:#c9c9c9;--pst-color-light-text:#000;--pst-color-light-highlight:#a3a3a3;--sd-color-light:var(--pst-color-light);--sd-color-light-text:var(--pst-color-light-text);--sd-color-light-highlight:var(--pst-color-light-highlight);--pst-color-muted:#646464;--pst-color-muted-text:#fff;--pst-color-muted-highlight:#3e3e3e;--sd-color-muted:var(--pst-color-muted);--sd-color-muted-text:var(--pst-color-muted-text);--sd-color-muted-highlight:var(--pst-color-muted-highlight);--pst-color-dark:#323232;--pst-color-dark-text:#fff;--pst-color-dark-highlight:#0c0c0c;--sd-color-dark:var(--pst-color-dark);--sd-color-dark-text:var(--pst-color-dark-text);--sd-color-dark-highlight:var(--pst-color-dark-highlight);--pst-color-black:#000;--pst-color-black-text:#fff;--pst-color-black-highlight:#000;--sd-color-black:var(--pst-color-black);--sd-color-black-text:var(--pst-color-black-text);--sd-color-black-highlight:var(--pst-color-black-highlight);--pst-color-white:#fff;--pst-color-white-text:#000;--pst-color-white-highlight:#d9d9d9;--sd-color-white:var(--pst-color-white);--sd-color-white-text:var(--pst-color-white-text);--sd-color-white-highlight:var(--pst-color-white-highlight)}html[data-theme=dark]{--pst-color-primary:#459db9;--pst-color-primary-text:#fff;--pst-color-primary-highlight:#306e81;--sd-color-primary:var(--pst-color-primary);--sd-color-primary-text:var(--pst-color-primary-text);--sd-color-primary-highlight:var(--pst-color-primary-highlight);--pst-color-secondary:#ee9040;--pst-color-secondary-text:#fff;--pst-color-secondary-highlight:#cf6912;--sd-color-secondary:var(--pst-color-secondary);--sd-color-secondary-text:var(--pst-color-secondary-text);--sd-color-secondary-highlight:var(--pst-color-secondary-highlight);--pst-color-success:#488757;--pst-color-success-text:#fff;--pst-color-success-highlight:#2d5537;--sd-color-success:var(--pst-color-success);--sd-color-success-text:var(--pst-color-success-text);--sd-color-success-highlight:var(--pst-color-success-highlight);--pst-color-info:#459db9;--pst-color-info-text:#fff;--pst-color-info-highlight:#306e81;--sd-color-info:var(--pst-color-info);--sd-color-info-text:var(--pst-color-info-text);--sd-color-info-highlight:var(--pst-color-info-highlight);--pst-color-warning:#ee9040;--pst-color-warning-text:#fff;--pst-color-warning-highlight:#cf6912;--sd-color-warning:var(--pst-color-warning);--sd-color-warning-text:var(--pst-color-warning-text);--sd-color-warning-highlight:var(--pst-color-warning-highlight);--pst-color-danger:#cb4653;--pst-color-danger-text:#fff;--pst-color-danger-highlight:#992b36;--sd-color-danger:var(--pst-color-danger);--sd-color-danger-text:var(--pst-color-danger-text);--sd-color-danger-highlight:var(--pst-color-danger-highlight);--pst-color-light:#c9c9c9;--pst-color-light-text:#000;--pst-color-light-highlight:#a3a3a3;--sd-color-light:var(--pst-color-light);--sd-color-light-text:var(--pst-color-light-text);--sd-color-light-highlight:var(--pst-color-light-highlight);--pst-color-muted:#a6a6a6;--pst-color-muted-text:#fff;--pst-color-muted-highlight:gray;--sd-color-muted:var(--pst-color-muted);--sd-color-muted-text:var(--pst-color-muted-text);--sd-color-muted-highlight:var(--pst-color-muted-highlight);--pst-color-dark:#cecece;--pst-color-dark-text:#000;--pst-color-dark-highlight:#a8a8a8;--sd-color-dark:var(--pst-color-dark);--sd-color-dark-text:var(--pst-color-dark-text);--sd-color-dark-highlight:var(--pst-color-dark-highlight);--pst-color-black:#000;--pst-color-black-text:#fff;--pst-color-black-highlight:#000;--sd-color-black:var(--pst-color-black);--sd-color-black-text:var(--pst-color-black-text);--sd-color-black-highlight:var(--pst-color-black-highlight);--pst-color-white:#fff;--pst-color-white-text:#000;--pst-color-white-highlight:#d9d9d9;--sd-color-white:var(--pst-color-white);--sd-color-white-text:var(--pst-color-white-text);--sd-color-white-highlight:var(--pst-color-white-highlight)}html[data-theme=dark],html[data-theme=light]{--sd-color-card-border:var(--pst-color-border)}html[data-theme=light] .sd-shadow-lg,html[data-theme=light] .sd-shadow-md,html[data-theme=light] .sd-shadow-sm,html[data-theme=light] .sd-shadow-xs{box-shadow:0 .2rem .5rem var(--pst-color-shadow),0 0 .0625rem var(--pst-color-shadow)!important}.bd-content .sd-card{border:1px solid var(--pst-color-border)}.bd-content .sd-card .sd-card-header{background-color:var(--pst-color-panel-background);border-bottom:1px solid var(--pst-color-border)}.bd-content .sd-card .sd-card-footer{border-top:1px solid var(--pst-color-border)}.bd-content .sd-card .sd-card-body,.bd-content .sd-card .sd-card-footer{background-color:var(--pst-color-panel-background)}.bd-content .sd-tab-set>input:checked+label,.bd-content .sd-tab-set>input:not(:checked)+label:hover{border-color:var(--pst-color-primary);color:var(--pst-color-primary)}.bd-content .sd-tab-set>input:not(:checked)+label:hover{opacity:.5}.bd-content .sd-tab-set>label{color:var(--pst-color-text-muted)}html .bd-content .sd-tab-set>label:hover{border-color:var(--pst-color-primary);color:var(--pst-color-primary);opacity:.5}details.sd-dropdown{border:0!important;box-shadow:0 .2rem .5rem var(--pst-color-shadow),0 0 .0625rem var(--pst-color-shadow)!important}details.sd-dropdown summary.sd-card-header{border:0!important}details.sd-dropdown summary.sd-card-header+div.sd-summary-content{border:0}details.sd-dropdown summary.sd-card-header{align-items:center;background-color:unset!important;border-left:.2rem solid var(--pst-sd-dropdown-color)!important;color:var(--pst-color-text)!important;display:flex;font-weight:600;padding-bottom:.5rem;padding-top:.5rem;position:relative}details.sd-dropdown summary.sd-card-header,details.sd-dropdown summary.sd-card-header+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-card-border)}details.sd-dropdown summary.sd-card-header.sd-bg-primary,details.sd-dropdown summary.sd-card-header.sd-bg-primary+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-primary)}details.sd-dropdown summary.sd-card-header.sd-bg-secondary,details.sd-dropdown summary.sd-card-header.sd-bg-secondary+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-secondary)}details.sd-dropdown summary.sd-card-header.sd-bg-success,details.sd-dropdown summary.sd-card-header.sd-bg-success+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-success)}details.sd-dropdown summary.sd-card-header.sd-bg-info,details.sd-dropdown summary.sd-card-header.sd-bg-info+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-info)}details.sd-dropdown summary.sd-card-header.sd-bg-warning,details.sd-dropdown summary.sd-card-header.sd-bg-warning+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-warning)}details.sd-dropdown summary.sd-card-header.sd-bg-danger,details.sd-dropdown summary.sd-card-header.sd-bg-danger+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-danger)}details.sd-dropdown summary.sd-card-header.sd-bg-light,details.sd-dropdown summary.sd-card-header.sd-bg-light+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-light)}details.sd-dropdown summary.sd-card-header.sd-bg-muted,details.sd-dropdown summary.sd-card-header.sd-bg-muted+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-muted)}details.sd-dropdown summary.sd-card-header.sd-bg-dark,details.sd-dropdown summary.sd-card-header.sd-bg-dark+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-dark)}details.sd-dropdown summary.sd-card-header.sd-bg-black,details.sd-dropdown summary.sd-card-header.sd-bg-black+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-black)}details.sd-dropdown summary.sd-card-header.sd-bg-white,details.sd-dropdown summary.sd-card-header.sd-bg-white+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-white)}details.sd-dropdown summary.sd-card-header:before{background-color:var(--pst-sd-dropdown-color);content:"";height:100%;left:0;opacity:.1;pointer-events:none;position:absolute;top:0;width:100%}details.sd-dropdown summary.sd-card-header+div.sd-summary-content{border-bottom-left-radius:calc(.25rem - 1px);border-left:.2rem solid var(--pst-sd-dropdown-color)!important}details.sd-dropdown summary.sd-card-header span.sd-summary-icon{align-items:center;color:var(--pst-sd-dropdown-color)!important;display:inline-flex}details.sd-dropdown summary.sd-card-header .sd-summary-down,details.sd-dropdown summary.sd-card-header .sd-summary-up{top:.7rem}@use "../variables/color" as *;html[data-theme=dark],html[data-theme=light]{--pst-color-panel-background:$value}.container[role=main]{max-width:none;padding-left:0;padding-right:0}.sphinx-bs .card{background-color:var(--pst-color-panel-background);border:1px solid var(--pst-color-border)}.sphinx-bs .card .card-header{border-bottom:1px solid var(--pst-color-border)}.sphinx-bs .card .card-footer{border-top:1px solid var(--pst-color-border)}.bd-content .tabbed-set>input:checked+label,.bd-content .tabbed-set>input:not(:checked)+label:hover{border-color:var(--pst-color-primary);color:var(--pst-color-primary)}.bd-content .tabbed-set>input:not(:checked)+label:hover{opacity:.5}.bd-content .tabbed-set>label{color:var(--pst-color-text-muted)}html .bd-content .tabbed-set>label:hover{border-color:var(--pst-color-primary);color:var(--pst-color-primary);opacity:.5}.bd-content .tabbed-set>.tabbed-content{border-color:var(--pst-color-border)}.bd-content .admonition button.toggle-button{color:inherit}.bd-content details.toggle-details summary{border-left:3px solid var(--pst-color-primary)}html div.rendered_html table{table-layout:auto}html[data-theme=dark] .bd-content .nboutput .output_area.rendered_html{background-color:var(--pst-color-text-base);border-radius:.25rem;color:var(--pst-color-on-background);padding:.5rem}html[data-theme=dark] .bd-content .nboutput .output_area.stderr{background:var(--pst-color-danger)}div.nblast.container{margin-bottom:1rem}div.cell_output .output{max-width:100%;overflow-x:auto}div.cell_output .output::-webkit-scrollbar{height:.5rem;width:.5rem}div.cell_output .output::-webkit-scrollbar-thumb{background:var(--pst-color-text-muted);border-radius:.25rem}div.cell_output .output::-webkit-scrollbar-track{background:transparent}div.cell_output .output::-webkit-scrollbar-thumb{background:var(--pst-color-on-surface)}div.cell_output .output::-webkit-scrollbar-thumb:hover,div.cell_output .output:hover::-webkit-scrollbar-thumb{background:var(--pst-color-text-muted)}html[data-theme=dark] .bd-content div.cell_output .text_html,html[data-theme=dark] .bd-content div.cell_output img{background-color:var(--pst-color-text-base);border-radius:.25rem;color:var(--pst-color-on-background);padding:.5rem}.bd-content div.cell_input{display:flex;flex-direction:column;justify-content:stretch}.bd-content div.cell_input,.bd-content div.output{border-radius:.25rem}.bd-content div.output table{table-layout:auto}.bd-search-container div#search-results>h2{font-size:var(--pst-font-size-icon);margin-top:0}.bd-search-container div#search-results p.search-summary{color:var(--pst-color-text-muted)}.bd-search-container ul.search{list-style:none;margin:0}.bd-search-container ul.search li{background-image:none;border-top:1px solid var(--pst-color-text-muted);margin:1rem 0;padding:1rem 0}.bd-search-container ul.search li>a{font-size:1.2em}.bd-search-container ul.search li div.context,.bd-search-container ul.search li p.context{color:var(--pst-color-text-base);margin:.5em 0 0}.bd-search-container ul.search li div.context a:before,.bd-search-container ul.search li p.context a:before{color:var(--pst-color-text-muted);content:"#";padding-right:.2em} \ No newline at end of file diff --git a/_static/styles/sphinx-book-theme.css b/_static/styles/sphinx-book-theme.css new file mode 100644 index 00000000..9fc514ed --- /dev/null +++ b/_static/styles/sphinx-book-theme.css @@ -0,0 +1,8 @@ +/*! sphinx-book-theme CSS + * BSD 3-Clause License + * Copyright (c) 2020, EBP + * All rights reserved. + * + * This follows the 7-1 pattern described here: + * https://sass-guidelin.es/#architecture + */html{--pst-font-size-base:none;--pst-header-height:0px}html[data-theme=light]{--sbt-color-announcement:#616161}html[data-theme=dark],html[data-theme=light]{--pst-color-primary:#579aca}.sbt-scroll-pixel-helper{position:absolute;width:0;height:0;top:0;left:0}.d-n,.onlyprint{display:none}@media print{.onlyprint{display:block!important}}@media print{.noprint{display:none!important}}.bd-article-container h1,.bd-article-container h2,.bd-article-container h3,.bd-article-container h4,.bd-article-container h5{color:var(--pst-color-text-muted)}a.brackets:before{color:inherit;font-family:inherit;margin-right:0}table{position:relative}@media print{.bd-main .bd-content{margin-left:3rem;height:auto}.bd-main .bd-content #jb-print-docs-body{margin-left:0}.bd-main .bd-content #jb-print-docs-body h1{font-size:3em;text-align:center;margin-bottom:0}.bd-main .bd-content .bd-article{padding-top:0}.bd-main .bd-content .bd-article h1:first-of-type{display:none}.bd-main .bd-content .container{min-width:0!important}.bd-main .bd-content h1{margin-top:1em;margin-bottom:1em}.bd-main .bd-content h1,.bd-main .bd-content h2,.bd-main .bd-content h3,.bd-main .bd-content h4{break-after:avoid;color:#000}.bd-main .bd-content table{break-inside:avoid}.bd-main .bd-content pre{word-wrap:break-word}.bd-main .bd-content a.headerlink{display:none}.bd-main .bd-content blockquote.epigraph{border:none}.bd-main .bd-content .footer{margin-top:1em}.bd-main .bd-content #jb-print-toc{margin-bottom:1.5rem;margin-left:0}.bd-main .bd-content #jb-print-toc .section-nav{border-left:0!important;list-style-type:disc!important;margin-left:3em!important}.bd-main .bd-content #jb-print-toc .section-nav a{text-decoration:none!important}.bd-main .bd-content #jb-print-toc .section-nav li{display:list-item!important}.bd-main .bd-content #jb-print-toc .section-nav .nav{display:none}}.bd-header-announcement{background-color:var(--sbt-color-announcement);color:#fff}.bd-main{flex-grow:0}.bd-main .bd-content .bd-article-container{padding:0;overflow-x:unset;min-width:0}.bd-main .bd-content .bd-article-container .bd-article{padding-right:2rem;padding-left:2rem}@media (min-width:768px){label.sidebar-toggle.primary-toggle{display:inline-block}}@media (max-width:768px){label.sidebar-toggle.primary-toggle{margin-bottom:0}}@media (min-width:992px){label.sidebar-toggle.secondary-toggle{display:none}}@media (max-width:768px){label.sidebar-toggle.secondary-toggle{margin-bottom:0}}.bd-header-article{height:3rem;background-color:var(--pst-color-background);transition:left .2s;font-size:.9em;position:sticky;top:0;padding:0 1rem;z-index:1018}@media (max-width:768px){.bd-header-article{height:3.75rem}}.scrolled .bd-header-article{box-shadow:0 6px 6px -6px var(--pst-color-shadow)}.bd-header-article .header-article-main{height:3rem;padding:0!important}@media (max-width:768px){.bd-header-article .header-article-main{height:3.75rem}}.bd-header-article .header-article-main .header-article__left,.bd-header-article .header-article-main .header-article__right{display:flex;align-items:center}.bd-header-article .header-article-main .header-article__right{margin-left:auto}div.header-article-main .btn{font-size:1.3rem;color:var(--pst-color-text-muted);border:none;padding:0 .75rem}div.header-article-main .btn.show,div.header-article-main .btn:hover{color:var(--pst-color-text-base);border:none}div.header-article-main .btn.show+.dropdown-menu,div.header-article-main .btn:hover+.dropdown-menu{display:block}div.header-article-main .btn:focus{box-shadow:none}div.header-article-main .btn.dropdown-toggle:after{display:none}div.header-article-main .dropdown-menu{margin-top:0;transform:translateX(-75%)}div.header-article-main .dropdown-menu:hover{display:block}div.header-article-main .dropdown-menu .dropdown-item{display:inline-flex;align-items:center;padding-left:.5em;font-size:1em}div.header-article-main .dropdown-menu .dropdown-item:hover{text-decoration:none;background-color:initial}div.header-article-main .dropdown-menu .dropdown-item span img{height:1em}div.header-article-main .dropdown-menu .dropdown-item span.btn__icon-container{width:1.7em;align-items:center;display:inline-flex;justify-content:center}div.tooltip{z-index:1049}.bd-header{display:none}.bd-sidebar-primary{transition:margin-left .25s ease 0s,opacity .25s ease 0s,visibility .25s ease 0s;font-size:87.5%}.bd-sidebar-primary .navbar-brand{height:unset}.bd-sidebar-primary .sidebar-header-items{display:none}.bd-sidebar-primary .sidebar-start-items{border-top:none}@media (min-width:768px){.bd-sidebar-primary{flex-basis:20%}}@media (min-width:768px){input#__primary:checked~.bd-container .bd-sidebar-primary{margin-left:-20%;visibility:hidden;opacity:0}}@media (min-width:768px){.bd-sidebar-secondary{background:var(--pst-color-background);height:fit-content;transition:max-height .4s ease;z-index:2;padding:0}.bd-sidebar-secondary .toc-item{border-left-color:var(--pst-color-surface);padding-top:0}.bd-sidebar-secondary .toc-item .onthispage{height:3rem;display:flex;align-items:center}.bd-sidebar-secondary .toc-item nav.page-toc{margin-bottom:0;transition:opacity .4s ease}.bd-sidebar-secondary.hide:not(:hover){max-height:3rem;overflow-y:hidden}.scrolled .bd-sidebar-secondary.hide:not(:hover){box-shadow:0 6px 6px -6px rgba(0,0,0,.3)}.bd-sidebar-secondary.hide:not(:hover) .onthispage:after{opacity:1;content:"\f107";font-family:Font Awesome\ 5 Free;font-weight:900;padding-left:.5em;transition:opacity .3s ease}.bd-sidebar-secondary.hide:not(:hover) nav.page-toc{opacity:0}}footer{font-size:var(--sbt-font-size-small-1)}footer.bd-footer-content{display:flex;flex-wrap:wrap;padding:15px;border-top:1px solid #ccc;font-size:87.5%}footer.bd-footer-content .bd-footer-content__inner{padding-left:0}footer.bd-footer-content .bd-footer-content__inner p{margin-bottom:0}.bd-footer-article{padding:0 1rem}.bd-search-container{margin:2em}.bd-search-container #search-results h2:first-child,.bd-search-container h1:first-child{display:none}.bd-search-container .bd-search{display:none!important}img{max-width:100%}img.align-center{margin-left:auto;margin-right:auto;display:block}img.align-left{clear:left;float:left;margin-right:1em}img.align-right{clear:right;float:right;margin-left:1em}div.figure{width:100%;margin-bottom:1em;text-align:center}div.figure.align-left{text-align:left}div.figure.align-left p.caption{margin-left:0}div.figure.align-right{text-align:right}div.figure.align-right p.caption{margin-right:0}div.figure p.caption{margin:.5em 10%}div.figure.margin-caption p.caption,div.figure.margin p.caption{margin:.5em 0}div.figure.margin-caption p.caption{text-align:left}div.figure span.caption-number{font-weight:700}div.figure span{font-size:.9rem}label.margin-toggle{margin-bottom:0}label.margin-toggle.marginnote-label{display:none}label.margin-toggle sup{user-select:none}@media (max-width:992px){label.margin-toggle{cursor:pointer;color:#0071bc}label.margin-toggle.marginnote-label{display:inline}label.margin-toggle.marginnote-label:after{content:"\2295"}}input.margin-toggle{display:none}@media (max-width:992px){input.margin-toggle:checked+.marginnote,input.margin-toggle:checked+.sidenote{display:block;float:left;left:1rem;clear:both;width:95%;margin:1rem 2.5%;position:relative}}span.marginnote,span.sidenote{z-index:2;position:relative;width:40%;float:right;background-color:unset;font-size:.9em;margin-left:.5rem;border-left:none}span.marginnote sup,span.sidenote sup{user-select:none}@media (min-width:992px){span.marginnote,span.sidenote{width:33%;margin:0 -36% 0 0;clear:right}span.marginnote p.sidebar-title,span.sidenote p.sidebar-title{margin-bottom:-1rem;border-bottom:none;padding-left:0}span.marginnote p.sidebar-title~*,span.sidenote p.sidebar-title~*{padding-left:0;padding-right:0}}@media (max-width:992px){span.marginnote,span.sidenote{display:none}}aside.sidebar .note{margin:1rem;padding:0 0 1rem}aside.sidebar .admonition-title{margin:0 -1rem 0 0}aside.sidebar.margin .sidebar-title:empty{display:none}aside.sidebar.margin .admonition{margin:.5rem;padding-left:0;padding-right:0}aside.sidebar.margin .admonition .admonition-title{margin-left:0;margin-right:0}@media (min-width:992px){aside.sidebar.margin{border:none}aside.sidebar.margin .admonition{margin:1rem 0;padding:0 0 1rem}}.cell.tag_margin,.cell.tag_popout,aside.margin,div.margin,figure.margin{z-index:2;position:relative;width:40%;float:right;background-color:unset;font-size:.9em;margin-left:.5rem}@media (min-width:992px){.cell.tag_margin,.cell.tag_popout,aside.margin,div.margin,figure.margin{width:33%;margin:0 -36% 0 0;clear:right}.cell.tag_margin p.sidebar-title,.cell.tag_popout p.sidebar-title,aside.margin p.sidebar-title,div.margin p.sidebar-title,figure.margin p.sidebar-title{margin-bottom:-1rem;border-bottom:none;padding-left:0}.cell.tag_margin p.sidebar-title~*,.cell.tag_popout p.sidebar-title~*,aside.margin p.sidebar-title~*,div.margin p.sidebar-title~*,figure.margin p.sidebar-title~*{padding-left:0;padding-right:0}}.cell.tag_margin div.cell.tag_margin .cell_output,.cell.tag_popout div.cell.tag_margin .cell_output,aside.margin div.cell.tag_margin .cell_output,div.margin div.cell.tag_margin .cell_output,figure.margin div.cell.tag_margin .cell_output{padding-left:0}div.figure.margin-caption figcaption,div.figure.margin-caption p.caption,figure.margin-caption figcaption{z-index:2;position:relative;width:40%;float:right;background-color:unset;font-size:.9em;margin-left:.5rem}@media (min-width:992px){div.figure.margin-caption figcaption,div.figure.margin-caption p.caption,figure.margin-caption figcaption{width:33%;margin:0 -36% 0 0;clear:right}div.figure.margin-caption figcaption p.sidebar-title,div.figure.margin-caption p.caption p.sidebar-title,figure.margin-caption figcaption p.sidebar-title{margin-bottom:-1rem;border-bottom:none;padding-left:0}div.figure.margin-caption figcaption p.sidebar-title~*,div.figure.margin-caption p.caption p.sidebar-title~*,figure.margin-caption figcaption p.sidebar-title~*{padding-left:0;padding-right:0}}.margin-caption figcaption{text-align:left}div.cell.tag_full-width,div.cell.tag_full_width,div.full-width,div.full_width{z-index:2;position:relative}@media (min-width:992px){div.cell.tag_full-width,div.cell.tag_full_width,div.full-width,div.full_width{max-width:136%;width:136%}}blockquote.epigraph,blockquote.highlights,blockquote.pull-quote{font-size:1.25em;border-left:none;background-color:var(--pst-color-background)}blockquote div>p+p.attribution{font-style:normal;font-size:.9em;text-align:right;color:#6c757d;padding-right:2em}div[class*=highlight-],pre{clear:none}div.cell.tag_output_scroll div.cell_output,div.cell.tag_scroll-output div.cell_output{max-height:24em;overflow-y:auto}@media only print{div.utterances,hypothesis-sidebar{display:none}}.thebelab-cell{border:none!important;margin-right:.5em!important}.thebelab-cell .thebelab-input{padding-left:10px!important}.cell.docutils.container{padding-right:0!important}button.thebe-launch-button{height:2.5em;font-size:1em} \ No newline at end of file diff --git a/_static/styles/theme.css b/_static/styles/theme.css new file mode 100644 index 00000000..4519dd91 --- /dev/null +++ b/_static/styles/theme.css @@ -0,0 +1,2 @@ +/* Provided by Sphinx's 'basic' theme, and included in the final set of assets */ +@import "../basic.css"; diff --git a/_static/togglebutton.css b/_static/togglebutton.css new file mode 100644 index 00000000..54a67879 --- /dev/null +++ b/_static/togglebutton.css @@ -0,0 +1,160 @@ +/** + * Admonition-based toggles + */ + +/* Visibility of the target */ +.admonition.toggle .admonition-title ~ * { + transition: opacity .3s, height .3s; +} + +/* Toggle buttons inside admonitions so we see the title */ +.admonition.toggle { + position: relative; +} + +/* Titles should cut off earlier to avoid overlapping w/ button */ +.admonition.toggle .admonition-title { + padding-right: 25%; + cursor: pointer; +} + +/* Hovering will cause a slight shift in color to make it feel interactive */ +.admonition.toggle .admonition-title:hover { + box-shadow: inset 0 0 0px 20px rgb(0 0 0 / 1%); +} + +/* Hovering will cause a slight shift in color to make it feel interactive */ +.admonition.toggle .admonition-title:active { + box-shadow: inset 0 0 0px 20px rgb(0 0 0 / 3%); +} + +/* Remove extra whitespace below the admonition title when hidden */ +.admonition.toggle-hidden { + padding-bottom: 0; +} + +.admonition.toggle-hidden .admonition-title { + margin-bottom: 0; +} + +/* hides all the content of a page until de-toggled */ +.admonition.toggle-hidden .admonition-title ~ * { + height: 0; + margin: 0; + opacity: 0; + visibility: hidden; +} + +/* General button style and position*/ +button.toggle-button { + /** + * Background and shape. By default there's no background + * but users can style as they wish + */ + background: none; + border: none; + outline: none; + + /* Positioning just inside the admonition title */ + position: absolute; + right: 0.5em; + padding: 0px; + border: none; + outline: none; +} + +/* Display the toggle hint on wide screens */ +@media (min-width: 768px) { + button.toggle-button.toggle-button-hidden:before { + content: attr(data-toggle-hint); /* This will be filled in by JS */ + font-size: .8em; + align-self: center; + } +} + +/* Icon behavior */ +.tb-icon { + transition: transform .2s ease-out; + height: 1.5em; + width: 1.5em; + stroke: currentColor; /* So that we inherit the color of other text */ +} + +/* The icon should point right when closed, down when open. */ +/* Open */ +.admonition.toggle button .tb-icon { + transform: rotate(90deg); +} + +/* Closed */ +.admonition.toggle button.toggle-button-hidden .tb-icon { + transform: rotate(0deg); +} + +/* With details toggles, we don't rotate the icon so it points right */ +details.toggle-details .tb-icon { + height: 1.4em; + width: 1.4em; + margin-top: 0.1em; /* To center the button vertically */ +} + + +/** + * Details-based toggles. + * In this case, we wrap elements with `.toggle` in a details block. + */ + +/* Details blocks */ +details.toggle-details { + margin: 1em 0; +} + + +details.toggle-details summary { + display: flex; + align-items: center; + cursor: pointer; + list-style: none; + border-radius: .2em; + border-left: 3px solid #1976d2; + background-color: rgb(204 204 204 / 10%); + padding: 0.2em 0.7em 0.3em 0.5em; /* Less padding on left because the SVG has left margin */ + font-size: 0.9em; +} + +details.toggle-details summary:hover { + background-color: rgb(204 204 204 / 20%); +} + +details.toggle-details summary:active { + background: rgb(204 204 204 / 28%); +} + +.toggle-details__summary-text { + margin-left: 0.2em; +} + +details.toggle-details[open] summary { + margin-bottom: .5em; +} + +details.toggle-details[open] summary .tb-icon { + transform: rotate(90deg); +} + +details.toggle-details[open] summary ~ * { + animation: toggle-fade-in .3s ease-out; +} + +@keyframes toggle-fade-in { + from {opacity: 0%;} + to {opacity: 100%;} +} + +/* Print rules - we hide all toggle button elements at print */ +@media print { + /* Always hide the summary so the button doesn't show up */ + details.toggle-details summary { + display: none; + } +} \ No newline at end of file diff --git a/_static/togglebutton.js b/_static/togglebutton.js new file mode 100644 index 00000000..215a7eef --- /dev/null +++ b/_static/togglebutton.js @@ -0,0 +1,187 @@ +/** + * Add Toggle Buttons to elements + */ + +let toggleChevron = ` + + + +`; + +var initToggleItems = () => { + var itemsToToggle = document.querySelectorAll(togglebuttonSelector); + console.log(`[togglebutton]: Adding toggle buttons to ${itemsToToggle.length} items`) + // Add the button to each admonition and hook up a callback to toggle visibility + itemsToToggle.forEach((item, index) => { + if (item.classList.contains("admonition")) { + // If it's an admonition block, then we'll add a button inside + // Generate unique IDs for this item + var toggleID = `toggle-${index}`; + var buttonID = `button-${toggleID}`; + + item.setAttribute('id', toggleID); + if (!item.classList.contains("toggle")){ + item.classList.add("toggle"); + } + // This is the button that will be added to each item to trigger the toggle + var collapseButton = ` + `; + + title = item.querySelector(".admonition-title") + title.insertAdjacentHTML("beforeend", collapseButton); + thisButton = document.getElementById(buttonID); + + // Add click handlers for the button + admonition title (if admonition) + admonitionTitle = document.querySelector(`#${toggleID} > .admonition-title`) + if (admonitionTitle) { + // If an admonition, then make the whole title block clickable + admonitionTitle.addEventListener('click', toggleClickHandler); + admonitionTitle.dataset.target = toggleID + admonitionTitle.dataset.button = buttonID + } else { + // If not an admonition then we'll listen for the button click + thisButton.addEventListener('click', toggleClickHandler); + } + + // Now hide the item for this toggle button unless explicitly noted to show + if (!item.classList.contains("toggle-shown")) { + toggleHidden(thisButton); + } + } else { + // If not an admonition, wrap the block in a
    block + // Define the structure of the details block and insert it as a sibling + var detailsBlock = ` +
    + + ${toggleChevron} + ${toggleHintShow} + +
    `; + item.insertAdjacentHTML("beforebegin", detailsBlock); + + // Now move the toggle-able content inside of the details block + details = item.previousElementSibling + details.appendChild(item) + item.classList.add("toggle-details__container") + + // Set up a click trigger to change the text as needed + details.addEventListener('click', (click) => { + let parent = click.target.parentElement; + if (parent.tagName.toLowerCase() == "details") { + summary = parent.querySelector("summary"); + details = parent; + } else { + summary = parent; + details = parent.parentElement; + } + // Update the inner text for the proper hint + if (details.open) { + summary.querySelector("span.toggle-details__summary-text").innerText = toggleHintShow; + } else { + summary.querySelector("span.toggle-details__summary-text").innerText = toggleHintHide; + } + + }); + + // If we have a toggle-shown class, open details block should be open + if (item.classList.contains("toggle-shown")) { + details.click(); + } + } + }) +}; + +// This should simply add / remove the collapsed class and change the button text +var toggleHidden = (button) => { + target = button.dataset['target'] + var itemToToggle = document.getElementById(target); + if (itemToToggle.classList.contains("toggle-hidden")) { + itemToToggle.classList.remove("toggle-hidden"); + button.classList.remove("toggle-button-hidden"); + } else { + itemToToggle.classList.add("toggle-hidden"); + button.classList.add("toggle-button-hidden"); + } +} + +var toggleClickHandler = (click) => { + // Be cause the admonition title is clickable and extends to the whole admonition + // We only look for a click event on this title to trigger the toggle. + + if (click.target.classList.contains("admonition-title")) { + button = click.target.querySelector(".toggle-button"); + } else if (click.target.classList.contains("tb-icon")) { + // We've clicked the icon and need to search up one parent for the button + button = click.target.parentElement; + } else if (click.target.tagName == "polyline") { + // We've clicked the SVG elements inside the button, need to up 2 layers + button = click.target.parentElement.parentElement; + } else if (click.target.classList.contains("toggle-button")) { + // We've clicked the button itself and so don't need to do anything + button = click.target; + } else { + console.log(`[togglebutton]: Couldn't find button for ${click.target}`) + } + target = document.getElementById(button.dataset['button']); + toggleHidden(target); +} + +// If we want to blanket-add toggle classes to certain cells +var addToggleToSelector = () => { + const selector = ""; + if (selector.length > 0) { + document.querySelectorAll(selector).forEach((item) => { + item.classList.add("toggle"); + }) + } +} + +// Helper function to run when the DOM is finished +const sphinxToggleRunWhenDOMLoaded = cb => { + if (document.readyState != 'loading') { + cb() + } else if (document.addEventListener) { + document.addEventListener('DOMContentLoaded', cb) + } else { + document.attachEvent('onreadystatechange', function() { + if (document.readyState == 'complete') cb() + }) + } +} +sphinxToggleRunWhenDOMLoaded(addToggleToSelector) +sphinxToggleRunWhenDOMLoaded(initToggleItems) + +/** Toggle details blocks to be open when printing */ +if (toggleOpenOnPrint == "true") { + window.addEventListener("beforeprint", () => { + // Open the details + document.querySelectorAll("details.toggle-details").forEach((el) => { + el.dataset["togglestatus"] = el.open; + el.open = true; + }); + + // Open the admonitions + document.querySelectorAll(".admonition.toggle.toggle-hidden").forEach((el) => { + console.log(el); + el.querySelector("button.toggle-button").click(); + el.dataset["toggle_after_print"] = "true"; + }); + }); + window.addEventListener("afterprint", () => { + // Re-close the details that were closed + document.querySelectorAll("details.toggle-details").forEach((el) => { + el.open = el.dataset["togglestatus"] == "true"; + delete el.dataset["togglestatus"]; + }); + + // Re-close the admonition toggle buttons + document.querySelectorAll(".admonition.toggle").forEach((el) => { + if (el.dataset["toggle_after_print"] == "true") { + el.querySelector("button.toggle-button").click(); + delete el.dataset["toggle_after_print"]; + } + }); + }); +} diff --git a/_static/underscore-1.13.1.js b/_static/underscore-1.13.1.js new file mode 100644 index 00000000..ffd77af9 --- /dev/null +++ b/_static/underscore-1.13.1.js @@ -0,0 +1,2042 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define('underscore', factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (function () { + var current = global._; + var exports = global._ = factory(); + exports.noConflict = function () { global._ = current; return exports; }; + }())); +}(this, (function () { + // Underscore.js 1.13.1 + // https://underscorejs.org + // (c) 2009-2021 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors + // Underscore may be freely distributed under the MIT license. + + // Current version. + var VERSION = '1.13.1'; + + // Establish the root object, `window` (`self`) in the browser, `global` + // on the server, or `this` in some virtual machines. We use `self` + // instead of `window` for `WebWorker` support. + var root = typeof self == 'object' && self.self === self && self || + typeof global == 'object' && global.global === global && global || + Function('return this')() || + {}; + + // Save bytes in the minified (but not gzipped) version: + var ArrayProto = Array.prototype, ObjProto = Object.prototype; + var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null; + + // Create quick reference variables for speed access to core prototypes. + var push = ArrayProto.push, + slice = ArrayProto.slice, + toString = ObjProto.toString, + hasOwnProperty = ObjProto.hasOwnProperty; + + // Modern feature detection. + var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined', + supportsDataView = typeof DataView !== 'undefined'; + + // All **ECMAScript 5+** native function implementations that we hope to use + // are declared here. + var nativeIsArray = Array.isArray, + nativeKeys = Object.keys, + nativeCreate = Object.create, + nativeIsView = supportsArrayBuffer && ArrayBuffer.isView; + + // Create references to these builtin functions because we override them. + var _isNaN = isNaN, + _isFinite = isFinite; + + // Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. + var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); + var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', + 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; + + // The largest integer that can be represented exactly. + var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; + + // Some functions take a variable number of arguments, or a few expected + // arguments at the beginning and then a variable number of values to operate + // on. This helper accumulates all remaining arguments past the function’s + // argument length (or an explicit `startIndex`), into an array that becomes + // the last argument. Similar to ES6’s "rest parameter". + function restArguments(func, startIndex) { + startIndex = startIndex == null ? func.length - 1 : +startIndex; + return function() { + var length = Math.max(arguments.length - startIndex, 0), + rest = Array(length), + index = 0; + for (; index < length; index++) { + rest[index] = arguments[index + startIndex]; + } + switch (startIndex) { + case 0: return func.call(this, rest); + case 1: return func.call(this, arguments[0], rest); + case 2: return func.call(this, arguments[0], arguments[1], rest); + } + var args = Array(startIndex + 1); + for (index = 0; index < startIndex; index++) { + args[index] = arguments[index]; + } + args[startIndex] = rest; + return func.apply(this, args); + }; + } + + // Is a given variable an object? + function isObject(obj) { + var type = typeof obj; + return type === 'function' || type === 'object' && !!obj; + } + + // Is a given value equal to null? + function isNull(obj) { + return obj === null; + } + + // Is a given variable undefined? + function isUndefined(obj) { + return obj === void 0; + } + + // Is a given value a boolean? + function isBoolean(obj) { + return obj === true || obj === false || toString.call(obj) === '[object Boolean]'; + } + + // Is a given value a DOM element? + function isElement(obj) { + return !!(obj && obj.nodeType === 1); + } + + // Internal function for creating a `toString`-based type tester. + function tagTester(name) { + var tag = '[object ' + name + ']'; + return function(obj) { + return toString.call(obj) === tag; + }; + } + + var isString = tagTester('String'); + + var isNumber = tagTester('Number'); + + var isDate = tagTester('Date'); + + var isRegExp = tagTester('RegExp'); + + var isError = tagTester('Error'); + + var isSymbol = tagTester('Symbol'); + + var isArrayBuffer = tagTester('ArrayBuffer'); + + var isFunction = tagTester('Function'); + + // Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old + // v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236). + var nodelist = root.document && root.document.childNodes; + if (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') { + isFunction = function(obj) { + return typeof obj == 'function' || false; + }; + } + + var isFunction$1 = isFunction; + + var hasObjectTag = tagTester('Object'); + + // In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`. + // In IE 11, the most common among them, this problem also applies to + // `Map`, `WeakMap` and `Set`. + var hasStringTagBug = ( + supportsDataView && hasObjectTag(new DataView(new ArrayBuffer(8))) + ), + isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map)); + + var isDataView = tagTester('DataView'); + + // In IE 10 - Edge 13, we need a different heuristic + // to determine whether an object is a `DataView`. + function ie10IsDataView(obj) { + return obj != null && isFunction$1(obj.getInt8) && isArrayBuffer(obj.buffer); + } + + var isDataView$1 = (hasStringTagBug ? ie10IsDataView : isDataView); + + // Is a given value an array? + // Delegates to ECMA5's native `Array.isArray`. + var isArray = nativeIsArray || tagTester('Array'); + + // Internal function to check whether `key` is an own property name of `obj`. + function has$1(obj, key) { + return obj != null && hasOwnProperty.call(obj, key); + } + + var isArguments = tagTester('Arguments'); + + // Define a fallback version of the method in browsers (ahem, IE < 9), where + // there isn't any inspectable "Arguments" type. + (function() { + if (!isArguments(arguments)) { + isArguments = function(obj) { + return has$1(obj, 'callee'); + }; + } + }()); + + var isArguments$1 = isArguments; + + // Is a given object a finite number? + function isFinite$1(obj) { + return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj)); + } + + // Is the given value `NaN`? + function isNaN$1(obj) { + return isNumber(obj) && _isNaN(obj); + } + + // Predicate-generating function. Often useful outside of Underscore. + function constant(value) { + return function() { + return value; + }; + } + + // Common internal logic for `isArrayLike` and `isBufferLike`. + function createSizePropertyCheck(getSizeProperty) { + return function(collection) { + var sizeProperty = getSizeProperty(collection); + return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX; + } + } + + // Internal helper to generate a function to obtain property `key` from `obj`. + function shallowProperty(key) { + return function(obj) { + return obj == null ? void 0 : obj[key]; + }; + } + + // Internal helper to obtain the `byteLength` property of an object. + var getByteLength = shallowProperty('byteLength'); + + // Internal helper to determine whether we should spend extensive checks against + // `ArrayBuffer` et al. + var isBufferLike = createSizePropertyCheck(getByteLength); + + // Is a given value a typed array? + var typedArrayPattern = /\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/; + function isTypedArray(obj) { + // `ArrayBuffer.isView` is the most future-proof, so use it when available. + // Otherwise, fall back on the above regular expression. + return nativeIsView ? (nativeIsView(obj) && !isDataView$1(obj)) : + isBufferLike(obj) && typedArrayPattern.test(toString.call(obj)); + } + + var isTypedArray$1 = supportsArrayBuffer ? isTypedArray : constant(false); + + // Internal helper to obtain the `length` property of an object. + var getLength = shallowProperty('length'); + + // Internal helper to create a simple lookup structure. + // `collectNonEnumProps` used to depend on `_.contains`, but this led to + // circular imports. `emulatedSet` is a one-off solution that only works for + // arrays of strings. + function emulatedSet(keys) { + var hash = {}; + for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true; + return { + contains: function(key) { return hash[key]; }, + push: function(key) { + hash[key] = true; + return keys.push(key); + } + }; + } + + // Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't + // be iterated by `for key in ...` and thus missed. Extends `keys` in place if + // needed. + function collectNonEnumProps(obj, keys) { + keys = emulatedSet(keys); + var nonEnumIdx = nonEnumerableProps.length; + var constructor = obj.constructor; + var proto = isFunction$1(constructor) && constructor.prototype || ObjProto; + + // Constructor is a special case. + var prop = 'constructor'; + if (has$1(obj, prop) && !keys.contains(prop)) keys.push(prop); + + while (nonEnumIdx--) { + prop = nonEnumerableProps[nonEnumIdx]; + if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) { + keys.push(prop); + } + } + } + + // Retrieve the names of an object's own properties. + // Delegates to **ECMAScript 5**'s native `Object.keys`. + function keys(obj) { + if (!isObject(obj)) return []; + if (nativeKeys) return nativeKeys(obj); + var keys = []; + for (var key in obj) if (has$1(obj, key)) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; + } + + // Is a given array, string, or object empty? + // An "empty" object has no enumerable own-properties. + function isEmpty(obj) { + if (obj == null) return true; + // Skip the more expensive `toString`-based type checks if `obj` has no + // `.length`. + var length = getLength(obj); + if (typeof length == 'number' && ( + isArray(obj) || isString(obj) || isArguments$1(obj) + )) return length === 0; + return getLength(keys(obj)) === 0; + } + + // Returns whether an object has a given set of `key:value` pairs. + function isMatch(object, attrs) { + var _keys = keys(attrs), length = _keys.length; + if (object == null) return !length; + var obj = Object(object); + for (var i = 0; i < length; i++) { + var key = _keys[i]; + if (attrs[key] !== obj[key] || !(key in obj)) return false; + } + return true; + } + + // If Underscore is called as a function, it returns a wrapped object that can + // be used OO-style. This wrapper holds altered versions of all functions added + // through `_.mixin`. Wrapped objects may be chained. + function _$1(obj) { + if (obj instanceof _$1) return obj; + if (!(this instanceof _$1)) return new _$1(obj); + this._wrapped = obj; + } + + _$1.VERSION = VERSION; + + // Extracts the result from a wrapped and chained object. + _$1.prototype.value = function() { + return this._wrapped; + }; + + // Provide unwrapping proxies for some methods used in engine operations + // such as arithmetic and JSON stringification. + _$1.prototype.valueOf = _$1.prototype.toJSON = _$1.prototype.value; + + _$1.prototype.toString = function() { + return String(this._wrapped); + }; + + // Internal function to wrap or shallow-copy an ArrayBuffer, + // typed array or DataView to a new view, reusing the buffer. + function toBufferView(bufferSource) { + return new Uint8Array( + bufferSource.buffer || bufferSource, + bufferSource.byteOffset || 0, + getByteLength(bufferSource) + ); + } + + // We use this string twice, so give it a name for minification. + var tagDataView = '[object DataView]'; + + // Internal recursive comparison function for `_.isEqual`. + function eq(a, b, aStack, bStack) { + // Identical objects are equal. `0 === -0`, but they aren't identical. + // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal). + if (a === b) return a !== 0 || 1 / a === 1 / b; + // `null` or `undefined` only equal to itself (strict comparison). + if (a == null || b == null) return false; + // `NaN`s are equivalent, but non-reflexive. + if (a !== a) return b !== b; + // Exhaust primitive checks + var type = typeof a; + if (type !== 'function' && type !== 'object' && typeof b != 'object') return false; + return deepEq(a, b, aStack, bStack); + } + + // Internal recursive comparison function for `_.isEqual`. + function deepEq(a, b, aStack, bStack) { + // Unwrap any wrapped objects. + if (a instanceof _$1) a = a._wrapped; + if (b instanceof _$1) b = b._wrapped; + // Compare `[[Class]]` names. + var className = toString.call(a); + if (className !== toString.call(b)) return false; + // Work around a bug in IE 10 - Edge 13. + if (hasStringTagBug && className == '[object Object]' && isDataView$1(a)) { + if (!isDataView$1(b)) return false; + className = tagDataView; + } + switch (className) { + // These types are compared by value. + case '[object RegExp]': + // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') + case '[object String]': + // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is + // equivalent to `new String("5")`. + return '' + a === '' + b; + case '[object Number]': + // `NaN`s are equivalent, but non-reflexive. + // Object(NaN) is equivalent to NaN. + if (+a !== +a) return +b !== +b; + // An `egal` comparison is performed for other numeric values. + return +a === 0 ? 1 / +a === 1 / b : +a === +b; + case '[object Date]': + case '[object Boolean]': + // Coerce dates and booleans to numeric primitive values. Dates are compared by their + // millisecond representations. Note that invalid dates with millisecond representations + // of `NaN` are not equivalent. + return +a === +b; + case '[object Symbol]': + return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b); + case '[object ArrayBuffer]': + case tagDataView: + // Coerce to typed array so we can fall through. + return deepEq(toBufferView(a), toBufferView(b), aStack, bStack); + } + + var areArrays = className === '[object Array]'; + if (!areArrays && isTypedArray$1(a)) { + var byteLength = getByteLength(a); + if (byteLength !== getByteLength(b)) return false; + if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true; + areArrays = true; + } + if (!areArrays) { + if (typeof a != 'object' || typeof b != 'object') return false; + + // Objects with different constructors are not equivalent, but `Object`s or `Array`s + // from different frames are. + var aCtor = a.constructor, bCtor = b.constructor; + if (aCtor !== bCtor && !(isFunction$1(aCtor) && aCtor instanceof aCtor && + isFunction$1(bCtor) && bCtor instanceof bCtor) + && ('constructor' in a && 'constructor' in b)) { + return false; + } + } + // Assume equality for cyclic structures. The algorithm for detecting cyclic + // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. + + // Initializing stack of traversed objects. + // It's done here since we only need them for objects and arrays comparison. + aStack = aStack || []; + bStack = bStack || []; + var length = aStack.length; + while (length--) { + // Linear search. Performance is inversely proportional to the number of + // unique nested structures. + if (aStack[length] === a) return bStack[length] === b; + } + + // Add the first object to the stack of traversed objects. + aStack.push(a); + bStack.push(b); + + // Recursively compare objects and arrays. + if (areArrays) { + // Compare array lengths to determine if a deep comparison is necessary. + length = a.length; + if (length !== b.length) return false; + // Deep compare the contents, ignoring non-numeric properties. + while (length--) { + if (!eq(a[length], b[length], aStack, bStack)) return false; + } + } else { + // Deep compare objects. + var _keys = keys(a), key; + length = _keys.length; + // Ensure that both objects contain the same number of properties before comparing deep equality. + if (keys(b).length !== length) return false; + while (length--) { + // Deep compare each member + key = _keys[length]; + if (!(has$1(b, key) && eq(a[key], b[key], aStack, bStack))) return false; + } + } + // Remove the first object from the stack of traversed objects. + aStack.pop(); + bStack.pop(); + return true; + } + + // Perform a deep comparison to check if two objects are equal. + function isEqual(a, b) { + return eq(a, b); + } + + // Retrieve all the enumerable property names of an object. + function allKeys(obj) { + if (!isObject(obj)) return []; + var keys = []; + for (var key in obj) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; + } + + // Since the regular `Object.prototype.toString` type tests don't work for + // some types in IE 11, we use a fingerprinting heuristic instead, based + // on the methods. It's not great, but it's the best we got. + // The fingerprint method lists are defined below. + function ie11fingerprint(methods) { + var length = getLength(methods); + return function(obj) { + if (obj == null) return false; + // `Map`, `WeakMap` and `Set` have no enumerable keys. + var keys = allKeys(obj); + if (getLength(keys)) return false; + for (var i = 0; i < length; i++) { + if (!isFunction$1(obj[methods[i]])) return false; + } + // If we are testing against `WeakMap`, we need to ensure that + // `obj` doesn't have a `forEach` method in order to distinguish + // it from a regular `Map`. + return methods !== weakMapMethods || !isFunction$1(obj[forEachName]); + }; + } + + // In the interest of compact minification, we write + // each string in the fingerprints only once. + var forEachName = 'forEach', + hasName = 'has', + commonInit = ['clear', 'delete'], + mapTail = ['get', hasName, 'set']; + + // `Map`, `WeakMap` and `Set` each have slightly different + // combinations of the above sublists. + var mapMethods = commonInit.concat(forEachName, mapTail), + weakMapMethods = commonInit.concat(mapTail), + setMethods = ['add'].concat(commonInit, forEachName, hasName); + + var isMap = isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map'); + + var isWeakMap = isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap'); + + var isSet = isIE11 ? ie11fingerprint(setMethods) : tagTester('Set'); + + var isWeakSet = tagTester('WeakSet'); + + // Retrieve the values of an object's properties. + function values(obj) { + var _keys = keys(obj); + var length = _keys.length; + var values = Array(length); + for (var i = 0; i < length; i++) { + values[i] = obj[_keys[i]]; + } + return values; + } + + // Convert an object into a list of `[key, value]` pairs. + // The opposite of `_.object` with one argument. + function pairs(obj) { + var _keys = keys(obj); + var length = _keys.length; + var pairs = Array(length); + for (var i = 0; i < length; i++) { + pairs[i] = [_keys[i], obj[_keys[i]]]; + } + return pairs; + } + + // Invert the keys and values of an object. The values must be serializable. + function invert(obj) { + var result = {}; + var _keys = keys(obj); + for (var i = 0, length = _keys.length; i < length; i++) { + result[obj[_keys[i]]] = _keys[i]; + } + return result; + } + + // Return a sorted list of the function names available on the object. + function functions(obj) { + var names = []; + for (var key in obj) { + if (isFunction$1(obj[key])) names.push(key); + } + return names.sort(); + } + + // An internal function for creating assigner functions. + function createAssigner(keysFunc, defaults) { + return function(obj) { + var length = arguments.length; + if (defaults) obj = Object(obj); + if (length < 2 || obj == null) return obj; + for (var index = 1; index < length; index++) { + var source = arguments[index], + keys = keysFunc(source), + l = keys.length; + for (var i = 0; i < l; i++) { + var key = keys[i]; + if (!defaults || obj[key] === void 0) obj[key] = source[key]; + } + } + return obj; + }; + } + + // Extend a given object with all the properties in passed-in object(s). + var extend = createAssigner(allKeys); + + // Assigns a given object with all the own properties in the passed-in + // object(s). + // (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) + var extendOwn = createAssigner(keys); + + // Fill in a given object with default properties. + var defaults = createAssigner(allKeys, true); + + // Create a naked function reference for surrogate-prototype-swapping. + function ctor() { + return function(){}; + } + + // An internal function for creating a new object that inherits from another. + function baseCreate(prototype) { + if (!isObject(prototype)) return {}; + if (nativeCreate) return nativeCreate(prototype); + var Ctor = ctor(); + Ctor.prototype = prototype; + var result = new Ctor; + Ctor.prototype = null; + return result; + } + + // Creates an object that inherits from the given prototype object. + // If additional properties are provided then they will be added to the + // created object. + function create(prototype, props) { + var result = baseCreate(prototype); + if (props) extendOwn(result, props); + return result; + } + + // Create a (shallow-cloned) duplicate of an object. + function clone(obj) { + if (!isObject(obj)) return obj; + return isArray(obj) ? obj.slice() : extend({}, obj); + } + + // Invokes `interceptor` with the `obj` and then returns `obj`. + // The primary purpose of this method is to "tap into" a method chain, in + // order to perform operations on intermediate results within the chain. + function tap(obj, interceptor) { + interceptor(obj); + return obj; + } + + // Normalize a (deep) property `path` to array. + // Like `_.iteratee`, this function can be customized. + function toPath$1(path) { + return isArray(path) ? path : [path]; + } + _$1.toPath = toPath$1; + + // Internal wrapper for `_.toPath` to enable minification. + // Similar to `cb` for `_.iteratee`. + function toPath(path) { + return _$1.toPath(path); + } + + // Internal function to obtain a nested property in `obj` along `path`. + function deepGet(obj, path) { + var length = path.length; + for (var i = 0; i < length; i++) { + if (obj == null) return void 0; + obj = obj[path[i]]; + } + return length ? obj : void 0; + } + + // Get the value of the (deep) property on `path` from `object`. + // If any property in `path` does not exist or if the value is + // `undefined`, return `defaultValue` instead. + // The `path` is normalized through `_.toPath`. + function get(object, path, defaultValue) { + var value = deepGet(object, toPath(path)); + return isUndefined(value) ? defaultValue : value; + } + + // Shortcut function for checking if an object has a given property directly on + // itself (in other words, not on a prototype). Unlike the internal `has` + // function, this public version can also traverse nested properties. + function has(obj, path) { + path = toPath(path); + var length = path.length; + for (var i = 0; i < length; i++) { + var key = path[i]; + if (!has$1(obj, key)) return false; + obj = obj[key]; + } + return !!length; + } + + // Keep the identity function around for default iteratees. + function identity(value) { + return value; + } + + // Returns a predicate for checking whether an object has a given set of + // `key:value` pairs. + function matcher(attrs) { + attrs = extendOwn({}, attrs); + return function(obj) { + return isMatch(obj, attrs); + }; + } + + // Creates a function that, when passed an object, will traverse that object’s + // properties down the given `path`, specified as an array of keys or indices. + function property(path) { + path = toPath(path); + return function(obj) { + return deepGet(obj, path); + }; + } + + // Internal function that returns an efficient (for current engines) version + // of the passed-in callback, to be repeatedly applied in other Underscore + // functions. + function optimizeCb(func, context, argCount) { + if (context === void 0) return func; + switch (argCount == null ? 3 : argCount) { + case 1: return function(value) { + return func.call(context, value); + }; + // The 2-argument case is omitted because we’re not using it. + case 3: return function(value, index, collection) { + return func.call(context, value, index, collection); + }; + case 4: return function(accumulator, value, index, collection) { + return func.call(context, accumulator, value, index, collection); + }; + } + return function() { + return func.apply(context, arguments); + }; + } + + // An internal function to generate callbacks that can be applied to each + // element in a collection, returning the desired result — either `_.identity`, + // an arbitrary callback, a property matcher, or a property accessor. + function baseIteratee(value, context, argCount) { + if (value == null) return identity; + if (isFunction$1(value)) return optimizeCb(value, context, argCount); + if (isObject(value) && !isArray(value)) return matcher(value); + return property(value); + } + + // External wrapper for our callback generator. Users may customize + // `_.iteratee` if they want additional predicate/iteratee shorthand styles. + // This abstraction hides the internal-only `argCount` argument. + function iteratee(value, context) { + return baseIteratee(value, context, Infinity); + } + _$1.iteratee = iteratee; + + // The function we call internally to generate a callback. It invokes + // `_.iteratee` if overridden, otherwise `baseIteratee`. + function cb(value, context, argCount) { + if (_$1.iteratee !== iteratee) return _$1.iteratee(value, context); + return baseIteratee(value, context, argCount); + } + + // Returns the results of applying the `iteratee` to each element of `obj`. + // In contrast to `_.map` it returns an object. + function mapObject(obj, iteratee, context) { + iteratee = cb(iteratee, context); + var _keys = keys(obj), + length = _keys.length, + results = {}; + for (var index = 0; index < length; index++) { + var currentKey = _keys[index]; + results[currentKey] = iteratee(obj[currentKey], currentKey, obj); + } + return results; + } + + // Predicate-generating function. Often useful outside of Underscore. + function noop(){} + + // Generates a function for a given object that returns a given property. + function propertyOf(obj) { + if (obj == null) return noop; + return function(path) { + return get(obj, path); + }; + } + + // Run a function **n** times. + function times(n, iteratee, context) { + var accum = Array(Math.max(0, n)); + iteratee = optimizeCb(iteratee, context, 1); + for (var i = 0; i < n; i++) accum[i] = iteratee(i); + return accum; + } + + // Return a random integer between `min` and `max` (inclusive). + function random(min, max) { + if (max == null) { + max = min; + min = 0; + } + return min + Math.floor(Math.random() * (max - min + 1)); + } + + // A (possibly faster) way to get the current timestamp as an integer. + var now = Date.now || function() { + return new Date().getTime(); + }; + + // Internal helper to generate functions for escaping and unescaping strings + // to/from HTML interpolation. + function createEscaper(map) { + var escaper = function(match) { + return map[match]; + }; + // Regexes for identifying a key that needs to be escaped. + var source = '(?:' + keys(map).join('|') + ')'; + var testRegexp = RegExp(source); + var replaceRegexp = RegExp(source, 'g'); + return function(string) { + string = string == null ? '' : '' + string; + return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string; + }; + } + + // Internal list of HTML entities for escaping. + var escapeMap = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', + '`': '`' + }; + + // Function for escaping strings to HTML interpolation. + var _escape = createEscaper(escapeMap); + + // Internal list of HTML entities for unescaping. + var unescapeMap = invert(escapeMap); + + // Function for unescaping strings from HTML interpolation. + var _unescape = createEscaper(unescapeMap); + + // By default, Underscore uses ERB-style template delimiters. Change the + // following template settings to use alternative delimiters. + var templateSettings = _$1.templateSettings = { + evaluate: /<%([\s\S]+?)%>/g, + interpolate: /<%=([\s\S]+?)%>/g, + escape: /<%-([\s\S]+?)%>/g + }; + + // When customizing `_.templateSettings`, if you don't want to define an + // interpolation, evaluation or escaping regex, we need one that is + // guaranteed not to match. + var noMatch = /(.)^/; + + // Certain characters need to be escaped so that they can be put into a + // string literal. + var escapes = { + "'": "'", + '\\': '\\', + '\r': 'r', + '\n': 'n', + '\u2028': 'u2028', + '\u2029': 'u2029' + }; + + var escapeRegExp = /\\|'|\r|\n|\u2028|\u2029/g; + + function escapeChar(match) { + return '\\' + escapes[match]; + } + + // In order to prevent third-party code injection through + // `_.templateSettings.variable`, we test it against the following regular + // expression. It is intentionally a bit more liberal than just matching valid + // identifiers, but still prevents possible loopholes through defaults or + // destructuring assignment. + var bareIdentifier = /^\s*(\w|\$)+\s*$/; + + // JavaScript micro-templating, similar to John Resig's implementation. + // Underscore templating handles arbitrary delimiters, preserves whitespace, + // and correctly escapes quotes within interpolated code. + // NB: `oldSettings` only exists for backwards compatibility. + function template(text, settings, oldSettings) { + if (!settings && oldSettings) settings = oldSettings; + settings = defaults({}, settings, _$1.templateSettings); + + // Combine delimiters into one regular expression via alternation. + var matcher = RegExp([ + (settings.escape || noMatch).source, + (settings.interpolate || noMatch).source, + (settings.evaluate || noMatch).source + ].join('|') + '|$', 'g'); + + // Compile the template source, escaping string literals appropriately. + var index = 0; + var source = "__p+='"; + text.replace(matcher, function(match, escape, interpolate, evaluate, offset) { + source += text.slice(index, offset).replace(escapeRegExp, escapeChar); + index = offset + match.length; + + if (escape) { + source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'"; + } else if (interpolate) { + source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'"; + } else if (evaluate) { + source += "';\n" + evaluate + "\n__p+='"; + } + + // Adobe VMs need the match returned to produce the correct offset. + return match; + }); + source += "';\n"; + + var argument = settings.variable; + if (argument) { + // Insure against third-party code injection. (CVE-2021-23358) + if (!bareIdentifier.test(argument)) throw new Error( + 'variable is not a bare identifier: ' + argument + ); + } else { + // If a variable is not specified, place data values in local scope. + source = 'with(obj||{}){\n' + source + '}\n'; + argument = 'obj'; + } + + source = "var __t,__p='',__j=Array.prototype.join," + + "print=function(){__p+=__j.call(arguments,'');};\n" + + source + 'return __p;\n'; + + var render; + try { + render = new Function(argument, '_', source); + } catch (e) { + e.source = source; + throw e; + } + + var template = function(data) { + return render.call(this, data, _$1); + }; + + // Provide the compiled source as a convenience for precompilation. + template.source = 'function(' + argument + '){\n' + source + '}'; + + return template; + } + + // Traverses the children of `obj` along `path`. If a child is a function, it + // is invoked with its parent as context. Returns the value of the final + // child, or `fallback` if any child is undefined. + function result(obj, path, fallback) { + path = toPath(path); + var length = path.length; + if (!length) { + return isFunction$1(fallback) ? fallback.call(obj) : fallback; + } + for (var i = 0; i < length; i++) { + var prop = obj == null ? void 0 : obj[path[i]]; + if (prop === void 0) { + prop = fallback; + i = length; // Ensure we don't continue iterating. + } + obj = isFunction$1(prop) ? prop.call(obj) : prop; + } + return obj; + } + + // Generate a unique integer id (unique within the entire client session). + // Useful for temporary DOM ids. + var idCounter = 0; + function uniqueId(prefix) { + var id = ++idCounter + ''; + return prefix ? prefix + id : id; + } + + // Start chaining a wrapped Underscore object. + function chain(obj) { + var instance = _$1(obj); + instance._chain = true; + return instance; + } + + // Internal function to execute `sourceFunc` bound to `context` with optional + // `args`. Determines whether to execute a function as a constructor or as a + // normal function. + function executeBound(sourceFunc, boundFunc, context, callingContext, args) { + if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args); + var self = baseCreate(sourceFunc.prototype); + var result = sourceFunc.apply(self, args); + if (isObject(result)) return result; + return self; + } + + // Partially apply a function by creating a version that has had some of its + // arguments pre-filled, without changing its dynamic `this` context. `_` acts + // as a placeholder by default, allowing any combination of arguments to be + // pre-filled. Set `_.partial.placeholder` for a custom placeholder argument. + var partial = restArguments(function(func, boundArgs) { + var placeholder = partial.placeholder; + var bound = function() { + var position = 0, length = boundArgs.length; + var args = Array(length); + for (var i = 0; i < length; i++) { + args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i]; + } + while (position < arguments.length) args.push(arguments[position++]); + return executeBound(func, bound, this, this, args); + }; + return bound; + }); + + partial.placeholder = _$1; + + // Create a function bound to a given object (assigning `this`, and arguments, + // optionally). + var bind = restArguments(function(func, context, args) { + if (!isFunction$1(func)) throw new TypeError('Bind must be called on a function'); + var bound = restArguments(function(callArgs) { + return executeBound(func, bound, context, this, args.concat(callArgs)); + }); + return bound; + }); + + // Internal helper for collection methods to determine whether a collection + // should be iterated as an array or as an object. + // Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength + // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094 + var isArrayLike = createSizePropertyCheck(getLength); + + // Internal implementation of a recursive `flatten` function. + function flatten$1(input, depth, strict, output) { + output = output || []; + if (!depth && depth !== 0) { + depth = Infinity; + } else if (depth <= 0) { + return output.concat(input); + } + var idx = output.length; + for (var i = 0, length = getLength(input); i < length; i++) { + var value = input[i]; + if (isArrayLike(value) && (isArray(value) || isArguments$1(value))) { + // Flatten current level of array or arguments object. + if (depth > 1) { + flatten$1(value, depth - 1, strict, output); + idx = output.length; + } else { + var j = 0, len = value.length; + while (j < len) output[idx++] = value[j++]; + } + } else if (!strict) { + output[idx++] = value; + } + } + return output; + } + + // Bind a number of an object's methods to that object. Remaining arguments + // are the method names to be bound. Useful for ensuring that all callbacks + // defined on an object belong to it. + var bindAll = restArguments(function(obj, keys) { + keys = flatten$1(keys, false, false); + var index = keys.length; + if (index < 1) throw new Error('bindAll must be passed function names'); + while (index--) { + var key = keys[index]; + obj[key] = bind(obj[key], obj); + } + return obj; + }); + + // Memoize an expensive function by storing its results. + function memoize(func, hasher) { + var memoize = function(key) { + var cache = memoize.cache; + var address = '' + (hasher ? hasher.apply(this, arguments) : key); + if (!has$1(cache, address)) cache[address] = func.apply(this, arguments); + return cache[address]; + }; + memoize.cache = {}; + return memoize; + } + + // Delays a function for the given number of milliseconds, and then calls + // it with the arguments supplied. + var delay = restArguments(function(func, wait, args) { + return setTimeout(function() { + return func.apply(null, args); + }, wait); + }); + + // Defers a function, scheduling it to run after the current call stack has + // cleared. + var defer = partial(delay, _$1, 1); + + // Returns a function, that, when invoked, will only be triggered at most once + // during a given window of time. Normally, the throttled function will run + // as much as it can, without ever going more than once per `wait` duration; + // but if you'd like to disable the execution on the leading edge, pass + // `{leading: false}`. To disable execution on the trailing edge, ditto. + function throttle(func, wait, options) { + var timeout, context, args, result; + var previous = 0; + if (!options) options = {}; + + var later = function() { + previous = options.leading === false ? 0 : now(); + timeout = null; + result = func.apply(context, args); + if (!timeout) context = args = null; + }; + + var throttled = function() { + var _now = now(); + if (!previous && options.leading === false) previous = _now; + var remaining = wait - (_now - previous); + context = this; + args = arguments; + if (remaining <= 0 || remaining > wait) { + if (timeout) { + clearTimeout(timeout); + timeout = null; + } + previous = _now; + result = func.apply(context, args); + if (!timeout) context = args = null; + } else if (!timeout && options.trailing !== false) { + timeout = setTimeout(later, remaining); + } + return result; + }; + + throttled.cancel = function() { + clearTimeout(timeout); + previous = 0; + timeout = context = args = null; + }; + + return throttled; + } + + // When a sequence of calls of the returned function ends, the argument + // function is triggered. The end of a sequence is defined by the `wait` + // parameter. If `immediate` is passed, the argument function will be + // triggered at the beginning of the sequence instead of at the end. + function debounce(func, wait, immediate) { + var timeout, previous, args, result, context; + + var later = function() { + var passed = now() - previous; + if (wait > passed) { + timeout = setTimeout(later, wait - passed); + } else { + timeout = null; + if (!immediate) result = func.apply(context, args); + // This check is needed because `func` can recursively invoke `debounced`. + if (!timeout) args = context = null; + } + }; + + var debounced = restArguments(function(_args) { + context = this; + args = _args; + previous = now(); + if (!timeout) { + timeout = setTimeout(later, wait); + if (immediate) result = func.apply(context, args); + } + return result; + }); + + debounced.cancel = function() { + clearTimeout(timeout); + timeout = args = context = null; + }; + + return debounced; + } + + // Returns the first function passed as an argument to the second, + // allowing you to adjust arguments, run code before and after, and + // conditionally execute the original function. + function wrap(func, wrapper) { + return partial(wrapper, func); + } + + // Returns a negated version of the passed-in predicate. + function negate(predicate) { + return function() { + return !predicate.apply(this, arguments); + }; + } + + // Returns a function that is the composition of a list of functions, each + // consuming the return value of the function that follows. + function compose() { + var args = arguments; + var start = args.length - 1; + return function() { + var i = start; + var result = args[start].apply(this, arguments); + while (i--) result = args[i].call(this, result); + return result; + }; + } + + // Returns a function that will only be executed on and after the Nth call. + function after(times, func) { + return function() { + if (--times < 1) { + return func.apply(this, arguments); + } + }; + } + + // Returns a function that will only be executed up to (but not including) the + // Nth call. + function before(times, func) { + var memo; + return function() { + if (--times > 0) { + memo = func.apply(this, arguments); + } + if (times <= 1) func = null; + return memo; + }; + } + + // Returns a function that will be executed at most one time, no matter how + // often you call it. Useful for lazy initialization. + var once = partial(before, 2); + + // Returns the first key on an object that passes a truth test. + function findKey(obj, predicate, context) { + predicate = cb(predicate, context); + var _keys = keys(obj), key; + for (var i = 0, length = _keys.length; i < length; i++) { + key = _keys[i]; + if (predicate(obj[key], key, obj)) return key; + } + } + + // Internal function to generate `_.findIndex` and `_.findLastIndex`. + function createPredicateIndexFinder(dir) { + return function(array, predicate, context) { + predicate = cb(predicate, context); + var length = getLength(array); + var index = dir > 0 ? 0 : length - 1; + for (; index >= 0 && index < length; index += dir) { + if (predicate(array[index], index, array)) return index; + } + return -1; + }; + } + + // Returns the first index on an array-like that passes a truth test. + var findIndex = createPredicateIndexFinder(1); + + // Returns the last index on an array-like that passes a truth test. + var findLastIndex = createPredicateIndexFinder(-1); + + // Use a comparator function to figure out the smallest index at which + // an object should be inserted so as to maintain order. Uses binary search. + function sortedIndex(array, obj, iteratee, context) { + iteratee = cb(iteratee, context, 1); + var value = iteratee(obj); + var low = 0, high = getLength(array); + while (low < high) { + var mid = Math.floor((low + high) / 2); + if (iteratee(array[mid]) < value) low = mid + 1; else high = mid; + } + return low; + } + + // Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions. + function createIndexFinder(dir, predicateFind, sortedIndex) { + return function(array, item, idx) { + var i = 0, length = getLength(array); + if (typeof idx == 'number') { + if (dir > 0) { + i = idx >= 0 ? idx : Math.max(idx + length, i); + } else { + length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1; + } + } else if (sortedIndex && idx && length) { + idx = sortedIndex(array, item); + return array[idx] === item ? idx : -1; + } + if (item !== item) { + idx = predicateFind(slice.call(array, i, length), isNaN$1); + return idx >= 0 ? idx + i : -1; + } + for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) { + if (array[idx] === item) return idx; + } + return -1; + }; + } + + // Return the position of the first occurrence of an item in an array, + // or -1 if the item is not included in the array. + // If the array is large and already in sort order, pass `true` + // for **isSorted** to use binary search. + var indexOf = createIndexFinder(1, findIndex, sortedIndex); + + // Return the position of the last occurrence of an item in an array, + // or -1 if the item is not included in the array. + var lastIndexOf = createIndexFinder(-1, findLastIndex); + + // Return the first value which passes a truth test. + function find(obj, predicate, context) { + var keyFinder = isArrayLike(obj) ? findIndex : findKey; + var key = keyFinder(obj, predicate, context); + if (key !== void 0 && key !== -1) return obj[key]; + } + + // Convenience version of a common use case of `_.find`: getting the first + // object containing specific `key:value` pairs. + function findWhere(obj, attrs) { + return find(obj, matcher(attrs)); + } + + // The cornerstone for collection functions, an `each` + // implementation, aka `forEach`. + // Handles raw objects in addition to array-likes. Treats all + // sparse array-likes as if they were dense. + function each(obj, iteratee, context) { + iteratee = optimizeCb(iteratee, context); + var i, length; + if (isArrayLike(obj)) { + for (i = 0, length = obj.length; i < length; i++) { + iteratee(obj[i], i, obj); + } + } else { + var _keys = keys(obj); + for (i = 0, length = _keys.length; i < length; i++) { + iteratee(obj[_keys[i]], _keys[i], obj); + } + } + return obj; + } + + // Return the results of applying the iteratee to each element. + function map(obj, iteratee, context) { + iteratee = cb(iteratee, context); + var _keys = !isArrayLike(obj) && keys(obj), + length = (_keys || obj).length, + results = Array(length); + for (var index = 0; index < length; index++) { + var currentKey = _keys ? _keys[index] : index; + results[index] = iteratee(obj[currentKey], currentKey, obj); + } + return results; + } + + // Internal helper to create a reducing function, iterating left or right. + function createReduce(dir) { + // Wrap code that reassigns argument variables in a separate function than + // the one that accesses `arguments.length` to avoid a perf hit. (#1991) + var reducer = function(obj, iteratee, memo, initial) { + var _keys = !isArrayLike(obj) && keys(obj), + length = (_keys || obj).length, + index = dir > 0 ? 0 : length - 1; + if (!initial) { + memo = obj[_keys ? _keys[index] : index]; + index += dir; + } + for (; index >= 0 && index < length; index += dir) { + var currentKey = _keys ? _keys[index] : index; + memo = iteratee(memo, obj[currentKey], currentKey, obj); + } + return memo; + }; + + return function(obj, iteratee, memo, context) { + var initial = arguments.length >= 3; + return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial); + }; + } + + // **Reduce** builds up a single result from a list of values, aka `inject`, + // or `foldl`. + var reduce = createReduce(1); + + // The right-associative version of reduce, also known as `foldr`. + var reduceRight = createReduce(-1); + + // Return all the elements that pass a truth test. + function filter(obj, predicate, context) { + var results = []; + predicate = cb(predicate, context); + each(obj, function(value, index, list) { + if (predicate(value, index, list)) results.push(value); + }); + return results; + } + + // Return all the elements for which a truth test fails. + function reject(obj, predicate, context) { + return filter(obj, negate(cb(predicate)), context); + } + + // Determine whether all of the elements pass a truth test. + function every(obj, predicate, context) { + predicate = cb(predicate, context); + var _keys = !isArrayLike(obj) && keys(obj), + length = (_keys || obj).length; + for (var index = 0; index < length; index++) { + var currentKey = _keys ? _keys[index] : index; + if (!predicate(obj[currentKey], currentKey, obj)) return false; + } + return true; + } + + // Determine if at least one element in the object passes a truth test. + function some(obj, predicate, context) { + predicate = cb(predicate, context); + var _keys = !isArrayLike(obj) && keys(obj), + length = (_keys || obj).length; + for (var index = 0; index < length; index++) { + var currentKey = _keys ? _keys[index] : index; + if (predicate(obj[currentKey], currentKey, obj)) return true; + } + return false; + } + + // Determine if the array or object contains a given item (using `===`). + function contains(obj, item, fromIndex, guard) { + if (!isArrayLike(obj)) obj = values(obj); + if (typeof fromIndex != 'number' || guard) fromIndex = 0; + return indexOf(obj, item, fromIndex) >= 0; + } + + // Invoke a method (with arguments) on every item in a collection. + var invoke = restArguments(function(obj, path, args) { + var contextPath, func; + if (isFunction$1(path)) { + func = path; + } else { + path = toPath(path); + contextPath = path.slice(0, -1); + path = path[path.length - 1]; + } + return map(obj, function(context) { + var method = func; + if (!method) { + if (contextPath && contextPath.length) { + context = deepGet(context, contextPath); + } + if (context == null) return void 0; + method = context[path]; + } + return method == null ? method : method.apply(context, args); + }); + }); + + // Convenience version of a common use case of `_.map`: fetching a property. + function pluck(obj, key) { + return map(obj, property(key)); + } + + // Convenience version of a common use case of `_.filter`: selecting only + // objects containing specific `key:value` pairs. + function where(obj, attrs) { + return filter(obj, matcher(attrs)); + } + + // Return the maximum element (or element-based computation). + function max(obj, iteratee, context) { + var result = -Infinity, lastComputed = -Infinity, + value, computed; + if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) { + obj = isArrayLike(obj) ? obj : values(obj); + for (var i = 0, length = obj.length; i < length; i++) { + value = obj[i]; + if (value != null && value > result) { + result = value; + } + } + } else { + iteratee = cb(iteratee, context); + each(obj, function(v, index, list) { + computed = iteratee(v, index, list); + if (computed > lastComputed || computed === -Infinity && result === -Infinity) { + result = v; + lastComputed = computed; + } + }); + } + return result; + } + + // Return the minimum element (or element-based computation). + function min(obj, iteratee, context) { + var result = Infinity, lastComputed = Infinity, + value, computed; + if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) { + obj = isArrayLike(obj) ? obj : values(obj); + for (var i = 0, length = obj.length; i < length; i++) { + value = obj[i]; + if (value != null && value < result) { + result = value; + } + } + } else { + iteratee = cb(iteratee, context); + each(obj, function(v, index, list) { + computed = iteratee(v, index, list); + if (computed < lastComputed || computed === Infinity && result === Infinity) { + result = v; + lastComputed = computed; + } + }); + } + return result; + } + + // Sample **n** random values from a collection using the modern version of the + // [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle). + // If **n** is not specified, returns a single random element. + // The internal `guard` argument allows it to work with `_.map`. + function sample(obj, n, guard) { + if (n == null || guard) { + if (!isArrayLike(obj)) obj = values(obj); + return obj[random(obj.length - 1)]; + } + var sample = isArrayLike(obj) ? clone(obj) : values(obj); + var length = getLength(sample); + n = Math.max(Math.min(n, length), 0); + var last = length - 1; + for (var index = 0; index < n; index++) { + var rand = random(index, last); + var temp = sample[index]; + sample[index] = sample[rand]; + sample[rand] = temp; + } + return sample.slice(0, n); + } + + // Shuffle a collection. + function shuffle(obj) { + return sample(obj, Infinity); + } + + // Sort the object's values by a criterion produced by an iteratee. + function sortBy(obj, iteratee, context) { + var index = 0; + iteratee = cb(iteratee, context); + return pluck(map(obj, function(value, key, list) { + return { + value: value, + index: index++, + criteria: iteratee(value, key, list) + }; + }).sort(function(left, right) { + var a = left.criteria; + var b = right.criteria; + if (a !== b) { + if (a > b || a === void 0) return 1; + if (a < b || b === void 0) return -1; + } + return left.index - right.index; + }), 'value'); + } + + // An internal function used for aggregate "group by" operations. + function group(behavior, partition) { + return function(obj, iteratee, context) { + var result = partition ? [[], []] : {}; + iteratee = cb(iteratee, context); + each(obj, function(value, index) { + var key = iteratee(value, index, obj); + behavior(result, value, key); + }); + return result; + }; + } + + // Groups the object's values by a criterion. Pass either a string attribute + // to group by, or a function that returns the criterion. + var groupBy = group(function(result, value, key) { + if (has$1(result, key)) result[key].push(value); else result[key] = [value]; + }); + + // Indexes the object's values by a criterion, similar to `_.groupBy`, but for + // when you know that your index values will be unique. + var indexBy = group(function(result, value, key) { + result[key] = value; + }); + + // Counts instances of an object that group by a certain criterion. Pass + // either a string attribute to count by, or a function that returns the + // criterion. + var countBy = group(function(result, value, key) { + if (has$1(result, key)) result[key]++; else result[key] = 1; + }); + + // Split a collection into two arrays: one whose elements all pass the given + // truth test, and one whose elements all do not pass the truth test. + var partition = group(function(result, value, pass) { + result[pass ? 0 : 1].push(value); + }, true); + + // Safely create a real, live array from anything iterable. + var reStrSymbol = /[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g; + function toArray(obj) { + if (!obj) return []; + if (isArray(obj)) return slice.call(obj); + if (isString(obj)) { + // Keep surrogate pair characters together. + return obj.match(reStrSymbol); + } + if (isArrayLike(obj)) return map(obj, identity); + return values(obj); + } + + // Return the number of elements in a collection. + function size(obj) { + if (obj == null) return 0; + return isArrayLike(obj) ? obj.length : keys(obj).length; + } + + // Internal `_.pick` helper function to determine whether `key` is an enumerable + // property name of `obj`. + function keyInObj(value, key, obj) { + return key in obj; + } + + // Return a copy of the object only containing the allowed properties. + var pick = restArguments(function(obj, keys) { + var result = {}, iteratee = keys[0]; + if (obj == null) return result; + if (isFunction$1(iteratee)) { + if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]); + keys = allKeys(obj); + } else { + iteratee = keyInObj; + keys = flatten$1(keys, false, false); + obj = Object(obj); + } + for (var i = 0, length = keys.length; i < length; i++) { + var key = keys[i]; + var value = obj[key]; + if (iteratee(value, key, obj)) result[key] = value; + } + return result; + }); + + // Return a copy of the object without the disallowed properties. + var omit = restArguments(function(obj, keys) { + var iteratee = keys[0], context; + if (isFunction$1(iteratee)) { + iteratee = negate(iteratee); + if (keys.length > 1) context = keys[1]; + } else { + keys = map(flatten$1(keys, false, false), String); + iteratee = function(value, key) { + return !contains(keys, key); + }; + } + return pick(obj, iteratee, context); + }); + + // Returns everything but the last entry of the array. Especially useful on + // the arguments object. Passing **n** will return all the values in + // the array, excluding the last N. + function initial(array, n, guard) { + return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n))); + } + + // Get the first element of an array. Passing **n** will return the first N + // values in the array. The **guard** check allows it to work with `_.map`. + function first(array, n, guard) { + if (array == null || array.length < 1) return n == null || guard ? void 0 : []; + if (n == null || guard) return array[0]; + return initial(array, array.length - n); + } + + // Returns everything but the first entry of the `array`. Especially useful on + // the `arguments` object. Passing an **n** will return the rest N values in the + // `array`. + function rest(array, n, guard) { + return slice.call(array, n == null || guard ? 1 : n); + } + + // Get the last element of an array. Passing **n** will return the last N + // values in the array. + function last(array, n, guard) { + if (array == null || array.length < 1) return n == null || guard ? void 0 : []; + if (n == null || guard) return array[array.length - 1]; + return rest(array, Math.max(0, array.length - n)); + } + + // Trim out all falsy values from an array. + function compact(array) { + return filter(array, Boolean); + } + + // Flatten out an array, either recursively (by default), or up to `depth`. + // Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively. + function flatten(array, depth) { + return flatten$1(array, depth, false); + } + + // Take the difference between one array and a number of other arrays. + // Only the elements present in just the first array will remain. + var difference = restArguments(function(array, rest) { + rest = flatten$1(rest, true, true); + return filter(array, function(value){ + return !contains(rest, value); + }); + }); + + // Return a version of the array that does not contain the specified value(s). + var without = restArguments(function(array, otherArrays) { + return difference(array, otherArrays); + }); + + // Produce a duplicate-free version of the array. If the array has already + // been sorted, you have the option of using a faster algorithm. + // The faster algorithm will not work with an iteratee if the iteratee + // is not a one-to-one function, so providing an iteratee will disable + // the faster algorithm. + function uniq(array, isSorted, iteratee, context) { + if (!isBoolean(isSorted)) { + context = iteratee; + iteratee = isSorted; + isSorted = false; + } + if (iteratee != null) iteratee = cb(iteratee, context); + var result = []; + var seen = []; + for (var i = 0, length = getLength(array); i < length; i++) { + var value = array[i], + computed = iteratee ? iteratee(value, i, array) : value; + if (isSorted && !iteratee) { + if (!i || seen !== computed) result.push(value); + seen = computed; + } else if (iteratee) { + if (!contains(seen, computed)) { + seen.push(computed); + result.push(value); + } + } else if (!contains(result, value)) { + result.push(value); + } + } + return result; + } + + // Produce an array that contains the union: each distinct element from all of + // the passed-in arrays. + var union = restArguments(function(arrays) { + return uniq(flatten$1(arrays, true, true)); + }); + + // Produce an array that contains every item shared between all the + // passed-in arrays. + function intersection(array) { + var result = []; + var argsLength = arguments.length; + for (var i = 0, length = getLength(array); i < length; i++) { + var item = array[i]; + if (contains(result, item)) continue; + var j; + for (j = 1; j < argsLength; j++) { + if (!contains(arguments[j], item)) break; + } + if (j === argsLength) result.push(item); + } + return result; + } + + // Complement of zip. Unzip accepts an array of arrays and groups + // each array's elements on shared indices. + function unzip(array) { + var length = array && max(array, getLength).length || 0; + var result = Array(length); + + for (var index = 0; index < length; index++) { + result[index] = pluck(array, index); + } + return result; + } + + // Zip together multiple lists into a single array -- elements that share + // an index go together. + var zip = restArguments(unzip); + + // Converts lists into objects. Pass either a single array of `[key, value]` + // pairs, or two parallel arrays of the same length -- one of keys, and one of + // the corresponding values. Passing by pairs is the reverse of `_.pairs`. + function object(list, values) { + var result = {}; + for (var i = 0, length = getLength(list); i < length; i++) { + if (values) { + result[list[i]] = values[i]; + } else { + result[list[i][0]] = list[i][1]; + } + } + return result; + } + + // Generate an integer Array containing an arithmetic progression. A port of + // the native Python `range()` function. See + // [the Python documentation](https://docs.python.org/library/functions.html#range). + function range(start, stop, step) { + if (stop == null) { + stop = start || 0; + start = 0; + } + if (!step) { + step = stop < start ? -1 : 1; + } + + var length = Math.max(Math.ceil((stop - start) / step), 0); + var range = Array(length); + + for (var idx = 0; idx < length; idx++, start += step) { + range[idx] = start; + } + + return range; + } + + // Chunk a single array into multiple arrays, each containing `count` or fewer + // items. + function chunk(array, count) { + if (count == null || count < 1) return []; + var result = []; + var i = 0, length = array.length; + while (i < length) { + result.push(slice.call(array, i, i += count)); + } + return result; + } + + // Helper function to continue chaining intermediate results. + function chainResult(instance, obj) { + return instance._chain ? _$1(obj).chain() : obj; + } + + // Add your own custom functions to the Underscore object. + function mixin(obj) { + each(functions(obj), function(name) { + var func = _$1[name] = obj[name]; + _$1.prototype[name] = function() { + var args = [this._wrapped]; + push.apply(args, arguments); + return chainResult(this, func.apply(_$1, args)); + }; + }); + return _$1; + } + + // Add all mutator `Array` functions to the wrapper. + each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { + var method = ArrayProto[name]; + _$1.prototype[name] = function() { + var obj = this._wrapped; + if (obj != null) { + method.apply(obj, arguments); + if ((name === 'shift' || name === 'splice') && obj.length === 0) { + delete obj[0]; + } + } + return chainResult(this, obj); + }; + }); + + // Add all accessor `Array` functions to the wrapper. + each(['concat', 'join', 'slice'], function(name) { + var method = ArrayProto[name]; + _$1.prototype[name] = function() { + var obj = this._wrapped; + if (obj != null) obj = method.apply(obj, arguments); + return chainResult(this, obj); + }; + }); + + // Named Exports + + var allExports = { + __proto__: null, + VERSION: VERSION, + restArguments: restArguments, + isObject: isObject, + isNull: isNull, + isUndefined: isUndefined, + isBoolean: isBoolean, + isElement: isElement, + isString: isString, + isNumber: isNumber, + isDate: isDate, + isRegExp: isRegExp, + isError: isError, + isSymbol: isSymbol, + isArrayBuffer: isArrayBuffer, + isDataView: isDataView$1, + isArray: isArray, + isFunction: isFunction$1, + isArguments: isArguments$1, + isFinite: isFinite$1, + isNaN: isNaN$1, + isTypedArray: isTypedArray$1, + isEmpty: isEmpty, + isMatch: isMatch, + isEqual: isEqual, + isMap: isMap, + isWeakMap: isWeakMap, + isSet: isSet, + isWeakSet: isWeakSet, + keys: keys, + allKeys: allKeys, + values: values, + pairs: pairs, + invert: invert, + functions: functions, + methods: functions, + extend: extend, + extendOwn: extendOwn, + assign: extendOwn, + defaults: defaults, + create: create, + clone: clone, + tap: tap, + get: get, + has: has, + mapObject: mapObject, + identity: identity, + constant: constant, + noop: noop, + toPath: toPath$1, + property: property, + propertyOf: propertyOf, + matcher: matcher, + matches: matcher, + times: times, + random: random, + now: now, + escape: _escape, + unescape: _unescape, + templateSettings: templateSettings, + template: template, + result: result, + uniqueId: uniqueId, + chain: chain, + iteratee: iteratee, + partial: partial, + bind: bind, + bindAll: bindAll, + memoize: memoize, + delay: delay, + defer: defer, + throttle: throttle, + debounce: debounce, + wrap: wrap, + negate: negate, + compose: compose, + after: after, + before: before, + once: once, + findKey: findKey, + findIndex: findIndex, + findLastIndex: findLastIndex, + sortedIndex: sortedIndex, + indexOf: indexOf, + lastIndexOf: lastIndexOf, + find: find, + detect: find, + findWhere: findWhere, + each: each, + forEach: each, + map: map, + collect: map, + reduce: reduce, + foldl: reduce, + inject: reduce, + reduceRight: reduceRight, + foldr: reduceRight, + filter: filter, + select: filter, + reject: reject, + every: every, + all: every, + some: some, + any: some, + contains: contains, + includes: contains, + include: contains, + invoke: invoke, + pluck: pluck, + where: where, + max: max, + min: min, + shuffle: shuffle, + sample: sample, + sortBy: sortBy, + groupBy: groupBy, + indexBy: indexBy, + countBy: countBy, + partition: partition, + toArray: toArray, + size: size, + pick: pick, + omit: omit, + first: first, + head: first, + take: first, + initial: initial, + last: last, + rest: rest, + tail: rest, + drop: rest, + compact: compact, + flatten: flatten, + without: without, + uniq: uniq, + unique: uniq, + union: union, + intersection: intersection, + difference: difference, + unzip: unzip, + transpose: unzip, + zip: zip, + object: object, + range: range, + chunk: chunk, + mixin: mixin, + 'default': _$1 + }; + + // Default Export + + // Add all of the Underscore functions to the wrapper object. + var _ = mixin(allExports); + // Legacy Node.js API. + _._ = _; + + return _; + +}))); +//# sourceMappingURL=underscore-umd.js.map diff --git a/_static/underscore.js b/_static/underscore.js new file mode 100644 index 00000000..cf177d42 --- /dev/null +++ b/_static/underscore.js @@ -0,0 +1,6 @@ +!function(n,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r():"function"==typeof define&&define.amd?define("underscore",r):(n="undefined"!=typeof globalThis?globalThis:n||self,function(){var t=n._,e=n._=r();e.noConflict=function(){return n._=t,e}}())}(this,(function(){ +// Underscore.js 1.13.1 +// https://underscorejs.org +// (c) 2009-2021 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors +// Underscore may be freely distributed under the MIT license. +var n="1.13.1",r="object"==typeof self&&self.self===self&&self||"object"==typeof global&&global.global===global&&global||Function("return this")()||{},t=Array.prototype,e=Object.prototype,u="undefined"!=typeof Symbol?Symbol.prototype:null,o=t.push,i=t.slice,a=e.toString,f=e.hasOwnProperty,c="undefined"!=typeof ArrayBuffer,l="undefined"!=typeof DataView,s=Array.isArray,p=Object.keys,v=Object.create,h=c&&ArrayBuffer.isView,y=isNaN,d=isFinite,g=!{toString:null}.propertyIsEnumerable("toString"),b=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"],m=Math.pow(2,53)-1;function j(n,r){return r=null==r?n.length-1:+r,function(){for(var t=Math.max(arguments.length-r,0),e=Array(t),u=0;u=0&&t<=m}}function J(n){return function(r){return null==r?void 0:r[n]}}var G=J("byteLength"),H=K(G),Q=/\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;var X=c?function(n){return h?h(n)&&!q(n):H(n)&&Q.test(a.call(n))}:C(!1),Y=J("length");function Z(n,r){r=function(n){for(var r={},t=n.length,e=0;e":">",'"':""","'":"'","`":"`"},Cn=Ln($n),Kn=Ln(_n($n)),Jn=tn.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g},Gn=/(.)^/,Hn={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},Qn=/\\|'|\r|\n|\u2028|\u2029/g;function Xn(n){return"\\"+Hn[n]}var Yn=/^\s*(\w|\$)+\s*$/;var Zn=0;function nr(n,r,t,e,u){if(!(e instanceof r))return n.apply(t,u);var o=Mn(n.prototype),i=n.apply(o,u);return _(i)?i:o}var rr=j((function(n,r){var t=rr.placeholder,e=function(){for(var u=0,o=r.length,i=Array(o),a=0;a1)ur(a,r-1,t,e),u=e.length;else for(var f=0,c=a.length;f0&&(t=r.apply(this,arguments)),n<=1&&(r=null),t}}var lr=rr(cr,2);function sr(n,r,t){r=qn(r,t);for(var e,u=nn(n),o=0,i=u.length;o0?0:u-1;o>=0&&o0?a=o>=0?o:Math.max(o+f,a):f=o>=0?Math.min(o+1,f):o+f+1;else if(t&&o&&f)return e[o=t(e,u)]===u?o:-1;if(u!=u)return(o=r(i.call(e,a,f),$))>=0?o+a:-1;for(o=n>0?a:f-1;o>=0&&o0?0:i-1;for(u||(e=r[o?o[a]:a],a+=n);a>=0&&a=3;return r(n,Fn(t,u,4),e,o)}}var Ar=wr(1),xr=wr(-1);function Sr(n,r,t){var e=[];return r=qn(r,t),jr(n,(function(n,t,u){r(n,t,u)&&e.push(n)})),e}function Or(n,r,t){r=qn(r,t);for(var e=!er(n)&&nn(n),u=(e||n).length,o=0;o=0}var Br=j((function(n,r,t){var e,u;return D(r)?u=r:(r=Nn(r),e=r.slice(0,-1),r=r[r.length-1]),_r(n,(function(n){var o=u;if(!o){if(e&&e.length&&(n=In(n,e)),null==n)return;o=n[r]}return null==o?o:o.apply(n,t)}))}));function Nr(n,r){return _r(n,Rn(r))}function Ir(n,r,t){var e,u,o=-1/0,i=-1/0;if(null==r||"number"==typeof r&&"object"!=typeof n[0]&&null!=n)for(var a=0,f=(n=er(n)?n:jn(n)).length;ao&&(o=e);else r=qn(r,t),jr(n,(function(n,t,e){((u=r(n,t,e))>i||u===-1/0&&o===-1/0)&&(o=n,i=u)}));return o}function Tr(n,r,t){if(null==r||t)return er(n)||(n=jn(n)),n[Wn(n.length-1)];var e=er(n)?En(n):jn(n),u=Y(e);r=Math.max(Math.min(r,u),0);for(var o=u-1,i=0;i1&&(e=Fn(e,r[1])),r=an(n)):(e=qr,r=ur(r,!1,!1),n=Object(n));for(var u=0,o=r.length;u1&&(t=r[1])):(r=_r(ur(r,!1,!1),String),e=function(n,t){return!Er(r,t)}),Ur(n,e,t)}));function zr(n,r,t){return i.call(n,0,Math.max(0,n.length-(null==r||t?1:r)))}function Lr(n,r,t){return null==n||n.length<1?null==r||t?void 0:[]:null==r||t?n[0]:zr(n,n.length-r)}function $r(n,r,t){return i.call(n,null==r||t?1:r)}var Cr=j((function(n,r){return r=ur(r,!0,!0),Sr(n,(function(n){return!Er(r,n)}))})),Kr=j((function(n,r){return Cr(n,r)}));function Jr(n,r,t,e){A(r)||(e=t,t=r,r=!1),null!=t&&(t=qn(t,e));for(var u=[],o=[],i=0,a=Y(n);ir?(e&&(clearTimeout(e),e=null),a=c,i=n.apply(u,o),e||(u=o=null)):e||!1===t.trailing||(e=setTimeout(f,l)),i};return c.cancel=function(){clearTimeout(e),a=0,e=u=o=null},c},debounce:function(n,r,t){var e,u,o,i,a,f=function(){var c=zn()-u;r>c?e=setTimeout(f,r-c):(e=null,t||(i=n.apply(a,o)),e||(o=a=null))},c=j((function(c){return a=this,o=c,u=zn(),e||(e=setTimeout(f,r),t&&(i=n.apply(a,o))),i}));return c.cancel=function(){clearTimeout(e),e=o=a=null},c},wrap:function(n,r){return rr(r,n)},negate:fr,compose:function(){var n=arguments,r=n.length-1;return function(){for(var t=r,e=n[r].apply(this,arguments);t--;)e=n[t].call(this,e);return e}},after:function(n,r){return function(){if(--n<1)return r.apply(this,arguments)}},before:cr,once:lr,findKey:sr,findIndex:vr,findLastIndex:hr,sortedIndex:yr,indexOf:gr,lastIndexOf:br,find:mr,detect:mr,findWhere:function(n,r){return mr(n,Dn(r))},each:jr,forEach:jr,map:_r,collect:_r,reduce:Ar,foldl:Ar,inject:Ar,reduceRight:xr,foldr:xr,filter:Sr,select:Sr,reject:function(n,r,t){return Sr(n,fr(qn(r)),t)},every:Or,all:Or,some:Mr,any:Mr,contains:Er,includes:Er,include:Er,invoke:Br,pluck:Nr,where:function(n,r){return Sr(n,Dn(r))},max:Ir,min:function(n,r,t){var e,u,o=1/0,i=1/0;if(null==r||"number"==typeof r&&"object"!=typeof n[0]&&null!=n)for(var a=0,f=(n=er(n)?n:jn(n)).length;ae||void 0===t)return 1;if(tli{position:relative}.fa-li{left:calc(var(--fa-li-width, 2em)*-1);position:absolute;text-align:center;width:var(--fa-li-width,2em);line-height:inherit}.fa-border{border-radius:var(--fa-border-radius,.1em);border:var(--fa-border-width,.08em) var(--fa-border-style,solid) var(--fa-border-color,#eee);padding:var(--fa-border-padding,.2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin,.3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin,.3em)}.fa-beat{-webkit-animation-name:fa-beat;animation-name:fa-beat;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{-webkit-animation-name:fa-bounce;animation-name:fa-bounce;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1))}.fa-fade{-webkit-animation-name:fa-fade;animation-name:fa-fade;-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-beat-fade,.fa-fade{-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s)}.fa-beat-fade{-webkit-animation-name:fa-beat-fade;animation-name:fa-beat-fade;-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-flip{-webkit-animation-name:fa-flip;animation-name:fa-flip;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{-webkit-animation-name:fa-shake;animation-name:fa-shake;-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-shake,.fa-spin{-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal)}.fa-spin{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-duration:var(--fa-animation-duration,2s);animation-duration:var(--fa-animation-duration,2s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,steps(8));animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{-webkit-animation-delay:-1ms;animation-delay:-1ms;-webkit-animation-duration:1ms;animation-duration:1ms;-webkit-animation-iteration-count:1;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@-webkit-keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@-webkit-keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@-webkit-keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@-webkit-keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@-webkit-keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@-webkit-keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}.fa-rotate-by{-webkit-transform:rotate(var(--fa-rotate-angle,none));transform:rotate(var(--fa-rotate-angle,none))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index,auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse,#fff)}.fa-0:before{content:"\30"}.fa-1:before{content:"\31"}.fa-2:before{content:"\32"}.fa-3:before{content:"\33"}.fa-4:before{content:"\34"}.fa-5:before{content:"\35"}.fa-6:before{content:"\36"}.fa-7:before{content:"\37"}.fa-8:before{content:"\38"}.fa-9:before{content:"\39"}.fa-a:before{content:"\41"}.fa-address-book:before,.fa-contact-book:before{content:"\f2b9"}.fa-address-card:before,.fa-contact-card:before,.fa-vcard:before{content:"\f2bb"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-anchor:before{content:"\f13d"}.fa-anchor-circle-check:before{content:"\e4aa"}.fa-anchor-circle-exclamation:before{content:"\e4ab"}.fa-anchor-circle-xmark:before{content:"\e4ac"}.fa-anchor-lock:before{content:"\e4ad"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-double-down:before,.fa-angles-down:before{content:"\f103"}.fa-angle-double-left:before,.fa-angles-left:before{content:"\f100"}.fa-angle-double-right:before,.fa-angles-right:before{content:"\f101"}.fa-angle-double-up:before,.fa-angles-up:before{content:"\f102"}.fa-ankh:before{content:"\f644"}.fa-apple-alt:before,.fa-apple-whole:before{content:"\f5d1"}.fa-archway:before{content:"\f557"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-down-1-9:before,.fa-sort-numeric-asc:before,.fa-sort-numeric-down:before{content:"\f162"}.fa-arrow-down-9-1:before,.fa-sort-numeric-desc:before,.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-arrow-down-a-z:before,.fa-sort-alpha-asc:before,.fa-sort-alpha-down:before{content:"\f15d"}.fa-arrow-down-long:before,.fa-long-arrow-down:before{content:"\f175"}.fa-arrow-down-short-wide:before,.fa-sort-amount-desc:before,.fa-sort-amount-down-alt:before{content:"\f884"}.fa-arrow-down-up-across-line:before{content:"\e4af"}.fa-arrow-down-up-lock:before{content:"\e4b0"}.fa-arrow-down-wide-short:before,.fa-sort-amount-asc:before,.fa-sort-amount-down:before{content:"\f160"}.fa-arrow-down-z-a:before,.fa-sort-alpha-desc:before,.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-left-long:before,.fa-long-arrow-left:before{content:"\f177"}.fa-arrow-pointer:before,.fa-mouse-pointer:before{content:"\f245"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-right-arrow-left:before,.fa-exchange:before{content:"\f0ec"}.fa-arrow-right-from-bracket:before,.fa-sign-out:before{content:"\f08b"}.fa-arrow-right-long:before,.fa-long-arrow-right:before{content:"\f178"}.fa-arrow-right-to-bracket:before,.fa-sign-in:before{content:"\f090"}.fa-arrow-right-to-city:before{content:"\e4b3"}.fa-arrow-left-rotate:before,.fa-arrow-rotate-back:before,.fa-arrow-rotate-backward:before,.fa-arrow-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-arrow-right-rotate:before,.fa-arrow-rotate-forward:before,.fa-arrow-rotate-right:before,.fa-redo:before{content:"\f01e"}.fa-arrow-trend-down:before{content:"\e097"}.fa-arrow-trend-up:before{content:"\e098"}.fa-arrow-turn-down:before,.fa-level-down:before{content:"\f149"}.fa-arrow-turn-up:before,.fa-level-up:before{content:"\f148"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-up-1-9:before,.fa-sort-numeric-up:before{content:"\f163"}.fa-arrow-up-9-1:before,.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-arrow-up-a-z:before,.fa-sort-alpha-up:before{content:"\f15e"}.fa-arrow-up-from-bracket:before{content:"\e09a"}.fa-arrow-up-from-ground-water:before{content:"\e4b5"}.fa-arrow-up-from-water-pump:before{content:"\e4b6"}.fa-arrow-up-long:before,.fa-long-arrow-up:before{content:"\f176"}.fa-arrow-up-right-dots:before{content:"\e4b7"}.fa-arrow-up-right-from-square:before,.fa-external-link:before{content:"\f08e"}.fa-arrow-up-short-wide:before,.fa-sort-amount-up-alt:before{content:"\f885"}.fa-arrow-up-wide-short:before,.fa-sort-amount-up:before{content:"\f161"}.fa-arrow-up-z-a:before,.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-arrows-down-to-line:before{content:"\e4b8"}.fa-arrows-down-to-people:before{content:"\e4b9"}.fa-arrows-h:before,.fa-arrows-left-right:before{content:"\f07e"}.fa-arrows-left-right-to-line:before{content:"\e4ba"}.fa-arrows-rotate:before,.fa-refresh:before,.fa-sync:before{content:"\f021"}.fa-arrows-spin:before{content:"\e4bb"}.fa-arrows-split-up-and-left:before{content:"\e4bc"}.fa-arrows-to-circle:before{content:"\e4bd"}.fa-arrows-to-dot:before{content:"\e4be"}.fa-arrows-to-eye:before{content:"\e4bf"}.fa-arrows-turn-right:before{content:"\e4c0"}.fa-arrows-turn-to-dots:before{content:"\e4c1"}.fa-arrows-up-down:before,.fa-arrows-v:before{content:"\f07d"}.fa-arrows-up-down-left-right:before,.fa-arrows:before{content:"\f047"}.fa-arrows-up-to-line:before{content:"\e4c2"}.fa-asterisk:before{content:"\2a"}.fa-at:before{content:"\40"}.fa-atom:before{content:"\f5d2"}.fa-audio-description:before{content:"\f29e"}.fa-austral-sign:before{content:"\e0a9"}.fa-award:before{content:"\f559"}.fa-b:before{content:"\42"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before,.fa-carriage-baby:before{content:"\f77d"}.fa-backward:before{content:"\f04a"}.fa-backward-fast:before,.fa-fast-backward:before{content:"\f049"}.fa-backward-step:before,.fa-step-backward:before{content:"\f048"}.fa-bacon:before{content:"\f7e5"}.fa-bacteria:before{content:"\e059"}.fa-bacterium:before{content:"\e05a"}.fa-bag-shopping:before,.fa-shopping-bag:before{content:"\f290"}.fa-bahai:before,.fa-haykal:before{content:"\f666"}.fa-baht-sign:before{content:"\e0ac"}.fa-ban:before,.fa-cancel:before{content:"\f05e"}.fa-ban-smoking:before,.fa-smoking-ban:before{content:"\f54d"}.fa-band-aid:before,.fa-bandage:before{content:"\f462"}.fa-barcode:before{content:"\f02a"}.fa-bars:before,.fa-navicon:before{content:"\f0c9"}.fa-bars-progress:before,.fa-tasks-alt:before{content:"\f828"}.fa-bars-staggered:before,.fa-reorder:before,.fa-stream:before{content:"\f550"}.fa-baseball-ball:before,.fa-baseball:before{content:"\f433"}.fa-baseball-bat-ball:before{content:"\f432"}.fa-basket-shopping:before,.fa-shopping-basket:before{content:"\f291"}.fa-basketball-ball:before,.fa-basketball:before{content:"\f434"}.fa-bath:before,.fa-bathtub:before{content:"\f2cd"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-battery-5:before,.fa-battery-full:before,.fa-battery:before{content:"\f240"}.fa-battery-3:before,.fa-battery-half:before{content:"\f242"}.fa-battery-2:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-4:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-bed:before{content:"\f236"}.fa-bed-pulse:before,.fa-procedures:before{content:"\f487"}.fa-beer-mug-empty:before,.fa-beer:before{content:"\f0fc"}.fa-bell:before{content:"\f0f3"}.fa-bell-concierge:before,.fa-concierge-bell:before{content:"\f562"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bicycle:before{content:"\f206"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-bitcoin-sign:before{content:"\e0b4"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blog:before{content:"\f781"}.fa-bold:before{content:"\f032"}.fa-bolt:before,.fa-zap:before{content:"\f0e7"}.fa-bolt-lightning:before{content:"\e0b7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-atlas:before,.fa-book-atlas:before{content:"\f558"}.fa-bible:before,.fa-book-bible:before{content:"\f647"}.fa-book-bookmark:before{content:"\e0bb"}.fa-book-journal-whills:before,.fa-journal-whills:before{content:"\f66a"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-open-reader:before,.fa-book-reader:before{content:"\f5da"}.fa-book-quran:before,.fa-quran:before{content:"\f687"}.fa-book-dead:before,.fa-book-skull:before{content:"\f6b7"}.fa-book-tanakh:before,.fa-tanakh:before{content:"\f827"}.fa-bookmark:before{content:"\f02e"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before,.fa-border-top-left:before{content:"\f853"}.fa-bore-hole:before{content:"\e4c3"}.fa-bottle-droplet:before{content:"\e4c4"}.fa-bottle-water:before{content:"\e4c5"}.fa-bowl-food:before{content:"\e4c6"}.fa-bowl-rice:before{content:"\e2eb"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-archive:before,.fa-box-archive:before{content:"\f187"}.fa-box-open:before{content:"\f49e"}.fa-box-tissue:before{content:"\e05b"}.fa-boxes-packing:before{content:"\e4c7"}.fa-boxes-alt:before,.fa-boxes-stacked:before,.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-brazilian-real-sign:before{content:"\e46c"}.fa-bread-slice:before{content:"\f7ec"}.fa-bridge:before{content:"\e4c8"}.fa-bridge-circle-check:before{content:"\e4c9"}.fa-bridge-circle-exclamation:before{content:"\e4ca"}.fa-bridge-circle-xmark:before{content:"\e4cb"}.fa-bridge-lock:before{content:"\e4cc"}.fa-bridge-water:before{content:"\e4ce"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broom:before{content:"\f51a"}.fa-broom-ball:before,.fa-quidditch-broom-ball:before,.fa-quidditch:before{content:"\f458"}.fa-brush:before{content:"\f55d"}.fa-bucket:before{content:"\e4cf"}.fa-bug:before{content:"\f188"}.fa-bug-slash:before{content:"\e490"}.fa-bugs:before{content:"\e4d0"}.fa-building:before{content:"\f1ad"}.fa-building-circle-arrow-right:before{content:"\e4d1"}.fa-building-circle-check:before{content:"\e4d2"}.fa-building-circle-exclamation:before{content:"\e4d3"}.fa-building-circle-xmark:before{content:"\e4d4"}.fa-bank:before,.fa-building-columns:before,.fa-institution:before,.fa-museum:before,.fa-university:before{content:"\f19c"}.fa-building-flag:before{content:"\e4d5"}.fa-building-lock:before{content:"\e4d6"}.fa-building-ngo:before{content:"\e4d7"}.fa-building-shield:before{content:"\e4d8"}.fa-building-un:before{content:"\e4d9"}.fa-building-user:before{content:"\e4da"}.fa-building-wheat:before{content:"\e4db"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burger:before,.fa-hamburger:before{content:"\f805"}.fa-burst:before{content:"\e4dc"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before,.fa-bus-simple:before{content:"\f55e"}.fa-briefcase-clock:before,.fa-business-time:before{content:"\f64a"}.fa-c:before{content:"\43"}.fa-cable-car:before,.fa-tram:before{content:"\f7da"}.fa-birthday-cake:before,.fa-cake-candles:before,.fa-cake:before{content:"\f1fd"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-alt:before,.fa-calendar-days:before{content:"\f073"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-week:before{content:"\f784"}.fa-calendar-times:before,.fa-calendar-xmark:before{content:"\f273"}.fa-camera-alt:before,.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-camera-rotate:before{content:"\e0d8"}.fa-campground:before{content:"\f6bb"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-battery-car:before,.fa-car-battery:before{content:"\f5df"}.fa-car-burst:before,.fa-car-crash:before{content:"\f5e1"}.fa-car-on:before{content:"\e4dd"}.fa-car-alt:before,.fa-car-rear:before{content:"\f5de"}.fa-car-side:before{content:"\f5e4"}.fa-car-tunnel:before{content:"\e4de"}.fa-caravan:before{content:"\f8ff"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-flatbed:before,.fa-dolly-flatbed:before{content:"\f474"}.fa-cart-flatbed-suitcase:before,.fa-luggage-cart:before{content:"\f59d"}.fa-cart-plus:before{content:"\f217"}.fa-cart-shopping:before,.fa-shopping-cart:before{content:"\f07a"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cedi-sign:before{content:"\e0df"}.fa-cent-sign:before{content:"\e3f5"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-blackboard:before,.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before,.fa-chalkboard-user:before{content:"\f51c"}.fa-champagne-glasses:before,.fa-glass-cheers:before{content:"\f79f"}.fa-charging-station:before{content:"\f5e7"}.fa-area-chart:before,.fa-chart-area:before{content:"\f1fe"}.fa-bar-chart:before,.fa-chart-bar:before{content:"\f080"}.fa-chart-column:before{content:"\e0e3"}.fa-chart-gantt:before{content:"\e0e4"}.fa-chart-line:before,.fa-line-chart:before{content:"\f201"}.fa-chart-pie:before,.fa-pie-chart:before{content:"\f200"}.fa-chart-simple:before{content:"\e473"}.fa-check:before{content:"\f00c"}.fa-check-double:before{content:"\f560"}.fa-check-to-slot:before,.fa-vote-yea:before{content:"\f772"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-child-dress:before{content:"\e59c"}.fa-child-reaching:before{content:"\e59d"}.fa-child-rifle:before{content:"\e4e0"}.fa-children:before{content:"\e4e1"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-arrow-circle-down:before,.fa-circle-arrow-down:before{content:"\f0ab"}.fa-arrow-circle-left:before,.fa-circle-arrow-left:before{content:"\f0a8"}.fa-arrow-circle-right:before,.fa-circle-arrow-right:before{content:"\f0a9"}.fa-arrow-circle-up:before,.fa-circle-arrow-up:before{content:"\f0aa"}.fa-check-circle:before,.fa-circle-check:before{content:"\f058"}.fa-chevron-circle-down:before,.fa-circle-chevron-down:before{content:"\f13a"}.fa-chevron-circle-left:before,.fa-circle-chevron-left:before{content:"\f137"}.fa-chevron-circle-right:before,.fa-circle-chevron-right:before{content:"\f138"}.fa-chevron-circle-up:before,.fa-circle-chevron-up:before{content:"\f139"}.fa-circle-dollar-to-slot:before,.fa-donate:before{content:"\f4b9"}.fa-circle-dot:before,.fa-dot-circle:before{content:"\f192"}.fa-arrow-alt-circle-down:before,.fa-circle-down:before{content:"\f358"}.fa-circle-exclamation:before,.fa-exclamation-circle:before{content:"\f06a"}.fa-circle-h:before,.fa-hospital-symbol:before{content:"\f47e"}.fa-adjust:before,.fa-circle-half-stroke:before{content:"\f042"}.fa-circle-info:before,.fa-info-circle:before{content:"\f05a"}.fa-arrow-alt-circle-left:before,.fa-circle-left:before{content:"\f359"}.fa-circle-minus:before,.fa-minus-circle:before{content:"\f056"}.fa-circle-nodes:before{content:"\e4e2"}.fa-circle-notch:before{content:"\f1ce"}.fa-circle-pause:before,.fa-pause-circle:before{content:"\f28b"}.fa-circle-play:before,.fa-play-circle:before{content:"\f144"}.fa-circle-plus:before,.fa-plus-circle:before{content:"\f055"}.fa-circle-question:before,.fa-question-circle:before{content:"\f059"}.fa-circle-radiation:before,.fa-radiation-alt:before{content:"\f7ba"}.fa-arrow-alt-circle-right:before,.fa-circle-right:before{content:"\f35a"}.fa-circle-stop:before,.fa-stop-circle:before{content:"\f28d"}.fa-arrow-alt-circle-up:before,.fa-circle-up:before{content:"\f35b"}.fa-circle-user:before,.fa-user-circle:before{content:"\f2bd"}.fa-circle-xmark:before,.fa-times-circle:before,.fa-xmark-circle:before{content:"\f057"}.fa-city:before{content:"\f64f"}.fa-clapperboard:before{content:"\e131"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clipboard-question:before{content:"\e4e3"}.fa-clipboard-user:before{content:"\f7f3"}.fa-clock-four:before,.fa-clock:before{content:"\f017"}.fa-clock-rotate-left:before,.fa-history:before{content:"\f1da"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-arrow-down:before,.fa-cloud-download-alt:before,.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-arrow-up:before,.fa-cloud-upload-alt:before,.fa-cloud-upload:before{content:"\f0ee"}.fa-cloud-bolt:before,.fa-thunderstorm:before{content:"\f76c"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-showers-water:before{content:"\e4e4"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-clover:before{content:"\e139"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-code-commit:before{content:"\f386"}.fa-code-compare:before{content:"\e13a"}.fa-code-fork:before{content:"\e13b"}.fa-code-merge:before{content:"\f387"}.fa-code-pull-request:before{content:"\e13c"}.fa-coins:before{content:"\f51e"}.fa-colon-sign:before{content:"\e140"}.fa-comment:before{content:"\f075"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before,.fa-commenting:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comment-sms:before,.fa-sms:before{content:"\f7cd"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compass-drafting:before,.fa-drafting-compass:before{content:"\f568"}.fa-compress:before{content:"\f066"}.fa-computer:before{content:"\e4e5"}.fa-computer-mouse:before,.fa-mouse:before{content:"\f8cc"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-couch:before{content:"\f4b8"}.fa-cow:before{content:"\f6c8"}.fa-credit-card-alt:before,.fa-credit-card:before{content:"\f09d"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before,.fa-crop-simple:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-cruzeiro-sign:before{content:"\e152"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cubes-stacked:before{content:"\e4e6"}.fa-d:before{content:"\44"}.fa-database:before{content:"\f1c0"}.fa-backspace:before,.fa-delete-left:before{content:"\f55a"}.fa-democrat:before{content:"\f747"}.fa-desktop-alt:before,.fa-desktop:before{content:"\f390"}.fa-dharmachakra:before{content:"\f655"}.fa-diagram-next:before{content:"\e476"}.fa-diagram-predecessor:before{content:"\e477"}.fa-diagram-project:before,.fa-project-diagram:before{content:"\f542"}.fa-diagram-successor:before{content:"\e47a"}.fa-diamond:before{content:"\f219"}.fa-diamond-turn-right:before,.fa-directions:before{content:"\f5eb"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-disease:before{content:"\f7fa"}.fa-display:before{content:"\e163"}.fa-divide:before{content:"\f529"}.fa-dna:before{content:"\f471"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before,.fa-dollar:before,.fa-usd:before{content:"\24"}.fa-dolly-box:before,.fa-dolly:before{content:"\f472"}.fa-dong-sign:before{content:"\e169"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dove:before{content:"\f4ba"}.fa-compress-alt:before,.fa-down-left-and-up-right-to-center:before{content:"\f422"}.fa-down-long:before,.fa-long-arrow-alt-down:before{content:"\f309"}.fa-download:before{content:"\f019"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-droplet:before,.fa-tint:before{content:"\f043"}.fa-droplet-slash:before,.fa-tint-slash:before{content:"\f5c7"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-e:before{content:"\45"}.fa-deaf:before,.fa-deafness:before,.fa-ear-deaf:before,.fa-hard-of-hearing:before{content:"\f2a4"}.fa-assistive-listening-systems:before,.fa-ear-listen:before{content:"\f2a2"}.fa-earth-africa:before,.fa-globe-africa:before{content:"\f57c"}.fa-earth-america:before,.fa-earth-americas:before,.fa-earth:before,.fa-globe-americas:before{content:"\f57d"}.fa-earth-asia:before,.fa-globe-asia:before{content:"\f57e"}.fa-earth-europe:before,.fa-globe-europe:before{content:"\f7a2"}.fa-earth-oceania:before,.fa-globe-oceania:before{content:"\e47b"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elevator:before{content:"\e16d"}.fa-ellipsis-h:before,.fa-ellipsis:before{content:"\f141"}.fa-ellipsis-v:before,.fa-ellipsis-vertical:before{content:"\f142"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-circle-check:before{content:"\e4e8"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelopes-bulk:before,.fa-mail-bulk:before{content:"\f674"}.fa-equals:before{content:"\3d"}.fa-eraser:before{content:"\f12d"}.fa-ethernet:before{content:"\f796"}.fa-eur:before,.fa-euro-sign:before,.fa-euro:before{content:"\f153"}.fa-exclamation:before{content:"\21"}.fa-expand:before{content:"\f065"}.fa-explosion:before{content:"\e4e9"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper-empty:before,.fa-eye-dropper:before,.fa-eyedropper:before{content:"\f1fb"}.fa-eye-low-vision:before,.fa-low-vision:before{content:"\f2a8"}.fa-eye-slash:before{content:"\f070"}.fa-f:before{content:"\46"}.fa-angry:before,.fa-face-angry:before{content:"\f556"}.fa-dizzy:before,.fa-face-dizzy:before{content:"\f567"}.fa-face-flushed:before,.fa-flushed:before{content:"\f579"}.fa-face-frown:before,.fa-frown:before{content:"\f119"}.fa-face-frown-open:before,.fa-frown-open:before{content:"\f57a"}.fa-face-grimace:before,.fa-grimace:before{content:"\f57f"}.fa-face-grin:before,.fa-grin:before{content:"\f580"}.fa-face-grin-beam:before,.fa-grin-beam:before{content:"\f582"}.fa-face-grin-beam-sweat:before,.fa-grin-beam-sweat:before{content:"\f583"}.fa-face-grin-hearts:before,.fa-grin-hearts:before{content:"\f584"}.fa-face-grin-squint:before,.fa-grin-squint:before{content:"\f585"}.fa-face-grin-squint-tears:before,.fa-grin-squint-tears:before{content:"\f586"}.fa-face-grin-stars:before,.fa-grin-stars:before{content:"\f587"}.fa-face-grin-tears:before,.fa-grin-tears:before{content:"\f588"}.fa-face-grin-tongue:before,.fa-grin-tongue:before{content:"\f589"}.fa-face-grin-tongue-squint:before,.fa-grin-tongue-squint:before{content:"\f58a"}.fa-face-grin-tongue-wink:before,.fa-grin-tongue-wink:before{content:"\f58b"}.fa-face-grin-wide:before,.fa-grin-alt:before{content:"\f581"}.fa-face-grin-wink:before,.fa-grin-wink:before{content:"\f58c"}.fa-face-kiss:before,.fa-kiss:before{content:"\f596"}.fa-face-kiss-beam:before,.fa-kiss-beam:before{content:"\f597"}.fa-face-kiss-wink-heart:before,.fa-kiss-wink-heart:before{content:"\f598"}.fa-face-laugh:before,.fa-laugh:before{content:"\f599"}.fa-face-laugh-beam:before,.fa-laugh-beam:before{content:"\f59a"}.fa-face-laugh-squint:before,.fa-laugh-squint:before{content:"\f59b"}.fa-face-laugh-wink:before,.fa-laugh-wink:before{content:"\f59c"}.fa-face-meh:before,.fa-meh:before{content:"\f11a"}.fa-face-meh-blank:before,.fa-meh-blank:before{content:"\f5a4"}.fa-face-rolling-eyes:before,.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-face-sad-cry:before,.fa-sad-cry:before{content:"\f5b3"}.fa-face-sad-tear:before,.fa-sad-tear:before{content:"\f5b4"}.fa-face-smile:before,.fa-smile:before{content:"\f118"}.fa-face-smile-beam:before,.fa-smile-beam:before{content:"\f5b8"}.fa-face-smile-wink:before,.fa-smile-wink:before{content:"\f4da"}.fa-face-surprise:before,.fa-surprise:before{content:"\f5c2"}.fa-face-tired:before,.fa-tired:before{content:"\f5c8"}.fa-fan:before{content:"\f863"}.fa-faucet:before{content:"\e005"}.fa-faucet-drip:before{content:"\e006"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before,.fa-feather-pointed:before{content:"\f56b"}.fa-ferry:before{content:"\e4ea"}.fa-file:before{content:"\f15b"}.fa-file-arrow-down:before,.fa-file-download:before{content:"\f56d"}.fa-file-arrow-up:before,.fa-file-upload:before{content:"\f574"}.fa-file-audio:before{content:"\f1c7"}.fa-file-circle-check:before{content:"\e5a0"}.fa-file-circle-exclamation:before{content:"\e4eb"}.fa-file-circle-minus:before{content:"\e4ed"}.fa-file-circle-plus:before{content:"\e494"}.fa-file-circle-question:before{content:"\e4ef"}.fa-file-circle-xmark:before{content:"\e5a1"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-excel:before{content:"\f1c3"}.fa-arrow-right-from-file:before,.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-arrow-right-to-file:before,.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-alt:before,.fa-file-lines:before,.fa-file-text:before{content:"\f15c"}.fa-file-medical:before{content:"\f477"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-edit:before,.fa-file-pen:before{content:"\f31c"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-shield:before{content:"\e4f0"}.fa-file-signature:before{content:"\f573"}.fa-file-video:before{content:"\f1c8"}.fa-file-medical-alt:before,.fa-file-waveform:before{content:"\f478"}.fa-file-word:before{content:"\f1c2"}.fa-file-archive:before,.fa-file-zipper:before{content:"\f1c6"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-filter-circle-dollar:before,.fa-funnel-dollar:before{content:"\f662"}.fa-filter-circle-xmark:before{content:"\e17b"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-burner:before{content:"\e4f1"}.fa-fire-extinguisher:before{content:"\f134"}.fa-fire-alt:before,.fa-fire-flame-curved:before{content:"\f7e4"}.fa-burn:before,.fa-fire-flame-simple:before{content:"\f46a"}.fa-fish:before{content:"\f578"}.fa-fish-fins:before{content:"\e4f2"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flask-vial:before{content:"\e4f3"}.fa-floppy-disk:before,.fa-save:before{content:"\f0c7"}.fa-florin-sign:before{content:"\e184"}.fa-folder-blank:before,.fa-folder:before{content:"\f07b"}.fa-folder-closed:before{content:"\e185"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-folder-tree:before{content:"\f802"}.fa-font:before{content:"\f031"}.fa-football-ball:before,.fa-football:before{content:"\f44e"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before,.fa-forward-fast:before{content:"\f050"}.fa-forward-step:before,.fa-step-forward:before{content:"\f051"}.fa-franc-sign:before{content:"\e18f"}.fa-frog:before{content:"\f52e"}.fa-futbol-ball:before,.fa-futbol:before,.fa-soccer-ball:before{content:"\f1e3"}.fa-g:before{content:"\47"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-dashboard:before,.fa-gauge-med:before,.fa-gauge:before,.fa-tachometer-alt-average:before{content:"\f624"}.fa-gauge-high:before,.fa-tachometer-alt-fast:before,.fa-tachometer-alt:before{content:"\f625"}.fa-gauge-simple-med:before,.fa-gauge-simple:before,.fa-tachometer-average:before{content:"\f629"}.fa-gauge-simple-high:before,.fa-tachometer-fast:before,.fa-tachometer:before{content:"\f62a"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-glass-water:before{content:"\e4f4"}.fa-glass-water-droplet:before{content:"\e4f5"}.fa-glasses:before{content:"\f530"}.fa-globe:before{content:"\f0ac"}.fa-golf-ball-tee:before,.fa-golf-ball:before{content:"\f450"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-greater-than:before{content:"\3e"}.fa-greater-than-equal:before{content:"\f532"}.fa-grip-horizontal:before,.fa-grip:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-group-arrows-rotate:before{content:"\e4f6"}.fa-guarani-sign:before{content:"\e19a"}.fa-guitar:before{content:"\f7a6"}.fa-gun:before{content:"\e19b"}.fa-h:before{content:"\48"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-paper:before,.fa-hand:before{content:"\f256"}.fa-hand-back-fist:before,.fa-hand-rock:before{content:"\f255"}.fa-allergies:before,.fa-hand-dots:before{content:"\f461"}.fa-fist-raised:before,.fa-hand-fist:before{content:"\f6de"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-dollar:before,.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-holding-droplet:before,.fa-hand-holding-water:before{content:"\f4c1"}.fa-hand-holding-hand:before{content:"\e4f7"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-medical:before{content:"\e05c"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-sparkles:before{content:"\e05d"}.fa-hand-spock:before{content:"\f259"}.fa-handcuffs:before{content:"\e4f8"}.fa-hands:before,.fa-sign-language:before,.fa-signing:before{content:"\f2a7"}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before,.fa-hands-american-sign-language-interpreting:before,.fa-hands-asl-interpreting:before{content:"\f2a3"}.fa-hands-bound:before{content:"\e4f9"}.fa-hands-bubbles:before,.fa-hands-wash:before{content:"\e05e"}.fa-hands-clapping:before{content:"\e1a8"}.fa-hands-holding:before{content:"\f4c2"}.fa-hands-holding-child:before{content:"\e4fa"}.fa-hands-holding-circle:before{content:"\e4fb"}.fa-hands-praying:before,.fa-praying-hands:before{content:"\f684"}.fa-handshake:before{content:"\f2b5"}.fa-hands-helping:before,.fa-handshake-angle:before{content:"\f4c4"}.fa-handshake-alt:before,.fa-handshake-simple:before{content:"\f4c6"}.fa-handshake-alt-slash:before,.fa-handshake-simple-slash:before{content:"\e05f"}.fa-handshake-slash:before{content:"\e060"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-drive:before,.fa-hdd:before{content:"\f0a0"}.fa-hashtag:before{content:"\23"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-hat-wizard:before{content:"\f6e8"}.fa-head-side-cough:before{content:"\e061"}.fa-head-side-cough-slash:before{content:"\e062"}.fa-head-side-mask:before{content:"\e063"}.fa-head-side-virus:before{content:"\e064"}.fa-header:before,.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before,.fa-headphones-simple:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-circle-bolt:before{content:"\e4fc"}.fa-heart-circle-check:before{content:"\e4fd"}.fa-heart-circle-exclamation:before{content:"\e4fe"}.fa-heart-circle-minus:before{content:"\e4ff"}.fa-heart-circle-plus:before{content:"\e500"}.fa-heart-circle-xmark:before{content:"\e501"}.fa-heart-broken:before,.fa-heart-crack:before{content:"\f7a9"}.fa-heart-pulse:before,.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-helicopter-symbol:before{content:"\e502"}.fa-hard-hat:before,.fa-hat-hard:before,.fa-helmet-safety:before{content:"\f807"}.fa-helmet-un:before{content:"\e503"}.fa-highlighter:before{content:"\f591"}.fa-hill-avalanche:before{content:"\e507"}.fa-hill-rockslide:before{content:"\e508"}.fa-hippo:before{content:"\f6ed"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital-alt:before,.fa-hospital-wide:before,.fa-hospital:before{content:"\f0f8"}.fa-hospital-user:before{content:"\f80d"}.fa-hot-tub-person:before,.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hourglass-empty:before,.fa-hourglass:before{content:"\f254"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-home-alt:before,.fa-home-lg-alt:before,.fa-home:before,.fa-house:before{content:"\f015"}.fa-home-lg:before,.fa-house-chimney:before{content:"\e3af"}.fa-house-chimney-crack:before,.fa-house-damage:before{content:"\f6f1"}.fa-clinic-medical:before,.fa-house-chimney-medical:before{content:"\f7f2"}.fa-house-chimney-user:before{content:"\e065"}.fa-house-chimney-window:before{content:"\e00d"}.fa-house-circle-check:before{content:"\e509"}.fa-house-circle-exclamation:before{content:"\e50a"}.fa-house-circle-xmark:before{content:"\e50b"}.fa-house-crack:before{content:"\e3b1"}.fa-house-fire:before{content:"\e50c"}.fa-house-flag:before{content:"\e50d"}.fa-house-flood-water:before{content:"\e50e"}.fa-house-flood-water-circle-arrow-right:before{content:"\e50f"}.fa-house-laptop:before,.fa-laptop-house:before{content:"\e066"}.fa-house-lock:before{content:"\e510"}.fa-house-medical:before{content:"\e3b2"}.fa-house-medical-circle-check:before{content:"\e511"}.fa-house-medical-circle-exclamation:before{content:"\e512"}.fa-house-medical-circle-xmark:before{content:"\e513"}.fa-house-medical-flag:before{content:"\e514"}.fa-house-signal:before{content:"\e012"}.fa-house-tsunami:before{content:"\e515"}.fa-home-user:before,.fa-house-user:before{content:"\e1b0"}.fa-hryvnia-sign:before,.fa-hryvnia:before{content:"\f6f2"}.fa-hurricane:before{content:"\f751"}.fa-i:before{content:"\49"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-heart-music-camera-bolt:before,.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before,.fa-id-card-clip:before{content:"\f47f"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-image-portrait:before,.fa-portrait:before{content:"\f3e0"}.fa-images:before{content:"\f302"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-indian-rupee-sign:before,.fa-indian-rupee:before,.fa-inr:before{content:"\e1bc"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-italic:before{content:"\f033"}.fa-j:before{content:"\4a"}.fa-jar:before{content:"\e516"}.fa-jar-wheat:before{content:"\e517"}.fa-jedi:before{content:"\f669"}.fa-fighter-jet:before,.fa-jet-fighter:before{content:"\f0fb"}.fa-jet-fighter-up:before{content:"\e518"}.fa-joint:before{content:"\f595"}.fa-jug-detergent:before{content:"\e519"}.fa-k:before{content:"\4b"}.fa-kaaba:before{content:"\f66b"}.fa-key:before{content:"\f084"}.fa-keyboard:before{content:"\f11c"}.fa-khanda:before{content:"\f66d"}.fa-kip-sign:before{content:"\e1c4"}.fa-first-aid:before,.fa-kit-medical:before{content:"\f479"}.fa-kitchen-set:before{content:"\e51a"}.fa-kiwi-bird:before{content:"\f535"}.fa-l:before{content:"\4c"}.fa-land-mine-on:before{content:"\e51b"}.fa-landmark:before{content:"\f66f"}.fa-landmark-alt:before,.fa-landmark-dome:before{content:"\f752"}.fa-landmark-flag:before{content:"\e51c"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-file:before{content:"\e51d"}.fa-laptop-medical:before{content:"\f812"}.fa-lari-sign:before{content:"\e1c8"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-left-long:before,.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-arrows-alt-h:before,.fa-left-right:before{content:"\f337"}.fa-lemon:before{content:"\f094"}.fa-less-than:before{content:"\3c"}.fa-less-than-equal:before{content:"\f537"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-lines-leaning:before{content:"\e51e"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-chain-broken:before,.fa-chain-slash:before,.fa-link-slash:before,.fa-unlink:before{content:"\f127"}.fa-lira-sign:before{content:"\f195"}.fa-list-squares:before,.fa-list:before{content:"\f03a"}.fa-list-check:before,.fa-tasks:before{content:"\f0ae"}.fa-list-1-2:before,.fa-list-numeric:before,.fa-list-ol:before{content:"\f0cb"}.fa-list-dots:before,.fa-list-ul:before{content:"\f0ca"}.fa-litecoin-sign:before{content:"\e1d3"}.fa-location-arrow:before{content:"\f124"}.fa-location-crosshairs:before,.fa-location:before{content:"\f601"}.fa-location-dot:before,.fa-map-marker-alt:before{content:"\f3c5"}.fa-location-pin:before,.fa-map-marker:before{content:"\f041"}.fa-location-pin-lock:before{content:"\e51f"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-locust:before{content:"\e520"}.fa-lungs:before{content:"\f604"}.fa-lungs-virus:before{content:"\e067"}.fa-m:before{content:"\4d"}.fa-magnet:before{content:"\f076"}.fa-magnifying-glass:before,.fa-search:before{content:"\f002"}.fa-magnifying-glass-arrow-right:before{content:"\e521"}.fa-magnifying-glass-chart:before{content:"\e522"}.fa-magnifying-glass-dollar:before,.fa-search-dollar:before{content:"\f688"}.fa-magnifying-glass-location:before,.fa-search-location:before{content:"\f689"}.fa-magnifying-glass-minus:before,.fa-search-minus:before{content:"\f010"}.fa-magnifying-glass-plus:before,.fa-search-plus:before{content:"\f00e"}.fa-manat-sign:before{content:"\e1d5"}.fa-map:before{content:"\f279"}.fa-map-location:before,.fa-map-marked:before{content:"\f59f"}.fa-map-location-dot:before,.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-pin:before{content:"\f276"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-and-venus:before{content:"\f224"}.fa-mars-and-venus-burst:before{content:"\e523"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before,.fa-mars-stroke-right:before{content:"\f22b"}.fa-mars-stroke-up:before,.fa-mars-stroke-v:before{content:"\f22a"}.fa-glass-martini-alt:before,.fa-martini-glass:before{content:"\f57b"}.fa-cocktail:before,.fa-martini-glass-citrus:before{content:"\f561"}.fa-glass-martini:before,.fa-martini-glass-empty:before{content:"\f000"}.fa-mask:before{content:"\f6fa"}.fa-mask-face:before{content:"\e1d7"}.fa-mask-ventilator:before{content:"\e524"}.fa-masks-theater:before,.fa-theater-masks:before{content:"\f630"}.fa-mattress-pillow:before{content:"\e525"}.fa-expand-arrows-alt:before,.fa-maximize:before{content:"\f31e"}.fa-medal:before{content:"\f5a2"}.fa-memory:before{content:"\f538"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-comment-alt:before,.fa-message:before{content:"\f27a"}.fa-meteor:before{content:"\f753"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before,.fa-microphone-lines:before{content:"\f3c9"}.fa-microphone-alt-slash:before,.fa-microphone-lines-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-mill-sign:before{content:"\e1ed"}.fa-compress-arrows-alt:before,.fa-minimize:before{content:"\f78c"}.fa-minus:before,.fa-subtract:before{content:"\f068"}.fa-mitten:before{content:"\f7b5"}.fa-mobile-android:before,.fa-mobile-phone:before,.fa-mobile:before{content:"\f3ce"}.fa-mobile-button:before{content:"\f10b"}.fa-mobile-retro:before{content:"\e527"}.fa-mobile-android-alt:before,.fa-mobile-screen:before{content:"\f3cf"}.fa-mobile-alt:before,.fa-mobile-screen-button:before{content:"\f3cd"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-1:before,.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-1-wave:before,.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-bill-transfer:before{content:"\e528"}.fa-money-bill-trend-up:before{content:"\e529"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wheat:before{content:"\e52a"}.fa-money-bills:before{content:"\e1f3"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before,.fa-money-check-dollar:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-mosquito:before{content:"\e52b"}.fa-mosquito-net:before{content:"\e52c"}.fa-motorcycle:before{content:"\f21c"}.fa-mound:before{content:"\e52d"}.fa-mountain:before{content:"\f6fc"}.fa-mountain-city:before{content:"\e52e"}.fa-mountain-sun:before{content:"\e52f"}.fa-mug-hot:before{content:"\f7b6"}.fa-coffee:before,.fa-mug-saucer:before{content:"\f0f4"}.fa-music:before{content:"\f001"}.fa-n:before{content:"\4e"}.fa-naira-sign:before{content:"\e1f6"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-not-equal:before{content:"\f53e"}.fa-notdef:before{content:"\e1fe"}.fa-note-sticky:before,.fa-sticky-note:before{content:"\f249"}.fa-notes-medical:before{content:"\f481"}.fa-o:before{content:"\4f"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-oil-can:before{content:"\f613"}.fa-oil-well:before{content:"\e532"}.fa-om:before{content:"\f679"}.fa-otter:before{content:"\f700"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-p:before{content:"\50"}.fa-pager:before{content:"\f815"}.fa-paint-roller:before{content:"\f5aa"}.fa-paint-brush:before,.fa-paintbrush:before{content:"\f1fc"}.fa-palette:before{content:"\f53f"}.fa-pallet:before{content:"\f482"}.fa-panorama:before{content:"\e209"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-passport:before{content:"\f5ab"}.fa-file-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-pause:before{content:"\f04c"}.fa-paw:before{content:"\f1b0"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before,.fa-pen-clip:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-ruler:before,.fa-pencil-ruler:before{content:"\f5ae"}.fa-edit:before,.fa-pen-to-square:before{content:"\f044"}.fa-pencil-alt:before,.fa-pencil:before{content:"\f303"}.fa-people-arrows-left-right:before,.fa-people-arrows:before{content:"\e068"}.fa-people-carry-box:before,.fa-people-carry:before{content:"\f4ce"}.fa-people-group:before{content:"\e533"}.fa-people-line:before{content:"\e534"}.fa-people-pulling:before{content:"\e535"}.fa-people-robbery:before{content:"\e536"}.fa-people-roof:before{content:"\e537"}.fa-pepper-hot:before{content:"\f816"}.fa-percent:before,.fa-percentage:before{content:"\25"}.fa-male:before,.fa-person:before{content:"\f183"}.fa-person-arrow-down-to-line:before{content:"\e538"}.fa-person-arrow-up-from-line:before{content:"\e539"}.fa-biking:before,.fa-person-biking:before{content:"\f84a"}.fa-person-booth:before{content:"\f756"}.fa-person-breastfeeding:before{content:"\e53a"}.fa-person-burst:before{content:"\e53b"}.fa-person-cane:before{content:"\e53c"}.fa-person-chalkboard:before{content:"\e53d"}.fa-person-circle-check:before{content:"\e53e"}.fa-person-circle-exclamation:before{content:"\e53f"}.fa-person-circle-minus:before{content:"\e540"}.fa-person-circle-plus:before{content:"\e541"}.fa-person-circle-question:before{content:"\e542"}.fa-person-circle-xmark:before{content:"\e543"}.fa-digging:before,.fa-person-digging:before{content:"\f85e"}.fa-diagnoses:before,.fa-person-dots-from-line:before{content:"\f470"}.fa-female:before,.fa-person-dress:before{content:"\f182"}.fa-person-dress-burst:before{content:"\e544"}.fa-person-drowning:before{content:"\e545"}.fa-person-falling:before{content:"\e546"}.fa-person-falling-burst:before{content:"\e547"}.fa-person-half-dress:before{content:"\e548"}.fa-person-harassing:before{content:"\e549"}.fa-hiking:before,.fa-person-hiking:before{content:"\f6ec"}.fa-person-military-pointing:before{content:"\e54a"}.fa-person-military-rifle:before{content:"\e54b"}.fa-person-military-to-person:before{content:"\e54c"}.fa-person-praying:before,.fa-pray:before{content:"\f683"}.fa-person-pregnant:before{content:"\e31e"}.fa-person-rays:before{content:"\e54d"}.fa-person-rifle:before{content:"\e54e"}.fa-person-running:before,.fa-running:before{content:"\f70c"}.fa-person-shelter:before{content:"\e54f"}.fa-person-skating:before,.fa-skating:before{content:"\f7c5"}.fa-person-skiing:before,.fa-skiing:before{content:"\f7c9"}.fa-person-skiing-nordic:before,.fa-skiing-nordic:before{content:"\f7ca"}.fa-person-snowboarding:before,.fa-snowboarding:before{content:"\f7ce"}.fa-person-swimming:before,.fa-swimmer:before{content:"\f5c4"}.fa-person-through-window:before{content:"\e5a9"}.fa-person-walking:before,.fa-walking:before{content:"\f554"}.fa-person-walking-arrow-loop-left:before{content:"\e551"}.fa-person-walking-arrow-right:before{content:"\e552"}.fa-person-walking-dashed-line-arrow-right:before{content:"\e553"}.fa-person-walking-luggage:before{content:"\e554"}.fa-blind:before,.fa-person-walking-with-cane:before{content:"\f29d"}.fa-peseta-sign:before{content:"\e221"}.fa-peso-sign:before{content:"\e222"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before,.fa-phone-flip:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-volume:before,.fa-volume-control-phone:before{content:"\f2a0"}.fa-photo-film:before,.fa-photo-video:before{content:"\f87c"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-circle-check:before{content:"\e555"}.fa-plane-circle-exclamation:before{content:"\e556"}.fa-plane-circle-xmark:before{content:"\e557"}.fa-plane-departure:before{content:"\f5b0"}.fa-plane-lock:before{content:"\e558"}.fa-plane-slash:before{content:"\e069"}.fa-plane-up:before{content:"\e22d"}.fa-plant-wilt:before{content:"\e5aa"}.fa-plate-wheat:before{content:"\e55a"}.fa-play:before{content:"\f04b"}.fa-plug:before{content:"\f1e6"}.fa-plug-circle-bolt:before{content:"\e55b"}.fa-plug-circle-check:before{content:"\e55c"}.fa-plug-circle-exclamation:before{content:"\e55d"}.fa-plug-circle-minus:before{content:"\e55e"}.fa-plug-circle-plus:before{content:"\e55f"}.fa-plug-circle-xmark:before{content:"\e560"}.fa-add:before,.fa-plus:before{content:"\2b"}.fa-plus-minus:before{content:"\e43c"}.fa-podcast:before{content:"\f2ce"}.fa-poo:before{content:"\f2fe"}.fa-poo-bolt:before,.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-power-off:before{content:"\f011"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before,.fa-prescription-bottle-medical:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-pump-medical:before{content:"\e06a"}.fa-pump-soap:before{content:"\e06b"}.fa-puzzle-piece:before{content:"\f12e"}.fa-q:before{content:"\51"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\3f"}.fa-quote-left-alt:before,.fa-quote-left:before{content:"\f10d"}.fa-quote-right-alt:before,.fa-quote-right:before{content:"\f10e"}.fa-r:before{content:"\52"}.fa-radiation:before{content:"\f7b9"}.fa-radio:before{content:"\f8d7"}.fa-rainbow:before{content:"\f75b"}.fa-ranking-star:before{content:"\e561"}.fa-receipt:before{content:"\f543"}.fa-record-vinyl:before{content:"\f8d9"}.fa-ad:before,.fa-rectangle-ad:before{content:"\f641"}.fa-list-alt:before,.fa-rectangle-list:before{content:"\f022"}.fa-rectangle-times:before,.fa-rectangle-xmark:before,.fa-times-rectangle:before,.fa-window-close:before{content:"\f410"}.fa-recycle:before{content:"\f1b8"}.fa-registered:before{content:"\f25d"}.fa-repeat:before{content:"\f363"}.fa-mail-reply:before,.fa-reply:before{content:"\f3e5"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-republican:before{content:"\f75e"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-ribbon:before{content:"\f4d6"}.fa-right-from-bracket:before,.fa-sign-out-alt:before{content:"\f2f5"}.fa-exchange-alt:before,.fa-right-left:before{content:"\f362"}.fa-long-arrow-alt-right:before,.fa-right-long:before{content:"\f30b"}.fa-right-to-bracket:before,.fa-sign-in-alt:before{content:"\f2f6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-road-barrier:before{content:"\e562"}.fa-road-bridge:before{content:"\e563"}.fa-road-circle-check:before{content:"\e564"}.fa-road-circle-exclamation:before{content:"\e565"}.fa-road-circle-xmark:before{content:"\e566"}.fa-road-lock:before{content:"\e567"}.fa-road-spikes:before{content:"\e568"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rotate:before,.fa-sync-alt:before{content:"\f2f1"}.fa-rotate-back:before,.fa-rotate-backward:before,.fa-rotate-left:before,.fa-undo-alt:before{content:"\f2ea"}.fa-redo-alt:before,.fa-rotate-forward:before,.fa-rotate-right:before{content:"\f2f9"}.fa-route:before{content:"\f4d7"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-rouble:before,.fa-rub:before,.fa-ruble-sign:before,.fa-ruble:before{content:"\f158"}.fa-rug:before{content:"\e569"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-rupee-sign:before,.fa-rupee:before{content:"\f156"}.fa-rupiah-sign:before{content:"\e23d"}.fa-s:before{content:"\53"}.fa-sack-dollar:before{content:"\f81d"}.fa-sack-xmark:before{content:"\e56a"}.fa-sailboat:before{content:"\e445"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-balance-scale:before,.fa-scale-balanced:before{content:"\f24e"}.fa-balance-scale-left:before,.fa-scale-unbalanced:before{content:"\f515"}.fa-balance-scale-right:before,.fa-scale-unbalanced-flip:before{content:"\f516"}.fa-school:before{content:"\f549"}.fa-school-circle-check:before{content:"\e56b"}.fa-school-circle-exclamation:before{content:"\e56c"}.fa-school-circle-xmark:before{content:"\e56d"}.fa-school-flag:before{content:"\e56e"}.fa-school-lock:before{content:"\e56f"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-screwdriver:before{content:"\f54a"}.fa-screwdriver-wrench:before,.fa-tools:before{content:"\f7d9"}.fa-scroll:before{content:"\f70e"}.fa-scroll-torah:before,.fa-torah:before{content:"\f6a0"}.fa-sd-card:before{content:"\f7c2"}.fa-section:before{content:"\e447"}.fa-seedling:before,.fa-sprout:before{content:"\f4d8"}.fa-server:before{content:"\f233"}.fa-shapes:before,.fa-triangle-circle-square:before{content:"\f61f"}.fa-arrow-turn-right:before,.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-share-from-square:before,.fa-share-square:before{content:"\f14d"}.fa-share-alt:before,.fa-share-nodes:before{content:"\f1e0"}.fa-sheet-plastic:before{content:"\e571"}.fa-ils:before,.fa-shekel-sign:before,.fa-shekel:before,.fa-sheqel-sign:before,.fa-sheqel:before{content:"\f20b"}.fa-shield-blank:before,.fa-shield:before{content:"\f132"}.fa-shield-cat:before{content:"\e572"}.fa-shield-dog:before{content:"\e573"}.fa-shield-alt:before,.fa-shield-halved:before{content:"\f3ed"}.fa-shield-heart:before{content:"\e574"}.fa-shield-virus:before{content:"\e06c"}.fa-ship:before{content:"\f21a"}.fa-shirt:before,.fa-t-shirt:before,.fa-tshirt:before{content:"\f553"}.fa-shoe-prints:before{content:"\f54b"}.fa-shop:before,.fa-store-alt:before{content:"\f54f"}.fa-shop-lock:before{content:"\e4a5"}.fa-shop-slash:before,.fa-store-alt-slash:before{content:"\e070"}.fa-shower:before{content:"\f2cc"}.fa-shrimp:before{content:"\e448"}.fa-random:before,.fa-shuffle:before{content:"\f074"}.fa-shuttle-space:before,.fa-space-shuttle:before{content:"\f197"}.fa-sign-hanging:before,.fa-sign:before{content:"\f4d9"}.fa-signal-5:before,.fa-signal-perfect:before,.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-map-signs:before,.fa-signs-post:before{content:"\f277"}.fa-sim-card:before{content:"\f7c4"}.fa-sink:before{content:"\e06d"}.fa-sitemap:before{content:"\f0e8"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before,.fa-sliders:before{content:"\f1de"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-soap:before{content:"\e06e"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-spa:before{content:"\f5bb"}.fa-pastafarianism:before,.fa-spaghetti-monster-flying:before{content:"\f67b"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spoon:before,.fa-utensil-spoon:before{content:"\f2e5"}.fa-spray-can:before{content:"\f5bd"}.fa-air-freshener:before,.fa-spray-can-sparkles:before{content:"\f5d0"}.fa-square:before{content:"\f0c8"}.fa-external-link-square:before,.fa-square-arrow-up-right:before{content:"\f14c"}.fa-caret-square-down:before,.fa-square-caret-down:before{content:"\f150"}.fa-caret-square-left:before,.fa-square-caret-left:before{content:"\f191"}.fa-caret-square-right:before,.fa-square-caret-right:before{content:"\f152"}.fa-caret-square-up:before,.fa-square-caret-up:before{content:"\f151"}.fa-check-square:before,.fa-square-check:before{content:"\f14a"}.fa-envelope-square:before,.fa-square-envelope:before{content:"\f199"}.fa-square-full:before{content:"\f45c"}.fa-h-square:before,.fa-square-h:before{content:"\f0fd"}.fa-minus-square:before,.fa-square-minus:before{content:"\f146"}.fa-square-nfi:before{content:"\e576"}.fa-parking:before,.fa-square-parking:before{content:"\f540"}.fa-pen-square:before,.fa-pencil-square:before,.fa-square-pen:before{content:"\f14b"}.fa-square-person-confined:before{content:"\e577"}.fa-phone-square:before,.fa-square-phone:before{content:"\f098"}.fa-phone-square-alt:before,.fa-square-phone-flip:before{content:"\f87b"}.fa-plus-square:before,.fa-square-plus:before{content:"\f0fe"}.fa-poll-h:before,.fa-square-poll-horizontal:before{content:"\f682"}.fa-poll:before,.fa-square-poll-vertical:before{content:"\f681"}.fa-square-root-alt:before,.fa-square-root-variable:before{content:"\f698"}.fa-rss-square:before,.fa-square-rss:before{content:"\f143"}.fa-share-alt-square:before,.fa-square-share-nodes:before{content:"\f1e1"}.fa-external-link-square-alt:before,.fa-square-up-right:before{content:"\f360"}.fa-square-virus:before{content:"\e578"}.fa-square-xmark:before,.fa-times-square:before,.fa-xmark-square:before{content:"\f2d3"}.fa-rod-asclepius:before,.fa-rod-snake:before,.fa-staff-aesculapius:before,.fa-staff-snake:before{content:"\e579"}.fa-stairs:before{content:"\e289"}.fa-stamp:before{content:"\f5bf"}.fa-stapler:before{content:"\e5af"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before,.fa-star-half-stroke:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-gbp:before,.fa-pound-sign:before,.fa-sterling-sign:before{content:"\f154"}.fa-stethoscope:before{content:"\f0f1"}.fa-stop:before{content:"\f04d"}.fa-stopwatch:before{content:"\f2f2"}.fa-stopwatch-20:before{content:"\e06f"}.fa-store:before{content:"\f54e"}.fa-store-slash:before{content:"\e071"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stroopwafel:before{content:"\f551"}.fa-subscript:before{content:"\f12c"}.fa-suitcase:before{content:"\f0f2"}.fa-medkit:before,.fa-suitcase-medical:before{content:"\f0fa"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-sun-plant-wilt:before{content:"\e57a"}.fa-superscript:before{content:"\f12b"}.fa-swatchbook:before{content:"\f5c3"}.fa-synagogue:before{content:"\f69b"}.fa-syringe:before{content:"\f48e"}.fa-t:before{content:"\54"}.fa-table:before{content:"\f0ce"}.fa-table-cells:before,.fa-th:before{content:"\f00a"}.fa-table-cells-large:before,.fa-th-large:before{content:"\f009"}.fa-columns:before,.fa-table-columns:before{content:"\f0db"}.fa-table-list:before,.fa-th-list:before{content:"\f00b"}.fa-ping-pong-paddle-ball:before,.fa-table-tennis-paddle-ball:before,.fa-table-tennis:before{content:"\f45d"}.fa-tablet-android:before,.fa-tablet:before{content:"\f3fb"}.fa-tablet-button:before{content:"\f10a"}.fa-tablet-alt:before,.fa-tablet-screen-button:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-digital-tachograph:before,.fa-tachograph-digital:before{content:"\f566"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tarp:before{content:"\e57b"}.fa-tarp-droplet:before{content:"\e57c"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-temperature-arrow-down:before,.fa-temperature-down:before{content:"\e03f"}.fa-temperature-arrow-up:before,.fa-temperature-up:before{content:"\e040"}.fa-temperature-0:before,.fa-temperature-empty:before,.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-temperature-4:before,.fa-temperature-full:before,.fa-thermometer-4:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-temperature-2:before,.fa-temperature-half:before,.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-temperature-1:before,.fa-temperature-quarter:before,.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-temperature-3:before,.fa-temperature-three-quarters:before,.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-tenge-sign:before,.fa-tenge:before{content:"\f7d7"}.fa-tent:before{content:"\e57d"}.fa-tent-arrow-down-to-line:before{content:"\e57e"}.fa-tent-arrow-left-right:before{content:"\e57f"}.fa-tent-arrow-turn-left:before{content:"\e580"}.fa-tent-arrows-down:before{content:"\e581"}.fa-tents:before{content:"\e582"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-remove-format:before,.fa-text-slash:before{content:"\f87d"}.fa-text-width:before{content:"\f035"}.fa-thermometer:before{content:"\f491"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumb-tack:before,.fa-thumbtack:before{content:"\f08d"}.fa-ticket:before{content:"\f145"}.fa-ticket-alt:before,.fa-ticket-simple:before{content:"\f3ff"}.fa-timeline:before{content:"\e29c"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toilet-paper-slash:before{content:"\e072"}.fa-toilet-portable:before{content:"\e583"}.fa-toilets-portable:before{content:"\e584"}.fa-toolbox:before{content:"\f552"}.fa-tooth:before{content:"\f5c9"}.fa-torii-gate:before{content:"\f6a1"}.fa-tornado:before{content:"\f76f"}.fa-broadcast-tower:before,.fa-tower-broadcast:before{content:"\f519"}.fa-tower-cell:before{content:"\e585"}.fa-tower-observation:before{content:"\e586"}.fa-tractor:before{content:"\f722"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-trailer:before{content:"\e041"}.fa-train:before{content:"\f238"}.fa-subway:before,.fa-train-subway:before{content:"\f239"}.fa-train-tram:before{content:"\e5b4"}.fa-transgender-alt:before,.fa-transgender:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-arrow-up:before,.fa-trash-restore:before{content:"\f829"}.fa-trash-alt:before,.fa-trash-can:before{content:"\f2ed"}.fa-trash-can-arrow-up:before,.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-tree-city:before{content:"\e587"}.fa-exclamation-triangle:before,.fa-triangle-exclamation:before,.fa-warning:before{content:"\f071"}.fa-trophy:before{content:"\f091"}.fa-trowel:before{content:"\e589"}.fa-trowel-bricks:before{content:"\e58a"}.fa-truck:before{content:"\f0d1"}.fa-truck-arrow-right:before{content:"\e58b"}.fa-truck-droplet:before{content:"\e58c"}.fa-shipping-fast:before,.fa-truck-fast:before{content:"\f48b"}.fa-truck-field:before{content:"\e58d"}.fa-truck-field-un:before{content:"\e58e"}.fa-truck-front:before{content:"\e2b7"}.fa-ambulance:before,.fa-truck-medical:before{content:"\f0f9"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-truck-plane:before{content:"\e58f"}.fa-truck-loading:before,.fa-truck-ramp-box:before{content:"\f4de"}.fa-teletype:before,.fa-tty:before{content:"\f1e4"}.fa-try:before,.fa-turkish-lira-sign:before,.fa-turkish-lira:before{content:"\e2bb"}.fa-level-down-alt:before,.fa-turn-down:before{content:"\f3be"}.fa-level-up-alt:before,.fa-turn-up:before{content:"\f3bf"}.fa-television:before,.fa-tv-alt:before,.fa-tv:before{content:"\f26c"}.fa-u:before{content:"\55"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-underline:before{content:"\f0cd"}.fa-universal-access:before{content:"\f29a"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before,.fa-unlock-keyhole:before{content:"\f13e"}.fa-arrows-alt-v:before,.fa-up-down:before{content:"\f338"}.fa-arrows-alt:before,.fa-up-down-left-right:before{content:"\f0b2"}.fa-long-arrow-alt-up:before,.fa-up-long:before{content:"\f30c"}.fa-expand-alt:before,.fa-up-right-and-down-left-from-center:before{content:"\f424"}.fa-external-link-alt:before,.fa-up-right-from-square:before{content:"\f35d"}.fa-upload:before{content:"\f093"}.fa-user:before{content:"\f007"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-clock:before{content:"\f4fd"}.fa-user-doctor:before,.fa-user-md:before{content:"\f0f0"}.fa-user-cog:before,.fa-user-gear:before{content:"\f4fe"}.fa-user-graduate:before{content:"\f501"}.fa-user-friends:before,.fa-user-group:before{content:"\f500"}.fa-user-injured:before{content:"\f728"}.fa-user-alt:before,.fa-user-large:before{content:"\f406"}.fa-user-alt-slash:before,.fa-user-large-slash:before{content:"\f4fa"}.fa-user-lock:before{content:"\f502"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-edit:before,.fa-user-pen:before{content:"\f4ff"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before,.fa-user-xmark:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-between-lines:before{content:"\e591"}.fa-users-cog:before,.fa-users-gear:before{content:"\f509"}.fa-users-line:before{content:"\e592"}.fa-users-rays:before{content:"\e593"}.fa-users-rectangle:before{content:"\e594"}.fa-users-slash:before{content:"\e073"}.fa-users-viewfinder:before{content:"\e595"}.fa-cutlery:before,.fa-utensils:before{content:"\f2e7"}.fa-v:before{content:"\56"}.fa-shuttle-van:before,.fa-van-shuttle:before{content:"\f5b6"}.fa-vault:before{content:"\e2c5"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-vest:before{content:"\e085"}.fa-vest-patches:before{content:"\e086"}.fa-vial:before{content:"\f492"}.fa-vial-circle-check:before{content:"\e596"}.fa-vial-virus:before{content:"\e597"}.fa-vials:before{content:"\f493"}.fa-video-camera:before,.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-virus:before{content:"\e074"}.fa-virus-covid:before{content:"\e4a8"}.fa-virus-covid-slash:before{content:"\e4a9"}.fa-virus-slash:before{content:"\e075"}.fa-viruses:before{content:"\e076"}.fa-voicemail:before{content:"\f897"}.fa-volcano:before{content:"\f770"}.fa-volleyball-ball:before,.fa-volleyball:before{content:"\f45f"}.fa-volume-high:before,.fa-volume-up:before{content:"\f028"}.fa-volume-down:before,.fa-volume-low:before{content:"\f027"}.fa-volume-off:before{content:"\f026"}.fa-volume-mute:before,.fa-volume-times:before,.fa-volume-xmark:before{content:"\f6a9"}.fa-vr-cardboard:before{content:"\f729"}.fa-w:before{content:"\57"}.fa-walkie-talkie:before{content:"\f8ef"}.fa-wallet:before{content:"\f555"}.fa-magic:before,.fa-wand-magic:before{content:"\f0d0"}.fa-magic-wand-sparkles:before,.fa-wand-magic-sparkles:before{content:"\e2ca"}.fa-wand-sparkles:before{content:"\f72b"}.fa-warehouse:before{content:"\f494"}.fa-water:before{content:"\f773"}.fa-ladder-water:before,.fa-swimming-pool:before,.fa-water-ladder:before{content:"\f5c5"}.fa-wave-square:before{content:"\f83e"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weight-scale:before,.fa-weight:before{content:"\f496"}.fa-wheat-alt:before,.fa-wheat-awn:before{content:"\e2cd"}.fa-wheat-awn-circle-exclamation:before{content:"\e598"}.fa-wheelchair:before{content:"\f193"}.fa-wheelchair-alt:before,.fa-wheelchair-move:before{content:"\e2ce"}.fa-glass-whiskey:before,.fa-whiskey-glass:before{content:"\f7a0"}.fa-wifi-3:before,.fa-wifi-strong:before,.fa-wifi:before{content:"\f1eb"}.fa-wind:before{content:"\f72e"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before,.fa-wine-glass-empty:before{content:"\f5ce"}.fa-krw:before,.fa-won-sign:before,.fa-won:before{content:"\f159"}.fa-worm:before{content:"\e599"}.fa-wrench:before{content:"\f0ad"}.fa-x:before{content:"\58"}.fa-x-ray:before{content:"\f497"}.fa-close:before,.fa-multiply:before,.fa-remove:before,.fa-times:before,.fa-xmark:before{content:"\f00d"}.fa-xmarks-lines:before{content:"\e59a"}.fa-y:before{content:"\59"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen-sign:before,.fa-yen:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-z:before{content:"\5a"}.fa-sr-only,.fa-sr-only-focusable:not(:focus),.sr-only,.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}:host,:root{--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}@font-face{font-family:"Font Awesome 6 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}.fa-brands,.fab{font-family:"Font Awesome 6 Brands";font-weight:400}.fa-42-group:before,.fa-innosoft:before{content:"\e080"}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-adn:before{content:"\f170"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-alipay:before{content:"\f642"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-amilia:before{content:"\f36d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-pay:before{content:"\f415"}.fa-artstation:before{content:"\f77a"}.fa-asymmetrik:before{content:"\f372"}.fa-atlassian:before{content:"\f77b"}.fa-audible:before{content:"\f373"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-aws:before{content:"\f375"}.fa-bandcamp:before{content:"\f2d5"}.fa-battle-net:before{content:"\f835"}.fa-behance:before{content:"\f1b4"}.fa-bilibili:before{content:"\e3d9"}.fa-bimobject:before{content:"\f378"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bootstrap:before{content:"\f836"}.fa-bots:before{content:"\e340"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-buromobelexperte:before{content:"\f37f"}.fa-buy-n-large:before{content:"\f8a6"}.fa-buysellads:before{content:"\f20d"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-cloudflare:before{content:"\e07d"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cmplid:before{content:"\e360"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cotton-bureau:before{content:"\f89e"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-critical-role:before{content:"\f6c9"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dailymotion:before{content:"\e052"}.fa-dashcube:before{content:"\f210"}.fa-deezer:before{content:"\e077"}.fa-delicious:before{content:"\f1a5"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dhl:before{content:"\f790"}.fa-diaspora:before{content:"\f791"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-draft2digital:before{content:"\f396"}.fa-dribbble:before{content:"\f17d"}.fa-dropbox:before{content:"\f16b"}.fa-drupal:before{content:"\f1a9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edge-legacy:before{content:"\e078"}.fa-elementor:before{content:"\f430"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envira:before{content:"\f299"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-etsy:before{content:"\f2d7"}.fa-evernote:before{content:"\f839"}.fa-expeditedssl:before{content:"\f23e"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-figma:before{content:"\f799"}.fa-firefox:before{content:"\f269"}.fa-firefox-browser:before{content:"\e007"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-fly:before{content:"\f417"}.fa-font-awesome-flag:before,.fa-font-awesome-logo-full:before,.fa-font-awesome:before{content:"\f2b4"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-fulcrum:before{content:"\f50b"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-gofore:before{content:"\f3a7"}.fa-golang:before{content:"\e40f"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-pay:before{content:"\e079"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-wallet:before{content:"\f1ee"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guilded:before{content:"\e07e"}.fa-gulp:before{content:"\f3ae"}.fa-hacker-news:before{content:"\f1d4"}.fa-hackerrank:before{content:"\f5f7"}.fa-hashnode:before{content:"\e499"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-hive:before{content:"\e07f"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-hotjar:before{content:"\f3b1"}.fa-houzz:before{content:"\f27c"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-ideal:before{content:"\e013"}.fa-imdb:before{content:"\f2d8"}.fa-instagram:before{content:"\f16d"}.fa-instalod:before{content:"\e081"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joomla:before{content:"\f1aa"}.fa-js:before{content:"\f3b8"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaggle:before{content:"\f5fa"}.fa-keybase:before{content:"\f4f5"}.fa-keycdn:before{content:"\f3ba"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-korvue:before{content:"\f42f"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-leanpub:before{content:"\f212"}.fa-less:before{content:"\f41d"}.fa-line:before{content:"\f3c0"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-mailchimp:before{content:"\f59e"}.fa-mandalorian:before{content:"\f50f"}.fa-markdown:before{content:"\f60f"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-mdb:before{content:"\f8ca"}.fa-medapps:before{content:"\f3c6"}.fa-medium-m:before,.fa-medium:before{content:"\f23a"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-mendeley:before{content:"\f7b3"}.fa-meta:before{content:"\e49b"}.fa-microblog:before{content:"\e01a"}.fa-microsoft:before{content:"\f3ca"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mixer:before{content:"\e056"}.fa-mizuni:before{content:"\f3cc"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-nfc-directional:before{content:"\e530"}.fa-nfc-symbol:before{content:"\e531"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-octopus-deploy:before{content:"\e082"}.fa-odnoklassniki:before{content:"\f263"}.fa-old-republic:before{content:"\f510"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-orcid:before{content:"\f8d2"}.fa-osi:before{content:"\f41a"}.fa-padlet:before{content:"\e4a0"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-palfed:before{content:"\f3d8"}.fa-patreon:before{content:"\f3d9"}.fa-paypal:before{content:"\f1ed"}.fa-perbyte:before{content:"\e083"}.fa-periscope:before{content:"\f3da"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pix:before{content:"\e43a"}.fa-playstation:before{content:"\f3df"}.fa-product-hunt:before{content:"\f288"}.fa-pushed:before{content:"\f3e1"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-r-project:before{content:"\f4f7"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-redhat:before{content:"\f7bc"}.fa-renren:before{content:"\f18b"}.fa-replyd:before{content:"\f3e6"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-rev:before{content:"\f5b2"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-rust:before{content:"\e07a"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-schlix:before{content:"\f3ea"}.fa-screenpal:before{content:"\e570"}.fa-scribd:before{content:"\f28a"}.fa-searchengin:before{content:"\f3eb"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-servicestack:before{content:"\f3ec"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shopify:before{content:"\e057"}.fa-shopware:before{content:"\f5b5"}.fa-simplybuilt:before{content:"\f215"}.fa-sistrix:before{content:"\f3ee"}.fa-sith:before{content:"\f512"}.fa-sitrox:before{content:"\e44a"}.fa-sketch:before{content:"\f7c6"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack-hash:before,.fa-slack:before{content:"\f198"}.fa-slideshare:before{content:"\f1e7"}.fa-snapchat-ghost:before,.fa-snapchat:before{content:"\f2ab"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-space-awesome:before{content:"\e5ac"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spotify:before{content:"\f1bc"}.fa-behance-square:before,.fa-square-behance:before{content:"\f1b5"}.fa-dribbble-square:before,.fa-square-dribbble:before{content:"\f397"}.fa-facebook-square:before,.fa-square-facebook:before{content:"\f082"}.fa-square-font-awesome:before{content:"\e5ad"}.fa-font-awesome-alt:before,.fa-square-font-awesome-stroke:before{content:"\f35c"}.fa-git-square:before,.fa-square-git:before{content:"\f1d2"}.fa-github-square:before,.fa-square-github:before{content:"\f092"}.fa-gitlab-square:before,.fa-square-gitlab:before{content:"\e5ae"}.fa-google-plus-square:before,.fa-square-google-plus:before{content:"\f0d4"}.fa-hacker-news-square:before,.fa-square-hacker-news:before{content:"\f3af"}.fa-instagram-square:before,.fa-square-instagram:before{content:"\e055"}.fa-js-square:before,.fa-square-js:before{content:"\f3b9"}.fa-lastfm-square:before,.fa-square-lastfm:before{content:"\f203"}.fa-odnoklassniki-square:before,.fa-square-odnoklassniki:before{content:"\f264"}.fa-pied-piper-square:before,.fa-square-pied-piper:before{content:"\e01e"}.fa-pinterest-square:before,.fa-square-pinterest:before{content:"\f0d3"}.fa-reddit-square:before,.fa-square-reddit:before{content:"\f1a2"}.fa-snapchat-square:before,.fa-square-snapchat:before{content:"\f2ad"}.fa-square-steam:before,.fa-steam-square:before{content:"\f1b7"}.fa-square-tumblr:before,.fa-tumblr-square:before{content:"\f174"}.fa-square-twitter:before,.fa-twitter-square:before{content:"\f081"}.fa-square-viadeo:before,.fa-viadeo-square:before{content:"\f2aa"}.fa-square-vimeo:before,.fa-vimeo-square:before{content:"\f194"}.fa-square-whatsapp:before,.fa-whatsapp-square:before{content:"\f40c"}.fa-square-xing:before,.fa-xing-square:before{content:"\f169"}.fa-square-youtube:before,.fa-youtube-square:before{content:"\f431"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-symbol:before{content:"\f3f6"}.fa-sticker-mule:before{content:"\f3f7"}.fa-strava:before{content:"\f428"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-superpowers:before{content:"\f2dd"}.fa-supple:before{content:"\f3f9"}.fa-suse:before{content:"\f7d6"}.fa-swift:before{content:"\f8e1"}.fa-symfony:before{content:"\f83d"}.fa-teamspeak:before{content:"\f4f9"}.fa-telegram-plane:before,.fa-telegram:before{content:"\f2c6"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-the-red-yeti:before{content:"\f69d"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-think-peaks:before{content:"\f731"}.fa-tiktok:before{content:"\e07b"}.fa-trade-federation:before{content:"\f513"}.fa-trello:before{content:"\f181"}.fa-tumblr:before{content:"\f173"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbraco:before{content:"\f8e8"}.fa-uncharted:before{content:"\e084"}.fa-uniregistry:before{content:"\f404"}.fa-unity:before{content:"\e049"}.fa-unsplash:before{content:"\e07c"}.fa-untappd:before{content:"\f405"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-vaadin:before{content:"\f408"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viber:before{content:"\f409"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-vuejs:before{content:"\f41f"}.fa-watchman-monitoring:before{content:"\e087"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whmcs:before{content:"\f40d"}.fa-wikipedia-w:before{content:"\f266"}.fa-windows:before{content:"\f17a"}.fa-wirsindhandwerk:before,.fa-wsh:before{content:"\e2d0"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wodu:before{content:"\e088"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-rendact:before,.fa-wpressr:before{content:"\f3e4"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-zhihu:before{content:"\f63f"}:host,:root{--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}.fa-regular,.far{font-family:"Font Awesome 6 Free";font-weight:400}:host,:root{--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}.fa-solid,.fas{font-family:"Font Awesome 6 Free";font-weight:900}@font-face{font-family:"Font Awesome 5 Brands";font-display:block;font-weight:400;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:900;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:400;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype");unicode-range:u+f003,u+f006,u+f014,u+f016-f017,u+f01a-f01b,u+f01d,u+f022,u+f03e,u+f044,u+f046,u+f05c-f05d,u+f06e,u+f070,u+f087-f088,u+f08a,u+f094,u+f096-f097,u+f09d,u+f0a0,u+f0a2,u+f0a4-f0a7,u+f0c5,u+f0c7,u+f0e5-f0e6,u+f0eb,u+f0f6-f0f8,u+f10c,u+f114-f115,u+f118-f11a,u+f11c-f11d,u+f133,u+f147,u+f14e,u+f150-f152,u+f185-f186,u+f18e,u+f190-f192,u+f196,u+f1c1-f1c9,u+f1d9,u+f1db,u+f1e3,u+f1ea,u+f1f7,u+f1f9,u+f20a,u+f247-f248,u+f24a,u+f24d,u+f255-f25b,u+f25d,u+f271-f274,u+f278,u+f27b,u+f28c,u+f28e,u+f29c,u+f2b5,u+f2b7,u+f2ba,u+f2bc,u+f2be,u+f2c0-f2c1,u+f2c3,u+f2d0,u+f2d2,u+f2d4,u+f2dc}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-v4compatibility.woff2) format("woff2"),url(../webfonts/fa-v4compatibility.ttf) format("truetype");unicode-range:u+f041,u+f047,u+f065-f066,u+f07d-f07e,u+f080,u+f08b,u+f08e,u+f090,u+f09a,u+f0ac,u+f0ae,u+f0b2,u+f0d0,u+f0d6,u+f0e4,u+f0ec,u+f10a-f10b,u+f123,u+f13e,u+f148-f149,u+f14c,u+f156,u+f15e,u+f160-f161,u+f163,u+f175-f178,u+f195,u+f1f8,u+f219,u+f27a} \ No newline at end of file diff --git a/_static/vendor/fontawesome/6.1.2/webfonts/fa-brands-400.ttf b/_static/vendor/fontawesome/6.1.2/webfonts/fa-brands-400.ttf new file mode 100644 index 00000000..24ca8b17 Binary files /dev/null and b/_static/vendor/fontawesome/6.1.2/webfonts/fa-brands-400.ttf differ diff --git a/_static/vendor/fontawesome/6.1.2/webfonts/fa-brands-400.woff2 b/_static/vendor/fontawesome/6.1.2/webfonts/fa-brands-400.woff2 new file mode 100644 index 00000000..e67e5cd5 Binary files /dev/null and b/_static/vendor/fontawesome/6.1.2/webfonts/fa-brands-400.woff2 differ diff --git a/_static/vendor/fontawesome/6.1.2/webfonts/fa-regular-400.ttf b/_static/vendor/fontawesome/6.1.2/webfonts/fa-regular-400.ttf new file mode 100644 index 00000000..c5ac0095 Binary files /dev/null and b/_static/vendor/fontawesome/6.1.2/webfonts/fa-regular-400.ttf differ diff --git a/_static/vendor/fontawesome/6.1.2/webfonts/fa-regular-400.woff2 b/_static/vendor/fontawesome/6.1.2/webfonts/fa-regular-400.woff2 new file mode 100644 index 00000000..7dca1d90 Binary files /dev/null and b/_static/vendor/fontawesome/6.1.2/webfonts/fa-regular-400.woff2 differ diff --git a/_static/vendor/fontawesome/6.1.2/webfonts/fa-solid-900.ttf b/_static/vendor/fontawesome/6.1.2/webfonts/fa-solid-900.ttf new file mode 100644 index 00000000..43ba1cc7 Binary files /dev/null and b/_static/vendor/fontawesome/6.1.2/webfonts/fa-solid-900.ttf differ diff --git a/_static/vendor/fontawesome/6.1.2/webfonts/fa-solid-900.woff2 b/_static/vendor/fontawesome/6.1.2/webfonts/fa-solid-900.woff2 new file mode 100644 index 00000000..4a7f9665 Binary files /dev/null and b/_static/vendor/fontawesome/6.1.2/webfonts/fa-solid-900.woff2 differ diff --git a/_static/vendor/fontawesome/6.1.2/webfonts/fa-v4compatibility.ttf b/_static/vendor/fontawesome/6.1.2/webfonts/fa-v4compatibility.ttf new file mode 100644 index 00000000..243bc25b Binary files /dev/null and b/_static/vendor/fontawesome/6.1.2/webfonts/fa-v4compatibility.ttf differ diff --git a/_static/vendor/fontawesome/6.1.2/webfonts/fa-v4compatibility.woff2 b/_static/vendor/fontawesome/6.1.2/webfonts/fa-v4compatibility.woff2 new file mode 100644 index 00000000..e18a16d5 Binary files /dev/null and b/_static/vendor/fontawesome/6.1.2/webfonts/fa-v4compatibility.woff2 differ diff --git a/_static/webpack-macros.html b/_static/webpack-macros.html new file mode 100644 index 00000000..160ea1d8 --- /dev/null +++ b/_static/webpack-macros.html @@ -0,0 +1,30 @@ + +{# Load FontAwesome icons #} +{% macro head_pre_icons() %} + + + + +{% endmacro %} + +{% macro head_pre_assets() %} + + + + +{% endmacro %} + +{% macro head_js_preload() %} + + + +{% endmacro %} + +{% macro body_post() %} + + + +{% endmacro %} \ No newline at end of file diff --git a/datafiler.html b/datafiler.html new file mode 100644 index 00000000..3b338791 --- /dev/null +++ b/datafiler.html @@ -0,0 +1,995 @@ + + + + + + + + + Datafiler — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Datafiler

    + +
    +
    + +
    +
    +
    + + + + + + +
    + +
    +
    +
    + +
    + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/datafiler.html b/docs/datafiler.html new file mode 100644 index 00000000..51f249bb --- /dev/null +++ b/docs/datafiler.html @@ -0,0 +1,1007 @@ + + + + + + + + + Datafiler — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Datafiler

    + +
    +
    + +
    +
    +
    + + + + + + + + +
    + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/ekstra/Prosjekt i databehandling.html b/docs/ekstra/Prosjekt i databehandling.html new file mode 100644 index 00000000..87576f6f --- /dev/null +++ b/docs/ekstra/Prosjekt i databehandling.html @@ -0,0 +1,1355 @@ + + + + + + + + + Prosjekt i databehandling — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + + + +
    + +
    +

    Prosjekt i databehandling#

    +

    Å kunne automatisere behandlingen av store mengder informasjon er en viktig del av programmering. I dette prosjektet skal dere prøve å knytte programmet deres til større databaser med informasjon, og trekke informasjonen ut av disse databasene. Deretter skal programmene deres tolke informasjonen og behandle dataene.

    +

    Dere skal jobbe i grupper på 2–4 personer, og alle skal bidra til det ferdige produktet. Det er veldig vanlig å jobbe i grupper når en skal programmere i yrkeslivet, og det er nyttig å få litt innblikk i hvordan en slik prosess fungerer allerede nå. Det er viktig at dere fordeler oppgaver på en hensiktsmessig måte mellom dere. Dere velger først en prosjektleder som kan ha det overordna ansvaret for at alt skal henge sammen til slutt, og som delegerer oppgaver som trengs å gjøres. For at det skal være enkelt å fordele oppgaver, kan det være lurt å lage ulike funksjoner som gjør forskjellige operasjoner. Dere kan eventuelt sitte sammen og gjøre all programmeringa felles. Prosjektet skal munne ut i et ferdig program og en rapport fra prosjektarbeidet.

    +

    Dere kan velge mellom tre naturvitenskapelige problemstillinger, men dere står også fritt til å lage et eget prosjekt, dersom dere har noen gode idéer. Snakk med læreren når dere har fått en idé som dere tror lar seg gjennomføre. Under evaluering av prosjektet blir det lagt vekt på:

    +
      +
    • God og strukturert kode

    • +
    • Kreativ og velreflektert løsningsstrategi

    • +
    • Realfaglig forståelse

    • +
    • Grad av samarbeid

    • +
    +

    Det kan være lurt å bruke Github for å samarbeide, og dere skal bruke Jupyter Notebook som leveringsformat, der dere skal lage en rapport med programmene integrert i rapporten. Rapporten skal inneholde:

    +
      +
    • Nødvendig faglig matematisk/naturvitenskapelig teori.

    • +
    • Litt teori rundt noe av det programmeringstekniske (som statistik behandling av data eller regresjon, dersom du bruker det).

    • +
    • Drøfting av dataene og analysen dere har gjort.

    • +
    +

    Nedenfor er forslag til oppgaver som dere kan fordype dere i.

    +
    +

    Oppgave 1: Kjernefysiske reaksjoner (fysikk)#

    + +
    +

    Teori#

    +

    Kjernefysiske prosesser blir stadig viktigere i vårt energikrevende samfunn, og det diskuteres stadig om kjernekraft er en av løsningene på miljø- og energiutfordringene vi står overfor i samfunnet vårt i dag. Prinsippet bak fisjonsreaktorer er at atomkjerner som er tyngre enn jern, spaltes opp ved å skyte nøytroner på dem. Da omdannes noe masse til energi ifølge Einsteins berømte masse-energilov:

    +

    \(E=mc^2\)

    +

    For å regne ut energien som frigjøres i en kjernefysisk prosess, regner en ut forskjellen i masse før og etter en kjernefysisk reaksjon, og ganger så denne massen med kvadratet av lysets hastighet. Det er slitsom og kjedelig å slå opp alle disse nuklidemassene i en tabell hver gang en skal gjøre beregninger, og da er det nyttig med et program som kan gjøre dette for oss!

    +
    +
    +

    Oppgave#

    +

    Lag et program som regner ut energien som frigjøres i en kjernefysisk reaksjon valgt av brukeren. Det kan være både fisjon, fusjon og radioaktive prosesser. Brukeren skal gi input for hvilke grunnstoffer hun har på høyre og venstre side av reaksjonspila. Fila som programmet skal hente informasjon fra, ligger her.

    +
    +
    +
    +

    Oppgave 2: Lineær regresjon (matematikk)#

    + +
    +

    Teori#

    +

    I matematikk 1T diskuterer man at hvis man gjør målinger/observasjoner og plotter dette som punkter i et koordinatsystem, da kan man bruke regresjon for å finne en kurve som passer best til punktene. Helt konkret, i matematikk 1T brukte man GeoGebra til å finne en lineær funksjon, \(f(x)=ax+b\), som passet best til punktene. Men, hva betyr ‘best’? Hvordan finner man egentlig denne funksjonen? Hvor sikker kan vi være på funksjonsuttrykket vårt? Sagt på en annen måte, hva pokker er lineær regresjon og hva er matematikken bak det?

    +

    Anta man har f.eks. tre punkter \((x_1,y_1), (x_2,y_2), (x_3,y_3)\) som ikke ligger på en linje. Hvis vi ønsker å finne en linje som passer ‘best’ til disse så kan man tenke seg at avstanden fra linja til punktene skal være minst mulig. Det betyr at hvis man kan lage et uttrykk for avstanden så bør man kunne derivere uttrykket for å finne et uttrykk for linja sammen med litt matematikk.

    +
    +
    +

    Oppgave#

    +
      +
    1. Finn ut hvordan man gjør lineær regresjon for tre punkter i planet ved å lage et uttrykk for avstanden/feilen og minimere med derivasjon.

    2. +
    3. Hva hadde skjedd hvis man hadde hatt flere enn tre punkter?

    4. +
    5. Lag et program et program der brukeren kan taste inn \(n\) punkter og programmet gjør lineær regresjon.

    6. +
    7. Bruk programmet deres på et egnet stort datasett.

    8. +
    9. Sammenlignn lineær regresjonsbiblioteker i Python med deres eget program.

    10. +
    +
    +
    +
    +

    Oppgave 3: Klassifisering av irisblomster (biologi)#

    + +
    +

    Teori#

    +

    Irisblomster er en slekt av opp mot 300 arter innenfor sverdliljefamilien. I 1936 klassifiserte genetikeren Ronald Fischer tre varieteter av irisblomster i denne slekten (se bildet ovenfor). Det ble da også samlet inn data for ulike individer av disse varietetene, spesielt lengde og bredde på begerblad (sepal) og kronblad (petal). Fila som programmet skal hente informasjon fra, ligger her.

    +
    +
    +

    Oppgave#

    +
      +
    • Les av og undersøk irisblomstdatasettet.

    • +
    • Lag flere plott av ulike variabler mot hverandre og beskriv sammenhengen mellom dataene. Eksperimenter med farger og ulike typer plott (histogram, boksplott, linjeplott, punktplott osv.).

    • +
    • Finn ut hvordan du kan utføre regresjon på datasettene.

    • +
    • Gjør en passende regresjon med ulike variabler og forklar sammenhengen.

    • +
    +
    +
    +
    +

    Oppgave 4: Eulers totientfunksjon (matematikk)#

    + +
    +

    Teori#

    +

    To naturlige tall (heltall\(\geq 1\)) er innbyrdes primiske hvis største fellesdivisor mellom tallene er 1. For eksempel, \(6\) og \(25\) er innbyrdes primiske fordi \(1\) er de største heltallet som deler både \(6\) og \(25\). Gitt, et naturlig tall \(n\) kan man spørre hvor mange tall er innbyrdes primiske med \(n\) og mindre enn \(n\)? Et svar på dette er Eulers totientfunksjon \(\varphi(n)\) som angir antall naturlige tall innbyrdes primiske tall med \(n\) mindre enn \(n\). Denne funksjonen er relevant innen kryptering.

    +

    I denne oppgaven skal du lage et datasett ved å lese informasjon fra et nettsted. Deretter skal du bruke datasettet ditt til å utforske egenskaper med funksjonen, og så skal du produsere et stort datasett med verdier og annen informasjon om funksjonen.

    +
    +
    +

    Oppgave#

    +
      +
    1. Bruk Python til å lese informasjonen fra nettsiden http://primefan.tripod.com/Phi500.html til en csv-fil.

    2. +
    3. Rydd opp i csv-filen og lag hensiktsmessige kolonner.

    4. +
    5. Bruk datasettet ditt til å utforske funksjonen og lag hypoteser om funksjonen (f.eks. hva kan man si om \(\varphi(p)\) når \(p\) er et primtall?)

    6. +
    7. Avgjør om hypotesene dine stemmer eller ei.

    8. +
    9. Utvid datasettet ditt på en hensiktsmessig måte og produser resultatet til en csv-fil.

    10. +
    +
    +
    +
    +

    Oppgave 5: Rødvinskvalitet (kjemi)#

    + +
    +

    Teori#

    +

    Rødvinskvalitet er en subjektiv vitenskap, men kjemi er objektivt! Vi kan utforske ulike faktorer i vin for å bedømme hvilke kriterier som vinkjennere faktisk kjenner igjen. Datasettet vi skal se på (her, inneholder noen verdier som trenger forklaring:

    +
      +
    • Fixed and volatile acidity: Mengden syre og flyktig syre (gasser) i g/L.

    • +
    • Citric acid: Mengden sitronsyre i g/L.

    • +
    • Residual sugar: Mengden sukker etter endt fermentering av vinen i g/L.

    • +
    • Sulphur dioxide: Mengde svoveldioksid tilsatt i vinen i mg/L.

    • +
    +
    +
    +

    Oppgave#

    +
      +
    • Les av fila og undersøk dataene.

    • +
    • Finn gjennomsnitt med standardavvik (finn ut hva det er!) av de ulike verdiene og lag en tabell med disse statistiske dataene.

    • +
    • Hvilken funksjon har svoveldioksid og sulfater i vin? Hva menes med fritt og bundet svoveldioksid?

    • +
    • Plott ulike data mot hverandre.

    • +
    • Finn ut hvilke faktorer som korrelerer med rødvinskvaliteten. Diskuter om korrelasjon nødvendigvis betyr kausalitet.

    • +
    +
    +
    +
    +

    Oppgave 6: Lemurer (biologi)#

    + +

    Dette prosjektet er spesielt for de som har vært med på å samle inn data på Madagaskar i 2018. Datasettet “Lemurer” inneholder populasjonsdata fra 2015 til i dag. Spør Andreas om datasettet hvis du velger dette prosjektet.

    +
    +

    Oppgave#

    +
      +
    • Les av fila og undersøk dataene.

    • +
    • Finn flere måter å representere dataene på. Se f.eks. på utvikling over tid eller lemurtyper sortert etter tidspunkt på dagen.

    • +
    • Er det noe forskjell på lemurforekomsten i Mariarano og Matsedroy?

    • +
    • Drøft framstillingene. Hva kan de si oss om lemurpopulasjonen i dette området?

    • +
    +
    +
    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git "a/docs/ekstra/Str\303\245lingsbalansemodell.html" "b/docs/ekstra/Str\303\245lingsbalansemodell.html" new file mode 100644 index 00000000..33c92223 --- /dev/null +++ "b/docs/ekstra/Str\303\245lingsbalansemodell.html" @@ -0,0 +1,1151 @@ + + + + + + + + + Modellering av jordas strålingsbalanse — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Modellering av jordas strålingsbalanse

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    + +
    + +
    +

    Modellering av jordas strålingsbalanse#

    +

    Når vi lager en modell for dette systemet, er det hovedsakelig to ting vi bør ha med:

    +
      +
    1. En modell for absorbert stråling (IR, synlig, UV) fra sola.

    2. +
    3. En modell for emittert stråling (IR) fra jorda.

    4. +
    +

    Modellen bør være et uttrykk for endringen i overflatetemperaturen til jorda som funksjon av tida. Siden vi er interessert i endringen til enhver tid, kan vi benytte den deriverte (momentan endring).

    +
    +\[T'(t) = S_{inn} - S_{ut}\]
    +

    der \(S_{inn}\) er absorbert stråling og \(S_{ut}\) er emittert stråling. La oss se på ulike modeller for dette.

    +
    +

    Antakelser#

    +
      +
    • Jorda modelleres med en statisk albedo (refleksjonsgrad), \(\alpha\). Dette begrenser tidsrommet modellen kan brukes i, da albedoen på jorda endres med tida. Mengden absorbert kortbølget stråling modelleres slik:

    • +
    +
    +\[\frac{(1-\alpha)S}{4}\]
    +

    der \(S \approx 1361\) W/m\(^2\) er gjennomsnittlig stråling motatt fra sola i løpet av et år og \(\alpha \approx 0.32\) er albedoen til jorda.

    +
      +
    • Jorda modelleres som et svartlegeme med hensyn til utsending av stråling med lang bølgelengde, altså et legeme som absorberer all stråling som sendes mot den. Dermed følger emisjonen av langbølget stråling Stefan-Boltzmanns lov:

    • +
    +
    +\[F = \epsilon \cdot \sigma \cdot T^4\]
    +

    der \(\epsilon\) er emissiviteten til legemet, altså et mål på hvor mye legemet oppfører seg som et svartlegeme. For et fullstendig svartlegeme er \(\epsilon = 1\), for et perfekt speil er \(\epsilon = 0\). Stefan-Boltzmann-konstanten \(\sigma = 5.67\cdot 10^{-8}\) Wm\(^{-2}\)K\(^-4\), og \(T\) er den gjennomsnittlige temperaturen på overflaten til jorda.

    +
      +
    • Overflatetemperaturen blir tilnærmet som en planet med 70 % vann med gjennomsnittlig dybde på 70 meter. Varmekapasiteten til jorda kan da beregnes til å være \(C = 2.08\cdot 10^8\) JK\(^{-1}\)m\(^{-2}\).

    • +
    +
    +
    +

    Totalmodell#

    +

    Vi ønsker å finne overflatetemperaturen til jorda som funksjon av tid, \(T_s(t)\). Vi kan formulere en modell for endringen i overflatetemperatur ved hjelp av modellene vi har gjort rede for.

    +
    +\[T'(t) = S_{inn} - S_{ut} = \frac{1}{C}\left( \frac{(1-\alpha)S}{4} - \epsilon \cdot \sigma \cdot T^4 \right)\]
    +

    som er en differensiallikning der \(T(t)\) er den ukjente.

    +
    +
    +
    from pylab import *
    +
    +T0 = 240
    +epsilon = 1
    +sigma = 5.67E-8
    +C = 2.08E8
    +S = 1361
    +alpha = 0.32
    +
    +#Tidsparametre
    +tid = 1000 # år
    +dt = 1E-3
    +N = int(tid/dt)
    +
    +T = zeros(N+1)
    +t = zeros(N+1)
    +T[0] = T0
    +
    +for i in range(N):
    +    Tder = (1/C)*((1-alpha)*S/4 - epsilon*sigma*T[i]**4)
    +    T[i+1] = T[i] + Tder*dt
    +    t[i+1] = t[i] + dt
    +
    +plot(t,T)
    +show()
    +
    +
    +
    +
    +../../_images/824e9c3dcccad88610852dd4b1acbe552b27c553b42c860c74decac03355e1b3.png +
    +
    +
    +
    +
    N = 100            #antall steg
    +sigma = 5.67E-8    #Stefan-Boltzmanns konstant
    +
    +Rjord = 0.3    #andel reflektert av jorda
    +Ratm = 0.4    #andel reflektert av atmosfæren tilbake til jorda
    +
    +UatmTrans = 340       #utstrålingstetthet fra sola transmittert gjennom atmosfæren, W/m^2
    +UjordRef = zeros(N)   #utstrålingstetthet reflektert av jordoverflaten
    +UjordEmit = zeros(N)  #utstrålingstetthet emittert av jordoverflaten pga temperatur
    +UatmRef = zeros(N)    #utstrålingstetthet reflektert av atmosfæren tilbake til jorda
    +UjordAbs = zeros(N)   #utstrålingstetthet absorbert av jordoverflaten
    +
    +T = zeros(N)        #jordas temperatur
    +
    +#startverdier: ingen drivhuseffekt
    +UjordAbs[0] = UatmTrans*(1-Rjord)
    +UjordEmit[0] = UjordAbs[0]
    +T[0] = (UjordAbs[0]/sigma)**(1/4)
    +
    +for i in range(N-1):
    +    #starter drivhuseffekten
    +    UatmRef[i+1] = (UjordRef[i] + UjordEmit[i])*Ratm
    +    UjordRef[i+1] = (UatmTrans + UatmRef[i])*Rjord
    +    UjordAbs[i+1] = UatmTrans + UatmRef[i] - UjordRef[i+1]
    +    UjordEmit[i+1] = UjordAbs[i]
    +    
    +    T[i+1] = (UjordAbs[i+1]/sigma)**(1/4)      #Stefan-Boltzmanns lov
    +   
    +    #lineær økning av atmosfærens reflektivitet i 10 steg
    +    if i > 40 and i < 50:
    +        Ratm += 0.005
    +
    +plot(T-273)
    +plot(40,T[40]-273,'.')
    +plot(50,T[50]-273,'.')
    +legend(['global temperatur', 'starter utslipp', 'stopper utslipp'])
    +xlabel('steg')
    +ylabel('$^\circ C$')
    +title('Gjennomsnittlig global temperatur')
    +
    +
    +
    +
    +
    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + +
    + +
    + +
    + On this page +
    + +
    + +
    + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/ekstra/arrayer.html b/docs/ekstra/arrayer.html new file mode 100644 index 00000000..cb061961 --- /dev/null +++ b/docs/ekstra/arrayer.html @@ -0,0 +1,1165 @@ + + + + + + + + + Datasamlinger — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Datasamlinger

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    + +
    + +
    +

    Datasamlinger#

    +
    +

    Læringsutbytte

    +

    Etter å ha arbeidet med dette temaet, skal du kunne:

    +
      +
    1. opprette ulike arrayer

    2. +
    3. gjøre vektoroperasjoner med arrayer

    4. +
    5. gjøre rede for hva tupler er

    6. +
    7. opprette og bruke dictionarier

    8. +
    +
    +

    Vi har flere måter å organisere data på i Python. Her er en kort oversikt over de viktigste datasamlingene:

    +
      +
    1. Lister (fleksible samlinger av like eller ulike data)

    2. +
    3. Arrayer (samlinger av tall som kan opereres på som vektorer).

    4. +
    5. Tupler (statiske lister som ikke kan endres)

    6. +
    7. Dictionarier (lister med strenger, ikke tall, som nøkler)

    8. +
    +

    Vi har allerede sett hvordan lister fungerer. La oss se på de tre andre datatypene.

    +
    +

    Arrayer#

    +

    Vi begynner med et eksempel som illustrerer forskjellen mellom lister og arrayer. For å kunne bruke arrayer, må vi først importere numpy eller pylab.

    +
    +
    +
    import numpy as np
    +
    +liste1 = [1, 2, 3]
    +liste2 = [2, 3, 1]
    +
    +print("listesum:", liste1 + liste2)
    +
    +array1 = np.array(liste1)
    +array2 = np.array(liste2)
    +
    +print("arraysum:", array1 + array2)
    +
    +
    +
    +
    +
    listesum: [1, 2, 3, 2, 3, 1]
    +arraysum: [3 5 4]
    +
    +
    +
    +
    +
    +

    Underveisoppgave

    +

    Bruk koden ovenfor til å forklare forskjellen mellom listeaddisjon og arrayaddisjon.

    +
    + +
    +

    Opprette arrayer#

    +

    Vi kan opprette arrayer på flere måter:

    + +
    +

    Underveisoppgave

    +

    Forklar de ulike måtene å opprette arrayer på ved å endre på forskjellige parametre i programmet ovenfor.

    +
    + + +
    +
    +

    Behandle arraydata#

    +

    I motsetning til med lister, kan vi ikke bruke listeoperasjoner som append, remove og liknende når vi opererer med arrayer. Vi kan derimot få tilgang til elementene ved indekser, akkurat som med lister.

    +
    +

    Underveisoppgave

    +
      +
    1. Forklar hva koden nedenfor gjør.

    2. +
    3. Kjør koden og se om det stemmer med slik du hadde tenkt. Hvis ikke, hva er forskjellen?

    4. +
    5. +
    +
    +
    +
    +
    array2
    +
    +
    +
    +
    +
    array([1, 2, 3])
    +
    +
    +
    +
    +
    +
    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + +
    + +
    + +
    + On this page +
    + +
    + +
    + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/ekstra/datahandtering.html b/docs/ekstra/datahandtering.html new file mode 100644 index 00000000..ff612011 --- /dev/null +++ b/docs/ekstra/datahandtering.html @@ -0,0 +1,1089 @@ + + + + + + + + + Datahåndtering (teori) — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Datahåndtering (teori)

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    + +
    + +
    +

    Datahåndtering (teori)#

    +
    +

    Læringsutbytte

    +

    Etter å ha arbeidet med dette temaet, skal du kunne:

    +
      +
    1. Lese data fra fil.

    2. +
    3. Plotte fildata.

    4. +
    5. Utføre regresjon for å modellere sammenhenger i fildata.

    6. +
    7. Bruke enkel statistikk (gjennomsnitt, standardavvik).

    8. +
    +
    +
    +

    Lese fra fil#

    +

    I videoen nedenfor forklares hvordan du kan lese datafiler med Python.

    +
    +
    +
    + +
    +
    +

    Når du har sett videoen, kan du gjøre følgende oppgave for å sjekke om du forstår innholdet:

    +
    +

    Underveisoppgave

    +

    Fila temperatur.txt inneholder temperaturmålinger som funksjon av tid. Les av fila og plott fildataene.

    +
    + +
    +
    +

    Regresjon#

    +

    Her skal vi se hvordan vi kan utføre regresjon på datapunkter.

    +
    +
    +
    + +
    +
    +

    Når du har sett videoen, kan du gjøre følgende oppgave for å sjekke om du forstår innholdet:

    +
    +

    Underveisoppgave

    +

    Benytt koderuta i forrige underveisoppgave og utfør regresjon av 1. og 2. grad av datapunktene ovenfor. Plott regresjonskurvene i samme koordinatsystem som datapunktene.

    +
    +
    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + +
    + +
    + +
    + On this page +
    + +
    + +
    + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/ekstra/filmer_datasamlinger.html b/docs/ekstra/filmer_datasamlinger.html new file mode 100644 index 00000000..5c8ef4ce --- /dev/null +++ b/docs/ekstra/filmer_datasamlinger.html @@ -0,0 +1,1102 @@ + + + + + + + + + Datasamlinger (teori) — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Datasamlinger (teori)

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    + +
    + +
    +

    Datasamlinger (teori)#

    +
    +

    Læringsutbytte

    +

    Etter å ha arbeidet med dette temaet, skal du kunne:

    +
      +
    1. Opprette og bruke lister, arrayer og dictionarier, og forklare forskjellen mellom dem.

    2. +
    3. Utføre operasjoner på lister, arrayer og dictionarier.

    4. +
    +
    +
    +

    Lister#

    +

    I videoen nedenfor forklares hvordan du kan opprette og utføre operasjoner på lister.

    +
    +
    +
    + +
    +
    +

    Når du har sett videoen, kan du gjøre følgende oppgave for å sjekke om du forstår innholdet:

    +
    +

    Underveisoppgave

    +

    Lag ulike to lister med bøker, TV-serier, fotballspillere eller liknende. Listene bør ha minst 5 elementer hver, men gjerne flere.

    +
      +
    1. Legg sammen de to listene.

    2. +
    3. Slett det første og tredje elementet i den sammenslåtte lista.

    4. +
    5. Finn ut hvilken indeks ett av elementene har.

    6. +
    7. Lag ei ny liste av element 2–5.

    8. +
    9. Finn indeksen til et av elementene og slett dette elementet.

    10. +
    11. Skriv ut lista til slutt.

    12. +
    +
    + +
    +
    +

    Arrayer#

    +

    Her skal vi se hvordan vi kan opprette og utføre operasjoner på arrayer.

    +
    +
    +
    + +
    +
    +

    Når du har sett videoen, kan du gjøre følgende oppgave for å sjekke om du forstår innholdet:

    +
    +

    Underveisoppgave

    +

    Et program skal regne ut c = a + b og c = a * b. Forklar hva c vil bli dersom

    +
      +
    • a = [1,2,3,4] og b = [1,2,3,4]

    • +
    • a = [1,2,3,4] og b = 2

    • +
    • a = array([1,2,3,4]) og b = array([1,2,3,4])

    • +
    • a = array([1,2,3,4]) og b = 2 +Beskriv hva som skjer i de ulike tilfellene.

    • +
    +
    +
    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + +
    + +
    + +
    + On this page +
    + +
    + +
    + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/ekstra/hjelp_modelleringsoppgave2.html b/docs/ekstra/hjelp_modelleringsoppgave2.html new file mode 100644 index 00000000..fb168a8f --- /dev/null +++ b/docs/ekstra/hjelp_modelleringsoppgave2.html @@ -0,0 +1,1169 @@ + + + + + + + + + Støtte til modelleringsoppgave 2 (temperaturmodellering) — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Støtte til modelleringsoppgave 2 (temperaturmodellering)

    + +
    + +
    +
    + +
    + +
    +
    +
    import math as math
    +
    +
    +
    +
    +
    +

    Støtte til modelleringsoppgave 2 (temperaturmodellering)#

    +
    +
    +
    """Konstanter"""
    +#Stefan-Boltzman Konstant
    +sigma=(5.67e-8) #[W m^2 K^4]
    +#Temperatur Sola
    +temperatur_sol = 5778 #[Kelvin]
    +diameter_sol = 1391016e3 #[m]
    +distanse_sol_jord = 149600000e3 #[m]
    +radius_jord = 6371e3 #[m]
    +albedo = 0.3
    +
    +
    +
    +
    +
    +

    Oppgave 1)#

    +

    Formelen for å kalkulere mengden energi som treffer toppen av atmosfæren (\(S_0\)) er:

    +
    +\[S_0 = \large\frac{{radius_{sun}}^2}{{distanse_{jord\space sol}}^2} \cdot stråling\space sol\]
    +
    +
    +
    stråling_sol = sigma*(temperatur_sol**4)
    +s0 = ((diameter_sol/2)**2)/(distanse_sol_jord**2)*stråling_sol
    +print (s0)
    +
    +
    +
    +
    +
    1365.948361181013
    +
    +
    +
    +
    +
    +
    +

    Oppgave 2)#

    +

    Bruk energiprinsippet og Stefan-Boltzmanns lov til å lage et utrykk for gjennomsnittlig temperatur på jorden. Noe av innstrålingen fra solen vil bli reflektert, og målet for refleksjonen til en flate kalles albedo. Legg til denne refleksjonsfaktoren for jordkloden og kalkuler temperaturen på jorden. Anta at +temperaturen på planeten er konstant, og at planeten er en flat sirkel.

    +

    solar_insolation_planet_sphere_disk_600x320.png

    +
    +

    Utrykket for temperatur man skal komme frem til:#

    +
    +\[T = \sqrt[4]{\frac{K_s\cdot(1-albedo)}{4\sigma}}\]
    +

    Prøv å vis hvordan man får dette utrykket.

    +
    +
    +
    temperatur = ((s0*(1-albedo))/(4*sigma))**(1/4)
    +temperatur - 273.15
    +
    +
    +
    +
    +
    -18.336567683297915
    +
    +
    +
    +
    +
    +
    +
    +

    Oppgave 3)#

    +

    Når vi skal legge til atmosfæren i modellen gjør vi ganske mange forenklinger. Vi antar tre ting (og ingen av antagelsene er faktisk sanne!):

    +
      +
    1. Atmosfæren har en konstant temperatur - dvs. at atmosfæren er en stor blokk hvor hele blokken har den samme temperaturen.

    2. +
    3. Atmosfæren er fullstendig gjennomsiktig for stråling fra solen - dvs at all stråling fra solen treffer jordoverflaten.

    4. +
    5. Atmosfæren tar imot all stråling fra jorden.

    6. +
    +

    Atmosf%C3%A6re.png

    +

    Figuren over viser situasjonen med antagelsene:
    +(1) viser solinnstårlingen som treffer jordkloden.
    +(3) viser utsrålingen fra jordkloden som treffer atmosfæren.
    +(2) viser situasjonen til atmosfæren. Atmosfæren vil sende ut stråling til verdensrommet, men også stråling tilbake til jorden. Energien atmosfæren sender ut kan da kalkuleres ved å bruke stefan-boltzmans lov.

    +

    Prøv å legg inn atmosfæren som et ledd i din kalkulering og se hvordan det påvirker temperaturen.

    +
    +

    Løsning ved bruk av figuren over.#

    +

    \(Energi_{inn} = Energi_{ut}\) er fortsatt det som gjelder, men denne gangen blir det to ligninger. Etter systemet nevnt i oppgave 3(a) blir likningene:

    +
    +\[\space s_0\cdot(1-albedo) = \sigma T_{a}^4 \]
    +
    +\[\space s_0\cdot(1-albedo) + \sigma T_{a}^4 = \sigma T_{s}^4\]
    +

    Sett likning 1 inn i 2 for å få en løsning for \(T_{s}\)

    +

    Prøv å vis på figuren hvilke piler disse to likningene representerer. Prøv å forklar til deg selv hva som er gjort her for å forstå likningsystemet.

    +

    Kommentar: Resultatet her vil være veldig høyt. I denne situasjonen vil energien til atmosfæren være det jorden sender ut. Vi har jo kalkulert at jorden blir truffet med 1365 watt/m^2, men denne energien vil bare være når solen står på sitt høyeste vertikalt rett ned på jorden. På grunn av rotasjonen til jorden, med natt og dagsykluser, og at jorden egentlig er en kule vil ikke dette være den faktiske gjennomsnittelige innstrålingen som treffer jorden. En forenkling for å finne gjennomsnitt på innstrålingen over hele jordkloden når man tenker at deler ikke får like mye sollys hele tiden vil da være: \(S_{0}\)/4 = 1365/4 watt/\(m^2\). Dette nummeret er veldig nærme den observerte gjennomsnittelige energien som treffer jorden. Sett inn \(S_{0}/4\) inn for \(S_{0}\) og sjekk hva som skjer med \(T_{s}\).

    +
    +
    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/ekstra/integrasjon.html b/docs/ekstra/integrasjon.html new file mode 100644 index 00000000..ad6556b3 --- /dev/null +++ b/docs/ekstra/integrasjon.html @@ -0,0 +1,1079 @@ + + + + + + + + + 10. Numerisk integrasjon — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    10. Numerisk integrasjon

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    + +
    + +
    +

    10. Numerisk integrasjon#

    +

    Her skal vi se på metoder for å tilnærme det bestemte integralet.

    +
    +

    Læringsutbytte

    +

    Etter å ha arbeidet med dette temaet, skal du kunne:

    +
      +
    1. Forklare forskjellen på ulike tilnærminger til rektangelmetoden (venstre-, høyre- og midtpunktstilnærming).

    2. +
    3. Forklare og utlede trapesmetoden.

    4. +
    5. Implementere rektangelmetoden og trapesmetoden.

    6. +
    7. Integrere funksjoner numerisk.

    8. +
    +
    +
    +

    Rektangelmetoden#

    +
    +
    +
    +
    +

    Når du har sett videoen, kan du gjøre følgende oppgave for å sjekke om du forstår innholdet:

    +
    +

    Underveisoppgave: Derivasjon av funksjoner

    +

    Implementer algoritmen for rektangelmetoden som en Python-funksjon. Test metoden på integralet

    +
    +\[\int_2^8 f(x) = x^2 - 2x + 4 \ dx\]
    +
    + +
    +
    +

    Ulike tilnærminger#

    +
    +
    +
    +
    +

    Når du har sett videoen, kan du gjøre følgende oppgave for å sjekke om du forstår innholdet:

    +
    +

    Underveisoppgave: Derivasjon av funksjoner

    +

    Implementer trapesmetoden og ulike tilnærmnger for rektangelmetoden som Python-funksjoner. Gjør en feilanalyse av metodene og sammenlikn svarene du får på integralet

    +
    +\[\int_2^8 f(x) = x^2 - 2x + 4 \ dx\]
    +
    + +
    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + +
    + +
    + +
    + On this page +
    + +
    + +
    + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/ekstra/kunstig_intelligens_ml.html b/docs/ekstra/kunstig_intelligens_ml.html new file mode 100644 index 00000000..cd734c59 --- /dev/null +++ b/docs/ekstra/kunstig_intelligens_ml.html @@ -0,0 +1,4482 @@ + + + + + + + + + Maskinlæring II: Nevrale nettverk og kunstig intelligens — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Maskinlæring II: Nevrale nettverk og kunstig intelligens

    + +
    + +
    +
    + +
    + +
    +

    Maskinlæring II: Nevrale nettverk og kunstig intelligens#

    +

    Kunstige nevrale nettverk har likhetstrekk med hvordan hjernen fungerer. Vi bygger dem opp ved hjelp av noder og sammmenkoblinger mellom nodene, ikke ulikt nerveceller og koblinger mellom dem. Nodene …

    +

    Først trener vi nettverket. Da finner vi ut av hvor mye de ulike koblingene mellom noder skal være vekta for at forskjellene mellom faktiske verdier og forutsigelser skal være så små som mulig. En vekt bestemmer hvor sterk en kobling mellom noder er. Vi måler forskjell mellom forutsigelser og faktiske verdier slik:

    +
    +\[loss = \Sigma (y - ŷ)^2\]
    +
    +

    Lineær regresjon#

    +
    +
    +
    import numpy as np
    +import matplotlib.pyplot as plt
    +import tensorflow as tf
    +from tensorflow.keras.models import Sequential
    +from tensorflow.keras.layers import Activation, Dense
    +from tensorflow.keras.optimizers import Adam
    +from tensorflow.keras.metrics import categorical_crossentropy
    +from tensorflow.keras.losses import MeanSquaredError
    +from sklearn.utils import shuffle
    +from sklearn.preprocessing import MinMaxScaler
    +
    +
    +
    +
    +
    +
    +
    N = 100
    +x = np.linspace(0,5,N)
    +y = 3*x + 2 + np.random.uniform(-5,5,N)
    +
    +plt.scatter(x, y)
    +
    +
    +
    +
    +
    <matplotlib.collections.PathCollection at 0x214911285e0>
    +
    +
    +../../_images/2a73b83587bea8742ea1c05f1e3d7a2b9c70d8bb4d92cb95e023c08e3d06b6c6.png +
    +
    +

    Modellen vi kan konstruere fra uttrykket \(y = ax + b\) har kun én input-node (\(x\)) og én output-node (\(y\)), så det vi må gjøre, er å optimalisere vektingen slik at den nærmer seg a, som jo vekter x i funksjonen. Dessuten vil få et et såkalt bias-ledd, her representert ved skjæringspunktet b dersom modellen blir trent godt nok.

    +
    +
    +
    modell = tf.keras.Sequential()
    +modell.add(Dense(units=1, activation='linear', input_shape=[1,]))
    +
    +
    +
    +
    +
    +
    +
    læringsrate = 0.1  # Hvor fort modellen skal lære
    +modell.compile(optimizer=Adam(læringsrate), loss = 'mse') # Optimizer = metode for å minimere loss
    +modell.summary()
    +
    +
    +
    +
    +
    Model: "sequential_6"
    +_________________________________________________________________
    +Layer (type)                 Output Shape              Param #   
    +=================================================================
    +dense_14 (Dense)             (None, 1)                 2         
    +=================================================================
    +Total params: 2
    +Trainable params: 2
    +Non-trainable params: 0
    +_________________________________________________________________
    +
    +
    +
    +
    +

    Antall parametre er a og b i y = ax + b

    +

    La oss trene modellen:

    +
    +
    +
    modell.fit(x, y, epochs=500)
    +
    +
    +
    +
    +
    Epoch 1/500
    +4/4 [==============================] - 0s 1ms/step - loss: 104.5022
    +Epoch 2/500
    +4/4 [==============================] - 0s 1ms/step - loss: 79.3526
    +Epoch 3/500
    +4/4 [==============================] - 0s 668us/step - loss: 52.2603
    +Epoch 4/500
    +4/4 [==============================] - 0s 667us/step - loss: 36.4380
    +Epoch 5/500
    +4/4 [==============================] - 0s 735us/step - loss: 25.8862
    +Epoch 6/500
    +4/4 [==============================] - 0s 667us/step - loss: 16.3748
    +Epoch 7/500
    +4/4 [==============================] - 0s 667us/step - loss: 11.6355
    +Epoch 8/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.3783
    +Epoch 9/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.6017
    +Epoch 10/500
    +4/4 [==============================] - 0s 1ms/step - loss: 8.0945
    +Epoch 11/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.6653
    +Epoch 12/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.0193
    +Epoch 13/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.9182
    +Epoch 14/500
    +4/4 [==============================] - 0s 999us/step - loss: 8.7258
    +Epoch 15/500
    +4/4 [==============================] - 0s 1ms/step - loss: 9.0563
    +Epoch 16/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.8218
    +Epoch 17/500
    +4/4 [==============================] - 0s 666us/step - loss: 7.9393
    +Epoch 18/500
    +4/4 [==============================] - 0s 1ms/step - loss: 8.5781
    +Epoch 19/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.7110
    +Epoch 20/500
    +4/4 [==============================] - 0s 999us/step - loss: 8.3472
    +Epoch 21/500
    +4/4 [==============================] - 0s 1ms/step - loss: 8.0878
    +Epoch 22/500
    +4/4 [==============================] - 0s 1ms/step - loss: 8.7475
    +Epoch 23/500
    +4/4 [==============================] - 0s 667us/step - loss: 7.6393
    +Epoch 24/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.0899
    +Epoch 25/500
    +4/4 [==============================] - 0s 1ms/step - loss: 8.6990
    +Epoch 26/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.7094
    +Epoch 27/500
    +4/4 [==============================] - 0s 1ms/step - loss: 8.3770
    +Epoch 28/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.7485
    +Epoch 29/500
    +4/4 [==============================] - 0s 1ms/step - loss: 8.7665
    +Epoch 30/500
    +4/4 [==============================] - 0s 999us/step - loss: 8.0084
    +Epoch 31/500
    +4/4 [==============================] - 0s 668us/step - loss: 8.2260
    +Epoch 32/500
    +4/4 [==============================] - 0s 1ms/step - loss: 8.5187
    +Epoch 33/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.2410
    +Epoch 34/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.2735
    +Epoch 35/500
    +4/4 [==============================] - 0s 1ms/step - loss: 8.7580
    +Epoch 36/500
    +4/4 [==============================] - 0s 1ms/step - loss: 8.2827
    +Epoch 37/500
    +4/4 [==============================] - 0s 666us/step - loss: 7.9241
    +Epoch 38/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.7716
    +Epoch 39/500
    +4/4 [==============================] - 0s 668us/step - loss: 8.1952
    +Epoch 40/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.3731
    +Epoch 41/500
    +4/4 [==============================] - 0s 667us/step - loss: 7.6364
    +Epoch 42/500
    +4/4 [==============================] - 0s 667us/step - loss: 7.7535
    +Epoch 43/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.0885
    +Epoch 44/500
    +4/4 [==============================] - 0s 1000us/step - loss: 8.2980
    +Epoch 45/500
    +4/4 [==============================] - 0s 1ms/step - loss: 8.4089
    +Epoch 46/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.6896
    +Epoch 47/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.4258
    +Epoch 48/500
    +4/4 [==============================] - 0s 836us/step - loss: 7.8536
    +Epoch 49/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.3694
    +Epoch 50/500
    +4/4 [==============================] - 0s 666us/step - loss: 7.8820
    +Epoch 51/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.4000
    +Epoch 52/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.6289
    +Epoch 53/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.2009
    +Epoch 54/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.0848
    +Epoch 55/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.4050
    +Epoch 56/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.4296
    +Epoch 57/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.2095
    +Epoch 58/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.6532
    +Epoch 59/500
    +4/4 [==============================] - 0s 1ms/step - loss: 8.6900
    +Epoch 60/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.8647
    +Epoch 61/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.2359
    +Epoch 62/500
    +4/4 [==============================] - 0s 1000us/step - loss: 7.9651
    +Epoch 63/500
    +4/4 [==============================] - 0s 1000us/step - loss: 8.1816
    +Epoch 64/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.4695
    +Epoch 65/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.3247
    +Epoch 66/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.3399
    +Epoch 67/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.9075
    +Epoch 68/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.0523
    +Epoch 69/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.7443
    +Epoch 70/500
    +4/4 [==============================] - 0s 1ms/step - loss: 8.5074
    +Epoch 71/500
    +4/4 [==============================] - 0s 333us/step - loss: 7.9035
    +Epoch 72/500
    +4/4 [==============================] - 0s 1000us/step - loss: 8.6616
    +Epoch 73/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.3667
    +Epoch 74/500
    +4/4 [==============================] - 0s 668us/step - loss: 8.1893
    +Epoch 75/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.0241
    +Epoch 76/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.2657
    +Epoch 77/500
    +4/4 [==============================] - 0s 504us/step - loss: 7.9703
    +Epoch 78/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.1511
    +Epoch 79/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.2947
    +Epoch 80/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.8908
    +Epoch 81/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.4879
    +Epoch 82/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.3816
    +Epoch 83/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.1428
    +Epoch 84/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.0366
    +Epoch 85/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.6593
    +Epoch 86/500
    +4/4 [==============================] - 0s 667us/step - loss: 7.9075
    +Epoch 87/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.1955
    +Epoch 88/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.0510
    +Epoch 89/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.0353
    +Epoch 90/500
    +4/4 [==============================] - 0s 666us/step - loss: 7.9147
    +Epoch 91/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.4268
    +Epoch 92/500
    +4/4 [==============================] - 0s 668us/step - loss: 7.9632
    +Epoch 93/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.6078
    +Epoch 94/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.3538
    +Epoch 95/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.0946
    +Epoch 96/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.5300
    +Epoch 97/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.4098
    +Epoch 98/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.2656
    +Epoch 99/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.5125
    +Epoch 100/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.8603
    +Epoch 101/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.5451
    +Epoch 102/500
    +
    +
    +
    4/4 [==============================] - 0s 667us/step - loss: 7.8527
    +Epoch 103/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.1321
    +Epoch 104/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.2086
    +Epoch 105/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.3373
    +Epoch 106/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.0878
    +Epoch 107/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.3393
    +Epoch 108/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.2506
    +Epoch 109/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.8073
    +Epoch 110/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.6708
    +Epoch 111/500
    +4/4 [==============================] - 0s 1ms/step - loss: 7.7170
    +Epoch 112/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.4463
    +Epoch 113/500
    +4/4 [==============================] - 0s 1000us/step - loss: 8.2755
    +Epoch 114/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.0646
    +Epoch 115/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.2571
    +Epoch 116/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.9042
    +Epoch 117/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.6911
    +Epoch 118/500
    +4/4 [==============================] - 0s 667us/step - loss: 7.7391
    +Epoch 119/500
    +4/4 [==============================] - 0s 668us/step - loss: 8.1689
    +Epoch 120/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.1252
    +Epoch 121/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.3536
    +Epoch 122/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.3956
    +Epoch 123/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.2423
    +Epoch 124/500
    +4/4 [==============================] - 0s 667us/step - loss: 7.7996
    +Epoch 125/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.3041
    +Epoch 126/500
    +4/4 [==============================] - 0s 1000us/step - loss: 8.2362
    +Epoch 127/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.4628
    +Epoch 128/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.1193
    +Epoch 129/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.1979
    +Epoch 130/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.2008
    +Epoch 131/500
    +4/4 [==============================] - 0s 667us/step - loss: 9.0247
    +Epoch 132/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.4149
    +Epoch 133/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.8535
    +Epoch 134/500
    +4/4 [==============================] - 0s 668us/step - loss: 8.7975
    +Epoch 135/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.3579
    +Epoch 136/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.1427
    +Epoch 137/500
    +4/4 [==============================] - 0s 1ms/step - loss: 8.0528
    +Epoch 138/500
    +4/4 [==============================] - 0s 1ms/step - loss: 8.3559
    +Epoch 139/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.0381
    +Epoch 140/500
    +4/4 [==============================] - 0s 666us/step - loss: 7.8673
    +Epoch 141/500
    +4/4 [==============================] - 0s 1000us/step - loss: 8.8377
    +Epoch 142/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.1329
    +Epoch 143/500
    +4/4 [==============================] - 0s 1ms/step - loss: 8.3940
    +Epoch 144/500
    +4/4 [==============================] - 0s 667us/step - loss: 7.7086
    +Epoch 145/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.2993
    +Epoch 146/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.6084
    +Epoch 147/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.5040
    +Epoch 148/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.2651
    +Epoch 149/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.1635
    +Epoch 150/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.3438
    +Epoch 151/500
    +4/4 [==============================] - 0s 667us/step - loss: 7.9917
    +Epoch 152/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.7307
    +Epoch 153/500
    +4/4 [==============================] - 0s 665us/step - loss: 8.3330
    +Epoch 154/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.5460
    +Epoch 155/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.1381
    +Epoch 156/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.6721
    +Epoch 157/500
    +4/4 [==============================] - 0s 667us/step - loss: 7.9872
    +Epoch 158/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.3384
    +Epoch 159/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.0205
    +Epoch 160/500
    +4/4 [==============================] - 0s 1ms/step - loss: 8.4402
    +Epoch 161/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.3511
    +Epoch 162/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.4172
    +Epoch 163/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.8060
    +Epoch 164/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.2794
    +Epoch 165/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.6608
    +Epoch 166/500
    +4/4 [==============================] - 0s 1000us/step - loss: 8.4098
    +Epoch 167/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.1878
    +Epoch 168/500
    +4/4 [==============================] - 0s 667us/step - loss: 7.8876
    +Epoch 169/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.1236
    +Epoch 170/500
    +4/4 [==============================] - 0s 1ms/step - loss: 8.4092
    +Epoch 171/500
    +4/4 [==============================] - 0s 835us/step - loss: 8.2659
    +Epoch 172/500
    +4/4 [==============================] - 0s 1ms/step - loss: 8.6527
    +Epoch 173/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.5737
    +Epoch 174/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.1902
    +Epoch 175/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.1969
    +Epoch 176/500
    +4/4 [==============================] - 0s 1ms/step - loss: 8.2581
    +Epoch 177/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.5900
    +Epoch 178/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.0874
    +Epoch 179/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.9015
    +Epoch 180/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.8330
    +Epoch 181/500
    +4/4 [==============================] - 0s 999us/step - loss: 8.4136
    +Epoch 182/500
    +4/4 [==============================] - 0s 999us/step - loss: 8.6446
    +Epoch 183/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.1311
    +Epoch 184/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.5477
    +Epoch 185/500
    +4/4 [==============================] - 0s 666us/step - loss: 7.5786
    +Epoch 186/500
    +4/4 [==============================] - 0s 999us/step - loss: 8.3315
    +Epoch 187/500
    +4/4 [==============================] - 0s 666us/step - loss: 7.8927
    +Epoch 188/500
    +4/4 [==============================] - 0s 667us/step - loss: 7.7673
    +Epoch 189/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.0693
    +Epoch 190/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.1701
    +Epoch 191/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.3226
    +Epoch 192/500
    +4/4 [==============================] - 0s 667us/step - loss: 7.9968
    +Epoch 193/500
    +4/4 [==============================] - 0s 538us/step - loss: 8.4736
    +Epoch 194/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.5460
    +Epoch 195/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.6556
    +Epoch 196/500
    +4/4 [==============================] - 0s 668us/step - loss: 8.7687
    +Epoch 197/500
    +4/4 [==============================] - 0s 667us/step - loss: 9.2050
    +Epoch 198/500
    +4/4 [==============================] - 0s 1000us/step - loss: 8.7555
    +Epoch 199/500
    +4/4 [==============================] - 0s 1ms/step - loss: 8.9373
    +Epoch 200/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.3990
    +Epoch 201/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.6712
    +Epoch 202/500
    +
    +
    +
    4/4 [==============================] - 0s 666us/step - loss: 8.6615
    +Epoch 203/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.6208
    +Epoch 204/500
    +4/4 [==============================] - 0s 667us/step - loss: 7.7797
    +Epoch 205/500
    +4/4 [==============================] - 0s 666us/step - loss: 7.9401
    +Epoch 206/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.9828
    +Epoch 207/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.4071
    +Epoch 208/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.6976
    +Epoch 209/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.2943
    +Epoch 210/500
    +4/4 [==============================] - 0s 667us/step - loss: 7.9447
    +Epoch 211/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.3899
    +Epoch 212/500
    +4/4 [==============================] - 0s 668us/step - loss: 8.5703
    +Epoch 213/500
    +4/4 [==============================] - 0s 667us/step - loss: 7.8175
    +Epoch 214/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.1317
    +Epoch 215/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.5044
    +Epoch 216/500
    +4/4 [==============================] - 0s 667us/step - loss: 9.0336
    +Epoch 217/500
    +4/4 [==============================] - 0s 1000us/step - loss: 7.8876
    +Epoch 218/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.1495
    +Epoch 219/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.2590
    +Epoch 220/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.6814
    +Epoch 221/500
    +4/4 [==============================] - 0s 842us/step - loss: 8.5372
    +Epoch 222/500
    +4/4 [==============================] - 0s 667us/step - loss: 7.9391
    +Epoch 223/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.6917
    +Epoch 224/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.4509
    +Epoch 225/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.3897
    +Epoch 226/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.7148
    +Epoch 227/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.2116
    +Epoch 228/500
    +4/4 [==============================] - 0s 668us/step - loss: 8.1116
    +Epoch 229/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.6707
    +Epoch 230/500
    +4/4 [==============================] - 0s 667us/step - loss: 7.9270
    +Epoch 231/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.3362
    +Epoch 232/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.0358
    +Epoch 233/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.3633
    +Epoch 234/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.3426
    +Epoch 235/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.4330
    +Epoch 236/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.0730
    +Epoch 237/500
    +4/4 [==============================] - 0s 682us/step - loss: 8.2105
    +Epoch 238/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.2740
    +Epoch 239/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.0922
    +Epoch 240/500
    +4/4 [==============================] - 0s 667us/step - loss: 7.8022
    +Epoch 241/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.2089
    +Epoch 242/500
    +4/4 [==============================] - 0s 1ms/step - loss: 8.3044
    +Epoch 243/500
    +4/4 [==============================] - 0s 666us/step - loss: 7.7719
    +Epoch 244/500
    +4/4 [==============================] - 0s 1000us/step - loss: 8.1841
    +Epoch 245/500
    +4/4 [==============================] - 0s 1000us/step - loss: 7.7905
    +Epoch 246/500
    +4/4 [==============================] - 0s 666us/step - loss: 7.9534
    +Epoch 247/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.1683
    +Epoch 248/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.1161
    +Epoch 249/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.5967
    +Epoch 250/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.7169
    +Epoch 251/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.0785
    +Epoch 252/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.8388
    +Epoch 253/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.0159
    +Epoch 254/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.5789
    +Epoch 255/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.1510
    +Epoch 256/500
    +4/4 [==============================] - 0s 666us/step - loss: 7.9927
    +Epoch 257/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.0018
    +Epoch 258/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.6359
    +Epoch 259/500
    +4/4 [==============================] - 0s 1000us/step - loss: 8.6787
    +Epoch 260/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.1452
    +Epoch 261/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.6602
    +Epoch 262/500
    +4/4 [==============================] - 0s 667us/step - loss: 7.9941
    +Epoch 263/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.3499
    +Epoch 264/500
    +4/4 [==============================] - 0s 1000us/step - loss: 8.6447
    +Epoch 265/500
    +4/4 [==============================] - 0s 1ms/step - loss: 8.3477
    +Epoch 266/500
    +4/4 [==============================] - 0s 667us/step - loss: 7.9720
    +Epoch 267/500
    +4/4 [==============================] - 0s 1ms/step - loss: 8.1876
    +Epoch 268/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.6013
    +Epoch 269/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.8680
    +Epoch 270/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.6760
    +Epoch 271/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.2076
    +Epoch 272/500
    +4/4 [==============================] - 0s 668us/step - loss: 7.6241
    +Epoch 273/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.6719
    +Epoch 274/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.5206
    +Epoch 275/500
    +4/4 [==============================] - 0s 668us/step - loss: 8.1704
    +Epoch 276/500
    +4/4 [==============================] - 0s 1000us/step - loss: 8.8824
    +Epoch 277/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.1261
    +Epoch 278/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.4138
    +Epoch 279/500
    +4/4 [==============================] - 0s 666us/step - loss: 7.9680
    +Epoch 280/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.1994
    +Epoch 281/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.5526
    +Epoch 282/500
    +4/4 [==============================] - 0s 666us/step - loss: 7.6670
    +Epoch 283/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.6339
    +Epoch 284/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.0422
    +Epoch 285/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.2535
    +Epoch 286/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.3132
    +Epoch 287/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.6515
    +Epoch 288/500
    +4/4 [==============================] - 0s 667us/step - loss: 7.9505
    +Epoch 289/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.5853
    +Epoch 290/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.1780
    +Epoch 291/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.5912
    +Epoch 292/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.2014
    +Epoch 293/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.2354
    +Epoch 294/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.2129
    +Epoch 295/500
    +4/4 [==============================] - 0s 1ms/step - loss: 8.5523
    +Epoch 296/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.6535
    +Epoch 297/500
    +4/4 [==============================] - 0s 1ms/step - loss: 8.4296
    +Epoch 298/500
    +4/4 [==============================] - 0s 667us/step - loss: 7.6559
    +Epoch 299/500
    +4/4 [==============================] - 0s 666us/step - loss: 7.6693
    +Epoch 300/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.6266
    +Epoch 301/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.0278
    +Epoch 302/500
    +
    +
    +
    4/4 [==============================] - 0s 667us/step - loss: 8.0526
    +Epoch 303/500
    +4/4 [==============================] - 0s 1ms/step - loss: 8.7330
    +Epoch 304/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.7237
    +Epoch 305/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.3075
    +Epoch 306/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.1864
    +Epoch 307/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.6247
    +Epoch 308/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.6476
    +Epoch 309/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.1792
    +Epoch 310/500
    +4/4 [==============================] - 0s 668us/step - loss: 8.7100
    +Epoch 311/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.1979
    +Epoch 312/500
    +4/4 [==============================] - 0s 999us/step - loss: 8.6113
    +Epoch 313/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.6128
    +Epoch 314/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.5203
    +Epoch 315/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.3461
    +Epoch 316/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.8989
    +Epoch 317/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.2800
    +Epoch 318/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.2408
    +Epoch 319/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.4082
    +Epoch 320/500
    +4/4 [==============================] - 0s 542us/step - loss: 9.6505
    +Epoch 321/500
    +4/4 [==============================] - 0s 1000us/step - loss: 8.7571
    +Epoch 322/500
    +4/4 [==============================] - 0s 1ms/step - loss: 8.4019
    +Epoch 323/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.5676
    +Epoch 324/500
    +4/4 [==============================] - 0s 667us/step - loss: 7.8891
    +Epoch 325/500
    +4/4 [==============================] - 0s 1ms/step - loss: 8.8347
    +Epoch 326/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.1785
    +Epoch 327/500
    +4/4 [==============================] - 0s 1000us/step - loss: 8.4076
    +Epoch 328/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.4786
    +Epoch 329/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.3709
    +Epoch 330/500
    +4/4 [==============================] - 0s 665us/step - loss: 7.9279
    +Epoch 331/500
    +4/4 [==============================] - 0s 666us/step - loss: 7.8934
    +Epoch 332/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.1781
    +Epoch 333/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.1264
    +Epoch 334/500
    +4/4 [==============================] - 0s 1ms/step - loss: 8.7103
    +Epoch 335/500
    +4/4 [==============================] - 0s 665us/step - loss: 8.0712
    +Epoch 336/500
    +4/4 [==============================] - 0s 1ms/step - loss: 8.4242
    +Epoch 337/500
    +4/4 [==============================] - 0s 667us/step - loss: 7.9300
    +Epoch 338/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.5644
    +Epoch 339/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.1366
    +Epoch 340/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.1938
    +Epoch 341/500
    +4/4 [==============================] - 0s 333us/step - loss: 8.8461
    +Epoch 342/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.8216
    +Epoch 343/500
    +4/4 [==============================] - 0s 905us/step - loss: 8.7158
    +Epoch 344/500
    +4/4 [==============================] - 0s 1ms/step - loss: 8.4632
    +Epoch 345/500
    +4/4 [==============================] - 0s 999us/step - loss: 9.0191
    +Epoch 346/500
    +4/4 [==============================] - 0s 1000us/step - loss: 8.2322
    +Epoch 347/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.2614
    +Epoch 348/500
    +4/4 [==============================] - 0s 665us/step - loss: 8.4608
    +Epoch 349/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.2154
    +Epoch 350/500
    +4/4 [==============================] - 0s 1000us/step - loss: 8.6942
    +Epoch 351/500
    +4/4 [==============================] - 0s 665us/step - loss: 8.3367
    +Epoch 352/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.1417
    +Epoch 353/500
    +4/4 [==============================] - 0s 667us/step - loss: 7.9923
    +Epoch 354/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.8374
    +Epoch 355/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.4152
    +Epoch 356/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.4335
    +Epoch 357/500
    +4/4 [==============================] - 0s 667us/step - loss: 7.5777
    +Epoch 358/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.0608
    +Epoch 359/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.3695
    +Epoch 360/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.5353
    +Epoch 361/500
    +4/4 [==============================] - 0s 1000us/step - loss: 8.5380
    +Epoch 362/500
    +4/4 [==============================] - 0s 999us/step - loss: 8.6215
    +Epoch 363/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.7682
    +Epoch 364/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.3808
    +Epoch 365/500
    +4/4 [==============================] - 0s 668us/step - loss: 9.1108
    +Epoch 366/500
    +4/4 [==============================] - 0s 1000us/step - loss: 8.9333
    +Epoch 367/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.6897
    +Epoch 368/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.3721
    +Epoch 369/500
    +4/4 [==============================] - 0s 667us/step - loss: 9.2476
    +Epoch 370/500
    +4/4 [==============================] - 0s 667us/step - loss: 9.0441
    +Epoch 371/500
    +4/4 [==============================] - 0s 334us/step - loss: 8.1192
    +Epoch 372/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.5571
    +Epoch 373/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.9710
    +Epoch 374/500
    +4/4 [==============================] - 0s 1000us/step - loss: 8.0739
    +Epoch 375/500
    +4/4 [==============================] - 0s 667us/step - loss: 7.8368
    +Epoch 376/500
    +4/4 [==============================] - 0s 667us/step - loss: 9.0027
    +Epoch 377/500
    +4/4 [==============================] - 0s 1000us/step - loss: 7.9667
    +Epoch 378/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.7522
    +Epoch 379/500
    +4/4 [==============================] - 0s 667us/step - loss: 7.9576
    +Epoch 380/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.3964
    +Epoch 381/500
    +4/4 [==============================] - 0s 667us/step - loss: 7.8484
    +Epoch 382/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.5905
    +Epoch 383/500
    +4/4 [==============================] - 0s 667us/step - loss: 7.6930
    +Epoch 384/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.1679
    +Epoch 385/500
    +4/4 [==============================] - 0s 1ms/step - loss: 8.1627
    +Epoch 386/500
    +4/4 [==============================] - 0s 668us/step - loss: 8.1621
    +Epoch 387/500
    +4/4 [==============================] - 0s 1000us/step - loss: 8.5946
    +Epoch 388/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.0057
    +Epoch 389/500
    +4/4 [==============================] - 0s 667us/step - loss: 7.7226
    +Epoch 390/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.4074
    +Epoch 391/500
    +4/4 [==============================] - 0s 890us/step - loss: 8.8335
    +Epoch 392/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.0382
    +Epoch 393/500
    +4/4 [==============================] - 0s 1ms/step - loss: 8.2643
    +Epoch 394/500
    +4/4 [==============================] - 0s 668us/step - loss: 8.4085
    +Epoch 395/500
    +4/4 [==============================] - 0s 666us/step - loss: 7.9754
    +Epoch 396/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.3881
    +Epoch 397/500
    +4/4 [==============================] - 0s 1ms/step - loss: 9.0084
    +Epoch 398/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.9456
    +Epoch 399/500
    +4/4 [==============================] - 0s 999us/step - loss: 8.3904
    +Epoch 400/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.1277
    +Epoch 401/500
    +4/4 [==============================] - 0s 668us/step - loss: 8.0885
    +Epoch 402/500
    +
    +
    +
    4/4 [==============================] - 0s 667us/step - loss: 7.8879
    +Epoch 403/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.7303
    +Epoch 404/500
    +4/4 [==============================] - 0s 667us/step - loss: 7.9645
    +Epoch 405/500
    +4/4 [==============================] - 0s 1000us/step - loss: 8.3607
    +Epoch 406/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.2445
    +Epoch 407/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.1188
    +Epoch 408/500
    +4/4 [==============================] - 0s 941us/step - loss: 8.1795
    +Epoch 409/500
    +4/4 [==============================] - 0s 670us/step - loss: 8.0516
    +Epoch 410/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.4908
    +Epoch 411/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.4812
    +Epoch 412/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.0266
    +Epoch 413/500
    +4/4 [==============================] - 0s 667us/step - loss: 7.9246
    +Epoch 414/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.3644
    +Epoch 415/500
    +4/4 [==============================] - 0s 666us/step - loss: 7.8790
    +Epoch 416/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.8834
    +Epoch 417/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.0434
    +Epoch 418/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.2627
    +Epoch 419/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.7188
    +Epoch 420/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.3775
    +Epoch 421/500
    +4/4 [==============================] - 0s 1ms/step - loss: 7.8194
    +Epoch 422/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.7755
    +Epoch 423/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.1705
    +Epoch 424/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.5942
    +Epoch 425/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.1822
    +Epoch 426/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.4478
    +Epoch 427/500
    +4/4 [==============================] - 0s 1000us/step - loss: 7.8675
    +Epoch 428/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.3426
    +Epoch 429/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.2153
    +Epoch 430/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.4765
    +Epoch 431/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.5128
    +Epoch 432/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.7335
    +Epoch 433/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.1310
    +Epoch 434/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.7234
    +Epoch 435/500
    +4/4 [==============================] - 0s 667us/step - loss: 9.3236
    +Epoch 436/500
    +4/4 [==============================] - 0s 999us/step - loss: 9.5831
    +Epoch 437/500
    +4/4 [==============================] - 0s 1ms/step - loss: 8.9517
    +Epoch 438/500
    +4/4 [==============================] - 0s 1ms/step - loss: 8.8277
    +Epoch 439/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.4419
    +Epoch 440/500
    +4/4 [==============================] - 0s 623us/step - loss: 9.0000
    +Epoch 441/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.5806
    +Epoch 442/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.5189
    +Epoch 443/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.4960
    +Epoch 444/500
    +4/4 [==============================] - 0s 1ms/step - loss: 8.3317
    +Epoch 445/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.1919
    +Epoch 446/500
    +4/4 [==============================] - 0s 1ms/step - loss: 8.9134
    +Epoch 447/500
    +4/4 [==============================] - 0s 666us/step - loss: 7.5083
    +Epoch 448/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.5867
    +Epoch 449/500
    +4/4 [==============================] - 0s 1000us/step - loss: 8.3347
    +Epoch 450/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.2476
    +Epoch 451/500
    +4/4 [==============================] - 0s 665us/step - loss: 8.3441
    +Epoch 452/500
    +4/4 [==============================] - 0s 1ms/step - loss: 7.8876
    +Epoch 453/500
    +4/4 [==============================] - 0s 669us/step - loss: 8.3146
    +Epoch 454/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.1349
    +Epoch 455/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.6561
    +Epoch 456/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.2345
    +Epoch 457/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.8308
    +Epoch 458/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.8209
    +Epoch 459/500
    +4/4 [==============================] - 0s 668us/step - loss: 8.2270
    +Epoch 460/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.2420
    +Epoch 461/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.4079
    +Epoch 462/500
    +4/4 [==============================] - 0s 999us/step - loss: 8.7370
    +Epoch 463/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.9639
    +Epoch 464/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.0593
    +Epoch 465/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.6813
    +Epoch 466/500
    +4/4 [==============================] - 0s 666us/step - loss: 7.6410
    +Epoch 467/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.3035
    +Epoch 468/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.2090
    +Epoch 469/500
    +4/4 [==============================] - 0s 667us/step - loss: 7.9865
    +Epoch 470/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.5048
    +Epoch 471/500
    +4/4 [==============================] - 0s 667us/step - loss: 7.9974
    +Epoch 472/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.5399
    +Epoch 473/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.4421
    +Epoch 474/500
    +4/4 [==============================] - 0s 665us/step - loss: 7.8596
    +Epoch 475/500
    +4/4 [==============================] - 0s 1ms/step - loss: 8.9635
    +Epoch 476/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.0556
    +Epoch 477/500
    +4/4 [==============================] - 0s 1ms/step - loss: 8.4410
    +Epoch 478/500
    +4/4 [==============================] - 0s 1ms/step - loss: 7.9163
    +Epoch 479/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.1246
    +Epoch 480/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.4800
    +Epoch 481/500
    +4/4 [==============================] - 0s 1000us/step - loss: 8.6292
    +Epoch 482/500
    +4/4 [==============================] - 0s 1ms/step - loss: 8.3057
    +Epoch 483/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.5658
    +Epoch 484/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.3870
    +Epoch 485/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.6988
    +Epoch 486/500
    +4/4 [==============================] - 0s 667us/step - loss: 7.9037
    +Epoch 487/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.1514
    +Epoch 488/500
    +4/4 [==============================] - 0s 666us/step - loss: 7.9452
    +Epoch 489/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.4299
    +Epoch 490/500
    +4/4 [==============================] - 0s 1000us/step - loss: 8.4384
    +Epoch 491/500
    +4/4 [==============================] - 0s 1ms/step - loss: 7.6794
    +Epoch 492/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.2355
    +Epoch 493/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.1727
    +Epoch 494/500
    +4/4 [==============================] - 0s 1000us/step - loss: 8.5242
    +Epoch 495/500
    +4/4 [==============================] - 0s 666us/step - loss: 7.8116
    +Epoch 496/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.5175
    +Epoch 497/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.2700
    +Epoch 498/500
    +4/4 [==============================] - 0s 667us/step - loss: 8.4798
    +Epoch 499/500
    +4/4 [==============================] - 0s 666us/step - loss: 7.6631
    +Epoch 500/500
    +4/4 [==============================] - 0s 666us/step - loss: 8.3500
    +
    +
    +
    <tensorflow.python.keras.callbacks.History at 0x214914860d0>
    +
    +
    +
    +
    +
    +
    +
    x_fit = np.linspace(0, 5, 100)
    +y_fit = modell.predict(x_fit)
    +plt.plot(x, y, linestyle = ' ', marker = 'o', label = 'data')
    +plt.plot(x_fit, y_fit, label = 'Regresjonskurve')
    +plt.legend()
    +plt.show()
    +
    +
    +
    +
    +../../_images/f7a914ae99ec21e1ecfaaab5760b6d022bec945e9995f9400897eccb00ba325b.png +
    +
    +
    +
    +
    y1_test = modell.predict([0,])
    +y2_test = modell.predict([1,])
    +print(y1_test, y2_test)
    +
    +
    +
    +
    +
    [[2.7689884]] [[5.4485865]]
    +
    +
    +
    +
    +
    +
    +

    Mer avansert regresjon#

    +
    +
    +
    x2 = np.linspace(-5, 5, 100)
    +y2 = x2**4 + x2**3 - 15*x2**2 + np.random.uniform(-5,5,100)
    +
    +modell2 = tf.keras.Sequential([
    +    Dense(units = 10, input_shape = (1,), activation = 'sigmoid'),
    +    Dense(units = 1, activation = 'linear')])
    +
    +modell2.compile(optimizer=Adam(0.1), loss='mse')
    +modell2.fit(x2, y2, epochs = 500)
    +
    +
    +
    +
    +
    Epoch 1/500
    +4/4 [==============================] - 0s 667us/step - loss: 9846.5271
    +Epoch 2/500
    +4/4 [==============================] - 0s 666us/step - loss: 7517.2033
    +Epoch 3/500
    +4/4 [==============================] - 0s 667us/step - loss: 6857.6938
    +Epoch 4/500
    +4/4 [==============================] - 0s 667us/step - loss: 5900.6629
    +Epoch 5/500
    +4/4 [==============================] - 0s 667us/step - loss: 7197.5639
    +Epoch 6/500
    +4/4 [==============================] - 0s 1000us/step - loss: 5748.2756
    +Epoch 7/500
    +4/4 [==============================] - 0s 1ms/step - loss: 7078.3206
    +Epoch 8/500
    +4/4 [==============================] - 0s 1ms/step - loss: 6448.2610
    +Epoch 9/500
    +4/4 [==============================] - 0s 667us/step - loss: 7902.1220
    +Epoch 10/500
    +4/4 [==============================] - 0s 999us/step - loss: 6011.5875
    +Epoch 11/500
    +4/4 [==============================] - 0s 666us/step - loss: 7185.1816
    +Epoch 12/500
    +4/4 [==============================] - 0s 666us/step - loss: 6540.1982
    +Epoch 13/500
    +4/4 [==============================] - 0s 667us/step - loss: 6207.6939
    +Epoch 14/500
    +4/4 [==============================] - 0s 999us/step - loss: 5297.6517
    +Epoch 15/500
    +4/4 [==============================] - 0s 1000us/step - loss: 6654.8270
    +Epoch 16/500
    +4/4 [==============================] - 0s 666us/step - loss: 6176.5774
    +Epoch 17/500
    +4/4 [==============================] - 0s 667us/step - loss: 5118.5701
    +Epoch 18/500
    +4/4 [==============================] - 0s 668us/step - loss: 5101.3255
    +Epoch 19/500
    +4/4 [==============================] - 0s 1ms/step - loss: 7049.2334
    +Epoch 20/500
    +4/4 [==============================] - 0s 1ms/step - loss: 6688.3064
    +Epoch 21/500
    +4/4 [==============================] - 0s 667us/step - loss: 7016.4231
    +Epoch 22/500
    +4/4 [==============================] - 0s 666us/step - loss: 6300.7874
    +Epoch 23/500
    +4/4 [==============================] - 0s 1000us/step - loss: 6969.0907
    +Epoch 24/500
    +4/4 [==============================] - 0s 1ms/step - loss: 5613.6901
    +Epoch 25/500
    +4/4 [==============================] - 0s 666us/step - loss: 6220.1277
    +Epoch 26/500
    +4/4 [==============================] - 0s 667us/step - loss: 6424.6212
    +Epoch 27/500
    +4/4 [==============================] - 0s 667us/step - loss: 6048.0418
    +Epoch 28/500
    +4/4 [==============================] - 0s 667us/step - loss: 5611.1164
    +Epoch 29/500
    +4/4 [==============================] - 0s 666us/step - loss: 5294.2371
    +Epoch 30/500
    +4/4 [==============================] - 0s 666us/step - loss: 5935.7186
    +Epoch 31/500
    +4/4 [==============================] - 0s 667us/step - loss: 6021.2754
    +Epoch 32/500
    +4/4 [==============================] - 0s 667us/step - loss: 5600.7885
    +Epoch 33/500
    +4/4 [==============================] - 0s 667us/step - loss: 6116.8136
    +Epoch 34/500
    +4/4 [==============================] - 0s 667us/step - loss: 4804.6906
    +Epoch 35/500
    +4/4 [==============================] - 0s 667us/step - loss: 6137.8878
    +Epoch 36/500
    +4/4 [==============================] - 0s 667us/step - loss: 5550.7077
    +Epoch 37/500
    +4/4 [==============================] - 0s 667us/step - loss: 7137.1366
    +Epoch 38/500
    +4/4 [==============================] - 0s 667us/step - loss: 6258.1508
    +Epoch 39/500
    +4/4 [==============================] - 0s 666us/step - loss: 6230.0475
    +Epoch 40/500
    +4/4 [==============================] - 0s 667us/step - loss: 5714.1845
    +Epoch 41/500
    +4/4 [==============================] - 0s 667us/step - loss: 4792.8920
    +Epoch 42/500
    +4/4 [==============================] - 0s 667us/step - loss: 6203.8469
    +Epoch 43/500
    +4/4 [==============================] - 0s 999us/step - loss: 5260.1548
    +Epoch 44/500
    +4/4 [==============================] - 0s 667us/step - loss: 5168.5146
    +Epoch 45/500
    +4/4 [==============================] - 0s 666us/step - loss: 4653.0514
    +Epoch 46/500
    +4/4 [==============================] - 0s 667us/step - loss: 5182.0346
    +Epoch 47/500
    +4/4 [==============================] - 0s 1ms/step - loss: 5293.0491
    +Epoch 48/500
    +4/4 [==============================] - 0s 1000us/step - loss: 5078.3902
    +Epoch 49/500
    +4/4 [==============================] - 0s 1ms/step - loss: 5425.0494
    +Epoch 50/500
    +4/4 [==============================] - 0s 666us/step - loss: 5825.7103
    +Epoch 51/500
    +4/4 [==============================] - 0s 666us/step - loss: 4983.5356
    +Epoch 52/500
    +4/4 [==============================] - 0s 667us/step - loss: 5597.9477
    +Epoch 53/500
    +4/4 [==============================] - 0s 666us/step - loss: 4876.0231
    +Epoch 54/500
    +4/4 [==============================] - 0s 667us/step - loss: 4425.2756
    +Epoch 55/500
    +4/4 [==============================] - 0s 667us/step - loss: 4959.7402
    +Epoch 56/500
    +4/4 [==============================] - 0s 667us/step - loss: 5204.2624
    +Epoch 57/500
    +4/4 [==============================] - 0s 999us/step - loss: 5869.7483
    +Epoch 58/500
    +4/4 [==============================] - 0s 690us/step - loss: 4854.8150
    +Epoch 59/500
    +4/4 [==============================] - 0s 667us/step - loss: 5501.9410
    +Epoch 60/500
    +4/4 [==============================] - 0s 1000us/step - loss: 3997.2270
    +Epoch 61/500
    +4/4 [==============================] - 0s 666us/step - loss: 4215.2882
    +Epoch 62/500
    +4/4 [==============================] - 0s 667us/step - loss: 4234.0723
    +Epoch 63/500
    +4/4 [==============================] - 0s 667us/step - loss: 4874.5979
    +Epoch 64/500
    +4/4 [==============================] - 0s 666us/step - loss: 4574.2138
    +Epoch 65/500
    +4/4 [==============================] - 0s 1000us/step - loss: 3728.1270
    +Epoch 66/500
    +4/4 [==============================] - 0s 666us/step - loss: 4291.4191
    +Epoch 67/500
    +4/4 [==============================] - 0s 944us/step - loss: 5475.3085
    +Epoch 68/500
    +4/4 [==============================] - 0s 667us/step - loss: 4220.9550
    +Epoch 69/500
    +4/4 [==============================] - 0s 1000us/step - loss: 4462.9824
    +Epoch 70/500
    +4/4 [==============================] - 0s 667us/step - loss: 4472.4046
    +Epoch 71/500
    +4/4 [==============================] - 0s 666us/step - loss: 4947.1946
    +Epoch 72/500
    +4/4 [==============================] - 0s 667us/step - loss: 4137.2216
    +Epoch 73/500
    +4/4 [==============================] - 0s 1ms/step - loss: 3308.5031
    +Epoch 74/500
    +4/4 [==============================] - 0s 666us/step - loss: 4353.0312
    +Epoch 75/500
    +4/4 [==============================] - 0s 1ms/step - loss: 3650.9376
    +Epoch 76/500
    +4/4 [==============================] - 0s 1ms/step - loss: 3371.5264
    +Epoch 77/500
    +4/4 [==============================] - 0s 667us/step - loss: 3755.0196
    +Epoch 78/500
    +4/4 [==============================] - 0s 1ms/step - loss: 3597.5115
    +Epoch 79/500
    +4/4 [==============================] - 0s 1000us/step - loss: 4071.7780
    +Epoch 80/500
    +4/4 [==============================] - 0s 1ms/step - loss: 4358.9461
    +Epoch 81/500
    +4/4 [==============================] - 0s 667us/step - loss: 3288.4478
    +Epoch 82/500
    +4/4 [==============================] - 0s 1000us/step - loss: 3660.9661
    +Epoch 83/500
    +4/4 [==============================] - 0s 1ms/step - loss: 3157.3340
    +Epoch 84/500
    +4/4 [==============================] - 0s 667us/step - loss: 4127.6904
    +Epoch 85/500
    +4/4 [==============================] - 0s 667us/step - loss: 3996.1034
    +Epoch 86/500
    +4/4 [==============================] - 0s 666us/step - loss: 3345.9519
    +Epoch 87/500
    +4/4 [==============================] - 0s 1000us/step - loss: 3312.3092
    +Epoch 88/500
    +4/4 [==============================] - 0s 667us/step - loss: 3337.1958
    +Epoch 89/500
    +4/4 [==============================] - 0s 1000us/step - loss: 3746.5674
    +Epoch 90/500
    +4/4 [==============================] - 0s 666us/step - loss: 3150.5879
    +Epoch 91/500
    +4/4 [==============================] - 0s 666us/step - loss: 3676.2338
    +Epoch 92/500
    +4/4 [==============================] - 0s 666us/step - loss: 4092.8263
    +Epoch 93/500
    +4/4 [==============================] - 0s 999us/step - loss: 3658.1639
    +Epoch 94/500
    +4/4 [==============================] - 0s 1000us/step - loss: 2630.9319
    +Epoch 95/500
    +4/4 [==============================] - 0s 666us/step - loss: 4072.3005
    +Epoch 96/500
    +4/4 [==============================] - 0s 667us/step - loss: 3710.7404
    +Epoch 97/500
    +4/4 [==============================] - 0s 877us/step - loss: 4227.0063
    +Epoch 98/500
    +
    +
    +
    4/4 [==============================] - 0s 667us/step - loss: 3234.0952
    +Epoch 99/500
    +4/4 [==============================] - 0s 666us/step - loss: 4118.6172
    +Epoch 100/500
    +4/4 [==============================] - 0s 1ms/step - loss: 3848.7425
    +Epoch 101/500
    +4/4 [==============================] - 0s 668us/step - loss: 2847.9733
    +Epoch 102/500
    +4/4 [==============================] - 0s 666us/step - loss: 4392.7742
    +Epoch 103/500
    +4/4 [==============================] - 0s 1000us/step - loss: 3297.6202
    +Epoch 104/500
    +4/4 [==============================] - 0s 667us/step - loss: 3152.0852
    +Epoch 105/500
    +4/4 [==============================] - 0s 667us/step - loss: 3187.5098
    +Epoch 106/500
    +4/4 [==============================] - 0s 667us/step - loss: 3343.2998
    +Epoch 107/500
    +4/4 [==============================] - 0s 1000us/step - loss: 2826.1402
    +Epoch 108/500
    +4/4 [==============================] - 0s 667us/step - loss: 3323.9419
    +Epoch 109/500
    +4/4 [==============================] - 0s 667us/step - loss: 3869.0579
    +Epoch 110/500
    +4/4 [==============================] - 0s 667us/step - loss: 3092.8149
    +Epoch 111/500
    +4/4 [==============================] - 0s 1000us/step - loss: 3481.9407
    +Epoch 112/500
    +4/4 [==============================] - 0s 1ms/step - loss: 2775.3702
    +Epoch 113/500
    +4/4 [==============================] - 0s 667us/step - loss: 3950.5678
    +Epoch 114/500
    +4/4 [==============================] - 0s 667us/step - loss: 3758.1000
    +Epoch 115/500
    +4/4 [==============================] - 0s 666us/step - loss: 2865.6083
    +Epoch 116/500
    +4/4 [==============================] - 0s 700us/step - loss: 3228.4140
    +Epoch 117/500
    +4/4 [==============================] - 0s 666us/step - loss: 3314.2374
    +Epoch 118/500
    +4/4 [==============================] - 0s 667us/step - loss: 3163.4877
    +Epoch 119/500
    +4/4 [==============================] - 0s 666us/step - loss: 3328.7347
    +Epoch 120/500
    +4/4 [==============================] - 0s 999us/step - loss: 2806.6611
    +Epoch 121/500
    +4/4 [==============================] - 0s 667us/step - loss: 3507.0183
    +Epoch 122/500
    +4/4 [==============================] - 0s 1000us/step - loss: 3537.7211
    +Epoch 123/500
    +4/4 [==============================] - 0s 1ms/step - loss: 2512.9548
    +Epoch 124/500
    +4/4 [==============================] - 0s 666us/step - loss: 2659.5676
    +Epoch 125/500
    +4/4 [==============================] - 0s 667us/step - loss: 2597.8499
    +Epoch 126/500
    +4/4 [==============================] - 0s 667us/step - loss: 3644.0331
    +Epoch 127/500
    +4/4 [==============================] - 0s 1ms/step - loss: 3612.3022
    +Epoch 128/500
    +4/4 [==============================] - 0s 667us/step - loss: 3524.6265
    +Epoch 129/500
    +4/4 [==============================] - 0s 667us/step - loss: 3007.7482
    +Epoch 130/500
    +4/4 [==============================] - 0s 1ms/step - loss: 3031.6250
    +Epoch 131/500
    +4/4 [==============================] - 0s 667us/step - loss: 2479.9818
    +Epoch 132/500
    +4/4 [==============================] - 0s 1000us/step - loss: 2861.7851
    +Epoch 133/500
    +4/4 [==============================] - 0s 1ms/step - loss: 2775.3146
    +Epoch 134/500
    +4/4 [==============================] - 0s 666us/step - loss: 3332.7385
    +Epoch 135/500
    +4/4 [==============================] - 0s 666us/step - loss: 2905.4698
    +Epoch 136/500
    +4/4 [==============================] - 0s 1000us/step - loss: 3522.2373
    +Epoch 137/500
    +4/4 [==============================] - 0s 667us/step - loss: 3415.8500
    +Epoch 138/500
    +4/4 [==============================] - 0s 667us/step - loss: 3005.3768
    +Epoch 139/500
    +4/4 [==============================] - 0s 1000us/step - loss: 3015.1922
    +Epoch 140/500
    +4/4 [==============================] - 0s 666us/step - loss: 2303.8471
    +Epoch 141/500
    +4/4 [==============================] - 0s 667us/step - loss: 2210.7076
    +Epoch 142/500
    +4/4 [==============================] - 0s 1ms/step - loss: 3393.9407
    +Epoch 143/500
    +4/4 [==============================] - 0s 667us/step - loss: 2392.4108
    +Epoch 144/500
    +4/4 [==============================] - 0s 667us/step - loss: 2677.0868
    +Epoch 145/500
    +4/4 [==============================] - 0s 1000us/step - loss: 3384.2544
    +Epoch 146/500
    +4/4 [==============================] - 0s 1ms/step - loss: 3034.2302
    +Epoch 147/500
    +4/4 [==============================] - 0s 667us/step - loss: 2507.8782
    +Epoch 148/500
    +4/4 [==============================] - 0s 667us/step - loss: 2817.7991
    +Epoch 149/500
    +4/4 [==============================] - 0s 667us/step - loss: 3100.3194
    +Epoch 150/500
    +4/4 [==============================] - 0s 667us/step - loss: 2424.5348
    +Epoch 151/500
    +4/4 [==============================] - 0s 666us/step - loss: 2270.8100
    +Epoch 152/500
    +4/4 [==============================] - 0s 667us/step - loss: 2898.4783
    +Epoch 153/500
    +4/4 [==============================] - 0s 666us/step - loss: 2233.0646
    +Epoch 154/500
    +4/4 [==============================] - 0s 1ms/step - loss: 2854.0588
    +Epoch 155/500
    +4/4 [==============================] - 0s 667us/step - loss: 2687.0520
    +Epoch 156/500
    +4/4 [==============================] - 0s 1ms/step - loss: 2821.3521
    +Epoch 157/500
    +4/4 [==============================] - 0s 667us/step - loss: 2332.3593
    +Epoch 158/500
    +4/4 [==============================] - 0s 667us/step - loss: 2806.8894
    +Epoch 159/500
    +4/4 [==============================] - 0s 999us/step - loss: 2245.7685
    +Epoch 160/500
    +4/4 [==============================] - 0s 666us/step - loss: 2327.3211
    +Epoch 161/500
    +4/4 [==============================] - 0s 1ms/step - loss: 2217.3057
    +Epoch 162/500
    +4/4 [==============================] - 0s 667us/step - loss: 2507.1689
    +Epoch 163/500
    +4/4 [==============================] - 0s 1ms/step - loss: 2340.5433
    +Epoch 164/500
    +4/4 [==============================] - 0s 999us/step - loss: 2339.1500
    +Epoch 165/500
    +4/4 [==============================] - 0s 667us/step - loss: 2732.0498
    +Epoch 166/500
    +4/4 [==============================] - 0s 1ms/step - loss: 2924.6649
    +Epoch 167/500
    +4/4 [==============================] - 0s 666us/step - loss: 2547.1220
    +Epoch 168/500
    +4/4 [==============================] - 0s 666us/step - loss: 2635.7917
    +Epoch 169/500
    +4/4 [==============================] - 0s 667us/step - loss: 2497.0261
    +Epoch 170/500
    +4/4 [==============================] - 0s 667us/step - loss: 2481.4085
    +Epoch 171/500
    +4/4 [==============================] - 0s 667us/step - loss: 2588.2656
    +Epoch 172/500
    +4/4 [==============================] - 0s 1000us/step - loss: 2350.0797
    +Epoch 173/500
    +4/4 [==============================] - 0s 667us/step - loss: 2288.1246
    +Epoch 174/500
    +4/4 [==============================] - 0s 999us/step - loss: 2017.7328
    +Epoch 175/500
    +4/4 [==============================] - 0s 667us/step - loss: 2416.5938
    +Epoch 176/500
    +4/4 [==============================] - 0s 631us/step - loss: 2616.8181
    +Epoch 177/500
    +4/4 [==============================] - 0s 666us/step - loss: 2590.3714
    +Epoch 178/500
    +4/4 [==============================] - 0s 667us/step - loss: 2491.5979
    +Epoch 179/500
    +4/4 [==============================] - 0s 667us/step - loss: 2590.6091
    +Epoch 180/500
    +4/4 [==============================] - 0s 666us/step - loss: 2540.2420
    +Epoch 181/500
    +4/4 [==============================] - 0s 666us/step - loss: 2138.1394
    +Epoch 182/500
    +4/4 [==============================] - 0s 666us/step - loss: 2407.4652
    +Epoch 183/500
    +4/4 [==============================] - 0s 667us/step - loss: 2404.4267
    +Epoch 184/500
    +4/4 [==============================] - 0s 1ms/step - loss: 2236.0930
    +Epoch 185/500
    +4/4 [==============================] - 0s 666us/step - loss: 2459.1801
    +Epoch 186/500
    +4/4 [==============================] - 0s 1000us/step - loss: 2086.4740
    +Epoch 187/500
    +4/4 [==============================] - 0s 1ms/step - loss: 2230.7297
    +Epoch 188/500
    +4/4 [==============================] - 0s 667us/step - loss: 2452.7629
    +Epoch 189/500
    +4/4 [==============================] - 0s 667us/step - loss: 2327.3585
    +Epoch 190/500
    +4/4 [==============================] - 0s 667us/step - loss: 2674.0978
    +Epoch 191/500
    +4/4 [==============================] - 0s 666us/step - loss: 2440.4373
    +Epoch 192/500
    +4/4 [==============================] - 0s 667us/step - loss: 2246.9789
    +Epoch 193/500
    +4/4 [==============================] - 0s 667us/step - loss: 2398.7197
    +Epoch 194/500
    +
    +
    +
    4/4 [==============================] - 0s 666us/step - loss: 1814.0026
    +Epoch 195/500
    +4/4 [==============================] - 0s 667us/step - loss: 2598.4723
    +Epoch 196/500
    +4/4 [==============================] - 0s 999us/step - loss: 2276.0607
    +Epoch 197/500
    +4/4 [==============================] - 0s 667us/step - loss: 1842.0658
    +Epoch 198/500
    +4/4 [==============================] - 0s 667us/step - loss: 2516.4747
    +Epoch 199/500
    +4/4 [==============================] - 0s 1000us/step - loss: 2698.7970
    +Epoch 200/500
    +4/4 [==============================] - 0s 667us/step - loss: 2616.9011
    +Epoch 201/500
    +4/4 [==============================] - 0s 666us/step - loss: 2248.4879
    +Epoch 202/500
    +4/4 [==============================] - 0s 999us/step - loss: 2327.8718
    +Epoch 203/500
    +4/4 [==============================] - 0s 667us/step - loss: 1988.9131
    +Epoch 204/500
    +4/4 [==============================] - 0s 667us/step - loss: 2647.0508
    +Epoch 205/500
    +4/4 [==============================] - 0s 667us/step - loss: 2470.6068
    +Epoch 206/500
    +4/4 [==============================] - 0s 668us/step - loss: 2103.9357
    +Epoch 207/500
    +4/4 [==============================] - 0s 1ms/step - loss: 2256.8297
    +Epoch 208/500
    +4/4 [==============================] - 0s 667us/step - loss: 2371.5076
    +Epoch 209/500
    +4/4 [==============================] - 0s 667us/step - loss: 2187.5882
    +Epoch 210/500
    +4/4 [==============================] - 0s 667us/step - loss: 2347.2125
    +Epoch 211/500
    +4/4 [==============================] - 0s 667us/step - loss: 2016.2686
    +Epoch 212/500
    +4/4 [==============================] - 0s 667us/step - loss: 2414.5550
    +Epoch 213/500
    +4/4 [==============================] - 0s 667us/step - loss: 1997.7690
    +Epoch 214/500
    +4/4 [==============================] - 0s 667us/step - loss: 2143.1705
    +Epoch 215/500
    +4/4 [==============================] - 0s 1ms/step - loss: 2220.8686
    +Epoch 216/500
    +4/4 [==============================] - 0s 667us/step - loss: 2027.0525
    +Epoch 217/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1796.1243
    +Epoch 218/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1688.2720
    +Epoch 219/500
    +4/4 [==============================] - 0s 666us/step - loss: 2427.6732
    +Epoch 220/500
    +4/4 [==============================] - 0s 667us/step - loss: 1930.2496
    +Epoch 221/500
    +4/4 [==============================] - 0s 1ms/step - loss: 2101.2623
    +Epoch 222/500
    +4/4 [==============================] - 0s 668us/step - loss: 2311.3426
    +Epoch 223/500
    +4/4 [==============================] - 0s 667us/step - loss: 2108.5763
    +Epoch 224/500
    +4/4 [==============================] - 0s 667us/step - loss: 1652.7140
    +Epoch 225/500
    +4/4 [==============================] - 0s 1ms/step - loss: 2029.6269
    +Epoch 226/500
    +4/4 [==============================] - 0s 667us/step - loss: 1971.0215
    +Epoch 227/500
    +4/4 [==============================] - 0s 1ms/step - loss: 2086.6688
    +Epoch 228/500
    +4/4 [==============================] - 0s 667us/step - loss: 2013.4791
    +Epoch 229/500
    +4/4 [==============================] - 0s 667us/step - loss: 1939.2891
    +Epoch 230/500
    +4/4 [==============================] - 0s 667us/step - loss: 2023.8636
    +Epoch 231/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1973.9831
    +Epoch 232/500
    +4/4 [==============================] - 0s 667us/step - loss: 2170.8269
    +Epoch 233/500
    +4/4 [==============================] - 0s 666us/step - loss: 2119.8461
    +Epoch 234/500
    +4/4 [==============================] - 0s 999us/step - loss: 1718.3819
    +Epoch 235/500
    +4/4 [==============================] - 0s 666us/step - loss: 1753.4476
    +Epoch 236/500
    +4/4 [==============================] - 0s 999us/step - loss: 2009.6607
    +Epoch 237/500
    +4/4 [==============================] - 0s 666us/step - loss: 1874.1594
    +Epoch 238/500
    +4/4 [==============================] - 0s 666us/step - loss: 1786.2699
    +Epoch 239/500
    +4/4 [==============================] - 0s 999us/step - loss: 1976.5859
    +Epoch 240/500
    +4/4 [==============================] - 0s 667us/step - loss: 1764.9975
    +Epoch 241/500
    +4/4 [==============================] - 0s 666us/step - loss: 1843.2896
    +Epoch 242/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1887.3193
    +Epoch 243/500
    +4/4 [==============================] - 0s 667us/step - loss: 1746.3157
    +Epoch 244/500
    +4/4 [==============================] - 0s 666us/step - loss: 2219.7242
    +Epoch 245/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1838.4691
    +Epoch 246/500
    +4/4 [==============================] - 0s 667us/step - loss: 1993.5528
    +Epoch 247/500
    +4/4 [==============================] - 0s 666us/step - loss: 1947.9465
    +Epoch 248/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1756.1666
    +Epoch 249/500
    +4/4 [==============================] - 0s 667us/step - loss: 2151.8272
    +Epoch 250/500
    +4/4 [==============================] - 0s 1ms/step - loss: 2048.7447
    +Epoch 251/500
    +4/4 [==============================] - 0s 666us/step - loss: 1880.7260
    +Epoch 252/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1681.5052
    +Epoch 253/500
    +4/4 [==============================] - 0s 999us/step - loss: 1546.6121
    +Epoch 254/500
    +4/4 [==============================] - 0s 667us/step - loss: 1922.8754
    +Epoch 255/500
    +4/4 [==============================] - 0s 666us/step - loss: 2054.1689
    +Epoch 256/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1950.0882
    +Epoch 257/500
    +4/4 [==============================] - 0s 666us/step - loss: 1550.6943
    +Epoch 258/500
    +4/4 [==============================] - 0s 666us/step - loss: 1768.0412
    +Epoch 259/500
    +4/4 [==============================] - 0s 667us/step - loss: 1886.6084
    +Epoch 260/500
    +4/4 [==============================] - 0s 667us/step - loss: 1832.7899
    +Epoch 261/500
    +4/4 [==============================] - 0s 667us/step - loss: 1880.5472
    +Epoch 262/500
    +4/4 [==============================] - 0s 667us/step - loss: 1793.9719
    +Epoch 263/500
    +4/4 [==============================] - 0s 666us/step - loss: 1947.4080
    +Epoch 264/500
    +4/4 [==============================] - 0s 667us/step - loss: 2140.2205
    +Epoch 265/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1552.2280
    +Epoch 266/500
    +4/4 [==============================] - 0s 667us/step - loss: 1875.1854
    +Epoch 267/500
    +4/4 [==============================] - 0s 667us/step - loss: 1512.7849
    +Epoch 268/500
    +4/4 [==============================] - 0s 666us/step - loss: 1730.0405
    +Epoch 269/500
    +4/4 [==============================] - 0s 982us/step - loss: 1649.7960
    +Epoch 270/500
    +4/4 [==============================] - 0s 667us/step - loss: 1570.7260
    +Epoch 271/500
    +4/4 [==============================] - 0s 666us/step - loss: 1624.6024
    +Epoch 272/500
    +4/4 [==============================] - 0s 667us/step - loss: 1648.9278
    +Epoch 273/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1910.3136
    +Epoch 274/500
    +4/4 [==============================] - 0s 667us/step - loss: 1602.3501
    +Epoch 275/500
    +4/4 [==============================] - 0s 667us/step - loss: 1725.3586
    +Epoch 276/500
    +4/4 [==============================] - 0s 666us/step - loss: 1869.1324
    +Epoch 277/500
    +4/4 [==============================] - 0s 668us/step - loss: 1830.4318
    +Epoch 278/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1761.2750
    +Epoch 279/500
    +4/4 [==============================] - 0s 667us/step - loss: 1722.9209
    +Epoch 280/500
    +4/4 [==============================] - 0s 667us/step - loss: 1948.2875
    +Epoch 281/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1831.7574
    +Epoch 282/500
    +4/4 [==============================] - 0s 666us/step - loss: 2206.8629
    +Epoch 283/500
    +4/4 [==============================] - 0s 667us/step - loss: 1956.3901
    +Epoch 284/500
    +4/4 [==============================] - 0s 666us/step - loss: 2008.6336
    +Epoch 285/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1838.9097
    +Epoch 286/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1850.5665
    +Epoch 287/500
    +4/4 [==============================] - 0s 667us/step - loss: 1741.1563
    +Epoch 288/500
    +4/4 [==============================] - 0s 999us/step - loss: 1533.2136
    +Epoch 289/500
    +4/4 [==============================] - 0s 667us/step - loss: 1710.2255
    +Epoch 290/500
    +
    +
    +
    4/4 [==============================] - 0s 667us/step - loss: 1863.6537
    +Epoch 291/500
    +4/4 [==============================] - 0s 667us/step - loss: 1473.4835
    +Epoch 292/500
    +4/4 [==============================] - 0s 666us/step - loss: 1926.0840
    +Epoch 293/500
    +4/4 [==============================] - 0s 668us/step - loss: 1754.7195
    +Epoch 294/500
    +4/4 [==============================] - 0s 667us/step - loss: 1532.6767
    +Epoch 295/500
    +4/4 [==============================] - 0s 667us/step - loss: 1429.4323
    +Epoch 296/500
    +4/4 [==============================] - 0s 1ms/step - loss: 2109.0054
    +Epoch 297/500
    +4/4 [==============================] - 0s 666us/step - loss: 1841.1548
    +Epoch 298/500
    +4/4 [==============================] - 0s 666us/step - loss: 2027.2667
    +Epoch 299/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1759.9251
    +Epoch 300/500
    +4/4 [==============================] - 0s 507us/step - loss: 1677.7136
    +Epoch 301/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1644.2639
    +Epoch 302/500
    +4/4 [==============================] - 0s 667us/step - loss: 1727.8118
    +Epoch 303/500
    +4/4 [==============================] - 0s 667us/step - loss: 1799.4443
    +Epoch 304/500
    +4/4 [==============================] - 0s 666us/step - loss: 1791.8709
    +Epoch 305/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1613.7294
    +Epoch 306/500
    +4/4 [==============================] - 0s 667us/step - loss: 1667.9038
    +Epoch 307/500
    +4/4 [==============================] - 0s 667us/step - loss: 1424.7962
    +Epoch 308/500
    +4/4 [==============================] - 0s 666us/step - loss: 1683.4494
    +Epoch 309/500
    +4/4 [==============================] - 0s 666us/step - loss: 1886.6228
    +Epoch 310/500
    +4/4 [==============================] - 0s 667us/step - loss: 1719.3485
    +Epoch 311/500
    +4/4 [==============================] - 0s 667us/step - loss: 1949.5489
    +Epoch 312/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1752.6652
    +Epoch 313/500
    +4/4 [==============================] - 0s 667us/step - loss: 1641.8077
    +Epoch 314/500
    +4/4 [==============================] - 0s 667us/step - loss: 1679.9119
    +Epoch 315/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1614.9023
    +Epoch 316/500
    +4/4 [==============================] - 0s 512us/step - loss: 1599.3130
    +Epoch 317/500
    +4/4 [==============================] - 0s 637us/step - loss: 1543.8407
    +Epoch 318/500
    +4/4 [==============================] - 0s 666us/step - loss: 1548.0045
    +Epoch 319/500
    +4/4 [==============================] - 0s 667us/step - loss: 1616.8255
    +Epoch 320/500
    +4/4 [==============================] - 0s 667us/step - loss: 1658.5290
    +Epoch 321/500
    +4/4 [==============================] - 0s 668us/step - loss: 1623.4593
    +Epoch 322/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1598.5425
    +Epoch 323/500
    +4/4 [==============================] - 0s 665us/step - loss: 1527.0035
    +Epoch 324/500
    +4/4 [==============================] - 0s 667us/step - loss: 1675.1176
    +Epoch 325/500
    +4/4 [==============================] - 0s 668us/step - loss: 1579.7624
    +Epoch 326/500
    +4/4 [==============================] - 0s 667us/step - loss: 1871.0583
    +Epoch 327/500
    +4/4 [==============================] - 0s 667us/step - loss: 1676.2569
    +Epoch 328/500
    +4/4 [==============================] - 0s 667us/step - loss: 1548.3092
    +Epoch 329/500
    +4/4 [==============================] - 0s 667us/step - loss: 1792.6997
    +Epoch 330/500
    +4/4 [==============================] - 0s 999us/step - loss: 1630.5027
    +Epoch 331/500
    +4/4 [==============================] - 0s 666us/step - loss: 1714.3342
    +Epoch 332/500
    +4/4 [==============================] - 0s 666us/step - loss: 1746.1937
    +Epoch 333/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1909.1885
    +Epoch 334/500
    +4/4 [==============================] - 0s 667us/step - loss: 1699.7365
    +Epoch 335/500
    +4/4 [==============================] - 0s 666us/step - loss: 1782.2948
    +Epoch 336/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1433.7564
    +Epoch 337/500
    +4/4 [==============================] - 0s 667us/step - loss: 1609.3827
    +Epoch 338/500
    +4/4 [==============================] - 0s 667us/step - loss: 1524.3713
    +Epoch 339/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1615.6571
    +Epoch 340/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1436.3167
    +Epoch 341/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1527.5656
    +Epoch 342/500
    +4/4 [==============================] - 0s 667us/step - loss: 1483.7080
    +Epoch 343/500
    +4/4 [==============================] - 0s 668us/step - loss: 1679.9990
    +Epoch 344/500
    +4/4 [==============================] - 0s 667us/step - loss: 1845.7168
    +Epoch 345/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1535.4206
    +Epoch 346/500
    +4/4 [==============================] - 0s 666us/step - loss: 1365.2617
    +Epoch 347/500
    +4/4 [==============================] - 0s 999us/step - loss: 1322.8511
    +Epoch 348/500
    +4/4 [==============================] - 0s 667us/step - loss: 1658.6179
    +Epoch 349/500
    +4/4 [==============================] - 0s 666us/step - loss: 1718.2889
    +Epoch 350/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1330.4235
    +Epoch 351/500
    +4/4 [==============================] - 0s 668us/step - loss: 1684.8156
    +Epoch 352/500
    +4/4 [==============================] - 0s 666us/step - loss: 1526.8129
    +Epoch 353/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1451.5067
    +Epoch 354/500
    +4/4 [==============================] - 0s 667us/step - loss: 1263.4889
    +Epoch 355/500
    +4/4 [==============================] - 0s 667us/step - loss: 1551.9647
    +Epoch 356/500
    +4/4 [==============================] - 0s 667us/step - loss: 1477.6180
    +Epoch 357/500
    +4/4 [==============================] - 0s 667us/step - loss: 1572.4237
    +Epoch 358/500
    +4/4 [==============================] - 0s 667us/step - loss: 1674.9063
    +Epoch 359/500
    +4/4 [==============================] - 0s 667us/step - loss: 1378.8684
    +Epoch 360/500
    +4/4 [==============================] - 0s 667us/step - loss: 1507.3229
    +Epoch 361/500
    +4/4 [==============================] - 0s 667us/step - loss: 1768.5251
    +Epoch 362/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1648.0613
    +Epoch 363/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1940.2832
    +Epoch 364/500
    +4/4 [==============================] - 0s 667us/step - loss: 1390.7029
    +Epoch 365/500
    +4/4 [==============================] - 0s 1ms/step - loss: 2028.4180
    +Epoch 366/500
    +4/4 [==============================] - 0s 667us/step - loss: 1400.6053
    +Epoch 367/500
    +4/4 [==============================] - 0s 667us/step - loss: 1600.5463
    +Epoch 368/500
    +4/4 [==============================] - 0s 999us/step - loss: 1417.4545
    +Epoch 369/500
    +4/4 [==============================] - 0s 667us/step - loss: 1690.9898
    +Epoch 370/500
    +4/4 [==============================] - 0s 667us/step - loss: 1560.5255
    +Epoch 371/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1496.3250
    +Epoch 372/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1464.4964
    +Epoch 373/500
    +4/4 [==============================] - 0s 666us/step - loss: 1347.3822
    +Epoch 374/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1680.5625
    +Epoch 375/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1685.9671
    +Epoch 376/500
    +4/4 [==============================] - 0s 667us/step - loss: 1458.3715
    +Epoch 377/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1338.3292
    +Epoch 378/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1224.0331
    +Epoch 379/500
    +4/4 [==============================] - 0s 667us/step - loss: 1615.2853
    +Epoch 380/500
    +4/4 [==============================] - 0s 666us/step - loss: 1479.0943
    +Epoch 381/500
    +4/4 [==============================] - 0s 667us/step - loss: 1457.9219
    +Epoch 382/500
    +4/4 [==============================] - 0s 666us/step - loss: 1475.0094
    +Epoch 383/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1670.0675
    +Epoch 384/500
    +4/4 [==============================] - 0s 666us/step - loss: 1342.1283
    +Epoch 385/500
    +4/4 [==============================] - 0s 667us/step - loss: 1732.6730
    +Epoch 386/500
    +
    +
    +
    4/4 [==============================] - 0s 666us/step - loss: 1557.8197
    +Epoch 387/500
    +4/4 [==============================] - 0s 667us/step - loss: 1323.2413
    +Epoch 388/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1480.8009
    +Epoch 389/500
    +4/4 [==============================] - 0s 666us/step - loss: 1554.0360
    +Epoch 390/500
    +4/4 [==============================] - 0s 666us/step - loss: 1233.7350
    +Epoch 391/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1612.1095
    +Epoch 392/500
    +4/4 [==============================] - 0s 666us/step - loss: 1309.7605
    +Epoch 393/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1270.8509
    +Epoch 394/500
    +4/4 [==============================] - 0s 667us/step - loss: 1722.0782
    +Epoch 395/500
    +4/4 [==============================] - 0s 666us/step - loss: 1548.6975
    +Epoch 396/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1403.7559
    +Epoch 397/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1286.3266
    +Epoch 398/500
    +4/4 [==============================] - 0s 666us/step - loss: 1534.1359
    +Epoch 399/500
    +4/4 [==============================] - 0s 667us/step - loss: 1349.4493
    +Epoch 400/500
    +4/4 [==============================] - 0s 667us/step - loss: 1618.6762
    +Epoch 401/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1342.9501
    +Epoch 402/500
    +4/4 [==============================] - 0s 666us/step - loss: 1599.2243
    +Epoch 403/500
    +4/4 [==============================] - 0s 667us/step - loss: 1328.4496
    +Epoch 404/500
    +4/4 [==============================] - 0s 667us/step - loss: 1260.8650
    +Epoch 405/500
    +4/4 [==============================] - 0s 667us/step - loss: 1356.2635
    +Epoch 406/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1463.5878
    +Epoch 407/500
    +4/4 [==============================] - 0s 667us/step - loss: 1415.7405
    +Epoch 408/500
    +4/4 [==============================] - 0s 667us/step - loss: 1665.0463
    +Epoch 409/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1407.6085
    +Epoch 410/500
    +4/4 [==============================] - 0s 667us/step - loss: 1340.3311
    +Epoch 411/500
    +4/4 [==============================] - 0s 666us/step - loss: 1410.2766
    +Epoch 412/500
    +4/4 [==============================] - 0s 999us/step - loss: 1370.8288
    +Epoch 413/500
    +4/4 [==============================] - 0s 667us/step - loss: 1525.9971
    +Epoch 414/500
    +4/4 [==============================] - 0s 666us/step - loss: 1281.8653
    +Epoch 415/500
    +4/4 [==============================] - 0s 668us/step - loss: 1242.5224
    +Epoch 416/500
    +4/4 [==============================] - 0s 667us/step - loss: 1471.6353
    +Epoch 417/500
    +4/4 [==============================] - 0s 667us/step - loss: 1343.7267
    +Epoch 418/500
    +4/4 [==============================] - 0s 667us/step - loss: 1074.5558
    +Epoch 419/500
    +4/4 [==============================] - 0s 666us/step - loss: 1477.0684
    +Epoch 420/500
    +4/4 [==============================] - 0s 667us/step - loss: 1548.6382
    +Epoch 421/500
    +4/4 [==============================] - 0s 667us/step - loss: 1554.9643
    +Epoch 422/500
    +4/4 [==============================] - 0s 666us/step - loss: 1113.1002
    +Epoch 423/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1267.2423
    +Epoch 424/500
    +4/4 [==============================] - 0s 667us/step - loss: 1333.1006
    +Epoch 425/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1344.3406
    +Epoch 426/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1532.5031
    +Epoch 427/500
    +4/4 [==============================] - 0s 667us/step - loss: 1240.9328
    +Epoch 428/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1362.0289
    +Epoch 429/500
    +4/4 [==============================] - 0s 666us/step - loss: 1332.5575
    +Epoch 430/500
    +4/4 [==============================] - 0s 667us/step - loss: 1464.8355
    +Epoch 431/500
    +4/4 [==============================] - 0s 666us/step - loss: 1337.9758
    +Epoch 432/500
    +4/4 [==============================] - 0s 676us/step - loss: 1549.9248
    +Epoch 433/500
    +4/4 [==============================] - 0s 667us/step - loss: 1168.1958
    +Epoch 434/500
    +4/4 [==============================] - 0s 884us/step - loss: 1811.1164
    +Epoch 435/500
    +4/4 [==============================] - 0s 666us/step - loss: 1528.3908
    +Epoch 436/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1278.0946
    +Epoch 437/500
    +4/4 [==============================] - 0s 667us/step - loss: 1254.2802
    +Epoch 438/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1163.0126
    +Epoch 439/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1241.6989
    +Epoch 440/500
    +4/4 [==============================] - 0s 666us/step - loss: 1280.1467
    +Epoch 441/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1373.9719
    +Epoch 442/500
    +4/4 [==============================] - 0s 667us/step - loss: 1589.5521
    +Epoch 443/500
    +4/4 [==============================] - 0s 667us/step - loss: 1462.5124
    +Epoch 444/500
    +4/4 [==============================] - 0s 667us/step - loss: 1463.4877
    +Epoch 445/500
    +4/4 [==============================] - 0s 666us/step - loss: 1276.0316
    +Epoch 446/500
    +4/4 [==============================] - 0s 667us/step - loss: 1481.6486
    +Epoch 447/500
    +4/4 [==============================] - 0s 667us/step - loss: 1374.0903
    +Epoch 448/500
    +4/4 [==============================] - 0s 667us/step - loss: 1450.0636
    +Epoch 449/500
    +4/4 [==============================] - 0s 666us/step - loss: 1491.4013
    +Epoch 450/500
    +4/4 [==============================] - 0s 666us/step - loss: 1234.3174
    +Epoch 451/500
    +4/4 [==============================] - 0s 999us/step - loss: 1309.6376
    +Epoch 452/500
    +4/4 [==============================] - 0s 667us/step - loss: 1445.2293
    +Epoch 453/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1417.1038
    +Epoch 454/500
    +4/4 [==============================] - 0s 666us/step - loss: 1319.5845
    +Epoch 455/500
    +4/4 [==============================] - 0s 666us/step - loss: 1640.9712
    +Epoch 456/500
    +4/4 [==============================] - 0s 666us/step - loss: 1470.1415
    +Epoch 457/500
    +4/4 [==============================] - 0s 666us/step - loss: 1387.7348
    +Epoch 458/500
    +4/4 [==============================] - 0s 666us/step - loss: 1372.6094
    +Epoch 459/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1381.6782
    +Epoch 460/500
    +4/4 [==============================] - 0s 666us/step - loss: 1552.8121
    +Epoch 461/500
    +4/4 [==============================] - 0s 667us/step - loss: 1321.1897
    +Epoch 462/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1481.3858
    +Epoch 463/500
    +4/4 [==============================] - 0s 667us/step - loss: 1149.8614
    +Epoch 464/500
    +4/4 [==============================] - 0s 667us/step - loss: 1257.1769
    +Epoch 465/500
    +4/4 [==============================] - 0s 667us/step - loss: 1171.9660
    +Epoch 466/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1205.8323
    +Epoch 467/500
    +4/4 [==============================] - 0s 666us/step - loss: 1299.2956
    +Epoch 468/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1487.5287
    +Epoch 469/500
    +4/4 [==============================] - 0s 666us/step - loss: 1289.2277
    +Epoch 470/500
    +4/4 [==============================] - 0s 667us/step - loss: 1239.5310
    +Epoch 471/500
    +4/4 [==============================] - 0s 667us/step - loss: 1379.9230
    +Epoch 472/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1539.5882
    +Epoch 473/500
    +4/4 [==============================] - 0s 667us/step - loss: 1353.4876
    +Epoch 474/500
    +4/4 [==============================] - 0s 667us/step - loss: 1597.8884
    +Epoch 475/500
    +4/4 [==============================] - 0s 667us/step - loss: 1539.9622
    +Epoch 476/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1425.7742
    +Epoch 477/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1489.4607
    +Epoch 478/500
    +4/4 [==============================] - 0s 998us/step - loss: 1121.7008
    +Epoch 479/500
    +4/4 [==============================] - 0s 649us/step - loss: 1257.6141
    +Epoch 480/500
    +4/4 [==============================] - 0s 999us/step - loss: 1336.6669
    +Epoch 481/500
    +4/4 [==============================] - 0s 664us/step - loss: 1420.3951
    +Epoch 482/500
    +
    +
    +
    4/4 [==============================] - 0s 666us/step - loss: 1652.5571
    +Epoch 483/500
    +4/4 [==============================] - 0s 999us/step - loss: 1252.8741
    +Epoch 484/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1463.2430
    +Epoch 485/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1600.7218
    +Epoch 486/500
    +4/4 [==============================] - 0s 667us/step - loss: 1493.6457
    +Epoch 487/500
    +4/4 [==============================] - 0s 667us/step - loss: 1105.8380
    +Epoch 488/500
    +4/4 [==============================] - 0s 666us/step - loss: 1257.4162
    +Epoch 489/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1193.1010
    +Epoch 490/500
    +4/4 [==============================] - 0s 667us/step - loss: 1531.6602
    +Epoch 491/500
    +4/4 [==============================] - 0s 667us/step - loss: 1357.7809
    +Epoch 492/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1173.1733
    +Epoch 493/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1384.7802
    +Epoch 494/500
    +4/4 [==============================] - 0s 666us/step - loss: 1453.4034
    +Epoch 495/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1149.9333
    +Epoch 496/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1326.4750
    +Epoch 497/500
    +4/4 [==============================] - 0s 999us/step - loss: 1359.3023
    +Epoch 498/500
    +4/4 [==============================] - 0s 666us/step - loss: 1197.9775
    +Epoch 499/500
    +4/4 [==============================] - 0s 668us/step - loss: 1186.3858
    +Epoch 500/500
    +4/4 [==============================] - 0s 667us/step - loss: 1293.5841
    +
    +
    +
    <tensorflow.python.keras.callbacks.History at 0x21493feb2e0>
    +
    +
    +
    +
    +
    +
    +
    x2_fit = np.linspace(-5, 5, 10000)
    +y2_fit = modell2.predict(x2_fit)
    +plt.plot(x2, y2, linestyle = ' ', marker = 'o', label = 'data')
    +plt.plot(x2_fit, y2_fit, label = 'regresjonskurve')
    +plt.legend()
    +plt.savefig("polynomreg1.pdf")
    +
    +
    +
    +
    +../../_images/86fd817870de92f0d86ea7ed39de9cc27c811f84cb216cb1d02a095d0603fed0.png +
    +
    +
    +
    +
    modell3 = tf.keras.Sequential([
    +    Dense(units = 12, input_shape = (1,), activation = 'sigmoid'),
    +    Dense(units = 8, activation = 'linear'),
    +    Dense(units = 6, activation = 'linear'),
    +    Dense(units = 1, activation = 'linear')])
    +
    +modell3.compile(optimizer=Adam(0.1), loss='mse')
    +modell3.fit(x2, y2, epochs = 500)
    +
    +
    +
    +
    +
    Epoch 1/500
    +4/4 [==============================] - 0s 1000us/step - loss: 8789.5694
    +Epoch 2/500
    +4/4 [==============================] - 0s 923us/step - loss: 6345.0535
    +Epoch 3/500
    +4/4 [==============================] - 0s 1000us/step - loss: 6029.8562
    +Epoch 4/500
    +4/4 [==============================] - 0s 666us/step - loss: 5271.6045
    +Epoch 5/500
    +4/4 [==============================] - 0s 1000us/step - loss: 5460.2389
    +Epoch 6/500
    +4/4 [==============================] - 0s 666us/step - loss: 5319.8144
    +Epoch 7/500
    +4/4 [==============================] - 0s 666us/step - loss: 5651.7026
    +Epoch 8/500
    +4/4 [==============================] - 0s 667us/step - loss: 5453.8189
    +Epoch 9/500
    +4/4 [==============================] - 0s 1ms/step - loss: 4450.8942
    +Epoch 10/500
    +4/4 [==============================] - 0s 1ms/step - loss: 4148.9610
    +Epoch 11/500
    +4/4 [==============================] - 0s 667us/step - loss: 4600.5944
    +Epoch 12/500
    +4/4 [==============================] - 0s 999us/step - loss: 4384.6699
    +Epoch 13/500
    +4/4 [==============================] - 0s 1ms/step - loss: 4774.5625
    +Epoch 14/500
    +4/4 [==============================] - 0s 1ms/step - loss: 4093.1962
    +Epoch 15/500
    +4/4 [==============================] - 0s 666us/step - loss: 3993.7253
    +Epoch 16/500
    +4/4 [==============================] - 0s 1000us/step - loss: 3769.6068
    +Epoch 17/500
    +4/4 [==============================] - 0s 666us/step - loss: 3109.8644
    +Epoch 18/500
    +4/4 [==============================] - 0s 999us/step - loss: 3242.6954
    +Epoch 19/500
    +4/4 [==============================] - 0s 667us/step - loss: 2662.1601
    +Epoch 20/500
    +4/4 [==============================] - 0s 667us/step - loss: 3351.1462
    +Epoch 21/500
    +4/4 [==============================] - 0s 667us/step - loss: 2610.7944
    +Epoch 22/500
    +4/4 [==============================] - 0s 1ms/step - loss: 2859.0244
    +Epoch 23/500
    +4/4 [==============================] - 0s 667us/step - loss: 4131.9188
    +Epoch 24/500
    +4/4 [==============================] - 0s 1000us/step - loss: 2818.6651
    +Epoch 25/500
    +4/4 [==============================] - 0s 668us/step - loss: 3023.7022
    +Epoch 26/500
    +4/4 [==============================] - 0s 999us/step - loss: 2924.5209
    +Epoch 27/500
    +4/4 [==============================] - 0s 1ms/step - loss: 2689.4314
    +Epoch 28/500
    +4/4 [==============================] - 0s 666us/step - loss: 2602.8444
    +Epoch 29/500
    +4/4 [==============================] - 0s 1000us/step - loss: 2458.6333
    +Epoch 30/500
    +4/4 [==============================] - 0s 667us/step - loss: 2193.4183
    +Epoch 31/500
    +4/4 [==============================] - 0s 1ms/step - loss: 2355.9316
    +Epoch 32/500
    +4/4 [==============================] - 0s 666us/step - loss: 1773.1334
    +Epoch 33/500
    +4/4 [==============================] - 0s 666us/step - loss: 1859.9955
    +Epoch 34/500
    +4/4 [==============================] - 0s 666us/step - loss: 2346.1298
    +Epoch 35/500
    +4/4 [==============================] - 0s 667us/step - loss: 1845.7091
    +Epoch 36/500
    +4/4 [==============================] - 0s 667us/step - loss: 2049.8132
    +Epoch 37/500
    +4/4 [==============================] - 0s 1ms/step - loss: 2178.9789
    +Epoch 38/500
    +4/4 [==============================] - 0s 667us/step - loss: 1476.1915
    +Epoch 39/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1631.7415
    +Epoch 40/500
    +4/4 [==============================] - 0s 666us/step - loss: 1969.7458
    +Epoch 41/500
    +4/4 [==============================] - 0s 923us/step - loss: 1298.5611
    +Epoch 42/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1386.5268
    +Epoch 43/500
    +4/4 [==============================] - 0s 666us/step - loss: 1436.5052
    +Epoch 44/500
    +4/4 [==============================] - 0s 667us/step - loss: 1384.1154
    +Epoch 45/500
    +4/4 [==============================] - 0s 667us/step - loss: 1505.5538
    +Epoch 46/500
    +4/4 [==============================] - 0s 667us/step - loss: 1858.7965
    +Epoch 47/500
    +4/4 [==============================] - 0s 667us/step - loss: 1652.7481
    +Epoch 48/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1476.9503
    +Epoch 49/500
    +4/4 [==============================] - 0s 667us/step - loss: 1850.2743
    +Epoch 50/500
    +4/4 [==============================] - 0s 666us/step - loss: 1884.4006
    +Epoch 51/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1312.1477
    +Epoch 52/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1766.8426
    +Epoch 53/500
    +4/4 [==============================] - 0s 667us/step - loss: 1254.7501
    +Epoch 54/500
    +4/4 [==============================] - 0s 667us/step - loss: 1574.3583
    +Epoch 55/500
    +4/4 [==============================] - 0s 999us/step - loss: 1308.3793
    +Epoch 56/500
    +4/4 [==============================] - 0s 667us/step - loss: 1471.6119
    +Epoch 57/500
    +4/4 [==============================] - 0s 667us/step - loss: 1040.1743
    +Epoch 58/500
    +4/4 [==============================] - 0s 666us/step - loss: 1687.0333
    +Epoch 59/500
    +4/4 [==============================] - 0s 666us/step - loss: 1179.0807
    +Epoch 60/500
    +4/4 [==============================] - 0s 666us/step - loss: 1907.1058
    +Epoch 61/500
    +4/4 [==============================] - 0s 667us/step - loss: 1700.3897
    +Epoch 62/500
    +4/4 [==============================] - 0s 666us/step - loss: 1622.2294
    +Epoch 63/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1628.4703
    +Epoch 64/500
    +4/4 [==============================] - 0s 666us/step - loss: 1607.5396
    +Epoch 65/500
    +4/4 [==============================] - 0s 667us/step - loss: 1755.1934
    +Epoch 66/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1540.2809
    +Epoch 67/500
    +4/4 [==============================] - 0s 667us/step - loss: 1293.8165
    +Epoch 68/500
    +4/4 [==============================] - 0s 999us/step - loss: 1456.2812
    +Epoch 69/500
    +4/4 [==============================] - 0s 667us/step - loss: 1383.7459
    +Epoch 70/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1341.3004
    +Epoch 71/500
    +4/4 [==============================] - 0s 666us/step - loss: 1245.1776
    +Epoch 72/500
    +4/4 [==============================] - 0s 999us/step - loss: 1329.2148
    +Epoch 73/500
    +4/4 [==============================] - 0s 666us/step - loss: 1350.2608
    +Epoch 74/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1221.7366
    +Epoch 75/500
    +4/4 [==============================] - 0s 667us/step - loss: 1640.8798
    +Epoch 76/500
    +4/4 [==============================] - 0s 667us/step - loss: 1526.9409
    +Epoch 77/500
    +4/4 [==============================] - 0s 999us/step - loss: 1151.5664
    +Epoch 78/500
    +4/4 [==============================] - 0s 667us/step - loss: 1065.3788
    +Epoch 79/500
    +4/4 [==============================] - 0s 999us/step - loss: 1588.3678
    +Epoch 80/500
    +4/4 [==============================] - 0s 999us/step - loss: 1295.6875
    +Epoch 81/500
    +4/4 [==============================] - 0s 667us/step - loss: 1281.6897
    +Epoch 82/500
    +4/4 [==============================] - 0s 666us/step - loss: 1229.0279
    +Epoch 83/500
    +4/4 [==============================] - 0s 667us/step - loss: 1348.2602
    +Epoch 84/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1292.9941
    +Epoch 85/500
    +4/4 [==============================] - 0s 999us/step - loss: 1275.9404
    +Epoch 86/500
    +4/4 [==============================] - 0s 999us/step - loss: 1152.4883
    +Epoch 87/500
    +4/4 [==============================] - 0s 666us/step - loss: 1331.3721
    +Epoch 88/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1261.7920
    +Epoch 89/500
    +4/4 [==============================] - 0s 667us/step - loss: 1310.7040
    +Epoch 90/500
    +4/4 [==============================] - 0s 667us/step - loss: 1280.5204
    +Epoch 91/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1142.0395
    +Epoch 92/500
    +4/4 [==============================] - 0s 515us/step - loss: 1147.8693
    +Epoch 93/500
    +4/4 [==============================] - 0s 1000us/step - loss: 974.3704
    +Epoch 94/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1155.0687
    +Epoch 95/500
    +4/4 [==============================] - 0s 667us/step - loss: 1029.2641
    +Epoch 96/500
    +4/4 [==============================] - 0s 667us/step - loss: 1127.5576
    +Epoch 97/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1244.8689
    +Epoch 98/500
    +4/4 [==============================] - 0s 668us/step - loss: 1228.0304
    +Epoch 99/500
    +
    +
    +
    4/4 [==============================] - 0s 1000us/step - loss: 1290.4294
    +Epoch 100/500
    +4/4 [==============================] - 0s 666us/step - loss: 1264.9052
    +Epoch 101/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1185.3240
    +Epoch 102/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1206.5858
    +Epoch 103/500
    +4/4 [==============================] - 0s 667us/step - loss: 1479.4964
    +Epoch 104/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1310.4994
    +Epoch 105/500
    +4/4 [==============================] - 0s 667us/step - loss: 1222.5016
    +Epoch 106/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1387.1556
    +Epoch 107/500
    +4/4 [==============================] - 0s 667us/step - loss: 1634.1143
    +Epoch 108/500
    +4/4 [==============================] - 0s 666us/step - loss: 1146.8025
    +Epoch 109/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1123.7659
    +Epoch 110/500
    +4/4 [==============================] - 0s 999us/step - loss: 1596.8107
    +Epoch 111/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1113.4868
    +Epoch 112/500
    +4/4 [==============================] - 0s 667us/step - loss: 1282.9418
    +Epoch 113/500
    +4/4 [==============================] - 0s 999us/step - loss: 1204.6644
    +Epoch 114/500
    +4/4 [==============================] - 0s 666us/step - loss: 1046.1559
    +Epoch 115/500
    +4/4 [==============================] - 0s 665us/step - loss: 1299.0354
    +Epoch 116/500
    +4/4 [==============================] - 0s 666us/step - loss: 1326.6815
    +Epoch 117/500
    +4/4 [==============================] - 0s 667us/step - loss: 1359.9644
    +Epoch 118/500
    +4/4 [==============================] - 0s 667us/step - loss: 1327.7801
    +Epoch 119/500
    +4/4 [==============================] - 0s 666us/step - loss: 1309.2833
    +Epoch 120/500
    +4/4 [==============================] - 0s 666us/step - loss: 1797.1549
    +Epoch 121/500
    +4/4 [==============================] - 0s 666us/step - loss: 1624.3525
    +Epoch 122/500
    +4/4 [==============================] - 0s 667us/step - loss: 1389.3612
    +Epoch 123/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1285.9564
    +Epoch 124/500
    +4/4 [==============================] - 0s 915us/step - loss: 1549.8872
    +Epoch 125/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1510.6163
    +Epoch 126/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1322.9458
    +Epoch 127/500
    +4/4 [==============================] - 0s 667us/step - loss: 1322.6194
    +Epoch 128/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1339.9855
    +Epoch 129/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1250.7255
    +Epoch 130/500
    +4/4 [==============================] - 0s 999us/step - loss: 1074.6780
    +Epoch 131/500
    +4/4 [==============================] - 0s 562us/step - loss: 1172.8854
    +Epoch 132/500
    +4/4 [==============================] - 0s 667us/step - loss: 1259.4188
    +Epoch 133/500
    +4/4 [==============================] - 0s 666us/step - loss: 1257.0122
    +Epoch 134/500
    +4/4 [==============================] - 0s 667us/step - loss: 1676.7020
    +Epoch 135/500
    +4/4 [==============================] - 0s 667us/step - loss: 1473.1501
    +Epoch 136/500
    +4/4 [==============================] - 0s 666us/step - loss: 1405.9000
    +Epoch 137/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1192.4324
    +Epoch 138/500
    +4/4 [==============================] - 0s 667us/step - loss: 1381.5773
    +Epoch 139/500
    +4/4 [==============================] - 0s 667us/step - loss: 1191.8903
    +Epoch 140/500
    +4/4 [==============================] - 0s 668us/step - loss: 1029.9497
    +Epoch 141/500
    +4/4 [==============================] - 0s 995us/step - loss: 1129.5827
    +Epoch 142/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1371.6389
    +Epoch 143/500
    +4/4 [==============================] - 0s 668us/step - loss: 1333.4286
    +Epoch 144/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1515.0143
    +Epoch 145/500
    +4/4 [==============================] - 0s 666us/step - loss: 1406.4011
    +Epoch 146/500
    +4/4 [==============================] - 0s 999us/step - loss: 1283.7952
    +Epoch 147/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1524.2588
    +Epoch 148/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1599.1846
    +Epoch 149/500
    +4/4 [==============================] - 0s 668us/step - loss: 1327.3533
    +Epoch 150/500
    +4/4 [==============================] - 0s 666us/step - loss: 2498.1994
    +Epoch 151/500
    +4/4 [==============================] - 0s 667us/step - loss: 2136.6207
    +Epoch 152/500
    +4/4 [==============================] - 0s 667us/step - loss: 2135.8144
    +Epoch 153/500
    +4/4 [==============================] - 0s 667us/step - loss: 1963.6042
    +Epoch 154/500
    +4/4 [==============================] - 0s 564us/step - loss: 1365.5562
    +Epoch 155/500
    +4/4 [==============================] - 0s 667us/step - loss: 1282.4442
    +Epoch 156/500
    +4/4 [==============================] - 0s 666us/step - loss: 1336.9373
    +Epoch 157/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1350.8740
    +Epoch 158/500
    +4/4 [==============================] - 0s 667us/step - loss: 1678.2083
    +Epoch 159/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1174.3013
    +Epoch 160/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1317.2248
    +Epoch 161/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1264.8075
    +Epoch 162/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1176.0533
    +Epoch 163/500
    +4/4 [==============================] - 0s 666us/step - loss: 1484.7648
    +Epoch 164/500
    +4/4 [==============================] - 0s 666us/step - loss: 1048.9400
    +Epoch 165/500
    +4/4 [==============================] - 0s 999us/step - loss: 1419.2313
    +Epoch 166/500
    +4/4 [==============================] - 0s 667us/step - loss: 1245.3562
    +Epoch 167/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1213.1125
    +Epoch 168/500
    +4/4 [==============================] - 0s 999us/step - loss: 1399.4077
    +Epoch 169/500
    +4/4 [==============================] - 0s 667us/step - loss: 1351.9926
    +Epoch 170/500
    +4/4 [==============================] - 0s 667us/step - loss: 1138.3006
    +Epoch 171/500
    +4/4 [==============================] - 0s 666us/step - loss: 1288.7547
    +Epoch 172/500
    +4/4 [==============================] - 0s 667us/step - loss: 1484.4280
    +Epoch 173/500
    +4/4 [==============================] - 0s 665us/step - loss: 1095.1959
    +Epoch 174/500
    +4/4 [==============================] - 0s 667us/step - loss: 1487.4609
    +Epoch 175/500
    +4/4 [==============================] - 0s 666us/step - loss: 1515.2432
    +Epoch 176/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1273.7294
    +Epoch 177/500
    +4/4 [==============================] - 0s 667us/step - loss: 1269.1444
    +Epoch 178/500
    +4/4 [==============================] - 0s 666us/step - loss: 1365.2088
    +Epoch 179/500
    +4/4 [==============================] - 0s 666us/step - loss: 1028.8981
    +Epoch 180/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1114.6379
    +Epoch 181/500
    +4/4 [==============================] - 0s 667us/step - loss: 1465.0994
    +Epoch 182/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1327.0004
    +Epoch 183/500
    +4/4 [==============================] - 0s 666us/step - loss: 1197.2784
    +Epoch 184/500
    +4/4 [==============================] - 0s 666us/step - loss: 1122.8612
    +Epoch 185/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1354.6093
    +Epoch 186/500
    +4/4 [==============================] - 0s 666us/step - loss: 1187.2953
    +Epoch 187/500
    +4/4 [==============================] - 0s 668us/step - loss: 1105.0744
    +Epoch 188/500
    +4/4 [==============================] - 0s 666us/step - loss: 1145.1487
    +Epoch 189/500
    +4/4 [==============================] - 0s 667us/step - loss: 1185.6292
    +Epoch 190/500
    +4/4 [==============================] - 0s 789us/step - loss: 1112.6757
    +Epoch 191/500
    +4/4 [==============================] - 0s 761us/step - loss: 1076.4928
    +Epoch 192/500
    +4/4 [==============================] - 0s 666us/step - loss: 1023.3226
    +Epoch 193/500
    +4/4 [==============================] - 0s 666us/step - loss: 922.0698
    +Epoch 194/500
    +4/4 [==============================] - 0s 667us/step - loss: 1297.4617
    +Epoch 195/500
    +
    +
    +
    4/4 [==============================] - 0s 666us/step - loss: 1261.4720
    +Epoch 196/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1363.1085
    +Epoch 197/500
    +4/4 [==============================] - 0s 667us/step - loss: 1311.5873
    +Epoch 198/500
    +4/4 [==============================] - 0s 668us/step - loss: 1057.1155
    +Epoch 199/500
    +4/4 [==============================] - 0s 685us/step - loss: 1555.0469
    +Epoch 200/500
    +4/4 [==============================] - 0s 666us/step - loss: 1206.8271
    +Epoch 201/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1309.4932
    +Epoch 202/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1216.6666
    +Epoch 203/500
    +4/4 [==============================] - 0s 666us/step - loss: 1134.7535
    +Epoch 204/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1180.2378
    +Epoch 205/500
    +4/4 [==============================] - 0s 999us/step - loss: 1118.3349
    +Epoch 206/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1422.3731
    +Epoch 207/500
    +4/4 [==============================] - 0s 999us/step - loss: 2969.5614
    +Epoch 208/500
    +4/4 [==============================] - 0s 1000us/step - loss: 2310.0057
    +Epoch 209/500
    +4/4 [==============================] - 0s 667us/step - loss: 2454.8443
    +Epoch 210/500
    +4/4 [==============================] - 0s 666us/step - loss: 1596.5067
    +Epoch 211/500
    +4/4 [==============================] - 0s 667us/step - loss: 1564.4193
    +Epoch 212/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1432.7741
    +Epoch 213/500
    +4/4 [==============================] - 0s 667us/step - loss: 1790.6158
    +Epoch 214/500
    +4/4 [==============================] - 0s 470us/step - loss: 1374.8593
    +Epoch 215/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1257.9713
    +Epoch 216/500
    +4/4 [==============================] - 0s 667us/step - loss: 1130.2473
    +Epoch 217/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1076.2295
    +Epoch 218/500
    +4/4 [==============================] - 0s 666us/step - loss: 1495.1215
    +Epoch 219/500
    +4/4 [==============================] - 0s 666us/step - loss: 1243.7302
    +Epoch 220/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1136.7336
    +Epoch 221/500
    +4/4 [==============================] - 0s 666us/step - loss: 976.5883
    +Epoch 222/500
    +4/4 [==============================] - 0s 667us/step - loss: 1200.1370
    +Epoch 223/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1293.1500
    +Epoch 224/500
    +4/4 [==============================] - 0s 666us/step - loss: 1312.2003
    +Epoch 225/500
    +4/4 [==============================] - 0s 999us/step - loss: 1154.3557
    +Epoch 226/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1364.9219
    +Epoch 227/500
    +4/4 [==============================] - 0s 999us/step - loss: 1220.6435
    +Epoch 228/500
    +4/4 [==============================] - 0s 666us/step - loss: 1093.3416
    +Epoch 229/500
    +4/4 [==============================] - 0s 667us/step - loss: 1096.2506
    +Epoch 230/500
    +4/4 [==============================] - 0s 999us/step - loss: 1409.2996
    +Epoch 231/500
    +4/4 [==============================] - 0s 666us/step - loss: 1362.6749
    +Epoch 232/500
    +4/4 [==============================] - 0s 667us/step - loss: 1156.9496
    +Epoch 233/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1448.2217
    +Epoch 234/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1166.8688
    +Epoch 235/500
    +4/4 [==============================] - 0s 666us/step - loss: 1262.1240
    +Epoch 236/500
    +4/4 [==============================] - 0s 666us/step - loss: 1103.8537
    +Epoch 237/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1277.9765
    +Epoch 238/500
    +4/4 [==============================] - 0s 667us/step - loss: 1495.3113
    +Epoch 239/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1046.2204
    +Epoch 240/500
    +4/4 [==============================] - 0s 667us/step - loss: 1333.1548
    +Epoch 241/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1358.8558
    +Epoch 242/500
    +4/4 [==============================] - 0s 668us/step - loss: 1149.6608
    +Epoch 243/500
    +4/4 [==============================] - 0s 667us/step - loss: 1361.3927
    +Epoch 244/500
    +4/4 [==============================] - 0s 842us/step - loss: 1148.3948
    +Epoch 245/500
    +4/4 [==============================] - 0s 666us/step - loss: 1347.1580
    +Epoch 246/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1372.5474
    +Epoch 247/500
    +4/4 [==============================] - 0s 667us/step - loss: 1185.6848
    +Epoch 248/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1032.2885
    +Epoch 249/500
    +4/4 [==============================] - 0s 666us/step - loss: 1144.4747
    +Epoch 250/500
    +4/4 [==============================] - 0s 667us/step - loss: 1307.3123
    +Epoch 251/500
    +4/4 [==============================] - 0s 666us/step - loss: 1249.5654
    +Epoch 252/500
    +4/4 [==============================] - 0s 667us/step - loss: 995.1561
    +Epoch 253/500
    +4/4 [==============================] - 0s 883us/step - loss: 1306.1875
    +Epoch 254/500
    +4/4 [==============================] - 0s 668us/step - loss: 1040.3799
    +Epoch 255/500
    +4/4 [==============================] - 0s 667us/step - loss: 1176.3732
    +Epoch 256/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1240.6577
    +Epoch 257/500
    +4/4 [==============================] - 0s 947us/step - loss: 1119.9270
    +Epoch 258/500
    +4/4 [==============================] - 0s 999us/step - loss: 1372.8056
    +Epoch 259/500
    +4/4 [==============================] - 0s 667us/step - loss: 1369.8861
    +Epoch 260/500
    +4/4 [==============================] - 0s 666us/step - loss: 883.4447
    +Epoch 261/500
    +4/4 [==============================] - 0s 667us/step - loss: 1413.8469
    +Epoch 262/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1032.5739
    +Epoch 263/500
    +4/4 [==============================] - 0s 667us/step - loss: 1133.3205
    +Epoch 264/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1189.2164
    +Epoch 265/500
    +4/4 [==============================] - 0s 668us/step - loss: 1081.2790
    +Epoch 266/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1109.8219
    +Epoch 267/500
    +4/4 [==============================] - 0s 667us/step - loss: 1272.5583
    +Epoch 268/500
    +4/4 [==============================] - 0s 666us/step - loss: 1145.9428
    +Epoch 269/500
    +4/4 [==============================] - 0s 667us/step - loss: 1236.4832
    +Epoch 270/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1245.3220
    +Epoch 271/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1349.4604
    +Epoch 272/500
    +4/4 [==============================] - 0s 667us/step - loss: 1184.2619
    +Epoch 273/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1216.6105
    +Epoch 274/500
    +4/4 [==============================] - 0s 842us/step - loss: 1203.9672
    +Epoch 275/500
    +4/4 [==============================] - 0s 667us/step - loss: 1033.5132
    +Epoch 276/500
    +4/4 [==============================] - 0s 662us/step - loss: 1087.1704
    +Epoch 277/500
    +4/4 [==============================] - 0s 667us/step - loss: 1423.5913
    +Epoch 278/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1267.8113
    +Epoch 279/500
    +4/4 [==============================] - 0s 667us/step - loss: 1941.5821
    +Epoch 280/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1579.7110
    +Epoch 281/500
    +4/4 [==============================] - 0s 904us/step - loss: 1355.7920
    +Epoch 282/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1382.6457
    +Epoch 283/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1526.9205
    +Epoch 284/500
    +4/4 [==============================] - 0s 666us/step - loss: 1069.8764
    +Epoch 285/500
    +4/4 [==============================] - 0s 666us/step - loss: 1621.8895
    +Epoch 286/500
    +4/4 [==============================] - 0s 667us/step - loss: 1340.8351
    +Epoch 287/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1256.3913
    +Epoch 288/500
    +4/4 [==============================] - 0s 666us/step - loss: 1580.8658
    +Epoch 289/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1264.1625
    +Epoch 290/500
    +4/4 [==============================] - 0s 667us/step - loss: 1212.9664
    +Epoch 291/500
    +4/4 [==============================] - 0s 667us/step - loss: 1139.6072
    +
    +
    +
    Epoch 292/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1519.5740
    +Epoch 293/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1188.1373
    +Epoch 294/500
    +4/4 [==============================] - 0s 666us/step - loss: 1398.1069
    +Epoch 295/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1265.9901
    +Epoch 296/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1163.9531
    +Epoch 297/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1377.6982
    +Epoch 298/500
    +4/4 [==============================] - 0s 666us/step - loss: 1273.2436
    +Epoch 299/500
    +4/4 [==============================] - 0s 667us/step - loss: 1244.8719
    +Epoch 300/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1004.1714
    +Epoch 301/500
    +4/4 [==============================] - 0s 666us/step - loss: 1044.0988
    +Epoch 302/500
    +4/4 [==============================] - 0s 1000us/step - loss: 938.1519
    +Epoch 303/500
    +4/4 [==============================] - 0s 1ms/step - loss: 965.4555
    +Epoch 304/500
    +4/4 [==============================] - 0s 668us/step - loss: 1516.1876
    +Epoch 305/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1391.4293
    +Epoch 306/500
    +4/4 [==============================] - 0s 999us/step - loss: 1391.1598
    +Epoch 307/500
    +4/4 [==============================] - 0s 1000us/step - loss: 939.1058
    +Epoch 308/500
    +4/4 [==============================] - 0s 999us/step - loss: 1092.7569
    +Epoch 309/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1344.5620
    +Epoch 310/500
    +4/4 [==============================] - 0s 667us/step - loss: 1255.0189
    +Epoch 311/500
    +4/4 [==============================] - 0s 666us/step - loss: 910.9502
    +Epoch 312/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1007.2610
    +Epoch 313/500
    +4/4 [==============================] - 0s 667us/step - loss: 1185.6815
    +Epoch 314/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1057.8459
    +Epoch 315/500
    +4/4 [==============================] - 0s 666us/step - loss: 1487.4696
    +Epoch 316/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1164.8629
    +Epoch 317/500
    +4/4 [==============================] - 0s 667us/step - loss: 1468.9542
    +Epoch 318/500
    +4/4 [==============================] - 0s 666us/step - loss: 1071.7235
    +Epoch 319/500
    +4/4 [==============================] - 0s 666us/step - loss: 1395.2127
    +Epoch 320/500
    +4/4 [==============================] - 0s 999us/step - loss: 1003.7729
    +Epoch 321/500
    +4/4 [==============================] - 0s 667us/step - loss: 1226.2039
    +Epoch 322/500
    +4/4 [==============================] - 0s 667us/step - loss: 1290.8732
    +Epoch 323/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1381.0362
    +Epoch 324/500
    +4/4 [==============================] - 0s 667us/step - loss: 1157.8203
    +Epoch 325/500
    +4/4 [==============================] - 0s 666us/step - loss: 1094.6289
    +Epoch 326/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1047.1243
    +Epoch 327/500
    +4/4 [==============================] - 0s 1000us/step - loss: 991.2350
    +Epoch 328/500
    +4/4 [==============================] - 0s 666us/step - loss: 938.6988
    +Epoch 329/500
    +4/4 [==============================] - 0s 666us/step - loss: 1156.3823
    +Epoch 330/500
    +4/4 [==============================] - 0s 666us/step - loss: 1264.8072
    +Epoch 331/500
    +4/4 [==============================] - 0s 666us/step - loss: 1099.3680
    +Epoch 332/500
    +4/4 [==============================] - 0s 666us/step - loss: 1164.2901
    +Epoch 333/500
    +4/4 [==============================] - 0s 667us/step - loss: 883.5028
    +Epoch 334/500
    +4/4 [==============================] - 0s 965us/step - loss: 953.7701
    +Epoch 335/500
    +4/4 [==============================] - 0s 666us/step - loss: 1330.2329
    +Epoch 336/500
    +4/4 [==============================] - 0s 667us/step - loss: 828.4886
    +Epoch 337/500
    +4/4 [==============================] - 0s 667us/step - loss: 1146.8216
    +Epoch 338/500
    +4/4 [==============================] - 0s 666us/step - loss: 1016.6048
    +Epoch 339/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1191.9975
    +Epoch 340/500
    +4/4 [==============================] - 0s 667us/step - loss: 984.8603
    +Epoch 341/500
    +4/4 [==============================] - 0s 999us/step - loss: 1047.5341
    +Epoch 342/500
    +4/4 [==============================] - 0s 999us/step - loss: 1225.4716
    +Epoch 343/500
    +4/4 [==============================] - 0s 667us/step - loss: 880.2477
    +Epoch 344/500
    +4/4 [==============================] - 0s 999us/step - loss: 1049.2839
    +Epoch 345/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1180.1412
    +Epoch 346/500
    +4/4 [==============================] - 0s 667us/step - loss: 897.7965
    +Epoch 347/500
    +4/4 [==============================] - 0s 512us/step - loss: 1242.9396
    +Epoch 348/500
    +4/4 [==============================] - 0s 667us/step - loss: 1173.2106
    +Epoch 349/500
    +4/4 [==============================] - 0s 1000us/step - loss: 968.1974
    +Epoch 350/500
    +4/4 [==============================] - 0s 667us/step - loss: 1216.8987
    +Epoch 351/500
    +4/4 [==============================] - 0s 666us/step - loss: 959.5702
    +Epoch 352/500
    +4/4 [==============================] - 0s 667us/step - loss: 1296.4587
    +Epoch 353/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1065.4702
    +Epoch 354/500
    +4/4 [==============================] - 0s 666us/step - loss: 1212.9849
    +Epoch 355/500
    +4/4 [==============================] - 0s 667us/step - loss: 1016.3034
    +Epoch 356/500
    +4/4 [==============================] - 0s 666us/step - loss: 1025.4910
    +Epoch 357/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1270.0101
    +Epoch 358/500
    +4/4 [==============================] - 0s 999us/step - loss: 977.7403
    +Epoch 359/500
    +4/4 [==============================] - 0s 666us/step - loss: 1189.8224
    +Epoch 360/500
    +4/4 [==============================] - 0s 668us/step - loss: 1065.5023
    +Epoch 361/500
    +4/4 [==============================] - 0s 667us/step - loss: 1418.1719
    +Epoch 362/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1119.4534
    +Epoch 363/500
    +4/4 [==============================] - 0s 666us/step - loss: 1444.4327
    +Epoch 364/500
    +4/4 [==============================] - 0s 666us/step - loss: 1282.8326
    +Epoch 365/500
    +4/4 [==============================] - 0s 1000us/step - loss: 928.9790
    +Epoch 366/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1272.6000
    +Epoch 367/500
    +4/4 [==============================] - 0s 999us/step - loss: 1094.3775
    +Epoch 368/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1110.0791
    +Epoch 369/500
    +4/4 [==============================] - 0s 666us/step - loss: 705.3478
    +Epoch 370/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1464.6250
    +Epoch 371/500
    +4/4 [==============================] - 0s 667us/step - loss: 1688.6181
    +Epoch 372/500
    +4/4 [==============================] - 0s 666us/step - loss: 1651.3030
    +Epoch 373/500
    +4/4 [==============================] - 0s 667us/step - loss: 1691.5712
    +Epoch 374/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1621.3534
    +Epoch 375/500
    +4/4 [==============================] - 0s 777us/step - loss: 2408.2384
    +Epoch 376/500
    +4/4 [==============================] - 0s 666us/step - loss: 3733.4124
    +Epoch 377/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1505.6476
    +Epoch 378/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1598.0186
    +Epoch 379/500
    +4/4 [==============================] - 0s 667us/step - loss: 1866.2545
    +Epoch 380/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1172.3527
    +Epoch 381/500
    +4/4 [==============================] - 0s 999us/step - loss: 1259.1993
    +Epoch 382/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1208.4611
    +Epoch 383/500
    +4/4 [==============================] - 0s 666us/step - loss: 1189.5908
    +Epoch 384/500
    +4/4 [==============================] - 0s 1ms/step - loss: 912.0309
    +Epoch 385/500
    +4/4 [==============================] - 0s 667us/step - loss: 1439.9208
    +Epoch 386/500
    +4/4 [==============================] - 0s 667us/step - loss: 1056.7049
    +Epoch 387/500
    +4/4 [==============================] - 0s 1000us/step - loss: 911.3689
    +Epoch 388/500
    +
    +
    +
    4/4 [==============================] - 0s 666us/step - loss: 1159.8199
    +Epoch 389/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1180.8495
    +Epoch 390/500
    +4/4 [==============================] - 0s 1ms/step - loss: 975.2523
    +Epoch 391/500
    +4/4 [==============================] - 0s 666us/step - loss: 995.8115
    +Epoch 392/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1450.3545
    +Epoch 393/500
    +4/4 [==============================] - 0s 667us/step - loss: 1594.5259
    +Epoch 394/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1290.1917
    +Epoch 395/500
    +4/4 [==============================] - 0s 666us/step - loss: 1176.0412
    +Epoch 396/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1048.9418
    +Epoch 397/500
    +4/4 [==============================] - 0s 666us/step - loss: 1250.0147
    +Epoch 398/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1488.9932
    +Epoch 399/500
    +4/4 [==============================] - 0s 667us/step - loss: 1803.7824
    +Epoch 400/500
    +4/4 [==============================] - 0s 999us/step - loss: 1360.8532
    +Epoch 401/500
    +4/4 [==============================] - 0s 667us/step - loss: 1089.5126
    +Epoch 402/500
    +4/4 [==============================] - 0s 668us/step - loss: 1213.0010
    +Epoch 403/500
    +4/4 [==============================] - 0s 667us/step - loss: 1124.5730
    +Epoch 404/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1165.9524
    +Epoch 405/500
    +4/4 [==============================] - 0s 667us/step - loss: 912.0228
    +Epoch 406/500
    +4/4 [==============================] - 0s 667us/step - loss: 1311.9938
    +Epoch 407/500
    +4/4 [==============================] - 0s 666us/step - loss: 945.6192
    +Epoch 408/500
    +4/4 [==============================] - 0s 999us/step - loss: 1244.8549
    +Epoch 409/500
    +4/4 [==============================] - 0s 667us/step - loss: 1036.9820
    +Epoch 410/500
    +4/4 [==============================] - 0s 666us/step - loss: 815.7364
    +Epoch 411/500
    +4/4 [==============================] - 0s 1000us/step - loss: 991.5349
    +Epoch 412/500
    +4/4 [==============================] - 0s 667us/step - loss: 1097.8790
    +Epoch 413/500
    +4/4 [==============================] - 0s 1ms/step - loss: 949.3937
    +Epoch 414/500
    +4/4 [==============================] - 0s 667us/step - loss: 927.4123
    +Epoch 415/500
    +4/4 [==============================] - 0s 667us/step - loss: 957.3746
    +Epoch 416/500
    +4/4 [==============================] - 0s 667us/step - loss: 988.3683
    +Epoch 417/500
    +4/4 [==============================] - 0s 1000us/step - loss: 970.1810
    +Epoch 418/500
    +4/4 [==============================] - 0s 999us/step - loss: 913.8410
    +Epoch 419/500
    +4/4 [==============================] - 0s 666us/step - loss: 1143.9463
    +Epoch 420/500
    +4/4 [==============================] - 0s 667us/step - loss: 1168.9288
    +Epoch 421/500
    +4/4 [==============================] - 0s 1000us/step - loss: 906.7702
    +Epoch 422/500
    +4/4 [==============================] - 0s 666us/step - loss: 838.3699
    +Epoch 423/500
    +4/4 [==============================] - 0s 999us/step - loss: 1158.7747
    +Epoch 424/500
    +4/4 [==============================] - 0s 999us/step - loss: 1390.0820
    +Epoch 425/500
    +4/4 [==============================] - 0s 1ms/step - loss: 875.4423
    +Epoch 426/500
    +4/4 [==============================] - 0s 667us/step - loss: 1113.5223
    +Epoch 427/500
    +4/4 [==============================] - 0s 961us/step - loss: 1131.5903
    +Epoch 428/500
    +4/4 [==============================] - 0s 666us/step - loss: 1123.1616
    +Epoch 429/500
    +4/4 [==============================] - 0s 667us/step - loss: 1127.3328
    +Epoch 430/500
    +4/4 [==============================] - 0s 1ms/step - loss: 905.4634
    +Epoch 431/500
    +4/4 [==============================] - 0s 1ms/step - loss: 855.9978
    +Epoch 432/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1117.7617
    +Epoch 433/500
    +4/4 [==============================] - 0s 667us/step - loss: 1019.0109
    +Epoch 434/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1057.5680
    +Epoch 435/500
    +4/4 [==============================] - 0s 663us/step - loss: 1326.5362
    +Epoch 436/500
    +4/4 [==============================] - 0s 1ms/step - loss: 963.0330
    +Epoch 437/500
    +4/4 [==============================] - 0s 666us/step - loss: 1049.3125
    +Epoch 438/500
    +4/4 [==============================] - 0s 667us/step - loss: 1138.2411
    +Epoch 439/500
    +4/4 [==============================] - 0s 666us/step - loss: 839.2833
    +Epoch 440/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1306.5699
    +Epoch 441/500
    +4/4 [==============================] - 0s 666us/step - loss: 1143.6591
    +Epoch 442/500
    +4/4 [==============================] - 0s 667us/step - loss: 1073.5262
    +Epoch 443/500
    +4/4 [==============================] - 0s 666us/step - loss: 866.0777
    +Epoch 444/500
    +4/4 [==============================] - 0s 666us/step - loss: 1302.0317
    +Epoch 445/500
    +4/4 [==============================] - 0s 667us/step - loss: 899.5547
    +Epoch 446/500
    +4/4 [==============================] - 0s 999us/step - loss: 978.7943
    +Epoch 447/500
    +4/4 [==============================] - 0s 669us/step - loss: 1026.9669
    +Epoch 448/500
    +4/4 [==============================] - 0s 667us/step - loss: 1010.8402
    +Epoch 449/500
    +4/4 [==============================] - 0s 667us/step - loss: 955.0318
    +Epoch 450/500
    +4/4 [==============================] - 0s 667us/step - loss: 1275.5488
    +Epoch 451/500
    +4/4 [==============================] - 0s 999us/step - loss: 1163.0631
    +Epoch 452/500
    +4/4 [==============================] - 0s 667us/step - loss: 1841.6097
    +Epoch 453/500
    +4/4 [==============================] - 0s 666us/step - loss: 977.0580
    +Epoch 454/500
    +4/4 [==============================] - 0s 842us/step - loss: 1789.0697
    +Epoch 455/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1113.1211
    +Epoch 456/500
    +4/4 [==============================] - 0s 667us/step - loss: 1807.6406
    +Epoch 457/500
    +4/4 [==============================] - 0s 667us/step - loss: 1805.6507
    +Epoch 458/500
    +4/4 [==============================] - 0s 612us/step - loss: 3331.6302
    +Epoch 459/500
    +4/4 [==============================] - 0s 666us/step - loss: 6255.9072
    +Epoch 460/500
    +4/4 [==============================] - 0s 915us/step - loss: 8672.0254
    +Epoch 461/500
    +4/4 [==============================] - 0s 667us/step - loss: 8870.3285
    +Epoch 462/500
    +4/4 [==============================] - 0s 667us/step - loss: 7749.0257
    +Epoch 463/500
    +4/4 [==============================] - 0s 1000us/step - loss: 7348.0982
    +Epoch 464/500
    +4/4 [==============================] - 0s 1ms/step - loss: 6199.1880
    +Epoch 465/500
    +4/4 [==============================] - 0s 882us/step - loss: 5217.6583
    +Epoch 466/500
    +4/4 [==============================] - 0s 999us/step - loss: 4600.6962
    +Epoch 467/500
    +4/4 [==============================] - 0s 667us/step - loss: 5741.3516
    +Epoch 468/500
    +4/4 [==============================] - 0s 667us/step - loss: 4929.5384
    +Epoch 469/500
    +4/4 [==============================] - 0s 1000us/step - loss: 4287.6029
    +Epoch 470/500
    +4/4 [==============================] - 0s 1ms/step - loss: 5422.0908
    +Epoch 471/500
    +4/4 [==============================] - 0s 1000us/step - loss: 3907.0360
    +Epoch 472/500
    +4/4 [==============================] - 0s 666us/step - loss: 4102.9434
    +Epoch 473/500
    +4/4 [==============================] - 0s 667us/step - loss: 3502.8456
    +Epoch 474/500
    +4/4 [==============================] - 0s 666us/step - loss: 2059.5206
    +Epoch 475/500
    +4/4 [==============================] - 0s 1000us/step - loss: 2511.6811
    +Epoch 476/500
    +4/4 [==============================] - 0s 666us/step - loss: 1603.6337
    +Epoch 477/500
    +4/4 [==============================] - 0s 667us/step - loss: 2818.9461
    +Epoch 478/500
    +4/4 [==============================] - 0s 667us/step - loss: 2133.2921
    +Epoch 479/500
    +4/4 [==============================] - 0s 667us/step - loss: 4414.3746
    +Epoch 480/500
    +4/4 [==============================] - 0s 666us/step - loss: 3827.1083
    +Epoch 481/500
    +4/4 [==============================] - 0s 1000us/step - loss: 3461.7733
    +Epoch 482/500
    +4/4 [==============================] - 0s 1ms/step - loss: 2729.4938
    +Epoch 483/500
    +4/4 [==============================] - 0s 665us/step - loss: 2892.5532
    +Epoch 484/500
    +4/4 [==============================] - 0s 666us/step - loss: 2203.8427
    +
    +
    +
    Epoch 485/500
    +4/4 [==============================] - 0s 667us/step - loss: 2814.6213
    +Epoch 486/500
    +4/4 [==============================] - 0s 999us/step - loss: 2080.7165
    +Epoch 487/500
    +4/4 [==============================] - 0s 666us/step - loss: 1506.7127
    +Epoch 488/500
    +4/4 [==============================] - 0s 1000us/step - loss: 2203.7045
    +Epoch 489/500
    +4/4 [==============================] - 0s 666us/step - loss: 3197.7218
    +Epoch 490/500
    +4/4 [==============================] - 0s 1ms/step - loss: 2647.6803
    +Epoch 491/500
    +4/4 [==============================] - 0s 999us/step - loss: 1961.8947
    +Epoch 492/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1813.8470
    +Epoch 493/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1807.7760
    +Epoch 494/500
    +4/4 [==============================] - 0s 1ms/step - loss: 2004.5909
    +Epoch 495/500
    +4/4 [==============================] - 0s 667us/step - loss: 1356.2910
    +Epoch 496/500
    +4/4 [==============================] - 0s 668us/step - loss: 1364.6932
    +Epoch 497/500
    +4/4 [==============================] - 0s 1ms/step - loss: 1599.7519
    +Epoch 498/500
    +4/4 [==============================] - 0s 667us/step - loss: 1018.7737
    +Epoch 499/500
    +4/4 [==============================] - 0s 1000us/step - loss: 1813.0761
    +Epoch 500/500
    +4/4 [==============================] - 0s 666us/step - loss: 1800.3698
    +
    +
    +
    <tensorflow.python.keras.callbacks.History at 0x214942f4c10>
    +
    +
    +
    +
    +
    +
    +
    x3_fit = np.linspace(-5, 5, 10000)
    +y3_fit = modell3.predict(x2_fit)
    +plt.plot(x2, y2, linestyle = ' ', marker = 'o', label = 'data')
    +plt.plot(x3_fit, y3_fit, label = 'regresjonskurve')
    +plt.legend()
    +plt.savefig("polynomreg2.pdf")
    +
    +
    +
    +
    +../../_images/2e71d882b6a2fd246fbecf8ffdbbe14c91ef236491184f8387ed59eaeefb1e4a.png +
    +
    +
    +
    +

    Eksempel#

    +
    +

    Lager datasett#

    +
    +
    +
    train_labels = []
    +train_samples = []
    +
    +# 5 % young did not experience side-effects of a drug, 5 % of older did.
    +for i in range(50):
    +    random_younger = np.random.randint(13,64)
    +    train_samples.append(random_younger)
    +    train_labels.append(1) # side-effects
    +    
    +    random_older = np.random.randint(65, 100)
    +    train_samples.append(random_older)
    +    train_labels.append(0) # not side-effects
    +    
    +for i in range(1000):
    +    random_younger = np.random.randint(13,64)
    +    train_samples.append(random_younger)
    +    train_labels.append(0) # not side-effects
    +    
    +    random_older = np.random.randint(65, 100)
    +    train_samples.append(random_older)
    +    train_labels.append(1) # side-effects
    +
    +
    +
    +
    +
    +
    +
    train_labels = np.array(train_labels)
    +train_samples = np.array(train_samples)
    +train_labels, train_samples = shuffle(train_labels, train_samples)
    +
    +
    +
    +
    +
    +
    +
    scaler = MinMaxScaler(feature_range=(0,1)) # Normaliserer verdiene mellom 0 og 1
    +scaled_train_samples = scaler.fit_transform(train_samples.reshape(-1,1)) # 1D data to 2D
    +
    +
    +
    +
    +
    +
    +

    Bygg modell#

    +
    +
    +
    """
    +#GPU-akselerasjon
    +physical_devices = tf.config.experimental.list_physical_devices('GPU')
    +print("Num GPUs Available", len(physical_devices))
    +tf.config.experimental.set_memory_growth(physical_devices[0], True)
    +"""
    +None
    +
    +
    +
    +
    +
    +
    +
    model = Sequential([
    +    Dense(units = 16, input_shape = (1,), activation = 'relu'),
    +    Dense(units = 32, activation = 'relu'),
    +    Dense(units = 2, activation = 'softmax')
    +])
    +
    +# Dense = dense/fully connected layer.
    +# Activation function: Transformation of input to output.
    +# list of layers. First is a hidden layer. Last layer is output layer. units 16 and 32 is somewhat arbitrary.
    +# softmax gives probabilities.
    +
    +
    +
    +
    +
    +
    +
    model.summary()
    +
    +
    +
    +
    +
    Model: "sequential_9"
    +_________________________________________________________________
    +Layer (type)                 Output Shape              Param #   
    +=================================================================
    +dense_21 (Dense)             (None, 16)                32        
    +_________________________________________________________________
    +dense_22 (Dense)             (None, 32)                544       
    +_________________________________________________________________
    +dense_23 (Dense)             (None, 2)                 66        
    +=================================================================
    +Total params: 642
    +Trainable params: 642
    +Non-trainable params: 0
    +_________________________________________________________________
    +
    +
    +
    +
    +
    +
    +
    model.compile(optimizer=Adam(learning_rate=0.0001), loss='sparse_categorical_crossentropy', metrics=['accuracy'])
    +
    +
    +
    +
    +
    +
    +
    model.fit(x=scaled_train_samples, y=train_labels, batch_size=10, epochs=30, shuffle=True, verbose=2)
    +#epochs = training iterations. Batch size = training sample size. Verbose: 0, 1 or 2 (level of output)
    +
    +
    +
    +
    +
    Epoch 1/30
    +210/210 - 0s - loss: 0.6871 - accuracy: 0.5157
    +Epoch 2/30
    +210/210 - 0s - loss: 0.6470 - accuracy: 0.6371
    +Epoch 3/30
    +210/210 - 0s - loss: 0.6139 - accuracy: 0.6857
    +Epoch 4/30
    +210/210 - 0s - loss: 0.5794 - accuracy: 0.7381
    +Epoch 5/30
    +210/210 - 0s - loss: 0.5439 - accuracy: 0.7767
    +Epoch 6/30
    +210/210 - 0s - loss: 0.5107 - accuracy: 0.8081
    +Epoch 7/30
    +210/210 - 0s - loss: 0.4784 - accuracy: 0.8371
    +Epoch 8/30
    +210/210 - 0s - loss: 0.4481 - accuracy: 0.8533
    +Epoch 9/30
    +210/210 - 0s - loss: 0.4208 - accuracy: 0.8719
    +Epoch 10/30
    +210/210 - 0s - loss: 0.3961 - accuracy: 0.8824
    +Epoch 11/30
    +210/210 - 0s - loss: 0.3750 - accuracy: 0.8967
    +Epoch 12/30
    +210/210 - 0s - loss: 0.3565 - accuracy: 0.9062
    +Epoch 13/30
    +210/210 - 0s - loss: 0.3408 - accuracy: 0.9138
    +Epoch 14/30
    +210/210 - 0s - loss: 0.3279 - accuracy: 0.9195
    +Epoch 15/30
    +210/210 - 0s - loss: 0.3170 - accuracy: 0.9214
    +Epoch 16/30
    +210/210 - 0s - loss: 0.3084 - accuracy: 0.9229
    +Epoch 17/30
    +210/210 - 0s - loss: 0.3007 - accuracy: 0.9257
    +Epoch 18/30
    +210/210 - 0s - loss: 0.2941 - accuracy: 0.9319
    +Epoch 19/30
    +210/210 - 0s - loss: 0.2890 - accuracy: 0.9300
    +Epoch 20/30
    +210/210 - 0s - loss: 0.2844 - accuracy: 0.9319
    +Epoch 21/30
    +210/210 - 0s - loss: 0.2805 - accuracy: 0.9319
    +Epoch 22/30
    +210/210 - 0s - loss: 0.2773 - accuracy: 0.9400
    +Epoch 23/30
    +210/210 - 0s - loss: 0.2746 - accuracy: 0.9367
    +Epoch 24/30
    +210/210 - 0s - loss: 0.2724 - accuracy: 0.9357
    +Epoch 25/30
    +210/210 - 0s - loss: 0.2702 - accuracy: 0.9357
    +Epoch 26/30
    +210/210 - 0s - loss: 0.2683 - accuracy: 0.9429
    +Epoch 27/30
    +210/210 - 0s - loss: 0.2668 - accuracy: 0.9357
    +Epoch 28/30
    +210/210 - 0s - loss: 0.2654 - accuracy: 0.9381
    +Epoch 29/30
    +210/210 - 0s - loss: 0.2641 - accuracy: 0.9395
    +Epoch 30/30
    +210/210 - 0s - loss: 0.2628 - accuracy: 0.9452
    +
    +
    +
    <tensorflow.python.keras.callbacks.History at 0x214956a7cd0>
    +
    +
    +
    +
    +
    +
    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + +
    + + + +
    + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/ekstra/likninger.html b/docs/ekstra/likninger.html new file mode 100644 index 00000000..9c3289bb --- /dev/null +++ b/docs/ekstra/likninger.html @@ -0,0 +1,1083 @@ + + + + + + + + + 7. Likninger og nullpunkter — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    7. Likninger og nullpunkter

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    + +
    + +
    +

    7. Likninger og nullpunkter#

    +

    Likninger kan løse mange problemer. Hvis vi for eksempel skal finne ut hvor to funksjoner skjærer hverandre, kan vi løse likningen \(f(x) = g(x)\) som et nullpunktsproblem: \(f(x) - g(x) = 0\).

    +

    Vi tar utgangspunkt i følgende likninger:

    +
    +\[c_1(t) = e^{-t} + t + 5\]
    +
    +\[c_2(t) = \ln(0.006t + 1) + t^{0.3} + 10\]
    +

    For å finne ut ved hvilken tid de to produktene har lik konsentrasjon, kan vi løse likningen \(c_1(t) = c_2(t)\). Formulert som et nullpunktsproblem får vi:

    +
    +\[e^{-t} + t + 5 - \ln(0.006t + 1) - t^{0.3} - 10 = 0\]
    +

    Dette er en likning som ikke er analytisk løsbar. Her skal vi se på metoder for å finne nullpunktene til funksjoner. Dette er en strategi som også kan brukes til å løse likninger.

    +
    +

    Læringsutbytte

    +

    Etter å ha arbeidet med dette temaet, skal du kunne:

    +
      +
    1. Forklare den teoretisk bakgrunnen for halveringsmetoden og Newtons metode.

    2. +
    3. Implementere halveringsmetoden og Newtons metode som Python-funksjoner.

    4. +
    5. Drøfte feil og begrensninger ved metodene.

    6. +
    7. Bruke metodene til å finne nullpunkter og løse likninger.

    8. +
    +
    +
    +

    Halveringsmetoden#

    +
    +
    +
    +
    +

    Når du har sett videoen, kan du gjøre følgende oppgave for å sjekke om du forstår innholdet:

    +
    +

    Underveisoppgave

    +

    Bruk halveringsmetoden og vis at løsningene til likningen \(x^5 = 5x^3 + 3\) er \(x_1 \approx -2.169, x_2 \approx -0.894\) og \(x_3 \approx 2.291\).

    +
    + +
    +
    +

    Newtons metode#

    +
    +
    +
    +
    +

    Når du har sett videoen, kan du gjøre følgende oppgave for å sjekke om du forstår innholdet:

    +
    +

    Underveisoppgave

    +

    Implementer Newtons metode som en Python-funksjon med docstring, toleranse, maks antall iterasjoner og relevant feilhåndtering dersom vi når maks iterasjoner uten å nå gitt toleranse. Test funksjonen på likningen \(x^2 = x^3 - 4\).

    +
    +
    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + +
    + +
    + +
    + On this page +
    + +
    + +
    + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/ekstra/likninger_oppgave1.html b/docs/ekstra/likninger_oppgave1.html new file mode 100644 index 00000000..3b6ae574 --- /dev/null +++ b/docs/ekstra/likninger_oppgave1.html @@ -0,0 +1,1063 @@ + + + + + + + + + Numerisk løsing av likninger — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Numerisk løsing av likninger

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    + +
    + +
    +

    Numerisk løsing av likninger#

    +

    Gå sammen i grupper på ca. fire personer og diskuter oppgavene nedenfor.

    +
    +

    Oppgave 1#

    +

    a) Diskuter følgende spørsmål parvis i gruppa:

    +
      +
    1. Hva er en likning?

    2. +
    3. Hva betyr det å løse en likning?

    4. +
    5. Hva er felles for alle nullpunkter?

    6. +
    +

    b) Se på grafen til funksjonen f(x) nedenfor. Du kjenner ikke funksjonsuttrykket til denne grafen. Hvilke av følgende intervaller finnes nullpunktet i?

    +

    [-1, 0.5], [-1, 2], [0, 1], [0.5, 1], [1, 2], [-1, 2]

    +graf +

    c) Hva er forskjellen mellom funksjonsverdien til funksjonen i randpunktene på de intervallene som inneholder nullpunktene og de som ikke gjør det? Er det noen systematisk sammenheng her?

    +

    d) Ta utgangspunkt i intervallet [0, 2]. Hvordan kan du justere dette intervallet systematisk for å komme nærmere og nærmere nullpunktet? Prøv å anvende generaliseringen om funksjonsverdiene ovenfor.

    +

    e) Prøv å formulere en enkel systematisk algoritme for å finne nullpunktet gitt et intervall.

    +

    f) Dere får utdelt noen grafer. En på gruppa får se grafene. Denne personen kan kun oppgi funksjonsverdier, mens de andre kan teste algoritmen dere lagde ovenfor ved å systematisk oppgi ulike x-verdier. Fungerte metoden på alle grafene?

    +
    +
    +

    Oppgave 2#

    +

    Følgende funksjon blei gitt på eksamen i 2009:

    +
    +\[f(x)=2\ln⁡\left((x^4+4)-\frac{1}{2}x\right)\]
    +

    a) Prøv å løse likninga \(f(x) = 0\) for hånd. Hvor langt kommer du med det? Dette kaller vi analytisk løsning av likninger, og vi ender opp med et eksakt svar hvis vi får det til.

    +

    b) Tegn grafen for funksjonen ovenfor og bruk metoden dere formulerte i oppgave 1 til å finne en tilnærma løsning. Dette kaller vi numerisk løsning av likninger.

    +
    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + +
    + +
    + +
    + On this page +
    + +
    + +
    + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git "a/docs/ekstra/maskinl\303\246ring_iris.html" "b/docs/ekstra/maskinl\303\246ring_iris.html" new file mode 100644 index 00000000..df58e090 --- /dev/null +++ "b/docs/ekstra/maskinl\303\246ring_iris.html" @@ -0,0 +1,3040 @@ + + + + + + + + + Maskinlæring — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + + + +
    + +
    +

    Maskinlæring#

    +
    +
    +
    import pandas as pd
    +import numpy as np
    +import seaborn as sns
    +import matplotlib.pyplot as plt
    +
    +# Lese dataene
    +iris = pd.read_csv("Datafiler/iris.csv")
    +
    +
    +
    +
    +
    +

    Utforsking av datasettet#

    +
    +
    +
    # Skriver ut fem første linjer
    +iris.head()
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IdSepalLengthCmSepalWidthCmPetalLengthCmPetalWidthCmSpecies
    015.13.51.40.2Iris-setosa
    124.93.01.40.2Iris-setosa
    234.73.21.30.2Iris-setosa
    344.63.11.50.2Iris-setosa
    455.03.61.40.2Iris-setosa
    +
    +
    +
    +
    +

    Visualiseringer#

    +

    La oss først visualisere noen sammenhenger som kan gi oss noen hypoteser.

    +
    +
    +
    #sns.regplot(data=iris, x='SepalLengthCm',y="PetalLengthCm")
    +#sns.histplot(data=iris, x="PetalLengthCm")
    +#sns.jointplot(data=iris, x="SepalLengthCm", y="PetalLengthCm", hue="Species")
    +sns.violinplot(data=iris, x='Species', y="PetalLengthCm")
    +
    +
    +
    +
    +
    <AxesSubplot:xlabel='Species', ylabel='PetalLengthCm'>
    +
    +
    +../../_images/82b0112ac0d65af2c6f948ee1cb8bcf960abb3ceaa33fba5b7b19d2774da4ade.png +
    +
    +
    +
    +
    sns.pairplot(data=iris, hue="Species")
    +
    +
    +
    +
    +
    <seaborn.axisgrid.PairGrid at 0x232e0b53af0>
    +
    +
    +../../_images/daf942dd43adcf70ff832d44f3a1db5b4b7da5be1cdc3eb604efda45203db813.png +
    +
    +
    +
    +
    iris.describe()
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IdSepalLengthCmSepalWidthCmPetalLengthCmPetalWidthCm
    count150.000000150.000000150.000000150.000000150.000000
    mean75.5000005.8433333.0540003.7586671.198667
    std43.4453680.8280660.4335941.7644200.763161
    min1.0000004.3000002.0000001.0000000.100000
    25%38.2500005.1000002.8000001.6000000.300000
    50%75.5000005.8000003.0000004.3500001.300000
    75%112.7500006.4000003.3000005.1000001.800000
    max150.0000007.9000004.4000006.9000002.500000
    +
    +
    +
    +
    +

    Maskinlæring#

    +

    Plottene ovenfor kan si oss noe om at beger- og kronbladlengden for ulike irisblomstarter er forskjellig. Vi skal nå lage en modell som kan forutsi hvilken art vi har med å gjøre gitt ulike bredder og lengder av kron- og begerblad. Vi velger ut hvilke data vi ønsker å bruke som kriterium for arten, spesifiserer kategorien “species” som målkategorien vår:

    +
    +
    +
    from sklearn.model_selection import train_test_split, cross_val_score
    +from sklearn import tree
    +from sklearn.metrics import accuracy_score, confusion_matrix
    +
    +
    +
    +
    +
    +
    +
    kriterier = iris[['SepalLengthCm', 'SepalWidthCm', 'PetalLengthCm', 'PetalWidthCm']] # features
    +kategorier = iris['Species'] # labels
    +
    +
    +
    +
    +

    I maskinlæring er det viktig at modellen vår klarer å forutsi data som kommer utenfra datasettet vi trener modellen med. Derfor deler vi ofte opp dataene i et treningssett og et testsett. Treningssettet bruker vi til å trene modellen, testsettet til å teste og evaluere modellen i etterkant. Vi blander ikke disse dataene. Vi kan generere slike data med funksjonen train_test_split(). Her bruker vi 80 % av dataene til trening og 20 % til testing. Du bør bruke minst 70 % av dataene dine til trening.

    +
    +
    +
    testandel = 0.2 # Andel brukt til testing
    +ml_data = train_test_split(kriterier, kategorier, test_size=testandel, random_state=42)
    +
    +treningskriterier = ml_data[0]
    +testkriterier = ml_data[1]
    +treningskategorier = ml_data[2]
    +testkategorier = ml_data[3]
    +
    +
    +
    +
    +

    Nå kan vi lage modellen vår. Vi bruker en algoritme som heter Decision Tree Classifier. Det er basert på sammensatte og forgreinede valgtrær, der alle kombinasjoner av kriterier blir utforsket. Betingede sannsynligheter for ulike hendelser blir beregnet, og de mest sannsynlige utfallene blir framhevet basert på kombinasjonen av kriteriene. Først trener vi modellen:

    +
    +
    +
    modell = tree.DecisionTreeClassifier()
    +modell.fit(treningskriterier, treningskategorier)
    +
    +
    +
    +
    +
    DecisionTreeClassifier()
    +
    +
    +
    +
    +

    Det var det - da har vi en modell! Den ligger nå i et objekt som vi har kalt modell. La oss sjekke hvordan modellen takler testsettet vårt.

    +
    +
    +

    Test og validering av modellen#

    +
    +
    +
    modellkategorier_forutsett = modell.predict(testkriterier)
    +accuracy_score(testkategorier, modellkategorier_forutsett)
    +
    +
    +
    +
    +
    1.0
    +
    +
    +
    +
    +

    For å få bedre oversikt over hva modellen forutsier riktig og hva den feiler på, kan vi konstruere en såkalt “Confusion Matrix” (forvirringsmatrise/feilmatrise):

    +
    +
    +
    cm = confusion_matrix(modellkategorier_forutsett, testkategorier)
    +
    +import seaborn as sns
    +sns.heatmap(cm, annot=True, cmap='viridis')
    +plt.title("Forvirringsmatrise")
    +plt.xlabel("Predikerte verdier")
    +plt.ylabel("Sanne verdier")
    +plt.show()
    +
    +
    +
    +
    +../../_images/695988a6d8dcb461f5535c63df103f5b0b4bec26e1c47da232dc7a779f2b5a8c.png +
    +
    +
    +
    +
    iris.head()
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IdSepalLengthCmSepalWidthCmPetalLengthCmPetalWidthCmSpecies
    015.13.51.40.2Iris-setosa
    124.93.01.40.2Iris-setosa
    234.73.21.30.2Iris-setosa
    344.63.11.50.2Iris-setosa
    455.03.61.40.2Iris-setosa
    +
    +
    +

    La oss helt til sist visualisere modellen vår.

    +
    +
    +
    plt.figure(figsize=(10,10))
    +tree.plot_tree(modell,feature_names=iris.columns, class_names=['Iris-setosa', 'Iris-versicolor', 'Iris-virginica'], filled=True,label=None) 
    +None
    +
    +
    +
    +
    +../../_images/06f0f3a8df685a4acaa1272bdaaa2c21c8d96ddeb4900849eaec8a88afc192de.png +
    +
    +
    +
    +

    KNN-modell#

    +

    K-nearest neighbor.

    +
    +
    +
    from sklearn import neighbors, metrics
    +
    +
    +
    +
    +
    +
    +
    knn = neighbors.KNeighborsClassifier(n_neighbors=20, weights='uniform')
    +
    +
    +
    +
    +
    +
    +
    knn.fit(treningskriterier, treningskategorier) # features, labels
    +
    +
    +
    +
    +
    KNeighborsClassifier(n_neighbors=20)
    +
    +
    +
    +
    +
    +
    +
    prediksjon_knn = knn.predict(testkriterier)
    +presisjon_knn = metrics.accuracy_score(testkategorier, prediksjon_knn)
    +print("Presisjon: ", presisjon_knn)
    +
    +
    +
    +
    +
    Presisjon:  1.0
    +
    +
    +
    +
    +
    +
    +
    # Bruker modellen på en tilfeldig valgt blomst
    +t1 = [[6.1, 2.8, 4.9, 1.1]]
    +#t2 = np.random.uniform(0,15,(100,4))*np.ones([100,4])
    +prediksjon = knn.predict(t1)
    +print(prediksjon)
    +
    +
    +
    +
    +
    ['Iris-versicolor']
    +
    +
    +
    +
    +
    +
    +

    SVM-modell#

    +

    Support vector machine-modell.

    +
    +
    +
    from sklearn import svm
    +
    +
    +
    +
    +
    +
    +
    svm_modell = svm.SVC()
    +svm_modell.fit(treningskriterier, treningskategorier)
    +
    +
    +
    +
    +
    SVC()
    +
    +
    +
    +
    +
    +
    +
    prediksjon_svm = svm_modell.predict(testkriterier)
    +presisjon_svm = accuracy_score(testkategorier, prediksjon_svm)
    +print("Presisjon: ", presisjon_svm)
    +
    +
    +
    +
    +
    Presisjon:  1.0
    +
    +
    +
    +
    +
    +
    +

    K-means cluster#

    +
    +
    +
    from sklearn.cluster import KMeans
    +from sklearn.preprocessing import scale
    +from sklearn.datasets import load_breast_cancer
    +
    +
    +
    +
    +
    +
    +
    #bc = load_breast_cancer()
    +#x = bc.data
    +#y = bc.target
    +bc = pd.read_csv("Datafiler/brystkreft.csv")
    +bc.head()
    +bc.pop("id")
    +
    +x = bc[['radius_mean', 'texture_mean', 'perimeter_mean',
    +       'area_mean', 'smoothness_mean', 'compactness_mean', 'concavity_mean',
    +       'concave points_mean', 'symmetry_mean', 'fractal_dimension_mean',
    +       'radius_se', 'texture_se', 'perimeter_se', 'area_se', 'smoothness_se',
    +       'compactness_se', 'concavity_se', 'concave points_se', 'symmetry_se',
    +       'fractal_dimension_se', 'radius_worst', 'texture_worst',
    +       'perimeter_worst', 'area_worst', 'smoothness_worst',
    +       'compactness_worst', 'concavity_worst', 'concave points_worst',
    +       'symmetry_worst', 'fractal_dimension_worst']]
    +
    +diagnose = {"M": 0, "B": 1}
    +bc['diagnosis'] = bc['diagnosis'].map(diagnose)
    +
    +y = bc['diagnosis']
    +
    +
    +
    +
    +
    +
    +
    x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=testandel)
    +
    +modell_kmeans = KMeans(n_clusters=2, random_state=42)
    +
    +
    +
    +
    +
    +
    +
    modell_kmeans.fit(x_train)
    +
    +
    +
    +
    +
    KMeans(n_clusters=2, random_state=42)
    +
    +
    +
    +
    +
    +
    +
    prediksjon_kmeans = modell_kmeans.predict(x_test)
    +labels = modell_kmeans.labels_
    +presisjon_kmeans = accuracy_score(y_test, prediksjon_kmeans)
    +print("Presisjon: ", presisjon_kmeans)
    +
    +
    +
    +
    +
    Presisjon:  0.8596491228070176
    +
    +
    +
    +
    +
    +
    +

    Regresjonsmodeller#

    +
    +
    +
    from sklearn import linear_model
    +
    +
    +
    +
    +
    +
    +
    kriterier_lr = iris[['SepalLengthCm']]# features
    +kategorier_lr = iris['PetalLengthCm'] # labels
    +
    +ml_data_lr = train_test_split(kriterier_lr, kategorier_lr, test_size=testandel, random_state=42)
    +
    +treningskriterier_lr = ml_data_lr[0]
    +testkriterier_lr = ml_data_lr[1]
    +treningskategorier_lr = ml_data_lr[2]
    +testkategorier_lr = ml_data_lr[3]
    +
    +
    +
    +
    +
    +
    +
    l_reg = linear_model.LinearRegression()
    +linreg_modell = l_reg.fit(treningskriterier_lr, treningskategorier_lr)
    +
    +
    +
    +
    +
    +
    +
    prediksjon_linreg = linreg_modell.predict(testkriterier_lr)
    +R2_verdi = l_reg.score(kriterier_lr, kategorier_lr)
    +stigning = l_reg.coef_
    +skjæring = l_reg.intercept_
    +print("Presisjon: ", R2_verdi)
    +
    +
    +
    +
    +
    Presisjon:  0.7595012769586207
    +
    +
    +
    +
    +
    +
    +
    +

    Nevrale nettverk#

    +
    +
    +
    sns.pairplot(data=iris, hue='Species')
    +
    +
    +
    +
    +
    <seaborn.axisgrid.PairGrid at 0x2330474a4c0>
    +
    +
    +../../_images/daf942dd43adcf70ff832d44f3a1db5b4b7da5be1cdc3eb604efda45203db813.png +
    +
    +
    +
    +
    import tensorflow as tf
    +from tensorflow.keras.models import Sequential
    +from tensorflow.keras.layers import Activation, Dense
    +from tensorflow.keras.optimizers import Adam
    +
    +
    +
    +
    +
    +
    +
    modell = Sequential()
    +modell.add(Dense(units=1, activation='linear', input_shape=[1,]))
    +
    +
    +
    +
    +
    +
    +
    læringsrate = 0.1  # Hvor fort modellen skal lære
    +modell.compile(optimizer=Adam(læringsrate), loss = 'mse') # Optimizer = metode for å minimere loss
    +modell.summary()
    +
    +
    +
    +
    +
    Model: "sequential"
    +_________________________________________________________________
    +Layer (type)                 Output Shape              Param #   
    +=================================================================
    +dense (Dense)                (None, 1)                 2         
    +=================================================================
    +Total params: 2
    +Trainable params: 2
    +Non-trainable params: 0
    +_________________________________________________________________
    +
    +
    +
    +
    +
    +
    +
    iris
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IdSepalLengthCmSepalWidthCmPetalLengthCmPetalWidthCmSpecies
    015.13.51.40.2Iris-setosa
    124.93.01.40.2Iris-setosa
    234.73.21.30.2Iris-setosa
    344.63.11.50.2Iris-setosa
    455.03.61.40.2Iris-setosa
    .....................
    1451466.73.05.22.3Iris-virginica
    1461476.32.55.01.9Iris-virginica
    1471486.53.05.22.0Iris-virginica
    1481496.23.45.42.3Iris-virginica
    1491505.93.05.11.8Iris-virginica
    +

    150 rows × 6 columns

    +
    +
    +
    +
    +
    x = iris["PetalLengthCm"]
    +y = iris["PetalWidthCm"]
    +modell.fit(x, y, epochs = 500, validation_split=0.2)
    +
    +
    +
    +
    +
    Epoch 1/500
    +4/4 [==============================] - 1s 259ms/step - loss: 12.7000 - val_loss: 8.7175
    +Epoch 2/500
    +4/4 [==============================] - 0s 9ms/step - loss: 3.1857 - val_loss: 0.5209
    +Epoch 3/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.1834 - val_loss: 1.0541
    +Epoch 4/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.8373 - val_loss: 2.6848
    +Epoch 5/500
    +4/4 [==============================] - 0s 9ms/step - loss: 1.4279 - val_loss: 1.9636
    +Epoch 6/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.8666 - val_loss: 0.5318
    +Epoch 7/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.2094 - val_loss: 0.1158
    +Epoch 8/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0971 - val_loss: 0.4665
    +Epoch 9/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.2577 - val_loss: 0.5435
    +Epoch 10/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.2737 - val_loss: 0.2443
    +Epoch 11/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.1090 - val_loss: 0.0997
    +Epoch 12/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0441 - val_loss: 0.1675
    +Epoch 13/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0760 - val_loss: 0.2009
    +Epoch 14/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0849 - val_loss: 0.1378
    +Epoch 15/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0466 - val_loss: 0.0984
    +Epoch 16/500
    +4/4 [==============================] - 0s 10ms/step - loss: 0.0404 - val_loss: 0.1018
    +Epoch 17/500
    +4/4 [==============================] - 0s 10ms/step - loss: 0.0520 - val_loss: 0.1000
    +Epoch 18/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0455 - val_loss: 0.0962
    +Epoch 19/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0332 - val_loss: 0.1050
    +Epoch 20/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0349 - val_loss: 0.1147
    +Epoch 21/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0393 - val_loss: 0.1114
    +Epoch 22/500
    +4/4 [==============================] - 0s 10ms/step - loss: 0.0348 - val_loss: 0.1047
    +Epoch 23/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0293 - val_loss: 0.0999
    +Epoch 24/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0255 - val_loss: 0.1002
    +Epoch 25/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0308 - val_loss: 0.1035
    +Epoch 26/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0315 - val_loss: 0.1070
    +Epoch 27/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0336 - val_loss: 0.1058
    +Epoch 28/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0256 - val_loss: 0.1045
    +Epoch 29/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0292 - val_loss: 0.1058
    +Epoch 30/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0249 - val_loss: 0.1052
    +Epoch 31/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0262 - val_loss: 0.1051
    +Epoch 32/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0306 - val_loss: 0.1046
    +Epoch 33/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0248 - val_loss: 0.1072
    +Epoch 34/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0240 - val_loss: 0.1103
    +Epoch 35/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0265 - val_loss: 0.1100
    +Epoch 36/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0250 - val_loss: 0.1072
    +Epoch 37/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0247 - val_loss: 0.1079
    +Epoch 38/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0270 - val_loss: 0.1061
    +Epoch 39/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0303 - val_loss: 0.1092
    +Epoch 40/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0267 - val_loss: 0.1138
    +Epoch 41/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0253 - val_loss: 0.1132
    +Epoch 42/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0235 - val_loss: 0.1082
    +Epoch 43/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0276 - val_loss: 0.1061
    +Epoch 44/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0221 - val_loss: 0.1091
    +Epoch 45/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0316 - val_loss: 0.1087
    +Epoch 46/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0304 - val_loss: 0.1066
    +Epoch 47/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0271 - val_loss: 0.1113
    +Epoch 48/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0272 - val_loss: 0.1131
    +Epoch 49/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0315 - val_loss: 0.1116
    +Epoch 50/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0295 - val_loss: 0.1113
    +Epoch 51/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0266 - val_loss: 0.1089
    +Epoch 52/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0255 - val_loss: 0.1092
    +Epoch 53/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0269 - val_loss: 0.1063
    +Epoch 54/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0285 - val_loss: 0.1062
    +Epoch 55/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0292 - val_loss: 0.1114
    +Epoch 56/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0311 - val_loss: 0.1105
    +Epoch 57/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0239 - val_loss: 0.1142
    +Epoch 58/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0252 - val_loss: 0.1102
    +Epoch 59/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0275 - val_loss: 0.1048
    +Epoch 60/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0273 - val_loss: 0.1096
    +Epoch 61/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0264 - val_loss: 0.1110
    +Epoch 62/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0318 - val_loss: 0.1104
    +Epoch 63/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0286 - val_loss: 0.1116
    +Epoch 64/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0269 - val_loss: 0.1103
    +Epoch 65/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0282 - val_loss: 0.1082
    +Epoch 66/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0268 - val_loss: 0.1083
    +Epoch 67/500
    +4/4 [==============================] - 0s 10ms/step - loss: 0.0259 - val_loss: 0.1088
    +Epoch 68/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0267 - val_loss: 0.1095
    +Epoch 69/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0292 - val_loss: 0.1106
    +Epoch 70/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0234 - val_loss: 0.1105
    +Epoch 71/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0239 - val_loss: 0.1131
    +Epoch 72/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0281 - val_loss: 0.1076
    +Epoch 73/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0269 - val_loss: 0.1011
    +Epoch 74/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0277 - val_loss: 0.1113
    +Epoch 75/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0283 - val_loss: 0.1198
    +Epoch 76/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0251 - val_loss: 0.1097
    +Epoch 77/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0315 - val_loss: 0.1015
    +Epoch 78/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0267 - val_loss: 0.1093
    +Epoch 79/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0278 - val_loss: 0.1162
    +Epoch 80/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0248 - val_loss: 0.1090
    +Epoch 81/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0246 - val_loss: 0.1065
    +Epoch 82/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0234 - val_loss: 0.1104
    +Epoch 83/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0277 - val_loss: 0.1113
    +Epoch 84/500
    +
    +
    +
    4/4 [==============================] - 0s 8ms/step - loss: 0.0243 - val_loss: 0.1079
    +Epoch 85/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0214 - val_loss: 0.1102
    +Epoch 86/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0317 - val_loss: 0.1092
    +Epoch 87/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0297 - val_loss: 0.1146
    +Epoch 88/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0259 - val_loss: 0.1137
    +Epoch 89/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0290 - val_loss: 0.1072
    +Epoch 90/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0266 - val_loss: 0.1058
    +Epoch 91/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0239 - val_loss: 0.1194
    +Epoch 92/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0253 - val_loss: 0.1033
    +Epoch 93/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0267 - val_loss: 0.1026
    +Epoch 94/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0295 - val_loss: 0.1143
    +Epoch 95/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0316 - val_loss: 0.1176
    +Epoch 96/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0237 - val_loss: 0.1173
    +Epoch 97/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0307 - val_loss: 0.1018
    +Epoch 98/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0264 - val_loss: 0.1090
    +Epoch 99/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0231 - val_loss: 0.1116
    +Epoch 100/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0272 - val_loss: 0.1094
    +Epoch 101/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0256 - val_loss: 0.1079
    +Epoch 102/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0252 - val_loss: 0.1084
    +Epoch 103/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0330 - val_loss: 0.1075
    +Epoch 104/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0263 - val_loss: 0.1141
    +Epoch 105/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0249 - val_loss: 0.1072
    +Epoch 106/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0254 - val_loss: 0.1100
    +Epoch 107/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0298 - val_loss: 0.1140
    +Epoch 108/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0262 - val_loss: 0.1110
    +Epoch 109/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0268 - val_loss: 0.1028
    +Epoch 110/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0236 - val_loss: 0.1113
    +Epoch 111/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0246 - val_loss: 0.1149
    +Epoch 112/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0265 - val_loss: 0.1079
    +Epoch 113/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0263 - val_loss: 0.1069
    +Epoch 114/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0278 - val_loss: 0.1074
    +Epoch 115/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0238 - val_loss: 0.1151
    +Epoch 116/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0257 - val_loss: 0.1087
    +Epoch 117/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0215 - val_loss: 0.1031
    +Epoch 118/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0247 - val_loss: 0.1083
    +Epoch 119/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0317 - val_loss: 0.1099
    +Epoch 120/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0307 - val_loss: 0.1075
    +Epoch 121/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0272 - val_loss: 0.1127
    +Epoch 122/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0288 - val_loss: 0.1110
    +Epoch 123/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0247 - val_loss: 0.1103
    +Epoch 124/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0263 - val_loss: 0.1097
    +Epoch 125/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0308 - val_loss: 0.1108
    +Epoch 126/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0246 - val_loss: 0.1124
    +Epoch 127/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0279 - val_loss: 0.1076
    +Epoch 128/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0279 - val_loss: 0.1086
    +Epoch 129/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0254 - val_loss: 0.1161
    +Epoch 130/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0318 - val_loss: 0.1073
    +Epoch 131/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0266 - val_loss: 0.1042
    +Epoch 132/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0253 - val_loss: 0.1144
    +Epoch 133/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0245 - val_loss: 0.1100
    +Epoch 134/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0270 - val_loss: 0.1085
    +Epoch 135/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0250 - val_loss: 0.1080
    +Epoch 136/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0274 - val_loss: 0.1119
    +Epoch 137/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0299 - val_loss: 0.1061
    +Epoch 138/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0244 - val_loss: 0.1092
    +Epoch 139/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0231 - val_loss: 0.1124
    +Epoch 140/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0336 - val_loss: 0.1057
    +Epoch 141/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0268 - val_loss: 0.1085
    +Epoch 142/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0267 - val_loss: 0.1147
    +Epoch 143/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0253 - val_loss: 0.1098
    +Epoch 144/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0300 - val_loss: 0.1039
    +Epoch 145/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0293 - val_loss: 0.1084
    +Epoch 146/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0267 - val_loss: 0.1159
    +Epoch 147/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0295 - val_loss: 0.1116
    +Epoch 148/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0236 - val_loss: 0.1064
    +Epoch 149/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0307 - val_loss: 0.1021
    +Epoch 150/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0292 - val_loss: 0.1177
    +Epoch 151/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0281 - val_loss: 0.1187
    +Epoch 152/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0270 - val_loss: 0.1045
    +Epoch 153/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0286 - val_loss: 0.1035
    +Epoch 154/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0291 - val_loss: 0.1095
    +Epoch 155/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0295 - val_loss: 0.1218
    +Epoch 156/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0289 - val_loss: 0.1077
    +Epoch 157/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0248 - val_loss: 0.1052
    +Epoch 158/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0248 - val_loss: 0.1116
    +Epoch 159/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0312 - val_loss: 0.1132
    +Epoch 160/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0279 - val_loss: 0.1098
    +Epoch 161/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0277 - val_loss: 0.1048
    +Epoch 162/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0270 - val_loss: 0.1080
    +Epoch 163/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0268 - val_loss: 0.1169
    +Epoch 164/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0290 - val_loss: 0.1144
    +Epoch 165/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0270 - val_loss: 0.1178
    +Epoch 166/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0256 - val_loss: 0.0996
    +Epoch 167/500
    +
    +
    +
    4/4 [==============================] - 0s 9ms/step - loss: 0.0313 - val_loss: 0.1114
    +Epoch 168/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0253 - val_loss: 0.1109
    +Epoch 169/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0326 - val_loss: 0.1125
    +Epoch 170/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0302 - val_loss: 0.1073
    +Epoch 171/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0267 - val_loss: 0.1115
    +Epoch 172/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0294 - val_loss: 0.1126
    +Epoch 173/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0247 - val_loss: 0.1085
    +Epoch 174/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0298 - val_loss: 0.1061
    +Epoch 175/500
    +4/4 [==============================] - 0s 10ms/step - loss: 0.0246 - val_loss: 0.1121
    +Epoch 176/500
    +4/4 [==============================] - 0s 10ms/step - loss: 0.0283 - val_loss: 0.1085
    +Epoch 177/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0297 - val_loss: 0.1167
    +Epoch 178/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0323 - val_loss: 0.1055
    +Epoch 179/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0257 - val_loss: 0.1150
    +Epoch 180/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0277 - val_loss: 0.1061
    +Epoch 181/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0250 - val_loss: 0.1094
    +Epoch 182/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0247 - val_loss: 0.1116
    +Epoch 183/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0262 - val_loss: 0.1068
    +Epoch 184/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0273 - val_loss: 0.1087
    +Epoch 185/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0254 - val_loss: 0.1132
    +Epoch 186/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0334 - val_loss: 0.1084
    +Epoch 187/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0311 - val_loss: 0.1109
    +Epoch 188/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0257 - val_loss: 0.1158
    +Epoch 189/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0231 - val_loss: 0.1049
    +Epoch 190/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0275 - val_loss: 0.0998
    +Epoch 191/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0306 - val_loss: 0.1137
    +Epoch 192/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0237 - val_loss: 0.1163
    +Epoch 193/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0234 - val_loss: 0.1049
    +Epoch 194/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0265 - val_loss: 0.1042
    +Epoch 195/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0320 - val_loss: 0.1121
    +Epoch 196/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0317 - val_loss: 0.1091
    +Epoch 197/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0289 - val_loss: 0.1159
    +Epoch 198/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0327 - val_loss: 0.0998
    +Epoch 199/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0269 - val_loss: 0.1191
    +Epoch 200/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0250 - val_loss: 0.1197
    +Epoch 201/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0234 - val_loss: 0.0989
    +Epoch 202/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0263 - val_loss: 0.1040
    +Epoch 203/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0279 - val_loss: 0.1266
    +Epoch 204/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0356 - val_loss: 0.1052
    +Epoch 205/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0300 - val_loss: 0.1183
    +Epoch 206/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0299 - val_loss: 0.1123
    +Epoch 207/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0258 - val_loss: 0.1065
    +Epoch 208/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0313 - val_loss: 0.1075
    +Epoch 209/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0243 - val_loss: 0.1117
    +Epoch 210/500
    +4/4 [==============================] - 0s 10ms/step - loss: 0.0302 - val_loss: 0.1102
    +Epoch 211/500
    +4/4 [==============================] - 0s 10ms/step - loss: 0.0313 - val_loss: 0.1141
    +Epoch 212/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0253 - val_loss: 0.1095
    +Epoch 213/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0274 - val_loss: 0.1176
    +Epoch 214/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0251 - val_loss: 0.1084
    +Epoch 215/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0310 - val_loss: 0.0984
    +Epoch 216/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0276 - val_loss: 0.1184
    +Epoch 217/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0329 - val_loss: 0.1151
    +Epoch 218/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0267 - val_loss: 0.1068
    +Epoch 219/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0293 - val_loss: 0.1078
    +Epoch 220/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0289 - val_loss: 0.1137
    +Epoch 221/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0260 - val_loss: 0.1130
    +Epoch 222/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0287 - val_loss: 0.1019
    +Epoch 223/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0303 - val_loss: 0.1110
    +Epoch 224/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0285 - val_loss: 0.1238
    +Epoch 225/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0265 - val_loss: 0.1085
    +Epoch 226/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0306 - val_loss: 0.0992
    +Epoch 227/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0289 - val_loss: 0.1283
    +Epoch 228/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0316 - val_loss: 0.1073
    +Epoch 229/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0242 - val_loss: 0.1018
    +Epoch 230/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0271 - val_loss: 0.1204
    +Epoch 231/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0279 - val_loss: 0.1072
    +Epoch 232/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0256 - val_loss: 0.1037
    +Epoch 233/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0253 - val_loss: 0.1099
    +Epoch 234/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0241 - val_loss: 0.1147
    +Epoch 235/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0229 - val_loss: 0.1039
    +Epoch 236/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0280 - val_loss: 0.1062
    +Epoch 237/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0300 - val_loss: 0.1206
    +Epoch 238/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0285 - val_loss: 0.1059
    +Epoch 239/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0282 - val_loss: 0.1023
    +Epoch 240/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0298 - val_loss: 0.1285
    +Epoch 241/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0265 - val_loss: 0.1059
    +Epoch 242/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0271 - val_loss: 0.1009
    +Epoch 243/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0297 - val_loss: 0.1251
    +Epoch 244/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0326 - val_loss: 0.1078
    +Epoch 245/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0306 - val_loss: 0.1123
    +Epoch 246/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0265 - val_loss: 0.1106
    +Epoch 247/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0295 - val_loss: 0.1040
    +Epoch 248/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0299 - val_loss: 0.1070
    +Epoch 249/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0256 - val_loss: 0.1303
    +
    +
    +
    Epoch 250/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0280 - val_loss: 0.1051
    +Epoch 251/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0308 - val_loss: 0.1023
    +Epoch 252/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0280 - val_loss: 0.1234
    +Epoch 253/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0306 - val_loss: 0.1027
    +Epoch 254/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0319 - val_loss: 0.1039
    +Epoch 255/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0251 - val_loss: 0.1274
    +Epoch 256/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0260 - val_loss: 0.0990
    +Epoch 257/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0287 - val_loss: 0.1044
    +Epoch 258/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0271 - val_loss: 0.1144
    +Epoch 259/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0217 - val_loss: 0.1168
    +Epoch 260/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0271 - val_loss: 0.0975
    +Epoch 261/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0263 - val_loss: 0.1182
    +Epoch 262/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0249 - val_loss: 0.1152
    +Epoch 263/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0357 - val_loss: 0.1003
    +Epoch 264/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0242 - val_loss: 0.1241
    +Epoch 265/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0273 - val_loss: 0.1089
    +Epoch 266/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0301 - val_loss: 0.1092
    +Epoch 267/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0272 - val_loss: 0.1195
    +Epoch 268/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0233 - val_loss: 0.1029
    +Epoch 269/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0355 - val_loss: 0.1064
    +Epoch 270/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0335 - val_loss: 0.1200
    +Epoch 271/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0288 - val_loss: 0.1108
    +Epoch 272/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0313 - val_loss: 0.1063
    +Epoch 273/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0266 - val_loss: 0.1141
    +Epoch 274/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0297 - val_loss: 0.1023
    +Epoch 275/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0214 - val_loss: 0.1214
    +Epoch 276/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0324 - val_loss: 0.0978
    +Epoch 277/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0260 - val_loss: 0.1185
    +Epoch 278/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0255 - val_loss: 0.1139
    +Epoch 279/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0239 - val_loss: 0.0969
    +Epoch 280/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0275 - val_loss: 0.1174
    +Epoch 281/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0300 - val_loss: 0.1155
    +Epoch 282/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0292 - val_loss: 0.1063
    +Epoch 283/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0309 - val_loss: 0.1102
    +Epoch 284/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0314 - val_loss: 0.1326
    +Epoch 285/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0305 - val_loss: 0.0966
    +Epoch 286/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0293 - val_loss: 0.1134
    +Epoch 287/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0254 - val_loss: 0.1130
    +Epoch 288/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0267 - val_loss: 0.0982
    +Epoch 289/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0291 - val_loss: 0.1227
    +Epoch 290/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0285 - val_loss: 0.1058
    +Epoch 291/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0309 - val_loss: 0.1059
    +Epoch 292/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0336 - val_loss: 0.1250
    +Epoch 293/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0357 - val_loss: 0.1033
    +Epoch 294/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0273 - val_loss: 0.1151
    +Epoch 295/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0232 - val_loss: 0.1073
    +Epoch 296/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0272 - val_loss: 0.1117
    +Epoch 297/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0251 - val_loss: 0.1113
    +Epoch 298/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0227 - val_loss: 0.1081
    +Epoch 299/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0319 - val_loss: 0.1027
    +Epoch 300/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0230 - val_loss: 0.1153
    +Epoch 301/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0289 - val_loss: 0.1072
    +Epoch 302/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0253 - val_loss: 0.1128
    +Epoch 303/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0286 - val_loss: 0.1082
    +Epoch 304/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0284 - val_loss: 0.1080
    +Epoch 305/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0249 - val_loss: 0.1095
    +Epoch 306/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0287 - val_loss: 0.1165
    +Epoch 307/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0236 - val_loss: 0.1086
    +Epoch 308/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0276 - val_loss: 0.1006
    +Epoch 309/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0328 - val_loss: 0.1193
    +Epoch 310/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0330 - val_loss: 0.1123
    +Epoch 311/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0283 - val_loss: 0.1117
    +Epoch 312/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0274 - val_loss: 0.1069
    +Epoch 313/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0235 - val_loss: 0.1091
    +Epoch 314/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0256 - val_loss: 0.1066
    +Epoch 315/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0283 - val_loss: 0.1071
    +Epoch 316/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0264 - val_loss: 0.1098
    +Epoch 317/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0332 - val_loss: 0.1197
    +Epoch 318/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0298 - val_loss: 0.1148
    +Epoch 319/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0245 - val_loss: 0.1014
    +Epoch 320/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0254 - val_loss: 0.1214
    +Epoch 321/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0220 - val_loss: 0.1007
    +Epoch 322/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0308 - val_loss: 0.1027
    +Epoch 323/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0267 - val_loss: 0.1365
    +Epoch 324/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0257 - val_loss: 0.1004
    +Epoch 325/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0237 - val_loss: 0.1056
    +Epoch 326/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0263 - val_loss: 0.1133
    +Epoch 327/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0309 - val_loss: 0.1112
    +Epoch 328/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0272 - val_loss: 0.1092
    +Epoch 329/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0329 - val_loss: 0.1121
    +Epoch 330/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0296 - val_loss: 0.1201
    +Epoch 331/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0253 - val_loss: 0.1005
    +Epoch 332/500
    +
    +
    +
    4/4 [==============================] - 0s 9ms/step - loss: 0.0248 - val_loss: 0.1095
    +Epoch 333/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0277 - val_loss: 0.1096
    +Epoch 334/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0248 - val_loss: 0.1073
    +Epoch 335/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0285 - val_loss: 0.1109
    +Epoch 336/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0243 - val_loss: 0.1239
    +Epoch 337/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0319 - val_loss: 0.1028
    +Epoch 338/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0304 - val_loss: 0.1170
    +Epoch 339/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0303 - val_loss: 0.1131
    +Epoch 340/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0262 - val_loss: 0.0999
    +Epoch 341/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0304 - val_loss: 0.1167
    +Epoch 342/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0307 - val_loss: 0.1113
    +Epoch 343/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0263 - val_loss: 0.1022
    +Epoch 344/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0292 - val_loss: 0.1166
    +Epoch 345/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0298 - val_loss: 0.1032
    +Epoch 346/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0240 - val_loss: 0.1231
    +Epoch 347/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0284 - val_loss: 0.1008
    +Epoch 348/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0264 - val_loss: 0.1137
    +Epoch 349/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0269 - val_loss: 0.1156
    +Epoch 350/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0258 - val_loss: 0.1000
    +Epoch 351/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0252 - val_loss: 0.1036
    +Epoch 352/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0267 - val_loss: 0.1187
    +Epoch 353/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0281 - val_loss: 0.0970
    +Epoch 354/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0301 - val_loss: 0.1275
    +Epoch 355/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0338 - val_loss: 0.1098
    +Epoch 356/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0323 - val_loss: 0.1084
    +Epoch 357/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0277 - val_loss: 0.1206
    +Epoch 358/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0307 - val_loss: 0.1068
    +Epoch 359/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0307 - val_loss: 0.1147
    +Epoch 360/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0268 - val_loss: 0.1073
    +Epoch 361/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0361 - val_loss: 0.1094
    +Epoch 362/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0302 - val_loss: 0.1167
    +Epoch 363/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0283 - val_loss: 0.0992
    +Epoch 364/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0284 - val_loss: 0.1234
    +Epoch 365/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0300 - val_loss: 0.1025
    +Epoch 366/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0265 - val_loss: 0.1225
    +Epoch 367/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0236 - val_loss: 0.0973
    +Epoch 368/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0261 - val_loss: 0.1248
    +Epoch 369/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0301 - val_loss: 0.1039
    +Epoch 370/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0262 - val_loss: 0.1067
    +Epoch 371/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0280 - val_loss: 0.1186
    +Epoch 372/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0248 - val_loss: 0.0966
    +Epoch 373/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0347 - val_loss: 0.1105
    +Epoch 374/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0346 - val_loss: 0.1215
    +Epoch 375/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0279 - val_loss: 0.0981
    +Epoch 376/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0263 - val_loss: 0.1289
    +Epoch 377/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0351 - val_loss: 0.1155
    +Epoch 378/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0271 - val_loss: 0.0973
    +Epoch 379/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0234 - val_loss: 0.1323
    +Epoch 380/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0263 - val_loss: 0.0997
    +Epoch 381/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0256 - val_loss: 0.1058
    +Epoch 382/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0256 - val_loss: 0.1256
    +Epoch 383/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0301 - val_loss: 0.0968
    +Epoch 384/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0291 - val_loss: 0.1265
    +Epoch 385/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0282 - val_loss: 0.1038
    +Epoch 386/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0259 - val_loss: 0.1022
    +Epoch 387/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0342 - val_loss: 0.1145
    +Epoch 388/500
    +4/4 [==============================] - 0s 10ms/step - loss: 0.0264 - val_loss: 0.1147
    +Epoch 389/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0324 - val_loss: 0.1008
    +Epoch 390/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0303 - val_loss: 0.1186
    +Epoch 391/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0297 - val_loss: 0.1056
    +Epoch 392/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0234 - val_loss: 0.1113
    +Epoch 393/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0237 - val_loss: 0.1043
    +Epoch 394/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0245 - val_loss: 0.1083
    +Epoch 395/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0279 - val_loss: 0.1156
    +Epoch 396/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0244 - val_loss: 0.1038
    +Epoch 397/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0228 - val_loss: 0.1140
    +Epoch 398/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0247 - val_loss: 0.1048
    +Epoch 399/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0264 - val_loss: 0.1213
    +Epoch 400/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0256 - val_loss: 0.1066
    +Epoch 401/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0253 - val_loss: 0.1010
    +Epoch 402/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0295 - val_loss: 0.1262
    +Epoch 403/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0311 - val_loss: 0.1027
    +Epoch 404/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0267 - val_loss: 0.1120
    +Epoch 405/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0287 - val_loss: 0.1094
    +Epoch 406/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0272 - val_loss: 0.1031
    +Epoch 407/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0277 - val_loss: 0.1196
    +Epoch 408/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0234 - val_loss: 0.1049
    +Epoch 409/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0278 - val_loss: 0.1060
    +Epoch 410/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0349 - val_loss: 0.1138
    +Epoch 411/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0249 - val_loss: 0.1040
    +Epoch 412/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0291 - val_loss: 0.1059
    +Epoch 413/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0264 - val_loss: 0.1206
    +Epoch 414/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0253 - val_loss: 0.1029
    +
    +
    +
    Epoch 415/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0232 - val_loss: 0.1140
    +Epoch 416/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0251 - val_loss: 0.1037
    +Epoch 417/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0254 - val_loss: 0.1057
    +Epoch 418/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0265 - val_loss: 0.1248
    +Epoch 419/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0258 - val_loss: 0.1063
    +Epoch 420/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0339 - val_loss: 0.1056
    +Epoch 421/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0311 - val_loss: 0.1180
    +Epoch 422/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0309 - val_loss: 0.1066
    +Epoch 423/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0239 - val_loss: 0.1056
    +Epoch 424/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0245 - val_loss: 0.1080
    +Epoch 425/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0248 - val_loss: 0.1088
    +Epoch 426/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0266 - val_loss: 0.1055
    +Epoch 427/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0260 - val_loss: 0.1122
    +Epoch 428/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0294 - val_loss: 0.1053
    +Epoch 429/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0247 - val_loss: 0.1188
    +Epoch 430/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0298 - val_loss: 0.0994
    +Epoch 431/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0264 - val_loss: 0.1386
    +Epoch 432/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0336 - val_loss: 0.0939
    +Epoch 433/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0319 - val_loss: 0.1251
    +Epoch 434/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0302 - val_loss: 0.1292
    +Epoch 435/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0317 - val_loss: 0.0922
    +Epoch 436/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0294 - val_loss: 0.1543
    +Epoch 437/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0223 - val_loss: 0.0946
    +Epoch 438/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0348 - val_loss: 0.1072
    +Epoch 439/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0360 - val_loss: 0.1357
    +Epoch 440/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0275 - val_loss: 0.0919
    +Epoch 441/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0262 - val_loss: 0.1380
    +Epoch 442/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0324 - val_loss: 0.1039
    +Epoch 443/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0235 - val_loss: 0.1099
    +Epoch 444/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0292 - val_loss: 0.1140
    +Epoch 445/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0343 - val_loss: 0.1051
    +Epoch 446/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0268 - val_loss: 0.1261
    +Epoch 447/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0332 - val_loss: 0.1030
    +Epoch 448/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0255 - val_loss: 0.1119
    +Epoch 449/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0293 - val_loss: 0.1125
    +Epoch 450/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0264 - val_loss: 0.1074
    +Epoch 451/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0238 - val_loss: 0.0991
    +Epoch 452/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0304 - val_loss: 0.1118
    +Epoch 453/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0262 - val_loss: 0.1189
    +Epoch 454/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0265 - val_loss: 0.1052
    +Epoch 455/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0287 - val_loss: 0.1127
    +Epoch 456/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0300 - val_loss: 0.1099
    +Epoch 457/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0347 - val_loss: 0.1084
    +Epoch 458/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0282 - val_loss: 0.1144
    +Epoch 459/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0257 - val_loss: 0.0983
    +Epoch 460/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0295 - val_loss: 0.1192
    +Epoch 461/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0252 - val_loss: 0.0998
    +Epoch 462/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0233 - val_loss: 0.1180
    +Epoch 463/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0303 - val_loss: 0.1008
    +Epoch 464/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0262 - val_loss: 0.1092
    +Epoch 465/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0316 - val_loss: 0.1115
    +Epoch 466/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0306 - val_loss: 0.1105
    +Epoch 467/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0261 - val_loss: 0.1076
    +Epoch 468/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0225 - val_loss: 0.1100
    +Epoch 469/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0252 - val_loss: 0.1053
    +Epoch 470/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0282 - val_loss: 0.1143
    +Epoch 471/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0308 - val_loss: 0.1185
    +Epoch 472/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0244 - val_loss: 0.0957
    +Epoch 473/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0281 - val_loss: 0.1272
    +Epoch 474/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0235 - val_loss: 0.1026
    +Epoch 475/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0304 - val_loss: 0.1177
    +Epoch 476/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0299 - val_loss: 0.1138
    +Epoch 477/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0312 - val_loss: 0.1068
    +Epoch 478/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0305 - val_loss: 0.1371
    +Epoch 479/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0307 - val_loss: 0.0924
    +Epoch 480/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0323 - val_loss: 0.1389
    +Epoch 481/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0249 - val_loss: 0.0964
    +Epoch 482/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0308 - val_loss: 0.1180
    +Epoch 483/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0248 - val_loss: 0.1091
    +Epoch 484/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0269 - val_loss: 0.1013
    +Epoch 485/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0290 - val_loss: 0.1264
    +Epoch 486/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0281 - val_loss: 0.1013
    +Epoch 487/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0313 - val_loss: 0.1177
    +Epoch 488/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0323 - val_loss: 0.1165
    +Epoch 489/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0271 - val_loss: 0.1026
    +Epoch 490/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0232 - val_loss: 0.1155
    +Epoch 491/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0277 - val_loss: 0.1069
    +Epoch 492/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0259 - val_loss: 0.1103
    +Epoch 493/500
    +4/4 [==============================] - 0s 8ms/step - loss: 0.0294 - val_loss: 0.1076
    +Epoch 494/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0287 - val_loss: 0.1009
    +Epoch 495/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0289 - val_loss: 0.1132
    +Epoch 496/500
    +4/4 [==============================] - 0s 10ms/step - loss: 0.0243 - val_loss: 0.1145
    +Epoch 497/500
    +
    +
    +
    4/4 [==============================] - 0s 9ms/step - loss: 0.0296 - val_loss: 0.0943
    +Epoch 498/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0253 - val_loss: 0.1318
    +Epoch 499/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0295 - val_loss: 0.0964
    +Epoch 500/500
    +4/4 [==============================] - 0s 9ms/step - loss: 0.0264 - val_loss: 0.1196
    +
    +
    +
    <tensorflow.python.keras.callbacks.History at 0x23312d56820>
    +
    +
    +
    +
    +
    +
    +
    x_fit = np.linspace(1, 8, 100)
    +y_fit = modell.predict(x_fit)
    +plt.plot(x, y, linestyle = ' ', marker = 'o', label = 'data')
    +plt.plot(x_fit, y_fit, label = 'regresjonskurve')
    +plt.xlabel("Kronbladlengde (cm)")
    +plt.ylabel("Kronbladbredde (cm)")
    +plt.legend()
    +plt.savefig("regresjonsdata_iris.pdf")
    +
    +
    +
    +
    +../../_images/8db497e1e4e19f6dc7688345fba54b8eab8346696a6be78c4be28838eb9c6d1e.png +
    +
    +
    +
    +

    Bestemmelse av art#

    +
    +
    +
    iris["Species"] = iris["Species"].map({"Iris-setosa": 0, 
    +                                       "Iris-versicolor": 1, "Iris-virginica": 2})
    +
    +
    +
    +
    +
    +
    +
    kriterier = iris[['SepalLengthCm', 'SepalWidthCm', 'PetalLengthCm', 'PetalWidthCm']]
    +kategorier = iris['Species']
    +
    +
    +
    +
    +
    +
    +
    plt.figure(figsize=(10,8))
    +corr = iris.corr()
    +sns.heatmap(corr, annot = True)
    +
    +
    +
    +
    +
    <AxesSubplot:>
    +
    +
    +../../_images/b624a85440b2f8f8b896392111317ab2b4f394a2ebc93fa8483e6dc56d70354a.png +
    +
    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git "a/docs/ekstra/maskinl\303\246ring_titanic.html" "b/docs/ekstra/maskinl\303\246ring_titanic.html" new file mode 100644 index 00000000..164896ff --- /dev/null +++ "b/docs/ekstra/maskinl\303\246ring_titanic.html" @@ -0,0 +1,1465 @@ + + + + + + + + + Maskinlæring — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + + + +
    + +
    +

    Maskinlæring#

    +
    +
    +
    import pandas as pd
    +import numpy as np
    +import seaborn as sns
    +import matplotlib.pyplot as plt
    +
    +# Lese dataene
    +titanic = pd.read_csv("Datafiler/titanic.csv")
    +
    +
    +
    +
    +
    +

    Utforsking og opprydding av datasettet#

    +

    La oss undersøke dataene og rydde litt, dersom vi trenger det.

    +
    +
    +
    # Skriver ut fem første linjer
    +titanic.head()
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    survivedpclasssexagesibspparchfareembarkedclassdeckembark_townalivealone
    003022.0107.2500SThirdNaNSouthamptonnoFalse
    111138.01071.2833CFirstCCherbourgyesFalse
    213126.0007.9250SThirdNaNSouthamptonyesTrue
    311135.01053.1000SFirstCSouthamptonyesFalse
    403035.0008.0500SThirdNaNSouthamptonnoTrue
    +
    +
    +

    Vi ser at det ikke er alle kategoriene vi trenger. Siden vi er interessert i hvem som overlevde, og hvorfor, kan det også være lurt å sjekke hvor mange dette var.

    +
    +
    +
    # Hvor mange overlevde?
    +overlevde_prosent = (titanic['survived'].sum()/titanic['survived'].count())*100
    +print(f'{overlevde_prosent:.2f} % overlevde')
    +
    +
    +
    +
    +
    38.38 % overlevde
    +
    +
    +
    +
    +
    +
    +
    # Sletter kategorier vi ikke er interessert i
    +titanic.pop('deck')
    +titanic.pop('fare')
    +titanic.pop('embarked')
    +titanic.pop('embark_town')
    +
    +
    +
    +
    +
    0      Southampton
    +1        Cherbourg
    +2      Southampton
    +3      Southampton
    +4      Southampton
    +          ...     
    +886    Southampton
    +887    Southampton
    +888    Southampton
    +889      Cherbourg
    +890     Queenstown
    +Name: embark_town, Length: 891, dtype: object
    +
    +
    +
    +
    +
    +
    +
    # Print antall manglende verdier i kolonnene
    +print(titanic.isna().sum())
    +
    +
    +
    +
    +
    survived      0
    +pclass        0
    +sex           0
    +age         177
    +sibsp         0
    +parch         0
    +class         0
    +alive         0
    +alone         0
    +dtype: int64
    +
    +
    +
    +
    +
    +
    +
    # Fyller inn manglende alder med gjennomsnittet
    +gjennomsnitt = titanic['age'].mean()
    +titanic['age'].fillna(gjennomsnitt, inplace = True)
    +
    +
    +
    +
    +
    +
    +

    Visualiseringer#

    +

    La oss først se hvilken effekt klasse og kjønn hadde på overlevelsessjansene:

    +
    +
    +
    # Passasjerklasse
    +sns.countplot(x='pclass', hue='survived', data=titanic, palette='ocean')
    +plt.title("Antall døde (0) og overlevende (1) av hver klasse")
    +plt.xlabel("Klasse")
    +plt.ylabel("Antall")
    +plt.show()
    +
    +
    +
    +
    +../../_images/eb2c0c50232e8ee10c858a18b10488cab9656db52b44aec919f64f19baf99000.png +
    +
    +
    +
    +
    # Passasjerklasse
    +sns.countplot(x='sex', hue='survived', data=titanic, palette='ocean')
    +plt.title("Antall døde (0) og overlevende (1) av hvert kjønn")
    +plt.xlabel("Kjønn (0 = han, 1 = hun)")
    +plt.ylabel("Antall")
    +plt.show()
    +
    +
    +
    +
    +../../_images/59c5f36ba4130d5a34d72cc6d9d6ae0c56e5e22b75662dc5179558b55b164510.png +
    +
    +

    Vi ser, ikke overraskene at menn på 3. klasse hadde særdeles dårlige odds. Vi har alderen til passasjerene, men ikke

    +
    +
    +
    # Sortere etter alder
    +aldersklasse = []
    +
    +for alder in titanic['age']:
    +    if alder > 15:
    +        aldersklasse.append("voksen")
    +    else:
    +        aldersklasse.append("barn")
    +        
    +titanic['aldersklasse'] = aldersklasse
    +
    +sns.countplot(x='aldersklasse', hue='survived', data=titanic, palette='ocean')
    +
    +
    +
    +
    +
    <AxesSubplot:xlabel='aldersklasse', ylabel='count'>
    +
    +
    +../../_images/5dc317a401e1ee4bbd97933eb575f2bffcefb5685caded7c9d32a8ee12c4ee5f.png +
    +
    +
    +
    +
    # *Frivillig: Erstatte kategorier for visualisering med nye kategorier
    +"""
    +overlevende = {0: "døde", 1: "overlevde"}
    +titanic["survived"] = titanic["survived"].map(overlevende)
    +titanic.head(5)
    +"""
    +# *Frivillig: Telle forekomster av ulike tilfeller
    +"""
    +titanic["survived"].count()
    +titanic["survived"].value_counts()
    +"""
    +None # Printer None for å unngå output
    +
    +
    +
    +
    +
    +
    +

    Maskinlæring#

    +

    Vi skal nå lage en modell som kan forutsi hvorvidt en person overlever på Titanic eller ikke, gitt data om personen. Vi velger ut hvilke data vi ønsker å bruke som kriterium for overlevelse, og spesifiserer kategorien “survived” som målkategorien vår:

    +
    +
    +
    from sklearn.model_selection import train_test_split, cross_val_score
    +from sklearn import tree
    +from sklearn.metrics import accuracy_score, confusion_matrix
    +
    +
    +
    +
    +
    +
    +
    kriterier = titanic[['pclass', 'sex', 'age', 'sibsp', 'parch']]
    +kategorier = titanic['survived'] 
    +
    +
    +
    +
    +

    I maskinlæring er det viktig at modellen vår klarer å forutsi data som kommer utenfra datasettet vi trener modellen med. Derfor deler vi ofte opp dataene i et treningssett og et testsett. Treningssettet bruker vi til å trene modellen, testsettet til å teste og evaluere modellen i etterkant. Vi blander ikke disse dataene. Vi kan generere slike data med funksjonen train_test_split(). Her bruker vi 80 % av dataene til trening og 20 % til testing. Du bør bruke minst 70 % av dataene dine til trening.

    +
    +
    +
    testandel = 0.2 # Andel brukt til testing
    +ml_data = train_test_split(kriterier, kategorier, test_size=testandel, random_state=42)
    +
    +treningskriterier = ml_data[0]
    +testkriterier = ml_data[1]
    +treningskategorier = ml_data[2]
    +testkategorier = ml_data[3]
    +
    +
    +
    +
    +

    Nå kan vi lage modellen vår. Vi bruker en algoritme som heter Decision Tree Classifier. Det er basert på sammensatte og forgreinede valgtrær, der alle kombinasjoner av kriterier blir utforsket. Betingede sannsynligheter for ulike hendelser blir beregnet, og de mest sannsynlige utfallene blir framhevet basert på kombinasjonen av kriteriene. Først trener vi modellen:

    +
    +
    +
    modell = tree.DecisionTreeClassifier()
    +modell.fit(treningskriterier, treningskategorier)
    +
    +
    +
    +
    +
    DecisionTreeClassifier()
    +
    +
    +
    +
    +

    Det var det - da har vi en modell! Den ligger nå i et objekt som vi har kalt modell. Vi kan få innsyn i hvordan modellen ser ut, men det kan fort bli litt uoversiktlig og teknisk. La oss først nøye oss med å sjekke hvordan modellen takler testsettet vårt.

    +
    +
    +

    Test og validering av modellen#

    +
    +
    +
    modellkategorier_forutsett = modell.predict(testkriterier)
    +accuracy_score(testkategorier, modellkategorier_forutsett)
    +
    +
    +
    +
    +
    0.7653631284916201
    +
    +
    +
    +
    +

    Dette betyr at modellen forutsier riktig ca. 76 % av gangene. Det er en ok modell. For å få bedre oversikt over hva modellen forutsier riktig og hva den feiler på, kan vi konstruere en såkalt “Confusion Matrix” (forvirringsmatrise/feilmatrise):

    +
    +
    +
    cm = confusion_matrix(modellkategorier_forutsett, testkategorier)
    +
    +import seaborn as sns
    +sns.heatmap(cm, annot=True, cmap='viridis')
    +plt.title("Forvirringsmatrise")
    +plt.xlabel("Predikerte verdier")
    +plt.ylabel("Sanne verdier")
    +plt.show()
    +
    +
    +
    +
    +../../_images/f0681d9c20edcb52108fad9f41b80e29e9a8e8f6246bbea8ef9b96bbbef76c5e.png +
    +
    +

    La oss benytte disse dataene og telle hvor mange datapunkter vi har, hvor mange som overlevde og døde, og deretter beregne hvor stor prosentandel av overlevende og døde som modellen klarte å forutsi korrekt.

    +
    +
    +
    presisjon_død = (87/(87+25))*100
    +presisjon_overleve = (49/(49+18))*100
    +print(f'(Andel korrekt forventet død {presisjon_død:.2f} %)')
    +print(f'(Andel korrekt forventet overlevelse {presisjon_overleve:.2f} %)')
    +
    +
    +
    +
    +
    (Andel korrekt forventet død 77.68 %)
    +(Andel korrekt forventet overlevelse 73.13 %)
    +
    +
    +
    +
    +

    Det er større presisjon i å forutsi død. Dette er forventet, siden modellen har trent på flere tilfeller av død enn av overlevelse.

    +

    La oss helt til sist visualisere modellen vår. Vi velger maks dybde på modellen til 3 for at vi ikke skal få alt for mange forgreininger.

    +
    +
    +
    plt.figure(figsize=(20,10))
    +titanic.pop('survived')
    +tree.plot_tree(modell, max_depth=2, feature_names=titanic.columns, class_names=['Døde', 'Overlevde'], filled=True, label=None,) 
    +None
    +
    +
    +
    +
    +../../_images/822bb093ce5d8e8331f4d28f1b58fe00d16582985b3d4e9145c1457e3b55d4d6.png +
    +
    +
    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/ekstra/modellering_kinematikk.html b/docs/ekstra/modellering_kinematikk.html new file mode 100644 index 00000000..f89c422e --- /dev/null +++ b/docs/ekstra/modellering_kinematikk.html @@ -0,0 +1,1170 @@ + + + + + + + + + Modelleringsoppgave: Kinematikk (fysikk) — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + + + +
    + +
    +

    Modelleringsoppgave: Kinematikk (fysikk)#

    +
    +

    Del 1 – Kinematikk: Diskrete modeller#

    +

    I fysikken jobber vi ofte med forenklede modeller fordi vi er begrenset av matematikken. Vi kan fort ende opp med uttrykk som er svært vanskelige eller umulige å løse for hånd. Med programmering kan vi øke modellkompleksiteten og dermed utforske mer virkelighetsnære modeller.

    +

    La oss begynne med en enkel modell for fritt fall av en kule. Modellen kan løses med penn og papir, så det er en god indikasjon på om framgangsmåten vår stemmer.

    +

    For en kule i fritt fall kan vi modellere bevegelsen ved å ta hensyn til kun gravitasjonskreftene. Vi tar utgangspunkt i Newtons 2. lov:

    +
    +\[\sum F = ma\]
    +

    Her er summen av kreftene kun gravitasjonskraften:

    +
    +\[G = ma\]
    +

    Vi trenger nå en modell for gravitasjonskraften G. Vi kjenner fra fysikk at vi ofte uttrykker G slik:

    +
    +\[G = mg\]
    +

    der \(g = 9.8\) m/s\(^2\) er tyngdeakselerasjonen ved havnivå på jorda og \(m\) er massen til legemet på jorda. Dette er en modell som kan utledes fra Newtons gravitasjonslov.

    +

    a) Klikk på boksen nedenfor for å se begrunnelsen for modellen for gravitasjonskrefter. Prøv deretter å forklare for hverandre med ord hvordan \(G = mg\) utledes og hvilke forutsetninger denne modellen har.

    + +

    I diskrete modeller tar vi utgangspunkt i et endelig steg, f.eks. tidssteg, mellom hver verdi. Vi skal her operere med konstant akselerasjon og anta at farten og posisjonen også er konstante innenfor et lite tidsrom dt. For konstant posisjon har vi at:

    +
    +\[s_{t+dt} = s_t + v_t\cdot dt\]
    +

    som du kanskje kjenner igjen som “formelen” \(s = v\cdot t\). Tilsvarende kan vi anta for hastigheten:

    +
    +\[v_{t+dt} = v_t + a_t\cdot dt\]
    +

    b) Lag et program som regner ut hvor langt ballen har falt etter en viss tid. Velg startverdier og tid selv. Du kan ta utgangspunkt i dette programmet, eller lage et helt fra scratch:

    + +

    c) Hvilke antakelser har vi tatt og hvilke forutsetninger tar modellene våre utgangspunkt i? Kommenter både hvordan vi regner ut posisjon og fart, i tillegg til modellen for gravitasjon.

    +

    d) Utvid programmet slik at det plotter posisjonen som funksjon av tid.

    +

    La oss nå utvide programmet ved å ta hensyn til flere krefter, for eksempel luftmotstand. Vi har mange ulike modeller for luftmotstand, avhengig av hva slags legeme vi har med å gjøre og hvor stor hastighet legemet faller. Følgende modell er mye brukt:

    +
    +\[L = k\cdot v^2\]
    +

    e) Diskuter hva som menes med parameteren \(k\). Hvordan finner man slike parametere? Hvorfor er \(v\) kvadrert?

    +

    Vi kan nå sette denne modellen inn i Newtons andre lov sammen med gravitasjonskreftene. Vi velger positiv retning nedover, så G får positivt fortegn og L får negativt fortegn.

    +

    f) Lag et program som plotter både hastighet og posisjon for et legeme på 1,0 kg som faller. Bruk \(k = 0.1\).

    +

    g) Lag et program som finner ut når et legeme treffer bakken gitt en starthøyde \(s_0\).

    +

    En alternativ måte å lagre verdier på, er å bruke arrayer.

    +

    f) Løs dette programmeringspuslespillet. Puslespillet beregner akselerasjon, hastighet og posisjon til et legeme som faller med luftmotstand. Noen steder er rekkefølgen angitt som kommentar. Når rekkefølgen ikke er entydig, skal du angi \(a\), \(v\), \(s\) og \(t\) i denne rekkefølgen.

    +

    g) Eksperimenter med modellene i programmet ditt ved å systematisk variere \(k\), endre på luftmotstandsmodellen eller tilsvarende. Redegjør for resultatene dine og drøft det du ser.

    +

    h) La legemet bli kastet oppover med en startfart istedenfor at den slippes. Fungerer programmet nå? Hva må du ta hensyn til når du beregner luftmotstanden? Hint: Tegn en tegning som viser kreftene på en ball når den faller nedover og når den er på vei oppover.

    +
    +

    Differenslikninger#

    +

    Når vi bruker sammenhenger som \(s_{t+dt} = s_t + v_t\cdot dt\), formulerer vi sammenhengene mellom ulike størrelser som differenslikninger. En differenslikning er en likning der verdien til en størrelse (f.eks. posisjon) avhenger av den forrige verdien til størrelsen (f.eks. posisjonen ved forrige tidssteg). Et annet eksempel på dette er tallfølger. Se videoen nedenfor for en liten innføring i numerisk løsing av differenslikninger.

    +
    +
    +
    +
    +
    +
    +
    +

    Del 2 – Kinematikk: Kontinuerlig modeller#

    +

    Newtons 2. lov kan også formuleres som en differensiallikning fordi den beskriver den momentane endringen i posisjon og fart, det vil si den deriverte, som funksjon av tid. Dette er fordi \(a(t) = v'(t) = s''(t)\). Da går vi fra en diskret modell til en kontinuerlig modell med et tidssteg som i utgangspunktet er så lite som mulig:

    +
    +\[a(t) = v'(t) = g - \frac{kv(t)}{g}\]
    +

    En differensiallikning er en likning som inneholder den deriverte av en funksjon, \(f'(x)\). I de fleste praktiske situasjoner beskriver slike likninger sammenhengen mellom endringen, \(f'(t)\), og tilstanden, \(f(t)\), til et system ved tida \(t\).

    +

    Vi har altså en differensiallikning som beskriver endringen i systemet \(v'(t)\), men ingen informasjon om selve farten \(v(t)\). Vi ønsker med andre ord å finne farten (og etterpå posisjonen) ved enhver tid gitt en eller annen startbetingelse (startfart og startposisjon). Det er det samme som å si at vi ønsker å finne funksjonsverdien \(v(t + dt)\) for hvert tidssteg \(dt\).

    +

    I teorien er ingen modeller kontinuerlige på en datamaskin, men vi gjør modellene “mindre diskrete” ved å velge tidssteg som er små.

    +
    +

    Newtons 2. lov som differensiallikning#

    +

    Vi formulerer nå Newtons 2. lov slik:

    +
    +\[\sum F = ma(t) = mv'(t) = ms''(t)\]
    +

    det betyr at:

    +
    +\[v'(t) = \frac{\sum F}{m}\]
    +
    +\[s''(t) = \frac{\sum F}{m}\]
    +

    Programmene våre blir egentlig ikke noe annerledes fra slik vi lagde dem da vi hadde diskrete modeller. Det er kun graden av diskretisering som skiller modellene. For kontinuerlige modeller må vi bare passe på å velge en dt som er liten nok.

    +
    +
    +

    En metode for løsing av differensiallikninger#

    +

    Nå vi skal løse en differensiallikning, har vi en initalbetingelse \(y_0\) og et uttrykk for den deriverte \(y'\). Vi ønsker derfor å finne \(y_1\) og alle andre funksjonsverider.

    +

    Du kjenner faktisk allerede til et uttrykk som inneholder en funksjon og dens deriverte, nemlig definisjonen av den deriverte! Vi bruker den numeriske definisjonen der vi tilnærmer grenseverdiene med en dx (\(\Delta x\)) som er så liten som mulig:

    +
    +\[f'(x) \approx \frac{f(x+dx) - f(x)}{dx}\]
    +

    Til å begynne med kjenner vi \(f(x)\) (\(v(t)\)), altså \(f(x_0)\). Dette er initialbetingelsen, for eksempel startfarten \(v(t_0)\). Vi kjenner også et uttrykk for den deriverte av farten (akselerasjonen) gjennom Newtons 2. lov. I tillegg bestemmer vi selv tidssteget, dx (dt), men husk at det verken bør være for lite eller for stort. Den eneste ukjente i likningen ovenfor er altså \(f(x+dx)\), og det er jo nettopp dette vi prøver å finne. Med litt enkel algebra får vi omformet uttrykket slik at det blir et uttrykk for \(f(x+dx)\). Vi ganger først med \(dx\) på begge sider:

    +
    +\[f'(x)\cdot dx \approx f(x+dx) - f(x)\]
    +

    Deretter får vi \(f(x+dx)\) aleine på høyre side og ender opp med følgende likning:

    +
    +\[f(x+dx) \approx f(x) + f'(x)\cdot dx\]
    +

    Dette kalles Eulers metode. Den brukes til å løse differensiallikninger, det vil si å integrere den deriverte slik at vi finner funksjonsverdiene. Siden vi ofte har med funksjoner av tid å gjøre, kaller vi gjerne dx for dt.

    +

    i) Forklar hva en differensiallikning er. Hvorfor er Newtons 2. lov en differensiallikning?

    +

    j) Er det noen forskjell på å bruke Eulers metode og bevegelseslikningene vi brukte i programmene våre (\(v = v_0 + at\) og \(s = s_0 + vt\))?

    +

    k) Frivillig (Fysikk 2): Lag et program som simulerer todimensjonalt kast av ball. Ta hensyn til luftmotstand og gravitasjon.

    +
    +
    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/ekstra/modellering_populasjonsdynamikk.html b/docs/ekstra/modellering_populasjonsdynamikk.html new file mode 100644 index 00000000..718ff3e0 --- /dev/null +++ b/docs/ekstra/modellering_populasjonsdynamikk.html @@ -0,0 +1,1135 @@ + + + + + + + + + Modelleringsoppgave IIb: Bevaringsbiologi (biologi) — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Modelleringsoppgave IIb: Bevaringsbiologi (biologi)

    + +
    + +
    +
    + +
    + +
    +

    Modelleringsoppgave IIb: Bevaringsbiologi (biologi)#

    +
    +

    Bevaringsbiologi#

    +

    I bevaringsbiologi forskes det på hvordan artsmangfoldet i spesielt utsatte økosystemer og populasjoner kan bevares. En viktig del av dette er å modellere hvordan en populasjon kan utvikle seg gitt ulike omstendigheter og tiltak. Vi skal se på en enkel modell for populasjonsdynamikk her.

    +
    +

    Del 1 – Diskrete modeller#

    +

    En diskret populasjonsmodell er en modell som beskriver endringen i populasjonsstørrelse ved bestemte tidspunkter, men ikke alle tidspunkter. Slike modeller kan ofte formuleres som differenslikninger (ikke til å forveksle med differensiallikninger…). En differenslikning er en likning der neste verdi er avhengig av foregående verdi. For en populasjon er åpenbart endringen av antall individer ved en tid \(t + \Delta t\), avhengig av antall individer ved forrige tidspunkt \(t\). Vi kan formulere en enkel modell slik:

    +
    +\[ \Delta P = k\cdot P_t\]
    +
    +\[ P_{t+\Delta t} - P_t = k\cdot P_t\]
    +
    +\[ P_{t+\Delta t} = P_t + k\cdot P_t\]
    +

    der indeksen \(t+\Delta t\) viser til populasjonsstørrelsen ved neste tidssteg, mens indeksen \(t\) viser til populasjonsstørrelsen ved nåværende tid.

    +

    a) Forklar for hverandre hva modellen ovenfor beskriver. Hva er \(k\), og hva avhenger denne parameteren av?

    +

    b) Implementer modellen som et Python-program. Plott utviklingen for \(t \in [0,60]\) timer. Bruk \(k = 1.25\) per time. Hva slags populasjon kan denne modellen beskrive?

    +

    c) En populasjon vil alltid nå en bæreevne \(B\) etter en viss tid. En modell som tar hensyn til dette, kan se slik ut:

    +
    +\[ P_{t+\Delta t} = P_t + k\cdot P_t\left(1-\frac{P_t}{B}\right)\]
    +

    Forklar hva leddene i modellen betyr. Hva skjer med endringen ettersom \(P_t\) øker eller minker?

    +

    d) Implementer modellen med en valgfri bæreevne. Beskriv det du ser.

    +
    +
    +

    Del 2 – Kontinuerlige modeller#

    +

    Populasjonsmodeller kan også beskrive populasjonsendringen for enhver tid. Slike modeller formuleres som oftest som differensiallikninger. En differensiallikning er en likning som inneholder den deriverte av en funksjon, \(f'(x)\). I de fleste praktiske situasjoner beskriver slike likninger sammenhengen mellom endringen, \(f'(t)\), og tilstanden, \(f(t)\), til et system ved tida \(t\). Siden vi nå bruker den deriverte istedenfor gjennomsnittlig vekst på diskrete tidspunkter, går vi fra en diskret modell til en kontinuerlig modell med et tidssteg som i utgangspunktet er så lite som mulig:

    +
    +\[P'(t) = k\cdot P(t)\]
    +

    Vi har altså en differensiallikning som beskriver endringen i systemet \(P'(t)\), men ingen informasjon om selve systemet, altså antall individer, \(P(t)\). Vi ønsker med andre ord å finne antall individer ved enhver tid gitt en eller annen startbetingelse (antall individer ved t = 0). Det er det samme som å si at vi ønsker å finne funksjonsverdien \(f(t + dt)\) for hvert tidssteg \(dt\).

    +

    I teorien er ingen modeller kontinuerlige på en datamaskin, men vi gjør modellene “mindre diskrete” ved å velge tidssteg som er små.

    +

    a) Forklar for hverandre hva modellen ovenfor sier oss, og hva de ulike faktorene betyr.

    +

    b) Forklar hva en differensiallikning er. Hvorfor er modellen ovenfor en differensiallikning? Hva er forskjellen på en differensiallikning og en differenslikning?

    +
    +
    +

    En metode for løsing av differensiallikninger#

    +

    Nå vi skal løse en differensiallikning, har vi en initalbetingelse \(y_0\) og et uttrykk for den deriverte \(y'\). Vi ønsker derfor å finne \(y_1\) og alle andre funksjonsverider.

    +

    Du kjenner faktisk allerede til et uttrykk som inneholder en funksjon og dens deriverte, nemlig definisjonen av den deriverte! Vi bruker den numeriske definisjonen der vi tilnærmer grenseverdiene med en dx (\(\Delta x\)) som er så liten som mulig:

    +
    +\[f'(x) \approx \frac{f(x+dx) - f(x)}{dx}\]
    +

    Til å begynne med kjenner vi \(f(x)\) (\(v(t)\)), altså \(f(x_0)\). Dette er initialbetingelsen, for eksempel startfarten \(v(t_0)\). Vi kjenner også et uttrykk for den deriverte av farten (akselerasjonen) gjennom Newtons 2. lov. I tillegg bestemmer vi selv tidssteget, dx (dt), men husk at det verken bør være for lite eller for stort. Den eneste ukjente i likningen ovenfor er altså \(f(x+dx)\), og det er jo nettopp dette vi prøver å finne. Med litt enkel algebra får vi omformet uttrykket slik at det blir et uttrykk for \(f(x+dx)\). Vi ganger først med \(dx\) på begge sider:

    +
    +\[f'(x)\cdot dx \approx f(x+dx) - f(x)\]
    +

    Deretter får vi \(f(x+dx)\) aleine på høyre side og ender opp med følgende likning:

    +
    +\[f(x+dx) \approx f(x) + f'(x)\cdot dx\]
    +

    Dette kalles Eulers metode. Den brukes til å løse differensiallikninger, det vil si å integrere den deriverte slik at vi finner funksjonsverdiene. Siden vi ofte har med funksjoner av tid å gjøre, kaller vi gjerne dx for dt.

    +

    c) Implementer modellen ovenfor og bruk Eulers metode til å simulere utviklingen av populasjonen. Du kan ta utgangspunkt i programmet nedenfor eller lage et helt nytt et. Eksperimenter med ulike verdier av \(k\). Er denne \(k\)-en den samme som i den diskrete modellen du implementerte i oppgave b)?

    + +

    d) Lag en differensiallikning som beskriver utviklingen av populasjonen gitt en bæreevne. Forklar hva de ulike leddene og faktorene betyr.

    +

    e) Implementer modellen med bæreevne og beregn utviklingen med Eulers metode. Beskriv utviklingen med ord.

    +

    f) Fyll inn koden nedenfor slik at programmet simulerer populasjonsdynamikken mellom hare og gaupe, gitt følgende modeller:

    +
    +\[H'(t) = aH(t)\left(1-\frac{H(t)}{B}\right) - cH(t)G(t)\]
    +
    +\[G'(t) = dH(t)G(t) - eG(t)\]
    + +

    g) Hva kan de ulike parameterne/koeffisientene bety? Hva er de avhengig av? Hva er betydningen til hvert ledd i modellen ovenfor?

    +

    h) Følgende datasett beskriver (antakeligvis – datasettet er ikke verifisert!) et økosystem med gauper og harer i Canada fra 1845–1935. Prøv å lage en modell som beskriver denne dynamikken så godt som mulig. NB: Det er ikke lett å tilpasse alle parameterne manuelt slik at du får en god tilpasning til dataene, men prøv så godt du kan!

    +

    i) Hvorfor kan slike modeller som du har jobbet med nå, være nyttige i bevaringsbiologi?

    +
    +
    +

    Rapport#

    +

    Skriv en rapport i Jupyter notebook der du redegjør gradvis for de ulike modellene dine. Lag også en konklusjon.

    +
    +
    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/ekstra/modellering_reaksjonskinetikk.html b/docs/ekstra/modellering_reaksjonskinetikk.html new file mode 100644 index 00000000..fb00d41b --- /dev/null +++ b/docs/ekstra/modellering_reaksjonskinetikk.html @@ -0,0 +1,1101 @@ + + + + + + + + + Modelleringsoppgave IIc: Reaksjonskinetikk (kjemi) — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Modelleringsoppgave IIc: Reaksjonskinetikk (kjemi)

    + +
    + +
    +
    + +
    + +
    +

    Modelleringsoppgave IIc: Reaksjonskinetikk (kjemi)#

    +
    +

    Reaksjonsfart#

    +

    Kinetikk er et område av kjemien som handler om reaksjonsfart, det vil si hvor fort reaksjoner skjer. Gjennom eksperimenter kan vi finne ut hva forholdet mellom reaktanter og produkter er ved en gitt tid, og vi kan formulere matematiske modeller som viser denne sammenhengen. Denne sammenhengen er altså i utgangspunktet empirisk. Det vil si at vi modellerer sammenhengen basert på reelle data, ikke på matematiske utledninger.

    +

    Reaksjonsraten til et produkt eller en reaktant kan defineres som endringa i konsentrasjonen til dette produktet eller denne reaktanten i løpet av en viss tid. Når vi reduserer denne tida til å være så liten som mulig, får vi den deriverte av konsentrasjonen, siden den deriverte handler om momentan endring: \(c'(t)\). Sammenhengen mellom den deriverte av konsentrasjonen og konsentrasjonene til de ulike stoffene som deltar i reaksjonen, kaller vi en ratelov.

    +

    Vi tar et eksempel: Konsentrasjonen mellom hydrogengass og jod i gassfase har en relativt enkel ratelov. Merk derimot at ratelovene i utgangspunktet ikke har noen sammenheng med det støkiometriske forholdet mellom reaktanter og produkter. Egentlig er reaksjonen en likevektsreaksjon, men vi kan forenkle og skrive den slik (som en irreversibel reaksjon), noe som stemmer ved relativt lave temperaturer:

    +
    +\[H_2 (g) + I_2 (g) \rightarrow 2HI (g)\]
    +

    Rateloven for denne reaksjonen er som følger:

    +
    +\[v = c'(t) = k_r[H_2][I_2]\]
    +

    a) Prøv å forklare hva rateloven ovenfor forteller oss, og hva de ulike faktorene betyr.

    + +

    Ratelovene er eksempler på differensiallikninger, det vil si likninger som inneholder den deriverte (endringen av en tilstand). Uttrykket beskriver endringen i systemet \(c'(t)\), men ingen informasjon om selve systemet, altså konsentrasjonen, \(c_{HI}(t)\). Vi ønsker med andre ord å finne konsentrasjonen ved enhver tid gitt en eller annen startbetingelse (konsentrasjoner av produkter og reaktanter ved t = 0). Det er det samme som å si at vi ønsker å finne en funksjonsverdi \(f(t + dt)\) for hvert tidssteg \(dt\).

    +

    b) Forklar hva en differensiallikning er. Hvorfor er ratelover differensiallikninger?

    +
    +

    En metode for løsing av differensiallikninger#

    +

    Nå vi skal løse en differensiallikning, har vi en initalbetingelse \(y_0\) og et uttrykk for den deriverte \(y'\). Vi ønsker derfor å finne \(y_1\) og alle andre funksjonsverider.

    +

    Du kjenner faktisk allerede til et uttrykk som inneholder en funksjon og dens deriverte, nemlig definisjonen av den deriverte! Vi bruker den numeriske definisjonen der vi tilnærmer grenseverdiene med en dx (\(\Delta x\)) som er så liten som mulig:

    +
    +\[f'(x) \approx \frac{f(x+dx) - f(x)}{dx}\]
    +

    Til å begynne med kjenner vi \(f(x)\) (\(v(t)\)), altså \(f(x_0)\). Dette er initialbetingelsen, for eksempel startfarten \(v(t_0)\). Vi kjenner også et uttrykk for den deriverte av farten (akselerasjonen) gjennom Newtons 2. lov. I tillegg bestemmer vi selv tidssteget, dx (dt), men husk at det verken bør være for lite eller for stort. Den eneste ukjente i likningen ovenfor er altså \(f(x+dx)\), og det er jo nettopp dette vi prøver å finne. Med litt enkel algebra får vi omformet uttrykket slik at det blir et uttrykk for \(f(x+dx)\). Vi ganger først med \(dx\) på begge sider:

    +
    +\[f'(x)\cdot dx \approx f(x+dx) - f(x)\]
    +

    Deretter får vi \(f(x+dx)\) aleine på høyre side og ender opp med følgende likning:

    +
    +\[f(x+dx) \approx f(x) + f'(x)\cdot dx\]
    +

    Dette kalles Eulers metode. Den brukes til å løse differensiallikninger, det vil si å integrere den deriverte slik at vi finner funksjonsverdiene. Siden vi ofte har med funksjoner av tid å gjøre, kaller vi gjerne dx for dt.

    +

    c) Implementer modellen ovenfor og bruk Eulers metode til å simulere utviklingen av konsentrasjonene til \(I_2\), \(H_2\) og \(HI\). For denne reaksjonen er ratekonstanten for dannelse av HI \(k_r = 4.84 \cdot 10^{-2}\) ved 400 grader Celsius. Du kan ta utgangspunkt i programmet nedenfor eller lage et helt nytt et. Eksperimenter med ulike verdier av \(k\). Hvis du ikke lager programmet fra grunnen av, må du forklare hva som skjer på de ulike linjene.

    + +

    d) Prøv å simulere reaksjonen for 750 sekunder. Beskriv hva som skjer i reaksjonen.

    +

    Ved høye temperaturer vil flere og flere HI-molekyler kollidere og rives løs igjen til \(I_2\) og \(H_2\). Reaksjonen er derfor egentlig reversibel, selv om vi har gjort en forenkling og beskrevet den som irreversibel ovenfor. Det viser seg at den motsatte reaksjonen følger denne rateloven:

    +
    +\[c'(t) = k_{bakover}[HI]^2\]
    +

    Reaksjonen er altså andreordens med hensyn på konsentrasjonen av hydrogenjodid. Den totale rateloven for hydrogenjodid blir derfor:

    +
    +\[c'(t) = k_{framover}[H_2][I_2] - k_{bakover}[HI]^2\]
    +

    Dersom vi kjenner likevektskonstanten \(K\) ved den gitte temperaturen, kan vi finne \(k_{bakover}\) ved å benytte følgende sammenheng:

    +
    +\[K = \frac{k_{framover}}{k_{bakover}}\]
    +

    e) Lag et program som simulerer reaksjonen mellom \(I_2\) og \(H_2\) ved 450\(^\circ\)C. Sett likevektskontstanten til å være 100 og \(k_{framover}\) til å være \(4.8\cdot 10^{-2}\). Lag et plott som viser konsentrasjonen som funksjon av tid, og et plott som viser reaksjonsraten/reaksjonshastigheten som funksjon av tid. Kommenter plottene. Stemmer dette med det du kan om likevekter?

    +
    +
    +

    Rapport#

    +

    Skriv en rapport i Jupyter notebook der du redegjør gradvis for de ulike modellene dine. Lag også en konklusjon.

    +
    +
    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + +
    + + + +
    + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/ekstra/modelleringsoppgave_a.html b/docs/ekstra/modelleringsoppgave_a.html new file mode 100644 index 00000000..493b94f9 --- /dev/null +++ b/docs/ekstra/modelleringsoppgave_a.html @@ -0,0 +1,1205 @@ + + + + + + + + + Modelleringsoppgave I: Smittemodellering — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Modelleringsoppgave I: Smittemodellering

    + +
    + +
    +
    + +
    + +
    +

    Modelleringsoppgave I: Smittemodellering#

    +
    +

    Smittespredning#

    +

    Vi utforsker her en modell for smittesprendning av sykdommer. Vi kan tenke oss at antall smittede indivier I (“Inceptibles”) utvikler seg slik:

    +
    +\[I_{t+1} = I_t + aI_t\]
    +

    Bildet nedenfor viser spike-proteinet som ligger på overflaten til coronaviruset, og som gir viruset dets karakteristiske form:

    +
    +
    +
    +

    You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
    + jupyter labextension install jupyterlab_3dmol

    +
    +
    <py3Dmol.view at 0x21d5d6892e0>
    +
    +
    +
    +
    +
    +

    Oppgave 1#

    +
      +
    • Forklar for hverandre med ord hva modellen for I sier. Hva betyr de ulike symbolene i likningen?

    • +
    • I hvilke sammenhenger kan det være hensiktsmessig å bruke en slik modell? Hvilke begrensninger har modellen?

    • +
    • Lag et program som simulerer smitteutviklingen over 48 uker i en populasjon med 157759 individer, en smitterate på 0.2 per uke og antall smittede ved t = 0 lik 3. Hvis du trenger hjelp, kan du trykke på hintet nedenfor.

    • +
    + +
      +
    • Beskriv utviklingen. Varier systematisk a og antall smittede til å begynne med. Kommenter hva som skjer.

    • +
    • Hvorfor er det viktig at smitteraten har en enhet (her: uker)?

    • +
    +
    +
    +

    Oppgave 2#

    +

    Vi utvider modellen ved å innføre en kategori for de som er mottakelige, S (“susceptibles”). Det vil si at de som allerede er smittet, ikke kan bli smittet igjen. Vi modifiserer da modellen for de smittede, slik at den også tar hensyn til den nye kategorien:

    +
    +\[I_{t+1} = I_t + aI_tS_t\]
    +
      +
    • Forklar hva som er endret i modellen. Hvorfor kan vi gjøre dette?

    • +
    • Lag en modell for S (mottakelige) basert på modellen for I. Hint: Når en person er smittet, hva skjer med antall mottakelige? Modellen skal være nokså lik modellen for I, med noen små forskjeller. Lag en variabel endring \(=aI_tS_t\) som første linje i løkka.

    • +
    + +
      +
    • Utvid programmet ditt til å beregne og plotte antall mottakelige og smittede i samme koordinatsystem. Bruk merkelapper (labels og legend) slik at vi ser hvilken kurve som beskriver hva.

    • +
    • Varier systematisk a og antall smittede til å begynne med (\(I_0\)). Kommenter hva som skjer.

    • +
    • I hvilke sammenhenger kan det være hensiktsmessig å bruke en slik modell? Hvilke begrensninger har modellen?

    • +
    +
    +
    +

    Oppgave 3#

    +

    Vi legger nå til muligheten for å bli frisk (hurra!). Da trenger vi også å innføre en bedringsrate, b. Et uttrykk for antall smittede kan nå være:

    +
    +\[I_{t+1} = I_t + aI_tS_t - bI_t\]
    +
      +
    • Forklar alle leddene i modellen for smittede. Hva er betydningen til b? Hva kan være en ok størrelse for b i dette tilfellet? Diskuter.

    • +
    • Lag en modell for antall friske, R (“recovered”), med utgangspunkt i modellen ovenfor.

    • +
    • Simuler og plott utviklingen. Hvis grafen ikke ser fornutftig ut, bør du eksperimentere med andre verdier av b.

    • +
    • Beskriv grafen med ord.

    • +
    • I hvilke sammenhenger kan det være hensiktsmessig å bruke en slik modell? Hvilke begrensninger har modellen?

    • +
    +

    Det er vanskelig å fastsette parametrene a og b. Ofte fastsettes de ved å løpende sammenlikne modellene med reelle data fra observasjoner eller eksperimenter. I fila ‘influensa.txt’ (se “Datafiler” i sidemenyen) finner du en oversikt over antall smittede av influensaviruset H3N2 i en populasjon med 157 759 personer.

    +
      +
    • Les av fila og plott dataene sammen med modellen og prøv å variere a og b slik at modellen stemmer så godt som mulig med dataene.

    • +
    • Diskuter om modellen kan si noe mer generelt om smittespredning enn akkurat dette tilfellet.

    • +
    +
    +
    +

    Ekstra: Oppgave 4#

    +

    Vaksiner kan redusere antall mottakelige betraktelig.

    +
      +
    • Hvordan kan du utvide modellen slik at den tar hensyn til vaksinering?

    • +
    • Lag et program der du utforsker effekten av ulike grader av vaksinasjon (i %).

    • +
    +
    +
    +

    Rapport#

    +

    Skriv en rapport i Jupyter notebook der du redegjør gradvis for de ulike modellene dine. Lag også en konklusjon.

    +
    +
    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + +
    + + + +
    + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/ekstra/plotting_data.html b/docs/ekstra/plotting_data.html new file mode 100644 index 00000000..3a174402 --- /dev/null +++ b/docs/ekstra/plotting_data.html @@ -0,0 +1,1118 @@ + + + + + + + + + Plotting og behandling av eksperimentelle data — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Plotting og behandling av eksperimentelle data

    + +
    + +
    +
    + +
    + +
    +

    Plotting og behandling av eksperimentelle data#

    +

    En viktig del av kjemi som et eksperimentelt fag er å kunne representere og +behandle data på en hensiktsmessig måte.

    +
    +

    Læringsutbytte

    +

    Etter å ha arbeidet med denne delen av emnet, skal du kunne:

    +
      +
    1. Plotte funksjoner.

    2. +
    3. Plotte data fra lister/arrayer.

    4. +
    5. Lese filer med read og loadtxt.

    6. +
    7. Utføre interpolasjon og regresjon. Vurdere når dette kan være nyttig.

    8. +
    9. Bruke ferdiglagde og lage egne statistikkmoduler.

    10. +
    +
    +
    +

    Plotting av funksjoner#

    +

    I videoen nedenfor vises plotting av funksjoner i Python. Legg merke til at kortversjonen *from pylab import ** brukes her. Du bør bruke import matplotlib.pyplot as plt og import numpy as np.

    +
    +
    +
    +
    +

    Når du har sett videoen, kan du gjøre følgende oppgave for å sjekke om du forstår innholdet:

    +
    +

    Underveisoppgave

    +

    Plott funksjonen \(f(x) = e^{x} - 2\) for \(x \in [0,5]\). Bruk matplotlib og numpy.

    +
    +
    +
    +

    Lesing av fildata#

    +
    +
    +
    +
    +
    +

    Underveisoppgave

    +

    Les fila titrering.txt og plott titrerkurven. Bruk egnede aksetitler og pynt plottet.

    +
    + +
    +
    +

    Interpolasjon#

    +
    +
    +
    +
    +
    +

    Underveisoppgave

    +

    Bruk koderuta ovenfor og interpoler titreringsdataene over hele definisjonsområdet.

    +
    +
    +
    +

    Regresjon#

    +
    +
    +
    +
    +
    +

    Underveisoppgave

    +

    Prøv å gjøre regresjon av 1., 2., 3. og 4. grad av listedataene i progammet nedenfor:

    +
    +
    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + +
    + + + +
    + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/ekstra/plotting_filmer.html b/docs/ekstra/plotting_filmer.html new file mode 100644 index 00000000..d94a3f45 --- /dev/null +++ b/docs/ekstra/plotting_filmer.html @@ -0,0 +1,1057 @@ + + + + + + + + + Plotting (teori) — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Plotting (teori)

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    + +
    + +
    +

    Plotting (teori)#

    +
    +

    Læringsutbytte

    +

    Etter å ha arbeidet med dette temaet, skal du kunne:

    +
      +
    1. Bruke matplotlib-biblioteket og seaborn-biblioteket til plotting.

    2. +
    3. Plotte datapunkter og funksjoner.

    4. +
    5. Lage og tolke ulike visualiseringer.

    6. +
    +
    +
    +

    Plotting med matplotlib#

    +
    +
    +
    + +
    +
    +

    Når du har sett videoen, kan du gjøre følgende oppgave for å sjekke om du forstår innholdet:

    +
    +

    Underveisoppgave

    +

    Plott \(f(x) = cos(x) - 1\) med \(x \in [0,8]\). Pynt plottet.

    +
    +
    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + +
    + +
    + +
    + On this page +
    + +
    + +
    + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/ekstra/repetisjon.html b/docs/ekstra/repetisjon.html new file mode 100644 index 00000000..56dbaf3b --- /dev/null +++ b/docs/ekstra/repetisjon.html @@ -0,0 +1,986 @@ + + + + + + + + + Repetisjon — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Repetisjon

    + +
    +
    + +
    +
    +
    + +
    + +
    +

    Repetisjon#

    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/ekstra/tema1.html b/docs/ekstra/tema1.html new file mode 100644 index 00000000..55010f63 --- /dev/null +++ b/docs/ekstra/tema1.html @@ -0,0 +1,1103 @@ + + + + + + + + + Tema 1: Tall og variabler — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Tema 1: Tall og variabler

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    + +
    + +
    +

    Tema 1: Tall og variabler#

    +
    +
    +
    # Variabeltyper
    +heltall = 4 # Kommentar
    +flyttall = 2.2
    +streng = "Hei på deg!"
    +
    +# Output
    +a = 2
    +pi = 3.14
    +summen = heltall + a + pi
    +
    +print("Summen er:", summen)
    +
    +
    +
    +
    +
    Summen er: 9.14
    +
    +
    +
    +
    +
    +

    Input#

    +
    +
    +
    #m = 0.2 # masse i kg
    +c = 3E8 # lyshastighet i vakuum i m/s
    +m = input("Masse:")
    +m = float(m)       # Kan gjøres i linja over, men denne metoden er kanskje mer oversiktlig
    +E = m*c**2
    +
    +print("Energien til et legeme med masse",
    +      m,"kg er",E, "J.")
    +
    +
    +
    +
    +
    Masse:2
    +Energien til et legeme med masse 2.0 kg er 1.8e+17 J.
    +
    +
    +
    +
    +
    +
    +

    Matematiske biblioteker#

    +
    +
    +
    from pylab import *
    +
    +oksonium = input("[H3O+] i mol/L: ") # mol/L
    +oksonium = float(oksonium)
    +pH = -log10(oksonium)
    +
    +print("pH-en i løsninga er:", round(pH,2))
    +
    +
    +
    +
    +
    [H3O+] i mol/L: 0.1
    +pH-en i løsninga er: 1.0
    +
    +
    +
    +
    +
    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + +
    + +
    + +
    + On this page +
    + +
    + +
    + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/ekstra/tema10.html b/docs/ekstra/tema10.html new file mode 100644 index 00000000..ffcef9f3 --- /dev/null +++ b/docs/ekstra/tema10.html @@ -0,0 +1,1266 @@ + + + + + + + + + Tema 10: Derivasjon og integrasjon — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Tema 10: Derivasjon og integrasjon

    + +
    + +
    +
    + +
    + +
    +

    Tema 10: Derivasjon og integrasjon#

    +
    +

    Derivasjon#

    +
    +

    1. Derivasjon av funksjoner:#

    +
    +
    +
    def f(x):
    +    return x**2
    +
    +def derivert(f, x, dx):
    +    fder = (f(x + dx) - f(x))/dx
    +    return fder
    +
    +x = 1
    +analytisk = 2
    +for i in range(1, 17):
    +    dx = 10**(-i)
    +    numerisk = derivert(f,x,dx)
    +    print(f"For dx lik {dx} er feilen {abs(numerisk-analytisk)}")
    +
    +
    +
    +
    +
    For dx lik 0.1 er feilen 0.10000000000000187
    +For dx lik 0.01 er feilen 0.010000000000000675
    +For dx lik 0.001 er feilen 0.0009999999996974651
    +For dx lik 0.0001 er feilen 9.999999917198465e-05
    +For dx lik 1e-05 er feilen 1.0000013929811757e-05
    +For dx lik 1e-06 er feilen 9.999243673064484e-07
    +For dx lik 1e-07 er feilen 1.0108780656992167e-07
    +For dx lik 1e-08 er feilen 1.21549419418443e-08
    +For dx lik 1e-09 er feilen 1.6548074199818075e-07
    +For dx lik 1e-10 er feilen 1.6548074199818075e-07
    +For dx lik 1e-11 er feilen 1.6548074199818075e-07
    +For dx lik 1e-12 er feilen 0.00017780116468202323
    +For dx lik 1e-13 er feilen 0.0015985556747182272
    +For dx lik 1e-14 er feilen 0.0015985556747182272
    +For dx lik 1e-15 er feilen 0.22044604925031308
    +For dx lik 1e-16 er feilen 2.0
    +
    +
    +
    +
    +
    +
    +

    2. Derivasjon av diskrete data (punkter)#

    +

    Puslespill

    +
    +
    +
    from pylab import *
    +
    +data = loadtxt("datafiler/heistur.csv", skiprows = 1, delimiter = ",")
    +tid = data[:,0]
    +posisjon = data[:,2]
    +
    +plot(tid,posisjon)
    +show()
    +print(posisjon)
    +len(posisjon)
    +
    +
    +
    +
    +../../_images/ef7404d0a9ed2237e6c77dbea281f29f3a887643ac42bd9dc92e149d10541404.png +
    [  0.          -0.41530332  -1.27245747  -2.10837905  -2.89006706
    +  -3.79347005  -4.52289161  -5.27799927  -6.08854176  -6.94216878
    +  -7.86617154  -8.66880686  -9.53207626 -10.30728764 -11.17164433
    + -11.97476839 -12.62386432 -13.38963929 -14.14735903 -15.07900081
    + -15.69402869 -15.95216465 -16.02847067 -16.13767422 -16.22191004]
    +
    +
    +
    25
    +
    +
    +
    +
    +
    +
    +
    fart = []
    +for i in range(len(tid)-1):
    +    dy = posisjon[i+1] - posisjon[i]
    +    dx = tid[i+1] - tid[i]
    +    der = dy/dx
    +    fart.append(der)
    +
    +
    +
    +
    +
    +
    +
    plot(tid[:-1], fart)
    +show()
    +
    +
    +
    +
    +../../_images/1590c82e77863b29825a8a9f763654cfee2db128a3aa9677643597e7dba73c6d.png +
    +
    +
    +
    +
    +

    Integrasjon#

    +
    +

    1. Rektangelmetoden#

    +
    +
    +
    def f(x):
    +    return x + 2
    +
    +a = 1 # x_0 = 1
    +b = 4 # x_N = 4
    +
    +# Hva er integralet av f(x) mellom 1 og 4?
    +
    +A = 0
    +N = 3
    +dx = (b - a)/N # dx = (4-1)/3 = 1
    +
    +for i in range(N):
    +    A = A + f(a + i*dx)*dx
    +
    +print("Integralet av f(x) mellom", a, "og", b, "er:", A)
    +print(f"Integralet av f(x) mellom {a} og {b} er {A}.")
    +
    +# Lag en funksjon: def rektangelmetoden(...)
    +
    +
    +
    +
    +
    Integralet av f(x) mellom 1 og 4 er: 12.0
    +Integralet av f(x) mellom 1 og 4 er 12.0.
    +
    +
    +
    +
    +
    +
    +
    def f(x):
    +    return x + 2
    +
    +def trapesmetoden(f, a, b, N):
    +    dx = (b-a)/N
    +    A = (f(a) + f(b))/2
    +    for i in range(1,N):
    +        A = A + f(a + i*dx)
    +    return A*dx
    +
    +itsatrap = trapesmetoden(f, 1, 4, 1)
    +print(itsatrap)
    +
    +
    +
    +
    +
    13.5
    +
    +
    +
    +
    +
    +
    +
    from scipy.integrate import simps, trapz, quad
    +from scipy.misc import derivative
    +from pylab import *
    +
    +def f(x):
    +    return x + 2
    +
    +x = linspace(1,4,100000)
    +y = f(x)
    +
    +simpson = simps(y,x)
    +trapes = trapz(y,x)
    +kvadd = quad(f, 1, 4)
    +der = derivative(f, 1)
    +
    +print(simpson)
    +print(trapes)
    +print(kvadd)
    +
    +
    +
    +
    +
    13.5
    +13.500000000000002
    +(13.5, 1.4988010832439613e-13)
    +
    +
    +
    +
    +
    +
    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/ekstra/tema11.html b/docs/ekstra/tema11.html new file mode 100644 index 00000000..79e8aeb8 --- /dev/null +++ b/docs/ekstra/tema11.html @@ -0,0 +1,1012 @@ + + + + + + + + + Tema 11: Numerisk løsing av likninger — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Tema 11: Numerisk løsing av likninger

    + +
    +
    + +
    +
    +
    + +
    + +
    +

    Tema 11: Numerisk løsing av likninger#

    +
    +
    +
    def f(x):
    +    return x - 1
    +
    +a = -5
    +b = 5
    +m = (a+b)/2
    +
    +while f(m) != 0:
    +    if f(a)*f(m) < 0:
    +        b = m
    +    elif f(b)*f(m) < 0:
    +        a = m
    +    m = (a+b)/2
    +    
    +print(m)
    +
    +
    +
    +
    +
    1.0
    +
    +
    +
    +
    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/ekstra/tema12.html b/docs/ekstra/tema12.html new file mode 100644 index 00000000..4d415acb --- /dev/null +++ b/docs/ekstra/tema12.html @@ -0,0 +1,1156 @@ + + + + + + + + + Tema 12: Differensiallikninger — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Tema 12: Differensiallikninger

    + +
    + +
    +
    + +
    + +
    +

    Tema 12: Differensiallikninger#

    +
    +

    Newtons 2. lov#

    +

    Vi kan forstå sammenhengen mellom akselerasjon, fart og posisjon ved å bruke kinematikklikningene for konstant akselerasjon og forenkle ved å la akselerasjonen være konstant i et svært lite tidsrom dt. Eller vi kan formulere Newtons 2. lov som en differensiallikning og simulere bevegelsen ved Eulers metode. Vi skal se at dette er en ekvivalent framgangsmåte!

    +
    +
    +
    # Startbetingelser og konstanter
    +v0 = 0   # startfart m/s
    +s0 = 20  # startposisjon m
    +t0 = 0   # starttid i s
    +dt = 1E-5   # tidssteg i s 
    +
    +m = 1    # kg
    +g = 9.8  # tyngdeakselerasjon m/s^2
    +k = 0.5  # luftmotstandskoeffisienten
    +
    +v = v0
    +s = s0
    +t = t0
    +
    +while s >= 0:
    +    a = -g - k*v/m # Modell utleda fra N2
    +    v = v + a*dt   # Eulers metode (men også kinematikklikning!)
    +    s = s + v*dt   # Eulers metode
    +    t = t + dt
    +    
    +print("Ballen treffer bakken etter", t, "sekunder")
    +
    +
    +
    +
    +
    Ballen treffer bakken etter 2.425710000007424 sekunder
    +
    +
    +
    +
    +
    +
    +
    +

    Smittemodellering fortsettelse#

    +
      +
    • Ga en diskret smittemodellering noen urealistiske resultater?

    • +
    • La oss se på en kontinuerlig modell der vi modellerer smitten ved hjelp av differensiallikninger.

    • +
    +
    +\[S'(t) = -aS(t)\cdot I(t)\]
    +
    +\[I'(t) = aS(t)\cdot I(t) - bI(t)\]
    +
    +\[R'(t) = -bI(t)\]
    +
    +
    +
    from pylab import *
    +
    +# Konstanter og startbetingelser
    +N = 100000        # Antall mennesker
    +I0 = 15           # Antall smittede ved t0
    +S0 = (N - I0)*0.5 # Antall disponerte ved t0
    +R0 = 0            # Antall friskmeldte ved t0
    +a = 0.122/N*10
    +b = 0.1
    +
    +I = I0
    +S = S0
    +R = R0
    +
    +# Tidsparametre
    +dt = 1E-2
    +t0 = 0
    +t = 0
    +tid_slutt = 100 # dager
    +
    +# Lister
    +smittede = [I0]
    +mottakelige = [S0]
    +friske = [R0]
    +tid = [t0]
    +
    +# Simuleringsløkke
    +while t <= tid_slutt:
    +    Sder = -a*S*I
    +    Ider = a*S*I - b*I
    +    Rder = b*I
    +    # Eulers metode
    +    S = S + Sder*dt
    +    I = I + Ider*dt
    +    R = R + Rder*dt
    +    t = t + dt
    +    smittede.append(I)
    +    mottakelige.append(S)
    +    friske.append(R)
    +    tid.append(t)
    +    
    +plot(tid, smittede, label="Smittede")
    +plot(tid, mottakelige, label="Mottakelige")
    +plot(tid, friske, label="Friskmeldte")
    +legend()
    +show()
    +
    +
    +
    +
    +../../_images/078845904526f1de40ba5ca3a173afbfeae2df84a52c3326796de962e84cb472.png +
    +
    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/ekstra/tema2.html b/docs/ekstra/tema2.html new file mode 100644 index 00000000..b960d049 --- /dev/null +++ b/docs/ekstra/tema2.html @@ -0,0 +1,1033 @@ + + + + + + + + + Tema 2: Beslutninger — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Tema 2: Beslutninger

    + +
    +
    + +
    +
    +
    + +
    + +
    +

    Tema 2: Beslutninger#

    +
    +
    +
    tall = float(input("Tall: "))
    +
    +if tall < 0:
    +    print("Tallet er negativt.")
    +elif tall > 0:
    +    print("Tallet er positivt.")
    +elif tall == 0:
    +    print("Tallet er null!")
    +
    +
    +
    +
    +
    Tall: 5
    +Tallet er positivt.
    +
    +
    +
    +
    +
    +
    +
    from pylab import *
    +
    +oksonium = input("[H3O+] i mol/L: ") # mol/L
    +oksonium = float(oksonium)
    +pH = -log10(oksonium)
    +
    +print("pH-en i løsninga er:", round(pH,2))
    +
    +if pH > 7:
    +    print("Løsninga er basisk")
    +elif pH < 7:
    +    print("Løsninga er sur")
    +else:
    +    print("Løsninga er nøytral.")
    +
    +
    +
    +
    +
    [H3O+] i mol/L: 0.1
    +pH-en i løsninga er: 1.0
    +Løsninga er sur
    +
    +
    +
    +
    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/ekstra/tema3.html b/docs/ekstra/tema3.html new file mode 100644 index 00000000..b1f0a93a --- /dev/null +++ b/docs/ekstra/tema3.html @@ -0,0 +1,1111 @@ + + + + + + + + + Tema 3: Løkker — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Tema 3: Løkker

    + +
    +
    + +
    +
    +
    + +
    + +
    +

    Tema 3: Løkker#

    +
    +
    +
    from time import sleep
    +
    +for i in range(5):
    +    print("Du er kul!")
    +    sleep(1)
    +
    +# Time-funksjonen er ikke nødvendig her! Det er bare for å få en pause mellom hver utskrift.
    +
    +
    +
    +
    +
    Du er kul!
    +Du er kul!
    +Du er kul!
    +Du er kul!
    +Du er kul!
    +
    +
    +
    +
    +
    +
    +
    partall = 0
    +
    +while partall <= 102:
    +    print(partall)
    +    partall = partall + 2
    +
    +
    +
    +
    +
    0
    +2
    +4
    +6
    +8
    +10
    +12
    +14
    +16
    +18
    +20
    +22
    +24
    +26
    +28
    +30
    +32
    +34
    +36
    +38
    +40
    +42
    +44
    +46
    +48
    +50
    +52
    +54
    +56
    +58
    +60
    +62
    +64
    +66
    +68
    +70
    +72
    +74
    +76
    +78
    +80
    +82
    +84
    +86
    +88
    +90
    +92
    +94
    +96
    +98
    +100
    +102
    +
    +
    +
    +
    +
    +
    +
    from math import factorial
    +
    +fakultet = 1
    +
    +for i in range(2,43):
    +    fakultet = fakultet*i
    +
    +print('Feilen er:', fakultet-factorial(42))
    +
    +
    +
    +
    +
    Feilen er: 0
    +
    +
    +
    +
    +
    +
    +
    summen = 0
    +
    +for i in range(1,1000):
    +    tall = 1/i**2
    +    summen = summen + tall
    +print(summen)
    +
    +
    +
    +
    +
    1.6439335666815615
    +
    +
    +
    +
    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/ekstra/tema4.html b/docs/ekstra/tema4.html new file mode 100644 index 00000000..1d33ffef --- /dev/null +++ b/docs/ekstra/tema4.html @@ -0,0 +1,1052 @@ + + + + + + + + + Tema 4: Funksjoner — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Tema 4: Funksjoner

    + +
    +
    + +
    +
    +
    + +
    + +
    +

    Tema 4: Funksjoner#

    +
    +
    +
    def f(x):
    +    return x**2
    +
    +def G(t):
    +    return t + 1/4
    +
    +print(f(1), G(2))
    +
    +
    +
    +
    +
    1 2.25
    +
    +
    +
    +
    +
    +
    +
    from pylab import *
    +
    +funksjonsverdier = []
    +tid = []
    +
    +def g(t):
    +    return sqrt(t) + 2*log10(t)
    +
    +for t in range(1,100):
    +    funksjonsverdier.append(g(t))
    +    tid.append(t)
    +    
    +plot(tid,funksjonsverdier)
    +show()
    +
    +
    +
    +
    +../../_images/92bc01781c6dfc740ed85bca74bc8468d8b764236980f6965d96cf4294a51a29.png +
    +
    +
    +
    +
    def gratulerer(navn):
    +    for i in range(10):
    +        print("Gratulerer med dagen,",navn)
    +
    +gratulerer('Jesper')
    +
    +
    +
    +
    +
    Gratulerer med dagen, Jesper
    +Gratulerer med dagen, Jesper
    +Gratulerer med dagen, Jesper
    +Gratulerer med dagen, Jesper
    +Gratulerer med dagen, Jesper
    +Gratulerer med dagen, Jesper
    +Gratulerer med dagen, Jesper
    +Gratulerer med dagen, Jesper
    +Gratulerer med dagen, Jesper
    +Gratulerer med dagen, Jesper
    +
    +
    +
    +
    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/ekstra/tema5.html b/docs/ekstra/tema5.html new file mode 100644 index 00000000..1f4e9ea3 --- /dev/null +++ b/docs/ekstra/tema5.html @@ -0,0 +1,1170 @@ + + + + + + + + + Tema 5: Datasamlinger og plotting — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Tema 5: Datasamlinger og plotting

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    + +
    + +
    +

    Tema 5: Datasamlinger og plotting#

    +
    +

    Lister#

    +
    +
    +
    dyr = ['katt', 'hund', 'axolotl', 'koala', 'gorilla', 'stumpneseape', 'nebbdyr']
    +print(dyr)
    +dyr.remove('katt')
    +print(dyr)
    +dyr.append('bever')
    +print(dyr)
    +
    +
    +
    +
    +
    ['katt', 'hund', 'axolotl', 'koala', 'gorilla', 'stumpneseape', 'nebbdyr']
    +['hund', 'axolotl', 'koala', 'gorilla', 'stumpneseape', 'nebbdyr']
    +['hund', 'axolotl', 'koala', 'gorilla', 'stumpneseape', 'nebbdyr', 'bever']
    +
    +
    +
    +
    +
    +
    +
    from pylab import *
    +
    +def f(x):
    +    return x**2 - 2
    +
    +x = []
    +i = -3
    +while i < 4:
    +    x.append(i)
    +    i = i + 1
    +x = array(x)
    +
    +plot(x,f(x),linestyle='--',marker='o')
    +show()
    +
    +
    +
    +
    +../../_images/be108ea126bfce2da9dee46addb8cfb87f4d0eb8a5034ba4407033863206881d.png +
    +
    +
    +
    +
    from pylab import *
    +
    +x = linspace(-3,3,1000)
    +y = x**2 - 2
    +
    +plot(x,y)
    +show()
    +
    +
    +
    +
    +../../_images/4cddcc924adf7607a6e4575ebf441aa866de96aee8a77c526c7565f5abca90c6.png +
    +
    +
    +
    +
    from pylab import *
    +
    +liste1 = [1,2,3]
    +liste2 = [5,4,3]
    +
    +print("Listeaddisjon:", liste1 + liste2)
    +
    +array1 = array(liste1)
    +array2 = array(liste2)
    +
    +print("Arrayaddisjon:", array1+array2)
    +print("Arraymultiplikasjon:",array1*array2)
    +
    +
    +
    +
    +
    Listeaddisjon: [1, 2, 3, 5, 4, 3]
    +Arrayaddisjon: [6 6 6]
    +Arraymultiplikasjon: [5 8 9]
    +
    +
    +
    +
    +
    +
    +
    from pylab import *
    +
    +# Med lister
    +partall = []
    +for tall in range(0,101,2):
    +    partall.append(tall)
    +
    +tall = 0
    +while tall <= 100:
    +    partall.append(tall)
    +    tall = tall + 2
    +print(partall)
    +
    +# Med arrayer
    +partall = zeros(51)
    +
    +for i in range(50):
    +    partall[i+1] = partall[i] + 2
    +print(partall)
    +
    +
    +
    +
    +
    [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100]
    +[  0.   2.   4.   6.   8.  10.  12.  14.  16.  18.  20.  22.  24.  26.
    +  28.  30.  32.  34.  36.  38.  40.  42.  44.  46.  48.  50.  52.  54.
    +  56.  58.  60.  62.  64.  66.  68.  70.  72.  74.  76.  78.  80.  82.
    +  84.  86.  88.  90.  92.  94.  96.  98. 100.]
    +
    +
    +
    +
    +
    +
    +
    from pylab import *
    +
    +x = linspace(-3,3,7)
    +f = x + 3
    +g = exp(0.01*x)
    +h = cos(x) - 1
    +
    +plot(x,f,color='firebrick',marker='.',linestyle='--',label='f')
    +plot(x,g,color='hotpink',marker='*',label='g')
    +plot(x,h,color='navy',marker='>',label='h')
    +grid()
    +xlabel('tid (s)')
    +ylabel('Temperatur (celsius)')
    +legend()
    +show()
    +
    +
    +
    +
    +../../_images/fbe207c3f3e4f1b4c6d912bfc31b2e68287c362f14141cac4191864d23cb4348.png +
    +
    +
    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + +
    + +
    + +
    + On this page +
    + +
    + +
    + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/ekstra/tema6.html b/docs/ekstra/tema6.html new file mode 100644 index 00000000..5c8bb27e --- /dev/null +++ b/docs/ekstra/tema6.html @@ -0,0 +1,1252 @@ + + + + + + + + + Tema 6: Datahåndtering — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Tema 6: Datahåndtering

    + +
    + +
    +
    + +
    + +
    +

    Tema 6: Datahåndtering#

    +

    Trenger loadtxt-funksjonen for å lese av filer.

    +
    +
    +
    from pylab import *
    +
    +data = loadtxt('datafiler/solflekker.txt', skiprows=1)
    +
    +tid = data[:,0]
    +solflekker = data[:,1]
    +
    +plot(tid,solflekker,color='forestgreen')
    +xlabel('Tid (md. etter 1. januar 1749)')
    +ylabel('Gjennomsnittlig antall solflekker')
    +grid()
    +show()
    +
    +
    +
    +
    +../../_images/62f4853de0edbd86df6c69e73df8883983a22321ddcf604155b31f3342209328.png +
    +
    +
    +
    +
    data_temp = loadtxt('datafiler/temperatur.txt', skiprows = 1)
    +
    +tid = data_temp[:,0]
    +temp = data_temp[:,1]
    +
    +plot(tid,temp)
    +show()
    +
    +
    +
    +
    +../../_images/5995f8b95f2e3c78c19d9baf45fd1288610eeab223f1849943f59a5c2053658d.png +
    +
    +
    +

    Statistiske operasjoner#

    +
    +
    +
    snitt = mean(temp)
    +avvik = std(temp)
    +
    +print("Temperaturen var på:", round(snitt,2), "+-", round(avvik,2))
    +
    +
    +
    +
    +
    Temperaturen var på: 22.59 +- 7.81
    +
    +
    +
    +
    +

    Gjennomsnitt:

    +
    +\[\bar{x} = \frac{1}{n} \sum_{i=1}^n x_i\]
    +

    Standardavvik:

    +
    +\[s = \sqrt{\frac{1}{n} \sum_{i=1}^n (x_i - \bar{x})^2}\]
    +
    +
    +
    def gjennomsnitt(verdier):
    +    n = len(verdier)
    +    summen = 0 # Eventuelt: summen = sum(verdier)
    +    for verdi in verdier:
    +        summen = summen + verdi
    +    snitt = summen/n
    +    return snitt
    +
    +
    +
    +
    +
    +
    +
    tall = [1,3,1,3]
    +snitt = gjennomsnitt(tall)
    +print(snitt)
    +
    +
    +
    +
    +
    2.0
    +
    +
    +
    +
    +
    +
    +
    def standardavvik(verdier):
    +    n = len(verdier)
    +    snitt = gjennomsnitt(verdier)
    +    avvik = 0
    +    for verdi in verdier:
    +        avvik = avvik + (verdi - snitt)**2
    +    avvik = (avvik/n)**0.5
    +    return avvik
    +
    +
    +
    +
    +
    +
    +
    avvik = standardavvik(tall)
    +print(avvik)
    +
    +
    +
    +
    +
    1.0
    +
    +
    +
    +
    +
    +
    +

    Visualiseringer av data#

    +
    +

    Sektordiagram#

    +
    +
    +
    from pylab import *
    +
    +karakterer = ["Promod", "Kjemi 1", "Fysikk 1", "Biologi 1", "Tekforsk", "R1"]
    +antall = [28, 89, 78, 71, 12, 112]
    +
    +pie(antall, labels=karakterer)
    +show()
    +
    +
    +
    +
    +../../_images/9a89d6854899bad4609317cd061cc30f0846cb7450a8cb666be32d6af241a7d9.png +
    +
    +
    +
    +

    Søylediagram#

    +
    +
    +
    bar(karakterer, antall)
    +show()
    +
    +
    +
    +
    +../../_images/a12332cec3e85cdf9fe42fc691faaceb7fb27f45a78e17a56a08d1cebe5f0f38.png +
    +
    +
    +
    +
    +

    Regresjon#

    +
    +
    +
    a, b, c = polyfit(tid, temp, 2)
    +
    +
    +
    +
    +
    +
    +
    def modell(x):
    +    return a*x**2 + b*x + c
    +
    +x = linspace(0,500,10000)
    +y = modell(x)
    +plot(x,y,label='Tilpasset kurve')
    +plot(tid,temp,linestyle='',marker='.',label='Datapunkter')
    +legend()
    +show()
    +
    +
    +
    +
    +../../_images/f7ae9087d4c5f7ff9669ecab3b3911c567d502661327ecc93ee410d32276c608.png +
    +
    +
    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/ekstra/tema7.html b/docs/ekstra/tema7.html new file mode 100644 index 00000000..7a13347a --- /dev/null +++ b/docs/ekstra/tema7.html @@ -0,0 +1,1119 @@ + + + + + + + + + Tema 7: Algoritmer — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Tema 7: Algoritmer

    + +
    +
    + +
    +
    +
    + +
    + +
    +

    Tema 7: Algoritmer#

    +
    +
    +
    from pylab import *
    +
    +N = 10
    +for i in range(N):
    +    kast = randint(1,8)
    +    print(kast)
    +
    +
    +
    +
    +
    1
    +7
    +1
    +6
    +6
    +1
    +3
    +3
    +7
    +6
    +
    +
    +
    +
    +
    +
    +
    tall = uniform(-1,3)
    +print(tall)
    +
    +
    +
    +
    +
    1.5059584318309436
    +
    +
    +
    +
    +
    +
    +
    from pylab import *
    +
    +antall_seksere = 0
    +N = 10000
    +antall_kast = []
    +relfrek_seks = []
    +
    +for i in range(1,N+1):
    +    kast = randint(1,7)
    +    if kast == 6:
    +        antall_seksere += 1
    +    relativ_frekvens = antall_seksere/i
    +    antall_kast.append(i)
    +    relfrek_seks.append(relativ_frekvens)
    +    
    +plot(antall_kast, relfrek_seks)
    +show()
    +
    +
    +
    +
    +../../_images/ff55ac88edb7cdb8136afef88dd945ed6affa18859770710fb83734b2688362b.png +
    +
    +
    +
    +
    relfrek_seks[-1]
    +
    +
    +
    +
    +
    0.166646
    +
    +
    +
    +
    +
    +
    +
    from pylab import *
    +
    +M = 0    # Antall prikker innafor sirkelen
    +N = 1000000 # Antall prikker totalt
    +
    +for i in range(N):
    +    x = uniform(-1,1)
    +    y = uniform(-1,1)
    +    if x**2 + y**2 <= 1:
    +        M += 1
    +
    +A_kvadrat = 4
    +A_sirkel = A_kvadrat*M/N
    +
    +print(A_sirkel)
    +print(abs(A_sirkel-pi))
    +
    +
    +
    +
    +
    3.144408
    +0.002815346410206754
    +
    +
    +
    +
    +
    +
    +
    from pylab import *
    +
    +M = 0
    +N = 10000000
    +
    +x = uniform(-1,1,N)
    +y = uniform(-1,1,N)
    +
    +for i in range(len(x)):
    +    if x[i]**2 + y[i]**2 <= 1:
    +        M += 1
    +
    +A_kvadrat = 4
    +A_sirkel = A_kvadrat*M/N
    +print(A_sirkel)
    +print(abs(A_sirkel-pi))
    +
    +
    +
    +
    +
    3.1413156
    +0.00027705358979313033
    +
    +
    +
    +
    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/ekstra/tema8.html b/docs/ekstra/tema8.html new file mode 100644 index 00000000..c47c2b28 --- /dev/null +++ b/docs/ekstra/tema8.html @@ -0,0 +1,1026 @@ + + + + + + + + + Tema 8: Modellering — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Tema 8: Modellering

    + +
    +
    + +
    +
    +
    + +
    + +
    +

    Tema 8: Modellering#

    +
    +
    +
    from pylab import *
    +
    +# Startbetingelser
    +N = 157759 # Antall individer
    +a = 4/N    # Smitterate
    +b = 3.5    # Bedringsrate
    +tid = 48   # Tid
    +
    +I = 3      # Smittede
    +S = N - I  # Mottakelige
    +R = 0      # Restituert/friske
    +
    +syke = [I]
    +mulige = [S]
    +friske = [R]
    +t = [0]
    +
    +for i in range(1,tid):
    +    S = S - a*S*I
    +    I = I + a*S*I - b*I
    +    R = R + b*I
    +    syke.append(I)
    +    mulige.append(S)
    +    friske.append(R)
    +    t.append(i)
    +    
    +plot(t,syke,label='Syke')
    +plot(t,mulige,label='Mottakelige')
    +plot(t,friske,label='Friske')
    +legend()
    +show()
    +
    +
    +
    +
    +../../_images/88848d68293aa485b3a27ac28a910611e3af7ad1f87635fde74e2631d6c9ba58.png +
    +
    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/ekstra/tema9.html b/docs/ekstra/tema9.html new file mode 100644 index 00000000..7336a4b9 --- /dev/null +++ b/docs/ekstra/tema9.html @@ -0,0 +1,986 @@ + + + + + + + + + Tema 9: Grafikk — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Tema 9: Grafikk

    + +
    +
    + +
    +
    +
    + +
    + +
    +

    Tema 9: Grafikk#

    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/fagoppgaver/biologioppgaver.html b/docs/fagoppgaver/biologioppgaver.html new file mode 100644 index 00000000..0fd84bb2 --- /dev/null +++ b/docs/fagoppgaver/biologioppgaver.html @@ -0,0 +1,1118 @@ + + + + + + + + + Repetisjon II: Biologioppgaver — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Repetisjon II: Biologioppgaver

    + +
    +
    + +
    +
    +
    + +
    + +
    +

    Repetisjon II: Biologioppgaver#

    +

    Simulering av tilfeldige hendelser kaller vi Monte Carlo-simuleringer etter det berømte kasinoet i Monte Carlo (MC). Her skal vi benytte MC-simuleringer til å simulere enkel nedarving av øyenfarge. Modellen vi bruker, baserer seg på at vi plukker ett tilfeldig allel som koder for øyenfarge fra mor og ett allel fra far. For å plukke ut et tilfeldig allel, kan vi bruke funksjonen choice, som plukker ut et tilfeldig element fra en liste:

    +
    +
    +
    from pylab import *
    +
    +genotype_far = ["B", "b"] 
    +print(choice(genotype_far))
    +
    +
    +
    +
    +
    b
    +
    +
    +
    +
    +

    Oppgave:

    +
      +
    1. Forklar hvordan programsnutten ovenfor fungerer.

    2. +
    3. Lag et program som trekker et tilfeldig allel fra både mor og far. Programmet skal skrive ut hvilken genotype og fenotype barnet får. Du kan bruke koden nedenfor som utgangspunkt hvis du syns det er vanskelig å starte.

      + + +
    4. +
    5. Forklar hva programmet nedenfor gjør uten å kjøre programmet. Hvilke forutsetninger og forenklinger legger vi til grunn for denne simuleringen?

      + +
    6. +
    7. Kjør programmet 3–4 ganger. Hva gjør programmet? Stemmer dette med det du trodde? Hvorfor varierer resultatene fra programmet mellom hver kjøring?

    8. +
    9. Endre systematisk på N og kjør programmet etter hver endring. Hva forteller resultatene av kjøringene deg? Endre nå systematisk på genotypene til mor og far, og undersøk hva som skjer. Skriv ned det du finner ut og prøv å validere resultatene fra simuleringene ved å lage krysningsskjemaer for nedarvingen.

    10. +
    11. Modifiser programmet slik at det lagrer den relative frekvensen av blåøyde barn og antall barn i hver sin liste hver gang løkka kjører. Plott den relative frekvensen av blåøyde barn mot antallet barn. Hva beskriver plottet? Drøft følgende diskusjon mellom to foreldre med genotype Bb: «Vi har jo fått fire barn – hvorfor har ingen av dem blå øyne? Det er veldig usannsynlig».

      + +
    12. +
    13. Vi skal nå lage et program som simulerer dihybrid krysning for fargen og formen på erter ved nedarving. I dihybrid krysning er genotypen og fenotypen bestemt av to gener. Fenotypene som er mulig i krysningen nedenfor, er gul eller grønn, rynkete eller glatt, der genvarianten for glatt (R) og gul (Y) er dominante. Lag et program som finner sannsynligheten for å få grønne, rynkete erter. Programmet kan gjerne plotte den relative frekvensen som funksjon av antall avkom, slik som ovenfor. Du kan ta utgangspunkt i programmet nedenfor og fylle inn det som mangler:

    14. +
    + + +

    Forklar hvordan programmet fungerer når du har lagd det ferdig.

    +
    + + + + +
    + + + + + + +
    + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/fagoppgaver/kjemioppgaver.html b/docs/fagoppgaver/kjemioppgaver.html new file mode 100644 index 00000000..7b29e3a1 --- /dev/null +++ b/docs/fagoppgaver/kjemioppgaver.html @@ -0,0 +1,1256 @@ + + + + + + + + + Repetisjon I: Kjemioppgaver — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + + + +
    + +
    +

    Repetisjon I: Kjemioppgaver#

    +
    +

    Læringsutbytte

    +

    Oppgavene nedenfor er ment å fungere som en repetisjon av grunnleggende programmering, samtidig som du må anvende dette på nye problemstillinger. Når du setter deg inn i et nytt problem, må du, bevisst eller ubevisst:

    +
      +
    1. Dekomponere: Hvilke deler består problemet av? Hva er målet med å løse problemet?

    2. +
    3. Analysere: Hvordan henger delene sammen?

    4. +
    5. Vurdere I: Hvordan kan jeg bruke det jeg kan til å løse problemet, og hva trenger jeg å finne ut av?

    6. +
    7. Syntetisere: Sette sammen en løsning.

    8. +
    9. Vurdere II: Løste jeg problemet på en god måte? Finnes det andre måter å løse problemet på? Kan jeg gjøre det mer effektivt eller enklere?

    10. +
    +
    +

    Her skal vi se på ulike problemet knyttet til kjemi, uavhengig av om du har kjemi som programfag eller ikke. Vi skal benytte to biblioteker som heter “mendeleev” og “chemlib”, så du kan starte med å installere disse.

    +
    +

    Oppgave 1: Periodiske trender I#

    +

    Vi starter med et enkelt eksempel for å bli kjent med Mendeleev-biblioteket.

    +
    +
    +
    from mendeleev import element
    +
    +Z = 10
    +grunnstoff = element(Z)
    +
    +navn = grunnstoff.name
    +symbol = grunnstoff.symbol
    +gruppe = grunnstoff.group_id
    +
    +print("Atomnummer:", Z, "--Navn:", navn, "--Symbol:", symbol, "--Gruppe:", gruppe)
    +
    +
    +
    +
    +
    Atomnummer: 10 --Navn: Neon --Symbol: Ne --Gruppe: 18
    +
    +
    +
    +
    +
    +

    Oppgave

    +
      +
    1. Forklar hva programmet ovenfor gjør. Hva slags struktur er “element”, og hva er da “grunnstoff” i programmet ovenfor?

    2. +
    3. Utvid programmet slik at det også skriver ut periodenummeret. Du kan enten tippe på hva kommandoen for periode er, eller du kan slå det opp i dokumentasjonen til mendeleev-biblioteket.

    4. +
    5. Modifiser programmet slik at det skriver ut informasjon om de 18 letteste grunnstoffene.

    6. +
    +
    +

    La oss kombinere mendeleev-biblioteket med løkker og lister slik at vi kan finne informasjon om flere grunnstoffer, i tillegg til at vi kan plotte ulike sammenhenger.

    +
    +
    +
    from pylab import *
    +from mendeleev import element
    +
    +atomnummer = []
    +elektronegativitet = []
    +
    +for i in range(1, 119):
    +    grunnstoff = element(i)
    +    atomnummer.append(grunnstoff.atomic_number)
    +    elektronegativitet.append(grunnstoff.electronegativity())
    +
    +
    +
    +
    +
    +

    Oppgave

    +
      +
    1. Forklar hva programmet ovenfor gjør.

    2. +
    3. Kjør programmet og print ut lista med atomnummer og lista med elektronegativitet. Gjorde programmet det du tenkte?

    4. +
    5. Istedenfor å bare printe ut listene, prøv å plotte listene mot hverandre (atomnummer på x-aksen og elektronegativitet på _y_aksen). Bruk gjerne scatter istedenfor plot, slik at vi får punkter og ikke linjer.

    6. +
    7. Modifiser programmet slik at det kun plotter grunnstoffene i andre periode. Beskriv trenden.

      +

      Vi kan gjennomgå hvert element i ei liste slik:

      +
      navneliste = ["Arne", "Bjarne", "Mia", "Pia"]
      +
      +for navn in navneliste:
      +    print(navn)
      +
      +
      +
    8. +
    9. Bruk denne måten å gjennomgå lister på til å modifisere programmet slik at det kun plotter grunnstoffene i første gruppe. Beskriv trenden. Gjør det samme for gruppe 18 og beskriv denne trenden også.

    10. +
    11. Lag et program som skriver ut eller plotter kokepunktet til alle halogenene. Beskriv og forklar trenden i kokepunkt.

    12. +
    +
    +
    +
    +

    Oppgave 2: Periodiske trender II#

    +

    a) Bruk mendeleev og plott året grunnstoffet er oppdaget (discovery_year) som funksjon av +atomnummer. Hvorfor tror du utviklingen ser slik ut? Prøv å beskrive ulike trender i plottet.

    +

    b) Forklar hva plottet nedenfor beskriver. Prøv å lage et program som lager dette plottet.

    +periodiske trender +

    c) Når vi kjenner atomradius til et stoff, kan vi finne ut mye om elektronegativiteten, ioniseringsenergien og elektronaffiniteten til stoffet.

    +
      +
    • Plott elektronegativitet som funksjon av atomradius. Beskriv det du ser.

    • +
    • Utforsk trender i ioniseringsenergi (ionenergies) og elektronaffinitet (electron_affinity) ved hjelp av programmering. Du velger selv framgangsmåte, og om du vil skrive ut informasjonen eller lage illustrerende plott. Legg merke til at funksjonen ionenergies skriver ut en liste med energiene som kreves for å fjerne opp til alle elektronene i grunnstoffet, ikke bare det første.

    • +
    +
    +
    +

    Oppgave 3: Støkiometriske beregninger#

    +

    Ved hjelp av biblioteket chemlib kan vi også definere kjemiske forbindelser og gjøre støkiometriske beregninger på dem. Her er noen eksempler på hva du kan gjøre:

    +
    +
    +
    from chemlib import Compound
    +
    +butan1ol = Compound("C4H9OH") # Definerer forbindelsen
    +# Regner fra gram til mol og molekyler
    +print(butan1ol.get_amounts(grams=2))
    +# Finner prosentvis masse hydrogen i ammoniakk
    +print(butan1ol.percentage_by_mass("H"))
    +
    +natriumsulfat = Compound("Na2SO4")
    +# Fra mol til gram og formelenheter
    +print(natriumsulfat.get_amounts(moles=1))
    +
    +ammoniakk = Compound("NH3")
    +# Fra molekyler til mol og gram
    +print(ammoniakk.get_amounts(molecules=1E24))
    +
    +
    +
    +
    +
    {'grams': 2, 'molecules': 1.6243271319293604e+22, 'moles': 0.026982178271251833}
    +13.599017848710924
    +{'moles': 1, 'grams': 142.04099999999997, 'molecules': 6.02e+23}
    +{'molecules': 1e+24, 'moles': 1.6611295681063123, 'grams': 28.290697674418603}
    +
    +
    +
    +
    +
      +
    1. Hva gjør programmet ovenfor?

    2. +
    3. Finn antall gram i 2 mol NaCl.

    4. +
    5. Finn antall molekyler i 2 g metanol.

    6. +
    7. Finn antall mol HCl-molekyler i 2 g HCl.

    8. +
    +

    Vi kan også sjekke om kjemiske reaksjoner er balansert, og vi kan balansere dem med chemlib:

    +
    +
    +
    from chemlib import Compound, Reaction
    +
    +# Definerer forbindelser
    +H2 = Compound("H2")
    +I2 = Compound("I2")
    +HI = Compound("HI")
    +
    +# Definerer reaksjon som en liste med reaktanter og en med produkter
    +reaksjon = Reaction([H2, I2], [HI])
    +print(reaksjon.formula)     # Printer reaksjonslikningen
    +print(reaksjon.is_balanced) # Sjekker om reaksjonen er balansert
    +
    +reaksjon.balance()          # Balanserer reaksjonen
    +print(reaksjon.formula)
    +print(reaksjon.is_balanced)
    +
    +
    +
    +
    +
    1H₂ + 1I₂ --> 1H₁I₁
    +False
    +1H₂ + 1I₂ --> 2H₁I₁
    +True
    +
    +
    +
    +
    +
      +
    1. Forklar hvordan klassen Reaction fungerer (helt overordna). Skriv reaksjonslikningen vi har definert her.

    2. +
    3. Forklar hva resten av programmet gjør.

    4. +
    5. Lag et program som balanserer følgende reaksjonslikninger:

    6. +
    +
    +\[C_2H_6(g) + O_2(g) \rightarrow CO_2(g) + H_2O(l)\]
    +
    +\[NH_3(g) + O_2(g) \rightarrow NO(g) + H_2O(g)\]
    +
    +\[Mg(s) + N_2(g) \rightarrow Mg_3N_2(s)\]
    +
    +
    +

    Oppgave 4: Titrering (utfordring)#

    +

    Titrering er en kvantitativ analysemetode der vi bestemmer konsentrasjonen av et ukjent stoff (analytten) ved å tilsette et stoff med kjent konsentrasjon (titranten). Titranten tilsettes ofte fra en byrette, og vi kan notere oss pH i analytten underveis ettersom vi tilsetter et visst volum titrant. Her er en titreringskurve for titrering av en svak syre med en sterk base.

    +

    titreringskurve

    +

    Ved ekvivalenspunktet er grafen brattest, og her er stoffmengdene av syre og base ekvivalente (og dermed like hvis forholdet er 1:1 i reaksjonslikningen). Dette kan vi bruke til å finne konsentrasjonen av analytten. Vi skal se på noen metoder for å finne ekvivalenspunktet og pH-en ved ekvivalenspunktet i en slik titrering.

    +

    a) Les og plott dataene fra fila titreringsdata.txt, som viser titreringsdata for titrering av glykolsyre med NaOH. Sørg for at datapunktene vises i plottet.

    +

    b) Deriver pH-en numerisk med hensyn på volumet og legg den deriverte pH-en i ei ny liste. Forklar hva den deriverte av pH-en kan fortelle oss.

    +

    c) Lag en funksjon som finner den største deriverte i lista med de deriverte verdiene. Sammenlikn gjerne med numpy-funksjonen max. La programmet skrive ut hvilket volum dette tilsvarer. Dette er volumet sterk base som er tilsatt ved ekvivalenspunktet. Finn også pH ved ekvivalenspunktet ved hjelp av programmet ditt.

    +
    +
    + + + + +
    + + + + + + +
    + + + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/fagoppgaver/teknologi.html b/docs/fagoppgaver/teknologi.html new file mode 100644 index 00000000..e90910df --- /dev/null +++ b/docs/fagoppgaver/teknologi.html @@ -0,0 +1,1471 @@ + + + + + + + + + Teknologi og programmering — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + + + +
    + +
    +

    Teknologi og programmering#

    +
    +

    Læringsutbytte

    +

    Etter å ha arbeidet med dette temaet, skal du kunne:

    +
      +
    1. lage enkle programmer på en micro:bit

    2. +
    3. bruke knapper, radio og sensorer på micro:bit

    4. +
    5. illustrere hvordan sensorer fungerer ved å bruke micro:bit

    6. +
    +
    +
    +

    Teknologi i et bærekraftig perspektiv#

    +

    Utvikling og bruk av teknologi lider av et dårlig rykte i miljøsammenheng. Støy, giftige utslipp, \(CO_2\)-utslipp og avfall er noen av problemene med bruk av teknologi og teknologiproduksjon. Men i tillegg til å være et potensielt miljøproblem kan teknologi også være en av løsningene mot en bærekraftig framtid med nok energi og ressurser til å dekke alles grunnleggende behov. Ikke minst kan teknologi hjelpe til med å rette opp i feil vi har gjort. Plastfangere kan samle inn avfall i havet. Sporere og kamera kan hjelpe til med å kartlegge det biologiske mangfoldet slik at vi kan sette inn tiltak der det trengs. Intelligente avfallsanlegg sorterer ulike plasttyper slik at de kan gjenvinnes fornuftig med minst mulig energitap.

    +

    Sett i et større perspektiv er det ikke teknologien som er et problem, det er menneskene bak den. Dermed blir gode valg og fornuftig bruk av teknologi essensielt for å sikre en bærekraftig framtid for alle.

    +
    +
    +

    Programmering med mikrokontrollere#

    +

    Vi kan utforske programmering i en teknologisk sammenheng gjennom mikrokontrollere. En mikrokontroller er en liten datamaskin i én enkel integrert krets. Den viktigste komponenten i en slik krets, er transistorene. Det er disse som styrer strømmen av informasjon gjennom en datamaskin. “Hjernen” i en datamaskin kalles for en CPU (Central Processing Unit) og består i dag av flere hundretalls millioner transistorer (ja, de er små!).

    +

    En transistor fungerer som en slags bryter og kan representere 0 (av) eller 1 (på). Det vil si at alt vi programmerer, må oversettes til et språk datamaskinen forstår, og det er et språk som består av kun 0-er og 1-ere. Dette tallsystemet kalles det binære tallsystemet eller totallsystemet. Men det hadde vært tungvint å programmere en datamaskin ved å kun gi den instruksjoner med 0 og 1. Heldigvis er moderne programmeringsspråk enklere å bruke fordi et program som kalles en kompilator oversetter dem til binær kode.

    +

    Det finnes mange ulike mikrokontrollere: Arduino, Raspberry Pi og micro:bit er noen av de mest kjente. Det finnes utrolig mye utstyr til disse mikronkontrollerne, og de har til dels ganske kraftige prosessorer. Spesielt gjelder dette Arduino og Raspbery Pi. Micro:bit har en del lavere kapasitet, men den er til gjengjeld veldig enkel å bruke. Disse mikrokontrollerne skal vi lære oss å programmere.

    +
    +
    +

    Introduksjon til micro:bit#

    +

    Micro:bit blei designa av det britiske selskapet BBC i 2014 for å lære britiske ungdommer programmering. De blei sendt ut gratis til britiske grunnskoler i 2016, og den ideelle foreningen Lær kidsa koding har i samarbeid med Vitensentrene og Sparebankstiftelsen sendt ut micro:bit til grunnskoler over hele Norge.

    +

    Det går an å programmere micro:bit med blokkbaserte kodesnutter. Blokkbasert koding baserer seg på å flytte ferdigdefinerte blokker i en logisk rekkefølge slik at et program fungerer. Det går også an å programmere dem i Python (eller JavaScript). Vi skal se på både blokk og tekst (Python) her.

    +
    +

    Elektronikken#

    +

    Vi starter med å se litt på hvordan micro:bit-en er bygd opp:

    + +

    Vi ser følgende komponenter på figuren:

    +
      +
    1. USB-tilkobling: Her kobles micro:bit med en USB til en datamaskin når vi skal programmere den.

    2. +
    3. LED-lys: 25 LED-lys utgjør en slags “skjerm” på micro:bit-en.

    4. +
    5. Knapper: A-knappen og B-knappen kan programmeres til å styre sekvenser på micro:bit-en.

    6. +
    7. Innganger: Det finnes 5 hovedinnganger for tilkobling av eksternt utstyr, merka med 0, 1, 2, 3V og GND (ground = jording).

    8. +
    9. Batteriinngang: Her kobles batteripakka på to AA-batterier (2 x 1,5 V) til.

    10. +
    11. Omstartsknapp: Starter programmet på micro:bit-en på nytt.

    12. +
    13. Radio og Bluetooth: Liten innebygd antenne som blant annet kan brukes til å kommunisere mellom to enheter.

    14. +
    15. Prosessor: Norskprodusert lettvekterprosessor med svært lavt strømforbruk. Lav hastighet, men har også integrert midlertidig minne (RAM) og lagringsminne (flash).

    16. +
    17. Kompass og akselerometer: Måler retning, posisjon og akselerasjon i de ulike retningene. Integrerte sensorer som en kan hente data fra.

    18. +
    +

    Vi kommer til å bruke all denne elektronikken i prosjektene vi skal se på seinere. Men la oss først se litt på hvordan vi kan programmere i både blokk og med Python.

    +
    +
    +
    +

    Grunnleggende programmering#

    +

    Med blokkspråket til micro:bit kan vi definere variabler slik:

    + +

    Disse blokkene velges fra menyer, og legg merke til at de har “puslespillender”. Det betyr at vi må ha en blokk uten “knagger”, slik som gjenta for alltid-blokka (utføres hele tida) eller ved start-blokka (utføres når micro:bit startes opp) som vi kan putte andre blokker inni. Programmet ovenfor lager en variabel a som den lagrer verdien 0 i, for deretter å legge til 1 i variabelen. Den tilsvarende Python-koden for dette kan skrives slik:

    +
    a = 0
    +a = a + 1
    +
    +
    +

    Vilkår kan programmeres slik med blokker:

    + +

    I dette programmet settes variabelen til 10. Deretter testes det om tallet er mindre enn eller større enn 0. Hvis tallet verken er større eller mindre enn 0, må det være null, og det er det siste som inntreffer hvis de andre ikke inntraff. Merk at her skrives ikke noe ut, men teksten vises på “skjermen” av LED på micro:bit-en. Dette kan vi få til i Python slik:

    +
    from microbit import *
    +
    +tall = 10
    +
    +if tall < 0:
    +	display.scroll('Tallet er negativt!')
    +elif tall > 0:
    +	display.scroll('Tallet er positivt!')
    +else:
    +	display.scroll('Tallet er 0!')
    +
    +
    +

    Micro:bit inneholder en del spesialfunksjoner som vi må importere inn i programmet med linja from microbit import *. Deretter får vi tilgang til all micro:bit-elektronikken, som vi skal se på seinere. Når vi laster dette programmet over på micro:bit-en, ruller teksten over skjermen. Hvis vi vil vise teksten med én bokstav om gangen, bruker vi display.show() isteden.

    +

    Løkker kan også enkelt programmeres med blokk. En evig løkke kan lages med en enkelt blokk kalt gjenta for alltid på samme måte som ved start-blokka:

    + +

    Koden ovenfor er en evig løkke som for alltid viser et hjerte på skjermen. Dette kan skrives slik i Python:

    +
    from microbit import *
    +
    +while True:
    +	display.show(Image.HEART)
    +
    +
    +

    “while True” betyr “så lenge sant” og sant er jo sant så lenge sant ikke blir usant. Dette er nesten litt filosofisk, men sant blir aldri usant av seg selv i datamaskinens verden, så løkka kjører til evig tid. Hvis vi ønsker at løkka skal stoppe, velger vi en annen betingelse for løkka vår, f.eks. slik:

    + +

    Kodesnutten gir følgende output: 0 2 4 6 8. Merk at løkka her har en annen farge, i tillegg til at den må pusles sammen med en annen brikke. En tilsvarende kode i Python kan være slik:

    +
    from microbit import *
    +
    +partall = 0
    +while partall < 10:
    +	display.show(partall)
    +	partall = partall + 2
    +
    +
    +

    Nå har vi raskt vært innom grunnleggende programmeringskonsepter i både blokk og tilsvarende Python-kode. La oss nå begynne å bruke dette for fullt på micro:bit-en!

    +
    +
    +

    LED-skjermen#

    +

    LED-lampene på micro:bit-en kan vi bruke til å vise eller rulle tekst over en slags skjerm. Vi har sett på noe av det før, men la oss kort oppsummere gjennom et kodeeksempel.

    +
    from microbit import * 
    +
    +while True:
    +	display.show(Image.GHOST)
    +	display.scroll('Du er kul!')
    +
    +
    +

    I blokk kan vi gjøre f.eks. som nedenfor. I tillegg kan du enkelt tegne hvilke LED-er som skal lyse. Dette kan du også gjør i Python, men det er litt mer komplisert, så det skal vi ikke vise her (men du kan enkelt finne det på internett!).

    + +

    Prøv å forstå hva programmet ovenfor gjør. Du kan programmere pause i Python ved å skrive display.pause(1000), der det som angis i parentes, er pausen i kjøringen gitt i antall millisekunder. Skjermen kan tømmes ved å skrive display.clear().

    +
    +

    Underveisoppgave

    +

    Lag et Python-program som gjør omtrent det samme som blokkprogrammet ovenfor.

    +
    +
    +
    +

    Knapper#

    +

    Siden micro:bit har to knapper, kan vi bruke disse til å styre beslutninger og sette i gang prosesser. Det kan en enkelt gjøre i blokk slik:

    + +

    Her kan vi selvfølgelig bytte ut knapp A med knapp B, og vi kan også angi at knapp A + B skal trykkes samtidig. I Python kan vi gjøre det slik:

    +
    from microbit import *
    +
    +while True:
    +    if button_a.is_pressed():
    +        display.scroll('A')
    +    elif button_b.is_pressed():
    +        display.scroll('B')
    +    elif button_a.is_pressed() and button_b.is_pressed():
    +        display.scroll('AB')
    +    sleep(1000)
    +
    +
    +
    +

    Underveisoppgave

    +

    Lag et program som gjør et eller annet (f.eks. tegner en figur eller viser en tekst) når du trykker på én eller flere knapper.

    +
    +

    Det fins også mulighet for å telle antall trykk, f.eks. ved å skrive antall = button_a.get_presses(). Hvis vi da trykker på A-knappen 4 ganger, blir verdien til variabelen antall lik 4.

    +
    +
    +

    Radio#

    +

    Det er ganske enkelt å sette opp micro:bit til å sende og motta informasjon. Nedenfor er et enkelt blokkprogram som sender en melding:

    + +

    Det meste ovenfor er kanskje enkelt å forstå, men radio sett gruppe er litt spesiell. Den oppretter en kanal mellom 0 og 255 slik at mange micro:bit-er kan kommunisere sammen uten at det blir kollisjon i meldingene. Et tilsvarende program vil i Python kunne se slik ut:

    +
    from microbit import *
    +import radio  # Importerer radio-funksjonaliteten
    +
    +radio.on()  # Slår på radioen
    +radio.config(group=42) # Setter kanalen/gruppa til 42
    +
    +while True:
    +    if button_a.is_pressed():
    +        radio.send('Hei!')
    +        display.scroll('SENDT')
    +    elif button_b.is_pressed():
    +        melding = radio.receive()
    +        display.scroll(melding)
    +
    +
    +
    +

    Underveisoppgave

    +

    Lag et program som sender en beskjed eller et hemmelig tall til en annen micro:bit.

    +
    +
    +
    +

    Eksterne tilkoblinger (pins)#

    +

    Det er egentlig veldig mange måter en kan feste ting til en micro:bit på. Inngangene heter “pins”, og det er flere av dem enn du først kanskje antar. Bildet nedenfor illustrerer mulighetene for tilkobling:

    + +

    Vi skal konsentrere oss om utgangene som er formet som store, runde hull (0, 1, 2, 3V og GND).

    +
    +

    Spenning, strøm og resistans#

    +

    La oss først repetere litt om spenning, strøm og motstand (resistans). Spenning er den elektriske potensielle energien mellom to punkter. Det vil si at desto høyere spenning, desto høyere potensiell energi er det f.eks. mellom to ladninger. Høy potensiell energi kan føre til bevegelse, f.eks. av ladninger som elektroner. Når slike ladninger beveger seg, får vi strøm.

    +
    +

    Spenning

    +

    Spenning, U, er elektrisk potensiell energi mellom to punkter og måles i V (volt).

    +
    +
    +

    Strøm

    +

    Strøm, I, er antallet ladninger som passerer et visst punkt hvert sekund og måles i ampere (A).

    +
    +

    Siden spenning får elektroner til å bevege seg, kan det ses på som et slags “elektrisk trykk”. Desto høyere trykk, desto flere elektroner går igjennom en leder (f.eks. en kobbertråd/ledning), altså får vi en høyere strøm av elektroner.

    +

    Noe som kan hindre en slik strøm av ladninger, er motstand. En elektrisk leder har lav motstand. Dette er typisk for metaller, f.eks. kobber og gull. Dette er fordi det er metallbinding mellom metallatomene. Du husker kanskje at dette er en binding der atomene deler på alle elektronene i en “elektronsjø”? Siden elektronene er så udefinert bundet, kan de lett flytte på seg. Det vil si at en spenning lett lager en strøm av elektroner gjennom et slikt metall.

    +

    Plast, porselen og tre er eksempler på materialer som ikke leder strøm godt pga. liten mulighet for elektronflyt gjennom kovalente bindinger. Vi sier at disse materialene har høy resistans. Når vi kobler elektriske kretser, ønsker vi ofte å sette inn ulike motstander for å ikke få for høy strøm gjennom de elektriske komponentene våre. Disse motstandene ser ofte slik ut i småelektronikk:

    + +
    +

    Resistans

    +

    Resistans, R, er motstand mot strøm i en elektrisk krets og måles i ohm (\(\Omega\)).

    +
    +
    +
    +

    Lese av og skrive til eksterne tilkoblinger#

    +

    For å sette spenning på pins, og/eller lese av spenningen, kan vi i blokk gjøre slik:

    + +

    Her skrives verdien 1 til P0. Når vi skriver digitalt, betyr det at vi enten setter strømmen på (1) eller av (0). Det vil si 0 V eller 3 V. Hvis vi vil variere strømmen mellom disse verdiene, må vi bruke “skriv analog” isteden. Når vi setter på analog strøm, kan vi variere ved å sette verdien mellom 0 (0 V) og 1023 (3 V).

    +

    I den andre linja i programmet leses analogverdi fra P1, dvs. at det leses av en verdi mellom 0 og 1023 og lagres i variabelen spenning. Hvis vi f.eks. har kobla pin0 med pin1 med en motstand imellom, kan vi lese av spenningen mellom pin-ene. Husk derimot at 1023 ikke betyr 1023 V, men 3 V!

    +

    Vi skal konsentrere oss om pin0, pin1 og pin2 + GND. Pin-en som er merka med 3V er litt spesiell, så den skal vi kun bruke hvis vi må. I Python-kode kan vi lese av og sette på strøm slik:

    +
    from microbit import *
    +
    +while True:
    +	pin0.write_digital(1)
    +	spenning = pin1.read_analog()
    +	display.scroll(spenning)
    +
    +
    +

    Legg derimot merke til at Python-funksjonene som brukes, kan gi en helt annen følsomhet og spenning enn blokkene! Det er altså ikke 100 % samsvar mellom de ulike måtene å kode på og elektronikken.

    +

    Vi kan også sende strøm igjennom kroppen (!) ved hjelp av f.eks. pin0.is_touched. Hvis vi da tar på pin0 og GND samtidig (lukka krets), aktiveres denne funksjonen. Blokkprogrammet nedenfor viser en beskjed når du gjør nettopp dette:

    + +
    +

    Underveisoppgave

    +

    Lag programmet ovenfor i Python.

    +
    +
    +
    +
    +

    Sensorer#

    +

    En elektrisk sensor er et instrument som tolker et elektrisk signal om til en størrelse vi ønsker å måle. En temperatursensor kan for eksempel sende strøm gjennom en leder, for eksempel en platinatråd. Ved høye temperaturer øker motstanden i en slik leder, og det vil dermed være mer strøm som kommer igjennom tråden ved lave temperaturer. Hvis vi måler spenningen som har gått tapt, kan vi dermed oversette dette til temperatur. Men dette krever kalibrering.

    +

    Kalibrering er en prosess som kreves for alle sensorer. Det vil si å måle (minst) to kjente størrelser. F.eks. kan temperatursensoren vår ovenfor testes i isvann. Dette vannet holder 0 \(^\circ\)C. Vi leser av spenningen i dette vannet. Deretter tester vi i kokende vann (100 \(^\circ\)C) og leser av spenningen der også. Disse to spenningene utgjør målepunkter vi er sikre på, også kan vi anta at spenningen er lineær mellom disse to punktene (og kanskje utenfor også?).

    +

    La oss si at vi setter på en spenning, måler strømmen og regner om til resistans (\(U = RI\)). Vi sier at resistansen ved 0 \(^\circ\)C var 100 \(\Omega\) og resistansen ved 100 \(^\circ\)C var ca 140 \(\Omega\). Vi trekker en rett linje gjennom disse punktene, og hvis vi f.eks. neste gang leser av 120 \(\Omega\), veit vi at temperaturen er 50 \(^\circ\)C. Dette vil ikke stemme for alle temperaturer, og vi sier at sensoren har et lineært gyldighetsområde. Derfor står det ofte på sensorer i hvilket intervall sensoren måler korrekt. Figuren nedenfor viser en temperatursensor med gyldighetsområde fra ca. -50 til 300 \(^\circ\)C

    + +

    La oss nå bruke de innebygde sensorene i micro:bit først, så skal vi prøve å lage egne sensorer litt seinere. Vi kan hente data fra de ulike innebygde sensorene slik:

    + +

    Akselerasjonen gir akselerasjon i milli-g (\(1 \ g = 9.81 \ m/s^2\)) i x-, y- eller z-retning. Kompasset gir retning i grader (360\(^\circ\) er nord, 90\(^\circ\) er øst, osv.). Temperaturen gir temperaturen på prosessoren i \(^\circ\)C, men den er ikke kalibrert, og vil ofte gi for høy temperatur. Men den er grei for å se på enkle temperaturendringer.

    +

    I Python kan du gjøre slik:

    +
    from microbit import *
    +
    +while True:
    +	akselerasjon = accelerometer.get_x()
    +	kompassretning =  compass.heading()
    +	temperatur = temperature()
    +
    +
    +
    +

    Underveisoppgave

    +

    Programmene ovenfor viser ikke variablene på skjermen. Modifiser dem slik at de viser det du måler, f.eks. ved ulike tastetrykk.

    +
    +

    Nå har du lært nok til å kunne bryne deg på noen litt mer utforskende og kreative oppgaver. Lykke til!

    +
    +
    +

    Oppgaver#

    +
    +

    Oppgave 1

    +

    Lag et program som logger temperaturen og sender den til en annen micro:bit.

    +
    +
    +

    Oppgave 2

    +

    Lag et program som teller antall ganger du trykker på en knapp, og viser deg hvor mange ganger du trykker på knappen.

    +
    +
    +

    Oppgave 3

    +

    Et vaterpass, eller bare vater, er et instrument som måler om noe står eller ligger vinkelrett. Lag ditt eget vater ved hjelp av akselerasjons-sensoren på micro:bit-en. Tips: Det er virkelig vanskelig å få micro:bit-en til å ligge 100 % flatt – prøv med et intervall du synes er greit.

    +
    +
    +

    Oppgave 4

    +

    Lag en skritteller ved hjelp av akselerometeret.

    +
    +
    +

    Oppgave 5

    +

    Programmet nedenfor gjør micro:bit om til en krystallkule. Fyll inn og modfiser som du ønsker, og lag dine egne beskjeder.

    +
    from microbit import *
    +import random
    +
    +svar = [
    +    "Det er sikkert",
    +    "Tvilsomt",
    +    "Mine kilder sier nei",
    +    "Du har blitt el-overfølsom",
    +]
    +
    +while True:
    +    if accelerometer.was_gesture('shake'):
    +        display.scroll(random.choice(svar))
    +    sleep(10)
    +
    +
    +
    +
    +

    Oppgave: Overlev på Mars!

    +

    Du er ansatt som astrobiolog og har fått ansvar for det eneste drivhuset på Mars. Siden både vann og mat er en begrenset ressurs, må du overvåke systemene nøye for å få mest mulig optimal avling med minst mulig bruk av ressurser. Først får du som oppdrag å lage en fuktighetssensor som måler fuktigheten i jorda.

    +

    dyrking på mars

    +

    Sensoren du skal lage, baserer seg på at vi kobler to spikere til hver sin pin i en micro:bit. Disse spikerne setter vi ned i jorda. Deretter setter vi på en spenning (pin 0) og måler spenningsfallet (pin 1) som forårsakes av motstanden i jorda.

    +
      +
    1. Hvordan kan måling av strøm/spenning være et mål på fuktighet i jorda?

    2. +
    3. Foreslå en måte vi kan oversette spenning til prosentvis fuktighet.

    4. +
    5. Koble en ledning med bananplugg til pin1 og en annen til pin2.

    6. +
    7. Fest en spiker i den frie enden av hver av bananpluggene med en krokodilleklemme.

    8. +
    9. Diskuter hvordan du vil kalibrere sensoren, altså vite hva som er høyest og hva som er lavest fuktighet.

    10. +
    11. Lag et program som:

    12. +
    +
      +
    • Setter spenning på via pin0.

    • +
    • Leser av spenningen via pin1 når du f.eks. trykker på en knapp.

    • +
    • Viser spenningen til displayet. Her kan du gjerne oversette spenningen til prosent fuktighet. Spenningen blir gitt som et tall mellom 0 og 1023, der 0 er 0 V og 1023 er 3 V.

    • +
    +
      +
    1. Test sensoren på ulike planter med tørr og våt jord. Hva viser sensoren?

    2. +
    3. Modifiser programmet som du ønsker, f.eks. slik at det:

      +
        +
      • Sier fra når det er for lite vann.

      • +
      • Gir tommel opp/smilefjes når det er nok vann.

      • +
      • Kommuniserer med en annen micro:bit som fungerer som mottaker.

      • +
      +
    4. +
    5. Ekstra: Koble til en liten motor som setter på vanning når fuktigheten i jorda er under en viss verdi. Dette må legges til i programmet ditt.

    6. +
    7. Utvid programmet og oppsettet med andre sensorer, for eksempel luftfuktighetssensor og temperatursensor.

    8. +
    +
    +
    +
    + + + + +
    + + + + + + +
    + + + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/intro.html b/docs/intro.html new file mode 100644 index 00000000..04ecebd8 --- /dev/null +++ b/docs/intro.html @@ -0,0 +1,1024 @@ + + + + + + + + + Programmering og modellering — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Programmering og modellering

    + +
    +
    + +
    +
    +
    + +
    + +
    +

    Programmering og modellering#

    +

    Velkommen til ressursside for Programmering og modellering X. Her vil du finne ulike ressurser i emnet.

    +
    +

    Innhold

    +

    På siden vil du finne følgende:

    +
      +
    • Tema 1: Grunnleggende programmering. Repetisjon av og litt mer om det helt grunnleggende: Variabler, vilkår og løkker.

    • +
    • Tema 2: Kodestrukturering. Strukturering av kode med funksjoner og klasser.

    • +
    • Tema 3: Datahåndtering. Lese og plotte data. Statistikk og maskinlæringsmodeller.

    • +
    • Tema 4: Algoritmer. Vi ser på noen algoritmer fra matematikken.

    • +
    • Tema 5: Modellering. Dette er den viktigste delen av faget. Vi lager og utforsker ulike modeller, spesielt regresjonsmodeller og modeller basert på differens- og differensiallikninger.

    • +
    • Oppgaver og datafiler

    • +
    +
    +

    Når du gjennomgår fagstoffet på sidene, bør du gjøre underveisoppgavene. Da får du øvd deg regelmessig på aktuelle problemer. Dette er mye mer effektivt enn å bare lese om programmering! Noen ganger får du også muligheten til å bruke en interaktiv editor (Trinket) til å gjøre oppgaver, for eksempel fylle inn noe som mangler eller rette opp feil. Nettleseren din husker da hva du har gjort i disse editorene, så hvis du vil tilbakestille programmet, må du trykke på hamburgermenyen (de tre strekene) i editorvinduet og trykke på “reset”. God fornøyelse!

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + + +
    + + + + + + +
    + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/kurs/programmering_intro.html b/docs/kurs/programmering_intro.html new file mode 100644 index 00000000..42e4be21 --- /dev/null +++ b/docs/kurs/programmering_intro.html @@ -0,0 +1,1219 @@ + + + + + + + + + Programmering med ENT3R — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Programmering med ENT3R

    + +
    + +
    +
    + +
    + +
    +

    Programmering med ENT3R#

    + +
    +

    Datamaskinen er et fantastisk verktøy som lar oss gjøre ting som nesten er umulig uten. La oss se litt på hva vi kan få til!

    +
    +

    Gjett tallet#

    +

    La oss starte med et lite “gjettespill”. Spillet finner et tilfeldig tall mellom 0 og 100, og du må deretter gjette deg fram til hva tallet skal være. Kjør programmet ved å trykke på “play”-knappen over programkoden. Deretter skriver du inn gjettet ditt i ruta til høyre. Hvor mange forsøk bruker du?

    + +

    Husk at du ikke trenger å forstå alt som foregår i koden ovenfor enda, men kanskje du kan forstå noe?

    +
    +

    Oppgave

    +

    Prøv å forklare hva koden ovenfor gjør. Hvilke kodesnutter syns du gir mening, og hvilke syns du er vanskelig å forstå?

    +
    +

    I gjetteprogrammet bruker vi til slutt kommandoen print for å gi beskjeden om at du har vunnet spillet. For å få noe ut av et program, må vi nemlig be datamaskinen om å “skrive ut” noe. Dette gjør vi med kommandoen print. Dersom vi ønsker å skrive ut flere variabler, må vi skille dem med komma i print-kommandoen. Her ser du to eksempler:

    + +
    +

    Underveisoppgave

    +

    Eksperimenter med programmet ovenfor og forklar hvordan print fungerer. Gi gjerne variablene navn og alder en annen verdi. Bruk for eksempel ditt eget navn og alder eller navnet og alderen på noen du kjenner.

    +
    + +
    +
    +

    Løkker#

    +

    Den kanskje viktigste strukturen i programmering er løkker. De lar datamaskinen gjenta en operasjon så mange ganger vi vil. Det er dette som er datamaskinens styrke.

    +berg-og-dalbane +
    +
    +

    Skilpaddegrafikk#

    +

    Vi skal se hvordan løkker fungerer ved å introdusere deg for en skilpadde. Han heter Gunnar. Her er han:

    + +
    +skilpadde +
    +

    Gunnar følger enkle kommandoer, som “forward”, “backward”, “right” og “left”.

    +
    +

    Underveisoppgave

    +

    Endre programmet ovenfor slik at Gunnar tegner en trekant. Hva er sammenhengen mellom vinkelen som skilpadden snur og vinklene i trekanten?

    +
    + +
    +

    Skilpadder i løkker#

    +

    Å tegne en trekant krever få linjer kode, men hva hvis du vil tegne en åttekant, en førtitokant, eller en nittisekskant? Det er slitsomt og kjedelig å skrive samme kommando hundrevis av ganger. Og det er totalt unøvdendig. Vi bruker nemlig løkker til å gjenta kode, for eksempel slik:

    + +
    +

    Oppgave

    +

    Modifiser programmet ovenfor slik at skilpadden Gunnar tegner en 20-kant.

    +
    + +
    +

    Oppgave

    +

    Få Gunnar til å tegne et hus. Du velger hvor detaljert huset skal være, men du bør bruke løkker for å automatisere ting.

    +
    + +
    +

    Oppgave

    +

    Få Gunnar til å tegne et menneske eller en blomst.

    +
    + +
    +
    +
    +

    Skilpaddekunst#

    +

    Du kan være ganske så kreativ med skilpaddegrafikk. Her er et eksempel på et lite kunstverk som du kan eksperimentere med og gjøre til ditt eget. Bruk gjerne oversikten nedenfor over ulike turtle-kommandoer og farger. +

    +skilpaddekunst +
    + +
    +
    +

    Avsluttende oppgave#

    +
    +

    Avsluttende oppgave

    +

    Lag logoen til ENT3R med Turtle-grafikk! Du kan gjerne være kreativ med farger og former. Ta også gjerne utgangspunkt i programmet nedenfor.

    + +
    +
    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/kurs/smittemodellering.html b/docs/kurs/smittemodellering.html new file mode 100644 index 00000000..29945ccf --- /dev/null +++ b/docs/kurs/smittemodellering.html @@ -0,0 +1,1183 @@ + + + + + + + + + Smittemodellering — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Smittemodellering

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    + +
    + +
    +

    Smittemodellering#

    +

    Hva tenker du når du hører ordet modell? En miniatyrdel av en liten by, kanskje? Eller kanskje du tenker på atommodeller? En modell er en forenklet representasjon av virkeligheten. Vi kan aldri representerere virkeligheten slik den er, så alle modeller vil ha visse forutsetninger og begrensninger. Her skal vi se på matematiske modeller, altså bruk av matematikk for å beskrive et eller annet fenom. Nærmere bestemt skal vi se på et veldig aktuelt tema i våre dager, nemlig modellering av smittespredning.

    +

    En modelleringsprosess innebærer flere trinn. For det første må vi ha en observasjon eller et fenomen vi ønsker å studere. Ut fra visse egenskaper ved dette systemet lager vi en modell som skal beskrive systemet under visse betingelser. Denne modellen kan vi teste, for eksempel gjennom eksperimenter eller simuleringer. Da får vi data som vi kan bruke til å evaluere modellens gyldighet. Deretter kan vi eventuelt justere modellen og gjøre nye simuleringer og målinger.

    +

    Modellering er altså en kontinuerlig prosess der modeller hele tiden evalueres og justeres opp mot virkeligheten. Programmering kan gjøre denne prosessen enklere fordi vi med noen tastetrykk kan endre modellen og observere utfallet av dette. For FHI har smittemodellering vært en svært viktig del av håndteringen av koronaviruspandemien, så la oss prøve oss som “smittemodellerere”!

    +
    +

    Modell 1#

    +

    Vi begynner med en enkel modell for smittespredning der antall smittede øker med en prosentvis andel hver dag. Vi kan da beskrive utviklingingen i antall smittede indivier I (“Inceptibles”) slik:

    +
    +\[I_{t+1} = I_t + aI_t\]
    +

    Her betyr indeksen t + 1 betyr at det er antall smittede ved neste tidspunkt (her neste dag), mens indeksen t betyr antall smittede på nåværende tidspunkt. Det er jo ganske logisk at antall smittede neste dag er avhengig av antall smittede i dag. I tillegg øker antall smittede med en vekstfaktor a. Vi kaller a for en parameter. Disse parameterne er ofte bestemt av observasjoner og data, så vi kan ikke vite hva som er en god verdi for a til å begynne med.

    +
      +
    • Forklar med egne ord hva modellen forteller. Drøft også i hvilke sammenhenger det kan være hensiktsmessig å bruke en slik modell. Er det en realistisk modell i noen sammenhenger?

    • +
    + +
      +
    • Fyll inn det som mangler i programmet nedenfor for å simulere sykdomsutviklingen. Dersom du vil, kan du selvfølgelig viske ut alt og bygge programmet fra grunnen av. Varier med ulike verdier av a og forklar betydningen av parameteren a ut fra det du ser.

    • +
    + + +
    +
    +

    Modell 2#

    +

    La oss utvide modellen og innføre en ny kategori av individer som er mottakelige for smitte. Vi kaller dem S (susceptibles).

    +

    Vi kan anta at de smittede da utvikler seg slik:

    +
    +\[I_{n+1}=I_n+aI_nS_n\]
    +

    De mottakelige kan da beskrives slik:

    +
    +\[S_{n+1}=S_n-aI_nS_n\]
    +
      +
    • Bekriv modellene og prøv å forklare alle leddene og faktorene.

    • +
    + +
      +
    • Fyll inn det som mangler i programmet nedenfor for å simulere sykdomsutviklingen. Dersom du vil, kan du selvfølgelig viske ut alt og bygge programmet fra grunnen av. Prøv å variere antall smittede til å begynne med. Beskriv utviklingen til hverandre og diskuter hva som skjer. Du kan også prøve med andre modeller, hvis du vil. Legg merke til at vi lagrer endringen i I og S i en egen variabel for å bruke I og S ved samme tidspunkt.

    • +
    + + +
    +
    +

    Modell 3#

    +

    La oss nå utforske en modell som også tar hensyn til at det går an å bli frisk fra sykdommen. Da innfører vi en kategori til, nemlig de friske og tidligere smittede. Disse har da immunitet og kan ikke bli smittet igjen. Vi kaller dem R (recovered/removed), og de kan beskrives slik:

    +
    +\[ R_{n+1}=R_n+bI_n\]
    +

    Da må de smittede utvikle seg slik:

    +
    +\[I_{n+1}=I_n+aS_nI_n-bI_n\]
    +

    Antall usmittede, men mottakelige individer, S, må fortsatt følge denne modellen:

    +
    +\[S_{n+1}=S_n-aI_nS_n\]
    +

    Dette kaller vi SIR-modellen for smitteutvikling.

    +
      +
    • Beskriv hva de ulike faktorene og leddene betyr. Hva tror dere den nye parameteren b beskriver?

    • +
    + +
      +
    • Nedenfor er det et program som simulerer smitte ved hjelp av SIR-modellen. Kjør programmet og forklar for hverandre hva det gjør, og hva resultatene er.

    • +
    + +
      +
    • Nå skal vi validere modellen vår. Vi utvider programmet og sammenlikner modellen med reelle data som viser antall smittede hver uke. Les filen «influensa.txt» og plott antall smittede (I) i det samme koordinatsystemet som den modellerte smittespredningen. Bruk gjerne programmet fra forrige aktivitet.

    • +
    • Sammenlikne modellen og de reelle dataene, og tilpass gjerne koeffisientene a og b slik at modellen samsvarer bedre med dataene.

    • +
    +
    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + +
    + +
    + +
    + On this page +
    + +
    + +
    + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/oppgaver/differensiallikninger_oppgaver.html b/docs/oppgaver/differensiallikninger_oppgaver.html new file mode 100644 index 00000000..d64e0b08 --- /dev/null +++ b/docs/oppgaver/differensiallikninger_oppgaver.html @@ -0,0 +1,1194 @@ + + + + + + + + + Differensiallikninger (oppgaver) — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + + + +
    + +
    +

    Differensiallikninger (oppgaver)#

    +
    +

    Differensiallikninger#

    +

    Vi har sett på modeller som beskriver endringer ved bestemte tidssteg, for eksempel i smittemodellen vår:

    +
    +\[I_{n+1}=I_n+aI_nS_n\]
    +

    som er det samme som å skrive:

    +
    +\[\Delta I = aI_nS_n\]
    +

    Dette er eksempler på differenslikninger, der vi finner en tallfølge, som for eksempel beskriver antall smittede i en populasjon. Men hva hvis vi gjør tida mellom endringene så liten som mulig? Da får vi ikke en differenslikning, men en differensiallikning.

    +

    En differensiallikning er en likning som inneholder den deriverte (altså den momentane endringen) av en funksjon, for eksempel:

    +
    +\[y' = 1\]
    +
    +\[y' = y\]
    +
    +\[y' - 2x = -1\]
    +

    Vi har dermed uttrykk for en momentan endring. Likningene ovenfor er løsbare, men de fleste differensiallikninger er ikke det. Derfor er numeriske metoder for løsing av difflikninger svært viktige å kunne.

    +
    +
    +

    Eksempler#

    +

    Det viser seg at vi faktisk ofte kjenner til endringen (f’(x)) i et system framfor tilstanden (f(x)). Eksempler på dette er:

    +
      +
    • Newtons 2. lov: \(\Sigma F = ma \Leftrightarrow v' = \frac{\Sigma F}{m}\).

    • +
    • Populasjonsdynamikk: \(B'(t) = k\cdot B(t)\) og \(B'(t) = a\cdot B(t)\left(1-\frac{B(t)}{b} \right)\).

    • +
    • Smittemodeller: \(I'(t) = aI(t)S(t)\).

    • +
    +
    +

    Underveisoppgave: Differensiallikninger

    +

    Forklar hva en differensiallikning er og hvorfor Newtons 2. lov og modeller for populasjonsvekst og smitte kan formuleres som differensiallikninger.

    +
    +
    +
    +

    Eulers metode for å løse differensiallikninger#

    +

    Eulers metode er en enkel metode som brukes til å løse differensiallikninger. Det vil si at vi finner en funksjon dersom vi har gitt et uttrykk for den deriverte av funksjonen.

    +

    Siden vi går fra f’(x) til f(x), integrerer (antideriverer) vi differensiallikningen. Eulers metode går ut på å finne en verdi for \(f(x + \Delta x)\) gitt en startverdi \(f(x_0)\) og et uttrykk for \(f'(x)\):

    +
    +\[f(x+\Delta x) \approx f(x) + f'(x)\cdot \Delta x\]
    +

    Dette er en iterativ algoritme. Vi starter derfor med \(f(x_0)\) og finner de påfølgende funksjonsverdiene slik:

    +
    +\[f(x_1) \approx f(x_0) + f'(x_0)\cdot \Delta x\]
    +
    +\[f(x_2) \approx f(x_1) + f'(x_1)\cdot \Delta x\]
    +
    +\[f(x_3) \approx f(x_2) + f'(x_2)\cdot \Delta x\]
    +
    +\[...\]
    +
    +

    Underveisoppgave: Eulers metode

    +

    Utled Eulers metode fra den numeriske tilnærmingen til den deriverte (Newtons kvotient/framoverdifferansen).

    +
    +
    +
    +

    Et program som løser differensiallikninger#

    +

    Siden vi skal løse differensiallikningene på en datamaskin, må vi jobbe med funksjonsverdier, ikke funksjonsuttrykk. Vi setter derfor opp noen startbetingelser som definerer intervallet vi skal integrere over.

    +
    +
    +
    x_start = 0                   # Startverdi
    +x_slutt = 5                   # Sluttverdi
    +dx = 1E-5                     # Steglengde mellom x-verdiene
    +N = int((x_slutt-x_start)/dx) # Antall intervaller
    +y0 = 1                        # Initialbetingelse
    +
    +
    +
    +
    +
    +

    Underveisoppgave: Startverdier

    +

    Forklar hva de ulike størrelsene i programmet ovenfor betyr. Skriv ned de størrelsene du ikke forstår.

    +
    +

    Så trenger vi å definere funksjonen. La oss ta en enkel funksjon: \(f'(x) = 1\). Definer funksjonen i vinduet nedenfor som en Python-funksjon. For å sjekke at du har gjort riktig, skriv ut et funksjonskall. Dette bør skrive ut 1 uansett argumentverdier i funksjonen. Teknisk sett trenger ikke funksjonen noen parametere, men vi pleier å definere både x og y som parametre i en funksjon som representerer en difflikning.

    + +

    Nå kan vi legge til noen tomme arrayer som vi skal fylle med verdier:

    +
    +
    +
    from pylab import *
    +
    +x = zeros(N+1)
    +y = zeros(N+1)
    +
    +
    +
    +
    +
    +

    Underveisoppgave: Arrayer

    +

    Legg inn arrayene i programmet. Prøv å forklare hvorfor vi lager N+1 verdier, og ikke N, ved å tegne opp et intervall fra 0 til 5 med steglengde (dx) 1. Hvor mange intervaller har vi, og hvor mange verdier har vi?

    +
    + +

    Nå kan vi løse differensiallikningen med Eulers metode. En pseudokode for dette kan se slik ut:

    +
    +
    +
    gjenta N ganger:
    +    y_{n+1} = y_n + yderivert(y_n, x_n)*dx
    +    x_{n+1} = x_n + dx
    +
    +
    +
    +
    +

    Bruk Eulers metode til å løse differensiallikningen og plot y som funksjon av x:

    +
    +

    Oppgaver#

    +

    Bruk funksjonen \(y' = y + x\) når du løser oppgavene nedenfor.

    +

    a) Lag programmet ovenfor uten funksjoner. Hvor må differensiallikningen være i programmet nå?

    +

    b) Lag programmet ovenfor med lister istedenfor arrayer. Hva syns du er enklest?

    +

    c) Plott løsninger for fem ulike initialbetingelser i samme plott. Hva sier dette oss om løsningen til en differensiallikning?

    +
    +
    +
    + + + + +
    + + + + + + +
    + + + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/oppgaver/likninger_oppgaver.html b/docs/oppgaver/likninger_oppgaver.html new file mode 100644 index 00000000..eea3af4a --- /dev/null +++ b/docs/oppgaver/likninger_oppgaver.html @@ -0,0 +1,1120 @@ + + + + + + + + + Oppgave: Numerisk løsing av likninger — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Oppgave: Numerisk løsing av likninger

    + +
    + +
    +
    + +
    + +
    +

    Oppgave: Numerisk løsing av likninger#

    +

    Her skal vi se på en oppgave der vi jobber med ulike strategier for å løse likninger.

    +
    +

    Oppgave

    +

    I denne oppgava skal vi løse likningen \(e^{-x} + x + 5 - \log(0.006x + 1) - x^{0.3} - 10 = 0\). Denne likningen er ikke analytisk løsbar, så vi må bruke numeriske metoder for å løse den.

    +

    a. Se på programmet nedenfor uten å kjøre det. Hva gjør programmet? Du kan klikke på ruta nedenfor for å få et hint til hva som skjer. Her brukes det en enklere funksjon for å illustrere poenget.

    + +

    b. Test programmet og se hva det gjør. Tegn grafen i Python og verifiser at programmet gjør det det skal.

    + +

    c. Prøv å løse likningen \(x^2 - 4 = 0\) med metoden ovenfor. Fant du alle løsningene? Plott gjerne grafen til funksjonen \(f(x) = x^2 - 4\) og sammenlikn med nullpunktene du ser. Diskuter det du finner ut med en annen som har gjort oppgaven.

    +

    d. Modifiser programmet slik at det istedenfor å bruke funksjoner, benytter funksjonsverdier som er forhåndslagret i en array eller liste. I løkka bør du da sjekke om en verdi i arrayen har motsatt fortegn med den neste verdien i arrayen. Du kan lage arrayene og starten av løkka slik:

    + +

    Test om programmet gir samme nullpunkt som før. Prøv også nå å løse likningen \(x^2 - 4 = 0\) ved å lage et x-intervall fra -10 til 10, og sammenlikn med resultatet fra den forrige metoden. Hva er forskjellen, og hvorfor fikk du denne forskjellen?

    +

    e. En annen metode for å løse likninger kalles halveringsmetoden. Bruk det første programmet du lagde som inspirasjon til å lage et program som bruker denne metoden. Halveringsmetoden går ut på å velge et intervall \([a, b]\) der \(f(a)\) og \(f(b)\) har motsatte fortegn. Vi kan bruke grafen til å vurdere hvilket intervall som egner seg dersom vi plotter den først. Deretter skal vi finne et nytt intervall \([a, b]\) som er mindre, men slik at \(f(a)\) og \(f(b)\) fortsatt har motsatte fortegn. Det kan vi gjøre ved å finne midten mellom a og b. Da får vi et punkt \(m = (a + b)/2\), og vi kan finne \(f(m)\).

    +

    Vi undersøker så om \(f(m_1) = 0\). Hvis ikke, evaluerer vi fortegnene til \(f(a)\), \(f(b)\) og \(f(m)\). Dersom \(f(a)\) og \(f(m)\) har samme fortegn, setter vi det nye intervallet til \([m, b]\) fordi da må \(f(m)\) og \(f(b)\) ha motsatte fortegn. Motsatt setter vi intervallet til \([a, m]\) dersom \(f(b)\) og \(f(m)\) har samme fortegn. Prosessen gjentas n ganger til vi har at \(f(m_n) \approx 0\). Figuren nedenfor illustrerer metoden med to trinn

    + +

    Algoritmen kan mer generelt beskrives slik:

    +
    +

    Halveringsmetoden

    +

    La f være en kontinuerlig funksjon med motsatte fortegn på funksjonsverdiene \(f(a)\) og \(f(b)\) i intervallet \([a,b]\). Da kan nullpunktene finnes slik:

    +
      +
    1. Finn midtpunktet \(c_k\) mellom punktene a og b.

    2. +
    3. Undersøk hvilke av \(f(a)\) og \(f(b)\) som har motsatt fortegn til \(f(c_k)\), og sett det nye intervallet til \([a,c_k]\) eller \([c_k, b]\), der start- og sluttverdien i intervallet skal ha motsatt fortegn.

    4. +
    5. Gjenta prosessen n ganger til \(f(c_k) \approx 0\).

    6. +
    +
    +

    Programmet nedenfor gir deg litt starthjelp.

    + +

    Du kan også klikke på hintet nedenfor for å se en pseudokode som beskriver algoritmen:

    +
    Definer funksjon f(x)
    +a = -10
    +b = 10
    +
    +m = (a+b)/2
    +
    +Gjenta  lenge f(m) ikke er lik null:
    +    hvis f(a)*f(m) er mindre enn 0:
    +        b = m
    +    hvis f(b)*f(m) er mindre enn 0:
    +        a = m
    +    m = (a+b)/2
    +
    +Skriv ut m
    +
    +
    +
    +
    +
    +

    Feilhåndtering#

    +

    Algoritmer kan ha svakheter, og de kan være implementert på en slik måte at feil lett kan oppstå. For å unngå flest mulig feil, bør programmet vårt ta hensyn til ulike fallgruver. Noen gode prinsipper for robust kode er:

    +
      +
    • Pakk metoden inn i en funksjon. Da kan koden lettere gjenbrukes og testes.

    • +
    • Ha med en oversiktlig dokumentasjon som forklarer hva funksjonen gjør, gjerne i form av en docstring (se eksempelet nedenfor for forklaring).

    • +
    • Dersom du kjenner til ulike svakheter i algoritmen, prøv å teste for dette, for eksempel med if-else-tester.

    • +
    +
    +

    Oppgave

    +
      +
    1. Lag en funksjon halveringsmetoden som returnerer nullpunktet til en funksjon gitt relevante parametre.

    2. +
    3. Legg inn en docstring i funksjonen. En docstring kan ha følgende form:

      +
      def f(x):
      +    """
      +    Parameters
      +    ----------
      +    x: float (datatype)
      +       x-verdi (beskrivelse)
      +
      +    Returns
      +    -------
      +    y: float
      +       y-verdi
      +    """
      +
      +
      +
    4. +
    5. Legg inn en ny parameter maks_iter som står for maks antall ganger løkka går. Returner også antall ganger løkka gikk, i tillegg til nullpunktet.

    6. +
    7. Funksjonen skal også sjekke om a og b har forskjellige fortegn. Hvis ikke, skriv ut en feilmelding.

    8. +
    9. Gjør eventuelt andre endringer som gjør koden enda bedre!

    10. +
    +
    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + +
    + + + +
    + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/oppgaver/maskinlaring_titanic_oppgaver.html b/docs/oppgaver/maskinlaring_titanic_oppgaver.html new file mode 100644 index 00000000..2437a47d --- /dev/null +++ b/docs/oppgaver/maskinlaring_titanic_oppgaver.html @@ -0,0 +1,1345 @@ + + + + + + + + + Maskinlæring med Titanic (oppgave) — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + + + +
    + +
    +

    Maskinlæring med Titanic (oppgave)#

    +
    +
    +
    import pandas as pd
    +import numpy as np
    +import seaborn as sns
    +import matplotlib.pyplot as plt
    +
    +# Les dataene
    +# ...
    +
    +
    +
    +
    +
    +

    Utforsking og opprydding av datasettet#

    +

    La oss undersøke dataene og rydde litt, dersom vi trenger det.

    +
    +
    +
    # Skriv ut de fem første linjene
    +# ...
    +
    +
    +
    +
    +

    Vi ser at det ikke er alle kategoriene vi trenger. Siden vi er interessert i hvem som overlevde, og hvorfor, kan det også være lurt å sjekke hvor mange dette var. Du kan beregne sum og antall av et dataframe-element ved å bruke metodene .sum() og .count() på elementet (f.eks. titanic[‘age’].sum()).

    +
    +
    +
    # Sjekk hvor mange som overlevde
    +# ...
    +
    +
    +
    +
    +
    +
    +
    # Slett kategorier du mener er irrelevante for overlevelse med datarammenavn.pop("navn på kolonne")
    +# ...
    +
    +
    +
    +
    +

    Vi kan også undersøke manglende verdier og eventuelt sette inn representative verdier der det mangler.

    +
    +
    +
    # Printer ut antall manglende verdier i kolonnene
    +print(titanic.isna().sum())
    +
    +
    +
    +
    +
    survived      0
    +pclass        0
    +sex           0
    +age         177
    +sibsp         0
    +parch         0
    +class         0
    +alive         0
    +alone         0
    +dtype: int64
    +
    +
    +
    +
    +
    +
    +
    # Fyller inn manglende alder med gjennomsnittet
    +gjennomsnitt = titanic['age'].mean()
    +titanic['age'].fillna(gjennomsnitt, inplace = True)
    +
    +
    +
    +
    +
      +
    • I hvilke sammenhenger kan det være legitimt å gjøre som ovenfor? Var det legitimt i denne sammenhengen?

    • +
    +
    +
    +

    Visualiseringer#

    +

    La oss først se hvilken effekt klasse og kjønn hadde på overlevelsessjansene:

    +
    +
    +
    # Passasjerklasse
    +sns.countplot(x='pclass', hue='survived', data=titanic, palette='ocean')
    +plt.title("Antall døde (0) og overlevende (1) av hver klasse")
    +plt.xlabel("Klasse")
    +plt.ylabel("Antall")
    +plt.show()
    +
    +
    +
    +
    +../../_images/f8b63aa0b98a0f8831ac3c7ca0f31882a45cdbef61c518a7bf4c6cc8524a32ee.png +
    +
    +
    +
    +
    # Lag et tilsvarende plott som viser hvilken effekt kjønn hadde på overlevelsessjansene.
    +
    +
    +
    +
    +

    Vi ser, ikke overraskende, at menn på 3. klasse hadde særdeles dårlige odds. Vi har alderen til passasjerene, men ikke alderskategorier. Lag alderskategorier for barn og voksen, og lag en ny kolonne kalt “aldersklasse”.

    +
    +
    +
    # Sortere etter alder
    +aldersklasse = []
    +
    +for alder in titanic['age']:
    +    ### fyll inn kode her.
    +    
    +titanic['aldersklasse'] = aldersklasse
    +
    +# Plott effekten aldersklasse har på overlevelse
    +
    +
    +
    +
    +
    +
    +

    Maskinlæring#

    +

    Vi skal nå lage en modell som kan forutsi hvorvidt en person overlever på Titanic eller ikke, gitt data om personen. Vi velger ut hvilke data vi ønsker å bruke som kriterium for overlevelse, og spesifiserer kategorien “survived” som målkategorien vår:

    +
    +
    +
    from sklearn.model_selection import train_test_split, cross_val_score
    +from sklearn import tree
    +from sklearn.metrics import accuracy_score, confusion_matrix
    +
    +
    +
    +
    +
    +
    +
    kriterier = titanic[[# Legg inn kriterier (kolonnekategorier) for overlevelse her]]
    +kategorier = # legg inn kategori her
    +
    +
    +
    +
    +

    I maskinlæring er det viktig at modellen vår klarer å forutsi data som kommer utenfra datasettet vi trener modellen med. Derfor deler vi ofte opp dataene i et treningssett og et testsett. Treningssettet bruker vi til å trene modellen, testsettet til å teste og evaluere modellen i etterkant. Vi blander ikke disse dataene. Vi kan generere slike data med funksjonen train_test_split(). Her bruker vi 80 % av dataene til trening og 20 % til testing. Du bør bruke minst 70 % av dataene dine til trening.

    +
    +
    +
    # Del opp datasettet ditt i trenings- og test-kriterier og trenings- og testkategorier.
    +
    +
    +
    +
    +
      +
    • Forklar hva funksjonen train_test_split gjør ut fra programmet ovenfor.

    • +
    • Hva er poenget med separate treningskriterier og testkriterier?

    • +
    +

    Nå kan vi lage modellen vår. Vi bruker en algoritme som heter Decision Tree Classifier. Det er basert på sammensatte og forgreinede valgtrær, der alle kombinasjoner av kriterier blir utforsket. Betingede sannsynligheter for ulike hendelser blir beregnet, og de mest sannsynlige utfallene blir framhevet basert på kombinasjonen av kriteriene. Først trener vi modellen:

    +
    +
    +
    # Opprett og tren modellen her
    +
    +
    +
    +
    +
    DecisionTreeClassifier()
    +
    +
    +
    +
    +

    Det var det - da har vi en modell! Den ligger nå i et objekt som vi har kalt modell. Vi kan få innsyn i hvordan modellen ser ut, men det kan fort bli litt uoversiktlig og teknisk. La oss først nøye oss med å sjekke hvordan modellen takler testsettet vårt.

    +
      +
    • Forklar med ord hva du tror modellen gjør når den “trener”.

    • +
    +
    +
    +

    Test og validering av modellen#

    +

    La oss nå bruke modellen for å forutsi hvem som overlever og hvem som ikke gjør det:

    +
    +
    +
    # Regn ut accuracy score for å validere modellen her
    +
    +
    +
    +
    +
    0.7597765363128491
    +
    +
    +
    +
    +

    Hva sier dette resultatet deg?

    +

    For å få bedre oversikt over hva modellen forutsier riktig og hva den feiler på, kan vi konstruere en såkalt “Confusion Matrix” (forvirringsmatrise/feilmatrise):

    +
    +
    +
    cm = confusion_matrix(modellkategorier_forutsett, testkategorier)
    +
    +import seaborn as sns
    +sns.heatmap(cm, annot=True, cmap='viridis')
    +plt.title("Forvirringsmatrise")
    +plt.xlabel("Predikerte verdier")
    +plt.ylabel("Sanne verdier")
    +plt.show()
    +
    +
    +
    +
    +../../_images/6be7161bdb4b177ba71d003377b9d071a898e2a1b2254b190fbe7074774bf853.png +
    +
    +
      +
    • Hva forteller diagrammet ovenfor oss?

    • +
    +

    Vi kan benytte disse dataene til å beregne hvor stor prosentandel av overlevende og døde som modellen klarte å forutsi korrekt.

    +
    +
    +
    # Beregn andelen korrekt forventet død og korrekt forventet overlevelse.
    +
    +
    +
    +
    +
      +
    • Sammenlikn størrelsen på disse andelene. Hva er eventuelt årsaken til at det er en forskjell på dem?

    • +
    +

    La oss helt til sist visualisere modellen vår. Vi velger maks dybde på modellen til 2 for at vi ikke skal få alt for mange forgreininger.

    +
    +
    +
    plt.figure(figsize=(20,10))
    +titanic.pop('survived')
    +tree.plot_tree(modell, max_depth=2, feature_names=titanic.columns, class_names=['Døde', 'Overlevde'], filled=True, label=None,) 
    +None
    +
    +
    +
    +
    +../../_images/38b515ea3daf8aa65345953ca4c9e1f175577fe0167013cce7e863b47016382c.png +
    +
    +
      +
    • Bruk visualiseringen av modellen ovenfor til å forklare hvordan modellen vår fungerer.

    • +
    +
    +
    +
    +

    Lagre og åpne modellen vår#

    +

    Vi kan også lagre modellen vår, slik at vi kan bruke den seinere:

    +
    +
    +
    filnavn = "titanicmodell.sav"
    +joblib.dump(modell, filnavn)
    +
    +modell = joblib.load(filnavn)
    +
    +
    +
    +
    +
    + + + + +
    + + + + + + +
    + + + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/oppgaver/modelleringsprosjekt1.html b/docs/oppgaver/modelleringsprosjekt1.html new file mode 100644 index 00000000..7217b5b4 --- /dev/null +++ b/docs/oppgaver/modelleringsprosjekt1.html @@ -0,0 +1,1233 @@ + + + + + + + + + Modelleringsoppgave I — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Modelleringsoppgave I

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    + +
    + +
    +

    Modelleringsoppgave I#

    +
    +

    Smittespredning#

    +

    Vi utforsker her en modell for smittesprendning av sykdommer. Vi kan tenke oss at antall smittede indivier I (“Inceptibles”) utvikler seg slik:

    +
    +\[I_{t+1} = I_t + aI_t\]
    +

    Bildet nedenfor viser spike-proteinet som ligger på overflaten til coronaviruset, og som gir viruset dets karakteristiske form:

    +
    +
    +
    +

    You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
    + jupyter labextension install jupyterlab_3dmol

    +
    +
    <py3Dmol.view at 0x1b5b38c7ac0>
    +
    +
    +
    +
    +
    +

    Oppgave 1#

    +
      +
    • Forklar med ord hva modellen sier. Hva betyr de ulike symbolene i likningen?

    • +
    • I hvilke sammenhenger kan det være hensiktsmessig å bruke en slik modell? Hvilke begrensninger har modellen?

    • +
    • Lag et program som simulerer smitteutviklingen over 48 uker i en populasjon med 157759 individer og en kontaktrate på 0.2 per uke. Hvis du trenger hjelp, kan du trykke på hintet nedenfor.

    • +
    + +
      +
    • Beskriv utviklingen. Varier systematisk a og antall smittede til å begynne med. Kommenter hva som skjer.

    • +
    • Hvorfor er det viktig at kontaktraten har en enhet (her: uker)?

    • +
    +
    +
    +

    Oppgave 2#

    +

    Vi utvider modellen ved å innføre en kategori for de som er mottakelige, S (“susceptibles”). Det vil si at de som allerede er smittet, ikke kan bli smittet igjen. Vi modifiserer da modellen for de smittede, slik at den også tar hensyn til den nye kategorien:

    +
    +\[I_{t+1} = I_t + aI_tS_t\]
    +
      +
    • Forklar hva som er endret i modellen. Hvorfor kan vi gjøre dette?

    • +
    • Lag en modell for S (mottakelige) basert på modellen for I. Hint: Når en person er smittet, hva skjer med antall mottakelige?

    • +
    • Utvid programmet ditt til å beregne og plotte antall mottakelige og smittede i samme koordinatsystem. Bruk merkelapper (labels og legend) slik at vi ser hvilken kurve som beskriver hva. Beskriv grafen med ord.

    • +
    • Varier systematisk a og antall smittede til å begynne med. Kommenter hva som skjer.

    • +
    • I hvilke sammenhenger kan det være hensiktsmessig å bruke en slik modell? Hvilke begrensninger har modellen?

    • +
    +
    +
    +

    Oppgave 3#

    +

    Vi legger nå til muligheten for å bli frisk (hurra!). Da trenger vi også å innføre en bedringsrate, b. Et uttrykk for antall smittede kan nå være:

    +
    +\[I_{t+1} = I_t + aI_tS_t - bI_t\]
    +

    Da får vi også følgende modell for antall friskmeldte R:

    +
    +\[R_{t+1} = R_t + bI_t\]
    +
      +
    • Forklar alle leddene i modellen for smittede og friskmeldte. Hva er betydningen til b? Hva kan være en ok størrelse for b i dette tilfellet? Diskuter.

    • +
    • Lag en modell for antall friske med utgangspunkt i modellen ovenfor.

    • +
    • Simuler og plott utviklingen. Hvis grafen ikke ser fornutftig ut, bør du eksperimentere med andre verdier av b.

    • +
    • Beskriv grafen med ord.

    • +
    • I hvilke sammenhenger kan det være hensiktsmessig å bruke en slik modell? Hvilke begrensninger har modellen?

    • +
    +

    Det er vanskelig å fastsette parametrene a og b. Ofte fastsettes de ved å løpende sammenlikne modellene med reelle data fra observasjoner eller eksperimenter. I fila ‘influensa.txt’ (se “Datafiler” i sidemenyen) finner du en oversikt over antall smittede av influensaviruset H3N2 i en populasjon med 157 759 personer.

    +
      +
    • Les av fila og plott dataene sammen med modellen og prøv å variere a og b slik at modellen stemmer så godt som mulig med dataene.

    • +
    • Diskuter om modellen kan si noe mer generelt om smittespredning enn akkurat dette tilfellet.

    • +
    +
    +
    +

    Oppgave 4#

    +

    Vaksiner kan redusere antall mottakelige betraktelig.

    +
      +
    • Hvordan kan du utvide modellen slik at den tar hensyn til vaksinering?

    • +
    • Lag et program der du utforsker effekten av ulike grader av vaksinasjon (i %).

    • +
    +
    +
    +

    Rapport#

    +

    Skriv en rapport i Jupyter notebook der du redegjør gradvis for de ulike modellene dine. Rapporten skal IKKE struktureres som svar på oppgavene ovenfor, men skal heller være en helhetlig og strukturert rapport der svar på spørsmålene ovenfor integreres på en naturlig måte. Rapporten skal følge denne malen:

    +
      +
    • Hensikt: Hva skal du gjøre i prosjektet. 1-2 linjer.

    • +
    • Teori: Redegjør for de ulike modellene du bruker.

    • +
    • Resultater: Her skal du ta med programmene du har lagd, visualiseringer og eventuelle tabeller. Det skal ikke være noen drøfting her!

    • +
    • Drøfting: Her bør du drøfte forutsetninger for og begrensninger ved modellene. Hva beskriver modellene? Parameternes betydning i modellen må diskuteres her.

    • +
    • Konklusjon: Gjør rede for hovedfunnet i de ulike modellene.

    • +
    +
    +
    +
    + + + + +
    + + + + + + +
    + + + +
    + +
    + +
    + On this page +
    + +
    + +
    + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/oppgaver/modelleringsprosjekt2.html b/docs/oppgaver/modelleringsprosjekt2.html new file mode 100644 index 00000000..0f266d1b --- /dev/null +++ b/docs/oppgaver/modelleringsprosjekt2.html @@ -0,0 +1,1368 @@ + + + + + + + + + Modelleringsoppgave II — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + + + +
    + +
    +

    Modelleringsoppgave II#

    +

    I dette prosjektet skal dere modellere en naturvitenskapelig sammenheng ved å bruke differensiallikninger. Prosjektet skal presenteres på en ryddig måte med teori, programkode og drøfting i Jupyter Notebook. Oppgavene er ment som en veiledning til momenter dere bør ha med, men rapporten skal ikke struktureres etter oppgavene. Alle oppgaver og sentrale momenter skal være en integrert del av en helhetlig rapport. Dere vil bli vurdert etter følgende kriterier:

    +
      +
    • Koden virker og er lagt opp på en god måte.

    • +
    • Koden er strukturert og oversiktlig.

    • +
    • Det kommer fram at dere kan anvende grunnleggende programmering på en hensiktsmessig måte.

    • +
    • Det kommer fram at dere forstår det realfaglige innholdet.

    • +
    • Modellene som er brukt, er differensiallikninger.

    • +
    • Rapporten er ryddig og oversiktlig. Rapporten skal ikke være inndelt etter oppgaver, men ha en klar struktur:

      +
        +
      1. Introduksjon: Hva dreier prosjektet seg om. Hva skal du vise/gjøre?

      2. +
      3. Hvilke metoder bruker du? Utled metodene.

      4. +
      5. Beskrivelse, resultater og drøfting: Gjør rede for framgangsmåte og programmer. Drøft de ulike modellene: Begrensninger, forutsetninger, antakelser, konsekvenser. Hva innebærer en endring av de ulike parametrene?

      6. +
      7. Konklusjon: Hva har du gjort, og hvordan? Kort oppsummering.

      8. +
      +
    • +
    • Alle figurer og grafer er oversiktlige med figurtekst, aksetitler o.l.

    • +
    • Alle resultater er drøfta og redegjort for.

    • +
    +
    +

    Oppgaver#

    +

    Velg én av oppgavene nedenfor, eller foreslå en problemstilling for læreren. Problemstillingen må bli godkjent før dere går i gang med prosjektet.

    +
    +

    Oppgave 1: Zombie-apokalypse (biologi)#

    +

    Denne oppgava tar utgangspunkt i å modellere og simulere en menneskepopulasjon under en zombie-apokalypse. Gjør rede for begrensninger for modellene dine, og drøft hva de forteller oss om populasjonen.

    +
    +

    Utgangspunkt#

    +

    Vi befinner oss i en postapokalyptisk situasjon der verden har blitt utsatt for et virus som gjør mennesker om til zombier. Viruset smitter kun via blod, f.eks. ved bitt eller kloring fra zombier. Vi skal studere en avsideliggende landsby, Alexandria, som ligger i nærheten av Washington D.C., og som etter et zombie-utbrudd har blitt et tilfluktssted for 500 mennesker. De har tilgang til en del mat og våpen, og de har en mur rundt hele landsbyen som holder zombiene unna. Men de må også ut for å finne nye ressurser og andre mennesker som trenger hjelp, så de er aldri helt trygge.

    +
    +
    +

    Oppgave#

    +

    Modellen din kan inneholde mange ulike faktorer, og du står fritt til å legge til flere, dersom du begrunner det. Legg til én og én faktor, og test modellen etter hver gang. Kommenter populasjonsutviklinga etter hver nye faktor er lagt til. Her er et forslag til framgangsmåte:

    +
      +
    1. Lag først et program der menneskene er trygge mot zombier, og der nye mennesker kan komme til ved fødsel og (mer sannsynlig) innvandring. Lag gjerne ett ledd i likninga som inkluderer begge disse faktorene.

    2. +
    3. Legg inn en ressursbegrensning (bæreevne) for populasjonen. Hvilke faktorer påvirker denne?

    4. +
    5. Menneskene kan også dø av sykdom, skade og alderdom (naturlig død). Legg dette inn i modellen, og tenk på hvor sannsynlig dette er (hvor god er tilgangen på medisiner, lege o.l.?).

    6. +
    7. Nå skal du legge inn en zombiepopulasjon som lever i nærheten av Alexandria. Du kan selv bestemme hvor mange zombier som finnes og hvor sannsynlig det er at mennesker blir drept av en zombie. Zombiene fungerer som rovdyr, slik at menneskene ikke blir til zombier i denne modellen.

    8. +
    9. Nå kan du legge inn muligheten for at mennesker blir til zombier hvis de blir bitt, men ikke revet i fillebiter. Det vil si at noen mennesker vil bli smitta, mens andre vil bli drept av zombiene. De som blir smitta, blir til zombier, og dermed øker zombiepopulasjonen.

    10. +
    11. Alexandria kan slå tilbake mot zombiene. Legg inn en faktor som bidrar til at menneskene kan ta livet av zombier.

    12. +
    13. I nærheten av Alexandria finner vi landsbyene Hilltop og Kingdom. Fra disse kan det komme forsterkninger til Alexandria ved behov. Inkluder dette i modellen din.

    14. +
    +
    +
    +
    +

    Oppgave 2: Klimamodell 1 – Ozonlaget (kjemi)#

    +

    Vi kan også simulere kjemiske reaksjoner ved hjelp av modeller for reaksjonsfart. Disse modellene lar oss forutsi hvordan og hvor fort en kjemisk reaksjon vil gå. Dette kan brukes til å simulere alt fra industrielle prosesser til viktige reaksjoner i miljøet. Her skal vi se på modeller som kan forutsi hvordan det vil gå med ozonlaget i framtida.

    +
    +

    Farstlover#

    +

    Modeller for reaksjonsfart kaller vi fartslover. En fartslov beskriver endringen i konsentrasjon i en kjemisk reaksjon. La oss ta et enkelt eksempel der vi har to reaktanter og ett produkt:

    +
    +\[A + B \rightarrow C\]
    +

    Fartsloven for denne reaksjonen må bestemmes eksperimentelt, og er derfor en empirisk lov. For eksempel kan endringen i konsentrasjonen til C være gitt ved:

    +
    +\[\frac{d[C]}{dt} = k[A][B]\]
    +

    Her betyr \(\frac{d[C]}{dt}\) den deriverte av [C] med hensyn på tid (c’(t)). Det vil si at endringen i konsentrasjonen til produktet C er avhengig av konsentrasjonen til begge reaktanter i like stor grad. Men det kunne jo være at endringen i [C] varierte mer med [A] enn med [B], eller for eksempel ikke med [A] i det hele tatt. Da kunne vi henholdsvis fått disse modellene:

    +
    +\[\frac{d[C]}{dt} = k[A]^2[B]\]
    +
    +\[\frac{d[C]}{dt} = k[B]\]
    +

    Eksperimenter avgjør hvilken form vi gir fartslovene. Og dersom endringen av [C] er gitt ved \(\frac{d[C]}{dt} = k[A][B]\), kan vi ut fra reaksjonslikningen utlede følgende sammenhenger (forklar hvorfor!):

    +
    +\[\frac{d[A]}{dt} = -k[A][B]\]
    +
    +\[\frac{d[B]}{dt} = -k[A][B]\]
    +
    +
    +

    Fartslover for dannelse og nedbrytning av ozon i stratosfæren#

    +

    Den såkalte Chapman-modellen kan benyttes for å simulere produksjon og nedbrytning av ozon i stratosfæren. Den er basert på følgende reaksjonslikninger med tilhørende reaksjonskoeffisienter:

    +
    +\[O_2 \xrightarrow{uv} 2O\]
    +
    +\[O_2 + O + M \rightarrow O_3 + M\]
    +
    +\[O_3 \xrightarrow{uv'} O + O_2\]
    +
    +\[O + O_3 \rightarrow 2O_2\]
    +

    hvor O, O\(_2\) og O\(_3\) er henholdsvis oksygen, dioksygen og ozon. M er en ikke-reagerende støtpartner, mens \(h \nu\) og \(h \nu '\) er energi tilført av UV-stråling med bølgelengde, \(\lambda\), under 242 nm og 336 nm, henholdsvis.

    +

    Den første reaksjonslikningen beskriver spaltingen av O\(_2\) til 2 O-atomer som resultat av UV-stråling. Den andre reaksjonslikningen viser den påfølgende reaksjonen mellom O\(_2\) og O som krever en kollisjon med M for å danne O\(_3\), mens de to siste reaksjonslikningene viser hvordan O\(_3\) brytes ned henholdsvis som resultat av UV-stråling for å danne O og O\(_2\), og gjennom reaksjon med O for produksjon av 2 O\(_2\)-molekyler.

    +

    Fartslovene for [O], [O\(_2\)] og [O\(_3\)] er gitt ved henholdsvis

    +
    +\[\frac{d[\textrm{O}]}{dt} = 2 k_1 [\textrm{O}_2] - k_2 [\textrm{O}_2] [\textrm{O}] [\textrm{M}] + k_3 [\textrm{O}_3] - k_4 [\textrm{O}] [\textrm{O}_3\]
    +
    +\[\frac{d[\textrm{O}_2]}{dt} = - k_1 [\textrm{O}_2] - k_2 [\textrm{O}_2] [\textrm{O}] [\textrm{M}] + k_3 [\textrm{O}_3] + 2 k_4 [\textrm{O}] [\textrm{O}_3]\]
    +
    +\[\frac{d[\textrm{O}_3]}{dt} = k_2 [\textrm{O}_2] [\textrm{O}] [\textrm{M}] - k_3 [\textrm{O}_3] - k_4 [\textrm{O}] [\textrm{O}_3]\]
    +

    Ratekonstantene er gitt som følger:

    +
    +\[k_1 = 3.0 \times 10^{-12} \textrm{ s}^{-1}\]
    +
    +\[k_2 = 1.2 \times 10^{-33} \textrm{ cm}^6 \textrm{ molekyler}^{-2} \textrm{ s}^{-1}\]
    +
    +\[k_3 = 5.5 \times 10^{-4} \textrm{ s}^{-1}\]
    +
    +\[k_4 = 6.9 \times 10^{-16} \textrm{ cm}^3 \textrm{ molekyler}^{-1} \textrm{ s}^{-1}\]
    +

    Ratekonstantene er gitt ved omtrent 25 km høyde, hvor \([\textrm{M}] \approx 9.0 \times 10^{17}\) molekyler cm\(^{-3}\). Systemet har følgende initialbetingelser:

    +
    +\[[\textrm{O}_2]_{t=0} = 0.21[\textrm{M}]\]
    +
    +\[[\textrm{O}]_{t=0} = 0\]
    +
    +\[[\textrm{O}_3]_{t=0} = 0\]
    +
    +
    +

    Oppgaver#

    +

    a) Lag et program som beregner og plotter [O\(_3\)] og [O] som funksjon av tid i intervallet \(t \in [0,100]\) ved å benytte Forward Euler-algoritmen på fartslovene i teoridelen med de gitte initialbetingelsene og tidssteg \(h = 0.001\). Plott med logaritmisk skala på \(y\)-aksen (plt.yscale(‘log’)).

    +

    b) Beregn og plott de samme verdiene med en backward-metode (‘BDF) ved å bruke funksjonen scipy.integrate.solve_ivp fra Scipy-biblioteket for \(t \in [0,10^8]\). Evaluer punktene for t = np.linspace(t0,tid_slutt,int(1E6)).

    +

    c) Legg til justeringer i modellen eller søk og finn andre modeller du kan bruke. Ideer til endringer kan være å innkludere et økt utslipp av KFK-gasser (begrunn eventuelt hvorfor) og sammenlikninger av modellen med data og med andre modeller på internett.

    +
    +
    +
    +

    Oppgave 3: Klimamodell II – Drivhuseffekten (fysikk)#

    +

    Det som hovedsakelig varmer opp planeten vår, er sollys. Sola sender ut energi i form av elektromagnetisk stråling som treffer jordkloden. All elektromagnetisk stråling som treffer toppen av atmosfæren, har blitt målt til ca 1361 kW/m\(^2\) Hvor mye energi som treffer toppen av atmosfæren er nesten konstant, og har bare variert med 0.2 prosent på 400 år. Strålingen blir kalt for solkonstanten (K\(_s\)).

    +

    sunlight_angle.png

    +

    Energien som treffer planeten kan beregnes slik:

    +
    +\[ E_{inn} = K_s \cdot \pi R_{jorda}^2\]
    +

    a) Forklar hva vi forutsetter om modellen vår dersom vi bruker uttrykket ovenfor til å beregne hvor mye energi som treffer jorda.

    +

    Ikke all energi som treffer jorda, blir absorbert av jordas overflate. En del energi reflekteres tilbake på grunn av jordas albedo. Den absorberte energien kan beregnes slik:

    +
    +\[E_{absorbert} = K_s \cdot (1 - albedo) \cdot \pi R{_E}^2\]
    +

    b) Forklar hvorfor vi kan uttrykke den absorberte energien som ovenfor. +c) Beregn energien som treffer jorda, og energien som jorda absorberer. Hvor mange prosent blir absorbert?

    +

    Alle legemer sender også ut (emitterer) energi. Dette kan beskrives med Stefan-Boltzmann-loven:

    +
    +\[\phi=\sigma T^4\]
    +

    \(\sigma\) er Stefan-Boltzmann constant. \(\sigma = 5.670373 \cdot 10^{-8} W / (m^2K^4)\)

    +
    +\[E_{emittert} = \sigma T^4 \cdot 4\pi R{_E}^2\]
    +

    På grunn av energiprinsippet, loven om at energi er konstant, må energi inn på planeten være det samme som energi ut. Da har vi at:

    +
    +\[ E_{absorbert}= E_{emittert}\]
    +

    d) Bruk dette energiprinsippet og uttrykkene ovenfor til å finne et uttrykk for den gjennomsnittlige temperaturen til jordkloden. Kommenter svaret og forklar hvilken modell du nå har brukt.

    +

    Modellen vi nå har brukt, tar ikke hensyn til atmosfæren. Når vi legger til atmosfæren, kan vi først gjøre følgende forenklinger:

    +
      +
    1. Atmosfæren har en konstant temperatur. Det vil si at vi modeller atmosfæren som en stor blokk hvor hele blokken har den samme temperaturen.

    2. +
    3. Atmosfæren er fullstendig gjennomsiktig for stråling fra sola. Det vil si at all stråling fra sola treffer jordoverflaten.

    4. +
    5. Atmosfæren tar imot all strålinga fra jorden.

    6. +
    +

    Atmosfære.png

    +

    e) Legg til atmosfæren i modellen din. Du må fortsatt bruke energibevaring som utgangspunkt, men beregne energi inn og ut av atmosfæren hver for seg. Da får du to likninger som du kan kombinere for å få en løsning or temperaturen.

    +

    f) Nå kan du legge til flere faktorer i modellen din, f.eks. flere lag i atmosfæren. Her kan du lage modeller selv, eller du kan søke opp informasjon om ulike klimamodeller. Finn temperaturen for hver modell, og drøft modellene og resultatene underveis.

    +
    +
    +

    Oppgave 4: Solsystemet (fysikk)#

    +

    Solsystemet har lenge vært til fascinasjon og undring for mennesker. Selv i et så stort system som solsystemet kan en simulere planetenes baner med god tilnærming ved å kun bruke Newtons lover!

    +
    +

    Teoretisk bakgrunn#

    +

    Hvis vi ser på kraften som virker mellom to planeter, en med masse \(m_1\) og én med masse \(m_2\), kan vi bruke Newtons universelle gravitasjonslov. Loven forteller oss at for to legemer med masse \(m_1\) og \(m_2\) som kan ansees å ha perfekt kuleform, er kraften mellom dem \(F = \frac{Gm_1m_2}{r^2}\). Vi bruker denne loven til å finne kreftene som virker på dem. Vi kan anta at planetene beveger seg i to dimensjoner, det vil si langs \(x\)- og \(y\)-aksen. Hvis du vil ha en mer realistisk simulering ved å inkludere en tredje dimensjon, dvs. \(z\)-aksen, er det mulig å utvide modellen med å gjøre akkurat det samme for \(z\)-aksen som modellen har gjort for \(x\)- og \(y\)-aksen, men dette er valgfritt. Kraften som virker på en planet med masse \(m_1\) langs \(x\)- og \(y\)-aksen, \(F_{x}\) og \(F_{y}\), blir påvirka av en planet med masse \(m_2\). Kreftene langs \(x\)- og \(y\)-aksen kan uttrykkes ved:

    +
    +\[F_{x} = -\frac{G\cdot m_1\cdot m_2\cdot x(t)}{r^3}\]
    +
    +\[F_{x} = -\frac{G\cdot m_1\cdot m_2\cdot x(t)}{\left((x(t) - x_2(t))^2 + (y(t) - y_2(t))^2\right)^{\frac{3}{2}}}\]
    +
    +\[F_{y} = -\frac{G\cdot m_1\cdot m_2\cdot y(t)}{r^3}\]
    +
    +\[F_{y} = -\frac{G\cdot m_1\cdot m_2\cdot y(t)}{\left((x(t) - x_2(t))^2 + (y(t) - y_2(t))^2\right)^{\frac{3}{2}}}\]
    +

    der \(G\) er gravitasjonskonstanten, \(r\) er avstanden mellom planetene og \(x(t)\) og \(y(t)\) er posisjonen til planeten med masse \(m_1\) langs henholdsvis \(x\)- og \(y\)-aksen etter ei tid \(t\). Vi har også at \(x_2(t)\) og \(y_2(t)\) er posisjonen til planeten med masse \(m_2\) langs henholdsvis \(x\)- og \(y\)-aksen etter ei tid \(t\).

    +
    +
    +

    Oppgaver#

    +
      +
    1. Vis at akselerasjonen \(a_{x}(t)\) og \(a_y(t)\) til en planet med masse \(m_1\) langs henholdsvis \(x\)- og \(y\)-aksen er:

      +
      +\[a_x(t) = -\frac{G\cdot m_2\cdot x(t)}{r^3}\]
      +
      +\[a_y(t) = -\frac{G\cdot m_2\cdot y(t)}{r^3}\]
      +
    2. +
    3. Forklar hvorfor vi får at disse likningene må løses for å finne posisjonene \(x(t)\) og \(y(t)\):

      +
      +\[x'(t) = v_x(t)\]
      +
      +\[y'(t) = v_y(t)\]
      +
      +\[v_x'(t) = -\frac{G\cdot m_2\cdot x(t)}{r^3}\]
      +
      +\[v_y'(t) = -\frac{G\cdot m_2\cdot y(t)}{r^3}\]
      +

      der \(v_x(t)\) og \(v_y(t)\) er farten til planeten med masse \(m_1\).

      +

      Nå skal vi se på et solsystem som består av kun jorda og sola. Modellen antar at sola står stille. Du kan derfor fokusere på hvordan jordas bane blir påvirket av sola.

      +

      I denne modellen lar vi jordas masse \(m_1 = 3\cdot 10^{-6}\) solmasser og solas masse \(m_2 = 1\) solmasse. Solmasser er en enhet som forteller stor en planet er i forhold til sola. Ved å bruke AU (enhet brukt som den gjennomsnittlige avstanden mellom sol og jord) og år som enheter i vår modell, kan vi finne at \(G = 4\pi^2\).

      +

      La startbetingelsene til jorda være \(x(0) = 1\), \(y(0) = 0\), \(v_x(0) = 0\) og \(v_y(0) = 2\pi\). Sola kan stå i origo. Det betyr at i dette tilfellet vil \(x_2(t) = 0\) og \(y_2(t) = 0\) for alle tider \(t\).

      +
    4. +
    5. Skriv et program som først bruker Eulers metode til å finne jordas bane rundt sola for ett år ved å bruke \(N = 1000\) tidssteg. La programmet plotte banen.

    6. +
    7. Euler-Cromers metode er en liten justering av Eulers metode. Finn ut hva som menes med denne metoden. Skriv om programmet fra deloppgave c) slik at det bruker Euler-Cromer isteden med samme verdi for \(N\). Hvordan er plottet nå, sammenlikna med plottet fra deloppgave c)?

      +

      Men vi kan jo ikke ha bare én planet i solsystemet vårt! Nå skal vi se på hvordan simuleringa kan være dersom vi har med flere planeter i solsystemet. Merk at \(x_2(t)\) og \(y_2(t)\) nå vil være avhengig av hvilken planet vi ser på. Du kan fortsatt anta at sola står stille.

      +
    8. +
    9. Skriv et program som modellerer planetenes bane for \(P\) planeter. Du kan gjerne bruke fila planetermalstruktur.py som forslag til programstruktur i programmet ditt, men du kan også utvide programmet ditt fra d). Hvis du skriver om programmet ditt fra d), er det viktig at det greier å lese en datafil med info over planetenes startposisjon, startfart og masse.

      +

      Forslaget til programstrukturen henter ut eksempeldata fra ei fil som heter planeter_data.dat. Tallene er henta fra NASA og har blitt noe modifisert. Du kan finne sida her: https://ssd.jpl.nasa.gov/horizons.cgi. Sola er ikke tatt med, da simuleringa antar at den står i origo og ikke beveger seg.

      +

      Kommentar til struktur:

      +

      Vi har ikke jobba så mye med matrisestrukturer. Tankegangen bak strukturen til pos og fart i planetermalstruktur.py kan illustreres slik:

      + Matriser +

      Illustrasjon viser tankegangen bak pos, som er helt den samme for fart. Her kan en tenke at vi lagrer informasjonen over planetene i et arkiv. Det \(j\)-te “arket” med informasjon til den \(j\)-te planeten hentes ut ved pos[:,:,\(j\)]. Skal vi se hvor den \(j\)-te planeten befinner seg langs både \(x\)- og \(y\)-aksen ved et tidssteg \(i\), bruker vi pos[\(i\),:,\(j\)]. Skal vi for eksempel bare se på \(x\)-verdien til den \(j\)-te planeten ved tidssteg \(i\), bruker vi pos[\(i\),0,\(j\)], og 1 istedenfor 0 dersom vi skal se på \(y\)-verdien.

      +

      Du kan sjekke om simuleringa di gir følgende planetbaner etter ett år ved å bruke informasjonen fra fil planeter_data.dat. Fildataene gir følgende resultater av simuleringa etter ett år:

      +Planetbaner +
    10. +
    11. Bruk pygame til å visualisere planetenes bane rundt sola. Du får et forslag til hvordan programstrukturen kan være, men utvid gjerne med mer om du har lyst. Her er det kun fantasien som setter grenser! Et forslag til programstruktur har filnavnet planetermalpygame.py.

    12. +
    +
    +
    +
    +
    + + + + +
    + + + + + + +
    + + + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/oppgaver/statistikkprosjekt.html b/docs/oppgaver/statistikkprosjekt.html new file mode 100644 index 00000000..f629e782 --- /dev/null +++ b/docs/oppgaver/statistikkprosjekt.html @@ -0,0 +1,1011 @@ + + + + + + + + + Statistikkprosjekt — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Statistikkprosjekt

    + +
    +
    + +
    +
    +
    + +
    + +
    +

    Statistikkprosjekt#

    +

    Vårt første modelleringsprosjekt er et prosjekt der du skal samle inn et datasett og gjøre statistisk analyse og regresjonsanalyse med disse dataene. Oppgaven går ut på følgende:

    +
      +
    1. Samle inn data. Du bør måle minst 4 variabler og samle inn minst 25 målepunkter for hver av de fire variablene. Du kan bruke sensorer, spørreundersøkelser eller tilsvarende. Lagre dataene i en .txt-fil, .csv-fil eller .xlsx-fil (Excel). Hvis du finner et veldig godt datasett på internett som du heller ønsker å bruke, spør læreren om dere kan bruke det isteden.

    2. +
    3. Les dataene i Python og lag relevante visualiseringer som beskriver hva datasettet forteller oss.

    4. +
    5. Beregn relevante mål på sentraltendens og spredning. Presenter resultatene i en oversiktlig tabell. Forklar hva disse målene forteller om dataene dine. Lag gjerne visualiseringer som beskriver spredningen.

    6. +
    7. Regn ut korrelasjoner i datasettet og lag et korrelasjonsplott. Diskuter eventuelle korrelasjoner.

    8. +
    9. Gjør en lineær regresjon av to variabler der en lineær modell kan beskrive sammenhengen mellom variablene. Diskuter modellen.

    10. +
    +

    Prosjektet leveres som fullstendig rapport (lever en .ipynb-fil og .pdf av notebooken).

    +
    + + + + +
    + + + + + + +
    + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/programmering_intro.html b/docs/programmering_intro.html new file mode 100644 index 00000000..1776d5d9 --- /dev/null +++ b/docs/programmering_intro.html @@ -0,0 +1,1187 @@ + + + + + + + + + Programmering - en liten start — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Programmering - en liten start

    + +
    + +
    +
    + +
    + +
    +

    Programmering - en liten start#

    +

    Programmering dreier seg om å få datamaskinen til å gjøre det vi ønsker. Her skal vi bruke programmeringsspråket Python til å utforske geometriske mønstre. Først får du en innføring i hvordan du kan bruke variabler og print-funksjonen. Deretter ser vi på hvordan du kan bruke løkker til å gjenta kode.

    +
    +

    Variabler#

    +
    +

    Variabel

    +

    En programmeringsvariabel er en størrelse som lagrer en verdi i et program.

    +
    +

    Du kan tenke på en variabel som en boks vi kan putte ting i, og som vi kan modifisere, endre og hente informasjon fra underveis.

    +
    +

    Oppgave

    +

    Nedenfor er et eksempel på en programkode i Python der vi beregner gjennomsnittshastigheten i m/s for ulike legemer som har beveget seg henholdsvis 3, 4.5, 7 og 14 meter i løpet av 3 sekunder. Hva er fordelen med å bruke variablen t her?

    +
    +
    +
    +
    t = 3
    +
    +v1 = 3/t
    +v2 = 4.5/t
    +v3 = 7/t
    +v4 = 14/t
    +
    +
    +
    +
    +

    For å få noe ut av programmet vårt, må vi be datamaskinen om å “skrive ut” noe. Dette gjør vi med funksjonen print. Dersom vi ønsker å skrive ut flere variabler, må vi skille dem med komma i print-kommandoen. Her ser du to eksempler:

    + +
    +

    Underveisoppgave

    +

    Eksperimenter med programmet ovenfor og forklar hvordan print fungerer.

    +
    +
    +
    +

    Løkker#

    +

    Den kanskje viktigste strukturen i programmering er løkker. De lar datamaskinen gjenta en operasjon så mange ganger vi vil. Det er dette som er datamaskinens styrke.

    +
    +

    Løkker

    +

    En løkke er en struktur som gjør at vi kan gjenta kode. Ofte skiller vi mellom en telleløkke, som gjentar noe et visst antall ganger, og en tilstandsløkke, som gjentar seg så lenge noe er sant. I Python heter disse henholdsvis for-løkke og while-løkke.

    +
    +
    +
    +

    Skilpaddegrafikk#

    +

    Vi skal se hvordan løkker fungerer ved å introdusere deg for en skilpadde. Han heter Gunnar. Her er han:

    + +

    Gunnar følger enkle kommandoer, som “forward”, “backward”, “right” og “left”.

    +
    +

    Underveisoppgave

    +

    Endre programmet ovenfor slik at Gunnar tegner en trekant. Hva er sammenhengen mellom vinkelen som skilpadden snur og vinklene i trekanten?

    +
    +
    +

    Skilpadder i løkker#

    +

    Å tegne en trekant krever få linjer kode, men hva hvis du vil tegne en åttekant, en førtitokant, eller en nittisekskant? Det er slitsomt og kjedelig å skrive samme kommando hundrevis av ganger. Og det er totalt unøvdendig. Vi bruker nemlig løkker til å gjenta kode, for eksempel slik:

    + +
    +

    Oppgave

    +

    Prøv å forklare hvordan programmet ovenfor fungerer.

    +
    + + +
    +

    Oppgave

    +

    Modifiser programmet ovenfor slik at skilpadden Gunnar tegner en 20-kant.

    +
    +
    +

    Oppgave

    +

    Få Gunnar til å tegne en blomst!

    +
    +
    +

    Oppgave

    +

    Få Gunnar til å tegne en blomst!

    +
    +
    +
    +
    +

    Litt mer om løkker#

    +

    Vi har to typer løkker i Python: while-løkker (tilstandsløkker) og for-løkker (telleløkker). I programmene ovenfor har vi brukt en for-løkke, som teller et visst antall ganger. While-løkker gjentar derimot noe helt til et kriterium er nådd. Her er et eksempel:

    + +

    Programmet kjører så lenge variabelen partall har en verdi som er mindre enn eller lik 10. Alt som er rykket inn, gjentas hver gang løkka går. Programmet skriver derfor ut alle positive partall (og 0) som er mindre enn eller lik 10.

    +
    +

    Oppgave

    +

    Modifiser programmet ovenfor slik at programmet skriver ut alle positive oddetall under 10.

    +
    +
    +
    +

    Oppgaver#

    +
    +
    +

    Videoer#

    +

    I videoene nedenfor kan du få en innføring eller repetisjon i den grunnleggende teorien bak løkker:

    +
    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/tema1_grunnleggende_programmering/grunnleggende_programmering.html b/docs/tema1_grunnleggende_programmering/grunnleggende_programmering.html new file mode 100644 index 00000000..df0d7294 --- /dev/null +++ b/docs/tema1_grunnleggende_programmering/grunnleggende_programmering.html @@ -0,0 +1,1673 @@ + + + + + + + + + Grunnleggende programmering (oppgaver) — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Grunnleggende programmering (oppgaver)

    + +
    + +
    +
    + +
    + +
    +

    Grunnleggende programmering (oppgaver)#

    +

    Her er litt teori og oppgaver som kan hjelpe deg å komme i gang med det viktigste innen realfaglig programmering. Bruk gjerne de innebygde kodeboksene til å lage og kjøre programmer underveis.

    +
    +

    1. Variabler#

    +
    +

    Variabel

    +

    En programmeringsvariabel er en størrelse som lagrer en verdi i et program.

    +
    +
    +
    +
    m = 1 # Masse
    +v = 2 # Hastighet
    +
    +kinetisk_energi = m*v**2
    +
    +print("Den kinetiske energien er:", kinetisk_energi, "J.")
    +
    +
    +
    +
    +
    Den kinetiske energien er: 4 J.
    +
    +
    +
    +
    +

    Vi kan også bruke matematiske funksjoner som kvadratrot og trigonometriske funksjoner. Da må vi importere et bibliotek som inneholder disse funksjonene. Det enkleste er å importere alt fra biblioteket pylab. Det gjør vi slik:

    +
    +
    +
    from pylab import *
    +
    +kvadratrot = sqrt(4)
    +sinus = sin(radians(30))
    +
    +print("Kvadratrota av 4 er:", kvadratrot, "Sinus til 30 grader er:", sinus)
    +
    +
    +
    +
    +
    Kvadratrota av 4 er: 2.0 Sinus til 30 grader er: 0.49999999999999994
    +
    +
    +
    +
    +

    Merk at vi måtte gjøre om vinkelmålet til radianer (som er et vinkelmål man lærer om i R-matte) til grader. Det samme prinsippet gjelder for øvrig i GeoGebra.

    +
    +

    Oppgave 1.1

    +

    Bruk kodeboksen nedenfor til å lage relevante variabler slik at programmet regner ut arealet av en trekant med grunnlinje 4 og høyde 2. Programmet inneholder litt kode fra før til å hjelpe deg på vei.

    +
    + +
    +

    Oppgave 1.2

    +

    Lag et program som regner ut radius til en sirkel med arealet 4.

    +
    + +
    +

    Ekstra: Oppgave 1.3

    +

    For å ta input fra brukeren av programmet istedenfor å skrive variabelverdier rett inn i programmet, kan vi bruke input-funksjonen til Python.

    +

    tall = float(input(“Skriv et tall: “))

    +

    Lag et program som bruker en formel fra matematikken til å regne ut noe. Bruk input-funksjonen til å hente variabelverdier fra brukeren. Hvis du lurer på hva “float”-kommandoen foran input gjør, kan du lese mer om det i 1.1 nedenfor.

    +
    +
    +

    1.1 Variabeltyper#

    +

    I matematikk har vi ulike tallmengder, som reelle tall, irrasjonale tall, rasjonale tall, naturlige tall, hele tall og komplekse tall. Disse tallmengdene er uendelig store, som betyr at de ikke kan eksistere på en datamaskin. Vi har derfor en del andre tallmengder og variabeltyper. For eksempel heter desimaltall float fordi ikke alle desimaltall er representert på en datamaskin. Det er altså en annen tallmengde. De viktigste variabeltypene ser du her:

    + + + + + + + + + + + + + + + + + + + + + + + + + +

    Datatype

    Forklaring

    Eksempel

    Heltall (int)

    Hele tall

    42

    Flyttall (float)

    Desimaltall

    3.1415

    Streng (str)

    Tekst

    “Hei!”

    Boolsk

    Sannhet

    True eller False

    +

    Når vi ønsker input fra en bruker av et program, må vi spesifisere hvilken variabeltype vi ønsker at inputen skal bli tolket som. Standard er tekst, men hvis vi for eksempel “adderer” teksten “4” med “2”, får vi “42”, mens tallet 4 + tallet 2 gir tallet 6. Eksempelet nedenfor illustrerer dette.

    +
    +
    +
    tekst1 = input("Skriv et tall: ")
    +tekst2 = input("Skriv et tall til: ")
    +
    +tall1 = float(tekst1)
    +tall2 = float(tekst2)
    +
    +tullsvar = tekst1 + tekst2
    +tallsvar = tall1 + tall2
    +
    +print("Summen av teksten er:", tullsvar, "og summen av tallene er:", tallsvar)
    +
    +
    +
    +
    +
    Skriv et tall: 4
    +Skriv et tall til: 2
    +Summen av teksten er: 42 og summen av tallene er: 6.0
    +
    +
    +
    +
    +

    Input er ikke nødvendig for annet enn å lage et mer interaktivt program. Men hvis du lager et program med input, bør du legge til input helt til slutt. Start med å gi variablene verdier, og test at programmet fungerer. Deretter kan du bruke input på de variablene du ønsker. Dette er for å unngå å måtte taste inn input-verdier hver gang du kjører programmet ditt, spesielt hvis det inneholder feil du må rette opp!

    +
    +
    +
    +

    2. Vilkår (if-tester)#

    +
    +

    Vilkår (if-test)

    +

    Et vilkår, eller en betingelse, er en logisk test for å sjekke om et kriterium er oppfylt. Dersom kriteriet er oppfylt, utføres det en handling. Dersom kriteriet ikke er oppfylt, blir ikke handlingen utført.

    +
    +
    +
    +
    tall = 42
    +
    +if tall < 5:
    +    print("Tallet er veldig lite.")
    +elif tall < 20:
    +    print("Tallet er ganske lite.")   
    +elif tall < 50:
    +    print("Tallet er passe stort.")
    +elif tall < 100:
    +    print("Tallet er ganske stort.")
    +else:
    +    print("Tallet er enormt!")
    +
    +
    +
    +
    +
    Tallet er passe stort.
    +
    +
    +
    +
    +

    Det er noen ting å huske på her:

    +
      +
    • Alt som er rykket inn utføres kun hvis if-testen ovenfor er sann. Innrykk er derfor viktig for strukturen.

    • +
    • “elif” står for “else if”, og sjekker noe nytt, mens “else” brukes for å gjøre noe dersom ingen av kriteriene under “if” og “elif” er sanne.

    • +
    • Det er den første if-testen som er sann i en serie av if-elif-else som utføres. Alle andre overses. Dersom vi skriver “if” en gang til, begynner vi på en ny serie med if-elif-else.

    • +
    • Vi begynne med “if”, mens “elif” og “else” er valgfritt.

    • +
    • De logiske operatorene vi kan velge mellom, er:

    • +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Symbol

    Betydning

    >

    større enn

    <

    mindre enn

    ==

    lik

    !=

    ikke lik

    <=

    mindre enn eller lik

    >=

    større enn eller lik

    +
    +

    Oppgave 2.1

    +

    Lag et program der du sjekker om et tall er positivt, negativt eller null, og skriver ut relevante setninger. Du kan ta utgangspunkt i programkoden i kodeboksen her:

    +
    + +
    +

    Oppgave 2.2

    +

    Lag et program med en variabel kalt pH. Programmet skal skrive ut om løsningen med denne pH-en er sur, basisk eller nøytral.

    +
    +
    +

    Oppgave 2.3

    +

    Forklar hvorfor de to ulike programmene nedenfor gir ulike output.

    +
    +
    +
    +
    a = 10
    +if a > 5:
    +    a = a + 5
    +a = a + 2
    +print(a)
    +
    +
    +
    +
    +
    17
    +
    +
    +
    +
    +
    +
    +
    s
    +
    +
    +
    +
    +
    15
    +
    +
    +
    +
    +
    +

    Oppgave 2.4

    +

    I et programmeringspuslespill skal du bruke ferdige kodeblokker til å pusle sammen et program. Dette puslespillet skal bli et program som skal regne ut hvor mange løsninger en andregradslikning på formen \(ax^2 + bx + c = 0\) har. Prøv å sette sammen puslespillet. Pass på innrykk og rekkefølge! Hvis du blir fort ferdig, kan du prøve denne varianten. Hvis du har mer tid til overs, kan du jo prøve å lage programmet selv!

    +
    +
    +
    +

    3. Løkker#

    +

    Den kanskje viktigste strukturen i programmering er løkker. De lar datamaskinen gjenta en operasjon så mange ganger vi vil. Det er dette som er datamaskinens styrke.

    +
    +

    Løkker

    +

    En løkke er en struktur som gjør at vi kan gjenta kode. Ofte skiller vi mellom en telleløkke, som gjentar noe et visst antall ganger, og en tilstandsløkke, som gjentar så lenge noe er sant. I Python heter disse henholdsvis for-løkke og while-løkke.

    +
    +
    +
    +
    partall = 0
    +
    +for i in range(5): # Gjenta 5 ganger (i går igjennom intervallet [0, 1, 2, 3, 4])
    +    partall = partall + 2
    +    print(partall)
    +
    +
    +
    +
    +
    2
    +4
    +6
    +8
    +10
    +
    +
    +
    +
    +
    +
    +
    partall = 0
    +
    +while partall < 10:       # Gjenta så lenge partall er mindre enn 10
    +    partall = partall + 2 # Øk partallsvariabelen med 2
    +    print(partall)        
    +
    +
    +
    +
    +
    2
    +4
    +6
    +8
    +10
    +
    +
    +
    +
    +

    Studer løkkene og prøv å forstå hvordan de virker. Legg merke til at alt som er rykket inn til høyre, tilhører løkka og gjentas hver gang løkka kjører.

    +

    Det er viktig å forstå hvordan løkkene fungerer. For å illustrere dette, kan vi sette opp en løkketabell som viser verdien til de ulike variablene i ei løkke. La oss bruke følgende program som utgangspunkt:

    +
    +
    +
    a = 0
    +
    +for i in range(5):
    +    a = a + 1
    +    b = a*i
    +
    +
    +
    +
    +

    En løkketabell som beskriver hva verdien til alle variabelene er før og underveis i løkka, er gitt nedenfor. Bruk løkka og tabellen og prøv å forstå hva som skjer!

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Løkkerunde

    i

    a

    b

    Startverdi

    -

    0

    -

    1

    0

    1

    0

    2

    1

    2

    2

    3

    2

    3

    6

    4

    3

    4

    12

    5

    4

    5

    20

    +

    Vi kan printe ut variablene underveis i løkka og se at vi faktisk får det samme (husk at kategorien “løkkerunde” ikke er en variabel):

    +
    +
    +
    a = 0
    +print("i | a | b") # Printer kun én gang
    +
    +for i in range(5):
    +    a = a + 1
    +    b = a*i
    +    
    +    print(i,"|", a,"|", b) # Printer hver gang i løkka
    +
    +
    +
    +
    +
    i | a | b
    +0 | 1 | 0
    +1 | 2 | 2
    +2 | 3 | 6
    +3 | 4 | 12
    +4 | 5 | 20
    +
    +
    +
    +
    +
    +

    Oppgave 3.1

    +

    Lag et program som skriver ut “Du er flink til å programmere!” tusen ganger. Hvilken funksjon har “tellevariabelen” (i) her?

    +
    +
    +

    Oppgave 3.2

    +

    Programmet nedenfor skal finne summen av de 100 første tallene i en tallfølge der hvert ledd er den dobbelte av det forrige. Forklar hvordan programmet fungerer. Endre gjerne på ulike variabler og test hva utfallet blir for å forstå hvordan programmet fungerer.

    +
    + +
    +

    Oppgave 3.3

    +

    Skriv om programmet ovenfor slik at du benytter en while-løkke istedenfor en for-løkke.

    +
    +
    +

    Oppgave 3.4

    +

    Skriv om programmet ovenfor slik at du benytter en while-løkke istedenfor en for-løkke.

    +
    +
    +

    Oppgave 3.5

    +

    Lag en løkketabell av programmet nedenfor:

    +
    +
    +
    +
    a = 0
    +
    +for i in range(5):
    +    b = a*i
    +    a = a + 1
    +
    +
    +
    +
    +
    +

    Oppgave 3.6

    +

    Hva skrives ut i følgende program? Prøv å undersøke dette for hånd. Til slutt kan du sjekke ved å kopiere programmet inn i en editor og kjøre det.

    +
    +
    +
    +
    a = 0
    +
    +for i in range(5):
    +    b = a*i
    +    print(b)
    +    a = a + 1
    +print(a)
    +
    +
    +
    +
    +
    +

    Oppgave 3.7

    +

    Programmene nedenfor skal regne ut hvor lang tid det tar før du har doblet beløpet ditt i banken gitt en årlig rente på 5 % og en startkapital på 5000 kroner, men programmet fungerer ikke som det skal. Hva er feil? Rett opp programmet slik at det fungerer.

    +
    +
    +

    3.1 Løkker og lister#

    +

    Lister er en datastruktur i Python som lar oss spare på ulike verdier i samme variabel. Eksempel på hvordan lister kan brukes, er slik:

    +
    +
    +
    tom_liste = []                           # Lager en tom liste
    +tall = [1, 2, 3.5]                       # Liste med tre tall
    +dyr = ["Stumpneseape", "Lemur", "Sjøku"] # Liste med tre dyr (tekststrenger)
    +
    +tom_liste.append(24)
    +print("Append-funksjonen legger til elementer i lista. Vi får:", tom_liste)
    +
    +
    +
    +
    +

    Lister er en god kombinasjon med løkker, siden løkker kan generere ulike tallverdier som vi kan spare på i listene. For eksempel slik:

    +
    +
    +
    startkapital = 5000
    +penger = startkapital
    +år = 0
    +rente = 0.01
    +år_liste = [0]
    +penger_liste = [startkapital]
    +
    +while penger < startkapital*2:
    +    penger = penger + penger*rente
    +    år = år + 1
    +    år_liste.append(år)
    +    penger_liste.append(penger)
    +
    +
    +
    +
    +
    +

    Oppgave 3.8

    +

    Forklar hvordan programmet ovenfor fungerer.

    +
    +

    Siden vi nå har en variabel som inneholder pengene ved et hvert år, er det en gyllen mulighet til å visualisere hvordan pengeutviklingen er. Da må vi først se litt på hvordan vi kan plotte.

    +
    +
    +
    +

    4. Plotting#

    +

    Vi kan enkelt plotte lister med data på denne måten:

    +
    +
    +
    from pylab import * # Importerer relevante plotteverktøy
    +
    +tid = [0, 2, 4, 6, 8, 10, 12, 14] # dager
    +plantehøyde = [0, 1, 4.2, 7.9, 12.5, 13, 13.7, 13.9] # cm
    +
    +plot(tid, plantehøyde)
    +title("Forsøk: Plantevekst")
    +xlabel("Tid (dager)")
    +ylabel("Plantens høyde (cm)")
    +show()
    +
    +
    +
    +
    +../../_images/78b50b1f112a30b4fa4d21c99314dfb7dc1d1646f1ffa4e6277ecbfe008d15cd.png +
    +
    +

    Det finnes utrolig mange måter å modifisere et plott på. Programmet nedenfor plotter miljøgifter i ulike organismer i to innsjøer. Studer programmet og eksperimenter med ulike verdier. Du kan finne verdier for farger, linjestiler, markører og liknende ved å google «python plotting colors» og tilsvarende. Biblioteket som inneholder plotting, heter matplotlib, noe du kan se av søkeresultatene dine. Du må bruke internett flittig når du lurer på noe i programmering!

    + +

    Vi kan også plotte funksjoner. Da må vi spesifisere hvilke verdier av x vi ønsker å plotte for. Disse x-verdiene kan vi generere enkelt ved å bruke en kommando som heter linspace(a, b, n). Denne genererer et intervall fra a til b med n punkter. Test programmet nedenfor og prøv for eksempel med n = 4 (altså at antall x-verdier er 4). Hva skjer da, og hvorfor?

    + +
    +

    Oppgave 4.1

    +

    Prøv å plotte verdiene fra renteprogrammet nedenfor. Eksperimenter med ulike verdier av startkapital og rente, og se hvordan utviklingen endrer seg.

    +
    +
    +
    +

    *5. Funksjoner#

    +

    Funksjoner er å regne som en grunnstruktur i programmering, men det er ikke en nødvendig grunnstruktur for å lage enkel kode for å utforske matematikk og naturfag. Til tross for dette er funksjoner nyttig å kunne, men husk at det er mer en kodeteknisk ferdighet enn en ferdighet vi kan bruke for å forstå realfag.

    +

    Det er viktig å vite at funksjoner i programmering ikke er det samme som funksjoner i matematikk. De KAN ha samme virkemåte, men trenger ikke det. La oss representere den matematiske funskjonen \(f(x) = 2x^2 - x + 1\) som en Python-funksjon:

    +
    +
    +
    def f(x):
    +    return 2*x**2 - x + 1
    +
    +
    +
    +
    +

    Vi definerer en funksjon med kodeordet def og gir den et funksjonsnavn, her f. Deretter spesifiserer hva inn-verdien/variabelen til funksjonen skal hete. Her kaller vi den x. I programmering kaller vi en slik størrelse for en parameter. Gitt én verdi av x, skal funksjonen returnere (spesifisert ved return-kommandoen) en funksjonsverdi.

    +

    Her har vi bare definert funksjonen. Vi har ikke brukt den enda, så vi får ikke noe output her. La oss bruke funksjonen:

    +
    +
    +
    print(f(1))
    +
    +
    +
    +
    +
    2
    +
    +
    +
    +
    +

    Som vi ser, får vi funksjonsverdien til f(1). Nå har vi brukt funksjonen vi tidligere har definert. Dette heter å “kalle på” funksjonen.

    +

    Poenget med funksjoner er i hovedsak to ting:

    +
      +
    • Kodestrukturering.

    • +
    • Gjenbruk av kode.

    • +
    +

    Det er spesielt sistnevnte poeng som er sentralt. Ved å definere en funksjon kan vi bruke denne funksjonen flere ganger i programmet vårt, for eksempel slik:

    +
    +
    +
    def f(x):
    +    return x + 1
    +
    +addisjon = f(1) + f(3)
    +subtraksjon = f(1) - f(3)
    +
    +print(addisjon, subtraksjon)
    +
    +for x in range(5):
    +    print(f(x))
    +
    +
    +
    +
    +
    6 -2
    +1
    +2
    +3
    +4
    +5
    +
    +
    +
    +
    +
    +

    Oppgave 5.1

    +

    Forklar hvordan programmet ovenfor fungerer.

    +
    +
    +

    Oppgave 5.2

    +

    I programmet nedenfor definerer vi en funksjon som regner ut volumet til en sylinder. Lag en annen funksjon i samme program som regner ut volumet til ei kule.

    +
    +

    (\(V_{kule} = \frac{4}{3}\pi r^3\))

    +
    +
    +

    Filmer#

    +
    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/tema1_grunnleggende_programmering/if-tester.html b/docs/tema1_grunnleggende_programmering/if-tester.html new file mode 100644 index 00000000..a128a100 --- /dev/null +++ b/docs/tema1_grunnleggende_programmering/if-tester.html @@ -0,0 +1,1534 @@ + + + + + + + + + Vilkår (if-tester) — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Vilkår (if-tester)

    + +
    + +
    +
    + +
    + +
    +

    Vilkår (if-tester)#

    +
    +

    Læringsutbytte

    +

    Etter å ha arbeidet med dette temaet, skal du kunne:

    +
      +
    1. bruke vilkår til å systematisere valg i programkode

    2. +
    3. illustrere og løse matematiske og naturvitenskapelige problemstillinger med sammensatt kode der vilkår inngår

    4. +
    +
    +
    +

    Innledende oppgave

    +

    Før du går i gang med å programmere, prøv å forklare hva følgende kodesnutter gjør:

    +
    tall = 10
    +
    +if tall > 8:
    +    print("Tallet er større enn 8.")
    +
    +
    +
    tall = 10
    +
    +if tall < 8:
    +    print("Tallet er mindre enn 8.")
    +
    +
    +
    tall = 10
    +if tall < 8:
    +    print("Tallet er mindre enn 8.")
    +else:
    +    print("Tallet er ikke mindre enn 8.")
    +
    +
    +
    tall = 10
    +if tall < 8:
    +    print("Tallet er mindre enn 8.")
    +elif tall >= 8:
    +    print("Tallet er ikke mindre enn 8.")
    +
    +
    +
    +
    +

    Definisjon#

    +
    +

    Vilkår

    +

    Et vilkår, eller en betingelse, er en logisk test for å sjekke om et kriterium er oppfylt. Dersom kriteriet er oppfylt, utføres det en handling. Dersom kriteriet ikke er oppfylt, blir ikke handlingen utført. Vilkår beskrives ofte i programmering som en «hvis-setning» («if» i Python).

    +
    +

    Vilkår er sentrale i programmering, men også sentrale i hverdagen. Vi kan lage et enkelt eksempel ut fra billettpriser på bussen. Hvis du er under 18 år, blir prisen 31 kroner. Hvis ikke, regnes du som voksen, og må betale 62 kroner. Vi kan beskrive dette med følgende pseudokode:

    +
    hvis alder er mindre enn 18:
    +    pris = 31
    +hvis ikke:
    +    pris = 62
    +
    +
    +

    Dersom vi oversetter denne pseudokoden til Python-kode, ser vi at logikken og strukturen er ganske lik:

    +
    if alder < 18:
    +    pris = 31
    +else: 
    +    pris = 62
    +
    +
    +
    +

    Underveisoppgave

    +

    Vi kan illustrere hvordan vilkår fungerer med et puslespill. Puslespillet nedenfor er basert på billettpriseksempelet. Løs dette puslespillet uten å se på Python-koden ovenfor. Pass på at innrykkene er riktig! Hva tror du innrykk betyr?

    +
    +
    +
    +

    Vilkår i Python#

    +

    La oss se på et eksempel i Python:

    +
    tall = float(input("Tast inn et tall: "))
    +if tall > 1:
    +    print("Hurra, tallet er større enn 1!")
    +
    +
    +

    Programmet ber brukeren om å taste inn et vilkårlig tall som deretter konverteres til flyttall. Vilkåret starter med if, etterfulgt av variabelnavnet. Deretter gir vi et kriterium som skal sjekkes. Her tester vi om tallet er større enn 1. Dersom det er større enn 1, skrives det ut en beskjed. Vi må ha et kolon etter første linje, og innrykk på alt som hører til det spesifikke kriteriet. Dersom kriteriet ikke er oppfylt, skjer det ingen ting. Dersom vi vil at det skal skje noe selv om kriteriet ikke er oppfylt, kan vi legge til else-kommandoen:

    +
    tall = float(input("Tast inn et tall: "))
    +if tall > 1:
    +    print("Hurra, tallet er større enn 1!")
    +else:
    +    print("Tallet er ikke større enn 1.")
    +
    +
    +

    Dersom kriteriet (tall > 1) ikke er sant, blir beskjeden etter else skrevet ut. Vi kan legge til enda flere kriterier ved å bruke elif (forkortelse for else if):

    +
    tall = float(input("Tast inn et tall: "))
    +if tall > 1:
    +    print("Hurra, tallet er større enn 1!")
    +elif tall < 1:
    +    print("Tallet er mindre enn 1!")
    +else:
    +    print("Tallet er 1!")
    +
    +
    +

    Det er en logisk konklusjon at tallet er 1 dersom det verken er større eller mindre enn 1. For å være helt sikre, kan vi erstatte else-kommandoen med nok en elif-kommando:

    +
    tall = float(input("Tast inn et tall: "))
    +if tall > 1:
    +    print("Hurra, tallet er større enn 1!")
    +elif tall < 1:
    +    print("Tallet er mindre enn 1!")
    +elif tall == 1:
    +    print("Tallet er 1!")
    +
    +
    +

    Legg merke til at symbolet == brukes for å teste om tallet er lik 1. Dersom vi bruker enkel likhetstegn (=) tror Python at vi prøver å tilordne en variabel. Da får vi en feilmelding. De ulike symbolene som brukes i vilkår, er oppsummert i tabellen nedenfor.

    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Symbol

    Betydning

    >

    Større enn

    <

    Mindre enn

    ==

    Er lik

    <=

    Mindre enn eller lik

    >=

    Større enn eller lik

    !=

    Ikke lik

    +

    Det er noen ting å passe spesielt på når vi programmerer med vilkår:

    +
      +
    • Alt som er rykket inn utføres kun hvis if-testen ovenfor er sann. Innrykk er derfor viktig for strukturen.

    • +
    • “elif” står for “else if”, og sjekker noe nytt, mens “else” brukes for å gjøre noe dersom ingen av kriteriene under “if” og “elif” er sanne.

    • +
    • Det er den første if-testen som er sann i en serie av if-elif-else som utføres. Alle andre overses. Dersom vi skriver “if” en gang til, begynner vi på en ny serie med if-elif-else.

    • +
    • Vi begynne med “if”, mens “elif” og “else” er valgfritt.

    • +
    +
    +

    Underveisoppgave

    +

    Lag et program der du sjekker om et tall er positivt, negativt eller null, og skriver ut relevante setninger når de ulike kriteriene er nådd. Du kan ta utgangspunkt i programkoden i kodeboksen her:

    +
    + + +
    +
    +

    Nøstede vilkår#

    +

    Vi kan også ha vilkår inni vilkår. Dette er spesielt nyttig hvis vi skal sjekke flere ting som er avhengige av hverandre. Nedenfor ser du en svært forenklet bestemmelsesnøkkel for grunnstoffer som illustrerer prinsippet. Kanskje du kan legge inn et kriterium til som gjør bestemmelsen mer presis?

    +
    +
    +
    elektronegativitet = float(input("Hvilken elektronegativitet har grunnstoffet? "))
    +if elektronegativitet > 2:
    +    print("Grunnstoffet er mest sannsynlig et ikke-metall.")
    +else:
    +    reaktivt = input("Er grunnstoffet svært reaktivt (ja/nei)? ")
    +    if reaktivt == "ja":
    +        print("Grunnstoffet er mest sannsynlig et alkalimetall.")
    +    elif reaktivt == "nei":
    +        print("Grunnstoffet kan for eksempel være et innskuddsmetall eller et jordalkalimetall.")
    +
    +
    +
    +
    +
    Hvilken elektronegativitet har grunnstoffet? 2.0
    +Er grunnstoffet svært reaktivt (ja/nei)? nei
    +Grunnstoffet kan for eksempel være et innskuddsmetall eller et jordalkalimetall.
    +
    +
    +
    +
    +
    +

    Underveisoppgave

    +

    Bruk flytskjemaet nedenfor som utgangspunkt for et program som finner ut hva slags bergart du har oppdaget.

    + +
    + +
    +
    +

    Oppgaver#

    +
    +

    Oppgave 3.1

    +

    Forklar hvorfor de to ulike programmene nedenfor gir ulike output.

    +
    +
    +
    +
    a = 10
    +if a > 5:
    +    a = a + 5
    +a = a + 2
    +print(a)
    +
    +
    +
    +
    +
    +
    +
    a = 10
    +if a > 5:
    +    a = a + 5
    +else:
    +    a = a + 2
    +print(a)
    +
    +
    +
    +
    + +
    +

    Oppgave 3.2

    +

    Lag et program som spør brukeren om alderen til brukeren. Skriv ut en kommentar som avhenger av om alderen er under eller over 17. Utvid programmet til å skille mellom flere aldre.

    +
    + +
    +

    Oppgave 3.3

    +

    Lag et program som tar en poengsum som input. Programmet skal finne ut hvilken karakter du får dersom maks poengsum er 60 poeng. Finn på karaktergrenser selv.

    +

    Utvid programmet med en maks poengsum. Programmet skal benytte prosenter av denne makssummen til å regne ut sluttkarakteren. Lag prosentgrensene selv.

    +
    + +
    +

    Oppgave 3.4

    +

    Lag et program som tar to tall som input. Programmet skal skrive ut hvilket av de to tallene som er størst.

    +
    + +
    +

    Oppgave 3.5

    +

    Løs dette programmeringspuslespillet. Programmet skal skrive ut antallet løsninger i en andregradslikning. Når du er ferdig, kan du prøve dette puslespillet, som er en litt mer avansert variant. Forklar forskjellen på programmene.

    +
    +
    +

    Oppgave 3.6

    +

    Lag et program som tar utgangspunkt i puslespillet ovenfor. Programmet skal også regne ut hva løsningene er.

    +
    + +
    +

    Oppgave 3.7

    +

    Lag en kalkulator der brukeren må taste inn to tall og en regneoperasjon. Du bestemmer selv hvor mange regneoperasjoner programmet skal håndtere.

    +
    + +
    +

    Fysikkoppgave

    +

    Lag et program der du kan taste inn bølgelengden til synlig lys i nm og få ut hvilken farge lyset har. Utvid eventuelt programmet med andre deler av det elektromagnetiske spekteret.

    +
    + +
    +

    Kjemioppgave

    +

    Lag et program som tar konsentrasjonen av oksoniumioner (\(H_3O^+\)) som input. Programmet skal skrive ut om løsningen med denne pH-en er sur, basisk eller nøytral.

    +
    +\[pH = -log([H_3O^+])\]
    +

    Her står \([H_3O^+]\) for konsentrasjonen av \(H_3O^+\)-ioner. Test programmet med \([H_3O^+] = 1\cdot 10^{-7}\). Dette bør gi nøytral løsning.

    +
    + +
    +

    Biologioppgave

    +

    Vi skal se på en populasjon av mennesker og ser på et gen som finnes i to varianter: \(a\) og \(A\). Andelen av populasjonen som har variant \(A\) kan vi kalle for \(p\) og andelen av populasjonen som har variant \(a\) kan vi kalle for \(q\). Verdiene til \(p\) og \(q\) må være mellom 0 og 1. +Siden alle i populasjonen vil ha enten \(a\) eller \(A\) (eller begge), må \(p + q = 1\).

    +

    Populasjonen sies å være i Hardy-Weinberg-likevekt dersom verdiene til \(p\) og \(q\) ikke forandrer seg under forutsetningen at det foregår tilfeldig paring, ingen mutasjoner, ingen naturlig seleksjon og ingen evolusjon i populasjonen.

    +

    Dersom populasjonen er i Hardy-Weinberg-likevekt kan en finne andelen til de tre mulige genotypene til menneskene i populasjonen:

    +
      +
    • \(AA\) : \(p^2\)

    • +
    • \(Aa\) : \(2pq\)

    • +
    • \(aa\) : \(q^2\)

    • +
    +

    Lag et program som ber brukeren om verdien til \(p\) og \(q\). +Programmet skal så teste om \( p + q = 1\). Hvis summen er 1, skal programmet regne ut andelene til de tre mulige genotypene, og skrive dem ut. Hvis summen ikke er 1, skal programmet skrive en feilmelding.

    +
    + +
    +
    +

    Video#

    +

    Se videoen nedenfor for å få en gjennomgang av det viktigste når vi skal programmere if-tester i Python:

    +
    +
    +
    +
    + + + + +
    + + + + + + +
    + + + +
    + +
    + +
    + On this page +
    + +
    + +
    + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/tema1_grunnleggende_programmering/kom_i_gang.html b/docs/tema1_grunnleggende_programmering/kom_i_gang.html new file mode 100644 index 00000000..28df4bd5 --- /dev/null +++ b/docs/tema1_grunnleggende_programmering/kom_i_gang.html @@ -0,0 +1,1072 @@ + + + + + + + + + En første kodesnutt — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    En første kodesnutt

    + +
    + +
    +
    + +
    + +
    +

    En første kodesnutt#

    +
    +

    Oppgaver for nybegynnere#

    +
      +
    1. Lag et program som skriver ut summen og produktet av to tall.

    2. +
    3. Definer tre variabler med hver sin datatype (streng, heltall og flyttall). Skriv så ut disse variablene.

    4. +
    5. Lag et program som regner ut volumet til ei kule: \(V_{kule} = \frac{4}{3} \pi r^3\)

    6. +
    7. Lag et program som regner ut radius til en sirkel med arealet 4.

    8. +
    +
    +
    +

    Oppgaver for de som kan litt fra før#

    +
      +
    1. Lag et program som avgjør om et tall er positivt, negativt eller null, gitt input fra brukeren av programmet.

    2. +
    3. Lag et program som skriver ut alle partall fra og med 0 til 99.

    4. +
    5. Lag et program som regner ut summen av de 499 første heltallene.

    6. +
    7. Lag en funksjon som regner ut volumet av ei kule. Bruk funksjonen til å regne ut volumet til ei kule med radius 3 cm.

    8. +
    +
    +
    + + + + +
    + + + + + + +
    + + + +
    + + + +
    + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/tema1_grunnleggende_programmering/lister.html b/docs/tema1_grunnleggende_programmering/lister.html new file mode 100644 index 00000000..7ad08c25 --- /dev/null +++ b/docs/tema1_grunnleggende_programmering/lister.html @@ -0,0 +1,1225 @@ + + + + + + + + + Lister — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Lister

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    + +
    + +
    +

    Lister#

    +
    +

    Læringsutbytte

    +

    Etter å ha arbeidet med dette temaet, skal du kunne:

    +
      +
    1. opprette lister

    2. +
    3. gjør ulike operasjoner på lister (NB: Du trenger ikke pugge operasjonene!)

    4. +
    5. trekke ut informasjon av lister ved hjelp av indekser

    6. +
    +
    +

    Når vi trenger å spare på flere verdier i samme variabel, kan vi benytte lister. Lister er samlinger med tall, strenger eller annet. Lister i Python markeres ved å sette objektene i klammeparentes:

    +
    dyr = ["gaupe", "torndjevel", "bjørnedyr", "blobfisk", "sjøkneler"]
    +tall = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    +
    +
    +

    Lister defineres altså gjennom klammeparentesen, og elementene i lista skilles med komma. Vi kan også gjøre ulike listeoperasjoner, som å legge til og slette elementer. La oss bruke lista med dyr som eksempel:

    +
    dyr = []                   		                   # Lager ei tom liste
    +aper = ["stumpneseape", "spøkelsesape", "neseape"] # Lager ei liste
    +dyr.append("komodovaran")                          # Legger til et element til dyrelista
    +dyr.append("glaucus atlanticus")	               # Legger til et dyr til
    +dyr.extend(aper)                                   # Legger hele apelista inn i dyrelista
    +dyr.remove("neseape")                              # Sletter elementet "neseape"
    +dyr.pop(1)                        	               # Sletter element nr. 1 i lista
    +dyr.reverse()                                      # Reverserer lista
    +
    +print(dyr)
    +
    +
    +
    +

    Underveisoppgave

    +

    Hva slags output gir programmet ovenfor? Prøv å forstå hva som skjer uten datamaskin, og test så programmet for å se om du hadde rett.

    +
    +

    Plassnummeret til et element i lista kaller vi indeks. Indeksen angis ofte i klammeparentes. Vi kan også sortere lista, finne lengden av lista og finne de elementene vi ønsker.

    +
    +

    Underveisoppgave

    +

    Kjør programmet nedenfor og forklar hva som skjer.

    +
    + +

    Men vent nå litt! Vi ser at lista inneholder ni elementer – hvorfor står det at nummer 94 står på plass nr. 7 når vi ser at det er nest sist i lista (altså på plass nr. 8)? Det er fordi indekser i Python, og mange andre språk, starter på 0. Det vil si at indeksen til det første totallet er 0, og til det siste elementet (102) er 8. Ei liste med \(n\) elementer har elementer med indekser fra \(0\) til \(n - 1\).

    +

    Vi kan finne og bruke ulike elementer i ei liste ved å bruke indeksene til elementet. Vi trenger med andre ord ikke behandle hele lista hver gang vi trenger noen elementer derfra:

    +
    liste = [1.3, 5.6, -2.0, 3.5, -3.5]
    +A = liste[2]		# A får verdien til element 2 i lista 
    +B = liste[1:3]		# B blir ei liste med element 1 til og med 2
    +C = liste[2:]		# C blir ei liste med element 2 og sluttelementet
    +D = liste[:2]		# D blir ei liste med element 0 til og med 1 (til 2)
    +E = liste[-1]       # E får verdien til det siste elementet i lista
    +F = liste[-2]       # F får verdien til det nest siste elementet i lista
    +
    +
    +
    +

    Underveisoppgave

    +

    Hvilken verdi får variablene A, B, C, D, E og F ovenfor?

    +
    + +

    Det er noen andre operasjoner som en kan gjøre med lister. I tillegg er det ofte flere måter å gjøre ting på. La oss lage et par tallister og gjøre noen operasjoner på disse.

    + +
    +

    Underveisoppgave

    +

    Prøv ut programmet ovenfor og forklar hva som skjer. Endre gjerne på noen av operasjonene og se hva utfallet blir. Utvid også programmet slik at det skriver ut det siste elementet i lista c. Skriv også ut alle elementer bortsett fra det første.

    +
    + +

    Siden vi sletter element nr. 2 (som er tallet 3), får vi beskjed om at 3 ikke er i c lenger (“False”). Legg også merke til at når vi legger sammen listene, er det omtrent det samme som å bruke kommandoen extend.

    +
    +

    Oppgaver#

    +
    +

    Oppgave 2.1

    +

    Forklar for hvert program hvorfor det gir følgende output:

    +
    a = [1,2,3,4,5,6,7,8,9]
    +b = a[1] + a[5]
    +print(b)
    +
    +
    +

    Output: 8

    +
    liste = [1,2,3,4,5]
    +liste1 = liste[:3]
    +liste.pop(1)
    +liste1.reverse()
    +del liste1[2]
    +liste += liste1
    +print(liste)
    +
    +
    +

    Output: [1, 3, 4, 5, 3, 2]

    +
    + +
    +

    Oppgave 2.2

    +

    Du får gitt ei liste som ser slik ut:

    +
    ['dette','er','en','ganske','lang','liste','med','ikke', 'så','viktig','innhold']
    +
    +
    +

    Lag ei ny liste der programmet henter relevante elementer fra den gitte lista. Når du skriver ut den nye lista, skal du få: +[‘dette’,’er’,’en’,’liste’,’med’,’viktig’,’innhold’]

    +
    + +
    +

    Oppgave 2.3

    +

    Skriv om linja som endrer på lista a slik at i1 og i2 har forskjellige verdier.

    +
    a = [1,5,2,5,2,4,4,2]
    +i1 = a.index(2)
    +print("i1 =",i1)
    +del a[7]
    +i2 = a.index(2)
    +print("i2 =",i2)
    +
    +
    +
    + +
    +
    +

    Video#

    +

    Se videoen nedenfor for en innføring eller repetisjon til lister.

    +
    +
    +
    + +
    +
    +
    +
    +
    +
    + + + + +
    + + + + + + +
    + + + +
    + +
    + +
    + On this page +
    + +
    + +
    + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/tema1_grunnleggende_programmering/lokker.html b/docs/tema1_grunnleggende_programmering/lokker.html new file mode 100644 index 00000000..568aa6d0 --- /dev/null +++ b/docs/tema1_grunnleggende_programmering/lokker.html @@ -0,0 +1,2092 @@ + + + + + + + + + Løkker — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + + + +
    + +
    +

    Løkker#

    +
    +

    Læringsutbytte

    +

    Etter å ha arbeidet med dette temaet, skal du kunne:

    +
      +
    1. bruke while- og for-løkker til å gjenta kode

    2. +
    3. tegne geometriske mønstre med turtle-grafikk

    4. +
    5. beregne rekkesummer

    6. +
    7. løse naturvitenskapelige problemer med løkker

    8. +
    +
    +
    +

    Definisjon#

    +

    Den kanskje viktigste strukturen i programmering er løkker. De lar datamaskinen gjenta en operasjon så mange ganger vi vil. Det er dette som er datamaskinens styrke.

    +
    +

    Løkker

    +

    En løkke er en struktur som gjør at vi kan gjenta kode. Ofte skiller vi mellom en telleløkke, som gjentar noe et visst antall ganger, og en tilstandsløkke, som gjentar seg så lenge noe er sant. I Python heter disse henholdsvis for-løkke og while-løkke.

    +
    +
    +
    +

    Skilpaddegrafikk#

    +

    Vi skal se hvordan løkker fungerer ved å introdusere deg for en skilpadde. Han heter Gunnar. Her er han:

    + +

    Gunnar følger enkle kommandoer, som “forward”, “backward”, “right” og “left”.

    +
    +

    Underveisoppgave

    +

    Endre programmet ovenfor slik at Gunnar tegner en trekant. Hva er sammenhengen mellom vinkelen som skilpadden snur og vinklene i trekanten?

    +
    + +
    +

    Skilpadder i løkker#

    +

    Å tegne en trekant krever få linjer kode, men hva hvis du vil tegne en åttekant, en førtitokant, eller en nittisekskant? Det er slitsomt og kjedelig å skrive samme kommando hundrevis av ganger. Og det er totalt unøvdendig. Vi bruker nemlig løkker til å gjenta kode, for eksempel slik:

    + +
    +

    Underveisoppgave

    +

    Prøv å forklare hvordan programmet ovenfor fungerer. Hva tror du “for i in range(n)” betyr? Hva tror du i er?

    +
    + + +
    +

    Underveisoppgave

    +

    Modifiser programmet ovenfor slik at skilpadden Gunnar tegner en 20-kant.

    +
    + +
    +

    Oppgave

    +

    Få Gunnar til å tegne et menneske eller en blomst.

    +
    + +
    +
    +
    +

    While-løkker#

    +

    Vi har to typer løkker i Python: while-løkker (tilstandsløkker) og for-løkker (telleløkker). While-løkker gjentar noe helt til et kriterium er nådd. Her er et eksempel:

    + +

    Programmet kjører så lenge variabelen partall har en verdi som er mindre enn eller lik 10. Alt som er rykket inn, gjentas hver gang løkka går. Programmet skriver derfor ut alle positive partall (og 0) som er mindre enn eller lik 10.

    +
    +

    Underveisoppgave

    +

    Modifiser programmet ovenfor slik at programmet skriver ut alle positive oddetall under 10.

    +
    + +
    +
    +

    For-løkker#

    +

    I for-løkker lager vi en teller eller tellevariabel som går igjennom en slags liste med tall. Denne listeliknende tallmengden kan vi lage med funksjonen range. Her er noen eksempler:

    + + + + + + + + + + + + + + + + + +

    kommando

    liste

    range(3)

    [0, 1, 2]

    range(2,4)

    [2, 3]

    range(1,8,2)

    [1, 3, 5, 7]

    +
    +

    Underveisoppgave

    +

    Forklar hvordan range-funksjonen fungerer med utgangspunkt i eksemplene ovenfor.

    +
    + +

    Et enkelt eksempel på en for-løkke er slik:

    +
    for i in range(5):
    +    print(i)
    +
    +
    +

    Vi kan også gjøre noe mer enn å telle i løkka:

    +
    a = 2
    +for i in range(5):
    +    print(i)
    +    a = a + i
    +    
    +print(a)
    +
    +
    +

    Så hva betyr dette? Helt enkelt betyr det at alt som er rykket inn (med tab eller fire mellomrom), blir gjentatt 5 ganger. Operasjonen der vi oppdaterer a er

    +

    Hvis vi skal forklare litt mer presist hva som skjer, kan vi si at range-funksjonen lager en tallmengde [0, 1, 2, 3, 4], og at i blir tilordnet hver av disse verdiene etter tur. Første gang løkka går, er \(i = 0\). Da printes denne verdien, og \(a = 2 + 0 = 2\). Deretter gjentas alt inni løkka på nytt, og i får verdien 1. Så gjentas det som står rykket inn en gang til: Vi printer 1, og \(a = 2 + 1 = 3\). Slik fortsetter det til og med \(i = 4\). Når i har hatt alle verdiene i tallmengden, avsluttes løkka.

    +
    +

    Underveisoppgave

    +

    Vi kan systematisere løkkene med en løkketabell. Den holder styr på hva verdien til de ulike variablene er underveis i løkka. Fyll inn resten av løkketabellen for løkka ovenfor.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Løkkerunde

    i

    a

    Startverdi

    -

    2

    1

    0

    2

    2

    1

    3

    3

    4

    5

    +
    + +

    I for-løkker kaller vi ofte tellevariabelen for i, j, k eller liknende, men den kan egentlig hete hva som helst. I tillegg trenger vi ikke å gjøre noe med tellevariabelen. Mange ganger brukes den bare for å telle. Her er et eksempel:

    + +
    +

    Underveisoppgave

    +

    Modifiser programmet ovenfor slik at det skriver ut hvor mye penger du har etter et visst antall år. Lag en variabel som inneholder antall år, og som du bruker i løkka. Legg også inn hensiktsmessige kommentarer.

    +
    + +
    +
    +

    Å tenke i løkker#

    +

    Løkker kan brukes til alt fra å summere tallrekker i matematikk til å finne ut hvor mange harer det er i økosystem etter en viss tid, finne posisjonen til et legeme eller utforske hvordan kjemiske reaksjoner foregår. Når vi skal bruke løkker, må vi dele opp problemer slik at de kan utføres trinnvis. I matematikk og naturvitenskapelige fag er det ofte slik at vi representerer sammenhenger med kontinuerlige funksjoner og formler, men når vi løser problemene med løkker, gjør vi det trinnvis. For hvert trinn, gjør vi en bestemt operasjon. Dette kalles å løse noe iterativt, fordi iterasjon betyr gjentakelse. Litt mer uformelt kan vi kalle det å løse noe trinnvis med små, repeterende operasjoner “å tenke i løkker”. La oss se på noen eksempler fra både matematikk og naturvitenskap.

    +
    +

    Tallfølger#

    +

    En tallfølge er en oppramsing av tall som kan være enten endelig eller uendelig. Et eksempel på en endelig tallfølge er 2, 4, 6, 8, 10, som er en tallfølge av de 5 første partallene. En berømt uendelig tallfølge er Fibonacci-tallene: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, …, der de tre siste prikkene sier oss at rekka er uendelig lang. Fibonacci-tallene starter på 1, og hvert tall er deretter summen av de to foregående tallene.

    +
    +

    Underveisoppgave

    +

    Beskriv mønsteret i følgen 1, 4, 7, … og skriv opp det neste tallet i følgen.

    +
    + +

    Hvert tall i en tallfølge kalles et ledd. Vi kan beskrive hvert ledd i en følge med symboler, for eksempel \(a_n\), der n er en indeks som beskriver leddnummeret. I tallfølgen 1, 3, 5, 7, … kan for vi for eksempel si at \(a_1 = 1\) og \(a_2 = 3\). Poenget med å beskrive en følge med symboler, er at vi kan lage formler for hvert generelle ledd \(a_n\). Følgen 1, 3, 5, 7, … kan beskrives med den generelle formelen \(a_{n+1} = a_n + 2\), der \(a_1 = 1\). En slik formel kalles en rekursiv formel fordi vi tar utgangspunkt i en tidligere verdi for å regne ut neste verdi.

    +
    +

    Underveisoppgave

    +

    Forklar hvorfor \(a_{n+1} = a_n + 2\) er det samme som \(a_n = a_{n-1} + 2\).

    +
    + +

    Når vi først har kommet fram til en generell formel for en tallfølge, kan vi finne det n-te leddet ved hjelp av programmering. Vi bruker tallfølgen 1, 3, 7, 15, 31, … som eksempel. Denne følgen kan vi beskrive med formelen \(a_{n+1} = a_n + 2^n\). La oss finne det hundrede leddet i denne følgen:

    +
    +

    Underveisoppgave

    +

    Forklar hva som skjer i programmet ovenfor. For å sjekke om programmet vårt fungerer, kan det være lurt å beregne tall som vi kjenner i følgen. Prøv å finne tall nr. 3, 4 og 5 for å sjekke at programmet gjør det det skal.

    +
    + +
    +

    Underveisoppgave

    +

    Endre programmet ovenfor slik at det finner det 20. elementet i tallfølgen 1, 5, 11, 19, 29, …

    +
    + +
    +
    +

    Tallrekker#

    +

    Når vi beskriver en tallfølge som en serie med tall som adderes med hverandre, kaller vi det for en rekke. For eksempel er 1, 5, 11, 19, 29, … en tallfølge, mens 1 + 5 + 11 + 19 + 29 + … er en tallrekke. Vi kan summere slike rekker, selv om de er uendelige.

    +

    Noen rekkesummer går mot uendelig mens andre går mot en bestemt verdi. Vi kan utlede formler for å regne ut summen av slike rekker, men vi kan også lage programmer som gjør det. La oss si at vi har denne rekka (ei såkalt uendelig geometrisk rekke):

    +

    \(1 + \frac{2}{3} + \frac{4}{9} + \frac{8}{27} + ...\)

    +

    Vi kan regne ut summen av denne rekka ved å først kjenne igjen et mønster i tallmengden. Vi kan vise at det n-te tallet i rekka er \(\left(\frac{2}{3}\right)^n\). Deretter kan vi programmere ei løkke som legger sammen så mange av disse tallene som mulig. Vi tilnærmer altså den uendelige rekka med et endelig antall ledd. Det kan vi gjøre slik

    +
    +
    +
    N = 100
    +S = 0
    +
    +for n in range(N):
    +    S = S + (2/3)**n  # summen er lik forrige sum + sum av nytt tall
    +print(S)
    +
    +
    +
    +
    +
    2.9999999999999987
    +
    +
    +
    +
    +

    Den nøyaktive, analytiske verdien vi kan få dersom vi uleder en summeformel for rekka, er 3 (uten desimaltall). Men når vi legger sammen de 100 første tallene i programmet ovenfor, får vi faktisk et tall som er ganske nærme. Det er ikke verst! Vi får sjeldent helt nøyaktige svar når vi bruker slike metoder, men vi kommer ganske nærme.

    +
    +
    +

    Naturvitenskapelige problemer#

    +

    Det som er ekstra morsomt med å løse problemer iterativt, er at vi ofte løser ting på samme måte på tvers av ulike fag. Se bare på de tre ulike programmene nedenfor, fra fagområdene fysikk og biologi. Du kan også sammenlikne med det du har lært om følger og rekker.

    +
    +
    +
    # Fysikkeksempel
    +
    +tid = 10    # slutt-tid i sekunder
    +dt = 0.001  # tidssteg mellom hver iterasjon
    +t = 0       # start-tid
    +a = 9.8     # akselerasjonen til et legeme
    +
    +v = 0       # startfart i m/s
    +s = 0       # startposisjon i m
    +
    +while t <= tid:
    +    v = v + a*dt # bevegelsesformel for hastighet (konstant a)
    +    s = s + v*dt # bevegelsesformel for posisjon (konstant v)
    +    t = t + dt   # oppdaterer tida med dt
    +
    +print("I løpet av", tid, "sekunder falt steinen", s, "m.")
    +
    +
    +
    +
    +
    I løpet av 10 sekunder falt steinen 490.01960014606396 m.
    +
    +
    +
    +
    +
    +

    Underveisoppgave

    +

    Beskriv hva programmet ovenfor gjør. Problemet kan løses relativt enkelt ved hjelp av formler, men kan du tenke deg hvorfor denne måten å gjøre det på kan være nyttig likevel?

    +
    +
    +
    +
    B0 = 100          # antall bakterier ved t = 0
    +B = B0
    +antall_timer = 30 # slutt-tid i timer
    +t = 0             # start-tid
    +vekst = 1.20      # vekstfaktor
    +
    +for i in range(antall_timer):
    +    B = B*vekst
    +
    +print("Antall bakterier er:", int(B))
    +
    +
    +
    +
    +
    Antall bakterier er: 23737
    +
    +
    +
    +
    +
    +

    Underveisoppgave

    +

    Forklar hva programmet ovenfor gjør. Dette programmet gjør det samme som å sette t = 30 inn i funksjonen \(B(t) = 100\cdot 1.20^t\). Hva beskriver denne funksjonen, og hvorfor kan det være nyttig å lage et program for å regne ut dette når det er såpass lett å løse analytisk?

    +
    +

    De to programmene ovenfor benytter samme løsningsstrategi: Ut fra en startbetingelse (startposisjon og startfart eller antall bakterier til å begynne med) regner vi ut utviklingen over tid i et system (enten posisjonen til en stein som faller, eller antall bakterier til slutt), gitt noen premisser for systemet (henholdsvis akselerasjon og vekstfaktor). Det er altså mange likheter mellom måten vi løser problemene på.

    +

    Fordelen ved å bruke programmering til å løse slike problemer, er at det er lett generaliserbart. Selv om det finnes formler som ganske nøyaktig kan beskrive posisjonen til steinen ved enhver tid, er det ikke så lett å forutse posisjonen til en fallskjermhopper, der akselerasjonen varierer ganske mye, eller veksten til bakterier hvis den avhenger av temperatur. Alt dette er relativt enkelt å legge til i programmene våre, mens de analytiske (formelbaserte) løsningene blir veldig kompliserte, og ofte uløselige.

    +

    For eksempel kan vi enkelt legge inn en temperaturavhengighet i bakterieveksten vår slik:

    +
    +
    +
    B = 100
    +antall_timer = 30
    +vekst_liste = [1.20, 1.30, 1.42, 1.48]
    +temperatur = 30
    +
    +for i in range(antall_timer): 
    +    if 30 <= temperatur <= 40: 
    +        vekst = vekst_liste[0]
    +    elif 40 < temperatur < 52: 
    +        vekst = vekst_liste[1]
    +    elif 53 <= temperatur <= 65: 
    +        vekst = vekst_liste[2]
    +    else:
    +        vekst = vekst_liste[3] 
    +    B = B*vekst 
    +    temperatur = temperatur + 1
    +
    +print("Antall bakterier er:", int(B))
    +
    +
    +
    +
    +
    Antall bakterier er: 229430
    +
    +
    +
    +
    +

    Nå har vi egentlig lagd ulike modeller for to forskjellige systemer. Utvikling, testing og utforsking av modeller skal vi se mye på seinere. Her er hovedpoenget at du skal se hvordan løkker kan brukes til å løse problemer på en effektiv, robust og relativt intuitiv måte.

    +
    +
    +
    +

    Nøstede løkker#

    +

    Nøstede løkker er løkker inni løkker. Da gjelder det å holde tunga rett i munnen. La oss bruke et eksempel for å forklare hvordan det virker:

    +
    +
    +
    print("i | j")
    +print("-----")
    +for i in range(2):
    +    for j in range(1,3):
    +        print(i,"|", j)
    +
    +
    +
    +
    +
    i | j
    +-----
    +0 | 1
    +0 | 2
    +1 | 1
    +1 | 2
    +
    +
    +
    +
    +

    Vi ser at den innerste løkka, som bruker j som tellevariabel, gjentas to ganger for hver gang den ytterste løkka går. Først er altså i = 0. Det er første runde i den ytre løkka. Mens i = 0 går den indre løkka to ganger, en gang for j = 1 og en gang for j = 2. Deretter går neste runde i den ytre løkka, og i = 1. Den indre løkka går igjen to ganger, en gang for j = 1 og en gang for j = 2. Totalt har vi altså gått fire løkkerunder.

    +
    +

    Underveisoppgave

    +

    Lag et program som printer ut denne løkketabellen:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    a

    b

    1

    0

    1

    2

    1

    4

    2

    0

    2

    2

    2

    4

    3

    0

    3

    2

    3

    4

    +
    + +
    +
    +

    Oppgaver#

    +
    + +
    +
    +

    Oppgave 4.1

    +

    Sammenlikn programmene nedenfor. Beskriv eventuelle forskjeller og likheter.

    +
    partall = 0
    +
    +for i in range(5):
    +    partall = partall + 2
    +    print(partall)
    +
    +
    +
    partall = 0
    +
    +while partall < 10:
    +    partall = partall + 2
    +    print(partall)
    +
    +
    +
    + +
    +

    Oppgave 4.2

    +

    Lag en løkketabell med utgangspunkt i følgende kode:

    +
    a = 0
    +
    +for i in range(5):
    +    a = a + 1
    +    b = a*i
    +
    +
    +
    + +
    +

    Oppgave 4.3

    +

    Lag et program som skriver ut “Du er flink til å programmere!” tusen ganger. Hvilken funksjon har “tellevariabelen” (i) her?

    +
    + +
    +

    Oppgave 4.4

    +

    Programmet nedenfor skal finne summen av de 100 første tallene i en tallfølge der hvert ledd er den dobbelte av det forrige. Forklar hvordan programmet fungerer. Endre gjerne på ulike variabler og test hva utfallet blir for å forstå hvordan programmet fungerer.

    + +
    + +
    +

    Oppgave 4.5

    +

    Skriv om programmet ovenfor slik at du benytter en while-løkke istedenfor en for-løkke.

    +
    + +
    +

    Oppgave 4.6

    +

    Hva skrives ut i følgende program? Prøv å undersøke dette for hånd. Til slutt kan du sjekke ved å kopiere programmet inn i en editor og kjøre det.

    +
    a = 0
    +
    +for i in range(5):
    +    b = a*i
    +    print(b)
    +    a = a + 1
    +print(a)
    +
    +
    +
    + +
    +

    Oppgave 4.7

    +

    Bruk turtle-grafikk til å tegne et hus. Du bestemmer selv hvor detaljert huset skal være.

    +
    + +
    + +
    +
    +

    Oppgave 4.8

    +

    Bruk turtle-grafikk til å tegne en hundrekant. Hva slags form minner dette deg om?

    +
    + +
    +

    Oppgave 4.9

    +

    Programmet nedenfor skal regne ut hvor lang tid det tar før du har doblet beløpet ditt i banken gitt en årlig rente på 5 % og en startkapital på 5000 kroner, men programmet fungerer ikke som det skal. Hva er feil? Rett opp programmet slik at det fungerer.

    + +
    + +
    +

    Oppgave 4.10

    +

    Lag et program som regner ut denne summen: +\(\sum_{n = 0}^{50} \frac{1}{2^n}\)

    +
    + +
    +

    Oppgave 4.11

    +

    Lag et program som regner ut denne summen:

    +

    \(\sum_{n = 2}^{16} n^2 + n + 1\)

    +
    + +
    +

    Oppgave 4.12

    +

    Fibonnacifølgen er en kjent tallfølge med heltall der hvert tall etter det første er summen av de to foregående. Følgen starter slik: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, …

    +

    Lag et program som finner tall nr. n i rekka.

    +
    + +
    +

    Oppgave 4.13

    +

    Lag et program som viser at summen av denne rekka er 4.5:

    +

    \(\displaystyle 3 + 1 + \frac{1}{3} + \frac{1}{9} + \frac{1}{27} + ...\)

    +
    + +
    +

    Oppgave 4.14

    +

    I kombinatorikk er n-fakultet definert som produktet av alle heltall fra og med 1 til og med n. Dette kan vi skrive slik:

    +

    \(n! = \prod_{k=1}^{n} k\)

    +

    Lag en funksjon som regner ut fakultetet av et tall.

    +
    + +
    + +
    +
    +

    Oppgave 4.15 (biologi)

    +

    Tøffeldyr formerer seg ukjønnet annenhver time dersom de befinner seg i en omgivelse med temperatur på \(20 ^{\circ}C\).

    +

    Skriv et program som regner ut og skriver ut hvor mange tøffeldyr det vil være dersom vi begynner med 5 tøffeldyr som formerer seg ukjønnet i løpet av 24 timer. Du kan anta at ingen tøffeldyr dør.

    +
    + +
    +

    Oppgave 4.16 (fysikk)

    +

    Vi kan bruke Bohrs formel til å regne ut frekvensen til et foton som emitteres når et elektron i et hydrogenatom deeksiterer fra skall \(n\) til \(m\):

    +
    +\[f =\frac{B}{h}\cdot \left( \frac{1}{m^2} - \frac{1}{n^2} \right)\]
    +

    der \(B = 2.18\cdot 10^{-18} J\) er Bohrs konstant, \(h = 6.63\cdot 10^{-34}\) m\(^2\)kg s\(^{-1}\). Vi har også en sammenheng mellom frekvens og bølgelengden til fotonene:

    +
    +\[\lambda = \frac{c}{f}\]
    +

    der \(c = 3.00\cdot10^8\) m/s er lysets hastighet i vakuum.

    +

    a) Lag et program som skriver ut bølgelengden ti lyset som emitteres ved en gitt deeksitasjon. Test programmet ved deeksitasjon fra \(n = 5\) til \(n = 2\). Dette skal gi \(\lambda = 434.47 \ nm\).

    +

    b) Lag et program som regner ut alle bølgelengdene til fotonene som emitteres når atomet deeksiterer fra et skall n til alle mulige energinivåer m.

    +
    + +
    +

    Oppgave 4.17 (fysikk)

    +

    Over tid vil den radioaktive strålingen i et radioaktivt stoff reduseres. Dette skjer fordi atomene i det radioaktive stoffet vil omdannes til andre grunnstoffer. Mengden \(N(t)\) som gjenstår av det radioaktive stoffet etter ei tid \(t\) kan finnes ved:

    +

    \(N(t) = N_0e^{-at}\)

    +

    der \(N_0\) er hvor mye radioaktivt stoff vi starter med ved tida \(t = 0\). Verdien til \(a\) forteller hvor raskt det radioaktive stoffet omdannes til andre grunnstoffer. Hvis vi kjenner halveringstida \(T\), vil \(a = \frac{\ln(2)}{T}\).

    +

    Plutonium-239 har halveringstid på omtrent \(T = 24\ 000\) år. +Skriv et program som skriver ut hvor mye Plutonium-239 som gjenstår etter hvert 5000. år over en periode på 50 000 år dersom \(N_0 = 4\) kg.

    +
    + +
    +
    +
    +
    +

    Videoer#

    +

    I videoene nedenfor kan du få en innføring eller repetisjon i den grunnleggende teorien bak løkker:

    +
    + +
    + +

    Når du har sett videoen, kan du gjøre følgende oppgave for å sjekke om du forstår innholdet:

    +
    +

    Underveisoppgave

    +

    Skriv et program som regner ut summen av alle heltallene fra og med 1 til og med 449 ved hjelp av en for-løkke.

    +
    + +
    + +
    + +

    Når du har sett videoen, kan du gjøre følgende oppgave for å sjekke om du forstår innholdet:

    +
    +

    Underveisoppgave

    +

    Skriv et program som regner ut summen av tallene fra og med 1 til og med 449 ved hjelp av en while-løkke.

    +
    + +
    +
    +
    +
    +
    +
    + + + + +
    + + + + + + +
    + + + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/tema1_grunnleggende_programmering/programmeringsverktoy.html b/docs/tema1_grunnleggende_programmering/programmeringsverktoy.html new file mode 100644 index 00000000..544a9d28 --- /dev/null +++ b/docs/tema1_grunnleggende_programmering/programmeringsverktoy.html @@ -0,0 +1,1102 @@ + + + + + + + + + Programmeringsverktøy — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Programmeringsverktøy

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    + +
    + +
    +

    Programmeringsverktøy#

    +

    Vi ser her på to mye brukte verktøy i forbindelse med programmering, Jupyter Notebook og GitHub. Jupyter Notebook brukes til å skrive tekst, lage rapporter og kjøre programmer i samme system, mens GitHub er en plattform som gir versjonskontroll. Versjonskontroll kjenner du gjennom Dropbox, Onedrive, Google Disk og liknende. Det er en måte å spare på og dele programmene deres for hver endring dere gjør i programmet. Dette gjør det lett å gjenopprette tidligere versjoner dersom ting har gått skeis.

    +
    +

    Jupyter Notebook#

    +
    +
    +
    + +
    +
    +

    Vi kan også lage rapporter med Jupyter Notebook:

    +
    +
    +
    from IPython.display import IFrame
    +IFrame("https://www.youtube.com/embed/bQAMrj07MxQ? autoplay=0&rel=0", width=800, height=600)
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +

    2. GitHub* (frivillig)#

    +
    +
    +
    + +
    +
    +
    +
    + + + + +
    + + + + + + +
    + + + +
    + +
    + +
    + On this page +
    + +
    + +
    + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/tema1_grunnleggende_programmering/quiz1.html b/docs/tema1_grunnleggende_programmering/quiz1.html new file mode 100644 index 00000000..811dea4d --- /dev/null +++ b/docs/tema1_grunnleggende_programmering/quiz1.html @@ -0,0 +1,2118 @@ + + + + + + + + + Quiz 1: Variabler og aritmetikk — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Quiz 1: Variabler og aritmetikk

    + +
    +
    + +
    +
    +
    + +
    + +
    +

    Quiz 1: Variabler og aritmetikk#

    +
    +
    +
    +
    +
    +
    +
    + + + + +
    + + + + + + +
    + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/tema1_grunnleggende_programmering/quiz2.html b/docs/tema1_grunnleggende_programmering/quiz2.html new file mode 100644 index 00000000..0ea50f31 --- /dev/null +++ b/docs/tema1_grunnleggende_programmering/quiz2.html @@ -0,0 +1,1956 @@ + + + + + + + + + Quiz 2: Lister — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Quiz 2: Lister

    + +
    +
    + +
    +
    +
    + +
    + +
    +

    Quiz 2: Lister#

    +
    +
    +
    +
    +
    +
    + + + + +
    + + + + + + +
    + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/tema1_grunnleggende_programmering/quiz3.html b/docs/tema1_grunnleggende_programmering/quiz3.html new file mode 100644 index 00000000..de3e9c6e --- /dev/null +++ b/docs/tema1_grunnleggende_programmering/quiz3.html @@ -0,0 +1,2055 @@ + + + + + + + + + Quiz 3: Vilkår (if-tester) — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Quiz 3: Vilkår (if-tester)

    + +
    +
    + +
    +
    +
    + +
    + +
    +

    Quiz 3: Vilkår (if-tester)#

    +
    +
    +
    +
    +
    +
    +
    +
    + + + + +
    + + + + + + +
    + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/tema1_grunnleggende_programmering/quiz4.html b/docs/tema1_grunnleggende_programmering/quiz4.html new file mode 100644 index 00000000..07d7ff05 --- /dev/null +++ b/docs/tema1_grunnleggende_programmering/quiz4.html @@ -0,0 +1,2202 @@ + + + + + + + + + Quiz 4: Løkker — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Quiz 4: Løkker

    + +
    +
    + +
    +
    +
    + +
    + +
    +

    Quiz 4: Løkker#

    +
    +
    +
    +
    +
    +
    + + + + +
    + + + + + + +
    + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/tema1_grunnleggende_programmering/quiz5.html b/docs/tema1_grunnleggende_programmering/quiz5.html new file mode 100644 index 00000000..010ba409 --- /dev/null +++ b/docs/tema1_grunnleggende_programmering/quiz5.html @@ -0,0 +1,1869 @@ + + + + + + + + + Quiz 5: Funksjoner — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Quiz 5: Funksjoner

    + +
    +
    + +
    +
    +
    + +
    + +
    +

    Quiz 5: Funksjoner#

    +
    +
    +
    +
    +
    +
    + + + + +
    + + + + + + +
    + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/tema1_grunnleggende_programmering/quiz6.html b/docs/tema1_grunnleggende_programmering/quiz6.html new file mode 100644 index 00000000..b30f79cc --- /dev/null +++ b/docs/tema1_grunnleggende_programmering/quiz6.html @@ -0,0 +1,1910 @@ + + + + + + + + + Quiz 6: Datasamlinger (arrayer og dictionarier) — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Quiz 6: Datasamlinger (arrayer og dictionarier)

    + +
    +
    + +
    +
    +
    + +
    + +
    +

    Quiz 6: Datasamlinger (arrayer og dictionarier)#

    +

    Regn med at alle nødvendige funksjoner er importert i disse spørsmålene.

    +
    +
    +
    +
    +
    +
    + + + + +
    + + + + + + +
    + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/tema1_grunnleggende_programmering/tall_variabler.html b/docs/tema1_grunnleggende_programmering/tall_variabler.html new file mode 100644 index 00000000..5cb4f554 --- /dev/null +++ b/docs/tema1_grunnleggende_programmering/tall_variabler.html @@ -0,0 +1,1543 @@ + + + + + + + + + Variabler og datatyper — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + + + +
    + +
    +

    Variabler og datatyper#

    +
    +

    Læringsutbytte

    +

    Etter å ha arbeidet med dette temaet, skal du kunne:

    +
      +
    1. kjøre enkle programmer med en programmeringseditor

    2. +
    3. definere og gjøre rede for ulike variabeltyper: heltall, flyttall og strenger

    4. +
    5. skrive ut output ved å bruke print-funksjonen

    6. +
    7. gjøre enkel aritmetikk i Python

    8. +
    9. ta input fra brukeren av programmet

    10. +
    11. importere og bruke biblioteker

    12. +
    +
    +
    +

    Variabler#

    +
    +

    Variabel

    +

    En programmeringsvariabel er en størrelse som lagrer en verdi i et program.

    +
    +

    Variabler er spesielt nyttig når vi skal bruke samme verdi flere ganger, eller når vi skal oppdatere en verdi underveis i programmet. Et enkelt eksempel er hvis vi ønsker å finne ti tall i en bestemt tallrekke. Dette kan vi beskrive slik med en pseudokode:

    +
    tall = 0
    +gjenta 10 ganger:
    +    tall = tall + 3
    +    vis tall på skjermen
    +
    +
    +

    Du kan tenke på en variabel som en boks vi kan putte ting i, og som vi kan modifisere, endre og hente informasjon fra underveis.

    + +
    +

    Underveisoppgave

    +

    Nedenfor er et eksempel på en programkode i Python der vi beregner gjennomsnittshastigheten i m/s for ulike legemer som har beveget seg henholdsvis 3, 4.5, 7 og 14 meter i løpet av 3 sekunder. Hva er fordelen med å bruke variablen t her?

    +
    +
    +
    +
    t = 3
    +
    +v1 = 3/t
    +v2 = 4.5/t
    +v3 = 7/t
    +v4 = 14/t
    +
    +
    +
    +
    +
    +
    +

    Print#

    +

    For å få noe ut av programmet vårt, må vi be datamaskinen om å “skrive ut” noe. Dette gjør vi med kommandoen print. Dersom vi ønsker å skrive ut flere variabler, må vi skille dem med komma i print-funksjonen. Her ser du tre måter å bruke print-kommandoen på:

    +
    +
    +
    print(v1)
    +print(v1, v2, v3, v4)
    +print("Gjennomsnittsfarten for legeme 4 er: ", v4, "m/s.")
    +
    +
    +
    +
    +
    1.0
    +1.0 1.5 2.3333333333333335 4.666666666666667
    +Gjennomsnittsfarten for legeme 4 er:  4.666666666666667 m/s.
    +
    +
    +
    +
    +
    +

    Underveisoppgave

    +

    Lag et program som regner ut arealet av et rektangel og skriver ut en svarsetning med enheter.

    +
    + +
    +
    +

    Kommentarer#

    +

    Bruk av kommentarer i koden er viktig for at en selv skal huske hva koden illustrerer, hvilke enheter som brukes, og liknende. I tillegg er det viktig dersom andre skal bruke koden din til noe, for eksempel i store samarbeidsprosjekter. Kommentarer legges til ved å sette en # foran kommentaren. Eventuelt, dersom du kommenterer over flere linjer, kan du bruke triple anførselstegn før og etter kommentarene. Her er et eksempel:

    +
    +
    +
    """
    +Regner ut kinetisk energi i én dimensjon 
    +for et legeme med masse m og hastighet v
    +"""
    +
    +m = 2.0        # masse i kg
    +v = 1.0        # fart i m/s
    +
    +E = 0.5*m*v**2 # Kinetisk energi i J
    +print("Den kinetiske energien er", E, "J.")
    +
    +
    +
    +
    +
    Den kinetiske energien er 1.0 J.
    +
    +
    +
    +
    +
    +
    +

    Aritmetikk#

    +

    Vi kan bruke Python som en enkel kalkulator. Vi har blant annet følgende operatorer:

    + + + + + + + + + + + + + + + + + + + + + + + +

    Operator

    Forklaring

    +

    Addisjon (a + b)

    -

    Subtraksjon (a - b)

    *

    Multiplikasjon (a*b)

    /

    Divisjon (a/b)

    **

    Eksponent (a**b)

    +
    +

    Underveisoppgave

    +

    Det finnes også to spesielle operatorer: // og %. Finn ut hva disse operatorene gjør ved å prøve dere fram i koderuta nedenfor. Vi har lagt til fire linjer som du kan bruke som utgangspunkt.

    +
    +

    + +
    +

    Biblioteker#

    +

    De fleste matematiske operatorer og funksjoner finnes ikke i standard Python. For å få tilgang til mer avansert matematikk, må vi importere biblioteker (eller moduler) inn i Python-programmet vårt. Et bibliotek er en pakke med ekstra kommandoer og funksjoner som vi kan bruke, som sqrt, cos, log og så videre. Det finnes ulike måter å importere på. Her er noen måter vi kan importere det svært nyttige nympy-biblioteket (numerical python):

    +
    +
    +
    # Første metode: Importerer kun funksjonene du trenger
    +from numpy import log10
    +
    +pH = -log10(1E-7)
    +
    +# Andre metode: Importere hele biblioteket
    +import numpy
    +
    +A = 2 
    +radius = numpy.sqrt(A/numpy.pi)
    +
    +# Tredje metode: Importere hele biblioteket med et alias. Dette er den mest brukte metoden.
    +import numpy as np
    +
    +A = 2
    +radius = np.sqrt(A/np.pi)
    +
    +# Fjerde metode: Importere alt fra biblioteket uten å spesifisere hvor funksjonene kommer fra
    +from numpy import *
    +
    +vinkel = arccos(0.5) # Invers cosinus av 0.5
    +pH = -log10(1E-7)    # pH = -log([H3O+]), log10 er tierlogaritmen
    +
    +
    +
    +
    +
    +

    Underveisoppgave

    +

    Lag et program som regner ut radius til en sirkel med arealet 4 ved å importere sqrt og pi fra numpy-biblioteket. Kunne du gjort beregningene uten disse funksjonene?

    +
    + +
    +
    +
    +

    Brukerinput#

    +

    Vi kan også få programmet vårt til å spørre brukeren av programmet om å taste inn enkelte variabler selv. Dette gjøres i samme ruta som du får output i editoren din. For å få brukerinput, bruker vi funksjonen input. Kjør programmet nedenfor og beskriv hvordan det fungerer. Prøv å bytte ut ulike kodelinjer og se hva slags output du får. Du må skrive inn input-verdiene i konsollen til høyre i koderuta.

    +

    Input er ikke nødvendig for annet enn å lage et mer interaktivt program. Men hvis du lager et program med input, bør du legge til input helt til slutt. Start med å gi variablene verdier, og test at programmet fungerer. Deretter kan du bruke input på de variablene du ønsker. Dette er for å unngå å måtte taste inn input-verdier hver gang du kjører programmet ditt, spesielt hvis det inneholder feil du må rette opp!

    +
    +

    Underveisoppgave

    +

    Modifiser programmet fra forrige underveisoppgave slik at det tar arealet som input fra brukeren.

    +
    + +
    +
    +

    Variabeltyper#

    +

    I matematikk har vi ulike tallmengder, som reelle tall, irrasjonale tall, rasjonale tall, naturlige tall, hele tall og komplekse tall. Disse tallmengdene er uendelig store, som betyr at de ikke kan eksistere på en datamaskin. Vi har derfor en del andre tallmengder og variabeltyper. For eksempel heter desimaltall float fordi ikke alle desimaltall er representert på en datamaskin. Det er altså en annen tallmengde. De viktigste variabeltypene ser du her:

    + + + + + + + + + + + + + + + + + + + + + + + + + +

    Datatype

    Forklaring

    Eksempel

    Heltall (int)

    Hele tall

    42

    Flyttall (float)

    Desimaltall

    3.1415

    Streng (str)

    Tekst

    “Hei!”

    Boolsk

    Sannhet

    True eller False

    +

    Når vi ønsker input fra en bruker av et program, må vi spesifisere hvilken variabeltype vi ønsker at inputen skal bli tolket som. Standard er tekst, men hvis vi for eksempel “adderer” teksten “4” med “2”, får vi “42”, mens tallet 4 + tallet 2 gir tallet 6. Eksempelet nedenfor illustrerer dette.

    +
    +
    +
    tekst1 = input("Skriv et tall: ")
    +tekst2 = input("Skriv et tall til: ")
    +
    +tall1 = float(tekst1)
    +tall2 = float(tekst2)
    +
    +tullsvar = tekst1 + tekst2
    +tallsvar = tall1 + tall2
    +
    +print("Summen av teksten er:", tullsvar, "og summen av tallene er:", tallsvar)
    +
    +
    +
    +
    +
    Skriv et tall: 4
    +Skriv et tall til: 2
    +Summen av teksten er: 42 og summen av tallene er: 6.0
    +
    +
    +
    +
    +
    +

    Underveisoppgave

    +

    Lag et program som skriver “Hei, navn!” til skjermen. Brukeren skal bes om å taste inn navnet sitt. Dette navnet skal lagres i en variabel, og så skrives ut som i setningen ovenfor.

    +

    Utvid programmet til å spørre om alderen din. La programmet skrive ut en kommentar til alderen din til slutt, for eksempel “din alder er jammen gammelt!”

    +
    + +
    +
    +

    Datamaskinen krever nøyaktige instrukser#

    +

    Når du lager sammensatte programmer med Python, må du huske på følgende:

    +
      +
    • Programmet leses fra topp til bunn og fra venstre til høyre.

    • +
    • Små bokstaver er IKKE lik store bokstaver (p \(\neq\) P).

    • +
    • Python bryr seg lite om mellomrom, med mindre det er på starten av ei linje. Bruk mellomrom for å gjøre programmet ditt mer lesbart.

    • +
    • Øv deg på å lese feilmeldinger: Du får beskjed om linja der feilen befinner seg og typen feil.

    • +
    +
    +

    Underveisoppgave

    +

    Forklar hva som er feil med følgende programmer:

    +
    tall1 = 1
    +print(tall1 + tall2)
    +tall2 = 3
    +
    +
    +
    navn = "Gunnar"
    +print(Navn)
    +
    +
    +
    a = 2
    +b = 3
    +
    +print("Differansen mellom" a "og" b "=" a + b)
    +
    +
    +
    + +
    +https://live.staticflickr.com/3136/2842497804_f2684b2dcf_c.jpg +
    +

    Fig. 1 En av de første “bugs” ble funnet av Grace Hopper, som også lagde den første kompilatoren, en oversetter fra programmeringsspråk til maskinkode. Bugs var altså faktiske insekter som satt seg fast i de mekaniske delene og lagde krøll. Forhåpentligvis får du ingen feilmeldinger om insekter i datamaskinen din.#

    +
    +
    +
    +
    +

    Oppgaver#

    +
    +

    Oppgave 1.1

    +

    Bruk kodeboksen nedenfor til å lage relevante variabler slik at programmet regner ut arealet av en trekant med grunnlinje 4 og høyde 2. Programmet inneholder litt kode fra før til å hjelpe deg på vei.

    +
    + +
    +

    Oppgave 1.2

    +

    Lag et program som regner ut farten i m/s gitt følgende formel:

    +
    +\[v = v_0 + at\]
    +

    Utvid programmet slik at startfarten, akselerasjonen og tida blir tatt som input.

    +
    + +
    +

    Ekstra: Oppgave 1.3

    +

    Lag et program som bruker en valgfri formel fra matematikken til å regne ut noe. Bruk input-funksjonen til å hente variabelverdier fra brukeren.

    +
    +
    +
    +

    Videoer#

    +

    Her kan du se videoer som introduksjon og/eller repetisjon til fagstoffet:

    +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    +
    +
    +
    +
    +
    + + + + +
    + + + + + + +
    + + + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/tema1_grunnleggende_programmering/tall_variabler_videoer.html b/docs/tema1_grunnleggende_programmering/tall_variabler_videoer.html new file mode 100644 index 00000000..e9551766 --- /dev/null +++ b/docs/tema1_grunnleggende_programmering/tall_variabler_videoer.html @@ -0,0 +1,1156 @@ + + + + + + + + + Tall og variabler (videoer) — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Tall og variabler (videoer)

    + +
    + +
    +
    + +
    + +
    +

    Tall og variabler (videoer)#

    +
    +

    Læringsutbytte

    +

    Etter å ha arbeidet med dette temaet, skal du kunne:

    +
      +
    1. Kjøre enkle programmer med en programmeringseditor.

    2. +
    3. Definere og gjøre rede for ulike variabeltyper: heltall, flyttall og strenger.

    4. +
    5. Skrive ut output ved å bruke print-funksjonen.

    6. +
    7. Gjøre enkel aritmetikk i Python.

    8. +
    9. Ta input fra brukeren av programmet.

    10. +
    +
    +
    +

    Variabler og output#

    +

    I videoen nedenfor forklares hvordan vi oppretter variabler og gir dem verdier. Du lærer også hvordan du håndterer output med print-funksjonen.

    +
    +
    +
    + +
    +
    +

    Når du har sett videoen, kan du gjøre følgende oppgave for å sjekke om du forstår innholdet:

    +
    +

    Underveisoppgave

    +

    Lag et program der du definerer to variabler tall1 og tall2 med hver sitt tall. Regn ut differansen i en egen variabel. Skriv ut “Differansen mellom tall1 og *tall2 er differansen”.

    +
    + +
    +
    +

    Aritmetikk#

    +

    Her skal vi se på hvordan vi utfører enkel matematikk som addisjon, subtraksjon, divisjon og multiplikasjon i Python.

    +
    +
    +
    + +
    +
    +

    Når du har sett videoen, kan du gjøre følgende oppgave for å sjekke om du forstår innholdet:

    +
    +

    Underveisoppgave

    +

    Lag et program der du definerer massen til et legeme i en variabel, regner ut energien ved hjelp av formelen \(E = mc^2\) og skriver dette ut.

    +
    + +
    +
    +

    Matematiske operasjoner#

    +

    I denne videoen skal vi gjennomgå import av biblioteker og flere matematiske operasjoner som logaritmer, trigonometriske funksjoner og røtter.

    +
    +
    +
    + +
    +
    +

    Når du har sett videoen, kan du gjøre følgende oppgave for å sjekke om du forstår innholdet:

    +
    +

    Underveisoppgave

    +

    Lag et program regner ut pH-en i en løsning gitt \([H_3O^+]\).

    +
    + +
    +
    +

    Input#

    +

    Her skal vi se hvordan du kan ta input fra brukeren av programmet.

    +
    +
    +
    + +
    +
    +

    Når du har sett videoen, kan du gjøre følgende oppgave for å sjekke om du forstår innholdet:

    +
    +

    Underveisoppgave

    +

    Lag et program som tar masse og hastighet som input, og som regner ut kinetisk energi vha. formelen \(E_k = \frac{1}{2}mv^2\).

    +
    +
    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + +
    + + + +
    + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/tema1_grunnleggende_programmering/testquiz.html b/docs/tema1_grunnleggende_programmering/testquiz.html new file mode 100644 index 00000000..7a5dbcac --- /dev/null +++ b/docs/tema1_grunnleggende_programmering/testquiz.html @@ -0,0 +1,986 @@ + + + + + + + + + Testquiz (Forms) — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Testquiz (Forms)

    + +
    +
    + +
    +
    +
    + +
    + +
    +

    Testquiz (Forms)#

    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/tema2_kodestrukturering/funksjoner.html b/docs/tema2_kodestrukturering/funksjoner.html new file mode 100644 index 00000000..4a18bbea --- /dev/null +++ b/docs/tema2_kodestrukturering/funksjoner.html @@ -0,0 +1,1714 @@ + + + + + + + + + Funksjoner — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + + + +
    + +
    +

    Funksjoner#

    +
    +

    Læringsutbytte

    +

    Etter å ha arbeidet med dette temaet, skal du kunne:

    +
      +
    1. bruke funksjoner til å strukturere og gjenbruke kode.

    2. +
    3. forklare hva som menes med globale og lokale variabler.

    4. +
    +
    +
    +

    Definisjon#

    +

    I tillegg til innebygde funksjoner i Python som print og input kan vi lage funksjoner selv. Dette kan være svært nyttig fordi det kan gjøre programmet mer oversiktlig og håndterbart. I tillegg er det nyttig med funksjoner når vi skal gjøre samme ting flere ganger. Si at vi for eksempel har en vilkårlig matematisk funksjon \(f(x) = x^2 + x - 5\). Dersom vi vil regne ut \(f(x)\) for alle heltallsverdier av \(x\) mellom 1 og 50, kan vi gjøre dette med funksjoner. Først definerer vi funksjonen:

    +
    +
    +
    def f(x):
    +    return x**2 + x - 5
    +
    +
    +
    +
    +

    Vi definerer her en funksjon med kodeordet def og gir den et funksjonsnavn, her f. Deretter spesifiserer vi hva inn-verdien/variabelen til funksjonen skal hete i parentes. Her kaller vi den x. I programmering kaller vi en slik størrelse for en parameter. Gitt én verdi av x, skal funksjonen returnere (spesifisert ved return-kommandoen) en funksjonsverdi. Legg merke til at syntaksen er ganske lik vilkår (if-tester), while- og for-løkker, med et kolon etter funksjonsnavnet og innrykk på alt som tilhører funksjonen.

    +

    Vi får derimot ikke noe output av å definere en funksjon. For å få et output, må vi bruke (vi sier også “kalle på”) funksjonen:

    +
    +
    +
    funksjonsverdi = f(2) # Kaller på funksjonen
    +print(funksjonsverdi)
    +
    +# Eller
    +print(f(2))           # Kaller på funksjonen inni en print-funksjon
    +
    +
    +
    +
    +
    1
    +1
    +
    +
    +
    +
    +
    +

    Underveisoppgave

    +

    Lag en Python-funksjon som representerer den matematiske funksjonen \(f(x) = \frac{-x}{2} + \sqrt{x}\). Lag ei løkke som skriver ut 100 ulike funksjonsverdier.

    +
    + +

    Vi kan også lage funksjoner uten returverdi, for eksempel funksjoner som skriver ut noe:

    +
    +
    +
    # Definerer to funksjoner
    +def f(x):
    +    print(x**2 + x - 5)
    +    
    +def gratulerer(navn):
    +    print("Gratulerer med dagen,", navn)
    +
    +# Kaller på funksjonene
    +f(2)
    +gratulerer("Silje")
    +
    +
    +
    +
    +
    1
    +Gratulerer med dagen, Silje
    +
    +
    +
    +
    +

    Her ser vi at vi ikke trenger å skrive print når vi kaller på funksjonene. Dette ser da enda enklere ut enn å bruke retur-verdier, så hvorfor bruker vi return i det hele tatt?

    +

    Det er faktisk bedre å bruke return enn print, der det er mulig. Hvis vi for eksempel er interessert i å gjøre noe annet med funksjonsverdiene enn å printe dem, må vi ha konkrete verdier å jobbe med. La oss si at vi ønsker å finne differansen mellom to funksjonsverdier. Hvis vi skal regne med funksjonsverdier, må vi ha en returverdi. Det fungerer nemlig ikke å trekke fra hverandre to print-funksjoner. Eksempelet nedenfor illustrerer dette.

    +

    Vi kan også representere matematiske formler som Python-funksjoner, for eksempel slik:

    +
    +
    +
    import numpy as np
    +
    +def areal_sirkel(r):
    +    A = np.pi*r**2
    +    return A
    +
    +def volum_sylinder(r, h):
    +    V = np.pi*r**2*h
    +    return V
    +
    +
    +
    +
    +

    Vi kan også skrive np.pi*r**2 og np.pi*r**2*h direkte etter return i funksjonene ovenfor, istedenfor å gjøre det på to linjer. Dette er litt smak og behag, men ofte kan det være mer oversiktlig å gjøre ting på flere linjer enn på én. Dessuten kan man skrive formelen direkte slik den forekommer i matematikken.

    +
    +

    Underveisoppgave

    +

    Volumet til ei kule er gitt ved \(\frac{4}{3}\pi r^3\). Lag en funksjon som beregner dette volumet og finner differansen mellom volumet til ei kule med radius 10 og ei kule med radius 5.

    +
    + +

    Her ser vi også at den siste funksjonen tar to parametre. Det er mulig å bruke så mange parametre i en funksjon som du ønsker. Det går også an å lage funksjoner uten parametre, for eksempel slik:

    +
    +
    +
    def hei():
    +    print("Hei på deg!")
    +    
    +hei()
    +
    +
    +
    +
    +
    Hei på deg!
    +
    +
    +
    +
    +
    +
    +

    Parameternavn#

    +

    La oss se på et eksempel der vi kaller på en funksjon på tre måter.

    +
    +
    +
    def fart(s, t):
    +    v = s/t
    +    return v
    +
    +# Funksjonskall 1
    +s = 10 # Strekning i meter
    +t = 2  # Tid i s
    +print("Farten er", fart(s, t), "m/s.")
    +
    +# Funksjonskall 2
    +strekning = 10
    +tid = 2
    +print("Farten er", fart(strekning, tid), "m/s.")
    +
    +# Funksjonskall 3
    +print("Farten er", fart(10, 2), "m/s.")
    +
    +
    +
    +
    +
    Farten er 5.0 m/s.
    +Farten er 5.0 m/s.
    +Farten er 5.0 m/s.
    +
    +
    +
    +
    +

    Vi ser at vi får samme output for alle funksjonskallene. Vi trenger ikke å definere variabler før vi setter dem inn i funksjonen, så funksjonskall 3 er kanskje det enkleste. Men hvis vi for eksempel skal bruke verdien for tid flere steder, kan det være lurt å ha det som en egen variabel. Denne variabelen kan vi kalle hva vi vil, for den blir uansett overført til variabelen t inni funksjonen. Så om vi kaller variablene for strekning og tid eller s og t, har ingenting å si. Inni funksjonen blir likevel verdien til strekning overført til variabelen s og variabelen t får verdien til tid.

    +
    +
    +

    Funksjoner med flere returverdier#

    +

    I motsetning til funksjoner i matematikk kan en funksjon i programmering ha flere retur-verdier. Disse kan vi tilordne til variabler adskilt med komma, som vist nedenfor.

    +
    +

    Underveisoppgave

    +

    Forklar hvordan programmet ovenfor fungerer. Modifiser programmet slik at det også returnerer renta, og skriv ut “Det tar {tid} år før du har {penger} kroner i banken med en rente på {renter*100} prosent.”

    +
    +
    +
    +

    Lokale og globale variabler#

    +

    Hva skjer hvis vi ikke returnerer verdier i funksjonen ovenfor? Vil vi uansett kunne printe renta og antallet år? La oss undersøke dette.

    +
    +
    +
    def penger_i_banken(startkapital, sluttkapital, renter):
    +    kapital = startkapital
    +    år = 0
    +    while kapital <= sluttkapital:
    +        kapital = kapital + kapital*renter
    +        år = år + 1
    +    return kapital
    +
    +penger = penger_i_banken(1000, 3000, 0.01)
    +print("Det tar", år, "år før du har", round(penger,2), "kroner med en rente på", renter*100, "prosent")
    +
    +
    +
    +
    +
    ---------------------------------------------------------------------------
    +NameError                                 Traceback (most recent call last)
    +~\AppData\Local\Temp/ipykernel_39764/3569527658.py in <module>
    +      8 
    +      9 penger = penger_i_banken(1000, 3000, 0.01)
    +---> 10 print("Det tar", år, "år før du har", round(penger,2), "kroner med en rente på", renter*100, "prosent")
    +
    +NameError: name 'år' is not defined
    +
    +
    +
    +
    +

    Her får vi visst en feilmelding, selv om vi klart kan se at “år” er definert som en variabel inni funksjonen. Dette handler om at alle variabler som defineres i en funksjon, kun er tilgjengelig inni denne funksjonen. De kalles derfor lokale variabler. Variabler som er definert utenfor funksjoner, kaller vi da for globale variabler. Disse er tilgjengelig både inni og utenfor en funksjon. Her er to eksempler som viser dette:

    +
    +
    +
    def funksjon():
    +    print(a)
    +
    +a = "Her er jeg!"
    +
    +funksjon()
    +print(a)  # Skriver ut den globale variabelen a
    +
    +
    +
    +
    +
    Her er jeg!
    +Her er jeg!
    +
    +
    +
    +
    +
    +
    +
    def funksjon():
    +    b = "Her er jeg!" # b defineres lokalt inni funksjonen
    +    print(b)
    +
    +funksjon()
    +print(b) # Prøver å skrive ut den lokale variabelen. Vi får dermed en feilmelding
    +
    +
    +
    +
    +
    Her er jeg!
    +
    +
    +
    ---------------------------------------------------------------------------
    +NameError                                 Traceback (most recent call last)
    +<ipython-input-36-9fcd0c311f14> in <module>
    +      4 
    +      5 funksjon()
    +----> 6 print(b) # Prøver å skrive ut den lokale variabelen. Vi får dermed en feilmelding
    +
    +NameError: name 'b' is not defined
    +
    +
    +
    +
    +

    Vi kan gjøre en lokal variabel til en global variabel, dersom vi trenger det. Dette er ikke vanlig så vanlig å gjøre, men vi kan gjøre det slik:

    +
    +
    +
    def masseenergi(m):
    +    global c
    +    c = 3E8 # lyshastigheten i m/s
    +    E = m*c**2
    +    return E
    +
    +print("Energien til legemet er:", masseenergi(1), "joule.")
    +print("Lysets hastighet i vakuum:", c, "m/s.")
    +
    +
    +
    +
    +
    Energien til legemet er: 9e+16 joule.
    +Lysets hastighet i vakuum: 300000000.0 m/s.
    +
    +
    +
    +
    +
    +
    +

    Oppgaver#

    +
    +

    Oppgave 5.1

    +

    Forklar hvordan programmet nedenfor fungerer.

    +
    def f(x):
    +    return x + 1
    +
    +addisjon = f(1) + f(3)
    +subtraksjon = f(1) - f(3)
    +
    +print(addisjon, subtraksjon)
    +
    +
    +
    + +
    +

    Oppgave 5.2

    +

    I programmet nedenfor definerer vi en funksjon som regner ut volumet til en sylinder. Lag en annen funksjon i samme program som regner ut volumet til ei kule.

    +

    (\(V_{kule} = \frac{4}{3}\pi r^3\))

    + +
    + +
    +

    Oppgave 5.3

    +

    Hvert program i denne oppgava inneholder noen feil. Finn feilene og rett på dem slik at programmene kan kjøres korrekt.

    +
      +
    1. Funksjonen skal regne ut \(f(x) = \frac{1}{2x} + 1\) og returnere svaret. I programmet skal funksjonen kalles på for \(x = 4\):

    2. +
    +
    def f(x):
    +    1/2*x + 1
    +
    +print("f(x) = ",f(x))
    +
    +
    +
      +
    1. Programmet ber brukeren om å skrive en verdi for x og regner ut \(f(x) = 3x + \cos(x)\):

    2. +
    +
    def f(x):
    +return 3x + cos(x)
    +
    +y = input("Skriv inn verdi for x i radianer: ")
    +print("f(x) =",f(y))
    +
    +
    +
      +
    1. Programmet skal skrive ut funksjonsverdien G(1).

    2. +
    +
    def G(t):
    +    a = t**2 - 2
    +    return a
    +
    +t = 1
    +print(a)
    +
    +
    +
    + +
    +

    Oppgave 5.4

    +

    Lag et program eller flere programmer som bruker funksjoner til å regne ut:

    +
      +
    1. Arealet til en sirkel.

    2. +
    3. Radius til en sirkel gitt arealet.

    4. +
    5. Omkretsen til en sirkel.

    6. +
    7. Volumet til ei kule.

    8. +
    9. Overflatearealet til ei kule.

    10. +
    +

    Du kan lage en enkel versjon først uten funksjoner. Lag så en versjon som inneholder funksjoner av hver av formlene. Ikke ta input fra brukeren, men sett verdiene direkte inn i funksjonskallene.

    +
    + +
    +

    Oppgave 5.5

    +

    Forklar hvorfor programmet under gir None som output.

    +
    def f(x):
    +    x = 2*x
    +x = 12
    +x = x + 12
    +x = f(x)
    +print(x)
    +
    +
    +
    + +
    +

    Oppgave 5.6

    +

    Karvonens formel kan brukes til å finne pulsen til en person gitt hvilepuls \(H_{hvile}\) og treningsintensitet \(p\) (i prosent):

    +

    \(hjerteslag \ per \ minutt = \left(H_{maks} - H_{hvile}\right)\cdot\frac{p}{100} + H_{hvile}\)

    +

    der \(H_{maks}\) er maks antall hjerteslag personen kan ha. Den maksimale pulsen kan en finne ved \(H_{maks} = 220 - \textit{alder til person}\). Lag et program som regner ut pulsen til en 20 år gammel person som trener med 60 % intensitet og hvilepuls på \(70\) slag per minutt. Lag Karvonens formel som en funksjon.

    +
    + +
    +

    Oppgave 5.7 (kjemi)

    +

    I kjemi har vi ofte bruk for molregning. Lag et enkelt program som regner ut antall mol dersom brukeren taster inn molmasse og masse av et bestemt stoff. Du kan også be brukeren taste inn stoffet det gjelder, slik at du får dette som output også. Lag formelen som en funksjon.

    +
    + +
    +

    Oppgave 5.8 (kjemi)

    +

    Lag et program som regner ut pH fra \([H_3O^+]\) ved hjelp av en funksjon.

    +
    + +
    +

    Oppgave 5.9 (fysikk)

    +

    Programmer én av bevegelsesformlene (kinematikklikningene) som en funksjon. Du kan selv velge hva programmet skal regne ut.

    +
    + +
    +

    Oppgave 5.10 (fysikk)

    +

    Bruk Bohrs formel for spektrene til hydrogenatomet: +\(f =\frac{B}{h}\cdot \left( \frac{1}{m^2} - \frac{1}{n^2} \right)\)

    +

    Lag et program som regner ut bølgelengden til fotonet som emitteres når et elektron deeksiterer fra skall m til n. Bruk en funksjon.

    +

    Husk at vi har følgende sammenheng mellom frekvens og bølgelengde (\(\lambda\)):

    +

    \(\lambda = \frac{c}{f}\)

    +

    \(B = 2.18\cdot10^{-18}\), \(c = 3.00\cdot10^8\) m/s og \(h = 6.63\cdot10^{-34}\).

    +
    + +
    +

    Oppgave 5.11 (matematikk)

    +

    Lag en funksjon som tar tre variabler a, b og c, tilsvarende koeffisientene i andregradsfunksjoner av typen \(f(x) = ax^2 + bx + c\). La funksjonen løse andregradslikninger av typen \(f(x) = 0\) ved hjelp av andregradsformelen.

    +
    + +
    +

    Oppgave 5.12

    +

    Hvorfor har x samme verdi før og etter funksjonen f har blitt kalt på i programmet under?

    +
    def f(x):
    +    x = x + 3
    +    return 9*x
    +x = 3
    +print(x) # Skriver ut 3
    +y = f(x)
    +print(x) # Skriver ut 3
    +
    +
    +
    + +
    +

    Oppgave 5.13

    +

    De fleste gasser kan modelleres med tilstandslikninga for idelle gasser:

    +

    \(PV = nRT\)

    +

    der P er trykket i pascal, V er volumet i kubikkmeter, n er stoffmengden i mol, \(R = 8.3144598 J/(mol\cdot K)\) er gasskonstanten og T er temperaturen i Kelvin.

    +

    Lag et program der du bruker denne likninga til å lage en funksjon for P og en annen for T. Test funksjonene.

    +
    + +
    +

    Oppgave 5.14*

    +

    Studer programmet nedenfor. Hvilke variabler er lokale, og hvilke er globale? Hva skrives ut?

    +
    def f(x,y):
    +    global e
    +    e = x + y + e
    +    return e
    +
    +c = 1
    +d = 2
    +e = 3
    +
    +print(f(c, d) + e)
    +
    +
    +
    + +
    +
    +

    Filmer#

    +

    I videoen nedenfor kan du få en innføring eller repetisjon i den grunnleggende teorien bak funksjoner.

    +
    +
    +
    +
    + + + + +
    + + + + + + +
    + + + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/tema2_kodestrukturering/funksjoner_filmer.html b/docs/tema2_kodestrukturering/funksjoner_filmer.html new file mode 100644 index 00000000..f94d224e --- /dev/null +++ b/docs/tema2_kodestrukturering/funksjoner_filmer.html @@ -0,0 +1,1054 @@ + + + + + + + + + Funksjoner (teori) — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Funksjoner (teori)

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    + +
    + +
    +

    Funksjoner (teori)#

    +
    +

    Læringsutbytte

    +

    Etter å ha arbeidet med dette temaet, skal du kunne:

    +
      +
    1. Bruke funksjoner til å strukturere og gjenbruke kode.

    2. +
    3. Forklare hva som menes med globale og lokale variabler.

    4. +
    +
    +
    +

    Funksjoner#

    +
    +
    +
    + +
    +
    +

    Når du har sett videoen, kan du gjøre følgende oppgave for å sjekke om du forstår innholdet:

    +
    +

    Underveisoppgave

    +

    Lag en funksjon som benytter arealsetningen til å regne ut arealet av en trekant.

    +
    +
    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + +
    + +
    + +
    + On this page +
    + +
    + +
    + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/tema2_kodestrukturering/klasser_objekter.html b/docs/tema2_kodestrukturering/klasser_objekter.html new file mode 100644 index 00000000..40dac11a --- /dev/null +++ b/docs/tema2_kodestrukturering/klasser_objekter.html @@ -0,0 +1,1381 @@ + + + + + + + + + Klasser og objekter — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Klasser og objekter

    + +
    + +
    +
    + +
    + +
    +

    Klasser og objekter#

    +
    +

    Læringsutbytte

    +

    Etter å ha arbeidet med dette temaet, skal du kunne:

    +
      +
    1. gjøre rede for hva som menes med objektorientert programmering

    2. +
    3. konstruere enkle klasser og objekter

    4. +
    +
    +

    Objektorientert programmering er en måte å organisere og gjenbruke kode på som er enda litt mer abstrakt og enda litt nyttigere enn funksjoner. Python er et objektorientert språk, så du har brukt objekter allerede uten å nødvendigvis vite om det. Det første objektorienterte programmeringsspråket i verden var Simula, som var utviklet av nordmennene Ole-Johan Dahl og Kristen Nygaard. I populære programmeringsspråk som Java og C++ er objektorientering så grunnleggende at vi ikke kan programmere i disse språkene uten å bruke det. I Python kan vi derimot velge om vi ønsker å bruke objektorientert kode eller ikke.

    +

    Det er ikke sikkert du forstår meningen med objekter med det første. Koden blir ofte mer komplisert og teknisk, og det realfaglige innholdet kan noen ganger drukne litt i koden. Det viktigste er derimot at du får litt kjennskap til hva det er og hvordan det kan brukes, slik at du forstår når du faktisk bruker objekter og hvordan de fungerer. Om du vil bruke objektorientert programmering for å strukturere din egen kode eller ikke, kan du velge helt selv.

    +

    Objektorientert programmering tar utgangspunkt i klasser, som er oppskrifter på objekter. Disse objektene har egenskaper gitt av denne klassen, og vi kan endre på objektene og gi dem nye egenskaper med funksjoner som vi kaller metoder.

    +
    +

    Definisjoner

    +

    En klasse er en oppskrift på objekter. Et objekt er en instans (utgave) av en klasse. Objekter er størrelser som er definert via et sett med data (attributter), det vil si egenskaper ved objektene. Objektene kan vi endre og manipulere ved å bruke klassens metoder. Metoder er funksjoner som virker på objektene.

    +
    +

    Et enkelt eksempel på et objekt, er heltallsobjekter. For eksempel er tallet 42 et objekt som tilhører klassen “int” (integer = heltall). Metodene du kan bruke på disse objektene, er blant annet addisjon og multiplikasjon.

    +

    Eksempel:

    +

    klasse = int

    +

    objekt = 42

    +

    metoder = +, -, *, /

    +

    Vi kan se at 42 tilhører klassen int ved å skrive ut typen til objektet:

    +
    +
    +
    print(type(42))
    +
    +
    +
    +
    +
    <class 'int'>
    +
    +
    +
    +
    +
    +

    Skilpaddeobjekter#

    +

    Vi har allerede også håndtert objekter gjennom skilpaddegrafikk (turtle). Når vi lager en skilpadde som skal tegne noe, lager vi en instans (et objekt) av klassen “Turtle”. Tidligere skreiv vi bare kommandoene “forward”, “left” og så videre, så da er det kanskje ikke åpenbart at vi bruker metoder dette objektet. Det blir dermed litt enklere å se dersom vi faktisk kaller objektet noe. La oss returnere til en skilpadde som heter Rafael. Istedenfor å bare skrive kommandoene, lager vi nå et skilpaddeobjekt helt eksplisitt:

    + +

    Her ser vi at vi bruker metodene på objektet ved å skrive “objektnavn.metodenavn()”. Dette gjør også at vi kan lage flere skilpadder i samme kodevindu!

    +
    +

    Underveisoppgave

    +

    Lag en ny skilpadde som heter Leonardo. Skilpadden skal være blå, og den skal lage gå slik at den danner et rektangel (200 x 100) sammen med figuren som Rafael har tegna.

    +
    + +
    +
    +

    Klasser#

    +

    La oss prøve å lage vår egen klasse med ulike egenskaper. Vi vil definere en klasse som lager objekter med egenskapene til et glass. Det er god skikk å lage klassenavnet med stor forbokstav, og det gjør vi slik:

    +
    +
    +
    class Glass:
    +    def __init__(self):
    +        self.innhold = 0
    +
    +
    +
    +
    +

    Nå har vi definert klassen “Glass” og gitt det en egenskap (attributt) som heter “innhold”, en vanlig egenskap ved de fleste glass. Metodene i en klasse defineres på samme måte som funksjoner. Den metoden vi har lagd her, __init__ (som står for “initiering”), er en spesiell metode som inneholder alle egenskaper som objekter av klassen Glass alltid får. Parameteren i denne funksjonen/metoden er “self”. Dette er en litt merkelig konstruksjon. “self” brukes nemlig for å henvis til at dette er en egenskap ved objektet selv. Det tar litt tid å bli vant til at vi må henvise til objektet selv inni klassen som er oppskriften på objektene. Men når du har sett nok eksempler på hvordan klasser blir konstruert, får du antakelig en forståelse av det. La oss legge til en metode til, som sjekker innholdet i glasset:

    +
    +
    +
    class Glass:
    +    def __init__(self):
    +        self.innhold = 0            
    +    def sjekkInnhold(self):
    +        return self.innhold
    +
    +
    +
    +
    +

    La oss nå lage et glass-objekt og sjekke innholdet:

    +
    +
    +
    vannglass = Glass()              # laget et vannglass av typen "Glass"
    +print(vannglass.sjekkInnhold())  # skriver ut innholdet i glasset
    +
    +
    +
    +
    +
    0
    +
    +
    +
    +
    +
    +

    Underveisoppgave

    +

    Lag en metode “fyll” som legger til innhold i glasset. Test metoden ved å legge til 5 (dl) og sjekke innholdet.

    +
    + +

    Når du har gjort oppgaven ovenfor, kan vi legge til enda en metode som tømmer glasset:

    + +

    Men hva skjer hvis glasset er fullt eller tomt? Prøv å løse dette problemet i oppgaven nedenfor:

    +
    +

    Underveisoppgave

    +

    Legg inn en ny egenskap ved glasset som du kaller “kapasitet”. Denne egenskapen skal si noe om hvor mye volum glasset rommer. Fyll også ut det som mangler i metodene “fyll” og “tøm” nedenfor. Metodene skal si fra om glasset er fullt eller tomt. Dersom glasset er tomt, skal innholdet settes til 0, og dersom glasset er fullt, skal innholdet settes til kapasiteten til glasset. Skriv gjerne også ut en melding om at glasset er fullt eller tomt.

    +
        def fyll(self, mengde):
    +        self.mengde = mengde
    +        self.innhold += self.mengde
    +        if #...
    +            
    +    def tøm(self, mengde):
    +        self.mengde = mengde
    +        self.innhold -= self.mengde
    +        if # ...
    +
    +
    +
    + +
    +

    Eksempel: Objekter i spill#

    +

    Moderne spill lages med objektorientert kode. En av årsakene er at vi lettere kan gjenbruke kode. Ta for eksempel skilpaddene i Mario. De har noen felles egenskaper, og det er derfor nyttig å kunne plassere dem rundt omkring ved å lage nye objekter fra en klasse istedenfor å gjenta masse kode. Vi kan også ta hensyn til små variasjoner, som farge på skallet, evnen til å gjøre skade eller helsepoeng (HP).

    +koopa +

    I programmet nedenfor lager vi en skilpaddeklasse med noen egenskaper og to metoder, “harm” og “heal”. Gå gjennom linje for linje og prøv å forstå hvordan programmet fungerer.

    + +
    +

    Underveisoppgave

    +

    Legg inn et vilkår i programmet ovenfor som skriver ut at skilpadden er død hvis den går under 0 i hp. Lag også en attributt/egenskap som sier noe om skilpadden lever eller ikke.

    +
    + +
    +
    +

    Eksempel: Vektorobjekt#

    +

    Her skal vi se på en klasse som lager et objekt med egenskapene til en matematisk vektor med tre komponenter: \(\vec{v} = [x, y, z]\). Vi ønsker at vi skal kunne regne ut lengden til denne vektoren, og at vi skal kunne addere vektoren med en annen vektor. Lengden av en vektor kalles også for normen til vektoren, og er definert slik:

    +

    \(|\vec{v}| = \sqrt{x^2 + y^2 + z^2}\)

    +

    En vektorklasse med en metode for addisjon kan se slik ut:

    + +
    +

    Underveisoppgave

    +

    Legg en metode i vektorklassen ovenfor som returnerer lengden/normen til vektoren. Test ut ved å sjekke at normen til vektoren \(\vec{u} = [1, 2, 2]\) er 3.

    +
    + +
    +
    +
    +

    Arv#

    +

    Hvis vi ønsker å lage en klasse som har alle egenskaper til en annen klasse, i tillegg til noen ekstra egenskaper, kan vi la klassen arve egenskaper fra den andre klassen. La oss lage en termosklasse som arver fra glassklassen (kalt superklasse). Klassen som arver, kaller vi en subklasse.

    +
    +
    +
    class Termos(Glass):
    +    def __init__(self, kapasitet, isolasjonsverdi, temperatur):
    +        super().__init__(kapasitet) # Her arver termosen kapasitet fra klassen Glass (superklassen)
    +        self.isolasjonsverdi = isolasjonsverdi
    +        self.temperatur = temperatur
    +    def økTemperatur(self):
    +        self.temperatur += 5/self.isolasjonsverdi
    +    def senkTemperatur(self):
    +        self.temperatur -= 10/self.isolasjonsverdi
    +    def hentTemperatur(self):
    +        print(self.temperatur)
    +
    +termos = Termos(10, 1.25, 70)
    +termos.fyll(10)
    +
    +for timer in range(5):
    +    termos.senkTemperatur()
    +    termos.tøm(1)
    +    termos.hentTemperatur()
    +termos.sjekkInnhold()
    +
    +
    +
    +
    +
    Glasset er fullt!
    +62.0
    +54.0
    +46.0
    +38.0
    +30.0
    +
    +
    +
    5
    +
    +
    +
    +
    +
    +

    Underveisoppgave

    +

    Forklar hvordan programmet ovenfor fungerer.

    +
    +
    +
    + + + + +
    + + + + + + +
    + + + +
    + + + +
    + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/tema3_datahandtering/datasamlinger.html b/docs/tema3_datahandtering/datasamlinger.html new file mode 100644 index 00000000..a282462c --- /dev/null +++ b/docs/tema3_datahandtering/datasamlinger.html @@ -0,0 +1,1466 @@ + + + + + + + + + Datasamlinger — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + + + +
    + +
    +

    Datasamlinger#

    +
    +

    Læringsutbytte

    +

    Etter å ha arbeidet med dette temaet, skal du kunne:

    +
      +
    1. opprette ulike arrayer

    2. +
    3. gjøre vektoroperasjoner med arrayer

    4. +
    5. gjøre rede for hva tupler er

    6. +
    7. opprette og bruke dictionarier

    8. +
    +
    +

    Vi har flere måter å organisere data på i Python. Her er en kort oversikt over de viktigste datasamlingene:

    +
      +
    1. Lister (fleksible samlinger av like eller ulike data)

    2. +
    3. Arrayer (samlinger av tall som kan opereres på som vektorer).

    4. +
    5. Tupler (statiske lister som ikke kan endres)

    6. +
    7. Dictionarier (lister med strenger, ikke tall, som nøkler)

    8. +
    +

    Vi har allerede sett hvordan lister fungerer. La oss se på de tre andre datatypene.

    +
    +

    Arrayer#

    +

    Vi begynner med et eksempel som illustrerer forskjellen mellom lister og arrayer. For å kunne bruke arrayer, må vi først importere numpy eller pylab.

    +
    +
    +
    import numpy as np
    +
    +liste1 = [1, 2, 3]
    +liste2 = [2, 3, 1]
    +
    +print("listesum:", liste1 + liste2)
    +
    +array1 = np.array(liste1)
    +array2 = np.array(liste2)
    +
    +print("arraysum:", array1 + array2)
    +
    +
    +
    +
    +
    listesum: [1, 2, 3, 2, 3, 1]
    +arraysum: [3 5 4]
    +
    +
    +
    +
    +
    +

    Underveisoppgave

    +

    Bruk koden ovenfor til å forklare forskjellen mellom listeaddisjon og arrayaddisjon.

    +
    + +
    +

    Opprette arrayer#

    +

    Vi kan opprette arrayer på flere måter:

    + +
    +

    Underveisoppgave

    +

    Forklar de ulike måtene å opprette arrayer på ved å endre på forskjellige parametre i programmet ovenfor.

    +
    + +
    +
    +

    Behandle arraydata#

    +

    I motsetning til med lister, kan vi ikke bruke listeoperasjoner som append, remove og liknende når vi opererer med arrayer. Vi kan derimot få tilgang til elementene ved å bruke indekser, akkurat som med lister.

    +
    +

    Underveisoppgave

    +

    Hva tror du koden nedenfor skriver ut? Bruk det du husker om listeindeksering.

    +
    + +

    Vi kan også lage flerdimensjonale arrayer, ved å sette inn arrayer i arrayer. Dette kan i noen tilfeller ses på som tabeller med kolonner og rader, slik som nedenfor.

    +
    +

    Underveisoppgave

    +
      +
    1. Prøv å forklare/forutse hva koden nedenfor gjør.

    2. +
    3. Kjør koden og se om det stemmer med slik du hadde tenkt. Hvis ikke, hva er forskjellen?

    4. +
    5. Undersøk hva du får som output når du endrer på tallene i print-kommandoene. Beskriv hva som skjer.

    6. +
    7. Modifiser programmet slik at det kun skriver ut de fire første elementene i kolonne 2.

    8. +
    9. Lag et program med en array som representerer dataene i tabellen nedenfor. +Skriv så ut alt i kolonne nummer 3 (hvis vi teller fra 1) og elementet 6.7.

    10. +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Kolonne 1

    Kolonne 2

    Kolonne 3

    Kolonne 4

    0

    1

    2

    3

    2

    9.1

    2.2

    4

    3.5

    9.1

    6.7

    5.5

    1.1

    0.2

    8.9

    7.8

    + +
    +

    Løsningsforslag

    +

    Vi har en array med to arrayer i, som vi kaller data. Vi kan plukke ut elementer fra denne arrayen slik:

    +
    print(data[1,2]) # Printer element 2 (det tredje elementet) fra array 1 (den andre arrayen i arrayen)
    +print(data[1,:]) # Printer alle elementer fra array 1 (den andre arrayen i arrayen)
    +print(data[:,0]) # Printer element 0 (det første elementet) fra alle (begge) arrayene
    +
    +
    +
    +
    +
    +

    Matematikk med arrayer#

    +

    Noe som er praktisk med arrayer, er at de kan opppføre seg matematisk som vektorer eller matriser. Eksempler på en matematiske vektor og en matrise er:

    +

    \(\vec{v} = [1, 4, 5]\)

    +

    \(M = \begin{bmatrix}1\ 2\ 2\\0\ 4\ 5\\ 6\ 1\ 1\end{bmatrix} = \begin{bmatrix}\vec{v} \\\vec{u} \\ \vec{w}\end{bmatrix} \)

    +

    Vi skal ikke se så mye på matriser her, men det er nyttig å vite at det finnes matematiske størrelser som kan representeres som flerdimensjonale arrayer. Matriser kan også ses på som en samling vektorer.

    +

    La oss se på de vanligste vektoroperasjonene gjennom et eksempelprogram:

    + +
    +

    Underveisoppgave

    +

    Test programmet ovenfor og beskriv hvordan de ulike operasjonene fungerer.

    +
    +
    +
    +

    Vektorisering#

    +

    En annen ting som er svært nyttig med arrayer, er at de er svært raske å behandle. Vektorisering betyr å bruke arrayer istedenfor å bruke løkker til å repetere operasjoner. Arrayaddisjon er et eksempel på vektorisering. Vi kunne jo ha addert komponentene trinnvis i en løkke. Nedenfor ser du et eksempel på både ikke-vektorisert og vektorisert kode. For å illustrere forskjellen i tida det tar å gjøre de to ulike kodene har vi importert time-biblioteket. Det lar oss registrere start- og slutt-tida i programmet, og vi kan derfor beregne tida det tar å kjøre koden ved å ta differansen mellom disse.

    + +
    +

    Underveisoppgave

    +

    Forklar hva som foregår i programmet ovenfor. Test programmet ovenfor og beskriv hvordan de ulike operasjonene fungerer. Sjekk også forskjellen i tid mellom komponentvis multiplikasjon av arrayer i en løkke og vektorisert multiplikasjon.

    +
    +
    +
    +
    +

    Tupler#

    +

    Tupler blir brukt til å lagre statisk innhold som ikke skal endres. Et typisk eksempel er når vi skal spesifisere en fargekode i RGB (rød, grønn, blå). Da angis intensiteten til rød, grønn og blå som et tall mellom 0 og 255. Dette kan vi beskrive i en liste, men lister kan endres og er derfor ikke så robuste som tupler. Vi bruker derfor tupler til å lagre slike data. Istedenfor klammeparenteser bruker vi runde parenteser når vi lager tupler:

    +
    +
    +
    svart = (0, 0, 0)
    +hvit = (255, 255, 255)
    +rød = (255, 0, 0)
    +magenta = (255, 0, 255)
    +
    +print(magenta)
    +
    +
    +
    +
    +
    (255, 0, 255)
    +
    +
    +
    +
    +
    +
    +

    Dictionarier#

    +

    Dictionarier er en samling av data som indekseres med strenger istedenfor tall. Istedenfor klammeparenteser bruker vi krøllparenteser når vi lager dictionarier. Vi kaller indeksene i en dictionary for nøkler, og hver nøkkel har en verdi.

    +
    dictionary = {"nøkkel1": verdi1, "nøkkel2": verdi2, "nøkkel3": verdi3, ...}
    +
    +
    +

    Dictionarier er spesielt nyttig når vi skal lagre informasjon om bestemte kategorier, som ulike arter, grunnstoffer eller radioaktive nuklider. Programsnutten nedenfor viser hvordan vi bruker en dictionary der vi oppgir atommassen til ulike grunnstoffer.

    +
    +
    +
    atommasse = {"H": 1.01, "He": 4.00, "Li": 6.94, "Be": 9.01}
    +
    +print(atommasse["Li"]) # Skriver ut atommassen til litium
    +
    +
    +
    +
    +
    6.94
    +
    +
    +
    +
    +
    +

    Underveisoppgave

    +

    Forklar forskjellen mellom hvordan vi får ut elementer fra en liste sammenliknet med en dictionary.

    +
    +

    Dictionarier blir ekstra nyttige når vi forstår hvordan vi kan lagre dictionarier i dictionarier. Da kan vi for eksempel lagre høyde, bredde og vekt til en bestemt art, eller ulike egenskaper ved grunnstoffene. Programmet nedenfor viser hvordan du kan gjøre dette. Vi ser også at vi enkelt kan skrive ut alle nøkler og verdier i en dictionary

    + +
    +

    Underveisoppgave

    +

    Legg inn et ekstra valgfritt grunnstoff i programmet ovenfor i tillegg til hydrogen og vanadium. Legg også til kokepunkt for alle grunnstoffene. Skriv ut kokepunktet til det nye grunnstoffet.

    +
    +
    +
    +

    Oppgaver#

    +
    +

    Oppgave 6.1

    +

    Lag to arrayer. Fyll den ene med oddetall fra 1 til 101 og den andre med partall fra 0 til og med 100. Legg sammen arrayene.

    +
    +
    +

    Oppgave 6.2

    +

    Et program skal regne ut \(c = a + b\). Forklar hva \(c\) vil bli dersom

    +
      +
    1. \(a = [1,2,3,4]\) og \(b = [1,2,3,4]\)

    2. +
    3. \(a = [1,2,3,4]\) og \(b = 1\)

    4. +
    5. \(a = array([1,2,3,4])\) og \(b = 1\)

    6. +
    7. \(a = array([1,2,3,4])\) og \(b = array([1,2,3,4])\)

    8. +
    +
    +
    +

    Oppgave 6.3

    +

    Et program skal regne ut \(c = a * b\). Forklar hva \(c\) vil bli dersom

    +
      +
    1. \(a = [1,2,3,4]\) og \(b = [1,2,3,4]\)

    2. +
    3. \(a = [1,2,3,4]\) og \(b = 4\)

    4. +
    5. \(a = array([1,2,3,4])\) og \(b = array([1,2,3,4])\)

    6. +
    +
    +
    +

    Oppgave 6.4

    +

    Lag en array med alle tall i 9-gangen opp til 1000. Skriv ut tallene til slutt

    +
    +
    +

    Oppgave 6.5 (kjemi)

    +

    Følgende kode regner ut pH i en løsning gitt ulike verdier av konsentrasjonen av oksoniumioner. Vektoriser koden.

    +
    import numpy as np
    +
    +H3O = [1E-10, 2.4E-9, 1E-8, 3.5E-7, 7E-6, 1.2E-5, 1E-4, 1E-2, 1.2]
    +
    +def surhet(oksonium):
    +    pH = -np.log10(oksonium)
    +    return pH
    +    
    +pH = []
    +
    +for kons in H3O:
    +    pH.append(surhet(kons))
    +    
    +
    +
    +
    +
    +

    Oppgave 6.6 (matematikk)

    +

    Vi har vektorene \(\vec{v} = [2, 2]\) og \(\vec{w} = [1, -3]\). Avgjør om vektorene er ortogonale (\(\vec{v}\cdot \vec{w} = 0\)). Kontroller ved å regne ut for hånd.

    +
    +
    +

    Oppgave 6.7

    +

    Lise prøver å lage tre arrayer: én med alle partall fra og med 0 til og med 10, én med 1000 jevnt fordelte tall fra og med 0 til og med 10 og én med alle heltall fra og med 100 til og med 1 i synkende rekkefølge. Men programmet hennes gir feil output. Hva er feil? Rett opp programmet slik at Lise får gjort det hun ønsker.

    + +
    + +
    +

    Oppgave 6.8

    +

    Programmet nedenfor tegner fire sirkler, men sirklene trenger farge. Lag fire tupler som inneholder RGB-verdiene til fire valgfrie farger.

    + +
    +
    +

    Oppgave 6.9

    +

    Lag en dictionary med farger som nøkler og RGB-verdier som verdier (som tupler). Lag minst fem farger og skriv ut “RGB-koden for FARGE er: (R, G, B)” for hver farge i dictionarien.

    +
    +
    +

    Oppgave 6.10

    +

    Følgende program har noen variabler som inneholder informasjon om noen elever som har en bestemt lærer. Legg dem inn i en dictionary isteden. Hva er fordelen med å bruke dictionarier her?

    +
    elever = ["Gunnar", "Marius", "Kristian"]
    +lærer = ["Andreas"]
    +
    +
    +
    +
    +

    Oppgave 6.11 (biologi)

    +

    Lag en dictionary med ulike arter og forskjellige egenskaper til disse artene. Det bør være minst 3 ulike arter med 3 egenskaper hver.

    +
    +
    +
    +

    Videoer#

    +

    I videoene nedenfor kan du få en innføring eller repetisjon i den grunnleggende teorien bak arrayer og dictionarier:

    +
    + +
    + +
    + +
    + +
    +
    +
    +
    +
    +
    + + + + +
    + + + + + + +
    + + + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/tema3_datahandtering/lese_filer.html b/docs/tema3_datahandtering/lese_filer.html new file mode 100644 index 00000000..3ba2237d --- /dev/null +++ b/docs/tema3_datahandtering/lese_filer.html @@ -0,0 +1,1584 @@ + + + + + + + + + Datahåndering II: Håndtere og visualisere data — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Datahåndering II: Håndtere og visualisere data

    + +
    + +
    +
    + +
    + +
    +

    Datahåndering II: Håndtere og visualisere data#

    +
    +

    Læringsutbytte

    +

    Etter å ha arbeidet med dette temaet, skal du kunne:

    +
      +
    1. lese data fra fil

    2. +
    3. rydde og sortere data

    4. +
    5. visualisere fildata

    6. +
    +
    +
    +

    In God we trust; all others must bring data.

    +

    —Statistiker W. Edwards Deming (1900–1993)

    +
    +

    Data er over alt. Til daglig prosesserer vi store mengder med data i hjernen vår, og vi lærer og konstruerer nye oppfatninger og sammenhenger basert på disse inntrykkene. Dersom vi snubler i en høy dørterskel tilstrekkelig mange ganger, lærer vi etter hvert å ta høyere skritt over akkurat denne terskelen. Vi klarer også stort sett å kjenne igjen dyr som hunder, katter og aper, og vi klarer å skille dem fra hverandre. Det er fordi vi har samlet masse data i løpet av livet som gjør oss egnet til å trekke slutninger og gjøre (som regel?) gode valg. Samfunnet og internett samler også data om oss, blant annet for å tilpasse seeropplevelser på Netflix eller annonser på Google. Heldigvis er datainnsamling ganske regulert gjennom lover og regler (GDPR = General Data Protection Regulation).

    +

    Vi kan også bruke data til å illustrere sammenhenger i natur og samfunn, og som utgangspunkt for modellering. Vi skal derfor her se på hvordan vi kan lese, bearbeide og visualisere data på en god måte.

    +
    +

    Datafiler#

    +

    Vi ønsker ofte å oppbevare og overføre data i råtekstformat fordi de er robuste og kan leses av alle. Det betyr at dataene ikke har noen formatering eller annen informasjon enn de faktiske dataene. En Word-fil er for eksempel ikke råtekst, fordi den inneholder formatering av tekst som farger, kursivering og tekststørrelse. Eksempler på råtekstfiler er .txt-filer og .csv-filer. Råtekstdata kan vi lage manuelt, eller vi kan få dem fra sensorer eller laste dem ned fra internett. De fleste store datafiler lagres i råtekst.

    +

    Vi kan bruke Python til å lese slike data på mange ulike måter. Vi skal se på tre ulike metoder å gjøre det på, slik at du kan benytte det som er best i en gitt situasjon. Alle metodene har fordeler og ulemper, som vi også skal adressere. Vi kommer derimot til å bruke metoden fra det mye brukte Pandas-biblioteket som standard seinere, så det kan være en fordel at du lærer deg denne metoden best. Det er også den enkleste måten å lese filer på.

    +

    Vi tar utgangspunkt i en liten fil med få datapunkter, slik at det er enkelt å se hva som skjer når vi leser fila. Fila beskriver temperaturen i en kaffekopp (i \(^oC\)) med tida (i minutter), og ser slik ut:

    +
    tid (min), temperatur (grader celsius)
    +0,90
    +1,80
    +2,72
    +3,64
    +4,59
    +5,51
    +6,45
    +7,42
    +8,39
    +9,37
    +10,36
    +
    +
    +

    Vi ser at fila skiller datapunktene med komma, og at første linje som fungerer som overskrift. Dette er viktig informasjon når vi skal lese fila. For å lese en datafil, må den enten ligge i samme mappe som programmet som leser fila, eller så må du spesifisere hvilken filbane fila har. Det enkleste er å legge den i samme mappe som programmet, eller i en mappe som for eksempel heter “datafiler”, som ligger i samme mappe som programmet ditt. Alternativt går det an å lese rett fra en nettadresse som peker direkte på en datafil (f.eks. “https://www.uio.no/studier/emner/matnat/ifi/IN-KJM1900/h20/datafiler/temperatur.txt”).

    +

    Nedenfor ser vi tre måter å lese filer på. Vi skal primært bruke Pandas-metoden videre, men vi skal likevel gjennomgå alle metodene slik at du kjenner til litt ulike framgangsmåter.

    +
    + +
    +

    Vi kan bruke grunnstrukturer i Python til å lese filer uten å bruke biblioteker. Da må vi benytte løkker for å gjenta operasjoner for hver linje i fila:

    + +

    Her bruke vi kommandoen open, med nøkkelordet “r” (read). I løkka leser programmet hver linje, og deler dataene ved hvert komma, spesifisert i kommandoen split. Dette genererer ei liste med to elementer, siden det er to elementer på hver rad. Disse elementene blir tolket som tekst. Derfor konverterer vi dem til flyttall og legger dem i hver sin liste, som vi plotter til slutt. Vi lukker også fila til slutt.

    +
    +

    Underveisoppgave

    +

    Kjør programmet nedenfor i Trinket-vinduet ovenfor. Hva viser programmet deg?

    +
    import matplotlib.pyplot as plt
    +
    +fil = open("temperatur.txt", 'r')
    +fil.readline()                    
    +t = []						                
    +T = []					               
    +
    +for rad in fil:				        
    +  print("rad:", rad)
    +  data = rad.split(",")		  
    +  print("splittet rad:", data)
    +  print("radelement 1:", data[0], "radelement 2:", data[1])
    +fil.close()
    +
    +
    +
    +
    + +
    +

    Det finnes også en nyttig funksjon som heter loadtxt i numpy-biblioteket, som lar deg lese filer på en vektorisert måte uten løkker. Da lages det en array av dataene, med en array for hver kolonne inni denne arrayen. Arrayen er altså todimensjonal, og vi må derfor trekke ut de relevante kolonnene i hver sin endimensjonale array.

    + +

    Her utfører vi “array-slicing”, det vil si at vi plukker ut elementer fra en todimensjonal array og lager en ny endimensjonal array av det.

    +
    +

    Underveisoppgave

    +

    Kjør programmet nedenfor i Trinket-vinduet ovenfor. Hva viser programmet deg om array-slicing? Eksperimenter gjerne med å bytte ut verdiene, slik at du forstår hvordan verdiene plukkes ut

    +
    import numpy as np
    +import matplotlib.pyplot as plt
    +
    +data = np.loadtxt("temperatur.txt", skiprows = 1, delimiter = ",") # Får to arrayer (kolonner) i en array
    +print(data)
    +t = data[0:3,0]
    +T = data[0:3,1] 
    +print(t)
    +print(T)
    +
    +plt.scatter(t, T)
    +plt.xlabel("Tid (s)")
    +plt.xlabel("Temperatur ($^o$C)")
    +plt.show()
    +
    +
    +
    +
    + +
    +

    Et svært mye brukt bibliotek er Pandas-biblioteket. Det benyttes mye i datahåndtering og maskinlæring, og er kanskje den enkleste måten å lese filer på. Med funksjonen read_csv leses filer av typen .txt eller .csv, og vi får en ny datatype som kalles en dataramme (dataframe). En slik datatype kan ses på som en slags dictionary, der kolonneoverskriftene fungerer som nøkler. Dermed skriver vi data[“temperatur”] for å få tilgang til kolonnen med overskriften “temperatur”.

    + +

    Pandas gir penest og ryddigst output dersom du bruker det i Jupyter Notebook. Vi skal bruke Pandas videre her, så da får du en smakebit på hva som er mulig.

    +
    +
    +
    +
    +

    Håndtere data med Pandas#

    +

    Noen ganger trenger vi å rydde, utforske og omstrukturere datasettene våre før vi visualiserer dem. Dette egner Pandas seg svært godt til. La oss se på et eksempel. Datafila penguins.txt inneholder ulik informasjon om pingviner som er registrert på ulike øyer. Vi kan lese fila slik:

    +
    +
    +
    import pandas as pd
    +
    +pingvindata = pd.read_csv("https://www.uio.no/studier/emner/matnat/ifi/IN-KJM1900/h21/datafiler/penguings.txt", delimiter = ",")
    +
    +
    +
    +
    +

    Nå kan vi ta en kikk på de første eller siste linjene i datasettet vårt ved å bruke funksjonene head eller tail. Dersom vi ikke gir disse funksjonene en parameterverdi, får vi de 5 første eller siste linjene:

    +
    +
    +
    pingvindata.head()
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    speciesislandbill_length_mmbill_depth_mmflipper_length_mmbody_mass_gsex
    0AdelieTorgersen39.118.7181.03750.0MALE
    1AdelieTorgersen39.517.4186.03800.0FEMALE
    2AdelieTorgersen40.318.0195.03250.0FEMALE
    3AdelieTorgersenNaNNaNNaNNaNNaN
    4AdelieTorgersen36.719.3193.03450.0FEMALE
    +
    +
    +

    Her ser vi både kolonnenavnene og verdier til de fem første pingvinene. Vi kan også se at vi får en litt merkelig verdi, nemlig NaN. Dette står for “Not a Number” og er en vanlig måte å markere at vi mangler data. Det betyr for eksempel at pingvinene er registrert, men at vi ikke fikk undersøkt den. Vi ser for øvrig at read_csv fra Pandas kan lese både NaN-verdier, tekst og tall samtidig.

    +
    +
    +

    Rydde data#

    +

    Mange ganger har vi behov for å utforske og rydde litt i datasettet vårt. Det kan hende vi kun trenger noen utvalgte verdier, eller det kan hende vi ønsker å slette noe. Programmet nedenfor viser deg noen muligheter. Husk at hvis du skal lagre verdier, må du tilordne dem til variabler. For eksempel finner vi kun damepingvinene ved å skrive pingvindata[pingvindata[“sex”] == “FEMALE”]. Hvis vi vil lage en dataframe som kun inneholder damepingvinene, må vi skrive pingvindata_damer = pingvindata[pingvindata[“sex”] == “FEMALE”]. Nedenfor ser du et utvalg muligheter vi har med pandas. Studer eksempelen nøye og test dem gjerne ut selv! En god måte å jobbe med dette på, er å skrive ut pingvindata.head() hver gang du har gjort en endring i datasettet for å se hva som har skjedd.

    +
    +
    +
    # Sjekke hvilke kolonnekategorier vi har
    +pingvindata.columns
    +
    +# Teller ulike forekomster i kolonnen
    +pingvindata["sex"].value_counts()
    +
    +# Finne en spesifikk kolonne
    +pingvindata["flipper_length_mm"]
    +
    +# Finne et utvalg elementer [fra:til] av en spesifikk kolonne
    +pingvindata["flipper_length_mm"][0:10]
    +
    +# Finne flere kolonner
    +pingvindata[["bill_length_mm", "bill_depth_mm", "flipper_length_mm"]]
    +
    +# Finne spesifikke elementer
    +pingvindata.loc[1]       # Element 1 (andre element)
    +pingvindata.loc[100][2]   # Element 100, kolonneverdi 2
    +pingvindata[pingvindata["sex"] == "FEMALE"] # Damepingviner
    +
    +# Sortere verdier etter stigende (ascending = True) rekkefølge (først nebblengde, så nebbdybde)
    +pingvindata.sort_values(["bill_length_mm", "bill_depth_mm"], ascending = True)
    +
    +# Velger ut kun de pingvinene med nebblengde under 40 mm
    +pingvindata_kort_nebb = pingvindata[pingvindata["bill_length_mm"] < 40]
    +
    +# Sletter alle pingviner som har mangelfull info (NaN)
    +pingvindata.dropna()
    +
    +# Legger til en ny kolonne
    +pingvindata["total_mm"] = pingvindata["bill_length_mm"] + pingvindata["bill_depth_mm"] 
    +
    +# Lagre fila i en ny csv-fil
    +pingvindata.to_csv("ny_pingvinfil.csv", index = False)
    +
    +# Sletter kolonnen har lagt til
    +pingvindata.pop("total_mm")
    +pingvindata.head()
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    speciesislandbill_length_mmbill_depth_mmflipper_length_mmbody_mass_gsex
    0AdelieTorgersen39.118.7181.03750.0MALE
    1AdelieTorgersen39.517.4186.03800.0FEMALE
    2AdelieTorgersen40.318.0195.03250.0FEMALE
    3AdelieTorgersenNaNNaNNaNNaNNaN
    4AdelieTorgersen36.719.3193.03450.0FEMALE
    +
    +
    +
    +

    Underveisoppgave

    +

    Bruk pingvindatafila (du finner den under datafiler på nettsidene her) og les dataene med Pandas. Finn ut hvor mange hankjønnspingviner det er med kroppsmasse under 3000 g.

    +
    + +
    +

    Underveisoppgave

    +

    Vi kan beskrive frekvens som antall forekomster av en verdi som tilhører en variabel. Relativ frekvens er antallet forekomster av noe delt på totalt antall verdier innenfor den samme variabelen. Regn ut relativ frekvens av antall pingviner av arten Adelie.

    +
    + +
    +
    +

    Visualisering#

    +

    Visualisering av data er viktig. Det gir oss mulighet til å enkelt se sammenhenger og tolke data. En illustrasjon bør være så klar og enkel som mulig, uten unødvendige detaljer. Vær derfor kritisk når du skal lage dine egne figurer. Vi skal bruke et bibliotek som heter seaborn til å lage fine visualiseringer. Seaborn-biblioteket inneholder noen ekstra fine plott som utvidelse til matplotlib, og vi kan bruke vanlige matplotlib-kommandoer som xlabel og title sammen med seaborn-kommandoene. La oss på noen få nyttige plott her. Vi skal se nærmere på andre plott ettersom de blir nyttige.

    +

    Her er et eksempel på et relasjonsplott (“relplot”), som viser sammenhengen mellom to variabler. Vi kan lage ulike markører og modifisere størrelsen til markørene. I plottet nedenfor er det kanskje litt i overkant mye informasjon som formidles, men det viser i hvert fall hva som er mulig.

    +
    +
    +
    import matplotlib.pyplot as plt 
    +import seaborn as sns
    +
    +sns.relplot(data=pingvindata, x="bill_length_mm",y="bill_depth_mm", hue="species", size="body_mass_g", style="island")
    +plt.xlabel("Nebblengde (mm)")
    +plt.ylabel("Nebbdybde (mm)")
    +plt.title("Sammenheng mellom nebbdybde og nebblengde hos pingviner")
    +plt.show()
    +
    +
    +
    +
    +../../_images/41091e2dd231f45077349bb1031fd1c0bddbc26b068912b73aa3a808c5d33560.png +
    +
    +
    +

    Underveisoppgave

    +

    Forklar hva plottet ovenfor formidler. Foreslå eventuelt forbedringer av visualiseringen.

    +
    +

    Visualiseringen nedenfor formidler noe av det samme, men med fokus på hvilke verdier som er mest vanlig hos de ulike artene. Vi kaller det for et “tetthetsplott” (kde = kernel density estimate), siden det viser fordelingen (tettheten) av de ulike verdiene. En slik visualisering kan leses omtrent som et kart med høydenivåer – den innerste “ringen” viser området der det er “høyest”, altså har flesteparten av pingvinene denne fordelingen.

    +
    +
    +
    sns.jointplot(data=pingvindata, x="bill_length_mm",y="bill_depth_mm", hue="species", kind = "kde")
    +
    +
    +
    +
    +
    <seaborn.axisgrid.JointGrid at 0x2c48001ea60>
    +
    +
    +../../_images/fe39371f27b679b763b859d1f891937e2ffe068571387bed4d6e106b1033c51d.png +
    +
    +

    Plottet nedenfor er en variant av et tetthetsplott for én variabel:

    +
    +
    +
    sns.kdeplot(data=pingvindata, x="bill_length_mm", hue="species", fill=True, palette="crest")
    +
    +
    +
    +
    +
    <AxesSubplot:xlabel='bill_length_mm', ylabel='Density'>
    +
    +
    +../../_images/c0fd31cd9fa96b67edbd0c7fdde10735257e8fdb6d356b687c205c7e310272e5.png +
    +
    +

    En annen nyttig visualisering er histogrammer. Det er figurer som viser fordeling av verdier ved å gruppere ulike verdier i intervaller . Du kan velge hvor mange søyler/intervaller som skal være med i histogrammet ved å justere parameteren bins.

    +
    +
    +
    sns.histplot(data=pingvindata, x='flipper_length_mm', bins = 12)
    +
    +
    +
    +
    +
    <AxesSubplot:xlabel='flipper_length_mm', ylabel='Count'>
    +
    +
    +../../_images/843d69fc2513037a3611755a5b75865a4fb482aa711fb5ad47f89b738471bc4c.png +
    +
    +

    Istedenfor antall søyler, kan vi for eksempel justere bredden på søylene:

    +
    +
    +
    sns.histplot(data=pingvindata, x='flipper_length_mm', binwidth=10)
    +
    +
    +
    +
    +
    <AxesSubplot:xlabel='flipper_length_mm', ylabel='Count'>
    +
    +
    +../../_images/8b1b8865688b47115714cb053a0d92205a9a49961ad4b9fd9ab2a95e59982a98.png +
    +
    +

    Dersom det er bedre å bruke søylediagram istedenfor histogram, kan vi bruke “barplot” istedenfor “histplot”:

    +
    +
    +
    sns.barplot(data=pingvindata, x="species", y="body_mass_g", hue="sex", ci="sd") # ci = "sd" gir standardavviket som svarte streker
    +
    +
    +
    +
    +
    <AxesSubplot:xlabel='species', ylabel='body_mass_g'>
    +
    +
    +../../_images/0300c7be497769f7336f776c01af6c0a3ff2b673a27467437a684c675171cf72.png +
    +
    +

    Søylediagrammer egner seg godt til å illustrere forskjeller mellom ulike kategorier, mens histogrammer viser fordelingen av en bestemt variabel. Vi ser også at søylediagrammene kan vise spredningen i datasettet (de svarte linjene).

    +

    Som sagt finnes det mange andre mulige visualiseringer og måter å pynte plottene på, men vi nøyer oss i første omgang med disse.

    +
    +
    +

    Oppgaver#

    +
    +

    Oppgave 1: Visualisere data

    +

    Fila titrering.txt (som du finner her) inneholder en kolonne med tilsatt volum NaOH i mL til en løsning med eddiksyre og en kolonne med pH.

    +

    Les av fila og plott titrerkurven.

    +
    +
    +

    Oppgave 2: Undersøke data

    +

    Les inn data fra fila antall-meldte-covid-19.txt (som du finner her) ved hjelp av Pandas.

    +
      +
    1. Hva beskriver datasettet?

    2. +
    3. Vis de første 5 radene i datasettet.

    4. +
    5. Finn ut hvor mange rader og kolonner datasettet inneholder.

    6. +
    +
    +
    +

    Oppgave

    +

    Den molare massen til et grunnstoff kan beregnes ved å ta summen av den molare massen til hvert av isotopene til grunnstoffet multiplisert med andelen/forekomsten av denne istopen:

    +
    +\[\sum_i m_iw_i\]
    +

    Her er \(m_i\) massen til den \(i\)-te isotopen av grunnstoffet, og \(w_i\) er forekomsten av denne istopen (fra 0 til 1, der 1 er 100 prosent forekomst). Fila tinn.txt inneholder forekomsten i % av ulike isotoper av tinn, som er grunnstoffet med mest stabile isotoper.

    +
      +
    1. Les av fila.

    2. +
    3. Bruk informasjonen til å regne ut den molare massen til tinn. Print ut massen med fire desimaler og korrekt enhet.

    4. +
    +
    +

    I videoene nedenfor kan du få en innføring eller repetisjon i den grunnleggende teorien bak lesing av filer:

    +
    + +
    + +
    + +
    + +
    +
    +
    +
    + + + + +
    + + + + + + +
    + + + +
    + + + +
    + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/tema3_datahandtering/maskinlaring.html b/docs/tema3_datahandtering/maskinlaring.html new file mode 100644 index 00000000..99228fcf --- /dev/null +++ b/docs/tema3_datahandtering/maskinlaring.html @@ -0,0 +1,1336 @@ + + + + + + + + + Datahåndtering IV: Maskinlæring — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + + + +
    + +
    +

    Datahåndtering IV: Maskinlæring#

    +
    +

    Læringsutbytte

    +

    Etter å ha arbeidet med dette temaet, skal du kunne:

    +
      +
    1. gjør rede for hva som menes med maskinlæring

    2. +
    3. lage, teste og evaluere enkle modeller ved hjelp av maskinlæring

    4. +
    +
    +

    Når et barn har sett en hund som har blitt omtalt som en hund, generaliserer det ofte slik at det oppfatter alle dyr som hund. Men ettersom barnet ser flere ulike hunder og andre dyr, klarer det etter hvert å skille hund som en egen kategori. Vi danner oss forestillinger og generaliseringer basert på observasjoner i virkeligheten. Dette kalles induksjon. Slutningene vi tar, følger ikke med nødvendighet, men med sannsynlighet. Og ganske ofte kan vi ta feil. Men desto flere uttrykk vi utsettes for, desto større sannsynlighet er det som regel at vi har rett.

    +

    Vi kan bruke induktiv læring på datamaskinen også. Da kaller vi det maskinlæring. Med de store mengdene digitale data vi omgir oss med, kan datamaskinen lære og trekke slutninger om verden rundt oss. Så istedenfor å eksplisitt kode alle valg en datamaskin kan ta, lar vi datamaskinen lære fra data og trekke slutninger selv.

    +

    I dette kapitlet skal vi se på hvordan vi kan benytte biblioteket scikit-learn og keras, som er en del av tensorflow. Disse bibliotekene må installeres først – du kan skrive for eksempel pip install scikit-learn tensorflow i et terminalvindu for å gjøre dette. Bibliotekene fungerer svært godt sammen med Pandas med Jupyter Notebook som programmeringsplattform, så vi kommer til å benytte dette her.

    +

    Vi vender atter tilbake til pingvinene våre. Vi skal her lage en maskinlæringsmodell for å artsbestemme ringpingviner, bøylepingviner og adeliepingviner.

    + + +
    +

    Steg 1: Les av og utforsk dataene#

    +
    +
    +
    import seaborn as sns
    +import pandas as pd
    +import numpy as np
    +import matplotlib.pyplot as plt
    +
    +pingvindata = pd.read_csv("data/penguins.txt", delimiter = ",")
    +pingvindata.head()
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    speciesislandbill_length_mmbill_depth_mmflipper_length_mmbody_mass_gsex
    0AdelieTorgersen39.118.7181.03750.0MALE
    1AdelieTorgersen39.517.4186.03800.0FEMALE
    2AdelieTorgersen40.318.0195.03250.0FEMALE
    3AdelieTorgersenNaNNaNNaNNaNNaN
    4AdelieTorgersen36.719.3193.03450.0FEMALE
    +
    +
    +

    Når vi har lest inn fila, kan det være lurt å visualisere ulike sammenhenger i datasettet. Vi skal bestemme oss for hvilke kriterier eller attributter (“features”) vi ønsker å legge til grunn for å plassere pingvinen i en eller kategori (“label”). Vi velger her å lage en modell som skal forutsi hvilken pingvinart vi har med å gjøre gitt bestemte verdier av et utvalg variabler. Her er det nyttig å visualisere sammenhenger slik at du har en formening om hvilke kategorier som er mest egnet til en bestemmelsesnøkkel.

    +
    +

    Underveisoppgave

    +

    Bruk pairplot-funksjonen til seaborn-biblioteket til å lage noen hypoteser på hvilke kriterier som er mest avgjørende for å bestemme hva slags art vi har med å gjøre.

    +
    +

    Siden det mangler noen verdier (NaN), må vi gjøre noe med dem. Enten kan vi bytte dem ut med for eksempel medianverdien eller gjennomsnittet, eller så kan vi fjerne alle pingvinene med NaN-verdier. Sistnevnte er ganske drastisk, men går ofte greit dersom datasettet er stort. Vi gjør det slik for enkelhets skyld:

    +
    +
    +
    pingvindata.dropna(inplace=True)
    +
    +
    +
    +
    +
    +
    +

    Steg 2: Velge treningssett og testsett#

    +

    For å lage en modell som skal forutsi pingvinarten, må vi først importere noen nyttige funksjoner fra scikit-learn-biblioteket. Vi skal gradvis se hva disse funksjonene gjør.

    +
    +
    +
    from sklearn.model_selection import train_test_split, cross_val_score
    +from sklearn import tree
    +from sklearn.metrics import accuracy_score, confusion_matrix
    +
    +
    +
    +
    +

    Nå er vi klare for litt maskinlæring. Grunnprinsippene er som følger:

    +
      +
    1. Bestem hvilke kriterier som skal ligge til grunn for kategorien vi ønskerat maskinlæringsalgoritmen skal sortere etter.

    2. +
    3. Velg ut en del av datasettet som datamaskinen skaltrenepå og en avdatasettet vi skaltestemed til slutt. Datamaskinen ser på kriteriene ogde tilhørende kategoriene, og bestemmer en sannsynlighet for sammen-hengen mellom ulike kriterier og kategorier.

    4. +
    5. Lag en modell. Dette gjør vi ved å bruke ferdige algoritmer fra et ma-skinlæringsbibliotek.

    6. +
    7. Tren modellen med treningssettet. Nå har du lagd en modell som ertilpasset det vi ønsket.

    8. +
    9. Valider modellen ved å bruke testsettet.

    10. +
    11. Analyser modellen og gjør eventuelle endringer slik at forutsigelsene mo-dellen gjør, blir så gode som mulig

    12. +
    +

    Først velger vi altså ut kriterier og bestemmer kategorier. La oss bare begynne med to kriterier: nebblengde og nebbdybde.

    +
    +
    +
    kriterier = pingvindata[['bill_length_mm', 'bill_depth_mm']] # features
    +kategorier = pingvindata['species']                          # labels
    +
    +
    +
    +
    +

    Legg merke til at det er dobbel klammeparentes i første linje. Dette gir et objekt med to kolonner. Maskinlæringsalgoritmene krever et objekt (en array eller dataramme) som består av både kolonner og rader, derfor er disse doble klammeparentesene alltid nødvendig.

    +

    La oss nå velge ut hvor stor andel av datasettet vi skal trene med. Det er ofte lurt å trene med 70–80 % av datasettet, og bruke resten til å teste med. Det finnes en funksjon som gjør dette automatisk, nemlig train_test_split:

    +
    +
    +
    # Velge ut data til trening og testing
    +treningsandel = 0.8 # Velger 80 prosent av datasettet til trening
    +ml_data = train_test_split(kriterier, kategorier, train_size=treningsandel, random_state=42)
    +
    +treningskriterier = ml_data[0]
    +testkriterier = ml_data[1]
    +treningskategorier = ml_data[2]
    +testkategorier = ml_data[3]
    +
    +
    +
    +
    +

    Det funksjonen ovenfor gjør, er å velge ut 80 % av dataene fra tilfeldige steder i datasettet til trening og 20 % til testing. Vi lagrer kriterier (lengden og dypbden til pingvinnebbet) og tilsvarende kategori (art) i variabelen ml_data. Denne består nå av fire separate elementer, som vi sorterer i linjene nederst i fire ulike variabler: kategorielementene (altså verdien til nebbdybde og nebblengde) og de tilsvarende kategoriene (hvilken art det tilsvarer) som ble valgt ut til trening, og tilsvarende for testing.

    +

    En litt merkelig parameter er random_state. Den er ikke nødvendig for å dele opp datasettet, men den er nyttig. Hvis vi velger et tilfeldig tall her, låser vi algoritmen slik at den plukker ut de samme tallene hver gang vi kjører programmet. Det kan være en fordel dersom vi ønsker å teste og tilpasse modellen, men ønsker å ha det samme utvalget av datasettet hver gang. Hvis vi ikke velger et fast utvalg, vil modellen gi ulike resultater hver gang vi kjører programmet.

    +
    +

    Underveisoppgave

    +

    Skriv ut de ulike kategoriene og kriteriene for å se hva programmet har generert så langt. Prøv å bytte ut eller fjerne random_state-parameteren og kjør programmet flere ganger. Observer hva som skjer.

    + +
    +
    +
    +

    Steg 3: Lag modellen#

    +

    Nå kan vi velge en algoritme som grunnlag for modellen vår. Det finnes mange ulike algoritmer, og de benytter statistikk og lineær algebra til å optimere ulike parametre. Vi skal ikke se på algoritmene her, men heller fokusere på å forstå hvordan de fungerer. Derfor starter vi med en enkel beslutningstrealgoritme. Denne fungerer som et slags valgtre, der hvert valg utføres fra et gitt kriterium (for eksempel nebblengde mindre enn 40 mm), og som brukes til å sannsynliggjøre hvilken art vi har med å gjøre.

    +

    Vi lager og trener modellen slik:

    +
    +
    +
    modell = tree.DecisionTreeClassifier()                  # Lager modellen
    +modell.fit(treningskriterier, treningskategorier)       # Trener modellen
    +
    +
    +
    +
    +
    DecisionTreeClassifier()
    +
    +
    +
    +
    +

    Nå har vi (eller datamaskinen) faktisk lagd modellen vår, og vi har brukt treningsdataene til å trene modellen slik at den best mulig kan forutsi kategorier basert på gitte kriterier.

    +
    +
    +

    Steg 4: Test og evaluer modellen#

    +

    Vi skal nå teste og evaluere modellen vår:

    +
    +
    +
    forutsigelser = modell.predict(testkriterier)
    +accuracy_score(testkategorier, forutsigelser)
    +
    +
    +
    +
    +
    0.9402985074626866
    +
    +
    +
    +
    +

    Her bruker vi altså testkriteriene og lar modellen forutsi hvilke kategorier dette tilsvarer (forutsigelser). Så sammenlikner vi dette med de faktiske kategoriene (testkategorier) med funksjonen \texttt{accuracy_score}. I dette tilfellet får vi en treffsikkerhet på ca. 94 %. Det betyr at modellen vår gir riktig pingvinart 94 % av gangene. Det er ikke verst!

    +

    Vi kan også bruke modellen til å forutsi en art gitt helt nye data, for eksempel slik:

    +
    +
    +
    nebblengde = 35
    +nebbdybde = 15
    +modell.predict([[nebblengde, nebbdybde]]) # Husk to klammer her!
    +
    +
    +
    +
    +
    array(['Adelie'], dtype=object)
    +
    +
    +
    +
    +

    Dette betyr at en pingvin med nebblengde 35 mm og nebbdybde 15 mm mest sannsynlig er en Adelie-pingvin.

    +
    +
    +

    Steg 5: Videre analyse#

    +

    Noen ganger blir modellen ganske dårlig, og da kan det hende du bør gå tilbake og velge andre, eller flere attributter (kriterier) for modellen. For å analysere videre hva modellen feiler på, kan det være fint å lage en forvirringsmatrise(også kalt feilmatrise). Tallene for forvirringsmatrisen kan vi lage med en funksjon som heter confusion_matrix, og selve matrisen kan vi lage med heatmap-funksjonen til seaborn-biblioteket:

    +
    +
    +
    cm = confusion_matrix(forutsigelser, testkategorier)
    +sns.heatmap(cm, annot=True, cmap="viridis",
    +           xticklabels=["Adelie", "Chinstrap", "Gentoo"], yticklabels=["Adelie", "Chinstrap", "Gentoo"])
    +plt.xlabel("Predikerte verdier")
    +plt.ylabel("Sanne verdier")
    +plt.savefig("forvirringsmatrise.pdf", dpi = 600)
    +
    +
    +
    +
    +../../_images/31b54c42d6c2d606e6d17953220ba53c2deb59a11a5ab7b462cd15d9ddeba990.png +
    +
    +

    Hvis vi ikke benytter ticklabels, får vi verdiene 0, 1 og 2, som vi selv må tolke som de ulike artskategoriene etter rekkefølgen de har i datasettet.

    +

    Totalt har vi brukt 20 % av datasettets 333 datapunkter til testing, det vil si 67 datapunkter. Matrisen sammenlikner de predikerte kategoriene og de sanne testkategoriene. Vi kan se at den for eksempel forutså at arten tilhørte Adelie 29 riktige ganger, men forutså Chinstrap (ringpingvin) én gang der arten skulle vært Gentoo (bøylepingvin).

    +

    Maskinlæring kan brukes til ufattelig mye rart, og det finnes mange ulike modeller som man kan prøve ut. Her var hovedpoenget å bli litt kjent med hva maskinlæring er og hvor enkelt det er å utføre enkel maskinlæring med dagens verktøy.

    +
    +
    + + + + +
    + + + + + + +
    + + + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/tema3_datahandtering/plotting.html b/docs/tema3_datahandtering/plotting.html new file mode 100644 index 00000000..16e1b887 --- /dev/null +++ b/docs/tema3_datahandtering/plotting.html @@ -0,0 +1,1283 @@ + + + + + + + + + Datahåndtering I: Visualisering — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Datahåndtering I: Visualisering

    + +
    + +
    +
    + +
    + +
    +

    Datahåndtering I: Visualisering#

    +
    +

    Læringsutbytte

    +

    Etter å ha arbeidet med dette temaet, skal du kunne:

    +
      +
    1. bruke matplotlib-biblioteket til visualisering

    2. +
    3. plotte datapunkter og funksjoner

    4. +
    5. lage og tolke ulike visualiseringer

    6. +
    +
    +

    Håndtering av data blir stadig viktigere i dagens samfunn. En viktig del av datahåndtering er å kunne generere fine og informative figurer som beskriver dataene på en god måte. Det blir stadig vanligere å bruke programmering til dette. Det finnes flere typer biblioteker som kan gi oss fine og profesjonelle figurer. Vi begynner med et mye brukt bibliotek som heter matplotlib. Hvis du foretrekker å importere pylab istedenfor, kan du godt gjøre det. Pylab-biblioteket inneholder også alle de samme plotteverktøyene.

    +
    +

    Plotting av lister#

    +

    Hvis vi har få datapunkter, kan vi skrive dem inn i lister direkte i programmet vårt og plotte dem. La oss si at vi har samlet data for hvor raskt en hurtigvoksende plante vokser annenhver dag. Vi registerer dagene og høyden til planten i cm, og legger disse verdiene inn i lister.

    +
    +
    +
    import matplotlib.pyplot as plt       # importerer relevante plotteverktøy
    +
    +tid = [0, 2, 4, 6, 8, 10, 12, 14]     # tid i dager
    +plantehøyde = [0, 1, 4.2, 7.9, 12.5, 13, 13.7, 13.9] # høyde i cm
    +
    +plt.plot(tid, plantehøyde)            # plotter plantehøyde mot tid
    +plt.show()                            # viser plottet
    +
    +
    +
    +
    +../../_images/acd99d6305c2c5b0405dd546bdeff24f5c1058b7dc0f8fdd6790beef60f0142d.png +
    +
    +

    Hvis vi har lyst til å modifisere og pynte på plottet, har vi mange muligheter til det. Her er noen forslag til en del nyttige endringer av plottet ovenfor:

    +
    +
    +
    plt.plot(tid, plantehøyde, color = 'limegreen', marker = 'o', linestyle = '--')
    +plt.title("Forsøk: Plantevekst")      # tittel
    +plt.xlabel("Tid (dager)")             # x-aksetittel
    +plt.ylabel("Plantens høyde (cm)")     # y-aksetittel
    +plt.xlim(0,15)   # definisjonsmengde
    +plt.ylim(0,20)   # verdimengde
    +plt.grid()       # tegner rutenett
    +plt.show()
    +
    +
    +
    +
    +../../_images/8739d12f7dfac7822aa1b905b4894e700c88e474cd3ad3c18606a79946c6ca52.png +
    +
    +

    Det finnes utrolig mange måter å modifisere et plott på. Tabellene nedenfor viser en oversikt over nyttige plottekommandoer, linjestiler, markører og farger, som du kan bruke for å lage akkurat den figuren du ønsker. Du bør også søke litt rundt på nettet for å finne andre muligheter, for eksempel ved å søke på «python plotting colors» og liknende. Du må bruke internett flittig når du lurer på noe i programmering!

    +

    En veldig nyttig kommando når vi skal representere flere grafer i samme koordinatsystem, er legend. Denne kommandoen viser merkelappene (“labels”) til de ulike plottene. Programmet nedenfor gir et eksempel på dette.

    +
    +

    Underveisoppgave

    +

    Programmet nedenfor plotter miljøgifter i ulike organismer i to innsjøer. Studer programmet og eksperimenter med ulike verdier fra tabellen nedenfor.

    +
    +
    +
    +

    Plotting av funksjoner#

    +

    En datamaskin kan bare håndtere diskrete verdier, altså ikke-uendelige tallmengder. En matematisk funksjon kan derimot være kontinuerlig og ha uendelig mange funksjonsverdier. På en datamaskin må vi tilnærme denne uendelige mengden med et ganske stort antall. Dette kan vi gjøre med for eksempel linspace-kommandoen. Programmet nedenfor plotter funksjonen \(f(x) = 2x^2 - 2x + 1\) for \(x\in[-2, 3]\)

    +
    +
    +
    import matplotlib.pyplot as plt
    +import numpy as np
    +
    +x = np.linspace(-2, 3, 1000) # lager 1000 x-verdier mellom -2 og 3
    +y = 2*x**2 - 2*x + 1 # lager 1000 tilsvarende y-verdier til en funksjon
    +
    +plt.plot(x,y)
    +plt.xlabel('x')
    +plt.ylabel('y')
    +plt.grid()
    +plt.show()
    +
    +
    +
    +
    +../../_images/39262e8437160fc0fa4e41b0e69a987e656a9e9c5a941c22c4744177ab496591.png +
    +
    +

    Det Python egentlig gjør når den plotter funksjoner, er å plotte et bestemt antall punkter og “tegne” rette linjer mellom disse punktene. Dette kalles “lineær interpolasjon”. Det blir tydelig dersom vi kun velger ut fem punkter å plotte funksjonen i.

    +
    +
    +
    x = np.linspace(-2, 3, 5) # lager 5 x-verdier mellom -2 og 3
    +y = 2*x**2 - 2*x + 1      # lager 5 tilsvarende y-verdier til en funksjon
    +
    +plt.plot(x,y,marker='o')
    +plt.xlabel('x')
    +plt.ylabel('y')
    +plt.grid()
    +plt.show()
    +
    +
    +
    +
    +../../_images/aa41fff3f835f7cf1dd52cea254b0b821e3bfa8892eff69382ca3e0d390f3349.png +
    +
    +

    Dersom vi definerer en Python-funksjon, kan vi også bruke denne til å generere y-verdier:

    +
    +
    +
    def f(x):
    +    return 2*x**2 - 2*x + 1 
    +
    +x = np.linspace(-2, 3, 1000) # lager 5 x-verdier mellom -2 og 3
    +y = f(x)                     # lager 1000 tilsvarende y-verdier til en funksjon
    +
    +plt.plot(x,y,)
    +plt.xlabel('x')
    +plt.ylabel('y')
    +plt.grid()
    +plt.show()
    +
    +
    +
    +
    +../../_images/39262e8437160fc0fa4e41b0e69a987e656a9e9c5a941c22c4744177ab496591.png +
    +
    +
    +

    Underveisoppgave

    +

    Plott tre funksjoner i samme koordinatsystem. Eksperimenter med farger, linjestiler og annet. Husk aksetitler!

    +
    + +
    +
    +

    Flere plott i samme figur#

    +

    Dersom vi ønsker å lage flere plott i samme figur, kan vi bruke kommandoen subplot(antall rader, antall kolonner, figurnummer) for å plotte flere grafer samtidig. Her er et eksempel:

    +
    +
    +
    import matplotlib.pyplot as plt
    +import numpy as np
    +
    +x = np.linspace(0, 10, 50)
    +y = np.sin(x)
    + 
    +plt.subplot(2, 1, 1)   # To rader, én kolonne, figur 1
    +plt.plot(x, y, color = "green", linestyle = "--")
    +plt.title("Grønn stiplekurve")
    +
    +plt.subplot(2, 1, 2)            # To rader, én kolonne, figur 2
    +plt.plot(x, y, color = "red", linestyle = " ", marker = "o")
    +plt.title("Rød prikkekurve")
    +plt.tight_layout()              # Fikser slik at det ikke blir overlapp mellom f.eks. aksetitler
    +
    +plt.show()
    +#plt.savefig("kulfigur.png")    # Lagrer figuren på datamaskinen din
    +
    +
    +
    +
    +../../_images/33b384dd47c247be7b66b45b566ae5db1a30328e352f4eb057a7643b84d25224.png +
    +
    +

    Vi kan også lage flere funksjoner i samme koordinatsystem. Da bruker vi labels (merkelapper) for å skille mellom de ulike grafene, og legend for å vise merkelappene i koordinatsystemet.

    +
    +
    +
    import matplotlib.pyplot as plt
    +import numpy as np
    +
    +x = np.linspace(-2, 3, 10)
    +
    +def f(x):
    +    return x**2 - 2*x
    +
    +def g(x):
    +    return np.sin(x)
    +
    +def h(x):
    +    return - x + 6
    +
    +y1 = f(x)
    +y2 = g(x)
    +y3 = h(x)
    +
    +plt.plot(x,y1,color='lawngreen',label='f(x)', marker='^') # Bruker merkelapp (label) for å skille mellom kurvene
    +plt.plot(x,y2,color='maroon',label='g(x)', marker='o')
    +plt.plot(x,y3,color='deepskyblue',label='h(x)', marker='s')
    +plt.legend() # Viser merkelappene
    +plt.xlabel('x')
    +plt.ylabel('y')
    +plt.axhline(y=0,color='black') # Tegner x-akse
    +plt.axvline(x=0,color='black') # Tegner y-akse
    +plt.grid()
    +plt.show()
    +
    +
    +
    +
    +../../_images/eb4b7cdef67ea97baa3824f25528788261cdd5a727b7f8966584447e00741370.png +
    +
    +
    +

    Underveisoppgave

    +

    Plott tre av dine favorittfunksjoner i samme koordinatsystem. Tilpass akser og tittel og pynt på plottet.

    +
    +
    +

    Underveisoppgave

    +

    Modifiser figuren ovenfor slik at plottene vises ved siden av hverandre i samme figur istedenfor under hverandre.

    +
    + +
    +
    +

    Videoer#

    +

    I videoen nedenfor kan du få en innføring eller repetisjon i hvordan du plotter i Python.

    +
    +
    + + + + +
    + + + + + + +
    + + + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/tema3_datahandtering/statistikk.html b/docs/tema3_datahandtering/statistikk.html new file mode 100644 index 00000000..643007d5 --- /dev/null +++ b/docs/tema3_datahandtering/statistikk.html @@ -0,0 +1,1674 @@ + + + + + + + + + Datahåndering III: Statistikk — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Datahåndering III: Statistikk

    + +
    + +
    +
    + +
    + +
    +

    Datahåndering III: Statistikk#

    +
    +

    Læringsutbytte

    +

    Etter å ha arbeidet med dette temaet, skal du kunne:

    +
      +
    1. bruke deskriptiv statistikk til å beskrive data med tall og visualiseringer

    2. +
    3. utføre regresjonsanalyse og tolke resultatene

    4. +
    +
    +
    +

    If your experiment needs a statistician, you need a better experiment.

    +

    —Fysikeren Ernest Rutherford (1871–1937)

    +
    +
    +

    Deskriptiv statistikk#

    +

    Vi kan bruke statistikk til å oppsummere, beskrive og tolke data. Vi skiller mellom to typer statistikk:

    +
      +
    1. Deskriptiv statistikk: oppsummere og beskrive data

    2. +
    3. Statistisk interferens: trekke slutninger fra data

    4. +
    +

    Vi skal mest se på deskriptiv statistikk her. La oss vende tilbake til pingvindataene våre. Vi kan få en enkel statistisk oversikt over datasettet vårt ved å bruke funksjonen describe.

    +
    +
    +
    import pandas as pd
    +
    +pingvindata = pd.read_csv("data/penguins.txt", delimiter = ",")
    +pingvindata.describe()
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    bill_length_mmbill_depth_mmflipper_length_mmbody_mass_g
    count342.000000342.000000342.000000342.000000
    mean43.92193017.151170200.9152054201.754386
    std5.4595841.97479314.061714801.954536
    min32.10000013.100000172.0000002700.000000
    25%39.22500015.600000190.0000003550.000000
    50%44.45000017.300000197.0000004050.000000
    75%48.50000018.700000213.0000004750.000000
    max59.60000021.500000231.0000006300.000000
    +
    +
    +

    Vi kan forklare disse størrelsene slik:

    +
      +
    • count = antall registrerte tilfeller

    • +
    • mean = gjennomsnittet for alle individer

    • +
    • std = standardavviket (dette skal vi se nærmere på seinere)

    • +
    • min = minste registrerte verdi

    • +
    • 25 % = “nedre kvartil”. Her har 25 % av pingvinene for eksempel en kroppsmasse mellom 3550 og minste verdi (2700).

    • +
    • 50 % = “midtre kvartil”. Her har 50 % av pingvinene for eksempel en kroppsmasse mellom 3550 og 4050.

    • +
    • 75 % = “øvre kvartil”. Her har 75 % av pingvinene for eksempel en kroppsmasse på 4750 eller under. Det betyr også at 25 % har en kroppsmasse på 4750 til maksverdien 6300.

    • +
    • max = høyeste registrerte verdi

    • +
    +

    Vi kan også finne mange av disse størrelsene ved å bruke ulike funksjoner:

    + +
    +

    Underveisoppgave

    +

    Prøv ut programmet ovenfor og utforsk de ulike variablene slik at du forstår hva alle de statistiske størrelsene betyr. Forklar begrepet kvartil.

    +
    +
    +

    Mål på spredning#

    +

    Det finnes mange måter å beskrive spredningen i en variabel på. Vi skal se på følgende måter:

    +
      +
    • Variasjonsbredde

    • +
    • Interkvartilbredde

    • +
    • Varians og standardavvik

    • +
    +

    Variasjonsbredde er et enkelt mål på spredning, nemlig differansen mellom største og minste verdi (\(x_{maks} - x_{min})\). De to andre målene må vi se litt nøyere på.

    +
    +

    Underveisoppgave

    +

    Regn ut variasjonsbredden i nebbdybde hos pingvinene.

    +
    +
    +

    Interkvartilbredde#

    +

    Vi har sett hvordan vi kan regne ut kvartiler.

    +
    +

    Kvartiler og persentiler

    +

    Kvartiler er fjerdedeler av et utvalg. For eksempel er nedre kvartil (\(Q_1\)) den høyeste verdien av en variabel som tilhører de 25 % minste verdiene innenfor en variabel. Midtre kvartil (\(Q_2\)) er verdien midt i datasettet, det vil si at 50 % av dataene ligger over og under dette punktet. Den midtre kvartilen kalles også for medianen. Tredje kvartil (\(Q_3\)) markerer verdien som 75 % av dataene ligger under (og de resterende 25 % av dataene ligger over).

    +

    Dersom vi bruker en vilkårlig prosent som ikke representerer en fjerdedel, kaller vi det en persentil.

    +
    +

    Differansen mellom første og tredje kvartil er et godt mål på spredning. Dette er et mål på spredningen til de 50 % midtre dataene, og påvirkes derfor ikke av data som ligger langt unna de andre dataene (såkalte “uteliggere”). Dette målet kalles interkvartilbredde (IQR) eller bare kvartilbredde:

    +

    \(IQR = Q_3 - Q_1\)

    +

    Kvartiler kan visualiseres enkelt med et boksplott:

    +
    +
    +
    import seaborn as sns
    +
    +sns.boxplot(data = pingvindata, x = "species", y = "bill_depth_mm")
    +
    +
    +
    +
    +
    <AxesSubplot:xlabel='species', ylabel='bill_depth_mm'>
    +
    +
    +../../_images/2f20ca85b4643f939e041a1d85e57cc0aff02bddcd62409e117ea3d553bd1451.png +
    +
    +

    Vi kan forklare dette plottet slik:

    +
      +
    • Den svarte linja midt i boksene er medianen.

    • +
    • 50 % av verdiene ligger innenfor boksene. Boksene markerer altså interkvartilområdet, fra \(Q_1\) til \(Q_3\).

    • +
    • Vi har to utstikkere på hver side av boksen. De viser \(IQR\cdot1.5 = 1.5(Q_3 - Q_1)\) i begge retninger.

    • +
    • Verdier som ligger utenfor disse utstikkerne, kalles uteliggere. Dette er unormalt store eller små verdier. Dette kan si oss noe om vi har mange unormale verdier eller om vi har noen få som vi kanskje kan fjerne ved nærmere statistisk analyse. Vi ser kun én uteligger hos Adelie-pingvinene, med unormalt dypt nebb.

    • +
    +
    +

    Underveisoppgave

    +

    Lag et boksplott over kroppsmasse som funksjon av øya pingvinene er funnet på. Identifiser eventuelle uteliggere.

    +
    + +

    Et alternativ til boksplott er fiolinplott. Prinsippet er ganske likt som med boksplott, men det viser i tillegg fordelingen av de ulike verdiene ved å angi “tynne” og “tykke” områder. Medianen markeres med en hvit prikk, og IQR med en tykk, svart linje. Uteliggere markeres ofte ikke i fiolinplott.

    +
    +
    +
    sns.violinplot(data=pingvindata, x='species', y='bill_depth_mm')
    +
    +
    +
    +
    +
    <AxesSubplot:xlabel='species', ylabel='bill_depth_mm'>
    +
    +
    +../../_images/074d577fc0c2bdb7c44c14c82e16ae6172a4972bb34f3cd8ab67039e705ad80d.png +
    +
    +
    +
    +
    +
    +

    Varians og standardavvik#

    +

    I motsetning til IQR, som tar utgangspunkt i medianen, tar varians og standardavvik utgangspunkt i gjennomsnittet. Varians (\(\sigma^2\)) er et mål på variasjonen i et datasett og skrives ofte som \(\sigma^2\). Det er definert som den gjennomsnittlige kvadrerte avstanden til gjennomsnittet av variabelen:

    +

    \(\sigma^2 = \frac{1}{n-1}\sum_{i=1}^n(x_i-\bar{x})^2\)

    +

    Her er n totalt antall målinger, \(x_i\) er hver måleverdi og \(\bar{x}\) er gjennomsnittet av alle måleverdier. Egentlig bør vi jo dele på \(n\) når vi skal finne gjennomsnittet av denne differansen. Men vi deler på \(n - 1\) istedenfor \(n\) fordi datasettet vårt inneholder et utvalg måledata fra en tenkt fullstendig populasjon. Når vi deler på \(n - 1\) får vi en større varians enn når vi deler på \(n\). En forklaring på dette er at dersom vi hadde samlet inn data fra hele populasjonen, eller gjort tusenvis av målinger av den samme parameteren, ville spredningen (variansen) av målingene vært litt mindre sammenliknet med når vi har færre datapunkter. Vi kaller derfor variansen som er definert ovenfor, for empirisk varians.

    +

    Kort oppsummert gjør vi følgende for å regne ut varians:

    +
      +
    1. Finner differansen mellom hver måleverdi/hvert datapunkt og trekker fra gjennomsnittet. Dette gir avstanden mellom et målepukt og den gjennomsnittlige verdien.

    2. +
    3. Kvadrerer differansen for å kun få positive verdier. Om vi ikke hadde gjort dette, ville mange negative og positive verdier utlignet hverandre, slik at for eksempel to ekstreme verdier på hver sin side av gjennomsnittet ville gitt 0 i varians.

    4. +
    5. Summerer alle de kvadrerte differansene og deler på antallet målinger (her antallet målinger minus 1). Dette gir den gjennomsnittlige variansen for hele variabelen.

    6. +
    +

    Siden vi kvadrerer avstanden mellom verdier og gjennomsnittet når vi regner ut varians, blir ofte variansen svært stor dersom det finnes noen verdier som ligger et stykke unna gjennomsnittet. I tillegg får den kvadrerte enheter (som \(g^2\) og \(mm^2\), og det er vanskelig å sammenlikne den med måledataene. Derfor er det vanligere å bruke standardavvik som et mål på spredning. Det er definert som den posive kvadratrota av variansen:

    +

    \(\sigma = \sqrt{\frac{1}{n-1}\sum_{i=1}^n(x_i-\bar{x})^2}\)

    +

    Vi kan enkelt finne variansen og standardavviket med Pandas. Pandas deler på \(n-1\), og ikke \(n\), slik som vi også har gjort.

    +
    +
    +
    varians = pingvindata["bill_depth_mm"].var()
    +standardavvik = pingvindata["bill_depth_mm"].std()
    +
    +
    +
    +
    +
    +

    Underveisoppgave

    +

    Forklar hva varians og standardavvik er. Lag to Python-funksjoner som regner ut henholdsvis gjennomsnitt og standardavvik. Funksjonene skal gi samme svar som std- og mean-funksjonen i Pandas.

    +
    +
    +
    +

    Visualisering av feil#

    +

    En enkel visualisering av standardavviket når vi gjør flere ulike målinger, er ved hjelp av usikkerhetsstolper. Usikkerhetsstolper kan vi bruke når vi har gjort flere målinger på samme variabel. Vi kan ta som eksempel et eksperiment der vi skal konstruere en standardkurve for magnesiumkonsentrasjonen i en vannprøve. Vi bruker en serie på 0.2, 0.3, 0.4, 0.5 og 0.6 \(\mu\)g/mL Mg\(^{2+}\) som vi analyserer tre ganger hver med et flammeatomabsorpsjonsspektrofotometer (for øvrig et nydelig ord!). Da har vi tre målinger for absorpsjon per konsentrasjon. Nedenfor ser du en måte å gjøre dette på. Vi bruker funksjonen errorbar som tar \(x\)-verdier, gjennomsnittet og standardavviket som parametre. I tillegg kan vi sette streker på toppen av feilen med capsize i en ønsket størrelse. Hvis vi ikke ønsker strekene mellom datapunktene i plottet ovenfor, kan vi legge inn argumentet fmt=’none’.

    +
    +
    +
    import numpy as np
    +import matplotlib.pyplot as plt
    +
    +konsentrasjon = [0.2, 0.3, 0.4, 0.5, 0.6]
    +absorbans = [[0.21, 0.22, 0.19], [0.26, 0.29, 0.24], [0.33, 0.33, 0.34], [0.41, 0.42, 0.45], [0.56, 0.61, 0.58]]
    +
    +standardavvik = []
    +snitt = []
    +
    +for element in absorbans:
    +    snitt.append(np.mean(element))
    +    standardavvik.append(np.std(element,  ddof = 1)) # ddof = 1 betyr at vi deler på n - 1.
    +
    +plt.errorbar(konsentrasjon, snitt, yerr = standardavvik, capsize=5)
    +plt.errorbar
    +plt.xlabel('Konsentrasjon ($\mu g/mL$)')
    +plt.ylabel('Absorbans')
    +plt.title('Magnesiuminnhold i vann')
    +plt.show()
    +
    +
    +
    +
    +../../_images/b8fca37aab4876351bc90beb83c2c19158aa00b445878da5d8224c668cf7b17b.png +
    +
    +

    Det finnes også tilsvarende plott i seaborn-biblioteket, som er enklere å bruke dersom vi har dataene som en data frame:

    +
    +
    +
    sns.pointplot(data=pingvindata,x="species", y="flipper_length_mm",  capsize=.1)
    +
    +
    +
    +
    +
    <AxesSubplot:xlabel='species', ylabel='flipper_length_mm'>
    +
    +
    +../../_images/e8ce4b1fd36c66752db69954058bfedc5712f4287e89d52a14f04caa5f46229e.png +
    +
    +
    +
    +

    Regresjon#

    +

    Alle måledata er diskrete verdier. Det betyr at de er ikke-kontinuerlige, altså at det ikke finnes uendelig mange verdier mellom punktene vi har. Vi representerer diskrete data som punkter dersom vi plotter det, mens kontinuerlige data/funksjoner plotter vi som linjer og kurver. Noen ganger kan vi derimot lage kontinuerlige modeller som representerer de diskrete dataene våre. En slik modell kan beskrive både verdier imellom datapunktene, men også utenfor datasettet vi har samlet. En enkel form for modellering er regresjon.

    +
    +

    Regresjon

    +

    Regresjon er en prosess der vi tilnærmer diskrete data med en kontinuerlig funksjonsmodell.

    +
    +

    La oss ta et eksempel der vi har brukt et spektrometer til å måle absorbansen til ulike standardløsninger med permanganationer \(MnO_4^{-}\). Vi har gjort dette fordi vi har en løsning med ukjent innhold av permanganationer. Da trenger vi å gjøre en lineær regresjon for å kunne avgjøre hvilken konsentrasjon absorbansen til den ukjente prøva tilsvarer. Programmet nedenfor lager en standardkurve/kalibreringskurve med funksjonen polyfit fra numpy-biblioteket. Denne funksjonen bruker minste kvadraters metode til å tilpasse funksjonsverdier til datapunktene på en måte som gir minst mulig varians.

    +
    +
    +
    import numpy as np
    +import matplotlib.pyplot as plt
    +
    +permanganat = [4.0, 8.0, 12.0, 16.0, 20.0] # konsentrasjon i ppm
    +absorbans = [0.18, 0.32, 0.51, 0.68, 0.85]
    +
    +reg = np.polyfit(permanganat, absorbans, 1)  # får koeffisientene a og b i en lineær regresjon (grad 1)
    +x = np.linspace(0, 25, 1000)                 # nye x-verdier for regresjonslinja
    +y = np.polyval(reg, x)                       # gir et uttrykk på formen y = ax + b, der x = permanganatkonsentrasjonen
    +
    +plt.scatter(permanganat,absorbans,label='Datapunkter')
    +plt.plot(x, y, color = 'red',label='Tilpasset kurve')
    +plt.legend()
    +plt.title('Standardkurve')
    +plt.xlabel('Konsentrasjon av MnO$_4^-$ (ppm)')
    +plt.ylabel('Absorbans')
    +plt.grid()
    +
    +
    +
    +
    +../../_images/3960a309d73a241d2315cf289a1ff61fce34d8adc41b3b62b015176d668cad9f.png +
    +
    +

    Funksjonen polyfit utfører polynomregresjon på dataene våre, og tar som argument \(x\)- og \(y\)-verdiene i datasettet, og deretter graden av polynomet. Her har vi brukt grad 1 for lineær regresjon. Dette gir en array med koeffisientene a og b for uttrykket \(y = ax + b\). Tilsvarende vil en andregradsregresjon gi koeffisientene a, b og c for \(ax^2 + bx + c\) og så videre. Vi kan dermed bruke disse koeffisientene videre til å lage nye \(y\)-verdier basert på de opprinnelige \(x\)-verdiene. Til det kan vi bruke funksjonen polyval, som tar to parametre: koeffisientene som er gitt av polyfit-funksjonen og de nye x-verdiene som vi skal regne ut funksjonsverdier til.

    +

    La oss si at den ukjente prøva med permanganationer ga en absorbans på 0.40. Vi kan bruke regresjonskurven vår til å finne hva slags konsentrasjon dette tilsvarer på følgende måte:

    +
    +
    +
    import numpy as np
    +import matplotlib.pyplot as plt
    +
    +permanganat = [4.0, 8.0, 12.0, 16.0, 20.0] # konsentrasjon i ppm
    +absorbans = [0.18, 0.32, 0.51, 0.68, 0.85]
    +ukjent_abs = 0.40
    +
    +# Gjør regresjonen
    +reg = np.polyfit(permanganat, absorbans, 1)  # får koeffisientene a og b i en lineær regresjon (grad 1)
    +x = np.linspace(0, 25, 1000)                 # nye x-verdier for regresjonslinja
    +y = np.polyval(reg, x)                       # gir et uttrykk på formen y = ax + b, der x = permanganatkonsentrasjonen
    +
    +# Regner ut den ukjente konsentrasjonen
    +ukjent_kons = (ukjent_abs - reg[1])/reg[0]
    +print("Konsentrasjonen til permanganat =", round(ukjent_kons,1), "ppm.")
    +
    +plt.scatter(permanganat,absorbans,label='Datapunkter')
    +plt.plot(x, y, color = 'red',label='Tilpasset kurve')
    +plt.plot(ukjent_kons, ukjent_abs, linestyle = " ", marker = "o", color = 'seagreen', label = "Ukjent løsning")
    +plt.legend()
    +plt.title('Standardkurve')
    +plt.xlabel('Konsentrasjon av MnO$_4^-$ (ppm)')
    +plt.ylabel('Absorbans')
    +plt.grid()
    +
    +
    +
    +
    +
    Konsentrasjonen til permanganat = 9.5 ppm.
    +
    +
    +../../_images/8b8100aaa88d3519be2e0043360c4f3c0b35bdf7079122831a6d3e8cfd6cd7b0.png +
    +
    +
    +

    Underveisoppgave

    +

    Fritt klor (\(Cl_2\)) finnes i en del drikkevann fordi klorforbindelser blir tilsatt klorforbindelser for å desinfisere vannet. I programmet nedenfor har vi lagt inn en serie målinger som er gjort på standardløsninger av konsentrasjonen av fritt klor i vann gitt i ppm. Gjør en regresjon av dataene og lag en standardkurve. Regn ut konsentrasjonen av fritt klor i en drikkevannsprøve med absorbans 0.656 ppm.

    + +
    +
    +

    Løsningsforslag

    + +
    +

    Når vi har utført regresjon, kan vi også forutsi datapunkter som er utenfor datapunktene våre. Dette kaller vi ekstrapolering. Ved å ekstrapolere kan vi forutsi hvordan et system har vært eller kommer til å bli. En skal derimot være svært forsiktig med å trekke slutninger basert på ekstrapolering! Det kan likevel være en god indikasjon på trender og utviklingen i et system.

    +

    Vi kan også lage visualiseringer med automatiske regresjonskurver. La oss vende tilbake til pingvinene våre. For å se om det kan være noen sammenhenger som er verdt å lage en modell av, kan vi enkelt visualisere mange ulike variabler mot hverandre ved å bruke et parplott (pairplot) fra seaborn-biblioteket:

    +
    +
    +
    import seaborn as sns
    +
    +sns.pairplot(data = pingvindata, hue = "species")
    +
    +
    +
    +
    +
    <seaborn.axisgrid.PairGrid at 0x28083e73220>
    +
    +
    +../../_images/c9bfc9beb463a18026d32d86a2b0228a1f77c50924b74e339e89e13fdf191e63.png +
    +
    +

    Vi tar utgangspunkt i kroppsmasse og vingelengde, som ser ut til å være lineært avhengig av hverandre. Et plott med regresjonslinje kan vi lage ved å bruke funksjonen lmplot (eller regplot) fra seaborn-biblioteket:

    +
    +
    +
    sns.lmplot(data = pingvindata, x = "body_mass_g", y = "flipper_length_mm")
    +
    +
    +
    +
    +
    <seaborn.axisgrid.FacetGrid at 0x280879f8430>
    +
    +
    +../../_images/3f36174fe5766039b2e491b78bec06ee11ba7a5f79f07819526a61e80248ce3d.png +
    +
    +

    Vi ser at vi får en regresjonslinje med et svakt blått område på hver side av linja. Dette området indikerer usikkerheten i verdiene. Desto større dette området er, desto mer usikkert er det at regresjonslinja er en god modell i dette området. Vi kan gjøre dette tydeligere ved å velge to variabler som ikke varierer så godt lineært:

    +
    +
    +
    sns.lmplot(data = pingvindata, x = "bill_depth_mm", y = "flipper_length_mm")
    +
    +
    +
    +
    +
    <seaborn.axisgrid.FacetGrid at 0x28087a06e20>
    +
    +
    +../../_images/e11c4f093345676678ed535b99d25e2358b6116c11b67e4e29faa82ad339bab2.png +
    +
    +

    Vi kan også gjøre regresjon på ulike variabler, slik som ulike arter, for seg:

    +
    +
    +
    sns.lmplot(data = pingvindata, x = "bill_depth_mm", y = "flipper_length_mm", hue = "species")
    +
    +
    +
    +
    +
    <seaborn.axisgrid.FacetGrid at 0x280864bb970>
    +
    +
    +../../_images/0491e1e92319233093fd5e7fead7066803010bfb0e80f9c11e344fbf8313ef50.png +
    +
    +
    +
    +

    Korrelasjon#

    +

    Korrelasjoner kan brukes til å analysere sammenhenger mellom parametre. Korrelasjon beregnes som en verdi mellom -1 og 1. En verdi som brukes ofte som mål på korrelasjon, er Pearsons korrelasjonskoeffisient. Positiv korrelasjon betyr at det er en proporsjonal sammenheng mellom parametrene, og en negativ korrelasjon betyr at det er en omvendt proporsjonal sammenheng. Desto større absoluttverdien til korrelasjonen er, desto større sammenheng er det mellom parametrene. Vi kan visualisere korrelasjon gjennom et korrelasjonsplott:

    +
    +
    +
    corr = pingvindata.corr()     # Regner ut korrelasjonskoeffisientene
    +sns.heatmap(corr, annot=True) # Lager visualisering. Parameteren annot = True gir tallene i boksene.
    +plt.xticks(rotation=45)       # Roterer x-akseteksten 45 grader
    +plt.show()
    +
    +
    +
    +
    +../../_images/1ea2efb14933094823172c8e5321cb492583dcfdec0cf791340323982ed25a86.png +
    +
    +
    +
    +
    pingvindata.corr()
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    bill_length_mmbill_depth_mmflipper_length_mmbody_mass_g
    bill_length_mm1.000000-0.2350530.6561810.595110
    bill_depth_mm-0.2350531.000000-0.583851-0.471916
    flipper_length_mm0.656181-0.5838511.0000000.871202
    body_mass_g0.595110-0.4719160.8712021.000000
    +
    +
    +

    Vi ser for eksempel at det er ganske stor positiv korrelasjon mellom nebblengde og lengden på vingene (luffene). Det betyr at dersom en pingvin har langt nebb, har den ofte også lange vinger. Det er derimot negativ korrelasjon mellom nebbdybde og vingelengde, som betyr at desto dypere nebb, desto kortere vinger har pingvinen.

    +

    Det er derimot viktig å ikke blande korrelasjon med årsak-virkning (kausalitet). Den ene tingen forklarer ikke nødvendigvis den andre (selv om det kan gjøre det), det er bare en sammenheng mellom parametrene.

    +
    +

    Underveisoppgave

    +

    I programmet nedenfor finner du datasettet “iris.txt”. Les inn datasettet og gjør en korrelasjonsanalyse av variablene. Hvilke faktorerer korrelerer positivt og negativt med hverandre? Finnes det logiske forklaringer på det?

    + +
    + +
    +
    +

    Videoer#

    +

    I videoen nedenfor kan du få en innføring eller repetisjon i den grunnleggende teorien bak regresjonsanalyse:

    +
    +
    + + + + +
    + + + + + + +
    + + + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/tema4_algoritmer/algoritmer.html b/docs/tema4_algoritmer/algoritmer.html new file mode 100644 index 00000000..98ad8a9d --- /dev/null +++ b/docs/tema4_algoritmer/algoritmer.html @@ -0,0 +1,1449 @@ + + + + + + + + + Matematiske algoritmer og stokastiske simuleringer — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + + + +
    + +
    +

    Matematiske algoritmer og stokastiske simuleringer#

    +
    +

    Læringsutbytte

    +

    Etter å ha arbeidet med dette temaet, skal du kunne:

    +
      +
    1. forklare noen matematiske algoritmer

    2. +
    3. programmere matematiske algoritmer

    4. +
    5. utføre og tolke stokastiske simuleringer

    6. +
    +
    +

    Algoritmer er presise, systematiske oppskrifter, og vi kjenner mange eksempler fra hverdagen. Eksempler er strikkeoppskrifter, kakeoppskrifter og algoritmene som gir oss anbefalte filmer på Netflix og annonser på Facebook. I matematikk er algoritmer framgangsmåter som lar oss løse et matematisk problem. Vi skal her se på noen gamle, klassiske matematiske algoritmer som har fått en renessanse med datamaskinen. Vi skal også se på hvordan vi bruker tilfeldige tall til å gjøre simuleringer. Først og fremst skal vi forstå hvordan algoritmene fungerer og hva de kan brukes til. Vi skal også prøve å programmere noen av algoritmene.

    +
    +

    Primtall med Eratosthenes sil#

    +

    La oss først se på en gammel metode som kan brukes til å finne primtall. Eratosthenes sil er en metode som ble utviklet av den greske matematikeren Eratosthenes i ca. 200 f. Kr. Metoden er enkel og systematisk, og er derfor også programmerbar. Metoden fungerer slik:

    +
      +
    1. Lag ei liste av påfølgende heltall fra 2 til 100 med ti tall på hver rad (bortsett fra den første). Se tabellen nedenfor.

    2. +
    3. La p til å begynne med være lik 2, det første primtallet.

    4. +
    5. Stryk ut alle multipler av p som er større enn eller lik \(p^2\).

    6. +
    7. Finn det første tallet større enn p som står igjen på lista. Dette tallet er det neste primtallet. Sett p lik dette tallet.

    8. +
    9. Gjenta trinn 3 og 4 inntil \(p^2\) er større enn 100.

    10. +
    11. Alle gjenværende tall på listen er primtall!

    12. +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

    51

    52

    53

    54

    55

    56

    57

    58

    59

    60

    61

    62

    63

    64

    65

    66

    67

    68

    69

    70

    71

    72

    73

    74

    75

    76

    77

    78

    79

    80

    81

    82

    83

    84

    85

    86

    87

    88

    89

    90

    91

    92

    93

    94

    95

    96

    97

    98

    99

    100

    +
    +

    Underveisoppgave

    +

    Utfør algoritmen for hånd. Å programmere algoritmen er litt ufordrendende, men du kan prøve på det når du er ferdig med å gjøre algoritmen for hånd.

    +
    + +
    +
    +

    Kvadratrøtter med gammel babylonsk algoritme#

    +

    En annen gammel algoritme kommer fra Babylonia, og er godt over 2000 år gammel. Den ble brukt til å finne kvadratrota av et tall. Du kan se utledning av algoritmen i videoen nedenfor:

    + +

    Algoritmen fungerer slik:

    +

    Gjør en kvalifisert gjetning på hva \(\sqrt{a}\) er, og kall gjetningen \(x_0\). Gjenta følgende algoritme \(n\) ganger:

    +

    \(x_{n+1} = \frac{1}{2}\left(x_n+\frac{a}{x_n}\right)\)

    +
    +

    Underveisoppgave

    +

    Test algoritmen på \(\sqrt{12} \approx 3.46410161514\). Regn ut feilen for hver iterasjon (gjentakelse i løkka). Eksperimenter med algoritmen på andre tall.

    +
    +Kvadratrøtter
    +
    +

    Stokastiske simuleringer: Monte-Carlo-metoder#

    +

    En stokastisk simulering er en simulering der tilfeldige hendelser inntreffer med en viss sannsynlighet. Det er mange prosesser i naturen som er tilfeldige eller delvis tilfeldige, f.eks. radioaktivt henfall, mutasjoner og diffusjon. Slike simuleringer er oppkalt etter kasinoet i Monte Carlo, og kalles Monte Carlo-metoder, fordi de benytter tilfeldige tall som grunnlag for det de skal tilnærme. Det er enormt mange anvendelser av MC-metoder. Vi skal se på noen av dem her. Men først skal vi ta en kikk på hvordan vi kan bruke simuleringer til å illustrere hva sannsynlighet er. Da trenger vi å kunne generere tilfeldige tall på datamaskinen. Dette kan vi gjøre slik:

    +
    +
    +
    import numpy as np
    +
    +heltall = np.random.randint(1, 10)   # lager et tilfeldig heltall i intervallet [1, 9]
    +flyttall = np.random.uniform(-1, 1) # Lager et tilfeldig flyttall mellom -1 og 1
    +
    +
    +
    +
    +
    +

    Underveisoppgave

    +

    Lag en funksjon som tar som parameter antallet ganger n du skal kaste en terning. Funksjonen skal returnere ei liste med n terningkast.

    +
    + +
    +
    +

    Sannsynlighetsbegrepet#

    +

    Vi bruker sannsynlighet til vurderinger av hva vi skal gjøre i hverdagen hele tida. Er det trygt å gå over gata? Bør jeg spille Lotto? Er det lurt å klatre opp denne bratte, glatte fjellskrenten? Men hva er sannsynlighet egentlig? La oss prøve å bruke programmering for å finne ut av dette.

    +
    +
    +

    Sannsynlighet og nedarving#

    +

    Vi kan også bruke tilfeldige tall til å modellere enkel nedarving av egenskaper. Her skal vi bruke funksjonen choice istedenfor randint, som plukker ut et tilfeldig element fra ei liste, for eksempel slik:

    +
    +
    +
    from pylab import *
    +
    +genotype_far = ["B", "b"]
    +print(choice(genotype_far))
    +
    +
    +
    +
    + + +Øyenfarge
    +
    +

    Tilnærming av pi med Monte Carlo-metoder#

    +

    Selv om \(\pi\) er et bestemt tall, kan vi faktisk tilnærme \(\pi\) med tilfeldige tall. En Monte Carlo-algoritme for å estimere pi baserer seg på følgende:

    +
      +
    1. \(A=\pi r^2\), så hvis \(r = 1\), er \(A = \pi\).

    2. +
    3. Lag et kvadrat med sidelengder = 2 og en innskrevet sirkel med radius = 1:

    4. +
    + +
      +
    1. Trekk N tilfeldige tall av et x-koordinat og et y-koordinat.

    2. +
    3. Sjekk om \((x, y)\) ligger inni eller på sirkelen (\(x^2+y^2\leq 1\)).

    4. +
    5. Sett M lik antall punkter som treffer sirkelen.

    6. +
    7. Nå er \(\pi = A_{sirkel} = A_{kvadrat} \cdot \frac{M}{N}\)

    8. +
    9. Beregn \(\pi\) og regn avviket fra den «eksakte» verdien.

    10. +
    +
    +
    +

    Brownske bevegelser (enkel diffusjon)#

    +

    Vi skal her se på en MC-tilnærming til tilfeldig bevegelse av store partikler i løsning. Dette er en enkel modell for diffusjon av ikke-reagererende partikler som kan beskrive såkalte Brownske bevegelser. Brownske bevegelser ble først beskrevet av botanisten Robert Brown i 1827. Han oppdaga at små pollenkorn i løsning beveget seg fram og tilbake i et tilfeldig mønster. I dag veit vi at dette skyldes at de små vannmolekylene dytter på pollenkornet i mange tilfeldige retninger. Det samme gjelder større partikler som enkelte luktmolekyler (parfyme) og røyk, som vi jo kan lukte og noen ganger observere direkte i makroskala.

    +Rutenett1 +

    For å simulere det som skjer på mikroskala, kan vi lage et program der vi for hvert tidssteg trekker tilfeldige tall som bestemmer retningen til partikkelen. Vi kan først se på hvordan vi kan gjøre dette ved å konstruere et rutenett der en partikkel kan bevege seg i fire retninger (opp, ned, høyre og venstre). Skråbevegelser kan beskrives som en kombinasjon av disse bevegelsene:

    +Rutenett1 +

    Disse bevegelsene kan vi representere med posisjonsarrayer \(x\) og \(y\). Posisjonen kan starte i origo, \((0, 0)\), og så kan vi øke eller redusere med 1 i en tilfeldig retning. Dette kan vi gjøre ved å trekke et tilfeldig tall mellom 1 og 4 som representerer bevegelse i rutenettet slik:

    +Rutenett2 +

    Hvis vi for eksempel trekker tallet 4, vil partikkelen bevege seg én rute nedover i \(y\)-retning. Da trekker vi fra 1 i arrayen som inneholder \(y\)-koordinatene.

    +
    +

    Underveisoppgave

    +

    Bruk programmet nedenfor som utgangspunkt for å simulere bevegelsen til partikkelen:

    + +
    +
    +

    Underveisoppgave

    +

    Bruk skilpaddegrafikk (turtle) til å simulere bevegelsen til partikkelen. Du skal lage en skilpadde som beveger seg i en tilfeldig retning (tilfeldig vinkel) en bestemt avstand (for eksempel 5) for hvert tidssteg.

    + +
    +
    +
    +

    Oppgaver#

    +
    +

    Oppgave 1

    +

    Utled og forklar den gamle babylonske algoritmen for å finne kvadratrøtter.

    +
    +
    +

    Oppgave 2

    +

    Lag spillet Yatzy.

    +
    +
    +

    Oppgave 3

    +

    Bruk simuleringer til å regne ut hva sannsynligheten for at det i vår klasse er minst 2 personer som har samme bursdag. Hvilke forutsetninger må ta gjøre for å utføre simuleringen?

    +
    +
    +

    Oppgave 4 (utfordring)

    +

    Det er 100 plasser i et fullbooket fly, men fordi du kommer for seint, er du den siste personen i køen som kommer inn. Den første i køen er litt idiot, og velger derfor en tilfeldig plass på flyet. Så kommer 98 Hell’s Angels (én etter én). Disse bikergjengmedlemmene er ganske tydelige, og så fort de ser noen på plassen deres, grynter de, og idioten (som sitter i setet deres) må flytte seg (tilfeldig) til et annet sted. Til slutt, når alle er inne, så kommer du.

    +
      +
    1. Hva er sannsynligheten for at noen sitter i setet ditt?

    2. +
    3. Hvor mange ganger i snitt bytter den første personen sete?

    4. +
    +
    +
    +
    + + + + +
    + + + + + + +
    + + + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/tema4_algoritmer/derivasjon.html b/docs/tema4_algoritmer/derivasjon.html new file mode 100644 index 00000000..0afe85a0 --- /dev/null +++ b/docs/tema4_algoritmer/derivasjon.html @@ -0,0 +1,1545 @@ + + + + + + + + + Numerisk derivasjon — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + + + +
    + +
    +

    Numerisk derivasjon#

    +
    +

    Læringsutbytte

    +

    Etter å ha arbeidet med denne delen av emnet, skal du kunne:

    +
      +
    1. forklare den teoretisk bakgrunnen for numerisk derivasjon, og forskjellen på numerisk og analytisk derivasjon

    2. +
    3. implementere framoverdifferansen, bakoverdifferansen og sentraldifferansen for numerisk derivasjon

    4. +
    5. derivere funksjoner og data

    6. +
    +
    +
    +

    Derivasjonsbegrepet#

    +

    Derivasjon handler om endring. Den deriverte kan beskrive stigningen og forandringen i et forløp. Nærmere bestemt handler det om momentan endring, altså endringen mellom to tilstander (funksjonsverdier) over en svært liten endring i en annen tilstand:

    +
    +\[f'(x) = \frac{df}{dt} = \lim_{\Delta x \rightarrow 0} \frac{f(x+dx) - f(x)}{dx}\]
    +

    Vi har derfor nytte av derivasjon i mange tilfeller der vi ønsker å beskrive en utvikling. Vi kan derimot ikke alltid derivere analytisk for hånd, så det er en stor verdi i å beherske numerisk derivasjon. Da kan vi enklest tilnærme den analytisk deriverte med en numerisk derivert:

    +
    +

    Numerisk derivasjon (framoverdifferansen)

    +

    For en liten verdi av \(dx\) kan vi tilnærme den førstederiverte slik:

    +
    +\[f'(x) = \frac{df}{dx} \approx \frac{f(x+dx) - f(x)}{dx}\]
    +
    +

    der vi tilnærmer grenseverdien med en svært liten verdi av dx. Her skal vi se på denne metoden og andre metoder som kan brukes til å tilnærme den deriverte numerisk.

    +
    +

    Underveisoppgave

    +

    Bruk definisjonen ovenfor og regn ut \(f'(1)\) for \(f(x) = 2x + 2\). Sett \(dx = 1\cdot 10^{-8}\).

    +
    + +

    Løsningsforslaget ovenfor viser en enkel måte å implementere den numeriske deriverte på. Det kan også være nyttig å kunne lage metoden som en funksjon:

    +
    +
    +
    def deriver(f, x, dx = 1E-8):
    +    dy = f(x + dx) - f(x)
    +    return dy/dx
    +
    +
    +
    +
    +

    Legg merke til at vi ikke deriverer symbolsk. Det betyr at vi ikke får en annen funksjon når vi deriverer en funksjon. Vi får bare funksjonsverdier. Vi må altså deriverere i gitte punkter, for eksempel \(f'(1)\) eller \(f'(-5)\). Dersom vi ønsker å visualisere den deriverte til en funksjon, må vi derfor derivere funksjonen i flere punkter. Dette kan vi gjøre vektorisert ved hjelp av arrayer:

    +
    +
    +
    import numpy as np
    +import matplotlib.pyplot as plt
    +
    +def f(x):# Definerer en funksjon vi skal derivere
    +    return 3*x**3 + x**2 - 1
    +
    +x = np.linspace(-2,2,100)
    +y = f(x)
    +yder = deriver(f,x)
    +
    +plt.plot(x,y,label="f(x)") # Plotter funksjonen
    +plt.plot(x,yder,label="f'(x)") # Plotter den deriverte funksjonen
    +plt.xlabel("x")
    +plt.ylabel("y")
    +plt.legend()
    +plt.show()
    +
    +
    +
    +
    +../../_images/b694b5603e6688126896a8a7f524f61588c3847cfd9a0e085207d59c4ff919ac.png +
    +
    +
    +
    +

    Feilanalyse#

    +

    La oss nå ta en titt på hvilke verdier av \(\Delta x\) som gir best resultat. Det må vel være den verdien som ligger nærmest 0, altså en så liten verdi som mulig – eller? La oss teste dette ved å skrive ut den deriverte for ulike verdier av \(\Delta x\):

    +
    +
    +
    def f(x):
    +    return 2*x**2 + x - 5
    +
    +def fder_analytisk(x):
    +    return 4*x + 1
    +
    +x = 1
    +delta_x = [10**-i for i in range(1,18)] # liste med verdier fra 10^-18 til 10^-1
    +analytisk = fder_analytisk(x)
    +
    +for i in range(len(delta_x)):
    +    numerisk = deriver(f, x, delta_x[i]) 
    +    feil = abs(numerisk-analytisk)/analytisk * 100
    +    print("For delta_x =", delta_x[i],"er feilen:", feil, "%")
    +
    +
    +
    +
    +
    For delta_x = 0.1 er feilen: 4.000000000000092 %
    +For delta_x = 0.01 er feilen: 0.40000000000048885 %
    +For delta_x = 0.001 er feilen: 0.03999999998569592 %
    +For delta_x = 0.0001 er feilen: 0.003999999920267783 %
    +For delta_x = 1e-05 er feilen: 0.00040000068821655077 %
    +For delta_x = 1e-06 er feilen: 3.999977025159751e-05 %
    +For delta_x = 1e-07 er feilen: 4.010780685348436e-06 %
    +For delta_x = 1e-08 er feilen: 6.07747097092215e-07 %
    +For delta_x = 1e-09 er feilen: 8.274037099909037e-06 %
    +For delta_x = 1e-10 er feilen: 8.274037099909037e-06 %
    +For delta_x = 1e-11 er feilen: 8.274037099909037e-06 %
    +For delta_x = 1e-12 er feilen: 0.008890058234101161 %
    +For delta_x = 1e-13 er feilen: 0.07992778373591136 %
    +For delta_x = 1e-14 er feilen: 0.524016993585974 %
    +For delta_x = 1e-15 er feilen: 6.581410364015028 %
    +For delta_x = 1e-16 er feilen: 100.0 %
    +For delta_x = 1e-17 er feilen: 100.0 %
    +
    +
    +
    +
    +

    Vi ser at “store” verdier som 0.1 og 0.01 gir en del feil. Men vi ser også faktisk at nøyaktigheten er størst ved \(dx = 10^{-8}\), og at den synker både med økende og med minkende \(dx\). Og attpåtil gir \(dx \leq 10^{-16}\) null som svar! Dette gir naturlig nok en feil på 100 %, siden den analytiske verdien er 5.

    +

    Vi forventer kanskje ikke dette resultatet. Dersom vi kun ser på definisjonen av den deriverte, er det ikke spesielt logisk at det skal slå slik ut. Men det hele handler om at tall ikke er representert eksakt i en datamaskin, og når datamaskinen skal operere med svært små tall, kan det bli en liten avrundingsfeil når den regner med tallene. Denne avrundingsfeilen gjør at vi får feil dersom vi velger for små verdier av \(dx\). Dersom vi gjør en mer generell feilanalyse, viser det seg at \(10^{-8}\) er en god verdi å velge her.

    +
    +

    Underveisoppgave

    +

    Lag et plott med feilen som funksjon av dx med utgangspunkt i programmet ovenfor. Bruk logaritmiske akser – dette får resultatene tydeligere fram. Du kan lage logaritmiske akser slik:

    +
    plt.yscale('log')
    +plt.xscale('log')
    +
    +
    +
    + +
    +
    +

    Andre tilnærminger#

    +

    Tilnærmingen til den deriverte som vi har sett på, tar utgangspunkt i punktene \((x, f(x))\) og \((x+dx, f(x+dx))\) for å regne ut den momentane vekstfarten (altså den deriverte) i punktet \(x\). Men vi kan like godt bruke andre punkter. Metoden vi har sett på, kalles framoverdifferansen fordi den tar utgangspunkt i punktet \(x\) og neste punkt \(x + dx\). Tilsvarende kan vi ta utgangspunkt i punktet \(x\) og forrige punkt \(x - dx\). Dette kaller vi bakoverdifferansen. Bakoverdifferansen gir samme feil som framoverdifferansen, men er teoretisk nyttig for å utlede andre metoder.

    +
    +

    Numerisk derivasjon (bakoverdifferansen)

    +

    For en liten verdi av \(dx\) kan vi tilnærme den førstederiverte slik:

    +
    +\[\frac{df}{dx} \approx \frac{f(x) - f(x-dx)}{dx}\]
    +
    +

    En metode som derimot gir mindre feil enn både framover- og bakoverdifferansen, er sentraldifferansen. Det er en slags kombinasjon av framover- og bakoverdifferansen, der vi tar utgangspunkt i gjennomsnittet (midtpunktet) av \(x+dx\) og \(x-dx\).

    +
    +

    Numerisk derivasjon (sentraldifferansen)

    +

    For en liten verdi av \(dx\) kan vi tilnærme den førstederiverte slik:

    +
    +\[\frac{df}{dx} \approx \frac{f(x+dx) - f(x-dx)}{2\cdot dx}\]
    +
    + +
    +

    Underveisoppgave

    +

    Implementer bakover- og sentraldifferansen som Python-funksjoner. Gjør en feilanalyse med de tre ulike tilnærmingene for ulike verdier av \(\Delta x\). Bruk funksjonen \(f(x) = \sin{(x)}\) og sammenlikn med den analytiske verdien av den deriverte, \(f'(x) = \cos{(x)}\)

    +
    +
    +
    +

    Numerisk derivasjon av data#

    +

    Nå kommer vi til den nyttigste delen av numerisk derivasjon, nemlig derivasjon av diskrete data. Vi kan derivere på samme måte som vi gjorde med kontinuerlige funksjoner, men vi har gitt en \(dx\) som er gitt av avstanden mellom datapunktene våre. Hvis målefrekvensen er lav, blir \(dx\) høy, og motsatt. La oss se på hvordan vi kan derivere noen posisjonsdata:

    +
    +
    +
    import pandas as pd
    +
    +# Leser og sjekker ut dataene
    +data = pd.read_csv("https://raw.githubusercontent.com/andreasdh/NAT3000/master/docs/datafiler/posisjon.txt")
    +data.head()
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    tid_sposisjon_m
    00.000000.000000
    10.010010.000060
    20.020020.000240
    30.030030.000541
    40.040040.000962
    +
    +
    +
    +
    +
    # Plotter dataene
    +import matplotlib.pyplot as plt
    +
    +x = data["tid_s"]
    +y = data["posisjon_m"]
    +
    +plt.scatter(x, y)
    +plt.title("Bevegelse av legeme")
    +plt.xlabel("Tid (s)")
    +plt.ylabel("Posisjon (m)")
    +plt.show()
    +
    +
    +
    +
    +../../_images/43367e1b17db03e1ebd10b514bcf75e643ca58391dd8042f470d8d3ac8953b4f.png +
    +
    +

    Husk at \(v(t) = s'(t)\). Hvis vi deriverer, får vi altså farten til legemet:

    +
    +
    +
    dydx = []
    +for i in range(len(y)-1):
    +    dy = y[i+1]-y[i]
    +    dx = x[i+1]-x[i]
    +    der = dy/dx
    +    dydx.append(der)
    +
    +dydx.append(None)
    +plt.plot(x, y, label='Posisjon (m)')
    +plt.plot(x, dydx, label='Fart (m/s)')
    +plt.xlabel('Tid (s)')
    +plt.legend()
    +plt.show()
    +
    +
    +
    +
    +../../_images/3a989f5d740b082f18625ed4d7e8426c87c004fc5943d6a88f599e931cff1bed.png +
    +
    +

    I løkka bruker vi samme framgangsmåte som vi gjorde da vi deriverte funksjoner, men nå tar vi verdiene fra ei liste med verdier. Vi kan kun kjøre løkka til lengden av lengden av listene minus 1, fordi vi skal ta forskjellen mellom verdier. Da blir det nemlig én verdi mindre enn i y- og x-listene. Derfor legger vi til en ekstra verdi “None” til slutt i lista, slik at alle listene blir like lange.

    +

    Som du ser, kan vi benytte numerisk derivasjon på både kontinuerlige funksjoner og diskrete data. Hovedpoenget er at vi finner ut noe om endringen i en funksjon eller i et datasett. Og desto mindre dx er, desto bedre tilnærming er denne endringen til den momentante endringen i et punkt, altså den deriverte.

    +
    +

    Didaktisk oppgave

    +
      +
    1. Kan programmering og numeriske metoder være en måte å forstå derivasjon på? I så fall hvordan?

    2. +
    3. I denne delen har du sett på enkel numerisk derivasjon, feilanalyse, ulike tilnærminger til den deriverte og derivasjon av diskrete data. Hvilke deler av dette egner seg for elever, og i hvilke(n) sammenheng(er)?

    4. +
    +
    +
    +
    +

    Derivasjon med numeriske biblioteker#

    +

    Selvfølgelig har noen også lagd funksjoner som kan derivere for oss. Vi finner dem i scipy-biblioteket. Funksjonen derivative finner den numerisk deriverte ved hjelp av midtpunktstilnærmingen:

    +
    +
    +
    from scipy.misc import derivative
    +import numpy as np
    +
    +def f(x):
    +    return x**2 - 4
    +
    +derivert = derivative(f, 1)
    +print("f'(1) =", derivert)
    +
    +
    +
    +
    +
    f'(1) = 2.0
    +
    +
    +
    +
    +
    +
    +

    Oppgaver#

    +
    +

    Oppgave 1

    +

    Beregn f’(1) numerisk for følgende funksjoner. Kontroller ved å derivere for hånd.

    +
      +
    1. \(f(x) = x^2 - 4x + 5\)

    2. +
    3. \(f(x) = e^x\)

    4. +
    5. \(f(x) = \sqrt{\ln(x)}\)

    6. +
    +
    +
    +

    Oppgave 2

    +

    Skriv om funksjonen deriver slik at dx har en standardverdi. Velg en standardverdi som sannsynligvis vil gi gode resultater.

    +
    def deriver(f, x, dx = 1E-8):
    +    dy = f(x + dx) - f(x)
    +    return dy/dx
    +
    +
    +
    +
    +

    Oppgave 3

    +

    En partikkel følger posisjonsfunksjonen \(x(t) = t^3 + \frac{1}{3}\cdot t\). Plott både posisjon, hastighet og akselerasjon for \(t = [0,10]\). Husk at \(v(t) = s'(t)\) og \(a(t) = v'(t)\).

    +
    +
    +

    Oppgave 4

    +

    Forklar hva som er forskjellen mellom analytisk og numerisk derivasjon.

    +
    +
    +

    Oppgave 5

    +

    Temperaturen \(T(t)\) (i celsius) etter \(t\) minutter til en nylig lagd te følger denne modellen, som vi har kommet fram til ved regresjon av eksperimentelle data:

    +
    +\[T(t) = 70e^{-0.065t}\]
    +

    a) Bruk Newtons kvotient for å tilnærme den deriverte til \(T(t)\) for 1000 jevnt fordelte verdier av \(t\) i intervallet \([0, 60]\) +b) Plott resultatet fra a) sammen med grafen for \(T(t)\). Bruk merkelapper (labels og legend) for grafene. +c) Hvor mye synker temperaturen med ved element nr. 42 i lista over verdier for \(t\) (vi teller med 0-te element)?

    +
    +
    +

    Oppgave 6

    +

    Programmet nedenfor leser av fila “heistur_kjemi_fysikk.txt” og finner fart og akselerasjon ved hjelp av numerisk derivasjon. Programmet fungerer derimot ikke helt som det skal. Rett opp feilen. Lag også en ny kolonne “fart” og en ny kolonne “akselerasjon” i dataframen.

    + +
    + +
    +

    Oppgave 7

    +

    Løs puslespillet nedenfor, som skal illustrere derivasjon av diskrete data.

    +
    +
    +
    +
    + +
    +
    +
    +
    +

    Video#

    +
    + +
    + +
    +
    +
    +
    + + + + +
    + + + + + + +
    + + + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/tema4_algoritmer/feilhandtering.html b/docs/tema4_algoritmer/feilhandtering.html new file mode 100644 index 00000000..6e8a2145 --- /dev/null +++ b/docs/tema4_algoritmer/feilhandtering.html @@ -0,0 +1,986 @@ + + + + + + + + + Numeriske metoder og feilhåndtering — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Numeriske metoder og feilhåndtering

    + +
    +
    + +
    +
    +
    + +
    + +
    +

    Numeriske metoder og feilhåndtering#

    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/tema4_algoritmer/integrasjon.html b/docs/tema4_algoritmer/integrasjon.html new file mode 100644 index 00000000..667819fd --- /dev/null +++ b/docs/tema4_algoritmer/integrasjon.html @@ -0,0 +1,1408 @@ + + + + + + + + + Numerisk integrasjon (ekstrastoff) — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + + + +
    + +
    +

    Numerisk integrasjon (ekstrastoff)#

    +
    +

    Læringsutbytte

    +

    Etter å ha arbeidet med dette temaet, skal du kunne:

    +
      +
    1. Forklare forskjellen på ulike tilnærminger til rektangelmetoden (venstre-, høyre- og midtpunktstilnærming).

    2. +
    3. Forklare og utlede trapesmetoden.

    4. +
    5. Implementere rektangelmetoden og trapesmetoden.

    6. +
    7. Integrere funksjoner numerisk.

    8. +
    +
    +
    +

    Integrasjon#

    +

    Du kjenner kanskje integrasjon som en metode å regne ut arealet under en graf eller volumet til legemer på. I tillegg kjenner du antakelig til integrasjon som den motsatte operasjonen av derivasjon. At derivasjon og integrasjon er motsatte operasjoner, er bevist gjennom analysens fundamentalteorem. Termen analyse brukes her om den greinen av matematikk som omhandler derivasjon og integrasjon (kalkulus). Siden datamaskinen kun kan operere med bestemte verdier, kan vi med numeriske algoritmer kun tilnærme det bestemte integralet. Vi antideriverer derfor ikke her.

    +
    +
    +

    Rektangelmetoden#

    +

    Vi kan enklest gjøre en tilnærming til det bestemte integralet ved å utnytte at det kan skrives som en grenseverdi av Riemann-summer. En Riemann-sum kan beskrives som en tilnærming til arealet under en graf ved hjelp av arealet til geometriske figurer. En vanlig tilnærming er å bruke rektangler:

    + +

    Her benyttes \(N = 10\) rektangler for å tilnærme integralet av \(f(x) = \cos{(x)} +2\) for \(x\in[2,12]\). Bredden av rektanglene må være \((b-a)/N = (12-2)/10 = 1\). Vi ser også at høyden av hvert rektangel er \(f(x_n)\) der \(n\in[2,11]\), det vil si at vi lar venstresiden av rektangelet gå opp til grafen. Dersom vi regner ut arealet til hver av disse rektanglene, får vi 18.046675645664006, noe som ligger et lite stykke unna den analytiske verdien (\((\sin{(12)} + 2\cdot 12)-(\sin{(2)} + 2\cdot 2) \approx 18.554129655173885\). Dersom vi øker antall rektangler, her til 50, får vi naturlig nok et bedre estimat (her har vi inkludert resultatene i figuren):

    + +

    Det er åpenbart, spesielt i den første figuren, at flere områder av rektanglene ligger utenfor grafen. De ligger både for langt over og under grafen flere steder. Men feilen blir ikke så stor som det kan se ut som fordi vi nettopp har områder både over og under grafen. Relativ feil er her ca. 2.7 % med 10 rektangler og 0.65 % med 50 rektangler.

    +

    La oss illustrere feilen vi får med en lineær funksjon, \(f(x) = 10x\):

    + +

    Vi har i disse modellene målt rektangelhøyden på venstre ytterkant av rektangelet. Dette gir oss her en underestimering av integralet for hvert rektangel. Vi kan også måle høyden av rektanglene på høyre ytterkant. Da får vi en tilsvarende overestimering:

    +

    Vi ser her at vi får en stor underestimering med venstretilnærmingen og en stor overestimering med høyretilnærmingen, med en relativ feil på ca. 7.1 %. Det samme skjer for alle funksjoner i intervaller som er enten voksende eller synkende i hele intervallet. En måte å kompensere for dette, er å benytte høyden til rektangelet i midten istedenfor i endepunktet til venstre eller høyre:

    + +

    Det aller beste resultatet får vi altså med denne midtpunktstilnærmingen. For lineære funksjoner vil vi få en eksakt verdi (selv med ett rektangel!) fordi rektanglene er like store over og under grafen. Men midtpunktstilnærmingen er generelt bedre også på for eksempel polynomer av høyere grad og trigonometriske funksjoner. La oss nå se på implementering av metodene.

    +
    +
    +

    Implementering av rektangelmetodene#

    +
    +

    Rektangelmetoden (venstretilnærming)

    +

    Det bestemte integralet til en funksjon \(f(x)\) fra \(x = a\) til \(x = b\) kan tilnærmes ved arealet til \(n\) rektangler med bredden \(h = \frac{b-a}{n}\):

    +
    +\[\int_a^b f(x) \ \mathrm{d}x \approx h \sum_{k=1}^{n} f(x_k)\]
    +
    +
    +

    Underveisoppgave

    +

    Programmet nedenfor gir en funksjon som bruker venstretilnærmingen av rektangelmetoden til å beregne det bestemte integralet av en funksjon f mellom a og b. Fyll inn det som mangler i metoden.

    +
    + + +

    Tilsvarende kan vi beskrive høyretilnærmingen slik:

    +
    +

    Rektangelmetoden (høyretilnærming)

    +

    Det bestemte integralet til en funksjon \(f(x)\) fra \(x = a\) til \(x = b\) kan tilnærmes ved arealet til \(n\) rektangler med bredden \(h = \frac{b-a}{n}\):

    +
    +\[\int_a^b f(x) \ \mathrm{d}x \approx h \sum_{k=1}^{n} f(x_{k+1})\]
    +
    +
    +

    Underveisoppgave

    +

    Implementer algoritmen for høyretilnærmingen som en Python-funksjon. Test og sammenlikn med venstretilnærmingen på integralet \(\int_2^8 f(x) = x^2 - 2x + 4 \ dx\).

    +
    + +

    Den beste tilnærmingen med rektangler får vi med midtpunktstilnærmingen:

    +
    +

    Rektangelmetoden (midtpunktstilnærming)

    +

    Det bestemte integralet til en funksjon \(f(x)\) fra \(x = a\) til \(x = b\) kan tilnærmes ved arealet til \(n\) rektangler med bredden \(h = \frac{b-a}{n}\):

    +
    +\[\int_a^b f(x) \ \mathrm{d}x \approx h \sum_{k=1}^{n} f(x_{k+1})\]
    +
    +
    +

    Underveisoppgave

    +

    Implementer algoritmen for høyretilnærmingen som en Python-funksjon. Test og sammenlikn med venstretilnærmingen på integralet \(\int_2^8 f(x) = x^2 - 2x + 4 \ dx\).

    +
    + +

    Dersom vi har funksjoner med stor stor stigning eller minking (\(|f'(x) >> 0|\)), trenger vi mange rektangler for å få et godt resultat. Dette kan gi langsomme programmer dersom integrasjonen må gjentas flere ganger. Vi skal derfor nå se på noen forbedringer av rektangelmetoden.

    +
    +
    +

    Trapesmetoden#

    +

    Vi kan legge merke til at toppstykket i et rektangel er ei rett, horisontal linje. Ei slik linje kan representeres som et polynom av nullte grad, \(f(x) = ax^0 = a\), der \(a\) er et reellt tall. La oss se på mulighetene for å bytte ut dette toppstykket med et polynom av første grad, \(f(x) = ax^1 = ax\). Da får vi \textit{trapeser} istedenfor rektangler. En algoritme for dette er litt mindre intuitiv og litt mer jobb å utlede, men vi spanderer på oss det. La oss ta utgangspunktet i trapesmetoden illustrert med ett trapes i intervallet \([a, b] = [2, 12]\)\(f(x) = cos(x) + 2\):

    + +

    La oss utlede en algoritme for trapesmetoden. Vi tar utgangspunkt i at arealet av et trapes er gitt ved følgende formel:

    +
    +\[A_{trapes} = \frac{side 1+side 2}{2}\cdot h\]
    +

    De to sidene \(x_1\) og \(x_2\) er gitt ved henholdsvis \(f(a)\) og \(f(b)\). Høyden i trapeset blir stykket langs hele x-aksen, altså \(b-a\). Arealet blir derfor:

    +
    +\[A = \frac{f(a) + f(b)}{2}\cdot(b-a)\]
    +

    La oss nå utvide til \(n\) trapeser. Da blir høyden av hvert trapes \(h = (x_1+x_2)/n\), noe som gir dette arealet for hvert \(i\)-te trapes:

    +
    +\[A_i = \frac{f(x_i) + f(x_i)}{2}\cdot h\]
    +

    Summen blir da slik for \(n\) trapeser:

    +
    +\[\frac{f(a)+f(a+h)}{2}h + \frac{f(a+h)+f(a+2h)}{2}h + \frac{f(a+2h)+f(a+3h)}{2}h + ... + \frac{f(a+ih)+f(b)}{2}h\]
    +

    Vi multipliserer så alle ledd med \(h\) og dividerer dem på 2. Dette setter vi utenfor uttrykket:

    +
    +\[\frac{h}{2}\cdot (f(a)+f(a+h)+f(a+h)+f(a+2h)+f(a+2h)+ ... + f(a+ih) + f(b))\]
    +

    Trekker vi sammen like ledd, får vi:

    +
    +\[\frac{h}{2}\cdot (f(a)+2f(a+h)+2f(a+2h)+2f(a+3h)+ ... + 2f(a+ih) + f(b))\]
    +

    Siden det bare er \(f(a)\) og \(f(b)\) som ikke er multiplisert med 2, kan vi forenkle:

    +
    +\[h\left(\frac{f(a)+f(b)}{2} + (f(a+h)+f(a+2h)+f(a+3h)+ ... + f(a+ih))\right)\]
    +

    Den siste samlingen av ledd kan vi skrive som en sum. Da får vi trapesmetoden:

    +
    +

    Trapesmetoden

    +

    Det bestemte integralet til en funksjon \(f(x)\) fra \(x = a\) til \(x = b\) kan tilnærmes ved arealet til \(n\) trapeser med bredden \(h = \frac{b-a}{n}\):

    +
    +\[\int_a^b f(x) dx \approx h\left( \frac{f(a)+f(b)}{2} + \sum_{i=1}^{n-1} f(x_i) \right)\]
    +
    +
    +

    Underveisoppgave

    +

    Implementer trapesmetoden og test den på funksjonene \(f(x) = x^3 + 2x\) og \(f(x) = \sqrt(x)\) i intervallet \([2,4]\). Sammenlikn med resultatene du får fra rektangelmetoden (gjerne flere av dem!) med samme antall geometriske figurer.

    +
    + +

    Dersom vi øker antallet trapeser, blir naturlig nok også tilnærmingen bedre, som vi kan se av denne figuren:

    +
    +
    +

    Simpsons metode#

    +

    Vi har nå sett på to tilnærminger til integralet som bruker henholdsvis nullte- og førstegradspolynomer som toppstykke på de geometriske figurene som vi beregner arealet av. For å få en enda bedre tilnærming, spesielt til oscillerende funksjoner, kan vi bruke et toppstykke av et polynom med høyere grad enn 1. Alle disse metodene kan utledes ved hjelp av interpolasjon, men vi skal ikke gjøre det her. Her nøyer vi oss med å vise og implementere algoritmen for tredjegradstilnærmingen. Denne algoritmen kalles Simpsons metode:

    +
    +

    Trapesmetoden

    +

    Det bestemte integralet til en funksjon \(f(x)\) fra \(x = a\) til \(x = b\) kan tilnærmes med \(n\) geometriske figurer, der \(n\) er et partall:

    +
    +\[\int_a^b f(x) dx \approx \frac{h}{3} \left( f(a) + f(b) + 2\sum_{k = 1}^{\frac{n}{2} - 1} f(x_{2k}) + 4\sum_{k=1}^{\frac{n}{2}} f(x_{2k-1}) \right)\]
    +
    +

    Metoden kan implementeres slik:

    +
    +
    +
    def simpsons(f, a, b, n):
    +    h = (b-a)/n
    +    total = f(a) + f(b)
    +    for k in range(1,n,2):
    +        A += 4 * f(a + k*h)
    +    for k in range(2,n,2):
    +        A += 2*f(a + k*h)
    +    return A*h/3
    +
    +
    +
    +
    +
    +

    Oppgave

    +

    Studer koden ovenfor og prøv å finne igjen leddene i definisjonen av Simpsons metode.

    +
    +

    Metodene vi har sett på, bygger på samme prinsipp, nemlig tilnærming av arealet under grafen ved hjelp av geometriske figurer med rektangelbase og et polynom av grad \(n\) som toppstykke. Siden prinsippet er det samme, kaller vi dem en familie av metoder (hyggelig, ikke sant?). Denne familien heter Newton-Cotes. Det vil si at for eksempel trapesregelen kalles en Newton-Cotes-metode av første grad, mens Simpsons metode er en Newton-Cotes-metode av andre grad. Det finnes mange andre metoder og familier innenfor numerisk integrasjon, men disse lar vi ligge foreløpig.

    +
    +
    +

    Bruk av biblioteker for å integrere#

    +

    Vi vender tilbake til scipy-biblioteket, som også inneholder metoder for numerisk integrasjon. Vi kan bruke biblioteket slik:

    +
    +
    +
    from scipy import integrate
    +import numpy as np
    +
    +def f(x):
    +    return x**3 - 1
    +
    +n = 1000
    +x = np.linspace(0,5,n)
    +y = f(x)
    +
    +# Integrasjon
    +trapes = integrate.trapz(y,x) # Trenger arrayer som parameter
    +simpsons = integrate.simps(y,x) # Trenger arrayer som parameter
    +gauss_kvadratur = integrate.quad(f,0,5) # Trenger funksjon som parameter
    +print("Trapesmetoden:",trapes)
    +print("Simpsons metode:",simpsons)
    +print("Gauss kvadratur:",gauss_kvadratur) #Skriver ut svar og absolutt feil med Gauss kvadratur, en metode vi ikke har sett på
    +
    +
    +
    +
    +
    Trapesmetoden: 151.2501565629694
    +Simpsons metode: 151.25000015671972
    +Gauss kvadratur: (151.25, 1.6959623319719519e-12)
    +
    +
    +
    +
    +
    +

    Underveisoppgave

    +

    Studer koden ovenfor. Hvordan fungerer de ulike funksjonene? Test gjerne ut funksjonene selv.

    +
    +
    +
    +

    Oppgaver#

    +
    +

    Oppgave 1

    +

    Løs puslespillet nedenfor. Programmet skal definere rektangelmetoden som en Python-funksjon.

    +
    +
    +
    +
    + +
    +
    +
    +

    Oppgave 2

    +

    Implementer algoritmen for rektangelmetoden som en Python-funksjon. Test metoden på integralet

    +
    +\[\int_2^8 f(x) = x^2 - 2x + 4 \ dx\]
    +
    +
    +

    Oppgave 3

    +

    Implementer trapesmetoden og ulike tilnærminger for rektangelmetoden som Python-funksjoner. Gjør en feilanalyse av metodene og sammenlikn svarene du får på integralet

    +
    +\[\int_2^8 f(x) = x^2 - 2x + 4 \ dx\]
    +
    +
    +

    Oppgave 4

    +

    Utled rektangelmetoden ved hjelp av definisjonen av integralet og en figur.

    +
    +
    +

    Oppgave 5

    +

    Utled trapesformelen med utgangspunkt i definisjon av det bestemte integralet og formelen for arealet av et trapes. Bruk gjerne en figur.

    +
    +
    +

    Oppgave 6

    +

    En sannsynlighetsfordeling er en matematisk beskrivelse av hvor sannsynlig det er at ulike utfall vil skje. Det finnes mange forskjellige sannsynlighetsfordelinger. I denne oppgava skal vi se på en fordeling \(f(x)\) som kalles en standard normalfordeling. Den er definert ved:

    +
    +\[f(x) = \frac{1}{\sqrt{2\pi}}\cdot e^{-\frac{x^2}{2}}\]
    +

    Skriv et program som bruker trapes- eller rektangelmetoden for å integrere \(f(x)\) i området mellom \(a = -k\cdot\sigma = -k\) og \(b = k\cdot\sigma = k\) for \(k \in {1, 2, 3}\) og skriver ut resultatene. Du kan sette \(\sigma = 1\).

    +

    For å forsikre deg om at du bruker en grei verdi for \(n\), kan du se om resultatene blir omtrent lik 0.68, 0.95 og 0.997 for henholdsvis \(k \in {1, 2, 3}\).

    +
    +
    +

    Oppgave 7*

    +

    Noen funksjoner oppfører seg trøblete ved at de går mot minus eller pluss uendelig, eller ved at funksjonen varierer svært mye mot en bestemt verdi. La oss her ta denne funksjonen:

    +
    +\[f(x) = \sin\left(\frac{1}{x}\right)\]
    +

    Funksjonen oppfører seg turbulent like ved 0. Plott funksjonen med (D_f = [-5, 0) \cup (0,5]) og studer grafen. Prøv å derivere og integrere med ulike metoder i punkter et stykke fra 0 og deretter punkter nær 0. Sammenlikn ulike metoder med den analytiske løsninga og kommenter resultatene.

    +
    +
    +
    +

    Videoer#

    +

    Bruk videoene nedenfor som en innføring eller en reptisjon til numerisk integrasjon.

    +
    + +
    + +
    + +
    + +
    +
    +
    +
    + + + + +
    + + + + + + +
    + + + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/tema4_algoritmer/likninger.html b/docs/tema4_algoritmer/likninger.html new file mode 100644 index 00000000..4a28e2e7 --- /dev/null +++ b/docs/tema4_algoritmer/likninger.html @@ -0,0 +1,1541 @@ + + + + + + + + + Likninger og nullpunkter — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + + + +
    + +
    +

    Likninger og nullpunkter#

    +
    +

    Læringsutbytte

    +

    Etter å ha arbeidet med denne delen av emnet, skal du kunne:

    +
      +
    1. forklare den teoretisk bakgrunnen for halveringsmetoden og Newtons metode

    2. +
    3. implementere halveringsmetoden og Newtons metode

    4. +
    5. drøfte feil og begrensninger ved metodene

    6. +
    7. bruke metodene til å finne nullpunkter og løse likninger

    8. +
    +
    +
    +

    Likninger#

    +

    Å finne nullpunktene til en funksjon er det samme som å løse en likning \(f(x) = 0\). Dersom vi for eksempel ønsker å løse en likning \(x^4 + 3x = 2x^2 - 10\), kan vi løse denne ved å finne nullpunktet til funksjonen \(f(x) = x^4 + 3x - 2x^2 + 10\). Vi kan si at vi formulerer likningen som et nullpunktsproblem.

    +

    Likninger kan løses med mange spesialiserte løsningsmetoder og algebraiske “triks”, for eksempel kjenner vi en løsningsformel for andregradslikninger:

    +
    +\[x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}\]
    +

    Denne funksjonen kan kun brukes til å løse andregradslikninger. Det kreves andre funksjoner for å løse likninger av tredje og fjerde grad, og likninger av femte grad og over er ikke analytisk løsbare. Når vi løser likninger numerisk på en datamaskin, bruker vi derimot generelle metoder som i prinsippet kan brukes på alle typer likninger.

    +

    Det finnes mange ulike måter å løse slike likninger på, og hver av metodene har sine styrker og svakheter. To metoder som er basert på relativt enkle prinsipper, er halveringsmetoden og Newtons metode. Vi skal se på implementering av disse metodene. I tillegg ser vi litt på styrker og svakheter ved metodene. Til slutt ser vi hvordan vi kan løse likninger ved å bruke ferdige algoritmer som finnes i scipy-biblioteket.

    +
    +
    +

    Praktiske anvendelser#

    +

    Det finnes flere praktiske anvendelser med likninger. Hvis vi for eksempel skal finne ut hvor to funksjoner skjærer hverandre, kan vi løse likningen \(f(x) = g(x)\) som et nullpunktsproblem: \(f(x) - g(x) = 0\). Disse funksjonene kan representere mange ulike ting.

    +

    La oss for eksempel si at vi har to uttrykk som for eksempel beskriver konsentrasjon til to produkter over tid:

    +
    +\[c_1(t) = e^{-t} + t + 5\]
    +
    +\[c_2(t) = \ln(0.006t + 1) + t^{0.3} + 10\]
    +

    For å finne ut ved hvilken tid de to produktene har lik konsentrasjon, kan vi løse likningen \(c_1(t) = c_2(t)\). Formulert som et nullpunktsproblem får vi:

    +
    +\[e^{-t} + t + 5 - \ln(0.006t + 1) - t^{0.3} - 10 = 0\]
    +

    Dette er en likning som ikke er analytisk løsbar. Her skal vi se på metoder for å finne nullpunktene til funksjoner. Dette er en strategi som også kan brukes til å løse likninger.

    +
    +
    +

    Visualisere løsningen#

    +

    Før vi løser likninger, kan det være lurt å visualisere funksjonene som representerer likningen. For eksempel kan vi plotte funksjonen \(f(t) = e^{-t} + t + 5 - \ln(0.006t + 1) - t^{0.3} - 10\) og se hvor den skjærer x-aksen:

    +
    +
    +
    import matplotlib.pyplot as plt
    +import numpy as np
    +
    +t = np.linspace(0,10,1000)
    +y = np.exp(-t) + t + 5 - np.log(0.006*t + 1) - t**0.3 - 10
    +
    +plt.plot(t,y)
    +plt.axhline(y = 0, color = "red") # x-akse
    +plt.show()
    +
    +
    +
    +
    +../../_images/3d21dfafc76d930af24b8faf02ad81e560a8daf269c958d8e9aaaeb23693e751.png +
    +
    +

    Vi ser at grafen skjærer x-aksen i omtrent \(x \approx 6.5\). Vi kan også plotte \(c_1(t) = e^{-t} + t + 5\) og \(c_2(t) = \ln(0.006t + 1) + t^{0.3} + 10\) i samme koordinatsystem for å se hvor de skjærer hverandre. Vi ser at dette gir samme estimat for x.

    +
    +
    +
    import matplotlib.pyplot as plt
    +import numpy as np
    +
    +t = np.linspace(0,10,1000)
    +y1 = np.exp(-t) + t + 5 
    +y2 = np.log(0.006*t + 1) + t**0.3 + 10
    +
    +plt.plot(t,y1)
    +plt.plot(t,y2)
    +plt.show()
    +
    +
    +
    +
    +../../_images/5474ca83bc2ccfa6657b098b103299c24bc69e9aaf03f3532fc117543d207bc5.png +
    +
    +
    +
    +

    En enkel metode for å finne nullpunktet#

    +

    Nå har vi en viss peiling på hvor nullpunktet befinner seg, som er løsningen på likninga. La oss prøve en veldig enkel metode for å finne dette nullpunktet. Metoden vi viser nå, brukes ikke i særlig grad, fordi den både er langsom og lite robust. Den er derimot ganske intuitiv og fin å starte med. La oss begynne med en pseudokode som beskriver algoritmen:

    +
    x = startverdi
    +y = f(x)
    +dx = steglengde (avstand mellom punktene vi vil sjekke)
    +
    +gjenta så lenge y*y_forrige > 0: (det vil si inntil produktet er mindre enn 0).
    +    x_forrige = x
    +    x = x + dx
    +
    +nullpunkt = (x+x_forrige)/2
    +skriv ut nullpunktet
    +
    +
    +
    +

    Underveisoppgave

    +

    Tolk pseudokoden ovenfor og forklar hvordan algoritmen fungerer.

    +
    +

    Vi kan illustrere metoden med følgende figur:

    + +

    Vi beveger oss altså oppover (eller nedover) grafen ved å gradvis øke x-verdiene med en steglengde dx. Underveis sjekker vi om funksjonsverdien til de to x-verdiene (x og x + dx) har motsatt fortegn. Dersom de har det, må nullpunktet ligge mellom de to x-verdiene. I figuren ser vi at \(f(x_7)\) og \(f(x_8)\) har motsatt fortegn, altså ligger nullpunktet mellom disse verdiene et sted. Ofte kan det være lurt å tippe på midtpunktet mellom de to, men her ser vi at det ikke stemmer helt – nullpunktet ligger svært nært \(x_7\). Dette kan vi bøte på ved å velge en dx som er mye mindre. Vi har valgt en stor avstand mellom x-verdiene i figuren for å gjøre den tydeligere, men du bør velge en dx som er liten nok til å få et godt svar. Hva som er “liten nok” dx, er avhengig av funksjonen. Dette er en åpenbar svakhet med metoden.

    +
    +

    Underveisoppgave

    +

    Vi kan implementere algoritmen som nedenfor. Fyll inn det som mangler.

    + +
    + +
    +

    Underveisoppgave

    +

    Diskuter fordeler og svakheter med algoritmen ovenfor.

    +
    +
    +
    +

    Halveringsmetoden#

    +

    La oss se på en annen metode for å finne nullpunkter og dermed løse likninger. Vi går rett til programkoden:

    +
    +
    +
    def f(x):
    +    return 2*x - 2
    +
    +# Intervallet vi skal lete etter nullpunktet i
    +a = -5
    +b = 5
    +
    +m = (a+b)/2 # Regner ut midtpunktet mellom a og b
    +
    +while f(m) != 0:
    +    if f(a)*f(m) < 0:
    +        b = m
    +    elif f(b)*f(m) < 0:
    +        a = m
    +    m = (a+b)/2
    +
    +print("Nullpunktet er x =", m)
    +
    +
    +
    +
    +
    Nullpunktet er x = 1.0
    +
    +
    +
    +
    +

    Metoden som er brukt ovenfor, heter halveringsmetoden. Halveringsmetoden går ut på å velge et intervall \([a, b]\) der \(f(a)\) og \(f(b)\) har motsatte fortegn. Vi kan bruke grafen til å vurdere hvilket intervall som egner seg dersom vi plotter den først. Deretter skal vi finne et nytt intervall \([a, b]\) som er mindre, men slik at \(f(a)\) og \(f(b)\) fortsatt har motsatte fortegn. Det kan vi gjøre ved å finne midten mellom a og b. Da får vi et punkt \(m = (a + b)/2\), og vi kan finne \(f(m)\).

    +

    Vi undersøker så om \(f(m_1) = 0\). Hvis ikke, evaluerer vi fortegnene til \(f(a)\), \(f(b)\) og \(f(m)\). Dersom \(f(a)\) og \(f(m)\) har samme fortegn, setter vi det nye intervallet til \([m, b]\) fordi da må \(f(m)\) og \(f(b)\) ha motsatte fortegn. Motsatt setter vi intervallet til \([a, m]\) dersom \(f(b)\) og \(f(m)\) har samme fortegn. Prosessen gjentas n ganger til vi har at \(f(m_n) \approx 0\). Figuren nedenfor illustrerer metoden med to trinn

    + +

    Algoritmen kan mer generelt beskrives slik:

    +
    +

    Halveringsmetoden

    +

    La f være en kontinuerlig funksjon med motsatte fortegn på funksjonsverdiene \(f(a)\) og \(f(b)\) i intervallet \([a,b]\). Da kan nullpunktene finnes slik:

    +
      +
    1. Finn midtpunktet \(c_k\) mellom punktene a og b.

    2. +
    3. Undersøk hvilke av \(f(a)\) og \(f(b)\) som har motsatt fortegn til \(f(c_k)\), og sett det nye intervallet til \([a,c_k]\) eller \([c_k, b]\), der start- og sluttverdien i intervallet skal ha motsatt fortegn.

    4. +
    5. Gjenta prosessen n ganger til \(f(c_k) \approx 0\).

    6. +
    +
    +
    +

    Forbedringer av metoden#

    +

    Når vi bruker numeriske metoder, får vi sjeldent nøyaktige svar. Derfor er det aldri en god idé å undersøke hvorvidt \(f(x) = 0\) helt nøyaktig. Vi bør heller sjekke om \(f(x) \approx 0\). Dette kan vi gjøre med å innføre en toleranse som forteller programmet hvor nærme nullpunktet vi vil være. Dette kan vi gjøre slik:

    +
    +
    +
    def f(x):
    +    return 2*x - 2
    +
    +# Intervallet vi skal lete etter nullpunktet i
    +a = -5
    +b = 5
    +toleranse = 1E-8
    +
    +m = (a+b)/2 # Regner ut midtpunktet mellom a og b
    +
    +while abs(f(m)) >= toleranse:
    +    if f(a)*f(m) < 0:
    +        b = m
    +    elif f(b)*f(m) < 0:
    +        a = m
    +    m = (a+b)/2
    +
    +print("Nullpunktet er x =", m)
    +
    +
    +
    +
    +
    Nullpunktet er x = 0.9999999962747097
    +
    +
    +
    +
    + +

    La oss nå se om vi kan benytte halveringsmetoden til å finne ut ved hvilken tid konsentrasjonen er lik i reaksjonene representert ved likningene vi startet med i dette kapitlet. Vi lager en litt enklere utgave av funksjonen i løsningsforslaget ovenfor, men vi legger i tillegg inn en standardverdi for toleransen (her \(10^{-8}\)). Det betyr at hvis vi ikke spesifiserer toleransen når vi kaller på funksjonen, vil toleransen automatisk settes til dette.

    + +
    +

    Oppgave

    +

    Test og studer programmet ovenfor og forklar hva som skjer. Modifiser programmet slik at det også plotter nullpunktet og funksjonen for å sjekke at løsningen stemmer.

    +
    + +
    +
    +
    +

    Newtons metode#

    +

    Det finnes flere måter å løse likninger på. En metode som ofte fungerer godt, og som er mye raskere enn halveringsmetoden, er Newtons metode, også kalt Newton-Raphsons metode. Den bruker nullpunktet til tangenten i et punkt på en funksjon f som en tilnærming til nullpunktet til f. Metoden fungerer slik:

    +
      +
    1. Vi velger oss først et startpunkt \(x_0\) og regner ut nullpunktet til tangenten i \(f(x_0)\). Dette punktet kaller vi \(x_1\).

    2. +
    3. Dersom \(x_1\) tilsvarer nullpunktet til funksjonen \(f\), sier vi oss ferdige.

    4. +
    5. Hvis ikke, regner vi ut nullpunktet til en ny tangent i \(f(x_1)\) og kaller det \(x_2\).

    6. +
    7. Slik fortsetter vi til vi er så nært nullpunktet til \(f\) som vi ønsker.

    8. +
    +

    Figuren nedenfor viser to iterasjoner av metoden med funksjonen \(f(x) = x^2 - x - 2\) og startgjett \(x_0 = 5\):

    + +
    +

    Underveisoppgave

    +

    Bruk figuren ovenfor til å forklare hvorfor Newtons metode konvergerer mot (går mot) nullpunktet raskt.

    +
    +

    La oss utlede en algoritme for metoden. Stigningen til en linje kan gis ved:

    +
    +\[a = \frac{\Delta y}{\Delta x} = \frac{f(x) - f(x_0)}{x - x_0}\]
    +

    Her setter vi \(x\) til å være en variabel størrelse og \(x_0\) til et fast punkt. Dersom vi gjør om dette til et uttrykk for linja \(f(x)\), får vi følgende:

    +
    +\[f(x) = f(x_0) + a(x - x_0)\]
    +

    Dette er likningen for ei linje som går igjennom punktet \((x_0, f(x_0))\). Siden den deriverte i et punkt er lik stigningen i det samme punktet, kan vi skrive:

    +
    +\[f(x) = f(x_0) + f'(x_0)(x - x_0)\]
    +

    som er likningen til en tangent gjennom punktet \((x_0, f(x_0))\) på funksjonen \(f\). Vi ønsker å finne nullpunktet til tangenten, og setter derfor \(f(x) = 0\):

    +
    +\[f(x_0) + f'(x_0)(x - x_0) = 0\]
    +

    Dersom vi omformer uttrykket slik at den ukjente er nullpunktet \(x\), får vi:

    +
    +\[x = x_0 - \frac{f(x_0)}{f'(x_0)}\]
    +

    Dette er Newtons metode. Siden vi ønsker å gjenta prosessen med å finne nullpunktene til tangentene i \((x_0, f(x_0))\), \((x_1, f(x_1))\), \((x_2, f(x_2))\) og så videre, kan vi formulere algoritmen iterativt:

    +
    +

    Newtons metode

    +

    La f være en kontinuerlig, deriverbar funksjon, og la \((x_n, f(x_n))\) være et punkt på funksjonen. Nullpunktet til funksjonen f kan tilnærmes ved nullpunktet til den \(n\)-te tangenten til funksjonen. Bruk først et startgjett, \(x_0\). Finn så nullpunktet \(x_{n+1}\) til den \(n\)-te tangenten ved å bruke nullpunktet, \(x_n\), til den forrige tangenten. Gjenta til \(f(x_{n+1}) \approx 0\)

    +
    +\[x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}\]
    +
    +
    +

    Underveisoppgave

    +

    Bruk beskrivelsen ovenfor og prøv å implementere Newtons metode før du ser på hvordan vi gjør det nedenfor.

    +
    +

    Vi ser at vi trenger den deriverte for å beregne nullpunktet. Det er en åpenbar ulempe ved metoden dersom den deriverte er vanskelig å finne. Vi kan bruke en tilnærming til den deriverte med numeriske metoder, men da får vi enda en feil i beregningen vår. En fordel med Newtons metode er at den konvergerer raskt mot nullpunktet, og at vi kun trenger å oppgi ett punkt som vi skal starte med. Halveringsmetoden konvergerer mer langsomt og trenger to punkter (et intervall) for å fungere. Hastigheten har lite å si når vi gjør så enkle beregninger som her, men dersom vi skal gjøre tunge beregninger, er Newtons metode, og varianter av denne, mye brukt.

    +

    Et annet problem med Newtons metode kan oppstå ved lokale ekstremalpunkter. Her kan metoden gi tangenter på hver sin side av for eksempel bunnpunktet, uten at de konvergerer mot nullpunktet. Vi kan for så vidt også få et problem dersom \(f'(x) = 0\) et eller annet sted i iterasjonen, fordi vi da må dele på null i algoritmen. Dette oppstår ikke så ofte, men det kan være lurt å tenke på, spesielt med hensyn til startgjettet vårt.

    +

    Her er en enkel implementering av Newtons metode uten å pakke metoden inn i en funksjon:

    +
    +
    +
    def f(x):
    +    return 2*x - 2
    +
    +def fder(x):
    +    return 2
    +
    +toleranse = 1E-8
    +x = 0  # startgjett
    +
    +while abs(f(x)) > toleranse:
    +    x = x - f(x)/fder(x)
    +
    +print("Nullpunktet er x =", x)
    +
    +
    +
    +
    +
    Nullpunktet er x = 1.0
    +
    +
    +
    +
    +

    Hvis vi ønsker å lage en funksjon av Newtons metode, kan vi gjøre det slik:

    +
    +
    +
    def newtons_metode(f,fder,x,tol=1E-10):
    +    while abs(f(x)) > tol:
    +        x = x - f(x)/fder(x)
    +    return x
    +
    +
    +
    +
    +

    Både Newtons metode og halveringsmetoden er grunnleggende, men relativt robuste metoder som kan gi gode nok tilnærminger i mange tilfeller. Newtons metode er en såkalt Householder-metode av første orden. Vi kan få enda bedre tilnærminger ved å bruke metoder av høyere orden \(n\). Med \(n=2\) får vi en algoritme som kalles Halleys metode. Ulempen med slike metoder er at vi trenger den \(n-\)te-deriverte av funksjonen. Fordelen er at de trenger svært få iterasjoner for å oppnå veldig gode tilnærminger.

    +

    Vi kan også benytte numeriske biblioteker som allerede inneholder implementeringer av metodene. Et mye brukt bibliotek for numeriske metoder er Scipy (forkortelse for Scientific Python). Her er et eksempel på hvordan vi kan bruke noen metoder for å løse likninger og finne nullpunkter med funksjoner fra dette biblioteket:

    +

    Returverdien “root” viser nullpunktet vi får fra metodene. Metodene gir her “converged: True” hvis den finner nullpunktene. Da står det også “converged” under “flag” hvis alt gikk som det skulle. Hvis vi får “converged: False”, dukker det opp en beskjed om feilen under “flag”. “Iterations” angir antall ganger løkka går, altså hvor mange ganger metoden gjentas. Dette skiller seg litt fra “function calls”, som ofte er høyere fordi flere funksjoner blir brukt, blant annet \(f(x)\) og \(f'(x)\) i Newtons metode, og \(f(x)\), \(f'(x)\) og \(f''(x)\) i Halleys metode.

    +
    +

    Underveisoppgave

    +

    Kjør programmet ovenfor og forklar hvordan funksjonen root_scalar fungerer. Prøv å endre parametrene og test funksjonen på andre problemer med ulike metoder.

    +
    +
    +
    +

    Likningssett#

    +

    Likningssett kan løses med litt ulike metoder. Broydens metode fungerer stort sett fint for både lineære og ikke-lineære likningssett. Vi må definere likningene på formen \(f(x) = 0\), og variablene skal settes som elementer av en array. Nedenfor har vi f.eks. disse likningene:

    +
    +\[x + 2y + 3z - 6 = 0\]
    +
    +\[y + 2z - 2 = 0\]
    +
    +\[x + 6y + 2z - 5 = 0\]
    +

    Vi definerer variablene slik: \(x = x[0]\), \(y = x[1]\) og \(z = x[2]\). Vi må også velge noen punkter vi skal starte i, slik som vi gjør med halveringsmetoden og Newtons metode. Her velger vi vilkårlig startverdiene \((1, 1, 1)\).

    +
    +
    +
    import scipy.optimize as opt
    +
    +def fun(x):
    +    return [x[0]  + 2*x[1] + 3*x[2] - 6, 
    +            x[1] + 2*x[2] - 2,
    +            x[0] + 6*x[1] + 2*x[2] - 5]
    +
    +løsning = opt.broyden1(fun, [1,1,1])
    +print(løsning)
    +
    +
    +
    +
    +
    [3.00000000e+00 3.55271368e-15 1.00000000e+00]
    +
    +
    +
    +
    +
    +
    +

    Oppgaver#

    +
    +
    +
    + +
    +
    +
    +

    Oppgave 2

    +

    Bruk halveringsmetoden og vis at løsningene til likningen \(x^5 = 5x^3 + 3\) er \(x_1 \approx -2.169, x_2 \approx -0.894\) og \(x_3 \approx 2.291\). Sammenlikn med “bisect” (halveringsmetoden) fra Scipy-biblioteket.

    +
    +
    +

    Oppgave 3

    +

    Implementer Newtons metode som en Python-funksjon med toleranse, maks antall iterasjoner og relevant feilhåndtering dersom vi når maks iterasjoner uten å nå gitt toleranse. Test funksjonen på likningen \(x^2 = x^3 - 4\).

    +
    +
    +
    +

    Videoer#

    +
    + +
    + +
    + +
    + +
    +
    +
    +
    + + + + +
    + + + + + + +
    + + + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/tema4_algoritmer/likninger_oppgave1.html b/docs/tema4_algoritmer/likninger_oppgave1.html new file mode 100644 index 00000000..ede94242 --- /dev/null +++ b/docs/tema4_algoritmer/likninger_oppgave1.html @@ -0,0 +1,1063 @@ + + + + + + + + + Numerisk løsing av likninger (oppgave) — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Numerisk løsing av likninger (oppgave)

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    + +
    + +
    +

    Numerisk løsing av likninger (oppgave)#

    +

    Gå sammen i grupper på ca. fire personer og diskuter oppgavene nedenfor.

    +
    +

    Oppgave 1#

    +

    a) Diskuter følgende spørsmål parvis i gruppa:

    +
      +
    1. Hva er en likning?

    2. +
    3. Hva betyr det å løse en likning?

    4. +
    5. Hva er felles for alle nullpunkter?

    6. +
    +

    b) Se på grafen til funksjonen f(x) nedenfor. Du kjenner ikke funksjonsuttrykket til denne grafen. Hvilke av følgende intervaller finnes nullpunktet i?

    +

    [-1, 0.5], [-1, 2], [0, 1], [0.5, 1], [1, 2], [-1, 2]

    +

    graf

    +

    c) Hva er forskjellen mellom funksjonsverdien til funksjonen i randpunktene på de intervallene som inneholder nullpunktene og de som ikke gjør det? Er det noen systematisk sammenheng her?

    +

    d) Ta utgangspunkt i intervallet [0, 2]. Hvordan kan du justere dette intervallet systematisk for å komme nærmere og nærmere nullpunktet? Prøv å anvende generaliseringen om funksjonsverdiene ovenfor.

    +

    e) Prøv å formulere en enkel systematisk algoritme for å finne nullpunktet gitt et intervall.

    +

    f) Dere får utdelt noen grafer. En på gruppa får se grafene. Denne personen kan kun oppgi funksjonsverdier, mens de andre kan teste algoritmen dere lagde ovenfor ved å systematisk oppgi ulike x-verdier. Fungerte metoden på alle grafene?

    +
    +
    +

    Oppgave 2#

    +

    Følgende funksjon blei gitt på eksamen i 2009:

    +
    +\[f(x)=2\ln⁡\left((x^4+4)-\frac{1}{2}x\right) - 5\]
    +

    a) Prøv å løse likninga \(f(x) = 0\) for hånd. Hvor langt kommer du med det? Dette kaller vi analytisk løsning av likninger, og vi ender opp med et eksakt svar hvis vi får det til.

    +

    b) Tegn grafen for funksjonen ovenfor og bruk metoden dere formulerte i oppgave 1 til å finne en tilnærma løsning. Dette kaller vi numerisk løsning av likninger.

    +
    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + +
    + +
    + +
    + On this page +
    + +
    + +
    + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/tema4_algoritmer/numeriske_biblioteker.html b/docs/tema4_algoritmer/numeriske_biblioteker.html new file mode 100644 index 00000000..e98d666e --- /dev/null +++ b/docs/tema4_algoritmer/numeriske_biblioteker.html @@ -0,0 +1,1216 @@ + + + + + + + + + Numeriske biblioteker — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Numeriske biblioteker

    + +
    + +
    +
    + +
    + +
    +

    Numeriske biblioteker#

    +

    Det finnes mange ferdige biblioteker i Python som vi kan bruke til å gjøre numeriske beregner. Vi har tidligere sett på hvordan vi kan implementere algoritmer selv. Dette gjorde vi for å forstå algoritmene og hva som ligger til grunn for dem. Men når vi først forstår hva de gjør og begrensninger og forutsetninger for dem, kan vi i mange tilfeller bruke algoritmer fra veletablerte biblioteker. Her ser du noen muligheter.

    +
    +

    1. Løse likninger#

    +
    +
    +
    from scipy.optimize import root_scalar
    +
    +def f(x):
    +    return x**2 - 4
    +
    +def dfder(x):
    +    return 2*x
    +
    +# Halveringsmetoden
    +nullpunkt_halvering = root_scalar(f,method="bisect",bracket=[0,5])
    +nullpunkt_newton = root_scalar(f,method="newton",fprime=dfder,x0=10)
    +print(nullpunkt_halvering)
    +print("-----------------------------------------")
    +print(nullpunkt_newton)
    +
    +
    +
    +
    +
          converged: True
    +           flag: 'converged'
    + function_calls: 44
    +     iterations: 42
    +           root: 1.9999999999993179
    +-----------------------------------------
    +      converged: True
    +           flag: 'converged'
    + function_calls: 14
    +     iterations: 7
    +           root: 2.0
    +
    +
    +
    +
    +
    +

    Likningssett#

    +

    Likningssett kan løses med litt ulike metoder. Broydens metode fungerer stort sett fint for både lineære og ikke-lineære likningssett. Vi må definere likningene på formen \(f(x) = 0\), og variablene skal settes som elementer av en array. Nedenfor har vi f.eks. disse likningene:

    +
    +\[x + 2y + 3z - 6 = 0\]
    +
    +\[y + 2z - 2 = 0\]
    +
    +\[x + 6y + 2z - 5 = 0\]
    +

    Vi definerer variablene slik: \(x = x[0]\), \(y = x[1]\) og \(z = x[2]\). Vi må også velge noen punkter vi skal starte i, slik som vi gjør med halveringsmetoden og Newtons metode. Her velger vi vilkårlig punktet \((1, 1, 1)\).

    +
    +
    +
    import scipy.optimize as opt
    +
    +def fun(x):
    +    return [x[0]  + 2*x[1] + 3*x[2] - 6, 
    +            x[1] + 2*x[2] - 2,
    +            x[0] + 6*x[1] + 2*x[2] - 5]
    +
    +løsning = opt.broyden1(fun, [1,1,1])
    +print(løsning)
    +
    +
    +
    +
    +
    [3.00000000e+00 3.55271368e-15 1.00000000e+00]
    +
    +
    +
    +
    +
    +
    +
    +

    2. Derivere#

    +
    +
    +
    from scipy.misc import derivative
    +import numpy as np
    +
    +derivert = derivative(f, 1)
    +print(derivert)
    +
    +
    +
    +
    +
    2.0
    +
    +
    +
    +
    +
    +
    +

    3. Integrere#

    +
    +
    +
    from scipy import integrate
    +
    +x = np.linspace(0,2,1000)
    +y = f(x)
    +
    +trapes = integrate.trapz(y,x)
    +print(trapes)
    +
    +simpsons = integrate.simps(y,x)
    +print(simpsons)
    +
    +
    +
    +
    +
    -5.333331997329328
    +-5.333333331995993
    +
    +
    +
    +
    +
    +
    +

    4. Løse difflikninger#

    +
    +
    +
    import numpy as np
    +import matplotlib.pyplot as plt
    +from scipy.integrate import solve_ivp
    +
    +def dy_dt(t, y):
    +    return t - y
    +
    +a = 0
    +b = 4
    +t = np.linspace(a,b,1000)
    +y0 = 1
    +y_int = solve_ivp(dy_dt, [a,b], [1], t_eval=t)
    +
    +plt.xlabel("t")
    +plt.ylabel("y")
    +plt.plot(y_int.t, y_int.y[0])
    +
    +plt.show()
    +
    +
    +
    +
    +../../_images/3117535104d683b7a607ce112e5ba9fe9a870830b64b39d5002384960ce99401.png +
    +
    +
    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + +
    + + + +
    + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/tema4_algoritmer/symbolsk_utregning.html b/docs/tema4_algoritmer/symbolsk_utregning.html new file mode 100644 index 00000000..5675d9f3 --- /dev/null +++ b/docs/tema4_algoritmer/symbolsk_utregning.html @@ -0,0 +1,1436 @@ + + + + + + + + + Symbolsk utregning (CAS) — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + + + +
    + +
    +

    Symbolsk utregning (CAS)#

    +
    +

    Bruk av CAS (Computer Algebra System) i Python#

    +

    Her er en liten oversikt over hva du kan gjøre i CAS-verktøyet i Python. Det stjernemerkede stoffet er for spesielt interesserte, og er ikke pensum.

    +
    +
    +
    from sympy import *
    +
    +#x = symbols("x")
    +#y = symbols("y")
    +
    +x, y = symbols("x y") #Definerer symboler/variabler
    +uttrykk = x + 2*y*x   #Definerer et uttrykk
    +
    +
    +
    +
    +
    +

    Faktorisering#

    +
    +
    +
    factor(uttrykk)
    +
    +
    +
    +
    +
    +\[\displaystyle x \left(2 y + 1\right)\]
    +
    +
    +
    +
    +

    Løse likninger#

    +

    \(x^2 - 4 = 0\). Løs med hensyn på x.

    +
    +
    +
    solve(x**2 - 4, x) # Kan utelate x her, fordi vi ikke har andre bokstaver i uttrykket
    +
    +
    +
    +
    +
    [-2, 2]
    +
    +
    +
    +
    +
    +
    +

    Løse likningssett#

    +

    Vi kan løse likningssett som er lineære ved å bruke funksjonen solve, og ikke-lineære likningssett ved å erstatte solve med nonlinsolve. Prinsippet er det samme.

    +
    +
    +
    from sympy import *
    +
    +x,y,z = symbols('x,y,z')
    +likning1 = Eq(x + 2*y + 3*z, 6)
    +likning2 = Eq(y + 2*z, 2)
    +likning3 = Eq(x + 6*y + 2*z, 5) 
    +resultat = solve([likning1, likning2, likning3],(x,y,z)) # Bruker nonlinsolve ved ikke-lineære likninger
    +resultat
    +
    +
    +
    +
    +
    {x: 3, y: 0, z: 1}
    +
    +
    +
    +
    +
    +
    +

    Derivere#

    +

    Deriver \(x + 2yx\) med hensyn på x.

    +
    +
    +
    diff(uttrykk, x)
    +
    +
    +
    +
    +
    +\[\displaystyle 2 y + 1\]
    +
    +
    +
    +
    +

    Difflikninger#

    +

    \(y'' - y = e^x\).

    +
    +
    +
    y = Function('y')
    +t = symbols('t')
    +difflikning = Eq(y(t).diff(t, t) - y(t), exp(t))
    +dsolve(difflikning, y(t))
    +
    +
    +
    +
    +
    +\[\displaystyle y{\left(t \right)} = C_{2} e^{- t} + \left(C_{1} + \frac{t}{2}\right) e^{t}\]
    +
    +
    +
    +
    +

    Integrere (for elever med R2)*#

    +
    +\[\int 4x^3 dx\]
    +
    +
    +
    uttrykk2 = 4*x**3
    +integrate(uttrykk2, x)
    +
    +
    +
    +
    +
    +\[\displaystyle x^{4}\]
    +
    +
    +

    Bestemt integrasjon:

    +
    +\[\int_{-\infty}^{\infty} cos(x^2) dx\]
    +
    +
    +
    integrate(cos(x**2), (x, -oo, oo))
    +
    +
    +
    +
    +
    +\[\displaystyle \frac{\sqrt{2} \sqrt{\pi}}{2}\]
    +
    +
    +
    +
    +

    Vektorregning (R1 og R2)*#

    +

    For vektorregning anbefaler jeg å bruke innebygde numpy-funksjoner (ikke CAS):

    +
    +
    +
    import numpy as np
    +
    +vektor1 = np.array([1,-1,0])
    +vektor2 = np.array([2,2,3])
    +
    +prikkprodukt = np.dot(vektor1, vektor2) # Skalarprodukt
    +kryssprodukt = np.cross(vektor1, vektor2) # Vektorprodukt
    +
    +
    +
    +
    +

    Det er også mulig å bruke CAS-verktøyet i sympy:

    +
    +
    +
    from sympy.vector import CoordSys3D
    +N = CoordSys3D('N') # Lager et kartesisk koordinatsystem å plassere vektorene i
    +# N.i, N.j og N.k er basisvektorer i det kartesiske rommet
    +
    +# Lager vektoren v = [2, 3, 4]
    +v = 2*N.i + 3*N.j + 4*N.k
    +# Lager vektoren v = [1, 2, 1]
    +u = N.i + 2*N.j + N.k
    +
    +# Enkel vektoraddisjon
    +u + v
    +
    +
    +
    +
    +
    +\[\displaystyle (3)\mathbf{\hat{i}_{N}} + (5)\mathbf{\hat{j}_{N}} + (5)\mathbf{\hat{k}_{N}}\]
    +
    +
    +
    +
    +
    v.cross(u) # Vektorprodukt
    +
    +
    +
    +
    +
    +\[\displaystyle (-5)\mathbf{\hat{i}_{N}} + (2)\mathbf{\hat{j}_{N}} + \mathbf{\hat{k}_{N}}\]
    +
    +
    +
    +
    +
    v.dot(u) # Skalarprodukt
    +
    +
    +
    +
    +
    +\[\displaystyle 12\]
    +
    +
    +
    +
    +
    +

    Matematikk for spesielt interesserte**#

    +

    Nedenfor ser du eksempler på hvordan en kan gjøre litt lineær algebra og finne Taylor-rekker. Dette er ekstrastoff for de som allerede har litt kjennskap til matematikk på universitetsnivå.

    +
    +

    Matriseregning** (lineær algebra)#

    +
    +
    +
    matrise = Matrix([[1,2],[3,4]])
    +matrise
    +
    +
    +
    +
    +
    +\[\begin{split}\displaystyle \left[\begin{matrix}1 & 2\\3 & 4\end{matrix}\right]\end{split}\]
    +
    +
    +
    +
    +
    matrise.row(0)
    +# matrise.col(0)
    +
    +
    +
    +
    +
    +\[\displaystyle \left[\begin{matrix}1 & 2\end{matrix}\right]\]
    +
    +
    +
    +
    +
    matrise.T # Transponer matrisen
    +matrise.rref() # Radreduser
    +matrise.eigenvals() # Egenverdier
    +matrise.eigenvects() # Egenvektorer
    +matrise.diagonalize() # Diagonalisering
    +matrise.det() # Determinanten
    +
    +
    +
    +
    +
    +\[\displaystyle -2\]
    +
    +
    +

    Du kan også bruke numpy-biblioteket til lineær algebra:

    +
    +
    +
    m1 = np.array([[1,2],[3,4]])
    +m2 = np.array([[3,3],[5,5]])
    +egenverdi = np.linalg.eig(m1) # Egenverdier og egenvektorer
    +norm = np.linalg.norm(m1)
    +determinant = np.linalg.det(m1)
    +invers = np.linalg.inv(m1)
    +likning = np.linalg.solve(m1, m2)
    +likning2 = np.linalg.tensorsolve(m1, m2[:,0]) # Løser ax = b for x
    +
    +
    +
    +
    +
    +
    +

    Taylor-rekker**#

    +
    +
    +
    funksjon = exp(x)
    +funksjon.series(x, 0, 5)
    +
    +
    +
    +
    +
    +\[\displaystyle 1 + x + \frac{x^{2}}{2} + \frac{x^{3}}{6} + \frac{x^{4}}{24} + O\left(x^{5}\right)\]
    +
    +
    +
    +
    +
    f = 1/cos(x)
    +f.series(x, 0, 10)
    +
    +
    +
    +
    +
    +\[\displaystyle 1 + \frac{x^{2}}{2} + \frac{5 x^{4}}{24} + \frac{61 x^{6}}{720} + \frac{277 x^{8}}{8064} + O\left(x^{10}\right)\]
    +
    +
    +
    +
    +
    + + + + +
    + + + + + + +
    + + + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/tema5_modellering/differensiallikninger.html b/docs/tema5_modellering/differensiallikninger.html new file mode 100644 index 00000000..ed0508c7 --- /dev/null +++ b/docs/tema5_modellering/differensiallikninger.html @@ -0,0 +1,1842 @@ + + + + + + + + + Differensiallikninger og kontinuerlige modeller — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + + + +
    + +
    +

    Differensiallikninger og kontinuerlige modeller#

    +
    +

    Læringsutbytte

    +

    Etter å ha arbeidet med dette temaet, skal du kunne:

    +
      +
    1. Forklare hva som menes med differensiallikninger, og hvordan slike likninger kan brukes til å modellere ulike systemer.

    2. +
    3. Forklare og implementere Eulers metode (Forward Euler).

    4. +
    5. Løse ordinære differensiallikninger med egne Python-funksjoner og funksjoner fra Scipy-biblioteket.

    6. +
    +
    +
    +

    Differensiallikninger#

    +

    Vi har tidligere sett på modeller som beskriver endringer ved bestemte tidssteg, for eksempel den enkleste modellen for utviklingen i antall smittede ved et influensautbrudd:

    +
    +\[I_{n+1}=I_n+aI_n\]
    +

    Vi kan beskrive modellen ovenfor med ord slik: Antall smittede ved neste tidspunkt er lik antall smittede ved forrige tidspunkt pluss en endring i antall smittede. Endringen er her gitt ved en vekstfaktor ganger antall smittede ved forrige tidspunkt. Det betyr at endringen er proporsjonal med antall smittede. Dette er et eksempel på en differenslikning, der vi finner en tallfølge, som for eksempel beskriver antall smittede i en populasjon eller antall gauper i et økosystem. Differenslikninger kan brukes der vi kan nøye oss med å beskrive systemet vårt på diskrete, altså bestemte, tider. Men hva hvis vi ønsker å beskrive systemet på ethvert tidspunkt, altså den momentane endringen? Da må vi bruke den deriverte. La oss første skrive differenslikningen på en annen form:

    +
    +\[I_{n+1} - I_n = aI_n\]
    +
    +\[\Delta I = aI_n\]
    +

    Nå har vi et uttrykk for endringen i systemet. Delta (\(\Delta\)) betyr her endring eller forskjell. Dersom denne endringen skjer mellom to tidspunkter som er så nær hverandre som mulig (\(\Delta t\) nærmer seg null), får vi den momentane endringen. Dette skriver vi slik:

    +
    +\[I'(t) = aI(t)\]
    +

    Dette er ikke lenger en differenslikning, for her beskriver vi systemet med en kontinuerlig funksjon, og ikke funksjonsverdier på bestemte tidspunkter. Vi kaller slike likninger for differensiallikninger. En differensiallikning (også kalt difflikning) er en likning som inneholder den deriverte av en funksjon. Det vil si at differensiallikninger beskriver den momentane endringen i et system, altså endringen på ethvert tidspunkt. Når vi løser en differensiallikning, får vi en funksjon, eller funksjonsverdiene til en funksjon.

    +

    Differensiallikninger er svært anvendelige. De brukes til å beskrive endring i alt fra molekyler i en kjemisk reaksjon til bakterier i en petriskål eller bevegelsen til satelitter og planeter. De brukes også til å modellere overføring av informasjon i hjernen, smitteutvikling, økonomisk vekst, inntekt og investeringer, klima, miljø og vær. De fleste difflikninger er ikke løsbare for hånd. Derfor er det svært nyttig å kunne løse dem numerisk.

    +
    +

    Differensiallikninger

    +

    En differensiallikning er en likning som inneholder den deriverte av en funksjon. I de fleste praktiske situasjoner beskriver slike likninger sammenhengen mellom endringen, \(f'(t)\), og tilstanden, \(f(t)\), til et system ved tida \(t\).

    +
    +

    Det vil altså si at en difflikning er en sammenheng mellom den deriverte til en funksjon, altså endringen i funksjonen, og funksjonen selv. Når vi løser en difflikning, får vi ikke et uttrykk for \(x\), som når vi løser likninger – vi får et uttrykk for \(f(x)\). Siden vi som oftest løser difflikninger på datamaskinen, får vi heller ikke et uttrykk for \(f(x)\), men vi får funksjons_verdier_.

    +

    Siden både endringen og tilstanden i et system er avhengig av hvordan systemet er til å begynne med, trenger vi alltid initialbetingelser (startbetingelser) for å løse difflikninger. For eksempel trenger vi antall smittede ved t = 0 for å kunne regne ut antall smittede ved neste tidssteg. Vi må derfor alltid oppgi initialbetingelser når vi skal simulere et system.

    +
    +

    Eksempler på differensiallikninger#

    +

    Dersom du møter på differensiallikninger i matematikk, er de ofte satt opp som enkle uttrykk, for eksempel slik:

    +
      +
    1. \(y' = 1\)

    2. +
    3. \(y' = y\)

    4. +
    5. \(y' - 2x = -1\)

    6. +
    +

    Dersom likningene betyr noe praktisk, pleier vi å skrive dem litt annerledes. Her er eksempler på differensiallikninger som kan brukes til å beskrive ulike systemer:

    +
      +
    1. Bakterievekst: \(B'(t) = kB(t)\)

    2. +
    3. CO\(_2\)-utslipp: \(U'(t) = aU(t)\left(1 - \frac{U(t)}{b}\right)\)

    4. +
    5. Fallende ball: \(v'(t) = -g - \frac{kv(t)^2}{m}\)

    6. +
    +
    +

    Underveisoppgave

    +

    Studer differensiallikningene ovenfor og forklar med ord hva de beskriver (både overordnet og hvert ledd for seg).

    +
    +

    Legg merke til at modellene ikke kan bevises eller utledes. Det er matematiske modeller som vi kan ha en hypotese om at stemmer godt med virkeligheten. Hvis vi for eksempel tror at veksten til bakteriene vil flate ut, justerer vi dette ved å legge til et ledd som gir logistisk vekst. Modellene må så etterprøves ved for eksempel å sammenlikne med reelle data. Modellering er derfor en prosess der vi kontinuerlig sammenlikner modell med virkelighet for å forbedre modellen.

    +
    +
    +

    Newtons 2. lov#

    +

    Et annet viktig eksempel på en differensiallikning er Newtons 2. lov. Newtons 2. lov er grunnlaget for simuleringer av alt fra satellitt- og planetbaner til molekyler, som vi snart skal se eksempler på. Loven sier at summen (\(\Sigma\)) av krefter som virker på et legeme er lik produktet av massen og akselerasjonen til legemet:

    +
    +\[\sum F = ma\]
    +
    +\[a = \frac{\sum F}{m}\]
    +

    Dersom vi har en modell som beskriver kreftene som virker på et legeme, kan vi derfor regne ut akselerasjonen. Og siden \(a(t) = v'(t) = s''(t)\), kan vi formulere Newtons 2. lov som en differensiallikning. Da kan vi løse denne likningen og finne farten og posisjonen til et legeme på en hvilken som helst tid, gitt en startposisjon og en startfart (initialverdier).

    +
    +\[v'(t) = \frac{\sum F}{m}\]
    +

    Vi kan til og med formulere dette som en difflikning som inneholder den andrederiverte. Dette kaller vi en andreordens difflikning:

    +
    +\[s''(t) = \frac{\sum F}{m}\]
    +

    La oss modellere et enkelt system, for eksempel en fallende kule. I modellen vår ønsker vi å ta hensyn til både gravitasjon og luftmotstand. Da er \(\sum F = - G + L\), dersom vi velger positiv retning oppover. Vi skriver også akselerasjonen som en funksjon, siden den varierer med tida. Da får vi at:

    +

    \(\sum F = ma(t)\)

    +

    \(a(t) = \frac{\sum F}{m}\)

    +

    \(a(t) = - \frac{G}{m} + \frac{L}{m}\)

    +

    Deretter må vi sette inn modeller for gravitasjonskraften og luftmotstanden. Gravitasjonen på jorda kan enkelt beskrives med modellen \(G = mg\), der \(m\) er massen i kg og \(g \approx 9.8\) m/s\(^2\), som er tyngdeakselerasjonen. En enkel modell for luftmotstand er \(L = -kv\), der k er en konstant som varierer med legemets form og massetetthet, og \(v\) er farten til legemet. Konstanten \(k\) må bestemmes eksperimentelt.

    +

    \(a(t) = \frac{mg}{m} - \frac{kv(t)}{m}\)

    +

    \(v'(t) = g - \frac{kv(t)}{m}\)

    +

    Her ser vi at den siste likningen inneholder den deriverte av farten (altså akselerasjonen). Altså er dette en differensiallikning.

    +
    +
    +
    +

    Eulers metode#

    +

    Vi har altså en startverdi \(f(x_0)\) og ønsker å finne \(f(x_0 + dx)\), altså neste funksjonsverdi. I tillegg har vi et uttrykk for den deriverte av funksjonen, nemlig differensiallikningen. Du kjenner faktisk allerede til et uttrykk som inneholder en funksjon og dens deriverte, nemlig definisjonen av den deriverte. La oss bruke den til å utlede en metode for å finne \(f(x + dx)\). Vi bruker den numeriske definisjonen der vi tilnærmer grenseverdiene med en dx (\(\Delta x\)) som er så liten som mulig:

    +
    +\[f'(x) \approx \frac{f(x+dx) - f(x)}{dx}\]
    +

    Til å begynne med kjenner vi \(f(x)\), altså \(f(x_0)\). Dette er initialbetingelsen, for eksempel startkonsentrasjonen \(c(t_0)\) i eksempelet ovenfor. Vi kjenner også et uttrykk for den deriverte, nemlig differensiallikningen. I tillegg bestemmer vi selv tidssteget dx, men husk at det verken bør være for lite eller for stort. Den eneste ukjente i den numeriske tilnærmingen til den deriverte er altså \(f(x+dx)\). Det er jo nettopp \(f(x+dx)\) vi prøver å finne, fordi det beskriver tilstanden til systemet ved neste tidssteg. Med litt enkel algebra får vi omformet uttrykket slik at det blir et uttrykk for \(f(x+dx)\). Vi ganger først med \(dx\) på begge sider:

    +
    +\[f'(x)\cdot dx \approx f(x+dx) - f(x)\]
    +

    Deretter får vi \(f(x+dx)\) aleine på høyre side og ender opp med følgende likning:

    +
    +\[f(x+dx) \approx f(x) + f'(x)\cdot dx\]
    +

    Dette er Eulers metode, eller nærmere bestemt Forward Euler. Metoden kalles dette fordi den tar utgangspunkt i framoverdifferansen til den deriverte. Den brukes til å løse differensiallikninger, det vil si å integrere den deriverte slik at vi finner funksjonsverdiene. Siden vi ofte har å gjøre med funksjoner som varierer med tid, kaller vi gjerne dx for dt.

    +

    Eulers metode er en iterativ algoritme. Vi starter derfor med \(f(x_0)\) og finner de påfølgende funksjonsverdiene slik:

    +
    +\[f(x_1) \approx f(x_0) + f'(x_0)\cdot \Delta x\]
    +
    +\[f(x_2) \approx f(x_1) + f'(x_1)\cdot \Delta x\]
    +
    +\[f(x_3) \approx f(x_2) + f'(x_2)\cdot \Delta x\]
    +
    +\[...\]
    +
    +

    Eulers metode (Forward Euler)

    +

    Vi kan finne funksjonsverdiene \(f(t_{k+1})\) ved å bruke funksjonsverdien \(f(t_k)\) og den deriverte av funksjonen ved tida \(t_k\), \(f'(t_k)\) sammen med en steglengde \(dt\) som representerer en liten \(\Delta t\).

    +
    +\[f(t_{k+1}) = f(t_k) + f'(t_k)\cdot dt\]
    +
    +
    +

    Implementering#

    +

    Vi starter med et enkelt eksempel der vi løser difflikningen \(f'(x) = x\) (som er det samme som \(y' = x\)). Vi gjør det først med en while-løkke der vi appender til lister for å spare på og til slutt plotte verdiene. Stort sett er det sammme framgangsmåte hver gang vi løser en difflikning:

    +
      +
    1. Definer initialbetingelser (for eksempel \(y_0\)).

    2. +
    3. Definer hvilke verdier vi skal evaluere funksjonen i, altså et intervall \([x_0, x_{slutt}]\). Husk at vi bare kan derivere og integrere numerisk i bestemte punkter. Vi får altså ikke funksjoner når vi integrerer en differensiallikning – vi får funksjonsverdier.

    4. +
    5. Definer en steglengde. Denne bør være “ganske” liten, som da vi så på numerisk derivasjon. Som regel er \(dx = 1\cdot 10^{-8}\) en god verdi, men du kan gjerne kjøre med for eksempel \(dx = 1\cdot 10^{-3}\), slik at det ikke skal ta så lang tid å kjøre programmet.

    6. +
    7. Lag lister eller arrayer og legg initialbetingelser og startverdier inn i disse. Disse trenger vi for å kunne plotte resultatene til slutt. Dersom du bare er interessert i slutt-tilstanden, trenger du ikke dette trinnet.

    8. +
    9. Lag ei løkke som går igjennom hele det definerte intervallet:

      +
        +
      • Regn ut neste verdi av endringen \(f'(x)\), gitt av differensiallikninga vår.

      • +
      • Løs difflikninga med Eulers metode (eller en annen metode, når du lærer om det).

      • +
      • Oppdater den uavhengige variabelen (x, t eller liknende) med tidssteget.

      • +
      +
    10. +
    11. Skriv ut eller visualiser resultatene.

    12. +
    +
    +
    +
    import matplotlib.pyplot as plt
    +
    +y0 = 1                         # intitialbetingelse for y
    +x0 = 0                         # startverdi for x
    +x_slutt = 5.0                  # sluttverdi for x
    +dx = 1E-5                      # steglengde
    +
    +x_liste = [x0]     # Legger inn første x-verdi i en liste for å spare på verdiene
    +y_liste = [y0]     # Legger inn initalbetingelsen for y i en liste for å spare på verdiene
    +
    +# Disse variablene skal oppdateres i løkka, mens x0 og y0 holdes konstante
    +x = x0             
    +y = y0
    +
    +while x < x_slutt:
    +    yder = x        # Difflikningen vi skal løse
    +    y = y + yder*dx # Eulers metode for å finne neste y-verdi
    +    x = x + dx      # Oppdaterer x-verdien med steglengden
    +    x_liste.append(x)
    +    y_liste.append(y)
    +
    +plt.plot(x_liste,y_liste)
    +plt.xlabel("x")
    +plt.ylabel("y")
    +plt.grid()
    +plt.show()
    +
    +
    +
    +
    +../../_images/43ebfd6b7b35a3e45cc6585150e9044e5e174e7e5d327281e3d6a391075cb09a.png +
    +
    +

    For å rydde opp litt i programmet vårt, kunne vi også definert difflikninga som en funksjon. Dette gjør det litt enklere å finne igjen og endre likningen.

    +
    +
    +
    import matplotlib.pyplot as plt
    +import numpy as np
    +
    +y0 = 1                         # intitialbetingelse for y
    +x0 = 0                         # startverdi for x
    +x_slutt = 5.0                  # sluttverdi for x
    +dx = 1E-5                      # steglengde
    +
    +x_liste = [x0]     # Legger inn første x-verdi i en liste for å spare på verdiene
    +y_liste = [y0]     # Legger inn initalbetingelsen for y i en liste for å spare på verdiene
    +
    +# Disse variablene skal oppdateres i løkka, mens x0 og y0 holdes konstante
    +x = x0             
    +y = y0
    +
    +# Definerer difflikningen som en funksjon
    +def fder(x):
    +    return x
    +
    +while x < x_slutt:
    +    yder = fder(x)   # Difflikningen vi skal løse
    +    y = y + yder*dx # Eulers metode for å finne neste y-verdi
    +    x = x + dx      # Oppdaterer x-verdien med steglengden
    +    x_liste.append(x)
    +    y_liste.append(y)
    +
    +plt.plot(x_liste,y_liste)
    +plt.xlabel("x")
    +plt.ylabel("y")
    +plt.grid()
    +plt.show()
    +
    +
    +
    +
    +../../_images/90689173cfb73ca2d496af6d98329d29d44f823c984a1cb677c21307cd67c0f7.png +
    +
    +
    +

    Underveisoppgave

    +

    Modifiser programmet ovenfor slik at du løser difflikningen \(f'(x) = \frac{1}{y+1} - lg(x+2)\). Bruk samme initialbetingelse og løsningsintervall.

    +
    + +

    Vi kan også bruke arrayer istedenfor lister. Dette gir en raskere kode, og kan være en fordel i mange tilfeller. Da appender vi ikke til lister, men bruker indeksering. Vi bruker også gjerne en for-løkke, og da må vi vite hvor mange ganger løkka skal gå. Dette kan vi regne ut ved å ta differansen mellom \(x_0\) og \(x_{slutt}\), som vi dividerer på steglengden \(dx\). Da får vi antall intervaller mellom \(x_0\) og \(x_{slutt}\) med avstand \(dx\). For å finne antall punkter, må vi derfor ta antall intervaller og legge til 1:

    +

    \(N_{punkter} = \frac{x_{slutt} - x_0}{dx} + 1\)

    +
    +

    Underveisoppgave

    +

    Forklar hvorfor antallet punkter N kan regnes ut som ovenfor.

    +
    +
    +
    +
    import matplotlib.pyplot as plt
    +import numpy as np
    +
    +# Plotteverdier
    +x0 = 0                         # startverdi for x
    +x_slutt = 5.0                  # sluttverdi for x
    +dx = 1E-5                      # steglengde
    +N = int((x_slutt - x0)/dx) + 1 # antall punkter
    +
    +# Initialbetingelser
    +y0 = 1                  # intitialbetingelse for y
    +
    +# Differensiallikningen
    +def yder(y,x):
    +    return x
    +
    +# Lager arrayer for å spare på verdiene
    +x = np.zeros(N)
    +y = np.zeros(N)
    +y[0] = y0     # Legger inn initalbetingelsen for y
    +x[0] = x0
    +
    +# Eulers metode
    +for i in range(N-1):
    +    y[i+1] = y[i] + yder(y[i],x[i])*dx
    +    x[i+1] = x[i] + dx
    +
    +plt.plot(x,y)
    +plt.xlabel("x")
    +plt.ylabel("y")
    +plt.grid()
    +plt.show()
    +
    +
    +
    +
    +../../_images/e41f560e6efb11cecf94f7d9b80cf2fc3fe96085c27ce725460717be44708d9c.png +
    +
    +
    +

    Underveisoppgave

    +

    Forklar programmet ovenfor linje for linje. Modifiser også programmet slik at det løser difflikninga \(f'(x) = 1\).

    +
    +
    +
    +

    Ulike initialbetingelser#

    +

    Dersom vi endrer initialbetingelsene, får vi naturlig nok andre løsninger. Her har vi et program som regner ut og plotter ut

    +
    +
    +
    # Plotteverdier
    +x0 = 0                         # startverdi for x
    +x_slutt = 5.0                  # sluttverdi for x
    +dx = 1E-3                      # steglengde
    +N = int((x_slutt - x0)/dx) + 1 # antall punkter
    +
    +# Initialbetingelser
    +y0 = 1                  # intitialbetingelse for y
    +
    +# Differensiallikningen y' = 1
    +def yder(y,x):
    +    return 1 
    +
    +# Lager arrayer for å spare på verdiene
    +x = np.zeros(N)
    +y = np.zeros(N)
    +x[0] = x0
    +
    +y_liste = [0, 1, 2, 3]
    +for y0 in y_liste:
    +    y[0] = y0 
    +    for i in range(N-1):
    +        y[i+1] = y[i] + yder(y[i],x[i])*dx
    +        x[i+1] = x[i] + dx
    +    plt.plot(x,y,label=f"y0={y0}")
    +plt.grid()
    +plt.legend()
    +plt.xlabel("x")
    +plt.ylabel("y")
    +plt.show()
    +
    +
    +
    +
    +../../_images/f5122c9722337dcdd40e9f3b8e0a6635c872a67a3f1403d11bdc77d8969b95ce.png +
    +
    +

    Det er enkelt å se at funksjonene vi får ovenfor er \(y = x + C\), der \(C\) avhenger av initialbetingelsene. Vi får derimot ikke selve funksjonsuttrykket som output, men vi får, som nevnt før, funksjonsverdiene. Vi kan også løse likningen \(y' = y + x\) på samme måte. Den analytiske løsningen for denne likningen er \(y = Ce^x - x - 1\). Resultatene blir da slik for de samme initialbetingelsene som ovenfor:

    +
    +
    +
    def yder(y,x):
    +    return y + x
    +
    +y_liste = [0, 1, 2, 3]
    +for y0 in y_liste:
    +    y[0] = y0 
    +    for i in range(N-1):
    +        y[i+1] = y[i] + yder(y[i],x[i])*dx
    +        x[i+1] = x[i] + dx
    +    plt.plot(x,y,label=f"y0={y0}")
    +plt.grid()
    +plt.legend()
    +plt.xlabel("x")
    +plt.ylabel("y")
    +plt.show()
    +
    +
    +
    +
    +../../_images/fa1f5774a5a1badb497922da7b485ff31172d95d88a144988128c1ea08e776ac.png +
    +
    +
    +

    Underveisoppgave

    +

    Løs differensiallikninga \(y' + y^3 = \sin(x)\) med Eulers metode fra \(x = 0\) til \(x = 10\). Bruk initialbetingelsen \(y(0) = 0\). Vær nøye med hvordan du definerer funksjonen.

    +
    +
    +
    +
    +

    Kontinuerlige modeller#

    +

    Modeller som er basert på differensiallikninger, er kontinuerlige. Det betyr at de har funksjonsverdier for alle verdier av x (eller tilsvarende variabler). Nå skal det sies at når vi simulerer med utgangspunkt i kontinuerlige matematiske modeller på en datamaskin, blir resultatene ikke helt kontinuerlig. Det er fordi datamaskinen ikke kan operere med uendelig mange eller uendelig små (eller store) verdier. Vi sier at vi diskretiserer problemet når vi benytter en numerisk algoritme for å løse det. Men dersom stegene er tilstrekkelig små, er det en god tilnærming til en kontinuerlig løsning.

    +

    Vi har allerede sett på diskrete modeller for blant annet CO\(_2\)-utslipp. Da tok vi utgangspunkt i følgende diskrete modell:

    +
    +\[u_{n+1} = u_n + au_n\]
    +

    som er det samme som:

    +
    +\[u_{n+1} - u_n = au_n\]
    +

    Vi ser at vi på venstresiden har forskjellen i utslipp fra en tid til en annen. Det kan vi skrive som \(\Delta u\), som jo er et uttrykk for (gjennomsnittlig) endring. Da får vi:

    +
    +\[\Delta u = au_n\]
    +

    Dersom vi ønsker den momentane endringen istedenfor den gjennomsnittlige, kan vi uttrykke dette ved den deriverte:

    +
    +\[u'(t) = au(t)\]
    +

    Dermed har vi en kontinuerlig modell som beskriver den momentane endringen i et system! Vi kan da bruke denne modellen til å finne tilstanden til systemet ved ethvert lite tidssteg dt. Da kan vi bruke Eulers metode, som ovenfor. Her er et eksempel på hvordan vi kan løse modellen ovenfor:

    +
    +
    +
    import matplotlib.pyplot as plt 
    +
    +tid_slutt = 2100  # År etter 1825
    +tid = 1825        # Startår
    +a = 0.045         # Utslippsrate
    +u = 0.01          # Utslipp i 1825 (tonn per innbygger)
    +dt = 1E-5
    +
    +utslipp = [u]
    +årstall = [tid]
    +
    +while tid <= tid_slutt:
    +    uder = a*u      # Differensiallikningen
    +    u = u + uder*dt # Eulers metode
    +    tid = tid + dt  # Går fram ett tidssteg
    +    utslipp.append(u)
    +    årstall.append(tid)
    +
    +plt.plot(årstall, utslipp)
    +plt.title("Utslipp av CO$_2$ i Norge")
    +plt.xlabel("År")
    +plt.ylabel("Tonn CO$_2$ per innbygger")
    +plt.show()
    +
    +
    +
    +
    +../../_images/bd62d9b7a0632af407cc578af2075fb922a4e8f14f3d062eefa34d2cb05f134f.png +
    +
    +

    Hvis vi sammenlikner med den diskrete modellen for det samme systemet, kan vi se at de to modellene ikke gir det samme resultatet. Dette er fordi utslippsraten a ikke har samme enhet. I det diskrete systemet representerte a vekstraten per uke, mens i den kontinuerlige modellen gir a den momentane vekstraten. De to parameterne må derfor bestemmes uavhengig av hverandre.

    +
    +

    Underveisoppgave

    +

    Følgende modell kan beskrive størrelsen til en populasjon med bæreevnen b, vekstrate a og populasjonsstørrelse N:

    +
    +\[N'(t) = aN(t)\left(1-\frac{N(t)}{b}\right)\]
    +

    Tida t er gitt i timer.

    +
      +
    1. Lag et program som simulerer utviklingen i en bakteriekoloni med N(t\(_0\)) = 100, a = 0,005 og en bæreevne på 120 000 bakterier.

    2. +
    3. Hvilke forutsetninger og begrensninger ligger til grunn for modellen?

    4. +
    5. Når vil populasjonen nå bæreevnen?

    6. +
    7. Lag programmet med arrayer istedenfor lister. Husk at append ikke fungerer med arrayer, og at vi må forhåndsdefinere størrelsen til disse arrayene på forhånd. Størrelsen på disse bør være gitt ved (forklar hvorfor!):

    8. +
    +
    N = int((tid_slutt-tid_start)/dt) + 1 # Antall punkter
    +
    +
    +
    + +
    +
    +

    Newtons 2. lov#

    +

    Vi så at Newtons 2. lov gir oss differensiallikninger når vi omformulerer akselerasjonen som den deriverte av farten.

    +
    +\[a(t) = v'(t) = s''(t)\]
    +

    Vi kan altså få både en førsteordens og en andreordens difflikning ut av Newtons 2. lov. Det betyr også at vi kan finne akselerasjon og fart ut fra strekning ved å derivere, og motsatt finne fart og posisjon fra akselerasjon ved å integrere (løse difflikningen). Vi kan med andre ord skrive Newtons 2. lov slik:

    +
    +\[\sum F = ma(t) = mv'(t) = ms''(t)\]
    +

    La oss løse Newtons 2. lov for det enkle systemet vi så på tidligere: Når vi slipper ei kule fra en viss høyde, kan vi regne med at to krefter virker på kula, nemlig tyngdekraften og luftmotstand. For en lett ball som faller, kan vi si at summen av krefter er summen av gravitasjonskraften og luftmotstanden i \(y\)-retning på en graf. Vi definerer positiv retning oppover \(y\)-aksen.

    +
    +\[\sum F = - G + L = ma(t) = mv'(t) = ms''(t)\]
    +

    Vi ser at vi nå har den deriverte av hastigheten, som er akselerasjonen. For å kunne løse denne likningen, må vi finne ut hva summen av kreftene er. Du husker kanskje at \(G = mg\), og at en mulig modell for luftmotstand er \(L = -kv\), der \(k\) er en konstant som blant annet er avhengig av legemets form. Da kan vi skrive uttrykket slik:

    +
    +\[ma(t) = - mg + (- kv(t))\]
    +
    +\[a(t) = \frac{- mg - kv(t)}{m} = - g - \frac{kv(t)}{m}\]
    +

    Dette er en førsteordens difflikning der vi har en funksjon \(v(t)\), og dens deriverte \(a(t)\) (det vil si \(v'(t)\)). La oss løse denne numerisk:

    +
    +
    +
    import matplotlib.pyplot as plt
    +import numpy as np
    +
    +# Konstanter
    +k = 0.1   # Luftmotstand
    +g = 9.81  # Tyngdeakselerasjon i m/s^2
    +m = 1     # Masse i kg
    +v0 = 0    # Starthastighet i m/s
    +s0 = 0    # Startposisjon i m
    +
    +# Tidsvariabler
    +dt = 1E-5 # Tidsintervall i s
    +tid_start = 0
    +tid_slutt = 10
    +N = int((tid_slutt-tid_start)/dt) + 1 # Antall punkter
    +
    +# Arrayer
    +t = np.zeros(N)
    +a = np.zeros(N)
    +v = np.zeros(N)
    +s = np.zeros(N)
    +
    +# Startverdier
    +t[0] = tid_start
    +v[0] = v0
    +s[0] = s0
    +
    +for i in range(N-1):
    +    a[i] = - g - k*v[i]/m
    +    v[i+1] = v[i] + a[i]*dt
    +    s[i+1] = s[i] + v[i]*dt + 0.5*a[i]*dt**2
    +    t[i+1] = t[i] + dt
    +
    +plt.plot(t,s)
    +plt.title('Fallende kule')
    +plt.xlabel('Tid (s)')
    +plt.ylabel('strekning (m)')
    +plt.show()
    +
    +
    +
    +
    +../../_images/2e05f5a750b2558a8fb8e9ac2fdfc2b004e5d2e32e7a7200406b566cf098c810.png +
    +
    +
    +

    Underveisoppgave

    +

    Studer programmet ovenfor og forklar hvordan det fungerer linje for linje. Test programmet med andre modeller for luftmotstand. Vurder de ulike modellene opp mot hverandre.

    +
    +
    +
    +

    ODE-løsere#

    +

    La oss se nå se på hvordan vi kan løse differensiallikninger med funksjoner fra scipy-biblioteket. De differensiallikningene vi har sett på, kaller vi for ODE-er (ordinary differential equations) for å skille dem fra PDE-er (partial differential equations). Vi skal ikke se på partielle differensiallikninger her, men mange av prinsippene for å løse dem er like som for ODE-er. Vi kommer til å bruke ODE som forkortelse videre.

    +

    Vi starter med enkle differensiallikninger for å illustrere de grunnleggende prinsippene. En enkel differensiallikning vi kan begynne med, er:

    +
    +\[y' = t - y\]
    +

    Denne kan vi ganske enkelt definere som en funksjon og løse med en annen funksjon som heter solve_ivp (“solve initial value problem”).

    +
    +
    +
    import numpy as np
    +import matplotlib.pyplot as plt
    +from scipy.integrate import solve_ivp
    +
    +def dy_dt(t, y):
    +    return t - y
    +
    +a = 0
    +b = 4
    +t = np.linspace(a,b,1000)
    +y0 = 1
    +y_int = solve_ivp(dy_dt, [a,b], [1], t_eval=t)
    +
    +plt.xlabel("t")
    +plt.ylabel("y")
    +plt.plot(y_int.t, y_int.y[0])
    +
    +plt.show()
    +
    +
    +
    +
    +../../_images/3117535104d683b7a607ce112e5ba9fe9a870830b64b39d5002384960ce99401.png +
    +
    +

    Vi definerer her et sett med t-verdier slik at vi får et intervall å integrere over. Dernest er det viktig å ha en startbetingelse for \(y\) (husk: vi trenger den forrige \(y\)-verdien for å finne den neste). Funksjonen solve_ivp er en generell løser for differensiallikninger og tar som første parameter en funksjon av typen \(f(t,y)\) – legg merke til rekkefølgen på parameterne. Deretter legger vi inn tidsintervallet som vi skal integrere over. Dette legges inn som en liste.

    +

    Etter tidsintervallet legges startbetingelsene inn. Siden solve_ivp er en løser som kan løse systemer av differensiallikninger, må vi lage startbetingelsen som en liste. Deretter har vi en del valgfrie parametre. Vi har brukt parameteren t_eval her fordi den sier hvilke \(t\)-verdier vi skal regne ut \(y\)-verdier for. Hvis vi ikke gjør dette, får vi integralet kun evaluert i noen få punkter. Det kan være greit hvis vi for eksempel bare ønsker sluttverdien, men ikke hvis vi ønsker å plotte resultatene.

    +

    Dersom du prøver å printe ut resultatene fra solve_ivp, får du mye ulik informasjon. Derfor henter vi ut spesifikke t- og _y-_verdier ved å skrive y_int2.t, som henter ut tidsverdiene, og y_int2.y[0], som henter ut y-verdiene. Legg merke til at \(y\) kan inneholde flere elementer ettersom vi kan løse systemer av differensiallikninger. Her må vi eksplisitt be om det første elementet (element 0 med Python-språk), selv om arrayen ikke inneholder flere \(y\)-verdier.

    +
    +

    Underveisoppgave

    +

    Løs differensiallikningen \(f'(t) = \cos(t)\) med \(f(t_0) = 0\) med solve_ivp fra \(t=0\) til \(t=\pi\). Plott den analytiske løsningen \(f(t) = \sin(t)\) i samme koordinatsystem for å sammenlikne.

    +
    +

    Algoritmene som brukes i slike biblioteker, er ofte sammensatte algoritmer som benytter seg av flere prinsipper enn en enkelt metode. Som standard benytter solve_ivp seg av en blanding av Runge-Kutta 4 og Runge-Kutta 5, kalt RK45. Dette er gode “go to”-metoder.

    +
    +
    +

    Oppgaver#

    +
    +

    Oppgave 1

    +

    Utled Eulers metode og skriv et program for hånd som implementerer denne metoden.

    +
    +
    +

    Oppgave 2

    +

    Løs differensiallikningene nedenfor med Eulers metode (og analytisk hvis du får til). Bruk initialbetingelse \(f(0) = 0\), og velg løsningsområde/løsningsintervall selv.

    +
      +
    1. \(f'(x) = 1\)

    2. +
    3. \(f'(x) = x\)

    4. +
    5. \(f'(x) = 4 + 3\cdot f(x)\)

    6. +
    7. \(y' + 4y + 3x = 0\)

    8. +
    9. \(xy' + y = 3x^2 + 4x\)

    10. +
    11. \(f'(x) = x + y^2\)

    12. +
    +
    +
    +

    Oppgave 3

    +

    Hvorfor må vi ha initialbetingelser for å løse en differensiallikning numerisk?

    +
    +
    +

    Oppgave 4

    +

    Det er alltids fint å ha definert funksjoner i et program – da kan du gjenbruke dem i andre programmer! +a. Skriv et program der Eulers metode er definert som en funksjon. Funksjonen skal ta inn som argument yder, som antas å være en funksjon av to variable \(x\) og \(y\). Funksjonen skal også ta inn en initialbetingelse y0, startverdien og sluttverdien til x og steglengden dt. Funksjonene skal så returnere resultatene, altså lister eller arrayer med verdier av y og x. Tips: For at en funksjon skal returnere to verdier, kan du skrive return x,y.

    +

    b. Bruk funksjonen til å løse likninga \(y'(x) = -\dfrac{xy}{x^2+1}\) der \(y(0) = 1\) og \(x \in [0,7]\). +Tips: Funksjonen returnerer to verdier:y og x. Du kan hente to eller flere verdier fra en funksjon, ved å gjøre slik:

    +
    x, y = # Her kaller du på funksjonen din med riktige parametre
    +
    +
    +

    Da vil variabelen x settes til å være lik den returnerte verdien for x, og variabelen y settes til å være lik den returnerte verdien for y.

    +

    c. Plott resultatet ditt sammen med den analytiske løsninga for å se om funksjonen din er implementert riktig:

    +
    +\[y(x) = \frac{1}{\sqrt{x^2 + 1}}\]
    +
    +
    +

    Oppgave 5

    +

    Programmet under løser likninga \(f'(x) = 2f(x)\) der \(f(0) = 2\) for \(x\in[0,1]\):

    +
    import matplotlib.pyplot as plt
    +import numpy as np
    +
    +N = 1000
    +a = 0
    +b = 1
    +x = np.linspace(a,b,N)
    +dx = x[1]-x[0]
    +
    +fder = np.zeros(N)
    +f = np.zeros(N)
    +
    +f[0] = 2
    +for i in range(N-1):
    +	fder[i] = 2*f[i]
    +	f[i+1] = f[i] + dx*fder[i]
    +plot(x,f)
    +xlabel("x")
    +ylabel("f(x)")
    +title("Plott av f(x)")
    +show()
    +
    +
    +
    +
    +

    Oppgave 6

    +

    Kari begynner med å ha en årsinntekt på \(I(0) = 500 000\) kroner og har nylig oppretta en sparekonto. Hun har derfor \(S(0) = 0\) kroner i sparekontoen.

    +

    Vi velger å prøve ut følgende modeller for forandringen i inntekten hennes \(I'(t)\) og sparekontoen hennes \(S'(t)\):

    +
    +\[I'(t) = I(0) \cdot \ln(1.006)\cdot 1.006^t\]
    +
    +\[S'(t) = 0.01\cdot I(t)\]
    +

    Lag et program som finner ut hvordan \(S(t)\) vil utvikle seg i løpet av 15 år. Visualiser resultatet.

    +
    +
    +

    Oppgave 7

    +

    Lag et program som regner ut posisjon, hastighet og akselerasjon til et legeme som faller. Bruk luftmotstandskoeffisienten 0.1 og masse 1 kg.

    +

    a. Benytt først en enkel modell uten luftmotstand, det vil si kun fritt fall.

    +

    b. Legg inn luftmotstand og plott i samme koordinatsystem som beregninga uten luftmotstand. Sammenlikn resultatene og kommenter svaret.

    +

    c. Varier systematisk massen og luftmotstandskoeffisienten og se hva dette gjør med resultatene.

    +
    +
    +

    Oppgave 8

    +

    Lag et program som modellerer en fiskepopulasjon. Du kan selv bestemme modellen du bruker og initialbetingelsene. Forklar hvorfor du brukte akkurat denne modellen.

    +
    +
    +

    Oppgave 9

    +

    Newtons avkjølingslov forteller oss at temperaturen \(T(t)\) etter ei tid \(t\) til et objekt i en omgivelse forandrer seg på følgende måte:

    +
    +\[T(t) = -k(T(t) - T_o)\]
    +

    der \(k\) er er en konstant som forteller hvor raskt temperaturen forandrer seg og \(T_o\) representerer temperaturen til omgivelsen objektet befinner seg i.

    +

    a. Et varmeanlegg i en bil påvirker innetemperaturen \(T(t)\) i bilen. Temperaturen inni bilen kan uttrykkes ved:

    +
    +\[T'(t) = -0.16(T(t) - 20)\]
    +

    der \(T(0) = 7^oC\).

    +

    Lag et program som bruker Eulers metode til å finne funksjonsverdiene til \(T(t)\) for \(t \in [0, 30]\). Plott resultatene.

    +

    b. Som du kanskje så i deloppgave a, tar det fryktelig lang tid før temperaturen i bilen når vanlig romtemperatur som ligger på \(20^oC\). Du finner derfor en som prøver å fikse på varmeanlegget billigst mulig. Uheldigvis greier personen å gjøre varmeanlegget verre. Etter noen målinger finner du at temperaturen forandrer seg på følgende måte:

    +
    +\[T'(t) = -0.16(T(t) - T_o(t))\]
    +

    der \(T_o(t) = 5\cdot\cos\left(\frac{\pi^2}{15}\cdot t\right) + 19\)

    +

    Utvid programmet ditt slik at det plotter bilens temperatur med det (enda mer) ødelagte varmeanlegget. Sammenlikn utfallene.

    +
    +
    +

    Oppgave 10

    +

    Arne skal på familiemiddag og har lovet familien sin å ta med sin smakfulle tilberedelse av en kalkun. Fem timer før middagen kommer han plutselig på middagsavtalen. Uheldigvis bruker han vanligvis fire timer på å kjøre til familien hvis han kjører omtrent 80 km i timen.

    +

    Problemet er at kalkunen må være i en ovn på 180\(^o\)C i tre timer for å bli spiseklar. Han veit at under panseret på bilen kan det bli varmere enn dette. Han bestemmer seg derfor for å prøve å tilberede kalkunen under panseret mens han kjører.

    +

    Arne har lagd følgende modell for temperaturen under panseret etter ei tid \(t\):

    +
    +\[T_o(t) = 35\log(v(t)+1)+0.4v(t)\sin(2\pi p\cdot t) + 37.7\]
    +

    der \(v(t)\) er farten til bilen og \(p\) er et tilfeldig flyttall mellom 1 og 2. Verdien til \(p\) forandrer seg for hver tid \(t\)

    +

    Fra Newtons avkjølingslov vil temperaturen \(T(t)\) til kalkunen forandre seg på følgende måte:

    +
    +\[T'(t) = -4\cdot(T(t) - T_o(t))\]
    +

    Akselerasjonen \(a(t)\) til bilen etter ei tid \(t\) vil følge modellen

    +
    +\[a(t) = 2000e^{-500t^2}\]
    +

    Lag et program som finner kalkunens temperatur etter fire timer under panseret. Plott temperaturen og forklar ut fra plottet om kalkunen vil være spiseklar eller ikke etter kjøreturen (I episoden Food Fables fra Mythbusters kan du se at dette faktisk er mulig!).

    +
    +
    +
    +

    Videoer#

    +
    +
    + + + + +
    + + + + + + +
    + + + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/tema5_modellering/diskret_modellering.html b/docs/tema5_modellering/diskret_modellering.html new file mode 100644 index 00000000..457c1061 --- /dev/null +++ b/docs/tema5_modellering/diskret_modellering.html @@ -0,0 +1,1100 @@ + + + + + + + + + Modellering — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Modellering

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    + +
    + +
    +

    Modellering#

    +
    +

    Kun virkeligheten er virkeligheten i seg selv.

    +

    —Andreas Haraldsrud (og sikkert mange andre også)

    +
    +

    Når vi mennesker skal beskrive virkeligheten, lager vi en modell som beskriver noe, men ikke alt, om det vi observerer. Hver modell har sine styrker og svakheter, og ingen modeller representerer virkeligheten eksakt. Modeller er bare forenklinger, men dette er egentlig en nødvendighet for å kunne systematisere virkeligheten. Som sagt er virkeligheten for kompleks til å representeres eksakt.

    +

    Se på bildene nedenfor. Hva viser bildene?

    + +

    For hver enkelt modell er det viktig å være oppmerksom på begrensningene og forutsetningene som gjelder. Dette er enklere å bli bevisst på når vi lager og/eller utforsker modellene selv, og dette er lettere å få til med programmering. Programmering er et viktig verktøy for å forstå og utforske matematiske modeller, og på den måten få bedre innsikt i et naturvitenskapelig problem.

    +

    En modelleringsprosess innebærer flere trinn. For det første må vi ha en observasjon eller et fenomen vi ønsker å studere. Ut fra visse egenskaper ved dette systemet lager vi en modell som skal beskrive systemet under visse betingelser. En modell er en forenklet representasjon av virkeligheten. Denne modellen kan vi teste, for eksempel gjennom eksperimenter eller simuleringer. Da får vi data som vi kan bruke til å evaluere modellens gyldighet. Deretter kan vi eventuelt justere modellen og gjøre nye simuleringer og målinger.

    +

    Modellering er altså en kontinuerlig prosess der modeller hele tiden evalueres og justeres opp mot virkeligheten. Programmering kan gjøre denne prosessen enklere fordi vi med noen tastetrykk kan endre modellen og observere utfallet av dette.

    +

    Når en arbeider med modeller, åpner det for utforsking og kritisk refleksjon. En kan endre både rammebetingelser og variabelverdier med et tastetrykk og utforske konsekvensene for modellen. Det finnes ikke riktige og gale svar, og differensiering er en naturlig del av arbeidsformen. Modeller kan variere i kompleksitet, og en viktig del av modelleringsprosessen er å undersøke modellene opp mot virkeligheten, for eksempel med systematiske eksperimenter og observasjoner.

    +
    +

    Diskrete modeller#

    +

    En diskret modell er en modell som beskriver tilstanden i et system på gitt tidspunkter. Det vil si at vi ikke har en kontinuerlig funksjon som beskriver tilstandene i systemet på et hvert tidspunkt. Et eksempel er en diskret populasjonsmodell som beskriver størrelsen på en gaupebestand hver andre måned. En kontinuerlig modell vil derimot beskrive populasjonen på ethvert tidspunkt. Regresjonsmodeller er kontinuerlige modeller fordi modellene er kontinuerlige funksjoner. Det samme er modeller basert på differensiallikninger, som vi skal se på seinere.

    +

    Diskrete modeller kan beskrives med differenslikninger. Eksempelet med gaupepopulasjonen kan beskrives som en differenslikning: Antall gauper er lik antall gauper ved forrige tidssteg pluss en endring. Det er denne endringen vi skal finne ut av når vi modellerer. Et annet eksempel på sammenhenger som kan beskrives som differenslikninger, er mønsteret i tallfølger.

    +
    +

    Differenslikninger

    +

    En differenslikning er en likning som beskriver forskjellen mellom etterfølgende verdier til en funksjon av diskrete variabler.

    +
    +

    La oss se på et eksempel på en diskret modell. Her ser vi på modeller som beskriver utslipp av CO\(_2\). Vi bygger opp modellen gradvis.

    +
    +

    Oppgave

    +

    Vi ser først på en diskret modell der utslippet øker med en prosentvis andel hvert år. Følgende modell kan da beskrive utslippet:

    +
    +\[u_{n+1} = u_n + au_n\]
    +

    Her er u antall tonn CO\(_2\) som slippes ut per innbygger, og a er en parameter som bestemmer utslippsraten (vekstfaktoren). Tilpasning av slike parametere er en viktig del av modellering. Parameterne representerer ulike forhold i det virkelige livet, men det kan være vanskelig å finne gode verdier for dem. Ofte bruker vi reelle data til dette.

    +

    Oppgave 1:

    +

    Forklar for hverandre med ord hva modellen sier. Drøft også i hvilke sammenhenger det kan være hensiktsmessig å bruke en slik modell. Er det en realistisk modell i noen sammenhenger?

    +

    Oppgave 2:

    +

    Fyll inn det som mangler i programmet nedenfor for å simulere utslippet. Dersom du vil, kan du selvfølgelig viske ut alt og bygge programmet fra grunnen av. Varier med ulike verdier av a og forklar betydningen av denne parameteren.

    + +

    Oppgave 3:

    +

    Hva er utslippet i 2100? Tror du dette er realistisk? Finn utslippet i 2018 etter denne modellen, og sammenlikn med det reelle utslippet i Norge og India ved hjelp av data som er gitt i disse tekstfilene: Norge og India.

    +

    Oppgave 4:

    +

    Varier utslippsraten a slik at modellen passer best mulig med utslippet til enten Norge eller India. Du kan lese inn filene i programmet og plotte de reelle dataene i samme graf som modellen din. Kommenter hvor godt modellen passer med dataene. Hva er i så fall gyldighetsområdet til modellen?

    +

    Oppgave 5:

    +

    La oss utvide modellen og innføre flere parametere. Vi kan tenke oss en begrensningsparameter b som sier oss hva hver person maksimalt kan oppnå av utslipp. Følgende modell tar hensyn til dette:

    +
    +\[u_{n+1} = u_n + au_n\left(1 - \frac{u_n}{b}\right)\]
    +

    Beskriv modellen, og prøv å forklare alle leddene og faktorene. Hva skjer med uttrykket i parentesen når u øker?

    +

    Oppgave 6:

    +

    Erstatt den gamle modellen med den nye modellen. Beskriv det du ser.

    +

    Oppgave 7:

    +

    Eksperimenter med a og b slik at modellen passer godt med dataene.

    +

    Oppgave 8:

    +

    I 2015 setter vi inn tiltak som gjør at veksten stagnerer og blir negativ (minker med 4,5 % hvert år). Legg dette inn i simuleringen og kommenter utviklingen. Er utviklingen realistisk?

    +

    Ekstraoppgaver: Utforsk modellen

    +
      +
    • Finn ut hvor store tiltakene (a) må være for at vi bare skal slippe ut 2 tonn CO2 per innbygger i Norge i 2100.

    • +
    • Gjenta simuleringene med India. Lag en modell som følger omtrent samme utvikling som en av modellene for Norge. Når vil India nå samme topputslipp som Norge?

    • +
    +
    +
    +
    + + + + +
    + + + + + + +
    + + + +
    + +
    + +
    + On this page +
    + +
    + +
    + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git "a/docs/tema5_modellering/maskinl\303\246ring_titanic.html" "b/docs/tema5_modellering/maskinl\303\246ring_titanic.html" new file mode 100644 index 00000000..b6a99097 --- /dev/null +++ "b/docs/tema5_modellering/maskinl\303\246ring_titanic.html" @@ -0,0 +1,1465 @@ + + + + + + + + + Maskinlæring — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + + + +
    + +
    +

    Maskinlæring#

    +
    +
    +
    import pandas as pd
    +import numpy as np
    +import seaborn as sns
    +import matplotlib.pyplot as plt
    +
    +# Lese dataene
    +titanic = pd.read_csv("Datafiler/titanic.csv")
    +
    +
    +
    +
    +
    +

    Utforsking og opprydding av datasettet#

    +

    La oss undersøke dataene og rydde litt, dersom vi trenger det.

    +
    +
    +
    # Skriver ut fem første linjer
    +titanic.head()
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    survivedpclasssexagesibspparchfareembarkedclassdeckembark_townalivealone
    003022.0107.2500SThirdNaNSouthamptonnoFalse
    111138.01071.2833CFirstCCherbourgyesFalse
    213126.0007.9250SThirdNaNSouthamptonyesTrue
    311135.01053.1000SFirstCSouthamptonyesFalse
    403035.0008.0500SThirdNaNSouthamptonnoTrue
    +
    +
    +

    Vi ser at det ikke er alle kategoriene vi trenger. Siden vi er interessert i hvem som overlevde, og hvorfor, kan det også være lurt å sjekke hvor mange dette var.

    +
    +
    +
    # Hvor mange overlevde?
    +overlevde_prosent = (titanic['survived'].sum()/titanic['survived'].count())*100
    +print(f'{overlevde_prosent:.2f} % overlevde')
    +
    +
    +
    +
    +
    38.38 % overlevde
    +
    +
    +
    +
    +
    +
    +
    # Sletter kategorier vi ikke er interessert i
    +titanic.pop('deck')
    +titanic.pop('fare')
    +titanic.pop('embarked')
    +titanic.pop('embark_town')
    +
    +
    +
    +
    +
    0      Southampton
    +1        Cherbourg
    +2      Southampton
    +3      Southampton
    +4      Southampton
    +          ...     
    +886    Southampton
    +887    Southampton
    +888    Southampton
    +889      Cherbourg
    +890     Queenstown
    +Name: embark_town, Length: 891, dtype: object
    +
    +
    +
    +
    +
    +
    +
    # Print antall manglende verdier i kolonnene
    +print(titanic.isna().sum())
    +
    +
    +
    +
    +
    survived      0
    +pclass        0
    +sex           0
    +age         177
    +sibsp         0
    +parch         0
    +class         0
    +alive         0
    +alone         0
    +dtype: int64
    +
    +
    +
    +
    +
    +
    +
    # Fyller inn manglende alder med gjennomsnittet
    +gjennomsnitt = titanic['age'].mean()
    +titanic['age'].fillna(gjennomsnitt, inplace = True)
    +
    +
    +
    +
    +
    +
    +

    Visualiseringer#

    +

    La oss først se hvilken effekt klasse og kjønn hadde på overlevelsessjansene:

    +
    +
    +
    # Passasjerklasse
    +sns.countplot(x='pclass', hue='survived', data=titanic, palette='ocean')
    +plt.title("Antall døde (0) og overlevende (1) av hver klasse")
    +plt.xlabel("Klasse")
    +plt.ylabel("Antall")
    +plt.show()
    +
    +
    +
    +
    +../../_images/eb2c0c50232e8ee10c858a18b10488cab9656db52b44aec919f64f19baf99000.png +
    +
    +
    +
    +
    # Passasjerklasse
    +sns.countplot(x='sex', hue='survived', data=titanic, palette='ocean')
    +plt.title("Antall døde (0) og overlevende (1) av hvert kjønn")
    +plt.xlabel("Kjønn (0 = han, 1 = hun)")
    +plt.ylabel("Antall")
    +plt.show()
    +
    +
    +
    +
    +../../_images/59c5f36ba4130d5a34d72cc6d9d6ae0c56e5e22b75662dc5179558b55b164510.png +
    +
    +

    Vi ser, ikke overraskene at menn på 3. klasse hadde særdeles dårlige odds. Vi har alderen til passasjerene, men ikke

    +
    +
    +
    # Sortere etter alder
    +aldersklasse = []
    +
    +for alder in titanic['age']:
    +    if alder > 15:
    +        aldersklasse.append("voksen")
    +    else:
    +        aldersklasse.append("barn")
    +        
    +titanic['aldersklasse'] = aldersklasse
    +
    +sns.countplot(x='aldersklasse', hue='survived', data=titanic, palette='ocean')
    +
    +
    +
    +
    +
    <AxesSubplot:xlabel='aldersklasse', ylabel='count'>
    +
    +
    +../../_images/5dc317a401e1ee4bbd97933eb575f2bffcefb5685caded7c9d32a8ee12c4ee5f.png +
    +
    +
    +
    +
    # *Frivilling: Erstatte kategorier for visualisering med nye kategorier
    +"""
    +overlevende = {0: "døde", 1: "overlevde"}
    +titanic["survived"] = titanic["survived"].map(overlevende)
    +titanic.head(5)
    +"""
    +# *Frivillig: Telle forekomster av ulike tilfeller
    +"""
    +titanic["survived"].count()
    +titanic["survived"].value_counts()
    +"""
    +None # Printer None for å unngå output
    +
    +
    +
    +
    +
    +
    +

    Maskinlæring#

    +

    Vi skal nå lage en modell som kan forutsi hvorvidt en person overlever på Titanic eller ikke, gitt data om personen. Vi velger ut hvilke data vi ønsker å bruke som kriterium for overlevelse, og spesifiserer kategorien “survived” som målkategorien vår:

    +
    +
    +
    from sklearn.model_selection import train_test_split, cross_val_score
    +from sklearn import tree
    +from sklearn.metrics import accuracy_score, confusion_matrix
    +
    +
    +
    +
    +
    +
    +
    kriterier = titanic[['pclass', 'sex', 'age', 'sibsp', 'parch']]
    +kategorier = titanic['survived'] 
    +
    +
    +
    +
    +

    I maskinlæring er det viktig at modellen vår klarer å forutsi data som kommer utenfra datasettet vi trener modellen med. Derfor deler vi ofte opp dataene i et treningssett og et testsett. Treningssettet bruker vi til å trene modellen, testsettet til å teste og evaluere modellen i etterkant. Vi blander ikke disse dataene. Vi kan generere slike data med funksjonen train_test_split(). Her bruker vi 80 % av dataene til trening og 20 % til testing. Du bør bruke minst 70 % av dataene dine til trening.

    +
    +
    +
    testandel = 0.2 # Andel brukt til testing
    +ml_data = train_test_split(kriterier, kategorier, test_size=testandel, random_state=42)
    +
    +treningskriterier = ml_data[0]
    +testkriterier = ml_data[1]
    +treningskategorier = ml_data[2]
    +testkategorier = ml_data[3]
    +
    +
    +
    +
    +

    Nå kan vi lage modellen vår. Vi bruker en algoritme som heter Decision Tree Classifier. Det er basert på sammensatte og forgreinede valgtrær, der alle kombinasjoner av kriterier blir utforsket. Betingede sannsynligheter for ulike hendelser blir beregnet, og de mest sannsynlige utfallene blir framhevet basert på kombinasjonen av kriteriene. Først trener vi modellen:

    +
    +
    +
    modell = tree.DecisionTreeClassifier()
    +modell.fit(treningskriterier, treningskategorier)
    +
    +
    +
    +
    +
    DecisionTreeClassifier()
    +
    +
    +
    +
    +

    Det var det - da har vi en modell! Den ligger nå i et objekt som vi har kalt modell. Vi kan få innsyn i hvordan modellen ser ut, men det kan fort bli litt uoversiktlig og teknisk. La oss først nøye oss med å sjekke hvordan modellen takler testsettet vårt.

    +
    +
    +

    Test og validering av modellen#

    +
    +
    +
    modellkategorier_forutsett = modell.predict(testkriterier)
    +accuracy_score(testkategorier, modellkategorier_forutsett)
    +
    +
    +
    +
    +
    0.7653631284916201
    +
    +
    +
    +
    +

    Dette betyr at modellen forutsier riktig ca. 76 % av gangene. Det er en ok modell. For å få bedre oversikt over hva modellen forutsier riktig og hva den feiler på, kan vi konstruere en såkalt “Confusion Matrix” (forvirringsmatrise/feilmatrise):

    +
    +
    +
    cm = confusion_matrix(modellkategorier_forutsett, testkategorier)
    +
    +import seaborn as sns
    +sns.heatmap(cm, annot=True, cmap='viridis')
    +plt.title("Forvirringsmatrise")
    +plt.xlabel("Predikerte verdier")
    +plt.ylabel("Sanne verdier")
    +plt.show()
    +
    +
    +
    +
    +../../_images/f0681d9c20edcb52108fad9f41b80e29e9a8e8f6246bbea8ef9b96bbbef76c5e.png +
    +
    +

    La oss benytte disse dataene og telle hvor mange datapunkter vi har, hvor mange som overlevde og døde, og deretter beregne hvor stor prosentandel av overlevende og døde som modellen klarte å forutsi korrekt.

    +
    +
    +
    presisjon_død = (87/(87+25))*100
    +presisjon_overleve = (49/(49+18))*100
    +print(f'(Andel korrekt forventet død {presisjon_død:.2f} %)')
    +print(f'(Andel korrekt forventet overlevelse {presisjon_overleve:.2f} %)')
    +
    +
    +
    +
    +
    (Andel korrekt forventet død 77.68 %)
    +(Andel korrekt forventet overlevelse 73.13 %)
    +
    +
    +
    +
    +

    Det er større presisjon i å forutsi død. Dette er forventet, siden modellen har trent på flere tilfeller av død enn av overlevelse.

    +

    La oss helt til sist visualisere modellen vår. Vi velger maks dybde på modellen til 3 for at vi ikke skal få alt for mange forgreininger.

    +
    +
    +
    plt.figure(figsize=(20,10))
    +titanic.pop('survived')
    +tree.plot_tree(modell, max_depth=2, feature_names=titanic.columns, class_names=['Døde', 'Overlevde'], filled=True, label=None,) 
    +None
    +
    +
    +
    +
    +../../_images/822bb093ce5d8e8331f4d28f1b58fe00d16582985b3d4e9145c1457e3b55d4d6.png +
    +
    +
    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/tema5_modellering/modelleringsrapport.html b/docs/tema5_modellering/modelleringsrapport.html new file mode 100644 index 00000000..ff1fcbbb --- /dev/null +++ b/docs/tema5_modellering/modelleringsrapport.html @@ -0,0 +1,1396 @@ + + + + + + + + + Rapporteksempel: Smittemodellering — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Rapporteksempel: Smittemodellering

    + +
    + +
    +
    + +
    + +
    +

    Rapporteksempel: Smittemodellering#

    +

    Navn Navnesen

    +

    Rapport 11.4.2023

    +

    (Nedenfor følger et eksempel på hvordan du kan lage en modelleringsrapport. Rapporten er ikke helt perfekt, men står til høy måloppnåelse - karakteren 5. Spesielt burde det vært mer utforsking og variasjon av ulike parametre (som a og b). Eulers metode kunne også vært beskrevet i teoridelen, og det kunne vært mer drøfting og forklaring underveis. Men alt i alt viser rapporten hvordan strukturen og oppsettet på din rapport bør være).

    +
    +

    1. Hensikt#

    +

    Vi skal her utforske ulike modeller for smitteutvikling. Smittemodellering kan være nyttig for å forutsi smitte ved årlige sykdomsforløp, slik som influensa, og for å undersøke effekten av ulike tiltak, slik som vaksinasjon.

    +
    +
    +

    2. Teori#

    +

    Vi ser her på tre ulike modeller for smittespredning.

    +
    +

    Modell 1#

    +

    Vi starter med en smittespredningsmodell er der ingen blir friske av den smittsomme sykdommen. Da antar vi at antall smittede utvikler seg slik:

    +
    +\[I_{n+1}=I_n+aI_n\]
    +

    Her er I antall smittede (infected) og a er en parameter som bestemmer spredningsraten. Smitteraten a kan variere med blant annet sykdommens spredningsmønster, hvor smittsom spredningen er, hvilke tiltak vi har i samfunnet (hygiene, munnbind, kontaktmønster), befolkningstetthet og mobilitet.

    +
    +
    +

    Modell 2#

    +

    Vi kan utvide modellen vår og innføre en ny kategori av individer som er mottakelige for smitte. Vi kaller dem S (susceptibles).

    +

    Vi kan anta at de smittede da utvikler seg slik.

    +
    +\[I_{n+1}=I_n+aI_nS_n\]
    +

    Her multipliserer vi de smittede med de mottakelige for å simulere hendelsen der et smittet individ møter et mottakelig individ og kan overføre smitten. Hvorvidt smitten overføres eller ikke, bestemmes av a. Siden smittede individer ikke lenger er mottakelige, kan de mottakelige individene beskrives slik:

    +
    +\[S_{n+1}=S_n-aI_nS_n\]
    +
    +
    +

    Modell 3#

    +

    La oss deretter utforske en modell som også tar hensyn til at det går an å bli frisk fra sykdommen. Da innfører vi en kategori til, nemlig de friske og tidligere smittede. Disse har da immunitet og kan ikke bli smittet igjen. Vi kaller dem R (“recovered”), og de kan beskrives slik:

    +
    +\[R_{n+1}=R_n+bI_n\]
    +

    Da må de smittede utvikle seg slik:

    +
    +\[I_{n+1}=I_n+aS_nI_n-bI_n\]
    +

    Antall usmittede, men mottakelige individer, S, må fortsatt følge denne modellen:

    +
    +\[S_{n+1}=S_n-aI_nS_n\]
    +

    Disse tre likningene utgjør det vi kaller “SIR-modellen” for smitteutvikling. Parameteren b beskriver her bedringsraten, altså hvor stor andel av de smittede som blir friske, beskrevet av leddet \(b\cdot I_n\). Bedringsraten kommer an på sykdommen som spres, og hvor fort folk blir friske av sykdommen.

    +
    +
    +
    +

    3. Resultater og drøfting#

    +

    Vi ser på tre modellene for seg, og plotter resultatene gitt bestemte verdier av parameterne a og b. Først importerer vi nødvendige biblioteker:

    +
    +
    +
    import numpy as np
    +import matplotlib.pyplot as plt
    +import pandas as pd
    +
    +
    +
    +
    +
    +

    Modell 1#

    +

    Vi starter med å se på den enkleste modellen, som forutsetter at ingen dør eller blir friske, og/eller at det ikke finnes noen immunitet mot sykdommen.

    +
    +
    +
    N = 157759 # Populasjonsstørrelse
    +a = 0.2 # Kontaktrate per uke
    +tid_slutt = 48 # Antall uker vi ønsker å simulere
    +
    +# Startverdier
    +I = 3 # Antall smittede til å begynne med
    +
    +# Lister for å spare på verdiene
    +smittede = [I]
    +t = [0]
    +
    +for tid in range(tid_slutt):
    +    I = I + a*I # Modellen
    +    smittede.append(I)
    +    t.append(tid)
    +
    +plt.plot(t,smittede,label='Smittede')
    +plt.xlabel('Antall uker fra siste uke i september 2004')
    +plt.ylabel('Antall individer')
    +plt.legend() # Viser merkelapper
    +plt.show()
    +
    +
    +
    +
    +../../_images/f4d0b4cefb2578b8a4ba3ef088ea4fe1d7cc35fe39694eded5c8d2074da491d2.png +
    +
    +

    Modellen sier at antall smittede individer ved neste tidssteg er lik antall smittede individer ved forrige tidssteg + en viss andel (a) av antall individer som sprer smitten videre.

    +

    Modellen forutsetter enten at det ikke er noen immunitet innenfor smittemengden, altså at ingen smittede møter på personer som allerede er smittet. Det kan være et realistisk bilde i en stor populasjon i begynnelsen av et smitteforløp. Det er derfor usannsynlig at modellen beskriver utvikling langt fram i tid. Modellen forutsetter også at ingen blir friske i løpet av den tiden vi ser på. Igjen peker dette på at modellen kun kan gjelde for et kort tidsrom.

    +
    +
    +

    Modell 2#

    +

    Vi utvider modellen ved å legge til en kategori for mottakelige individer, altså individer som kan få sykdommen.

    +
    +
    +
    N = 157759     # Populasjonsstørrelse
    +a = 0.5/N       # Kontaktrate
    +tid_slutt = 48       # Antall uker vi ønsker å simulere
    +
    +# Startverdier
    +I = 3       # Antall smittede til å begynne med
    +S = N-I     # Antall usmittede til å begynne med
    +
    +# Lister for å spare på verdiene
    +mulige = [S]
    +smittede = [I]
    +t = [0]
    +
    +for i in range(tid_slutt):
    +    # Lager variabelen endring for å ikke endre I eller S før ny I eller S beregnes
    +    endring = a*S*I 
    +    I = I + endring
    +    S = S - endring
    +    # Legger inn verdier i listene
    +    smittede.append(I)
    +    mulige.append(S)
    +    t.append(i)
    +    
    +plt.plot(t,smittede,label='Smittede')
    +plt.plot(t,mulige,label='Mulige')
    +plt.xlabel('Antall uker fra siste uke i september 2004')
    +plt.ylabel('Antall individer')
    +plt.legend() # Viser merkelapper
    +plt.show()
    +
    +
    +
    +
    +../../_images/0b18793c2e6ef0df310504faf22e79e4802a18f1e4db262635eae7cc13f62451.png +
    +
    +

    I modellen blir alle smittet, og ingen blir friske. Modellen er derfor lite egna til å studere smitteutvikling, verken over kort tid (individene smittes for langsomt) eller over lang tid (individene blir aldri friske), med mindre vi har å gjøre med en sykdom som gir betydelige langtidsvirkninger.

    +

    Modellen sier at antall mottakelige er lik antall mottakelige ved forrige tidssteg minus andelen som er smittet. Årsaken til at vi også ganger inn de mottakelige her, er at smittespredningen nå avhenger av både mottakelige og de som allerede er smittet. At vi multipliserer disse faktorene er ikke nødvendigvis det eneste rette. Det kan vise seg at modellen avhenger enda mer av antall mottakelige enn smittede. Da kan vi for eksempel kvadrere antall mottakelige i modellen:

    +
    +\[I_{n+1}=I_n+aI_nS_n^2\]
    +

    Husk at dette er modeller, og at det ofte er flere muligheter for å lage en modell som beskriver et system. Vi har ennå ikke validert modellen vår.

    +
    +
    +

    Modell 3#

    +

    Den siste modellen vi skal se på, innfører en kategori for friskmeldte, og dermed immune, individer.

    +
    +
    +
    N = 157759 # Populasjonsstørrelse
    +a = 4/N # Kontaktrate
    +b = 3.5 # Bedringsrate
    +tid_slutt = 48 # Antall uker vi ønsker å simulere
    +
    +# Startverdier
    +I = 3 # Antall smittede til å begynne med
    +S = N-I # Antall usmittede til å begynne med
    +R = 0
    +
    +# Lister for å spare på verdiene
    +mulige = [S]
    +smittede = [I]
    +friskmeldte = [R]
    +t = [0]
    +
    +for i in range(tid_slutt):
    +    endring_smittede = a*S*I
    +    endring_friske = b*I
    +    I = I + endring_smittede - endring_friske
    +    S = S - endring_smittede
    +    R = R + endring_friske
    +    # Legger inn verdier i listene
    +    smittede.append(I)
    +    mulige.append(S)
    +    friskmeldte.append(R)
    +    t.append(i)
    +
    +plt.plot(t,smittede,label='Smittede')
    +plt.plot(t,mulige,label='Mulige')
    +plt.plot(t,friskmeldte,label='Friskmeldte')
    +plt.xlabel('Antall uker fra siste uke i september 2004')
    +plt.ylabel('Antall individer')
    +plt.legend() # Viser merkelapper
    +plt.show()
    +
    +plt.title('Antall smittede')
    +plt.xlabel('Antall uker fra siste uke i september 2004')
    +plt.ylabel('Antall individer')
    +plt.plot(t,smittede)
    +plt.grid()
    +plt.show()
    +
    +print(int(max(smittede)))
    +
    +
    +
    +
    +../../_images/8060312ef77d987b8d12addf21cb5591a69ba4f4439dcd4598a83d487a8cddc1.png +../../_images/2e90d7dcb2f3b6bdc7797db2bd4180cfd3989b629b045b4274528796c1bd0f34.png +
    1509
    +
    +
    +
    +
    +

    Vi tar utgangspunkt i denne modellen og sammenlikner de smittede med et datasett som viser antall smittede i en influensasesong. Vi justerer a og b slik at de passer best mulig med dataene.

    +
    +
    +
    N = 157759     # Populasjonsstørrelse
    +a = 4/N      # Kontaktrate
    +b =  3.5        # Bedringsrate
    +tid_slutt = 48 # Antall uker vi ønsker å simulere
    +
    +# Startverdier
    +I = 3       # Antall smittede til å begynne med
    +S = N-I     # Antall usmittede til å begynne med
    +R = 0
    +
    +# Lister for å spare på verdiene
    +mulige = [S]
    +smittede = [I]
    +friskmeldte = [R]
    +t = [0]
    +
    +for i in range(tid_slutt):
    +    endring_smittede = a*S*I
    +    endring_friske = b*I
    +    # Legg inn likningene her
    +    I = I + endring_smittede - endring_friske
    +    S = S - endring_smittede
    +    R = R + endring_friske
    +    # Legger inn verdier i listene
    +    smittede.append(I)
    +    mulige.append(S)
    +    friskmeldte.append(R)
    +    t.append(i)
    +
    +# Les og plott dataene her
    +data = pd.read_csv('influensa.txt', skiprows=2,delimiter=',')
    +uke = data["uker"]
    +smittede_data = data["infiserte"]
    +
    +plt.plot(uke, smittede_data, label = 'Datapunkter')
    +plt.plot(t, smittede, label = 'Modelldata')
    +plt.title('Sammenlikning av modelldata med reelle data')
    +plt.legend()
    +plt.show()
    +
    +
    +
    +
    +../../_images/b171b2e3b415000d9bc1676033c21f3bae12d14889b78426d7d5ebd0a4b8e62b.png +
    +
    +

    Modell 3 viser et forløp der antall smittede øker sakte i starten, og raskere fram til ca. uke 13. Da snur trenden, og antall smittede går nedover fra ca. uke 17. Det er maksimalt 1509 smittede i populasjonen på samme tid. Etter at antall smittede har nådd 0 (ca. uke 27), har vi ifølge modellen oppnådd flokkimmunitet, eller influensasesongen er over, og ingen flere individer blir smittet. Merk at modellen forutsetter at ingen dør av sykdommen, noe som ikke stemmer helt med influensa. Det er derimot ofte ganske få døde i forhold til befolkningen, så modellen gir uansett et godt estimat på hvor mange som er smittet til enhver tid i løpet av sesongen.

    +

    Vi validerer modellen og tilpasser parameterne ved hjelp av datasettet som viser antall smittede i en populasjon på \(N = 157 759\) testede individer. Den best tilpassede kurven får vi for \(a \approx 4/N\) og \(b \approx 3.5\). Siden dataene og modellen beskriver et vanlig influensavirus som kommer igjen hver høst i omtrent samme variant, kan modellen brukes til å estimere smittsomhet og sykdomstopper også for neste sesong. Parameterne i modellen, spesielt smitteraten, må likevel tilpasses sosiale og helsemessige forhold i den aktuelle populasjonen, f.eks. befolkningstetthet, generell hygiene og levestandard.

    +
    +
    +

    5. Konklusjon#

    +

    Vi har modellert ulike forløp for spredning av smitte ved hjelp av tre ulike smittemodeller med ulik kompleksitet. Modellene er validert ved å utføre parameterjustering med grunnlag i et reellt datasett som beskriver smitte

    +

    Vi kan utvide modellen ved å innføre en kategori for døde, i tillegg til en vaksineringseffekt, der vi starter med at en viss andel av populasjonen er immune ved sykdommens start.

    +
    +
    +
    + + + + +
    + + + + + + +
    + + + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/tema5_modellering/newtons_avkjolingslov.html b/docs/tema5_modellering/newtons_avkjolingslov.html new file mode 100644 index 00000000..478f871d --- /dev/null +++ b/docs/tema5_modellering/newtons_avkjolingslov.html @@ -0,0 +1,1069 @@ + + + + + + + + + Newtons avkjølingslov — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Newtons avkjølingslov

    + +
    +
    + +
    +
    +
    + +
    + +
    +

    Newtons avkjølingslov#

    +
    +
    +
    from pylab import *
    +
    +
    +
    +
    +

    Newtons avkjølingslov sier at forandring i temperatur skal være proporsjonal i forhold til differansen mellom temperaturen til objektet og temperaturen til omgivelsen.
    +
    +\( +\Large +\begin{equation*} + \frac{\partial T}{\partial t} = {-k} (T - T_{omg}) +\end{equation*}\)

    +
    +
    +
    #dT/dt = -k(T-Tomg)
    +
    +#Startverider
    +T0= 75      #temperatur vann i kopp
    +T_omg = 18  #temperatur omgivelse
    +k = 0.5     #k-verdien til koppen
    +
    +
    +#Tidsparamtere
    +t0 = 0                     #starttid
    +t_slutt = 13               #slutt-tid
    +dt= 1e-5                   #steglengde
    +N = int((t_slutt - t0)/dt) #Intervall
    +
    +# Arrays
    +T = zeros (N+1) 
    +t = zeros (N+1)
    +
    +T[0] = T0
    +t[0] = t0
    +
    +## Eulers
    +for i in range (N):
    +    Tder = -k*(T[i]-T_omg)
    +    T[i+1] = T[i] + Tder*dt
    +    t[i+1] = t[i] + dt
    +    
    +plot (t,T)
    +grid ()
    +title ('Avkjøling av vann i kopp')
    +xlabel ('tid (min)')
    +ylabel ('temperatur i celsius')
    +
    +
    +
    +
    +
    Text(0, 0.5, 'temperatur i celsius')
    +
    +
    +../../_images/7431ca11e2ec6477c4eb68b1a605551cb75831c8a5a3080b22afc10396d067b6.png +
    +
    +
    +
    +
    #Vi har målt temperaturen av vann i en kopp over 12.5 minutter. Nedenfor er resultatet: 
    +
    +temperatur_kopp = array([75,73,71,70,69,68.5,68,67,66.5,65,64.5,64,63.5,63,62.5,62,61.5,60.5,60,59,58.5,58,57.5,57,56.5,56,55])
    +tid = arange(0,len(temperatur_kopp),1)
    +
    +plot(tid/2,temperatur_kopp,label="Datapunkter") #(Tid/2 fordi det var målt per 30s)
    +plot(t,T)
    +grid()
    +title('Avkjøling av vann i kopp')
    +xlabel('tid (min)')
    +ylabel('temperatur i celsius')
    +
    +
    +
    +
    +
    Text(0, 0.5, 'temperatur i celsius')
    +
    +
    +../../_images/baf5300739aa4908dba227644c2772a8eaca7f8e113f3bb4f3adb7f0652e92e1.png +
    +
    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/tema5_modellering/pingviner.html b/docs/tema5_modellering/pingviner.html new file mode 100644 index 00000000..13d08f21 --- /dev/null +++ b/docs/tema5_modellering/pingviner.html @@ -0,0 +1,1473 @@ + + + + + + + + + Maskinlæring (med pingviner) — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Maskinlæring (med pingviner)

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    + +
    + +
    +

    Maskinlæring (med pingviner)#

    +

    Vi skal lage en maskinlæringsmodell for å artsbestemme ringpingviner, bøylepingviner og adeliepingviner.

    +pingviner +pingviner +
    +

    Datahåndtering med Pandas#

    +
    +
    +
    import pandas as pd
    +import seaborn as sns
    +
    +
    +
    +
    +
    +
    +
    pingviner = pd.read_csv("datafiler/pengwings.txt")
    +
    +
    +
    +
    +
    +
    +
    pingviner.head()
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    speciesislandbill_length_mmbill_depth_mmflipper_length_mmbody_mass_gsex
    0AdelieTorgersen39.118.7181.03750.0MALE
    1AdelieTorgersen39.517.4186.03800.0FEMALE
    2AdelieTorgersen40.318.0195.03250.0FEMALE
    3AdelieTorgersenNaNNaNNaNNaNNaN
    4AdelieTorgersen36.719.3193.03450.0FEMALE
    +
    +
    +
    +
    +
    pingviner.tail()
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    speciesislandbill_length_mmbill_depth_mmflipper_length_mmbody_mass_gsex
    339GentooBiscoeNaNNaNNaNNaNNaN
    340GentooBiscoe46.814.3215.04850.0FEMALE
    341GentooBiscoe50.415.7222.05750.0MALE
    342GentooBiscoe45.214.8212.05200.0FEMALE
    343GentooBiscoe49.916.1213.05400.0MALE
    +
    +
    +
    +
    +
    pingviner.info()
    +
    +
    +
    +
    +
    <class 'pandas.core.frame.DataFrame'>
    +RangeIndex: 344 entries, 0 to 343
    +Data columns (total 7 columns):
    + #   Column             Non-Null Count  Dtype  
    +---  ------             --------------  -----  
    + 0   species            344 non-null    object 
    + 1   island             344 non-null    object 
    + 2   bill_length_mm     342 non-null    float64
    + 3   bill_depth_mm      342 non-null    float64
    + 4   flipper_length_mm  342 non-null    float64
    + 5   body_mass_g        342 non-null    float64
    + 6   sex                333 non-null    object 
    +dtypes: float64(4), object(3)
    +memory usage: 18.9+ KB
    +
    +
    +
    +
    +
    +
    +
    pingviner["totalnebb"] = pingviner["bill_length_mm"] + pingviner["bill_depth_mm"]
    +
    +
    +
    +
    +
    +
    +
    pingviner.describe()
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    bill_length_mmbill_depth_mmflipper_length_mmbody_mass_gtotalnebb
    count342.000000342.000000342.000000342.000000342.000000
    mean43.92193017.151170200.9152054201.75438661.073099
    std5.4595841.97479314.061714801.9545365.351485
    min32.10000013.100000172.0000002700.00000047.600000
    25%39.22500015.600000190.0000003550.00000057.300000
    50%44.45000017.300000197.0000004050.00000060.350000
    75%48.50000018.700000213.0000004750.00000064.575000
    max59.60000021.500000231.0000006300.00000076.600000
    +
    +
    +
    +
    +
    sns.pairplot(pingviner, hue = "species")
    +
    +
    +
    +
    +
    <seaborn.axisgrid.PairGrid at 0x203dc524fd0>
    +
    +
    +../../_images/715dda1e7c2832668a6f076b7321f9573077ff2411fde3e678bfe3e86c9c0654.png +
    +
    +
    +
    +
    korrelasjon = pingviner.corr()
    +sns.heatmap(korrelasjon, annot=True)
    +
    +
    +
    +
    +
    <AxesSubplot:>
    +
    +
    +../../_images/09ebbf0cf8f149190963f7f5824d283c2a4ceca8c3a3d765865917474edfc3ae.png +
    +
    +
    +
    +

    Maskinlæring#

    +
    +
    +
    from sklearn.model_selection import train_test_split, cross_val_score
    +from sklearn import tree
    +from sklearn.metrics import accuracy_score, confusion_matrix
    +
    +
    +
    +
    +
    +
    +
    pingviner.dropna(inplace=True)
    +
    +
    +
    +
    +
    +
    +
    kriterier = pingviner[["body_mass_g", "bill_length_mm", "bill_depth_mm", "flipper_length_mm"]]
    +kategorier = pingviner["species"]
    +
    +
    +
    +
    +
    +
    +
    testandel = 0.20 # bruker 20 % av datasettet til å teste
    +ml_data = train_test_split(kriterier, kategorier, test_size=testandel, random_state=42)
    +
    +treningskriterier = ml_data[0]
    +testkriterier = ml_data[1]
    +treningskategorier = ml_data[2]
    +testkategorier = ml_data[3]
    +
    +
    +
    +
    +
    +
    +
    modell = tree.DecisionTreeClassifier()
    +modell.fit(treningskriterier, treningskategorier)
    +
    +
    +
    +
    +
    DecisionTreeClassifier()
    +
    +
    +
    +
    +
    +
    +
    forutsigelser = modell.predict(testkriterier)
    +accuracy_score(testkategorier, forutsigelser)
    +
    +
    +
    +
    +
    0.9850746268656716
    +
    +
    +
    +
    +
    +
    +
    modell.predict([[2000, 40, 60, 500]])
    +
    +
    +
    +
    +
    array(['Adelie'], dtype=object)
    +
    +
    +
    +
    +
    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + +
    + +
    + +
    + On this page +
    + +
    + +
    + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/tema5_modellering/regresjonsmodeller.html b/docs/tema5_modellering/regresjonsmodeller.html new file mode 100644 index 00000000..b3daccaa --- /dev/null +++ b/docs/tema5_modellering/regresjonsmodeller.html @@ -0,0 +1,1198 @@ + + + + + + + + + Regresjonsmodeller — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Regresjonsmodeller

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    + +
    + +
    +

    Regresjonsmodeller#

    +

    Regresjon er en form for modellering som brukes i mange ulike fagdisipliner, fra samfunnsvitenskap og økonomi til naturvitenskap og matematikk. Det betyr å finne en funksjon som er best tilpasset datasettet vårt. Regresjon tar ofte utgangspunkt i minste kvadraters metode, som gjør at vi får en modellfunksjon som gir minst mulig varians. Regresjonsmodeller passer derfor ofte ikke perfekt med alle, eller noen, av punktene. Modellene har heller et avvik fra gjennomsnittet av punktene (varians) som er så lite som mulig.

    +
    +

    Lineær regresjon#

    +

    Vi har tidligere sett på enkel polynomregresjon med funksjonen polyfit fra numpy-biblioteket. Denne kan brukes dersom vi for eksempel ønsker å utføre lineær regresjon eller andregradsregresjon. Men hvis vi ønsker å tilpasse dataene våre til en vilkårlig modell, må vi bruke en annen funksjon. Funksjonen curve_fit fra scipy-biblioteket har den funksjonaliteten vi ønsker. Da definerer vi en bestemt modell, i form av en Python-funksjon, som er utgangspunktet for regresjonen vår. Modellfunksjonen må ta som parameter en uavhengig variabel, i tillegg til koeffisientene/konstantene i uttrykket. Hvis vi for eksempel ønsker å gjøre en lineær regresjon, kan vi definere følgende funksjon:

    +
    +
    +
    def modell(x, a, b):
    +    return a*x + b
    +
    +
    +
    +
    +

    Her ser vi at variabelen x og konstantene a og b er gitt som parametre i funksjonen. La oss lage en lineær modell ut fra følgende data, som et eksempel:

    +
    +
    +
    x = [1, 2, 3, 4, 5]
    +y = [2.1, 3.9, 6.5, 7.1, 11.0]
    +
    +
    +
    +
    +

    Først importerer vi funksjonen fra underbiblioteket optimize, som finnes i scipy-biblioteket. Deretter bruker vi funksjonen til å lage en lineær modell som passer best mulig med dataene våre. Funksjonen curve\fit_ gir både koeffisientene a og b, men også et mål på hvor godt modellen passer dataene våre som kalles kovarians. Dette skal vi ikke se på her, men vi må passe på å lagre koeffisientene og kovariansen i ulike variabler, slik at vi får ut riktige verdier for modellen vår. Parametrene i curve_fit er modellfunksjonen vår og dataene vi vil beskrive med modellen vår (her x og y):

    +
    +
    +
    from scipy.optimize import curve_fit
    +
    +koeffisienter, kovarians = curve_fit(modell, x, y)
    +print("Koeffisienter:", koeffisienter)
    +print("Kovarians:", kovarians)
    +
    +
    +
    +
    +
    Koeffisienter: [ 2.1  -0.18]
    +Kovarians: [[ 0.06359996 -0.19079989]
    + [-0.19079989  0.69959972]]
    +
    +
    +
    +
    +

    Vi overser her de fire verdiene som utgjør kovariansen vår, og ser at vi har fått koeffisientene \(a = 2,1\) og \(b = -0,18\). Dette betyr at regresjonsmodellen har formen \(y = 2,1x - 0,18\). Koeffisientene kommer i den rekkefølgen vi har gitt i modellfunksjonen vår. La oss derfor legge dem i hver sin variabel:

    +
    +
    +
    a = koeffisienter[0]
    +b = koeffisienter[1]
    +
    +
    +
    +
    +

    Nå kan vi for eksempel plotte datapunktene og modellfunksjonen i samme koordinatsystem. Da genererer vi noen nye x-verdier som vi kan lage funksjonsverdier ut fra, og deretter bruker vi modellfunksjonen til å generere y-verdier:

    +
    +
    +
    import matplotlib.pyplot as plt
    +import numpy as np
    +
    +x_ny = np.linspace(0, 6, 1000)
    +y_modell = modell(x_ny, a, b)
    +
    +plt.plot(x_ny, y_modell, color = "cornflowerblue", label = "Tilpasset modell")
    +plt.scatter(x, y, color = "navy", label = "Datapunkter")
    +plt.xlabel("x")
    +plt.ylabel("y")
    +plt.grid()
    +plt.legend()
    +plt.show()
    +
    +
    +
    +
    +../../_images/4bc2936e1f67fec6321b2aa0b8ce2af13b91ed7ec6192b2b9575c359a17f6fe4.png +
    +
    +

    En måte å måle hvor godt modellen er tilpasset dataene våre, er å regne ut \(R^2\). Da mater vi inn de originale x-verdiene i modellen vår, og sammenlikner dem med de originale y-verdiene:

    +
    +
    +
    from sklearn.metrics import r2_score
    +
    +x = np.array(x)
    +y_predikert = modell(x,a,b)
    +
    +R2 = r2_score(y, y_predikert)
    +print("R2 =", R2)
    +
    +
    +
    +
    +
    R2 = 0.9585289514866979
    +
    +
    +
    +
    +

    En \(R^2\)-score varierer mellom 0 og 1, der 1 er perfekt tilpasning til modellen, og 0 er ingen tilpasning. Desto høyere verdi \(R^2\) har, desto bedre forklarer modellen de allerede eksisterende dataene (men ikke nødvendigvis data i framtiden!).

    +
    +
    +

    Andre regresjonsmodeller#

    +

    Hvis vi ønsker å bruke andre regresjonsmodeller, er det bare å endre modellfunksjonen vår. Dersom vi for eksempel ønsker å gjøre en logistisk regresjon av dataene våre ovenfor, kan vi definere en generell logistisk funksjon:

    +
    +\[f(x) = \frac{c}{1 + a\cdot e^{-bx}}\]
    +

    Dette kan vi gjøre enkelt i Python, og vi kan gjenta den samme prosedyren med tilpasning og plotting som med lineær regresjon. Et fullstendig program vil kunne se slik ut:

    +
    +
    +
    from scipy.optimize import curve_fit
    +import matplotlib.pyplot as plt
    +import numpy as np
    +
    +x = [1, 2, 3, 4, 5]
    +y = [2.1, 3.9, 6.5, 7.1, 11.0]
    +
    +def modell_logistisk(x, a, b, c):
    +    return c/(1 + a*np.exp(-b*x))
    +
    +koeffisienter, kovarians = curve_fit(modell_logistisk, x, y)
    +
    +a = koeffisienter[0]
    +b = koeffisienter[1]
    +c = koeffisienter[2]
    +
    +x_ny = np.linspace(0, 20, 1000)
    +y_modell = modell_logistisk(x_ny, a, b, c)
    +
    +plt.plot(x_ny, y_modell, color = "cornflowerblue", label = "Tilpasset modell")
    +plt.scatter(x, y, color = "navy", label = "Datapunkter")
    +plt.xlabel("x")
    +plt.ylabel("y")
    +plt.grid()
    +plt.legend()
    +plt.show()
    +
    +
    +
    +
    +../../_images/820328cb6d0b14cdab80081959d8119e44f4fcabe714059fb804c0a67ffdfcdd.png +
    +
    +
    +

    Oppgave

    +
      +
    1. Forklar hvordan programmet ovenfor fungerer.

    2. +
    3. Lag en modell som beskriver dataene som beskriver antall smittede som funksjon av tid.

    4. +
    5. Tolk modellen og beskriv hva den kan fortelle oss.

    6. +
    7. Regn ut \(R^2\) for modellen og forklar hva dette sier oss.

    8. +
    +
    +
    +
    + + + + +
    + + + + + + +
    + + + +
    + +
    + +
    + On this page +
    + +
    + +
    + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/tema5_modellering/temperaturmodellering.html b/docs/tema5_modellering/temperaturmodellering.html new file mode 100644 index 00000000..d9c55691 --- /dev/null +++ b/docs/tema5_modellering/temperaturmodellering.html @@ -0,0 +1,1324 @@ + + + + + + + + + Strålingsbalansen på jorda — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + + + +
    + +
    +
    +
    from pylab import *
    +
    +
    +
    +
    +
    +

    Strålingsbalansen på jorda#

    +

    Det som hovedsakelig varmer opp planeten vår, er sollys. Solen sender ut energi i form av elektromagnetisk stråling som treffer jordkloden. All elektromagnetisk stråling som treffer toppen av atmosfæren, har blitt målt til ca 1361 W/m\(^2\) Hvor mye energi som treffer toppen av atmosfæren er nesten konstant, og har bare variert med 0.2 prosent på 400 år. Strålingen blir kalt for solkonstanten.

    +

    sunlight_angle.png

    +

    solar_insolation_planet_sphere_disk_600x320.png

    +
    +

    Energi som treffer planeten#

    +
    +\[ E_{inn} = K_s \cdot \pi R{_E}^2\]
    +
    +
    +
    Ks  = 1361             #[watt per kvadratmeter] Solinnstråling
    +radius_jorda = 6371000 #[m] Jorda
    +
    +e_inn = Ks * pi * radius_jorda**2
    +
    +print(f"Planeten blir truffet av {e_inn:.3e} W stråling")
    +
    +
    +
    +
    +
    Planeten blir truffet av 1.735e+17 W stråling
    +
    +
    +
    +
    +
    +
    +

    Energi inn i systemet#

    +
    +\[E_{absorbert} = K_s \cdot (1 - albedo) \cdot \pi R{_E}^2\]
    +
    +
    +
    albedo = 0.30
    +e_absorbert = Ks * (1-albedo) * pi * radius_jorda**2
    +print (f"Planeten absorberer {e_absorbert:.3e} W stråling")
    +
    +
    +
    +
    +
    Planeten absorberer 1.215e+17 W stråling
    +
    +
    +
    +
    +
    +
    +

    Energi ut av systemet#

    +

    Stefan-Boltzmann loven: Hvor mye energi som blir sendt ut fra overfalten til et legeme per flatenhet og tidsenhet i form av varmestråling.

    +
    +\[\phi=\sigma T^4\]
    +

    \(\sigma\) er Stefan-Boltzmann constant. \(\sigma = 5.670373 \cdot 10^{-8} W / (m^2K^4)\)

    +
    +\[E_{emittert} = \sigma T^4 \cdot 4\pi R{_E}^2\]
    +
    +
    +
    sigma = 5.670373e-8
    +
    +
    +
    +
    +
    +
    +

    Energi inn = Energi ut#

    +

    På grunn av energiprinsippet, loven om at energi er konstant, må energi inn på planeten være det samme som energi ut.

    +
    +\[ E_{absorbert}= E_{emittert}\]
    +
    +\[ K_s \cdot (1 - albedo) \cdot \pi R{_E}^2 = \sigma T^4 \cdot 4\pi R{_E}^2\]
    +
    +\[T = \sqrt[4]{\frac{K_s\cdot(1-albedo)}{4\sigma}}\]
    +
    +
    +
    temperatur_kelvin = ((Ks*(1-albedo))/(4*sigma))**(1/4)
    +temperatur_celsius = temperatur_kelvin - 273.15
    +print (f"Beregningen av gjennomsnittstemperaturen gir en temperatur på: {temperatur_celsius:.2f} celsius")
    +
    +
    +
    +
    +
    Beregningen av gjennomsnittstemperaturen gir en temperatur på: -18.57 celsius
    +
    +
    +
    +
    +
    +
    +
    +

    Støtte til modelleringsoppgave 2 (temperaturmodellering)#

    +
    +
    +
    """Konstanter"""
    +#Stefan-Boltzman Konstant
    +sigma=(5.67e-8) #[W m^2 K^4]
    +#Temperatur Sola
    +temperatur_sol = 5778 #[Kelvin]
    +diameter_sol = 1391016e3 #[m]
    +distanse_sol_jord = 149600000e3 #[m]
    +radius_jord = 6371e3 #[m]
    +albedo = 0.3
    +
    +
    +
    +
    +
    +

    Oppgave 1)#

    +

    Formelen for å kalkulere mengden energi som treffer toppen av atmosfæren (\(S_0\)) er:

    +
    +\[S_0 = \large\frac{{radius_{sun}}^2}{{distanse_{jord\space sol}}^2} \cdot stråling\space sol\]
    +
    +
    +
    stråling_sol = sigma*(temperatur_sol**4)
    +s0 = ((diameter_sol/2)**2)/(distanse_sol_jord**2)*stråling_sol
    +print (s0)
    +
    +
    +
    +
    +
    1365.948361181013
    +
    +
    +
    +
    +
    +
    +

    Oppgave 2)#

    +

    Bruk energiprinsippet og Stefan-Boltzmanns lov til å lage et utrykk for gjennomsnittlig temperatur på jorden. Noe av innstrålingen fra solen vil bli reflektert, og målet for refleksjonen til en flate kalles albedo. Legg til denne refleksjonsfaktoren for jordkloden og kalkuler temperaturen på jorden. Anta at +temperaturen på planeten er konstant, og at planeten er en flat sirkel.

    +

    solar_insolation_planet_sphere_disk_600x320.png

    +
    +

    Utrykket for temperatur man skal komme frem til:#

    +
    +\[T = \sqrt[4]{\frac{K_s\cdot(1-albedo)}{4\sigma}}\]
    +

    Prøv å vis hvordan man får dette utrykket.

    +
    +
    +
    temperatur = ((s0*(1-albedo))/(4*sigma))**(1/4)
    +temperatur - 273.15
    +
    +
    +
    +
    +
    -18.336567683297915
    +
    +
    +
    +
    +
    +
    +
    +

    Oppgave 3)#

    +

    Når vi skal legge til atmosfæren i modellen gjør vi ganske mange forenklinger. Vi antar tre ting (og ingen av antagelsene er faktisk sanne!):

    +
      +
    1. Atmosfæren har en konstant temperatur - dvs. at atmosfæren er en stor blokk hvor hele blokken har den samme temperaturen.

    2. +
    3. Atmosfæren er fullstendig gjennomsiktig for stråling fra solen - dvs at all stråling fra solen treffer jordoverflaten.

    4. +
    5. Atmosfæren tar imot all stråling fra jorden.

    6. +
    +

    Atmosf%C3%A6re.png

    +

    Figuren over viser situasjonen med antagelsene:
    +(1) viser solinnstårlingen som treffer jordkloden.
    +(3) viser utsrålingen fra jordkloden som treffer atmosfæren.
    +(2) viser situasjonen til atmosfæren. Atmosfæren vil sende ut stråling til verdensrommet, men også stråling tilbake til jorden. Energien atmosfæren sender ut kan da kalkuleres ved å bruke stefan-boltzmans lov.

    +

    Prøv å legg inn atmosfæren som et ledd i din kalkulering og se hvordan det påvirker temperaturen.

    +
    +

    Løsning ved bruk av figuren over.#

    +

    \(Energi_{inn} = Energi_{ut}\) er fortsatt det som gjelder, men denne gangen blir det to ligninger. Etter systemet nevnt i oppgave 3(a) blir likningene:

    +
    +\[\space s_0\cdot(1-albedo) = \sigma T_{a}^4 \]
    +
    +\[\space s_0\cdot(1-albedo) + \sigma T_{a}^4 = \sigma T_{s}^4\]
    +

    Sett likning 1 inn i 2 for å få en løsning for \(T_{s}\)

    +

    Prøv å vis på figuren hvilke piler disse to likningene representerer. Prøv å forklar til deg selv hva som er gjort her for å forstå likningsystemet.

    +

    Kommentar: Resultatet her vil være veldig høyt. I denne situasjonen vil energien til atmosfæren være det jorden sender ut. Vi har jo kalkulert at jorden blir truffet med 1365 watt/m^2, men denne energien vil bare være når solen står på sitt høyeste vertikalt rett ned på jorden. På grunn av rotasjonen til jorden, med natt og dagsykluser, og at jorden egentlig er en kule vil ikke dette være den faktiske gjennomsnittelige innstrålingen som treffer jorden. En forenkling for å finne gjennomsnitt på innstrålingen over hele jordkloden når man tenker at deler ikke får like mye sollys hele tiden vil da være: \(S_{0}\)/4 = 1365/4 watt/\(m^2\). Dette nummeret er veldig nærme den observerte gjennomsnittelige energien som treffer jorden. Sett inn \(S_{0}/4\) inn for \(S_{0}\) og sjekk hva som skjer med \(T_{s}\).

    +
    +
    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/temaX_grafikk/Untitled.html b/docs/temaX_grafikk/Untitled.html new file mode 100644 index 00000000..9003a693 --- /dev/null +++ b/docs/temaX_grafikk/Untitled.html @@ -0,0 +1,1152 @@ + + + + + + + + + Grafiske brukergrensesnitt — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Grafiske brukergrensesnitt

    + +
    +
    + +
    +
    +
    + +
    + +
    +

    Grafiske brukergrensesnitt#

    +

    Vi kan benytte et bibliotek kalt tkinter for å lage grafiske grensesnitt til programmene våre.

    +
    +
    +
    import tkinter
    +
    +
    +
    +
    +
    +
    +
    vindu = tkinter.Tk()
    +vindu.title("Simuleringsplattform")
    +
    +merkelapp = tkinter.Label(vindu, text = "Velkommen!")
    +# pack brukes til å vise objektet i vinduet, omtrent som "show" i plotting
    +merkelapp.pack()
    +
    +knapp1 = tkinter.Button(vindu, text="Trykk her", fg="green")
    +knapp2 = tkinter.Button(vindu, text="Ikke trykk her", fg="red")
    +knapp1.pack()
    +knapp2.pack()
    +
    +vindu.mainloop()
    +
    +
    +
    +
    +
    +
    +
    vindu = tkinter.Tk()
    +vindu.title("Simuleringsplattform")
    +
    +merkelapp = tkinter.Label(vindu, text = "Velkommen!")
    +# pack brukes til å vise objektet i vinduet, omtrent som "show" i plotting
    +merkelapp.pack()
    +
    +toppramme = tkinter.Frame(vindu)
    +toppramme.pack(side = "top")
    +bunnramme = tkinter.Frame(vindu)
    +bunnramme.pack(side = "bottom")
    +
    +knapp1 = tkinter.Button(bunnramme, text="Trykk her", fg="green")
    +knapp2 = tkinter.Button(toppramme, text="Ikke trykk her", fg="red")
    +knapp1.pack()
    +knapp2.pack()
    +vindu.mainloop()
    +
    +
    +
    +
    +
    +
    +
    top = tkinter.Tk()
    +CheckVar1 = tkinter.IntVar()
    +CheckVar2 = tkinter.IntVar()
    +tkinter.Label(vindu, text = "Username")
    + 
    +#tkinter.Checkbutton(toppramme, text = "Machine Learning",variable = CheckVar1,onvalue = 1, offvalue=0).grid(row=0,sticky="W")
    +#tkinter.Checkbutton(toppramme, text = "Deep Learning", variable = CheckVar2, onvalue = 0, offvalue =1).grid(row=1,sticky="W")
    +
    +
    +
    +
    +
    ---------------------------------------------------------------------------
    +TclError                                  Traceback (most recent call last)
    +<ipython-input-33-e3f7033e4f0a> in <module>
    +      2 CheckVar1 = tkinter.IntVar()
    +      3 CheckVar2 = tkinter.IntVar()
    +----> 4 tkinter.Label(vindu, text = "Username")
    +      5 
    +      6 #tkinter.Checkbutton(toppramme, text = "Machine Learning",variable = CheckVar1,onvalue = 1, offvalue=0).grid(row=0,sticky="W")
    +
    +~\anaconda3\lib\tkinter\__init__.py in __init__(self, master, cnf, **kw)
    +   3141 
    +   3142         """
    +-> 3143         Widget.__init__(self, master, 'label', cnf, kw)
    +   3144 
    +   3145 
    +
    +~\anaconda3\lib\tkinter\__init__.py in __init__(self, master, widgetName, cnf, kw, extra)
    +   2565         for k, v in classes:
    +   2566             del cnf[k]
    +-> 2567         self.tk.call(
    +   2568             (widgetName, self._w) + extra + self._options(cnf))
    +   2569         for k, v in classes:
    +
    +TclError: can't invoke "label" command: application has been destroyed
    +
    +
    +
    +
    +
    +
    +
    from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout
    +app = QApplication([])
    +window = QWidget()
    +layout = QVBoxLayout()
    +layout.addWidget(QPushButton('Top'))
    +layout.addWidget(QPushButton('Bottom'))
    +window.setLayout(layout)
    +window.show()
    +app.exec()
    +
    +
    +
    +
    +
    0
    +
    +
    +
    +
    +
    +
    +
    import sys
    +
    +# 1. Import `QApplication` and all the required widgets
    +from PyQt5.QtWidgets import QApplication
    +from PyQt5.QtWidgets import QLabel
    +from PyQt5.QtWidgets import QWidget
    +
    +
    +
    +
    +
    +
    +
    # 2. Create an instance of QApplication
    +app = QApplication(sys.argv)
    +
    +
    +
    +
    +
    +
    +
    # 3. Create an instance of your application's GUI
    +window = QWidget()
    +window.setWindowTitle('PyQt5 App')
    +window.setGeometry(100, 100, 280, 80)
    +window.move(60, 15)
    +helloMsg = QLabel('<h1>Hello World!</h1>', parent=window)
    +helloMsg.move(60, 15)
    +
    +
    +
    +
    +
    +
    +
    # 4. Show your application's GUI
    +window.show()
    +
    +# 5. Run your application's event loop (or main loop)
    +sys.exit(app.exec_())
    +
    +
    +
    +
    +
    An exception has occurred, use %tb to see the full traceback.
    +
    +SystemExit: 0
    +
    +
    +
    C:\Users\a_har\anaconda3\lib\site-packages\IPython\core\interactiveshell.py:3426: UserWarning: To exit: use 'exit', 'quit', or Ctrl-D.
    +  warn("To exit: use 'exit', 'quit', or Ctrl-D.", stacklevel=1)
    +
    +
    +
    +
    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/temaX_grafikk/tilfeldige_tall_grafikk.html b/docs/temaX_grafikk/tilfeldige_tall_grafikk.html new file mode 100644 index 00000000..580bdac3 --- /dev/null +++ b/docs/temaX_grafikk/tilfeldige_tall_grafikk.html @@ -0,0 +1,1086 @@ + + + + + + + + + Tilfeldige tall og grafikk (teori) — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Tilfeldige tall og grafikk (teori)

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    + +
    + +
    +

    Tilfeldige tall og grafikk (teori)#

    +
    +

    Læringsutbytte

    +

    Etter å ha arbeidet med dette temaet, skal du kunne:

    +
      +
    1. Generere tilfeldige flyttall og heltall.

    2. +
    3. Bruke enkel Turtle-grafikk.

    4. +
    5. Bruke grafikkmoduler (Pygame, Turtle eller VPython) i eget prosjekt.

    6. +
    +
    +
    +

    Tilfeldige tall#

    +
    +
    +
    + +
    +
    +

    Når du har sett videoen, kan du gjøre følgende oppgave for å sjekke om du forstår innholdet:

    +
    +

    Underveisoppgave

    +

    Kast en terning 10000 ganger og plott relativ frekvens av seksere for hvert kast som funksjon av antall kast.

    +
    + +
    +
    +

    Turtle-grafikk#

    +
    +
    +
    + +
    +
    +

    Når du har sett videoen, kan du gjøre følgende oppgave for å sjekke om du forstår innholdet:

    +
    +

    Underveisoppgave

    +

    Tegn en rettvinkla trekant der en av sidene er 3 lang og den andre er 4 lang.

    +
    +
    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + +
    + +
    + +
    + On this page +
    + +
    + +
    + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/temaX_grafikk/tkinter-demo.html b/docs/temaX_grafikk/tkinter-demo.html new file mode 100644 index 00000000..598c7170 --- /dev/null +++ b/docs/temaX_grafikk/tkinter-demo.html @@ -0,0 +1,1252 @@ + + + + + + + + + Introduksjon — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Introduksjon

    + +
    + +
    +
    + +
    + +
    +

    Introduksjon#

    +
    +
    +
    from tkinter import *
    +
    +
    +
    +
    +
    +
    +
    vindu = Tk()
    +vindu.title("Simuleringsplattform")
    +# Lager Label-Widget.
    + 
    +lb = Label(vindu, text="Hei på deg!")
    +lb.pack()
    +
    +vindu.mainloop()
    +
    +
    +
    +
    +
    +
    +

    Gridsystem (rutenettsystem - rad og kolonner).#

    +
    +
    +
    vindu = Tk()
    +vindu.title("Simuleringsplattform")
    +# Lager Label-Widget.
    + 
    +lb1 = Label(vindu, text="Hei på deg!")
    +lb2 = Label(vindu, text="Du er grei!")
    +lb1.grid(row=0, column=0)
    +lb2.grid(row=1, column=1)
    +
    +vindu.mainloop()
    +
    +
    +
    +
    +
    +
    +
    from vpython import *
    +
    +vindu = 500
    +Natoms = 200  # change this to have more or fewer atoms
    +
    +# Typical values
    +L = 1 # container is a cube L on a side
    +gray = color.gray(0.7) # color of edges of container
    +mass = 4E-3/6E23 # helium mass
    +Ratom = 0.03 # wildly exaggerated size of helium atom
    +k = 1.4E-23 # Boltzmann constant
    +T = 300 # around room temperature
    +dt = 1E-5
    +
    +animation = canvas( width=win, height=win, align='left')
    +animation.range = L
    +animation.title = 'A "hard-sphere" gas'
    +s = """  Theoretical and averaged speed distributions (meters/sec).
    +  Initially all atoms have the same speed, but collisions
    +  change the speeds of the colliding atoms. One of the atoms is
    +  marked and leaves a trail so you can follow its path.
    +  
    +"""
    +animation.caption = s
    +
    +d = L/2+Ratom
    +r = 0.005
    +boxbottom = curve(color=gray, radius=r)
    +boxbottom.append([vector(-d,-d,-d), vector(-d,-d,d), vector(d,-d,d), vector(d,-d,-d), vector(-d,-d,-d)])
    +boxtop = curve(color=gray, radius=r)
    +boxtop.append([vector(-d,d,-d), vector(-d,d,d), vector(d,d,d), vector(d,d,-d), vector(-d,d,-d)])
    +vert1 = curve(color=gray, radius=r)
    +vert2 = curve(color=gray, radius=r)
    +vert3 = curve(color=gray, radius=r)
    +vert4 = curve(color=gray, radius=r)
    +vert1.append([vector(-d,-d,-d), vector(-d,d,-d)])
    +vert2.append([vector(-d,-d,d), vector(-d,d,d)])
    +vert3.append([vector(d,-d,d), vector(d,d,d)])
    +vert4.append([vector(d,-d,-d), vector(d,d,-d)])
    +
    +Atoms = []
    +p = []
    +apos = []
    +pavg = sqrt(2*mass*1.5*k*T) # average kinetic energy p**2/(2mass) = (3/2)kT
    +    
    +for i in range(Natoms):
    +    x = L*random()-L/2
    +    y = L*random()-L/2
    +    z = L*random()-L/2
    +    if i == 0:
    +        Atoms.append(sphere(pos=vector(x,y,z), radius=Ratom, color=color.cyan, make_trail=True, retain=100, trail_radius=0.3*Ratom))
    +    else: Atoms.append(sphere(pos=vector(x,y,z), radius=Ratom, color=gray))
    +    apos.append(vec(x,y,z))
    +    theta = pi*random()
    +    phi = 2*pi*random()
    +    px = pavg*sin(theta)*cos(phi)
    +    py = pavg*sin(theta)*sin(phi)
    +    pz = pavg*cos(theta)
    +    p.append(vector(px,py,pz))
    +
    +deltav = 100 # binning for v histogram
    +
    +def barx(v):
    +    return int(v/deltav) # index into bars array
    +
    +nhisto = int(4500/deltav)
    +histo = []
    +for i in range(nhisto): histo.append(0.0)
    +histo[barx(pavg/mass)] = Natoms
    +
    +gg = graph( width=win, height=0.4*win, xmax=3000, align='left',
    +    xtitle='speed, m/s', ytitle='Number of atoms', ymax=Natoms*deltav/1000)
    +
    +theory = gcurve( color=color.cyan )
    +dv = 10
    +for v in range(0,3001+dv,dv):  # theoretical prediction
    +    theory.plot( v, (deltav/dv)*Natoms*4*pi*((mass/(2*pi*k*T))**1.5) *exp(-0.5*mass*(v**2)/(k*T))*(v**2)*dv )
    +
    +accum = []
    +for i in range(int(3000/deltav)): accum.append([deltav*(i+.5),0])
    +vdist = gvbars(color=color.red, delta=deltav )
    +
    +def interchange(v1, v2):  # remove from v1 bar, add to v2 bar
    +    barx1 = barx(v1)
    +    barx2 = barx(v2)
    +    if barx1 == barx2:  return
    +    if barx1 >= len(histo) or barx2 >= len(histo): return
    +    histo[barx1] -= 1
    +    histo[barx2] += 1
    +    
    +def checkCollisions():
    +    hitlist = []
    +    r2 = 2*Ratom
    +    r2 *= r2
    +    for i in range(Natoms):
    +        ai = apos[i]
    +        for j in range(i) :
    +            aj = apos[j]
    +            dr = ai - aj
    +            if mag2(dr) < r2: hitlist.append([i,j])
    +    return hitlist
    +
    +nhisto = 0 # number of histogram snapshots to average
    +@numba
    +while True:
    +    rate(300)
    +    # Accumulate and average histogram snapshots
    +    for i in range(len(accum)): accum[i][1] = (nhisto*accum[i][1] + histo[i])/(nhisto+1)
    +    if nhisto % 10 == 0:
    +        vdist.data = accum
    +    nhisto += 1
    +
    +    # Update all positions
    +    for i in range(Natoms): Atoms[i].pos = apos[i] = apos[i] + (p[i]/mass)*dt
    +    
    +    # Check for collisions
    +    hitlist = checkCollisions()
    +
    +    # If any collisions took place, update momenta of the two atoms
    +    for ij in hitlist:
    +        i = ij[0]
    +        j = ij[1]
    +        ptot = p[i]+p[j]
    +        posi = apos[i]
    +        posj = apos[j]
    +        vi = p[i]/mass
    +        vj = p[j]/mass
    +        vrel = vj-vi
    +        a = vrel.mag2
    +        if a == 0: continue;  # exactly same velocities
    +        rrel = posi-posj
    +        if rrel.mag > Ratom: continue # one atom went all the way through another
    +    
    +        # theta is the angle between vrel and rrel:
    +        dx = dot(rrel, vrel.hat)       # rrel.mag*cos(theta)
    +        dy = cross(rrel, vrel.hat).mag # rrel.mag*sin(theta)
    +        # alpha is the angle of the triangle composed of rrel, path of atom j, and a line
    +        #   from the center of atom i to the center of atom j where atome j hits atom i:
    +        alpha = asin(dy/(2*Ratom)) 
    +        d = (2*Ratom)*cos(alpha)-dx # distance traveled into the atom from first contact
    +        deltat = d/vrel.mag         # time spent moving from first contact to position inside atom
    +        
    +        posi = posi-vi*deltat # back up to contact configuration
    +        posj = posj-vj*deltat
    +        mtot = 2*mass
    +        pcmi = p[i]-ptot*mass/mtot # transform momenta to cm frame
    +        pcmj = p[j]-ptot*mass/mtot
    +        rrel = norm(rrel)
    +        pcmi = pcmi-2*pcmi.dot(rrel)*rrel # bounce in cm frame
    +        pcmj = pcmj-2*pcmj.dot(rrel)*rrel
    +        p[i] = pcmi+ptot*mass/mtot # transform momenta back to lab frame
    +        p[j] = pcmj+ptot*mass/mtot
    +        apos[i] = posi+(p[i]/mass)*deltat # move forward deltat in time
    +        apos[j] = posj+(p[j]/mass)*deltat
    +        interchange(vi.mag, p[i].mag/mass)
    +        interchange(vj.mag, p[j].mag/mass)
    +    
    +    for i in range(Natoms):
    +        loc = apos[i]
    +        if abs(loc.x) > L/2:
    +            if loc.x < 0: p[i].x =  abs(p[i].x)
    +            else: p[i].x =  -abs(p[i].x)
    +        
    +        if abs(loc.y) > L/2:
    +            if loc.y < 0: p[i].y = abs(p[i].y)
    +            else: p[i].y =  -abs(p[i].y)
    +        
    +        if abs(loc.z) > L/2:
    +            if loc.z < 0: p[i].z =  abs(p[i].z)
    +            else: p[i].z =  -abs(p[i].z)
    +
    +
    +
    +
    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + +
    + + + +
    + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/docs/test_quiz.html b/docs/test_quiz.html new file mode 100644 index 00000000..a964d6d9 --- /dev/null +++ b/docs/test_quiz.html @@ -0,0 +1,3548 @@ + + + + + + + + + Review — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + + + + + +
    +
    +
    + + + +
    +

    Review

    + +
    +
    + +
    +

    Contents

    +
    + +
    +
    +
    + +
    + +
    +

    Review#

    +

    In this Chapter, we started working with real data, introduced Pands, partitions, summary statistics, binary hypothesis testing via bootstrap resampling, and two-dimensional statistics.

    +
    +
    +
    +
    +
    +
    +

    Spaced Repetition Review#

    +

    Answer these questions to check your retention on knowledge from Chapters 1 and 2:

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +

    Key Take-aways:

    +
      +
    • Pandas stores data in dataframes. Dataframes store tabular data, like spreadsheets or database tables.

    • +
    • Pandas can import data from standard file formats, including comma-separated value (CSV) files and Excel files.

    • +
    • Scatter plots are useful for initial data exploration and identifying outliers.

    • +
    • Partitions divide data into disjoint subsets.

    • +
    • Summary statistics represent a group of data by a single number.

    • +
    • Common summary statistics minimize a measure of error from the summary statistic to the data:

      +
        +
      • Mode minimizes the error count.

      • +
      • Median minimizes the sum of absolute errors.

      • +
      • Average, or sample mean, minimizes the sum of squared errors.

      • +
      +
    • +
    • A statistical hypothesis is a hypothesis that is testable using data.

    • +
    • A binary hypothesis test is a statistical test that decides between two competing statistical hypotheses.

      +
        +
      • A null hypothesis, denoted \(H_0\) assumes that the data being evaluated come from the same underlying random phenomena. Observed differences are caused by random sampling.

      • +
      +
    • +
    • Resampling is a model-free technique to draw new samples of data for use in statistical testing.

      +
        +
      • Bootstrap resampling is when data is drawn from the pooled data with replacement.

      • +
      +
    • +
    • Two-dimensional statistical methods can be used to directly work with pairs of data through techniques such as curve fitting.

    • +
    +
    +
    + + + + +
    + + + + +
    + +
    +
    +
    + +
    + + + +
    + +
    + +
    + On this page +
    + +
    + +
    + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/genindex.html b/genindex.html new file mode 100644 index 00000000..ca021f1d --- /dev/null +++ b/genindex.html @@ -0,0 +1,928 @@ + + + + + + + + Index — Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + +
    +
    +
    + + + +
    +

    + +
    +
    + +
    +
    +
    + +
    + + +

    Index

    + +
    + +
    + + +
    + + + + +
    + +
    +
    +
    + +
    + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 00000000..1b63bdab --- /dev/null +++ b/index.html @@ -0,0 +1 @@ + diff --git a/objects.inv b/objects.inv new file mode 100644 index 00000000..6c33d115 Binary files /dev/null and b/objects.inv differ diff --git a/search.html b/search.html new file mode 100644 index 00000000..71fd54a8 --- /dev/null +++ b/search.html @@ -0,0 +1,938 @@ + + + + + + + Search - Programmering og modellering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    + + + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + +
    + + + + +
    +
    + +
    +
    + + +
    +
    +
    + + +
    +

    Search

    + + + + + + +
    +
    + + + + + +
    + +
    +
    +
    + +
    + + + + +
    +
    + +
    + + +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/searchindex.js b/searchindex.js new file mode 100644 index 00000000..628ca77e --- /dev/null +++ b/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({"docnames": ["README", "datafiler", "docs/datafiler", "docs/ekstra/Prosjekt i databehandling", "docs/ekstra/Str\u00e5lingsbalansemodell", "docs/ekstra/arrayer", "docs/ekstra/datahandtering", "docs/ekstra/filmer_datasamlinger", "docs/ekstra/hjelp_modelleringsoppgave2", "docs/ekstra/integrasjon", "docs/ekstra/kunstig_intelligens_ml", "docs/ekstra/likninger", "docs/ekstra/likninger_oppgave1", "docs/ekstra/maskinl\u00e6ring_iris", "docs/ekstra/maskinl\u00e6ring_titanic", "docs/ekstra/modellering_kinematikk", "docs/ekstra/modellering_populasjonsdynamikk", "docs/ekstra/modellering_reaksjonskinetikk", "docs/ekstra/modelleringsoppgave_a", "docs/ekstra/plotting_data", "docs/ekstra/plotting_filmer", "docs/ekstra/repetisjon", "docs/ekstra/tema1", "docs/ekstra/tema10", "docs/ekstra/tema11", "docs/ekstra/tema12", "docs/ekstra/tema2", "docs/ekstra/tema3", "docs/ekstra/tema4", "docs/ekstra/tema5", "docs/ekstra/tema6", "docs/ekstra/tema7", "docs/ekstra/tema8", "docs/ekstra/tema9", "docs/fagoppgaver/biologioppgaver", "docs/fagoppgaver/kjemioppgaver", "docs/fagoppgaver/teknologi", "docs/intro", "docs/kurs/programmering_intro", "docs/kurs/smittemodellering", "docs/oppgaver/differensiallikninger_oppgaver", "docs/oppgaver/likninger_oppgaver", "docs/oppgaver/maskinlaring_titanic_oppgaver", "docs/oppgaver/modelleringsprosjekt1", "docs/oppgaver/modelleringsprosjekt2", "docs/oppgaver/statistikkprosjekt", "docs/programmering_intro", "docs/tema1_grunnleggende_programmering/grunnleggende_programmering", "docs/tema1_grunnleggende_programmering/if-tester", "docs/tema1_grunnleggende_programmering/kom_i_gang", "docs/tema1_grunnleggende_programmering/lister", "docs/tema1_grunnleggende_programmering/lokker", "docs/tema1_grunnleggende_programmering/programmeringsverktoy", "docs/tema1_grunnleggende_programmering/quiz1", "docs/tema1_grunnleggende_programmering/quiz2", "docs/tema1_grunnleggende_programmering/quiz3", "docs/tema1_grunnleggende_programmering/quiz4", "docs/tema1_grunnleggende_programmering/quiz5", "docs/tema1_grunnleggende_programmering/quiz6", "docs/tema1_grunnleggende_programmering/tall_variabler", "docs/tema1_grunnleggende_programmering/tall_variabler_videoer", "docs/tema1_grunnleggende_programmering/testquiz", "docs/tema2_kodestrukturering/funksjoner", "docs/tema2_kodestrukturering/funksjoner_filmer", "docs/tema2_kodestrukturering/klasser_objekter", "docs/tema3_datahandtering/datasamlinger", "docs/tema3_datahandtering/lese_filer", "docs/tema3_datahandtering/maskinlaring", "docs/tema3_datahandtering/plotting", "docs/tema3_datahandtering/statistikk", "docs/tema4_algoritmer/algoritmer", "docs/tema4_algoritmer/derivasjon", "docs/tema4_algoritmer/feilhandtering", "docs/tema4_algoritmer/integrasjon", "docs/tema4_algoritmer/likninger", "docs/tema4_algoritmer/likninger_oppgave1", "docs/tema4_algoritmer/numeriske_biblioteker", "docs/tema4_algoritmer/symbolsk_utregning", "docs/tema5_modellering/differensiallikninger", "docs/tema5_modellering/diskret_modellering", "docs/tema5_modellering/maskinl\u00e6ring_titanic", "docs/tema5_modellering/modelleringsrapport", "docs/tema5_modellering/newtons_avkjolingslov", "docs/tema5_modellering/pingviner", "docs/tema5_modellering/regresjonsmodeller", "docs/tema5_modellering/temperaturmodellering", "docs/temaX_grafikk/Untitled", "docs/temaX_grafikk/tilfeldige_tall_grafikk", "docs/temaX_grafikk/tkinter-demo", "docs/test_quiz"], "filenames": ["README.md", "datafiler.ipynb", "docs/datafiler.ipynb", "docs/ekstra/Prosjekt i databehandling.ipynb", "docs/ekstra/Str\u00e5lingsbalansemodell.ipynb", "docs/ekstra/arrayer.ipynb", "docs/ekstra/datahandtering.ipynb", "docs/ekstra/filmer_datasamlinger.ipynb", "docs/ekstra/hjelp_modelleringsoppgave2.ipynb", "docs/ekstra/integrasjon.ipynb", "docs/ekstra/kunstig_intelligens_ml.ipynb", "docs/ekstra/likninger.ipynb", "docs/ekstra/likninger_oppgave1.ipynb", "docs/ekstra/maskinl\u00e6ring_iris.ipynb", "docs/ekstra/maskinl\u00e6ring_titanic.ipynb", "docs/ekstra/modellering_kinematikk.ipynb", "docs/ekstra/modellering_populasjonsdynamikk.ipynb", "docs/ekstra/modellering_reaksjonskinetikk.ipynb", "docs/ekstra/modelleringsoppgave_a.ipynb", "docs/ekstra/plotting_data.ipynb", "docs/ekstra/plotting_filmer.ipynb", "docs/ekstra/repetisjon.ipynb", "docs/ekstra/tema1.ipynb", "docs/ekstra/tema10.ipynb", "docs/ekstra/tema11.ipynb", "docs/ekstra/tema12.ipynb", "docs/ekstra/tema2.ipynb", "docs/ekstra/tema3.ipynb", "docs/ekstra/tema4.ipynb", "docs/ekstra/tema5.ipynb", "docs/ekstra/tema6.ipynb", "docs/ekstra/tema7.ipynb", "docs/ekstra/tema8.ipynb", "docs/ekstra/tema9.ipynb", "docs/fagoppgaver/biologioppgaver.ipynb", "docs/fagoppgaver/kjemioppgaver.ipynb", "docs/fagoppgaver/teknologi.ipynb", "docs/intro.md", "docs/kurs/programmering_intro.ipynb", "docs/kurs/smittemodellering.ipynb", "docs/oppgaver/differensiallikninger_oppgaver.ipynb", "docs/oppgaver/likninger_oppgaver.ipynb", "docs/oppgaver/maskinlaring_titanic_oppgaver.ipynb", "docs/oppgaver/modelleringsprosjekt1.ipynb", "docs/oppgaver/modelleringsprosjekt2.ipynb", "docs/oppgaver/statistikkprosjekt.ipynb", "docs/programmering_intro.ipynb", "docs/tema1_grunnleggende_programmering/grunnleggende_programmering.ipynb", "docs/tema1_grunnleggende_programmering/if-tester.ipynb", "docs/tema1_grunnleggende_programmering/kom_i_gang.ipynb", "docs/tema1_grunnleggende_programmering/lister.ipynb", "docs/tema1_grunnleggende_programmering/lokker.ipynb", "docs/tema1_grunnleggende_programmering/programmeringsverktoy.ipynb", "docs/tema1_grunnleggende_programmering/quiz1.ipynb", "docs/tema1_grunnleggende_programmering/quiz2.ipynb", "docs/tema1_grunnleggende_programmering/quiz3.ipynb", "docs/tema1_grunnleggende_programmering/quiz4.ipynb", "docs/tema1_grunnleggende_programmering/quiz5.ipynb", "docs/tema1_grunnleggende_programmering/quiz6.ipynb", "docs/tema1_grunnleggende_programmering/tall_variabler.ipynb", "docs/tema1_grunnleggende_programmering/tall_variabler_videoer.ipynb", "docs/tema1_grunnleggende_programmering/testquiz.ipynb", "docs/tema2_kodestrukturering/funksjoner.ipynb", "docs/tema2_kodestrukturering/funksjoner_filmer.ipynb", "docs/tema2_kodestrukturering/klasser_objekter.ipynb", "docs/tema3_datahandtering/datasamlinger.ipynb", "docs/tema3_datahandtering/lese_filer.ipynb", "docs/tema3_datahandtering/maskinlaring.ipynb", "docs/tema3_datahandtering/plotting.ipynb", "docs/tema3_datahandtering/statistikk.ipynb", "docs/tema4_algoritmer/algoritmer.ipynb", "docs/tema4_algoritmer/derivasjon.ipynb", "docs/tema4_algoritmer/feilhandtering.ipynb", "docs/tema4_algoritmer/integrasjon.ipynb", "docs/tema4_algoritmer/likninger.ipynb", "docs/tema4_algoritmer/likninger_oppgave1.ipynb", "docs/tema4_algoritmer/numeriske_biblioteker.ipynb", "docs/tema4_algoritmer/symbolsk_utregning.ipynb", "docs/tema5_modellering/differensiallikninger.ipynb", "docs/tema5_modellering/diskret_modellering.ipynb", "docs/tema5_modellering/maskinl\u00e6ring_titanic.ipynb", "docs/tema5_modellering/modelleringsrapport.ipynb", "docs/tema5_modellering/newtons_avkjolingslov.ipynb", "docs/tema5_modellering/pingviner.ipynb", "docs/tema5_modellering/regresjonsmodeller.ipynb", "docs/tema5_modellering/temperaturmodellering.ipynb", "docs/temaX_grafikk/Untitled.ipynb", "docs/temaX_grafikk/tilfeldige_tall_grafikk.ipynb", "docs/temaX_grafikk/tkinter-demo.ipynb", "docs/test_quiz.ipynb"], "titles": ["ProMod", "Datafiler", "Datafiler", "Prosjekt i databehandling", "Modellering av jordas str\u00e5lingsbalanse", "Datasamlinger", "Datah\u00e5ndtering (teori)", "Datasamlinger (teori)", "St\u00f8tte til modelleringsoppgave 2 (temperaturmodellering)", "10. Numerisk integrasjon", "Maskinl\u00e6ring II: Nevrale nettverk og kunstig intelligens", "7. Likninger og nullpunkter", "Numerisk l\u00f8sing av likninger", "Maskinl\u00e6ring", "Maskinl\u00e6ring", "Modelleringsoppgave: Kinematikk (fysikk)", "Modelleringsoppgave IIb: Bevaringsbiologi (biologi)", "Modelleringsoppgave IIc: Reaksjonskinetikk (kjemi)", "Modelleringsoppgave I: Smittemodellering", "Plotting og behandling av eksperimentelle data", "Plotting (teori)", "Repetisjon", "Tema 1: Tall og variabler", "Tema 10: Derivasjon og integrasjon", "Tema 11: Numerisk l\u00f8sing av likninger", "Tema 12: Differensiallikninger", "Tema 2: Beslutninger", "Tema 3: L\u00f8kker", "Tema 4: Funksjoner", "Tema 5: Datasamlinger og plotting", "Tema 6: Datah\u00e5ndtering", "Tema 7: Algoritmer", "Tema 8: Modellering", "Tema 9: Grafikk", "Repetisjon II: Biologioppgaver", "Repetisjon I: Kjemioppgaver", "Teknologi og programmering", "Programmering og modellering", "Programmering med ENT3R", "Smittemodellering", "Differensiallikninger (oppgaver)", "Oppgave: Numerisk l\u00f8sing av likninger", "Maskinl\u00e6ring med Titanic (oppgave)", "Modelleringsoppgave I", "Modelleringsoppgave II", "Statistikkprosjekt", "Programmering - en liten start", "Grunnleggende programmering (oppgaver)", "Vilk\u00e5r (if-tester)", "En f\u00f8rste kodesnutt", "Lister", "L\u00f8kker", "Programmeringsverkt\u00f8y", "Quiz 1: Variabler og aritmetikk", "Quiz 2: Lister", "Quiz 3: Vilk\u00e5r (if-tester)", "Quiz 4: L\u00f8kker", "Quiz 5: Funksjoner", "Quiz 6: Datasamlinger (arrayer og dictionarier)", "Variabler og datatyper", "Tall og variabler (videoer)", "Testquiz (Forms)", "Funksjoner", "Funksjoner (teori)", "Klasser og objekter", "Datasamlinger", "Datah\u00e5ndering II: H\u00e5ndtere og visualisere data", "Datah\u00e5ndtering IV: Maskinl\u00e6ring", "Datah\u00e5ndtering I: Visualisering", "Datah\u00e5ndering III: Statistikk", "Matematiske algoritmer og stokastiske simuleringer", "Numerisk derivasjon", "Numeriske metoder og feilh\u00e5ndtering", "Numerisk integrasjon (ekstrastoff)", "Likninger og nullpunkter", "Numerisk l\u00f8sing av likninger (oppgave)", "Numeriske biblioteker", "Symbolsk utregning (CAS)", "Differensiallikninger og kontinuerlige modeller", "Modellering", "Maskinl\u00e6ring", "Rapporteksempel: Smittemodellering", "Newtons avkj\u00f8lingslov", "Maskinl\u00e6ring (med pingviner)", "Regresjonsmodeller", "Str\u00e5lingsbalansen p\u00e5 jorda", "Grafiske brukergrensesnitt", "Tilfeldige tall og grafikk (teori)", "Introduksjon", "Review"], "terms": {"titreringsdata": [1, 35], "txt": [1, 2, 6, 18, 19, 30, 35, 39, 43, 45, 66, 67, 69, 71, 81, 83], "alder_kjonn": 1, "antal": [1, 3, 4, 10, 11, 14, 16, 18, 25, 30, 31, 32, 34, 35, 36, 39, 40, 41, 42, 43, 46, 47, 51, 62, 66, 68, 69, 70, 73, 74, 78, 79, 80, 81, 84, 87], "meldt": [1, 66], "covid": [1, 66], "19": [1, 10, 13, 51, 66, 67, 69, 70, 78, 83], "d5_naringskjede_organism": 1, "d5_naringskjede_trofisk": 1, "vin": [1, 2, 3], "csv": [1, 2, 3, 13, 14, 23, 45, 66, 80, 89], "iri": [1, 2, 13, 69], "car": [1, 2], "pingvin": [1, 2, 66, 67, 69], "solflekk": [2, 30], "temperatur": [2, 4, 6, 17, 29, 30, 36, 44, 51, 62, 64, 66, 78, 82, 88], "heistur": [2, 23], "titrer": [2, 19, 66], "influensa": [2, 18, 39, 43, 81], "covid19": 2, "posisjon": [2, 15, 23, 25, 36, 51, 62, 71, 78], "titan": [2, 14, 80], "\u00e5": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 25, 27, 30, 34, 35, 36, 37, 38, 39, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 52, 59, 60, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 75, 76, 77, 78, 79, 80, 81, 83, 84, 85, 86, 87], "kunn": [3, 5, 6, 7, 9, 11, 19, 20, 36, 40, 44, 47, 48, 50, 51, 59, 60, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 78, 79, 81, 84, 87], "automatiser": [3, 38], "behandlingen": 3, "store": [3, 36, 47, 59, 66, 67, 69, 70, 71, 73, 78, 79, 89], "mengder": [3, 66], "informasjon": [3, 15, 16, 17, 35, 36, 44, 46, 50, 59, 62, 65, 66, 78], "er": [3, 4, 5, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 22, 23, 25, 26, 27, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 58, 60, 62, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75, 77, 78, 79, 80, 81, 82, 84, 85, 87, 88], "en": [3, 4, 5, 8, 9, 10, 11, 12, 13, 14, 18, 19, 22, 23, 25, 26, 27, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 47, 48, 50, 51, 52, 60, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 73, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 87], "viktig": [3, 13, 14, 16, 18, 19, 39, 40, 42, 43, 44, 47, 48, 50, 59, 66, 68, 69, 78, 79, 80], "del": [3, 19, 36, 39, 42, 44, 47, 48, 50, 59, 67, 68, 69, 71, 78, 79, 86], "programm": [3, 15, 35, 39, 44, 48, 51, 52, 59, 60, 62, 64, 68, 70, 71, 73, 78, 79], "dett": [3, 4, 5, 6, 7, 8, 9, 11, 12, 14, 15, 16, 17, 18, 19, 20, 25, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 46, 47, 48, 50, 51, 52, 59, 60, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75, 76, 77, 78, 79, 80, 81, 84, 85, 87], "prosjektet": [3, 43, 44, 45], "skal": [3, 5, 6, 7, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 25, 34, 35, 36, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 59, 60, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 76, 78, 79, 80, 81, 82, 83, 84, 87], "dere": [3, 12, 39, 44, 45, 52, 59, 70, 75], "pr\u00f8ve": [3, 36, 39, 47, 48, 59, 64, 67, 70, 74, 78], "knytt": 3, "programmet": [3, 5, 15, 16, 17, 18, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 46, 47, 48, 49, 50, 51, 52, 59, 60, 62, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 78, 79, 84], "til": [3, 4, 5, 7, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 34, 35, 37, 38, 39, 40, 41, 42, 43, 44, 46, 47, 48, 49, 50, 51, 52, 59, 60, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 86], "st\u00f8rre": [3, 14, 36, 47, 48, 67, 69, 70, 80], "databas": [3, 89], "med": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 22, 28, 29, 34, 35, 37, 39, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 58, 59, 60, 63, 64, 67, 68, 69, 73, 74, 75, 76, 78, 79, 80, 81, 84, 85, 87], "og": [3, 4, 5, 6, 7, 8, 9, 12, 15, 16, 17, 18, 20, 25, 34, 35, 38, 39, 40, 41, 43, 45, 46, 48, 49, 50, 51, 52, 63, 65, 68, 71, 73, 75, 76, 79, 82, 83, 84, 85], "trekk": [3, 50, 62, 66, 67, 69, 70], "informasjonen": [3, 35, 44, 66], "ut": [3, 4, 7, 8, 10, 11, 13, 14, 15, 16, 17, 18, 34, 35, 36, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 59, 60, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 78, 79, 80, 84], "diss": [3, 8, 13, 14, 35, 36, 37, 39, 42, 44, 45, 46, 47, 49, 50, 51, 58, 59, 62, 64, 65, 66, 67, 68, 69, 70, 73, 74, 76, 78, 79, 80, 81, 85], "databasen": 3, "derett": [3, 14, 15, 16, 17, 36, 38, 39, 41, 46, 47, 48, 51, 59, 62, 69, 73, 74, 78, 79, 80, 81, 84], "programmen": [3, 15, 36, 43, 46, 47, 48, 51, 52, 62, 86], "tolk": [3, 20, 50, 66, 67, 68, 69, 70, 74, 84], "behandl": [3, 50], "dataen": [3, 13, 14, 16, 18, 35, 39, 42, 43, 45, 65, 66, 68, 69, 71, 79, 80, 81, 84], "jobb": [3, 40, 62, 66, 73], "grupper": [3, 12, 66, 75], "p\u00e5": [3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 22, 25, 30, 34, 35, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 52, 59, 60, 62, 64, 65, 66, 67, 68, 70, 71, 73, 74, 75, 76, 77, 79, 80, 81, 84, 88], "person": [3, 12, 14, 18, 39, 42, 43, 62, 70, 75, 79, 80, 81], "all": [3, 4, 8, 12, 13, 14, 15, 16, 17, 18, 35, 36, 38, 39, 41, 42, 43, 44, 46, 47, 48, 49, 50, 51, 58, 59, 62, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75, 78, 79, 80, 81, 84, 85, 86, 88], "bidra": 3, "det": [3, 4, 5, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 27, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 52, 59, 62, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 84, 85], "ferdig": [3, 34, 47, 48, 67, 70, 74, 76], "produktet": [3, 17, 44, 49, 51, 74, 78], "veldig": [3, 8, 34, 36, 39, 45, 47, 51, 68, 74, 85], "vanlig": [3, 62, 64, 66, 73, 78, 81], "n\u00e5r": [3, 4, 5, 6, 7, 8, 9, 11, 15, 17, 18, 19, 20, 34, 35, 36, 37, 39, 40, 42, 43, 44, 47, 48, 50, 51, 59, 60, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 74, 76, 78, 79, 85, 87], "programmer": [3, 36, 47, 48, 51, 64], "yrkeslivet": 3, "nyttig": [3, 16, 19, 47, 48, 51, 59, 62, 64, 65, 66, 67, 68, 71, 78, 81], "f\u00e5": [3, 5, 8, 10, 13, 14, 27, 34, 36, 38, 41, 42, 44, 46, 48, 50, 51, 59, 62, 65, 66, 68, 69, 73, 74, 78, 79, 80, 81, 85], "litt": [3, 14, 15, 16, 17, 36, 37, 38, 41, 42, 47, 48, 50, 51, 59, 62, 64, 66, 67, 68, 69, 70, 73, 74, 76, 77, 78, 80], "innblikk": 3, "hvordan": [3, 5, 6, 7, 8, 10, 12, 13, 14, 15, 16, 18, 34, 35, 36, 38, 42, 43, 44, 46, 47, 48, 51, 59, 60, 62, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75, 76, 77, 78, 80, 81, 84, 85], "slik": [3, 4, 5, 10, 15, 16, 17, 18, 34, 35, 36, 38, 39, 40, 41, 42, 43, 44, 46, 47, 50, 51, 59, 62, 64, 65, 66, 67, 68, 69, 71, 73, 74, 76, 78, 79, 81, 84], "prosess": [3, 36, 39, 44, 69, 70, 78, 79], "funger": [3, 5, 10, 15, 34, 35, 36, 38, 42, 44, 46, 47, 48, 51, 59, 62, 64, 65, 66, 67, 70, 71, 73, 74, 76, 78, 84], "allered": [3, 5, 15, 16, 17, 18, 39, 43, 51, 64, 65, 74, 77, 78, 81, 84], "n\u00e5": [3, 11, 13, 14, 15, 16, 17, 18, 34, 36, 39, 40, 41, 42, 43, 44, 47, 50, 51, 62, 64, 66, 67, 70, 71, 73, 74, 78, 79, 80, 81, 84], "fordel": [3, 38, 51, 66, 67, 73, 74, 78], "hensiktsmessig": [3, 18, 19, 39, 43, 44, 51, 79], "m\u00e5te": [3, 15, 19, 35, 36, 41, 43, 44, 51, 52, 64, 66, 68, 69, 71, 73, 78, 84], "mellom": [3, 5, 7, 10, 12, 15, 16, 17, 23, 25, 27, 34, 36, 38, 40, 41, 44, 45, 46, 47, 48, 51, 59, 60, 62, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75, 78, 79, 82, 84], "velger": [3, 13, 14, 15, 35, 36, 38, 42, 51, 66, 67, 68, 70, 71, 74, 76, 78, 80], "f\u00f8rst": [3, 5, 10, 13, 14, 15, 16, 17, 36, 41, 42, 44, 46, 47, 51, 62, 65, 66, 67, 70, 71, 74, 76, 78, 79, 80, 81, 84], "prosjektled": 3, "som": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 19, 25, 34, 35, 36, 37, 38, 39, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 52, 59, 60, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75, 76, 77, 78, 79, 80, 81, 84, 86, 87], "kan": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 25, 34, 35, 36, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 52, 59, 60, 62, 63, 64, 65, 66, 67, 68, 69, 71, 73, 74, 75, 76, 77, 78, 79, 80, 81, 84, 85, 86, 87], "ha": [3, 4, 5, 6, 7, 9, 11, 19, 20, 36, 39, 41, 44, 47, 48, 50, 51, 59, 60, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 78, 79, 86, 87], "overordna": [3, 35], "ansvaret": 3, "alt": [3, 14, 36, 38, 39, 42, 44, 46, 47, 48, 51, 59, 62, 65, 66, 74, 78, 79, 80, 81], "heng": 3, "sammen": [3, 7, 12, 15, 18, 35, 36, 43, 47, 50, 51, 64, 65, 66, 67, 71, 73, 75, 78], "slutt": [3, 7, 18, 38, 43, 47, 51, 59, 62, 65, 66, 67, 70, 71, 74, 78, 82], "deleger": 3, "treng": [3, 36], "gj\u00f8re": [3, 5, 6, 7, 9, 10, 11, 13, 15, 16, 17, 18, 19, 20, 22, 35, 36, 37, 38, 39, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 59, 60, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 76, 77, 78, 79, 81, 84, 87], "For": [3, 4, 5, 11, 13, 14, 15, 16, 17, 23, 34, 36, 38, 39, 40, 41, 42, 44, 46, 47, 48, 59, 62, 64, 65, 66, 67, 69, 70, 71, 73, 74, 77, 78, 79, 80], "v\u00e6re": [3, 4, 8, 10, 14, 15, 16, 17, 18, 19, 25, 36, 38, 39, 40, 41, 42, 43, 44, 48, 51, 62, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 78, 79, 80, 81, 82, 85], "enkelt": [3, 35, 36, 38, 44, 46, 47, 48, 51, 59, 62, 64, 65, 66, 67, 69, 70, 78, 79, 84], "lurt": [3, 14, 42, 51, 62, 67, 70, 74, 80], "lage": [3, 8, 13, 14, 15, 16, 17, 19, 20, 34, 35, 36, 38, 41, 42, 44, 46, 47, 48, 50, 51, 52, 59, 62, 64, 65, 66, 67, 68, 69, 70, 71, 74, 78, 80, 81, 83, 84, 85, 86], "ulik": [3, 4, 5, 7, 10, 12, 13, 14, 15, 16, 17, 18, 20, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 46, 47, 48, 50, 51, 59, 60, 62, 64, 65, 66, 67, 68, 69, 71, 73, 74, 75, 76, 79, 80, 81, 84], "funksjon": [3, 4, 6, 11, 12, 15, 16, 17, 20, 34, 35, 37, 40, 41, 44, 49, 51, 58, 59, 60, 64, 66, 67, 69, 70, 71, 73, 74, 75, 77, 78, 79, 84, 87], "gj\u00f8r": [3, 5, 8, 9, 12, 15, 16, 34, 35, 36, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 52, 59, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75, 76, 78, 79, 84, 85], "forskjellig": [3, 5, 13, 41, 50, 51, 65, 73], "operasjon": [3, 5, 7, 38, 46, 47, 48, 50, 51, 59, 65, 66, 73], "eventuelt": [3, 30, 39, 41, 42, 44, 48, 59, 66, 79], "sitt": [3, 8, 59, 60, 85], "programmeringa": 3, "fell": [3, 12, 64, 75], "munn": 3, "et": [3, 4, 5, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 22, 25, 34, 35, 38, 39, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 59, 60, 62, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75, 77, 78, 79, 80, 81, 84, 85, 86], "program": [3, 7, 15, 16, 17, 18, 34, 35, 36, 38, 39, 41, 43, 44, 46, 47, 48, 49, 50, 51, 59, 60, 62, 65, 70, 73, 78, 84], "rapport": [3, 44, 45, 52, 81], "fra": [3, 4, 5, 8, 10, 15, 16, 17, 18, 19, 25, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 46, 47, 48, 50, 51, 59, 60, 62, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 76, 78, 79, 81, 84, 85], "prosjektarbeidet": 3, "velg": [3, 15, 16, 36, 41, 44, 47, 48, 62, 64, 66, 69, 71, 74, 76, 78], "tre": [3, 5, 8, 36, 37, 38, 47, 48, 49, 50, 51, 59, 62, 64, 65, 66, 68, 69, 71, 78, 81, 85], "naturvitenskapelig": [3, 44, 48, 79], "problemstilling": [3, 35, 48], "men": [3, 5, 7, 8, 12, 14, 15, 16, 17, 22, 25, 36, 38, 39, 40, 41, 42, 43, 44, 46, 47, 48, 50, 51, 52, 59, 62, 64, 65, 66, 67, 69, 70, 71, 73, 74, 75, 76, 78, 79, 80, 81, 84, 85], "st\u00e5r": [3, 8, 15, 36, 41, 44, 46, 47, 48, 50, 51, 64, 66, 70, 74, 81, 85], "ogs\u00e5": [3, 8, 11, 14, 15, 16, 17, 18, 25, 35, 36, 37, 38, 39, 41, 42, 43, 44, 47, 48, 50, 51, 52, 59, 60, 62, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 76, 77, 78, 79, 80, 81, 84, 85], "fritt": [3, 15, 44, 69, 78], "eget": [3, 36, 38, 87], "dersom": [3, 7, 10, 11, 14, 17, 18, 38, 39, 40, 41, 42, 44, 46, 47, 48, 50, 51, 52, 59, 62, 64, 65, 66, 67, 68, 69, 71, 73, 74, 78, 79, 80, 84], "har": [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 46, 47, 48, 50, 51, 52, 59, 60, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 87], "noen": [3, 12, 13, 15, 17, 18, 25, 35, 36, 37, 38, 39, 40, 41, 43, 44, 47, 48, 50, 51, 59, 62, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75, 76, 78, 79, 81, 84], "gode": [3, 36, 41, 66, 67, 71, 74, 78, 79], "id\u00e9er": 3, "snakk": 3, "l\u00e6reren": [3, 44, 45], "f\u00e5tt": [3, 34, 36, 44, 70, 84], "id\u00e9": [3, 74], "tror": [3, 35, 39, 42, 48, 51, 65, 78, 79], "lar": [3, 38, 44, 46, 47, 51, 65, 66, 67, 70, 73], "seg": [3, 4, 10, 15, 16, 17, 18, 34, 36, 39, 40, 41, 43, 44, 46, 47, 48, 51, 59, 65, 66, 69, 70, 71, 73, 74, 78, 79, 81], "gjennomf\u00f8r": 3, "under": [3, 36, 39, 44, 46, 47, 48, 51, 62, 64, 66, 68, 69, 73, 74, 78, 79], "evalu": [3, 44, 89], "blir": [3, 4, 8, 10, 13, 14, 15, 16, 17, 36, 38, 39, 42, 44, 47, 48, 50, 51, 59, 62, 64, 65, 66, 67, 68, 69, 71, 73, 74, 78, 79, 80, 81, 85], "lagt": [3, 44, 59, 66, 69, 74], "vekt": [3, 10, 65], "god": [3, 15, 16, 35, 37, 39, 44, 47, 64, 66, 68, 69, 71, 74, 78], "strukturert": [3, 43, 44], "kode": [3, 36, 37, 38, 41, 42, 46, 47, 48, 51, 59, 62, 63, 64, 65, 67, 78], "kreativ": [3, 36, 38], "velreflektert": 3, "l\u00f8sningsstrategi": [3, 51], "realfaglig": [3, 44, 47, 64], "forst\u00e5els": [3, 64], "grad": [3, 6, 19, 44, 69, 73, 74], "samarbeid": [3, 36], "bruke": [3, 4, 5, 6, 7, 8, 11, 13, 14, 15, 16, 17, 18, 19, 20, 25, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 52, 59, 60, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 76, 77, 78, 79, 80, 81, 84, 85, 86, 87], "github": 3, "jupyt": [3, 16, 17, 18, 43, 44, 66, 67], "notebook": [3, 16, 17, 18, 43, 44, 66, 67], "leveringsformat": 3, "der": [3, 4, 5, 13, 14, 15, 16, 17, 18, 23, 25, 34, 35, 36, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 59, 60, 62, 65, 66, 67, 69, 70, 71, 73, 74, 78, 79, 80, 81, 84, 87], "integrert": [3, 36, 44], "rapporten": [3, 43, 44, 81], "innehold": [3, 6, 12, 15, 16, 17, 36, 40, 44, 47, 50, 51, 59, 62, 64, 65, 66, 68, 69, 70, 73, 74, 75, 78], "n\u00f8dvendig": [3, 27, 47, 58, 59, 67, 81], "faglig": 3, "matematisk": [3, 17, 39, 47, 48, 51, 59, 62, 64, 65, 68, 73, 78, 79], "rundt": [3, 44, 64, 67, 68], "noe": [3, 8, 13, 15, 17, 18, 36, 37, 38, 43, 44, 46, 47, 48, 50, 51, 59, 62, 64, 65, 66, 67, 68, 69, 71, 73, 78, 79, 81, 85], "programmeringsteknisk": 3, "statistik": [3, 66], "data": [3, 5, 6, 10, 13, 14, 17, 18, 36, 37, 39, 42, 43, 44, 45, 47, 64, 65, 67, 68, 69, 78, 79, 80, 81, 83, 84, 88, 89], "eller": [3, 5, 7, 14, 15, 16, 17, 18, 25, 34, 35, 36, 37, 38, 39, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 59, 62, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 78, 79, 80, 81, 84, 87], "du": [3, 5, 6, 7, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 27, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 52, 59, 60, 62, 63, 64, 65, 66, 67, 68, 69, 71, 73, 74, 75, 76, 77, 78, 79, 80, 81, 87, 88], "bruker": [3, 13, 14, 15, 16, 17, 34, 36, 38, 41, 42, 43, 44, 46, 47, 48, 51, 59, 62, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 77, 78, 79, 80, 83, 84], "dr\u00f8fting": [3, 43, 44], "analysen": [3, 73], "gjort": [3, 4, 8, 17, 36, 37, 40, 41, 44, 59, 64, 65, 66, 69, 85], "nedenfor": [3, 5, 6, 7, 12, 15, 16, 17, 18, 19, 34, 35, 36, 38, 39, 40, 41, 43, 44, 46, 47, 48, 50, 51, 59, 60, 62, 64, 65, 66, 68, 69, 70, 71, 73, 74, 75, 76, 77, 78, 79, 81, 82], "forslag": [3, 38, 44, 51, 68], "fordyp": 3, "stadig": [3, 68], "viktiger": [3, 68], "v\u00e5rt": [3, 13, 14, 17, 38, 41, 42, 44, 45, 46, 47, 51, 59, 66, 68, 69, 74, 78, 80, 84], "energikrevend": 3, "samfunn": [3, 66, 68], "diskuter": [3, 43], "om": [3, 5, 6, 7, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 35, 36, 37, 38, 40, 41, 42, 43, 44, 45, 47, 48, 49, 50, 51, 59, 60, 62, 63, 64, 65, 66, 67, 69, 70, 71, 73, 74, 75, 78, 79, 80, 85, 87], "kjernekraft": 3, "l\u00f8sningen": [3, 11, 36, 40, 41, 47, 48, 51, 78], "milj\u00f8": [3, 78], "energiutfordringen": 3, "vi": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 25, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 46, 47, 48, 50, 51, 52, 59, 60, 62, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 88], "overfor": 3, "samfunnet": [3, 66, 81], "dag": [3, 36, 39, 68, 70], "prinsippet": [3, 47, 48, 69, 73, 74, 77], "bak": [3, 36, 44, 46, 51, 62, 65, 66, 69], "fisjonsreaktor": 3, "atomkjern": 3, "tyngr": 3, "enn": [3, 14, 18, 36, 37, 41, 43, 44, 46, 47, 48, 51, 59, 62, 64, 66, 67, 69, 70, 71, 73, 74, 78, 80, 81], "jern": 3, "spalt": 3, "opp": [3, 10, 12, 13, 14, 15, 16, 17, 18, 35, 36, 37, 39, 40, 42, 43, 44, 47, 51, 59, 65, 67, 70, 71, 73, 74, 75, 78, 79, 80, 85], "ved": [3, 4, 5, 10, 11, 12, 15, 16, 17, 18, 25, 34, 35, 36, 38, 39, 40, 41, 42, 43, 44, 46, 47, 48, 50, 51, 59, 60, 62, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75, 77, 78, 79, 81], "skyte": 3, "n\u00f8ytron": 3, "dem": [3, 7, 10, 15, 34, 35, 36, 38, 39, 42, 44, 46, 48, 59, 60, 62, 64, 65, 66, 67, 68, 70, 71, 73, 76, 78, 79, 81, 84], "da": [3, 4, 8, 10, 13, 14, 15, 18, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 47, 48, 50, 51, 62, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 78, 79, 80, 81, 84, 85], "omdann": [3, 51], "mass": [3, 15, 22, 35, 44, 47, 59, 60, 62, 64, 66, 78, 88], "energi": [3, 8, 36, 44, 59, 60, 88], "if\u00f8lg": [3, 81], "einstein": 3, "ber\u00f8mt": [3, 34, 51], "energilov": 3, "e": [3, 11, 12, 15, 16, 17, 19, 22, 41, 44, 50, 59, 60, 62, 71, 73, 74, 75, 77, 84], "mc": [3, 34, 60, 70], "regn": [3, 7, 42, 45, 47, 48, 49, 51, 58, 59, 60, 62, 63, 64, 65, 66, 69, 70, 71, 73, 78, 84], "energien": [3, 8, 22, 35, 36, 44, 47, 59, 60, 62, 85], "frigj\u00f8r": 3, "regner": [3, 15, 35, 36, 47, 49, 51, 59, 60, 62, 65, 69, 71, 73, 74, 78], "forskjellen": [3, 5, 7, 9, 10, 12, 16, 41, 48, 65, 71, 73, 75, 78, 79], "f\u00f8r": [3, 36, 41, 44, 47, 48, 51, 59, 62, 66, 74, 78, 81], "etter": [3, 5, 6, 7, 8, 9, 11, 14, 15, 16, 19, 20, 25, 30, 34, 36, 42, 44, 48, 50, 51, 59, 60, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 78, 79, 80, 81, 85, 87], "ganger": [3, 15, 16, 17, 34, 36, 37, 38, 39, 40, 41, 46, 47, 51, 59, 62, 64, 66, 67, 69, 70, 73, 74, 78, 81, 87], "s\u00e5": [3, 10, 15, 16, 17, 18, 35, 36, 37, 38, 39, 40, 41, 43, 44, 46, 47, 48, 49, 50, 51, 59, 62, 64, 65, 66, 67, 69, 70, 71, 73, 74, 78, 79, 81, 84], "denn": [3, 8, 12, 15, 16, 17, 19, 22, 34, 35, 36, 39, 41, 42, 43, 44, 47, 48, 51, 59, 60, 62, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75, 78, 79, 81, 84, 85], "massen": [3, 15, 60, 62, 66, 78], "kvadratet": 3, "lyset": [3, 48, 51, 62], "hastighet": [3, 15, 36, 47, 51, 59, 60, 62, 71, 78], "slitsom": 3, "kjedelig": [3, 38, 46, 51], "sl\u00e5": [3, 35, 44, 71], "nuklidemassen": 3, "tabel": [3, 43, 45, 65], "hver": [3, 7, 14, 15, 27, 34, 36, 38, 39, 42, 44, 45, 46, 47, 49, 50, 51, 52, 59, 60, 62, 65, 66, 67, 69, 70, 73, 74, 78, 79, 80, 81, 84], "gang": [3, 34, 36, 44, 46, 47, 48, 50, 51, 59, 66, 67, 78], "beregning": [3, 74], "oss": [3, 4, 5, 10, 13, 14, 15, 16, 17, 18, 25, 35, 36, 38, 39, 40, 42, 43, 44, 45, 47, 48, 50, 51, 62, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 78, 79, 80, 81, 84], "lag": [3, 7, 15, 16, 17, 18, 23, 34, 35, 36, 38, 40, 41, 42, 43, 44, 45, 47, 48, 49, 50, 51, 59, 60, 62, 63, 64, 65, 69, 70, 71, 78, 79, 84], "valgt": [3, 13, 67, 74], "brukeren": [3, 47, 48, 49, 59, 60, 62], "b\u00e5de": [3, 15, 17, 34, 36, 39, 40, 44, 51, 62, 65, 66, 67, 69, 71, 73, 74, 76, 78, 79, 81, 84], "fisjon": 3, "fusjon": 3, "radioakt": [3, 51, 65], "gi": [3, 13, 36, 38, 47, 48, 51, 59, 64, 67, 68, 69, 71, 73, 74], "input": [3, 10, 26, 47, 48, 49, 51, 59, 62, 86], "hvilk": [3, 8, 12, 13, 14, 15, 18, 34, 35, 36, 38, 39, 41, 42, 43, 44, 47, 59, 62, 66, 67, 69, 70, 71, 74, 75, 78, 79, 80, 81, 85], "grunnstoff": [3, 35, 48, 51, 65, 66], "hun": [3, 14, 65, 78, 80], "h\u00f8yre": [3, 9, 15, 16, 17, 38, 47, 51, 59, 70, 73, 78], "venstr": [3, 9, 38, 51, 59, 70, 73], "side": [3, 10, 15, 16, 17, 69, 73, 74, 78, 86, 88], "reaksjonspila": 3, "fila": [3, 6, 18, 19, 35, 43, 44, 66, 67, 71], "hent": [3, 36, 44, 46, 47, 59, 78], "ligger": [3, 13, 14, 18, 36, 42, 43, 44, 66, 69, 70, 71, 73, 74, 76, 78, 80], "her": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 27, 34, 35, 36, 37, 38, 39, 41, 42, 43, 44, 46, 47, 48, 51, 52, 59, 60, 62, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75, 76, 77, 78, 79, 80, 81, 84, 85, 86], "1t": 3, "man": [3, 15, 47, 62, 67], "hvi": [3, 5, 11, 12, 17, 18, 34, 35, 36, 37, 38, 39, 40, 41, 43, 44, 45, 46, 47, 48, 51, 59, 62, 64, 65, 66, 67, 68, 69, 70, 71, 74, 75, 78, 84], "m\u00e5linger": [3, 39, 69, 78, 79], "observasjon": [3, 18, 39, 43, 67, 79], "plotter": [3, 15, 35, 41, 44, 47, 66, 68, 69, 71, 74, 78, 81], "punkter": [3, 35, 36, 47, 68, 69, 70, 71, 73, 74, 76, 78], "koordinatsystem": [3, 6, 18, 43, 68, 74, 77, 78, 84], "finn": [3, 4, 7, 8, 11, 12, 15, 16, 17, 35, 36, 37, 40, 41, 44, 47, 48, 50, 51, 59, 62, 65, 66, 67, 68, 69, 70, 73, 75, 76, 77, 78, 79, 81, 84, 85], "kurv": [3, 18, 30, 43, 69], "passer": [3, 36, 79, 81, 84], "best": [3, 48, 66, 67, 71, 73, 79, 81, 84], "punkten": [3, 36, 41, 44, 68, 69, 71, 74, 84], "helt": [3, 13, 14, 15, 16, 17, 35, 36, 37, 42, 44, 46, 47, 48, 51, 59, 64, 67, 71, 74, 78, 80, 81], "konkret": [3, 62], "brukt": [3, 13, 14, 15, 44, 46, 47, 52, 59, 64, 65, 66, 67, 68, 69, 70, 74, 78, 80], "geogebra": [3, 47], "f": [3, 4, 9, 11, 12, 14, 15, 16, 17, 19, 20, 23, 24, 28, 29, 36, 40, 41, 42, 44, 47, 50, 51, 62, 66, 68, 70, 71, 73, 74, 75, 76, 77, 78, 80, 81, 84, 85], "x": [3, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 23, 24, 28, 29, 30, 31, 35, 36, 37, 40, 41, 42, 44, 47, 48, 51, 62, 64, 66, 68, 69, 70, 71, 73, 74, 75, 76, 77, 78, 80, 84, 88], "ax": [3, 10, 47, 62, 69, 73, 77], "b": [3, 5, 7, 10, 12, 13, 15, 16, 17, 18, 23, 24, 25, 30, 32, 34, 35, 36, 39, 40, 41, 43, 44, 47, 48, 50, 51, 59, 62, 65, 69, 70, 71, 73, 74, 75, 76, 77, 78, 79, 81, 84], "passet": 3, "hva": [3, 5, 7, 8, 12, 13, 14, 15, 16, 17, 18, 23, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 62, 63, 64, 65, 66, 67, 69, 70, 71, 74, 75, 76, 77, 78, 80, 84, 85], "betyr": [3, 12, 14, 15, 16, 17, 18, 36, 39, 40, 43, 44, 46, 47, 48, 50, 51, 59, 65, 66, 67, 69, 71, 74, 75, 78, 80, 84], "finner": [3, 10, 15, 16, 17, 18, 34, 35, 38, 40, 41, 43, 44, 45, 48, 51, 59, 62, 66, 69, 71, 74, 78], "egentlig": [3, 8, 15, 17, 36, 51, 68, 69, 70, 79, 85], "funksjonen": [3, 10, 11, 12, 13, 14, 19, 27, 30, 34, 35, 36, 40, 41, 42, 44, 46, 47, 49, 51, 59, 60, 62, 64, 66, 67, 68, 69, 70, 71, 73, 74, 75, 77, 78, 80, 84], "hvor": [3, 4, 8, 10, 11, 12, 13, 14, 15, 17, 36, 38, 39, 40, 42, 44, 47, 48, 51, 59, 64, 66, 67, 68, 70, 71, 73, 74, 75, 78, 79, 80, 81, 84, 85], "sikker": 3, "funksjonsuttrykket": [3, 12, 75, 78], "sagt": [3, 66, 79], "annen": [3, 15, 16, 17, 36, 38, 41, 47, 59, 62, 64, 65, 66, 70, 71, 74, 78, 84], "pokker": 3, "matematikken": [3, 15, 37, 47, 59, 62], "anta": [3, 8, 15, 36, 39, 44, 51, 78, 81, 85], "ek": [3, 15, 36, 42, 44, 66, 68, 70, 74, 76, 81], "x_1": [3, 11, 40, 73, 74, 78], "y_1": [3, 15, 16, 17], "x_2": [3, 11, 40, 44, 73, 74, 78], "y_2": [3, 44], "x_3": [3, 11, 40, 74, 78], "y_3": 3, "ikk": [3, 5, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 27, 35, 36, 38, 39, 40, 41, 42, 43, 44, 46, 47, 48, 50, 51, 59, 62, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75, 76, 77, 78, 79, 80, 81, 84, 85, 86], "linj": [3, 18, 36, 48, 59, 64, 66, 67, 69, 73, 74, 78], "\u00f8nsker": [3, 4, 13, 14, 15, 16, 17, 36, 38, 39, 42, 45, 46, 47, 50, 51, 59, 62, 64, 65, 66, 67, 68, 69, 71, 74, 78, 79, 80, 81, 84], "tenk": [3, 18, 43, 44, 46, 59, 74, 79], "avstanden": [3, 15, 44, 69, 71], "linja": [3, 22, 34, 36, 50, 59, 69, 74], "minst": [3, 7, 13, 14, 36, 42, 45, 65, 69, 70, 80, 84], "mulig": [3, 10, 15, 16, 17, 18, 32, 34, 36, 39, 40, 41, 43, 44, 48, 51, 62, 66, 67, 69, 71, 74, 77, 78, 79, 81, 84], "uttrykk": [3, 4, 15, 16, 17, 18, 40, 43, 44, 67, 69, 74, 77, 78], "b\u00f8r": [3, 4, 7, 13, 14, 15, 16, 17, 18, 19, 37, 38, 40, 41, 42, 43, 44, 45, 47, 48, 59, 65, 66, 67, 68, 69, 70, 74, 78, 80, 81], "deriver": [3, 71, 73, 78], "uttrykket": [3, 10, 15, 16, 17, 44, 62, 69, 73, 74, 77, 78, 79, 84], "planet": [3, 4, 44, 78], "feilen": [3, 23, 27, 51, 59, 62, 69, 70, 71, 73, 74], "minimer": [3, 10, 13], "derivasjon": [3, 73, 78], "hadd": [3, 5, 14, 15, 36, 42, 50, 65, 69, 80], "skjedd": [3, 66], "hatt": [3, 51], "flere": [3, 5, 7, 14, 15, 17, 35, 36, 38, 39, 44, 46, 47, 48, 50, 59, 60, 64, 65, 66, 67, 69, 71, 73, 74, 78, 79, 80, 81], "tast": [3, 47, 48, 59, 62], "inn": [3, 4, 8, 14, 15, 16, 35, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 50, 51, 59, 62, 64, 65, 66, 67, 68, 69, 70, 73, 74, 78, 79, 80, 81, 84], "n": [3, 4, 5, 10, 15, 23, 25, 30, 31, 32, 34, 38, 39, 40, 41, 44, 46, 47, 50, 51, 59, 62, 65, 66, 69, 70, 71, 73, 74, 77, 78, 79, 81, 82], "bruk": [3, 5, 11, 12, 15, 16, 17, 18, 19, 35, 36, 38, 39, 40, 41, 42, 43, 44, 47, 48, 49, 51, 59, 62, 65, 66, 67, 70, 71, 74, 75, 78], "egnet": [3, 66, 67], "stort": [3, 15, 16, 17, 44, 47, 66, 67, 68, 74, 76, 78], "datasett": [3, 16, 45, 69, 71, 81], "sammenlignn": 3, "regresjonsbibliotek": 3, "python": [3, 5, 6, 9, 10, 11, 13, 16, 19, 36, 40, 41, 45, 46, 47, 50, 51, 59, 60, 62, 64, 65, 66, 68, 69, 71, 73, 74, 76, 78, 84], "slekt": 3, "mot": [3, 4, 18, 34, 35, 36, 38, 39, 43, 44, 51, 68, 69, 73, 74, 78, 79, 81], "300": [3, 10, 13, 36, 62, 88], "arter": [3, 65, 66, 69], "innenfor": [3, 15, 39, 66, 69, 73, 81], "sverdliljefamilien": 3, "1936": 3, "klassifisert": 3, "genetikeren": 3, "ronald": 3, "fischer": 3, "varietet": 3, "slekten": 3, "se": [3, 4, 5, 6, 7, 8, 9, 11, 12, 14, 15, 16, 18, 25, 35, 36, 38, 39, 40, 41, 42, 43, 44, 46, 47, 48, 50, 51, 59, 60, 62, 64, 65, 66, 67, 69, 70, 71, 73, 74, 75, 78, 79, 80, 81, 84, 85], "bildet": [3, 18, 36, 43], "ovenfor": [3, 5, 6, 12, 13, 15, 16, 17, 18, 19, 34, 35, 36, 38, 40, 41, 42, 43, 44, 46, 47, 48, 50, 51, 59, 62, 64, 65, 66, 67, 68, 69, 71, 73, 74, 75, 78, 84], "ble": [3, 59, 67, 70], "samlet": [3, 66, 68, 69], "individ": [3, 16, 18, 32, 39, 43, 69, 81], "varieteten": 3, "spesielt": [3, 16, 36, 37, 47, 48, 59, 65, 71, 73, 74, 81], "lengd": [3, 64], "bredd": [3, 65], "begerblad": [3, 13], "sepal": 3, "kronblad": 3, "petal": 3, "le": [3, 6, 18, 19, 35, 39, 42, 43, 45, 66, 69, 81], "unders\u00f8k": [3, 14, 34, 41, 42, 47, 51, 62, 65, 74, 79, 80, 81], "irisblomstdatasettet": 3, "plott": [3, 6, 16, 17, 18, 19, 20, 34, 35, 37, 39, 40, 41, 42, 43, 44, 47, 66, 69, 71, 73, 74, 78, 79, 81, 84, 87], "variabl": [3, 36, 37, 38, 45, 49, 51, 63, 65, 66, 67, 69, 77, 78, 79, 84, 86], "hverandr": [3, 11, 15, 16, 18, 35, 39, 48, 51, 62, 66, 68, 69, 74, 78, 79], "beskriv": [3, 7, 15, 16, 17, 18, 34, 35, 39, 40, 41, 43, 44, 45, 47, 48, 50, 51, 59, 65, 66, 68, 69, 70, 71, 73, 74, 78, 79, 81, 84], "sammenhengen": [3, 15, 16, 17, 25, 38, 42, 45, 46, 51, 66, 78], "eksperiment": [3, 15, 16, 17, 18, 38, 39, 43, 44, 46, 47, 66, 68, 70, 79], "farger": [3, 38, 47, 65, 66, 68], "typer": [3, 46, 51, 68, 69, 74], "histogram": [3, 66, 88], "boksplott": [3, 69], "linjeplott": 3, "punktplott": 3, "osv": [3, 36, 51], "utf\u00f8r": [3, 6, 7, 19, 36, 47, 48, 51, 67, 69, 70, 81, 84], "datasetten": [3, 66], "passend": [3, 62], "forklar": [3, 5, 6, 7, 8, 9, 11, 15, 16, 18, 34, 35, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 59, 60, 62, 63, 64, 65, 66, 69, 70, 71, 73, 74, 78, 79, 81, 84, 85], "To": [3, 68, 74, 86], "naturlig": [3, 43, 44, 47, 48, 59, 71, 73, 78, 79], "tall": [3, 5, 26, 27, 29, 30, 31, 36, 38, 47, 48, 49, 50, 51, 59, 62, 65, 66, 67, 69, 70, 71, 73], "heltal": [3, 22, 47, 49, 51, 59, 60, 64, 65, 70, 87], "geq": 3, "innbyrd": 3, "primisk": 3, "st\u00f8rste": [3, 35, 48, 69], "fellesdivisor": 3, "tallen": [3, 5, 44, 47, 48, 51, 59, 65, 67, 69, 71], "eksempel": [3, 5, 11, 15, 16, 17, 35, 36, 37, 38, 39, 40, 41, 44, 46, 47, 48, 50, 51, 59, 62, 65, 66, 67, 68, 69, 70, 71, 73, 74, 78, 79, 81, 84], "25": [3, 10, 13, 14, 16, 23, 28, 36, 38, 44, 45, 48, 51, 64, 69, 70, 73, 80, 83], "fordi": [3, 15, 36, 39, 41, 47, 48, 50, 51, 59, 62, 66, 69, 70, 71, 73, 74, 77, 78, 79, 82], "de": [3, 5, 7, 10, 11, 12, 13, 14, 15, 16, 17, 18, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 59, 62, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75, 76, 77, 78, 79, 80, 81, 84], "heltallet": [3, 59], "deler": [3, 8, 13, 14, 35, 36, 42, 48, 66, 69, 71, 80, 85], "gitt": [3, 11, 12, 13, 14, 15, 16, 17, 36, 40, 41, 42, 44, 47, 49, 50, 51, 59, 60, 62, 64, 65, 66, 67, 69, 71, 73, 74, 75, 78, 79, 80, 81, 84], "sp\u00f8rre": [3, 59], "mang": [3, 8, 11, 14, 15, 36, 38, 40, 42, 44, 46, 47, 48, 50, 51, 59, 62, 66, 67, 68, 69, 70, 71, 73, 74, 76, 78, 79, 80, 81, 84, 85], "mindr": [3, 15, 16, 36, 41, 46, 47, 48, 51, 59, 67, 69, 71, 73, 74, 81], "svar": [3, 12, 36, 43, 48, 51, 69, 71, 73, 74, 75, 79], "varphi": 3, "angir": [3, 50, 74], "relev": [3, 11, 74], "innen": [3, 47], "krypter": 3, "oppgaven": [3, 12, 35, 40, 41, 43, 44, 45, 64, 75], "lese": [3, 13, 14, 30, 37, 44, 47, 59, 66, 79, 80], "nettst": 3, "datasettet": [3, 16, 45, 66, 67, 69, 81, 83, 84], "ditt": [3, 15, 18, 35, 36, 38, 42, 43, 44, 47, 51, 59, 66, 70, 78], "utforsk": [3, 15, 18, 35, 36, 37, 39, 43, 46, 47, 51, 66, 69, 79, 81], "egenskap": [3, 39, 64, 65, 70, 79], "produser": 3, "verdier": [3, 10, 12, 13, 14, 15, 16, 17, 18, 30, 39, 40, 42, 43, 47, 50, 59, 60, 62, 65, 66, 67, 68, 69, 71, 73, 75, 78, 79, 80, 81, 84], "nettsiden": [3, 66], "http": [3, 44, 52, 66, 71], "primefan": 3, "tripod": 3, "com": [3, 52, 71], "phi500": 3, "html": 3, "fil": [3, 44, 45, 66], "rydd": [3, 14, 42, 78, 80], "filen": [3, 39, 79], "kolonn": [3, 42, 65, 66, 67, 68, 71], "hypotes": [3, 13, 67, 78], "si": [3, 13, 15, 16, 17, 18, 36, 40, 43, 44, 46, 48, 50, 51, 59, 62, 64, 66, 67, 68, 69, 73, 74, 78, 79], "p": [3, 16, 44, 48, 59, 62, 70, 71, 78, 88], "primtal": 3, "avgj\u00f8r": [3, 44, 49, 65, 69], "hypotesen": 3, "dine": [3, 13, 14, 15, 16, 17, 18, 36, 42, 43, 44, 45, 47, 66, 68, 80], "stemmer": [3, 5, 15, 17, 18, 34, 43, 48, 65, 74, 78, 81], "ei": [3, 7, 35, 44, 47, 49, 50, 51, 59, 62, 66, 70, 71, 73, 74, 78], "utvid": [3, 15, 18, 35, 36, 39, 43, 44, 48, 50, 59, 73, 78, 79, 81], "produs": 3, "resultatet": [3, 8, 41, 42, 71, 73, 78, 82, 85], "subjektiv": 3, "vitenskap": 3, "objektivt": 3, "faktor": [3, 44], "bed\u00f8mm": 3, "kriteri": [3, 13, 14, 42, 44, 48, 67, 80, 83], "vinkjenner": 3, "faktisk": [3, 8, 10, 15, 16, 17, 40, 47, 51, 59, 62, 64, 66, 67, 70, 71, 78, 79, 85], "kjenner": [3, 12, 15, 16, 17, 35, 38, 40, 41, 51, 52, 66, 70, 73, 74, 75, 78], "igjen": [3, 15, 17, 18, 39, 43, 51, 66, 70, 73, 78, 81], "trenger": [3, 14, 15, 18, 30, 35, 38, 40, 42, 43, 44, 47, 50, 51, 59, 62, 65, 66, 69, 70, 71, 73, 74, 78, 80], "fix": 3, "volatil": 3, "acid": 3, "mengden": [3, 4, 8, 51, 67, 68, 85], "syre": [3, 35], "flyktig": 3, "gasser": [3, 44, 62], "g": [3, 11, 15, 16, 17, 25, 28, 29, 35, 36, 44, 47, 59, 62, 65, 66, 68, 69, 74, 78], "l": [3, 15, 22, 26, 35, 44, 78, 88], "citric": 3, "sitronsyr": 3, "residu": 3, "sugar": 3, "sukker": 3, "endt": 3, "ferment": 3, "vinen": 3, "sulphur": 3, "dioxid": 3, "mengd": [3, 51, 64], "svoveldioksid": 3, "tilsatt": [3, 35, 66, 69], "mg": [3, 15, 35, 69, 78], "gjennomsnitt": [3, 6, 8, 14, 30, 42, 69, 80, 85], "standardavvik": [3, 6, 30], "verdien": [3, 10, 15, 18, 35, 36, 39, 40, 41, 43, 44, 46, 47, 48, 50, 51, 59, 62, 65, 66, 67, 68, 69, 70, 71, 73, 74, 78, 81, 82, 84], "statistisk": [3, 45, 69], "hvilken": [3, 7, 11, 13, 14, 18, 34, 38, 42, 43, 44, 47, 48, 50, 51, 59, 66, 67, 69, 74, 78, 80], "sulfat": 3, "mene": [3, 15, 38, 44, 62, 63, 64, 67, 78], "bundet": [3, 36], "korreler": [3, 69], "r\u00f8dvinskvaliteten": 3, "diskut": [3, 12, 15, 18, 36, 39, 41, 43, 45, 74, 75], "korrelasjon": [3, 45, 83], "n\u00f8dvendigvi": [3, 64, 69, 81, 84], "kausalitet": [3, 69], "v\u00e6rt": [3, 36, 39, 44, 67, 69, 81], "saml": [3, 36, 45, 65], "madagaskar": 3, "2018": [3, 79], "populasjonsdata": 3, "2015": [3, 79], "sp\u00f8r": [3, 45, 48], "andrea": [3, 65, 79], "m\u00e5ter": [3, 5, 35, 36, 47, 50, 59, 62, 65, 66, 68, 69, 74], "representer": [3, 8, 19, 36, 39, 40, 47, 51, 62, 65, 68, 69, 70, 73, 74, 78, 79, 85], "utvikl": [3, 16, 18, 36, 39, 43, 51, 71, 78, 79, 81], "over": [3, 5, 13, 14, 18, 19, 22, 36, 38, 40, 42, 43, 44, 47, 48, 51, 59, 65, 66, 68, 69, 70, 71, 73, 74, 77, 78, 80, 81, 82], "tid": [3, 4, 6, 11, 15, 16, 17, 18, 23, 25, 28, 29, 30, 32, 36, 39, 43, 44, 47, 51, 59, 62, 64, 65, 66, 68, 71, 74, 78, 81, 82, 84], "lemurtyp": 3, "sortert": 3, "tidspunkt": [3, 16, 39, 78, 79], "dagen": [3, 28, 62, 67, 68], "forskjel": [3, 10, 15, 18, 38, 42, 51, 66, 78], "lemurforekomsten": 3, "mariarano": 3, "matsedroi": 3, "dr\u00f8ft": [3, 15, 34, 39, 44, 79], "framstillingen": 3, "lemurpopulasjonen": 3, "omr\u00e5det": [3, 66, 69, 73], "lager": [4, 5, 17, 35, 36, 37, 39, 40, 47, 50, 51, 59, 64, 65, 66, 67, 68, 69, 70, 74, 77, 78, 79, 81, 88], "systemet": [4, 8, 15, 16, 17, 39, 44, 51, 78, 79], "hovedsakelig": [4, 44, 85], "ting": [4, 8, 36, 38, 46, 47, 48, 50, 51, 52, 59, 62, 65, 74, 79, 85], "absorbert": [4, 44, 85], "str\u00e5ling": [4, 8, 44, 85], "ir": 4, "synlig": [4, 48], "uv": [4, 44], "sola": [4, 8, 44, 85], "emittert": [4, 44, 85], "modellen": [4, 8, 10, 15, 16, 17, 18, 34, 39, 43, 44, 45, 71, 73, 78, 79, 81, 84, 85], "endringen": [4, 15, 16, 17, 18, 39, 40, 44, 71, 78, 79], "i": [4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 19, 22, 23, 25, 26, 27, 28, 29, 30, 31, 32, 37, 39, 40, 41, 42, 45, 47, 50, 52, 58, 59, 60, 62, 65, 66, 67, 69, 70, 71, 73, 74, 75, 76, 78, 79, 80, 81, 82, 84, 86, 87, 88], "overflatetemperaturen": 4, "tida": [4, 15, 16, 17, 36, 40, 51, 59, 65, 66, 70, 78], "siden": [4, 14, 15, 16, 17, 36, 37, 38, 40, 42, 47, 48, 50, 51, 66, 67, 68, 69, 71, 73, 74, 78, 80, 81, 87], "interessert": [4, 14, 42, 62, 78, 80], "enhver": [4, 15, 16, 17, 51, 81], "benytt": [4, 6, 14, 17, 34, 35, 41, 42, 44, 47, 48, 50, 51, 63, 66, 67, 70, 71, 73, 74, 78, 80, 86], "den": [4, 5, 7, 8, 10, 11, 13, 14, 15, 16, 17, 18, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 46, 47, 48, 50, 51, 59, 62, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 78, 79, 80, 81, 84, 85, 87], "derivert": [4, 15, 16, 17, 23, 35, 40, 44, 71, 74, 76, 78], "momentan": [4, 15, 17, 40, 71, 78], "endr": [4, 5, 15, 17, 18, 34, 38, 39, 40, 44, 46, 47, 50, 51, 52, 59, 64, 65, 66, 71, 74, 78, 79, 81, 84], "t": [4, 8, 11, 15, 16, 17, 18, 25, 28, 32, 39, 40, 43, 44, 46, 51, 59, 62, 66, 71, 74, 76, 77, 78, 81, 82, 85, 86, 88], "s_": [4, 8, 15, 39, 81, 85], "la": [4, 5, 10, 13, 14, 15, 25, 35, 36, 38, 39, 40, 41, 42, 44, 47, 48, 50, 51, 59, 62, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 78, 79, 80, 81, 84], "modeller": [4, 6, 15, 16, 17, 25, 44, 62, 70, 78, 79], "statisk": [4, 5, 65], "albedo": [4, 8, 44, 85], "refleksjonsgrad": 4, "alpha": [4, 88], "begrens": 4, "tidsrommet": 4, "albedoen": 4, "kortb\u00f8lget": 4, "frac": [4, 8, 12, 15, 16, 17, 30, 40, 44, 47, 49, 51, 60, 62, 69, 70, 71, 73, 74, 75, 77, 78, 79, 82, 84, 85], "1": [4, 5, 6, 7, 10, 11, 13, 14, 19, 20, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 37, 40, 41, 42, 46, 60, 64, 68, 69, 74, 77, 79, 80, 82, 83, 84, 86, 88, 89], "s": [4, 8, 14, 15, 18, 22, 25, 29, 30, 32, 35, 36, 39, 40, 43, 44, 46, 47, 51, 59, 62, 66, 68, 70, 71, 78, 80, 81, 85, 86, 88], "4": [4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 17, 19, 22, 23, 27, 29, 31, 32, 34, 37, 38, 41, 45, 46, 49, 50, 59, 64, 66, 68, 69, 74, 75, 77, 79, 80, 81, 83, 84, 85, 86, 87, 88], "approx": [4, 11, 15, 16, 17, 40, 41, 44, 70, 71, 73, 74, 78, 81], "1361": [4, 10, 44, 85], "w": [4, 8, 44, 65, 66, 85, 86], "m": [4, 8, 13, 15, 22, 24, 25, 31, 36, 40, 41, 44, 46, 47, 51, 59, 62, 65, 70, 71, 74, 78, 85, 88], "2": [4, 5, 6, 7, 9, 10, 11, 13, 14, 17, 19, 22, 24, 27, 28, 29, 30, 31, 37, 38, 40, 41, 42, 46, 60, 64, 68, 69, 77, 79, 80, 82, 83, 84, 86, 88, 89], "gjennomsnittlig": [4, 8, 16, 30, 44, 69, 78, 85], "motatt": 4, "l\u00f8pet": [4, 17, 39, 46, 51, 59, 66, 78, 81], "\u00e5r": [4, 44, 47, 48, 51, 59, 62, 70, 78, 79, 85], "0": [4, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 34, 35, 36, 38, 39, 40, 41, 42, 43, 44, 46, 47, 48, 49, 50, 51, 52, 59, 62, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75, 76, 77, 78, 80, 81, 82, 83, 84, 85, 86, 88], "32": [4, 10, 13, 27, 29, 69, 70, 83], "svartlegem": 4, "hensyn": [4, 15, 16, 17, 18, 35, 39, 41, 43, 44, 64, 74, 77, 78, 79, 81], "utsend": 4, "lang": [4, 44, 47, 50, 51, 69, 71, 73, 78, 81, 87], "b\u00f8lgelengd": [4, 44, 48, 51, 62], "alts\u00e5": [4, 15, 16, 17, 36, 38, 39, 40, 46, 47, 50, 51, 59, 66, 67, 68, 69, 71, 73, 74, 78, 79, 81], "legem": [4, 15, 22, 44, 46, 51, 59, 60, 71, 73, 78, 85], "absorber": [4, 44, 85], "send": [4, 8, 36, 85], "derm": [4, 15, 35, 36, 40, 44, 62, 64, 66, 69, 74, 78, 81], "f\u00f8lger": [4, 17, 38, 44, 46, 51, 67, 71, 79, 81], "emisjonen": 4, "langb\u00f8lget": 4, "stefan": [4, 8, 44, 85], "boltzmann": [4, 8, 44, 85, 88], "lov": [4, 8, 16, 17, 40, 44, 85], "epsilon": 4, "cdot": [4, 8, 15, 16, 17, 25, 40, 44, 48, 51, 62, 65, 70, 71, 73, 78, 81, 84, 85], "sigma": [4, 8, 10, 40, 44, 69, 73, 78, 85], "emissiviteten": 4, "legemet": [4, 15, 62, 71, 78], "m\u00e5l": [4, 36, 45, 84], "mye": [4, 8, 10, 15, 35, 36, 37, 44, 51, 52, 64, 65, 66, 67, 68, 71, 73, 74, 78, 85], "oppf\u00f8rer": [4, 73], "fullstendig": [4, 8, 44, 45, 69, 84, 85], "perfekt": [4, 44, 51, 81, 84], "speil": 4, "konstanten": [4, 17, 78, 84], "5": [4, 5, 7, 8, 10, 11, 12, 13, 14, 15, 19, 23, 24, 25, 26, 27, 30, 32, 37, 39, 40, 41, 44, 46, 50, 59, 64, 66, 68, 69, 70, 74, 75, 76, 77, 79, 80, 82, 83, 84, 85, 86, 88], "67": [4, 10, 13, 67, 70, 82], "10": [4, 10, 11, 13, 14, 15, 17, 25, 27, 28, 29, 31, 35, 36, 41, 42, 44, 46, 47, 48, 50, 59, 64, 66, 68, 70, 71, 73, 74, 76, 77, 80, 85, 88], "8": [4, 8, 9, 10, 13, 14, 15, 17, 20, 23, 25, 27, 29, 31, 36, 44, 48, 50, 66, 67, 68, 69, 70, 71, 73, 74, 77, 79, 80, 83, 85], "wm": 4, "k": [4, 8, 15, 16, 17, 25, 40, 44, 51, 62, 73, 77, 78, 82, 85, 86, 88], "temperaturen": [4, 8, 17, 30, 36, 44, 62, 66, 71, 78, 82, 85], "overflaten": [4, 15, 18, 43], "tiln\u00e6rmet": 4, "70": [4, 10, 13, 14, 27, 29, 42, 62, 64, 67, 70, 80, 82], "vann": [4, 36, 69, 82], "dybd": [4, 14, 42, 80], "meter": [4, 46, 51, 59, 62, 88], "varmekapasiteten": 4, "beregn": [4, 14, 15, 16, 18, 42, 43, 44, 45, 46, 51, 59, 62, 65, 66, 69, 70, 71, 73, 74, 76, 80, 81], "c": [4, 5, 7, 12, 14, 15, 16, 17, 22, 30, 35, 36, 40, 41, 44, 47, 48, 50, 51, 62, 64, 65, 66, 69, 71, 74, 75, 78, 80, 84, 86], "08": [4, 23, 71], "jk": 4, "t_": [4, 8, 78, 82, 85], "formuler": [4, 12, 15, 16, 17, 25, 40, 74, 75, 78], "overflatetemperatur": 4, "hjelp": [4, 10, 18, 25, 35, 36, 39, 43, 44, 47, 50, 51, 59, 60, 62, 66, 67, 69, 71, 73, 79, 81], "rede": [4, 5, 43, 44, 59, 60, 64, 65, 67], "left": [4, 12, 16, 38, 40, 44, 46, 51, 62, 64, 70, 73, 75, 77, 78, 79, 88], "right": [4, 12, 16, 38, 40, 44, 46, 51, 62, 64, 70, 73, 75, 77, 78, 79], "differensiallikn": [4, 16, 17, 25, 40, 78], "ukjent": [4, 15, 16, 17, 35, 69, 74, 78], "from": [4, 10, 13, 14, 19, 22, 23, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36, 38, 39, 40, 42, 47, 48, 51, 52, 59, 62, 67, 70, 71, 73, 76, 77, 78, 80, 82, 83, 84, 85, 86, 88, 89], "pylab": [4, 5, 19, 22, 23, 25, 26, 28, 29, 30, 31, 32, 34, 35, 39, 40, 47, 65, 68, 70, 82, 85], "import": [4, 5, 8, 10, 13, 14, 19, 22, 23, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36, 38, 39, 40, 42, 47, 48, 51, 52, 59, 60, 62, 65, 66, 67, 68, 69, 70, 71, 73, 74, 76, 77, 78, 80, 81, 82, 83, 84, 85, 86, 88, 89], "t0": [4, 25, 44, 82], "240": [4, 10, 13], "67e": [4, 8, 85], "08e8": 4, "tidsparametr": [4, 25], "1000": [4, 10, 13, 14, 27, 29, 36, 44, 51, 62, 65, 68, 69, 71, 73, 74, 76, 78, 80, 84, 88], "dt": [4, 15, 16, 17, 25, 44, 51, 71, 78, 82, 88], "1e": [4, 23, 25, 35, 40, 59, 62, 65, 71, 74, 78, 82, 88], "3": [4, 5, 7, 10, 11, 13, 14, 19, 22, 23, 29, 30, 31, 32, 34, 37, 38, 41, 42, 46, 49, 64, 66, 68, 69, 77, 79, 80, 83, 84, 86, 87, 88], "int": [4, 40, 44, 47, 48, 51, 59, 62, 64, 77, 78, 81, 82, 88], "zero": [4, 5, 29, 40, 65, 78, 82], "rang": [4, 10, 23, 27, 28, 29, 31, 32, 34, 35, 38, 39, 46, 47, 51, 62, 64, 70, 71, 73, 78, 81, 82, 88], "tder": [4, 82], "plot": [4, 10, 13, 23, 25, 28, 30, 31, 32, 34, 35, 39, 40, 69, 71, 74, 76, 78, 81, 82, 84, 86, 88, 89], "show": [4, 10, 13, 14, 23, 25, 28, 29, 30, 31, 32, 34, 36, 39, 42, 47, 66, 68, 69, 71, 74, 76, 78, 80, 81, 84, 86], "100": [4, 10, 13, 14, 17, 25, 27, 28, 29, 36, 38, 44, 47, 48, 51, 62, 64, 65, 66, 70, 71, 74, 78, 80, 86, 88], "steg": [4, 15, 38, 50, 51], "konstant": [4, 8, 15, 17, 25, 44, 51, 62, 78, 85], "rjord": 4, "andel": [4, 13, 14, 39, 48, 67, 79, 80, 81], "reflektert": [4, 8, 85], "ratm": 4, "atmosf\u00e6ren": [4, 8, 44, 85], "tilbak": [4, 8, 44, 48, 67, 69, 70, 73, 85], "uatmtran": 4, "340": [4, 10, 13, 83], "utstr\u00e5lingstetthet": 4, "transmittert": 4, "gjennom": [4, 15, 16, 17, 36, 39, 44, 50, 52, 64, 65, 66, 69, 73, 74, 79], "ujordref": 4, "jordoverflaten": [4, 8, 44, 85], "ujordemit": 4, "pga": [4, 36], "uatmref": 4, "ujordab": 4, "startverdi": [4, 15, 18, 39, 43, 47, 51, 74, 78, 81], "ingen": [4, 8, 15, 16, 17, 34, 39, 47, 48, 51, 59, 62, 79, 81, 84, 85], "drivhuseffekt": 4, "starter": [4, 35, 36, 40, 48, 50, 51, 67, 78, 81], "drivhuseffekten": 4, "line\u00e6r": [4, 36, 45, 67, 68, 69, 73, 74, 76], "\u00f8kning": 4, "reflektivitet": 4, "40": [4, 10, 13, 27, 29, 48, 51, 66, 67, 69, 70, 83], "50": [4, 10, 13, 27, 29, 36, 38, 47, 51, 62, 68, 69, 70, 73, 83], "005": [4, 78, 88], "273": [4, 8, 10, 13, 85], "legend": [4, 10, 13, 18, 25, 29, 30, 32, 39, 43, 68, 69, 71, 78, 81, 84], "global": [4, 63], "utslipp": [4, 36, 44, 78, 79], "stopper": 4, "xlabel": [4, 13, 14, 29, 30, 34, 39, 42, 47, 66, 67, 68, 69, 71, 76, 78, 80, 81, 82, 84], "ylabel": [4, 13, 14, 29, 30, 34, 39, 42, 47, 66, 67, 68, 69, 71, 76, 78, 80, 81, 82, 84], "circ": [4, 17, 36, 51], "titl": [4, 13, 14, 34, 42, 47, 66, 68, 69, 71, 78, 80, 81, 82, 86, 88], "arbeidet": [5, 6, 7, 9, 11, 19, 20, 36, 48, 50, 51, 59, 60, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 78, 87], "temaet": [5, 6, 7, 9, 11, 20, 36, 48, 50, 51, 59, 60, 62, 63, 64, 65, 66, 67, 68, 69, 70, 73, 78, 87], "vektoroperasjon": [5, 65], "tupler": 5, "dictionari": [5, 7, 66], "organiser": [5, 64, 65], "kort": [5, 36, 39, 44, 65, 69, 81], "oversikt": [5, 13, 14, 18, 42, 43, 65, 68, 69, 77, 80], "viktigst": [5, 36, 37, 38, 46, 47, 48, 51, 59, 64, 65], "datasamlingen": [5, 65], "lister": [5, 18, 19, 25, 35, 39, 40, 43, 65, 78, 81], "fleksibl": [5, 65], "samling": [5, 50, 65], "av": [5, 6, 7, 10, 18, 25, 34, 35, 37, 38, 39, 40, 43, 45, 46, 47, 48, 49, 50, 51, 59, 60, 62, 63, 64, 65, 66, 76, 78, 79, 81, 82, 83, 84, 87], "like": [5, 8, 35, 44, 65, 71, 73, 78, 85, 89], "operer": [5, 15, 65, 71, 73, 78], "vektor": [5, 64, 65], "strenger": [5, 50, 59, 60, 65], "n\u00f8kler": [5, 65, 66], "sett": [5, 6, 7, 8, 9, 11, 15, 17, 18, 19, 20, 35, 36, 40, 41, 42, 43, 47, 50, 51, 59, 60, 62, 63, 64, 65, 66, 67, 69, 70, 71, 73, 74, 76, 78, 84, 85, 87], "andr": [5, 12, 15, 16, 17, 18, 35, 36, 39, 41, 43, 44, 46, 47, 48, 50, 51, 59, 64, 65, 66, 67, 68, 69, 70, 73, 74, 75, 77, 78, 79, 87], "datatypen": [5, 65], "begynn": [5, 15, 16, 17, 18, 36, 39, 43, 47, 48, 51, 65, 67, 68, 70, 74, 78, 81], "illustrer": [5, 36, 41, 44, 47, 48, 59, 62, 65, 66, 70, 71, 73, 74, 78], "m\u00e5": [5, 10, 15, 17, 18, 35, 36, 37, 38, 39, 40, 41, 43, 44, 46, 47, 48, 51, 59, 62, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 76, 78, 79, 81, 84, 85], "importer": [5, 36, 47, 59, 62, 65, 67, 68, 78, 81, 84], "numpi": [5, 10, 13, 14, 19, 35, 42, 48, 51, 59, 62, 65, 66, 67, 68, 69, 70, 71, 73, 74, 76, 77, 78, 80, 81, 84], "np": [5, 10, 13, 14, 19, 42, 44, 59, 62, 65, 66, 67, 68, 69, 70, 71, 73, 74, 76, 77, 78, 80, 81, 84], "liste1": [5, 29, 50, 65], "liste2": [5, 29, 65], "print": [5, 8, 10, 13, 14, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 34, 35, 38, 42, 46, 47, 48, 50, 51, 60, 62, 64, 65, 66, 69, 70, 71, 73, 74, 76, 78, 80, 81, 84, 85], "listesum": [5, 65], "array1": [5, 29, 65], "arrai": [5, 7, 10, 29, 41, 65, 66, 67, 69, 70, 74, 76, 77, 82, 83, 84, 88], "array2": [5, 29, 65], "arraysum": [5, 65], "koden": [5, 16, 36, 38, 41, 44, 48, 59, 64, 65, 73], "listeaddisjon": [5, 29, 65], "arrayaddisjon": [5, 29, 65], "adder": [5, 47, 51, 59, 64, 65], "legg": [5, 7, 8, 18, 19, 35, 36, 39, 40, 41, 42, 43, 44, 47, 48, 50, 51, 59, 62, 64, 65, 66, 67, 69, 71, 73, 74, 78, 79, 81, 84, 85], "lista": [5, 7, 35, 47, 50, 65, 66, 70, 71], "slutten": [5, 65], "f\u00e5r": [5, 8, 9, 11, 12, 15, 16, 17, 34, 35, 36, 37, 38, 39, 40, 41, 43, 44, 46, 47, 48, 50, 51, 59, 62, 64, 65, 66, 67, 69, 71, 73, 74, 75, 78, 79, 81, 84, 85], "komponentvi": [5, 65], "addisjon": [5, 47, 59, 60, 62, 64, 65], "elementen": [5, 7, 50, 65, 66], "samm": [5, 6, 8, 15, 16, 17, 18, 35, 36, 38, 39, 40, 41, 43, 44, 46, 47, 50, 51, 52, 59, 62, 64, 65, 66, 67, 69, 70, 71, 73, 74, 77, 78, 79, 81, 84, 85], "vektoraddisjon": [5, 65, 77], "m\u00e5tene": [5, 36, 65], "parametr": [5, 10, 40, 41, 62, 65, 67, 69, 74, 78, 81, 84], "oppsummer": [5, 36, 65, 69], "x1": [5, 48, 51, 62, 65], "x2": [5, 10, 48, 62, 65], "x3": [5, 65], "list": [5, 7, 10, 34, 35, 41, 47, 50, 51, 65, 66, 70, 71, 78], "arang": [5, 65, 70, 82], "steglengden": [5, 51, 65, 78], "linspac": [5, 10, 13, 23, 29, 30, 44, 47, 65, 68, 69, 71, 73, 74, 76, 78, 84], "element": [5, 7, 34, 35, 42, 47, 50, 65, 66, 67, 69, 70, 71, 74, 76, 78], "nuller": [5, 65], "ones": [5, 13, 65], "ener": [5, 65], "motsetn": [5, 62, 65, 69], "listeoperasjon": [5, 50, 65], "append": [5, 10, 14, 23, 25, 28, 29, 31, 32, 34, 35, 39, 47, 50, 65, 69, 70, 71, 78, 80, 81, 88], "remov": [5, 29, 39, 50, 65, 70, 88], "liknend": [5, 7, 47, 51, 52, 59, 65, 68, 78], "derimot": [5, 17, 36, 46, 62, 64, 65, 66, 68, 69, 71, 74, 78, 79, 81], "tilgang": [5, 36, 44, 59, 65, 66], "indeks": [5, 50, 51, 65, 78], "akkurat": [5, 18, 43, 44, 65, 66, 68, 78], "kj\u00f8r": [5, 34, 35, 38, 39, 50, 59, 65, 66, 67, 74], "tenkt": [5, 35, 65, 69], "fildata": [6, 66], "sammenheng": [6, 12, 13, 15, 17, 18, 35, 36, 39, 42, 43, 44, 51, 62, 66, 67, 69, 71, 75, 78, 79], "enkel": [6, 12, 15, 16, 17, 34, 36, 39, 40, 47, 48, 59, 60, 62, 66, 67, 69, 71, 75, 77, 78, 84, 87], "statistikk": [6, 37, 67], "videoen": [6, 7, 9, 11, 15, 19, 20, 46, 48, 50, 51, 60, 62, 63, 65, 66, 68, 69, 70, 73, 87], "datafil": [6, 13, 14, 18, 23, 30, 37, 43, 44, 71, 80, 83], "f\u00f8lgend": [6, 7, 9, 11, 12, 15, 16, 17, 19, 20, 34, 35, 36, 37, 41, 43, 44, 45, 47, 48, 50, 51, 59, 60, 62, 63, 65, 69, 70, 71, 73, 74, 75, 78, 79, 84, 87], "oppgav": [6, 7, 9, 11, 16, 19, 20, 34, 37, 60, 63, 87], "sjekk": [6, 7, 8, 9, 11, 13, 14, 19, 20, 35, 40, 41, 42, 44, 47, 48, 51, 60, 63, 64, 65, 66, 70, 74, 80, 85, 87], "forst\u00e5r": [6, 7, 9, 11, 19, 20, 36, 40, 44, 51, 60, 63, 64, 65, 66, 69, 76, 87], "innholdet": [6, 7, 9, 11, 19, 20, 44, 51, 60, 63, 64, 87], "temperaturm\u00e5ling": 6, "fildataen": [6, 44], "datapunkt": [6, 14, 20, 30, 66, 67, 68, 69, 80, 81, 82, 84], "koderuta": [6, 19, 59], "forrig": [6, 15, 16, 39, 41, 47, 51, 59, 71, 74, 78, 79, 81], "datapunkten": [6, 35, 66, 69, 71, 84], "regresjonskurven": [6, 69], "opprett": [7, 36, 42, 50, 60], "b\u00f8ker": 7, "tv": 7, "serier": 7, "fotballspiller": 7, "listen": [7, 35, 39, 47, 50, 70, 71, 81], "gjern": [7, 15, 16, 17, 34, 35, 36, 38, 39, 41, 44, 45, 47, 50, 51, 64, 66, 73, 78], "slett": [7, 42, 50, 66], "f\u00f8rste": [7, 13, 14, 18, 35, 39, 41, 42, 44, 45, 46, 47, 48, 50, 51, 59, 64, 65, 66, 67, 69, 70, 73, 74, 78, 79, 80], "tredj": [7, 44, 59, 65, 69, 74], "elementet": [7, 42, 50, 51, 65, 78], "sammensl\u00e5tt": 7, "indek": [7, 50, 51], "ett": [7, 34, 44, 51, 73, 74, 78], "ny": [7, 35, 39, 41, 42, 47, 48, 50, 51, 64, 66, 71, 74, 81], "indeksen": [7, 16, 39, 50, 65], "skriv": [7, 16, 17, 18, 34, 35, 36, 40, 41, 42, 43, 44, 47, 48, 49, 50, 51, 59, 60, 62, 64, 65, 67, 70, 71, 73, 74, 78], "vil": [7, 8, 10, 15, 16, 17, 18, 35, 36, 37, 38, 39, 40, 43, 44, 46, 47, 48, 50, 51, 59, 62, 64, 65, 66, 67, 69, 70, 71, 73, 74, 78, 79, 84, 85], "bli": [7, 8, 14, 15, 18, 35, 39, 42, 43, 44, 47, 50, 59, 64, 65, 67, 69, 71, 78, 79, 80, 81, 85], "skjer": [7, 8, 16, 17, 18, 34, 39, 41, 43, 47, 48, 50, 51, 62, 64, 65, 66, 67, 70, 73, 74, 78, 79, 85], "tilfellen": 7, "math": [8, 27], "boltzman": [8, 85], "temperatur_sol": [8, 85], "5778": [8, 85], "kelvin": [8, 62, 85], "diameter_sol": [8, 85], "1391016e3": [8, 85], "distanse_sol_jord": [8, 85], "149600000e3": [8, 85], "radius_jord": [8, 85], "6371e3": [8, 85], "formelen": [8, 15, 51, 60, 62, 73, 85], "kalkuler": [8, 85], "treffer": [8, 15, 25, 44, 70], "toppen": [8, 44, 69, 85], "s_0": [8, 15, 85], "larg": [8, 82, 85], "radius_": [8, 85], "sun": [8, 85], "distanse_": [8, 85], "jord": [8, 36, 44, 85], "space": [8, 85], "sol": [8, 44, 85], "str\u00e5ling_sol": [8, 85], "s0": [8, 25, 78, 85], "1365": [8, 10, 13, 85], "948361181013": [8, 85], "energiprinsippet": [8, 44, 85], "utrykk": [8, 85], "jorden": [8, 44, 85], "innstr\u00e5lingen": [8, 85], "solen": [8, 85], "m\u00e5let": [8, 35, 69, 85], "refleksjonen": [8, 85], "flate": [8, 78, 85], "kall": [8, 15, 16, 17, 36, 41, 47, 48, 51, 62, 64, 66, 67, 68, 69, 70, 71, 73, 74, 78, 84, 85], "refleksjonsfaktoren": [8, 85], "jordkloden": [8, 44, 85], "kalkul": [8, 48, 59, 85], "planeten": [8, 44], "flat": [8, 85], "sirkel": [8, 47, 49, 51, 59, 62, 70, 85], "sqrt": [8, 28, 30, 47, 59, 62, 64, 69, 70, 71, 73, 74, 77, 78, 85, 88], "k_": [8, 17, 44, 85], "pr\u00f8v": [8, 12, 15, 16, 17, 18, 19, 34, 35, 36, 38, 39, 40, 41, 43, 46, 47, 48, 50, 51, 59, 64, 65, 67, 69, 73, 74, 75, 79, 85], "15": [8, 10, 13, 14, 23, 25, 47, 64, 67, 68, 69, 70, 71, 74, 76, 78, 80, 83, 85, 86], "18": [8, 10, 13, 14, 27, 29, 35, 48, 51, 62, 66, 67, 69, 70, 71, 73, 80, 82, 83, 84, 85], "336567683297915": [8, 85], "gansk": [8, 36, 38, 39, 47, 48, 50, 51, 62, 66, 67, 68, 69, 70, 74, 78, 81, 85], "forenkling": [8, 34, 44, 79, 85], "antar": [8, 36, 44, 81, 85], "antagelsen": [8, 85], "sann": [8, 13, 14, 42, 47, 48, 67, 80, 85], "dv": [8, 36, 44, 85, 88], "stor": [8, 14, 15, 38, 39, 42, 44, 48, 51, 64, 67, 69, 71, 73, 74, 80, 81, 85], "blokk": [8, 36, 44, 85], "hele": [8, 19, 36, 39, 44, 47, 50, 59, 62, 69, 70, 71, 73, 78, 79, 85], "blokken": [8, 36, 44, 85], "gjennomsiktig": [8, 44, 85], "tar": [8, 11, 15, 16, 17, 18, 36, 39, 43, 44, 47, 48, 51, 59, 60, 62, 64, 65, 66, 67, 69, 70, 71, 73, 78, 79, 81, 84, 85], "imot": [8, 44, 85], "viser": [8, 15, 16, 17, 18, 35, 36, 39, 40, 42, 43, 44, 47, 51, 62, 65, 66, 68, 69, 71, 74, 81, 85], "situasjonen": [8, 85], "solinnst\u00e5rlingen": [8, 85], "utsr\u00e5lingen": [8, 85], "verdensrommet": [8, 85], "sender": [8, 36, 44, 85], "ledd": [8, 10, 16, 44, 47, 51, 73, 78, 85], "din": [8, 37, 44, 48, 59, 64, 68, 78, 79, 81, 85], "p\u00e5virker": [8, 44, 78, 85], "energi_": [8, 85], "fortsatt": [8, 39, 41, 44, 74, 81, 85], "gjelder": [8, 36, 47, 51, 62, 70, 79, 85], "gangen": [8, 14, 36, 59, 65, 67, 80, 85], "ligning": [8, 85], "nevnt": [8, 78, 85], "likningen": [8, 11, 15, 16, 17, 18, 40, 41, 43, 44, 48, 62, 74, 76, 78, 81, 85], "likn": [8, 11, 12, 15, 16, 17, 40, 74, 75, 77, 78, 79, 85], "piler": [8, 85], "deg": [8, 22, 34, 35, 36, 37, 38, 41, 42, 46, 47, 51, 59, 62, 66, 73, 85, 88], "selv": [8, 15, 16, 17, 35, 36, 44, 47, 48, 51, 59, 62, 64, 66, 67, 69, 70, 73, 76, 78, 79, 85], "forst\u00e5": [8, 25, 36, 38, 47, 50, 51, 64, 67, 70, 71, 76, 79, 85], "likningsystemet": [8, 85], "kommentar": [8, 15, 22, 44, 48, 51, 85], "h\u00f8yt": [8, 85], "jo": [8, 10, 15, 16, 17, 34, 36, 39, 44, 47, 65, 69, 70, 78, 85], "kalkulert": [8, 85], "truffet": [8, 85], "watt": [8, 85], "bare": [8, 15, 27, 35, 36, 37, 44, 47, 51, 64, 67, 68, 69, 71, 73, 78, 79, 84, 85], "h\u00f8yest": [8, 36, 59, 66, 69, 74, 85], "vertikalt": [8, 85], "rett": [8, 36, 37, 47, 50, 51, 59, 62, 65, 66, 67, 68, 71, 73, 74, 81, 85], "ned": [8, 34, 36, 40, 44, 66, 70, 85], "grunn": [8, 34, 44, 67, 76, 78, 85], "rotasjonen": [8, 85], "natt": [8, 85], "dagsyklus": [8, 85], "kule": [8, 15, 47, 49, 62, 78, 85], "gjennomsnittelig": [8, 85], "forenkl": [8, 15, 17, 25, 73, 85], "tenker": [8, 39, 85], "solli": [8, 44, 85], "tiden": [8, 39, 79, 81, 85], "nummeret": [8, 85], "n\u00e6rme": [8, 51, 74, 85], "observert": [8, 85], "metod": [9, 10, 13, 25, 35, 41, 44, 51, 59, 64, 66, 69, 71, 76, 81, 84], "tiln\u00e6rm": [9, 44, 68, 71, 73, 74, 78], "bestemt": [9, 16, 34, 39, 40, 51, 59, 62, 65, 66, 67, 68, 70, 71, 73, 77, 78, 81, 84], "integralet": [9, 23, 73, 78], "midtpunktstiln\u00e6rm": 9, "utled": [9, 15, 44, 51, 71, 73, 74, 78], "trapesmetoden": [9, 23], "implementer": [9, 11, 71, 73, 74, 76, 78], "integrer": [9, 15, 16, 17, 40, 43, 78], "implement": [9, 11, 16, 17, 71, 74], "algoritmen": [9, 12, 41, 44, 67, 73, 74, 75, 76, 78], "test": [9, 11, 12, 36, 39, 41, 44, 48, 50, 51, 59, 62, 64, 65, 66, 70, 71, 73, 74, 75, 78, 79, 83, 89], "metoden": [9, 11, 12, 22, 41, 42, 44, 59, 64, 66, 70, 71, 73, 75, 78], "int_2": [9, 73], "2x": [9, 40, 47, 62, 68, 71, 73, 74, 78], "dx": [9, 15, 16, 17, 23, 40, 71, 73, 74, 77, 78, 88], "tiln\u00e6rmnger": 9, "feilanalys": [9, 73], "sammenlikn": [9, 18, 35, 39, 41, 42, 43, 51, 67, 69, 71, 73, 74, 78, 79, 81, 84], "svaren": [9, 73], "likhetstrekk": 10, "hjernen": [10, 36, 66, 78], "bygger": [10, 73, 79], "noder": 10, "sammmenkobling": 10, "noden": 10, "ulikt": 10, "nervecel": 10, "kobling": 10, "trener": [10, 13, 14, 42, 62, 67, 80], "nettverket": 10, "koblingen": 10, "vekta": 10, "forutsigels": [10, 67, 83], "sm\u00e5": [10, 15, 16, 18, 36, 51, 59, 64, 69, 70, 71, 78], "bestemm": [10, 15, 16, 17, 35, 44, 48, 51, 67, 70, 78, 79, 81], "sterk": [10, 35], "kobl": [10, 36], "m\u00e5ler": [10, 36], "loss": [10, 13], "y": [10, 13, 15, 16, 17, 23, 29, 30, 31, 34, 36, 40, 41, 44, 62, 64, 66, 68, 69, 70, 71, 73, 74, 76, 77, 78, 84, 88], "\u0177": 10, "matplotlib": [10, 13, 14, 19, 42, 47, 66, 67, 68, 69, 71, 74, 76, 78, 80, 81, 84], "pyplot": [10, 13, 14, 19, 42, 66, 67, 68, 69, 71, 74, 76, 78, 80, 81, 84], "plt": [10, 13, 14, 19, 42, 44, 66, 67, 68, 69, 71, 74, 76, 78, 80, 81, 84], "tensorflow": [10, 13, 67], "tf": [10, 13], "kera": [10, 13, 67], "sequenti": [10, 13], "layer": [10, 13], "activ": [10, 13], "dens": [10, 13], "optim": [10, 13, 36, 74, 76, 84], "adam": [10, 13], "metric": [10, 13, 14, 42, 67, 80, 83, 84], "categorical_crossentropi": 10, "meansquarederror": 10, "sklearn": [10, 13, 14, 42, 67, 80, 83, 84], "util": 10, "shuffl": 10, "preprocess": [10, 13], "minmaxscal": 10, "random": [10, 13, 36, 70, 88, 89], "uniform": [10, 13, 31, 70], "scatter": [10, 35, 66, 69, 71, 84, 89], "collect": 10, "pathcollect": 10, "0x214911285e0": 10, "konstruer": [10, 13, 14, 42, 64, 66, 69, 70, 80], "kun": [10, 12, 15, 35, 36, 39, 44, 47, 48, 51, 59, 62, 65, 66, 68, 69, 71, 73, 74, 75, 78, 79, 81], "\u00e9n": [10, 36, 44, 47, 59, 62, 65, 66, 67, 68, 69, 70, 71], "node": 10, "output": [10, 13, 14, 22, 36, 38, 47, 48, 50, 51, 59, 62, 65, 66, 78, 80], "optimaliser": 10, "vektingen": 10, "n\u00e6rmer": [10, 48, 51, 78], "vekter": 10, "dessuten": [10, 62], "s\u00e5kalt": [10, 13, 14, 42, 44, 51, 69, 70, 74, 80], "bia": 10, "representert": [10, 47, 59, 71, 74, 78], "skj\u00e6ringspunktet": 10, "trent": [10, 14, 80], "godt": [10, 16, 18, 36, 43, 45, 51, 66, 67, 68, 69, 70, 71, 73, 74, 78, 79, 81, 84], "nok": [10, 15, 36, 48, 64, 71, 73, 74, 78], "add": [10, 13, 64, 88], "unit": [10, 13, 36], "linear": [10, 13], "input_shap": [10, 13], "l\u00e6ringsrat": [10, 13], "fort": [10, 13, 14, 15, 17, 42, 44, 47, 70, 80, 81], "l\u00e6re": [10, 13, 36, 67], "compil": [10, 13], "mse": [10, 13], "summari": [10, 13, 89], "sequential_6": 10, "_________________________________________________________________": [10, 13], "type": [10, 13, 64], "shape": [10, 13, 38, 51, 64], "param": [10, 13], "dense_14": 10, "none": [10, 13, 14, 42, 62, 69, 71, 80], "total": [10, 13, 17, 73, 83], "trainabl": [10, 13], "non": [10, 13, 83], "trene": [10, 13, 14, 42, 67, 80], "fit": [10, 13, 14, 67, 80, 83, 89], "epoch": [10, 13], "500": [10, 13, 30, 44, 78, 83, 88], "0s": [10, 13], "1m": 10, "step": [10, 13], "104": [10, 13], "5022": 10, "79": [10, 13, 70], "3526": 10, "668u": 10, "52": [10, 13, 27, 29, 51, 70], "2603": 10, "667u": 10, "36": [10, 13, 27, 29, 62, 66, 67, 70, 83], "4380": 10, "735u": 10, "8862": 10, "6": [10, 13, 15, 23, 27, 29, 31, 35, 36, 44, 50, 59, 64, 66, 68, 69, 70, 74, 76, 77, 79, 83, 84, 86], "16": [10, 13, 23, 27, 29, 34, 44, 62, 64, 69, 70, 71, 78, 83], "3748": 10, "7": [10, 13, 14, 23, 26, 29, 30, 46, 50, 59, 66, 67, 68, 70, 76, 79, 80, 83, 84, 88], "11": [10, 13, 15, 23, 70, 71, 73, 81, 84], "6355": 10, "3783": 10, "9": [10, 13, 15, 22, 23, 25, 29, 36, 44, 47, 50, 66, 68, 69, 70, 83, 84], "6017": 10, "0945": 10, "666u": 10, "6653": 10, "12": [10, 13, 23, 27, 29, 30, 44, 47, 66, 68, 69, 70, 71, 73, 77, 82], "0193": 10, "13": [10, 13, 14, 23, 35, 47, 64, 68, 69, 70, 71, 80, 81, 82, 83], "9182": 10, "14": [10, 13, 22, 23, 27, 29, 46, 47, 59, 68, 69, 70, 71, 76, 83], "999u": 10, "7258": 10, "0563": 10, "8218": 10, "17": [10, 13, 22, 23, 44, 47, 48, 66, 67, 69, 70, 71, 81, 83, 85], "9393": 10, "5781": 10, "7110": 10, "20": [10, 13, 14, 25, 27, 29, 38, 42, 46, 47, 48, 51, 59, 62, 64, 67, 68, 69, 70, 74, 78, 80, 83, 84], "3472": 10, "21": [10, 13, 44, 51, 69, 70, 83], "0878": 10, "22": [10, 13, 14, 27, 29, 30, 35, 69, 70, 80], "7475": 10, "23": [10, 13, 35, 70, 88], "6393": 10, "24": [10, 13, 15, 27, 29, 35, 47, 51, 59, 69, 70, 77], "0899": 10, "6990": 10, "26": [10, 13, 14, 27, 29, 69, 70, 80], "7094": 10, "27": [10, 13, 51, 70, 81], "3770": 10, "28": [10, 13, 27, 29, 30, 35, 70], "7485": 10, "29": [10, 13, 51, 67, 69, 70], "7665": 10, "30": [10, 13, 27, 29, 38, 47, 51, 64, 70, 78, 82, 85], "0084": 10, "31": [10, 13, 48, 51, 70], "2260": 10, "5187": 10, "33": [10, 13, 44, 69, 70, 86], "2410": 10, "34": [10, 13, 27, 29, 51, 62, 69, 70], "2735": 10, "35": [10, 13, 14, 67, 70, 78, 80], "7580": 10, "2827": 10, "37": [10, 13, 66, 70, 78], "9241": 10, "38": [10, 13, 14, 27, 29, 64, 70, 80], "7716": 10, "39": [10, 13, 66, 67, 69, 70, 83], "1952": 10, "3731": 10, "41": [10, 13, 69, 70], "6364": 10, "42": [10, 13, 14, 27, 29, 36, 47, 51, 59, 64, 66, 67, 69, 70, 71, 76, 80, 83], "7535": 10, "43": [10, 13, 27, 69, 70, 83], "0885": 10, "44": [10, 13, 27, 29, 69, 70, 76, 83], "1000u": 10, "2980": 10, "45": [10, 13, 51, 66, 69, 70, 83], "4089": 10, "46": [10, 13, 27, 29, 64, 70, 83], "6896": 10, "47": [10, 13, 51, 70, 83], "4258": 10, "48": [10, 13, 18, 27, 29, 32, 39, 43, 51, 69, 70, 81, 83], "836u": 10, "8536": 10, "49": [10, 13, 14, 70, 80, 83], "3694": 10, "8820": 10, "51": [10, 13, 29, 66, 69, 70], "4000": 10, "6289": 10, "53": [10, 13, 14, 51, 70, 80], "2009": [10, 12, 13, 75], "54": [10, 13, 27, 29, 64, 70], "0848": 10, "55": [10, 13, 51, 70, 82], "4050": [10, 69, 83], "56": [10, 13, 27, 29, 69, 70, 82], "4296": 10, "57": [10, 13, 70, 82, 83, 85], "2095": 10, "58": [10, 13, 27, 29, 69, 70, 82], "6532": 10, "59": [10, 13, 30, 66, 69, 70, 82, 83], "6900": 10, "60": [10, 13, 16, 27, 29, 38, 48, 51, 62, 70, 71, 82, 83, 86], "8647": 10, "61": [10, 13, 69, 70, 77, 82, 83], "2359": 10, "62": [10, 13, 27, 29, 48, 64, 70, 82], "9651": 10, "63": [10, 13, 51, 62, 70, 82], "1816": 10, "64": [10, 13, 27, 29, 66, 70, 82, 83], "4695": 10, "65": [10, 13, 51, 70, 73, 82], "3247": 10, "66": [10, 13, 27, 29, 70, 82], "3399": 10, "9075": 10, "68": [10, 13, 14, 27, 29, 69, 70, 73, 80, 82], "0523": 10, "69": [10, 13, 70, 82], "7443": 10, "5074": 10, "71": [10, 13, 14, 30, 70, 80, 82], "333u": 10, "9035": 10, "72": [10, 13, 27, 29, 66, 70], "6616": 10, "73": [10, 13, 14, 70, 80, 82], "3667": 10, "74": [10, 13, 27, 29, 70], "1893": 10, "75": [10, 13, 38, 51, 69, 70, 82, 83], "0241": [10, 13], "76": [10, 13, 14, 27, 29, 70, 80, 83], "2657": 10, "77": [10, 13, 14, 70, 80], "504u": 10, "9703": 10, "78": [10, 13, 27, 29, 30, 70], "1511": 10, "2947": 10, "80": [10, 13, 14, 27, 29, 42, 48, 66, 67, 70, 78, 80, 86], "8908": 10, "81": [10, 13, 30, 36, 70, 78], "4879": 10, "82": [10, 13, 27, 29, 70], "3816": 10, "83": [10, 13, 70], "1428": 10, "84": [10, 13, 17, 27, 29, 70], "0366": 10, "85": [10, 13, 69, 70], "6593": 10, "86": [10, 13, 27, 29, 70], "87": [10, 13, 14, 70, 80], "1955": 10, "88": [10, 13, 27, 29, 70], "0510": 10, "89": [10, 13, 30, 70], "0353": 10, "90": [10, 13, 27, 29, 36, 38, 51, 64, 66, 70], "9147": 10, "91": [10, 13, 70], "4268": 10, "92": [10, 13, 27, 29, 70], "9632": 10, "93": [10, 13, 70], "6078": 10, "94": [10, 13, 27, 29, 50, 65, 67, 70], "3538": 10, "95": [10, 13, 48, 70, 73], "0946": [10, 13], "96": [10, 13, 27, 29, 70], "5300": 10, "97": [10, 13, 70], "4098": 10, "98": [10, 13, 27, 29, 70], "2656": 10, "99": [10, 13, 49, 51, 70], "5125": 10, "8603": 10, "101": [10, 13, 29, 65], "5451": 10, "102": [10, 13, 27, 50], "8527": 10, "103": [10, 13], "1321": 10, "2086": 10, "105": [10, 13], "3373": 10, "106": [10, 13], "107": [10, 13], "3393": 10, "108": [10, 13], "2506": 10, "109": [10, 13], "8073": 10, "110": [10, 13], "6708": 10, "111": [10, 13], "7170": 10, "112": [10, 13, 30], "4463": 10, "113": [10, 13], "2755": 10, "114": [10, 13], "0646": 10, "115": [10, 13], "2571": 10, "116": [10, 13], "9042": 10, "117": [10, 13], "6911": 10, "118": [10, 13], "7391": 10, "119": [10, 13, 35], "1689": 10, "120": [10, 13, 36, 38, 51, 78], "1252": 10, "121": [10, 13], "3536": 10, "122": [10, 13, 25], "3956": 10, "123": [10, 13], "2423": 10, "124": [10, 13], "7996": 10, "125": [10, 13], "3041": 10, "126": [10, 13], "2362": 10, "127": [10, 13], "4628": 10, "128": [10, 13], "1193": [10, 13], "129": [10, 13], "1979": 10, "130": [10, 13], "2008": 10, "131": [10, 13], "0247": [10, 13], "132": [10, 13], "4149": 10, "133": [10, 13], "8535": 10, "134": [10, 13], "7975": 10, "135": [10, 13], "3579": 10, "136": [10, 13], "1427": 10, "137": [10, 13], "0528": 10, "138": [10, 13], "3559": 10, "139": [10, 13], "0381": 10, "140": [10, 13, 36], "8673": 10, "141": [10, 13], "8377": 10, "142": [10, 13, 35], "1329": 10, "143": [10, 13], "3940": 10, "144": [10, 13], "7086": 10, "145": [10, 13], "2993": 10, "146": [10, 13], "6084": 10, "147": [10, 13], "5040": 10, "148": [10, 13], "2651": 10, "149": [10, 13], "1635": 10, "150": [10, 13], "3438": 10, "151": [10, 13, 73], "9917": 10, "152": [10, 13], "7307": 10, "153": [10, 13], "665u": 10, "3330": 10, "154": [10, 13], "5460": 10, "155": [10, 13], "1381": 10, "156": [10, 13], "6721": 10, "157": [10, 13, 18, 43, 81], "9872": 10, "158": [10, 13], "3384": 10, "159": [10, 13], "0205": 10, "160": [10, 13], "4402": 10, "161": [10, 13], "3511": 10, "162": [10, 13], "4172": 10, "163": [10, 13], "8060": 10, "164": [10, 13], "2794": 10, "165": [10, 13], "6608": 10, "166": [10, 13], "167": [10, 13], "1878": 10, "168": [10, 13], "8876": 10, "169": [10, 11, 13, 74], "1236": 10, "170": [10, 13], "4092": 10, "171": [10, 13], "835u": 10, "2659": 10, "172": [10, 13, 69, 83], "6527": 10, "173": [10, 13], "5737": 10, "174": [10, 13], "1902": 10, "175": [10, 13], "1969": 10, "176": [10, 13], "2581": 10, "177": [10, 13, 14, 42, 80], "5900": 10, "178": [10, 13], "0874": 10, "179": [10, 13], "9015": 10, "180": [10, 13, 38, 51, 78], "8330": 10, "181": [10, 13, 66, 67, 83], "4136": 10, "182": [10, 13], "6446": 10, "183": [10, 13], "1311": 10, "184": [10, 13], "5477": 10, "185": [10, 13], "5786": 10, "186": [10, 13, 66, 67, 83], "3315": 10, "187": [10, 13], "8927": 10, "188": [10, 13], "7673": 10, "189": [10, 13], "0693": 10, "190": [10, 13, 69, 83], "1701": 10, "191": [10, 13], "3226": 10, "192": [10, 13], "9968": 10, "193": [10, 13, 66, 67, 83], "538u": 10, "4736": 10, "194": [10, 13], "195": [10, 13, 66, 67, 83], "6556": 10, "196": [10, 13], "7687": 10, "197": [10, 13, 69, 83], "2050": 10, "198": [10, 13], "7555": 10, "199": [10, 13], "9373": 10, "200": [10, 13, 64, 69, 70, 83, 88], "3990": 10, "201": [10, 13], "6712": 10, "202": [10, 13], "6615": 10, "203": [10, 13], "6208": 10, "204": [10, 13], "7797": 10, "205": [10, 13], "9401": 10, "206": [10, 13], "9828": 10, "207": [10, 13], "4071": 10, "208": [10, 13], "6976": 10, "209": [10, 13], "2943": 10, "210": [10, 13], "9447": 10, "211": [10, 13], "3899": 10, "212": [10, 13, 83], "5703": 10, "213": [10, 13, 69, 83], "8175": 10, "214": [10, 13], "1317": 10, "215": [10, 13, 83], "5044": 10, "216": [10, 13], "0336": [10, 13], "217": [10, 13], "218": [10, 13], "1495": 10, "219": [10, 13], "2590": 10, "220": [10, 13, 62], "6814": 10, "221": [10, 13], "842u": 10, "5372": 10, "222": [10, 13, 83], "9391": 10, "223": [10, 13], "6917": 10, "224": [10, 13], "4509": 10, "225": [10, 13], "3897": 10, "226": [10, 13], "7148": 10, "227": [10, 13], "2116": 10, "228": [10, 13], "1116": [10, 13], "229": [10, 13], "6707": 10, "230": [10, 13], "9270": 10, "231": [10, 13, 69, 83], "3362": 10, "232": [10, 13], "0358": 10, "233": [10, 13], "3633": 10, "234": [10, 13], "3426": [10, 86], "235": [10, 13], "4330": 10, "236": [10, 13], "0730": 10, "237": [10, 13], "682u": 10, "2105": 10, "238": [10, 13], "2740": 10, "239": [10, 13, 51], "0922": [10, 13], "8022": 10, "241": [10, 13], "2089": 10, "242": [10, 13, 44], "3044": 10, "243": [10, 13], "7719": 10, "244": [10, 13], "1841": 10, "245": [10, 13], "7905": 10, "246": [10, 13], "9534": 10, "247": [10, 13], "1683": 10, "248": [10, 13], "1161": [10, 13], "249": [10, 13], "5967": 10, "250": [10, 13], "7169": 10, "251": [10, 13], "0785": 10, "252": [10, 13], "8388": 10, "253": [10, 13], "0159": 10, "254": [10, 13], "5789": 10, "255": [10, 13, 36, 65], "1510": 10, "256": [10, 13], "9927": 10, "257": [10, 13], "0018": 10, "258": [10, 13], "6359": 10, "259": [10, 13], "6787": 10, "260": [10, 13], "1452": 10, "261": [10, 13], "6602": 10, "262": [10, 13], "9941": 10, "263": [10, 13], "3499": 10, "264": [10, 13], "6447": 10, "265": [10, 13], "3477": 10, "266": [10, 13], "9720": 10, "267": [10, 13], "1876": 10, "268": [10, 13], "6013": 10, "269": [10, 13], "8680": 10, "270": [10, 13, 69], "6760": 10, "271": [10, 13], "2076": 10, "272": [10, 13], "6241": 10, "6719": 10, "274": [10, 13], "5206": 10, "275": [10, 13], "1704": 10, "276": [10, 13], "8824": 10, "277": [10, 13, 77], "1261": [10, 13], "278": [10, 13], "4138": 10, "279": [10, 13], "9680": 10, "280": [10, 13, 86], "1994": 10, "281": [10, 13], "5526": 10, "282": [10, 13], "6670": 10, "283": [10, 13], "6339": 10, "284": [10, 13], "0422": 10, "285": [10, 13], "2535": 10, "286": [10, 13], "3132": 10, "287": [10, 13], "6515": 10, "288": [10, 13], "9505": 10, "289": [10, 13], "5853": 10, "290": [10, 13], "1780": 10, "291": [10, 11, 13, 74], "5912": 10, "292": [10, 13], "2014": [10, 36], "293": [10, 13], "2354": 10, "294": [10, 13], "2129": 10, "295": [10, 13], "5523": 10, "296": [10, 13], "6535": 10, "297": [10, 13], "298": [10, 13], "6559": 10, "299": [10, 13], "6693": 10, "6266": 10, "301": [10, 13], "0278": [10, 13], "302": [10, 13], "0526": 10, "303": [10, 13], "7330": 10, "304": [10, 13], "7237": 10, "305": [10, 13], "3075": 10, "306": [10, 13], "1864": 10, "307": [10, 13], "6247": 10, "308": [10, 13], "6476": 10, "309": [10, 13], "1792": 10, "310": [10, 13], "7100": 10, "311": [10, 13], "312": [10, 13], "6113": 10, "313": [10, 13], "6128": 10, "314": [10, 13], "5203": 10, "315": [10, 13], "3461": 10, "316": [10, 13], "8989": 10, "317": [10, 13], "2800": 10, "318": [10, 13], "2408": 10, "319": [10, 13], "4082": 10, "320": [10, 13], "542u": 10, "6505": 10, "321": [10, 13], "7571": 10, "322": [10, 13], "4019": 10, "323": [10, 13], "5676": 10, "324": [10, 13], "8891": 10, "325": [10, 13], "8347": 10, "326": [10, 13], "1785": 10, "327": [10, 13], "4076": 10, "328": [10, 13], "4786": 10, "329": [10, 13], "3709": 10, "330": [10, 13], "9279": 10, "331": [10, 13], "8934": 10, "332": [10, 13], "1781": 10, "333": [10, 13, 67, 83], "1264": [10, 13], "334": [10, 13], "7103": 10, "335": [10, 13], "0712": 10, "336": [10, 13, 44], "4242": 10, "337": [10, 13], "9300": 10, "338": [10, 13], "5644": 10, "339": [10, 13, 83], "1366": 10, "1938": 10, "341": [10, 13, 83], "8461": 10, "342": [10, 13, 69, 83], "8216": 10, "343": [10, 13, 83], "905u": 10, "7158": 10, "344": [10, 13, 83], "4632": 10, "345": [10, 13], "0191": 10, "346": [10, 13], "2322": 10, "347": [10, 13], "2614": 10, "348": [10, 13], "4608": 10, "349": [10, 13], "2154": 10, "350": [10, 13], "6942": 10, "351": [10, 13], "3367": 10, "352": [10, 13], "1417": 10, "353": [10, 13], "9923": 10, "354": [10, 13], "8374": 10, "355": [10, 13], "4152": 10, "356": [10, 13], "4335": 10, "357": [10, 13], "5777": 10, "358": [10, 13], "0608": 10, "359": [10, 13], "3695": 10, "360": [10, 13, 36, 38, 51], "5353": 10, "361": [10, 13], "5380": 10, "362": [10, 13], "6215": 10, "363": [10, 13], "7682": 10, "364": [10, 13], "3808": 10, "365": [10, 13], "1108": [10, 13], "366": [10, 13], "9333": 10, "367": [10, 13], "6897": 10, "368": [10, 13], "3721": 10, "369": [10, 13], "2476": 10, "370": [10, 13], "0441": [10, 13], "371": [10, 13], "334u": 10, "1192": [10, 13], "372": [10, 13], "5571": 10, "373": [10, 13], "9710": 10, "374": [10, 13], "0739": 10, "375": [10, 13], "8368": 10, "376": [10, 13], "0027": 10, "377": [10, 13], "9667": 10, "378": [10, 13], "7522": 10, "379": [10, 13], "9576": 10, "380": [10, 13, 48], "3964": 10, "381": [10, 13], "8484": 10, "382": [10, 13], "5905": 10, "383": [10, 13], "6930": 10, "384": [10, 13], "1679": 10, "385": [10, 13], "1627": 10, "386": [10, 13], "1621": 10, "387": [10, 13], "5946": 10, "388": [10, 13], "0057": 10, "389": [10, 13], "7226": 10, "390": [10, 13], "4074": 10, "391": [10, 13], "890u": 10, "8335": 10, "392": [10, 13], "0382": 10, "393": [10, 13], "2643": 10, "394": [10, 13], "4085": 10, "395": [10, 13], "9754": 10, "396": [10, 13], "3881": 10, "397": [10, 13], "398": [10, 13], "9456": 10, "399": [10, 13], "3904": 10, "400": [10, 13, 17, 44, 85], "1277": 10, "401": [10, 13], "402": [10, 13], "8879": 10, "403": [10, 13], "7303": 10, "404": [10, 13], "9645": 10, "405": [10, 13], "3607": 10, "406": [10, 13], "2445": 10, "407": [10, 13], "1188": [10, 13], "408": [10, 13], "941u": 10, "1795": 10, "409": [10, 13], "670u": 10, "0516": 10, "410": [10, 13], "4908": 10, "411": [10, 13], "4812": 10, "412": [10, 13], "0266": [10, 13], "413": [10, 13], "9246": 10, "414": [10, 13], "3644": 10, "415": [10, 13], "8790": 10, "416": [10, 13], "8834": 10, "417": [10, 13], "0434": 10, "418": [10, 13], "2627": 10, "419": [10, 13, 51], "7188": 10, "420": [10, 13, 48], "3775": 10, "421": [10, 13], "8194": 10, "422": [10, 13], "7755": 10, "423": [10, 13], "1705": 10, "424": [10, 13], "5942": 10, "425": [10, 13], "1822": 10, "426": [10, 13], "4478": 10, "427": [10, 13], "8675": 10, "428": [10, 13], "429": [10, 13], "2153": 10, "430": [10, 13], "4765": 10, "431": [10, 13], "5128": 10, "432": [10, 13], "7335": 10, "433": [10, 13], "1310": 10, "434": [10, 13, 51], "7234": 10, "435": [10, 13], "3236": 10, "436": [10, 13], "5831": 10, "437": [10, 13], "9517": 10, "438": [10, 13], "8277": 10, "439": [10, 13], "4419": 10, "440": [10, 13], "623u": 10, "0000": 10, "441": [10, 13], "5806": 10, "442": [10, 13], "5189": 10, "443": [10, 13], "4960": 10, "444": [10, 13], "3317": 10, "445": [10, 13], "1919": 10, "446": [10, 13], "9134": 10, "447": [10, 13], "5083": 10, "448": [10, 13], "5867": 10, "449": [10, 13, 51], "3347": 10, "450": [10, 13, 17, 51], "451": [10, 13], "3441": 10, "452": [10, 13], "453": [10, 13], "669u": 10, "3146": 10, "454": [10, 13], "1349": 10, "455": [10, 13], "6561": 10, "456": [10, 13], "2345": 10, "457": [10, 13], "8308": 10, "458": [10, 13], "8209": 10, "459": [10, 13], "2270": 10, "460": [10, 13], "2420": 10, "461": [10, 13], "4079": 10, "462": [10, 13], "7370": 10, "463": [10, 13], "9639": 10, "464": [10, 13], "0593": 10, "465": [10, 13], "6813": 10, "466": [10, 13], "6410": 10, "467": [10, 13], "3035": 10, "468": [10, 13], "2090": 10, "469": [10, 13], "9865": 10, "470": [10, 13], "5048": 10, "471": [10, 13], "9974": 10, "472": [10, 13], "5399": 10, "473": [10, 13], "4421": 10, "474": [10, 13], "8596": 10, "475": [10, 13], "9635": 10, "476": [10, 13], "0556": 10, "477": [10, 13], "4410": 10, "478": [10, 13], "9163": 10, "479": [10, 13], "1246": 10, "480": [10, 13], "4800": 10, "481": [10, 13], "6292": 10, "482": [10, 13], "3057": 10, "483": [10, 13], "5658": 10, "484": [10, 13], "3870": 10, "485": [10, 13], "6988": 10, "486": [10, 13], "9037": 10, "487": [10, 13], "1514": 10, "488": [10, 13], "9452": 10, "489": [10, 13], "4299": 10, "490": [10, 13, 48, 51], "4384": 10, "491": [10, 13], "6794": 10, "492": [10, 13], "2355": 10, "493": [10, 13], "1727": 10, "494": [10, 13], "5242": 10, "495": [10, 13], "8116": 10, "496": [10, 13], "5175": 10, "497": [10, 13], "2700": [10, 69, 83], "498": [10, 13], "4798": 10, "499": [10, 13, 49], "6631": 10, "3500": [10, 66], "callback": [10, 13], "histori": [10, 13], "0x214914860d0": 10, "x_fit": [10, 13], "y_fit": [10, 13], "predict": [10, 13, 14, 67, 80, 83, 88], "linestyl": [10, 13, 29, 30, 68, 69], "marker": [10, 13, 29, 30, 34, 50, 66, 68, 69, 74], "o": [10, 13, 29, 44, 66, 68, 69, 74, 77, 78], "label": [10, 13, 14, 18, 25, 29, 30, 32, 39, 42, 43, 67, 68, 69, 71, 78, 80, 81, 82, 84, 86, 88], "regresjonskurv": [10, 13, 69], "y1_test": 10, "y2_test": 10, "7689884": 10, "4485865": 10, "y2": [10, 68, 74], "modell2": 10, "sigmoid": 10, "9846": 10, "5271": 10, "7517": 10, "2033": 10, "6857": 10, "6938": 10, "6629": 10, "7197": 10, "5639": 10, "5748": 10, "2756": 10, "7078": 10, "3206": 10, "6448": 10, "2610": 10, "7902": 10, "1220": 10, "6011": 10, "5875": 10, "7185": 10, "6540": 10, "1982": 10, "6207": 10, "6939": 10, "5297": 10, "6517": 10, "6654": 10, "8270": 10, "6176": 10, "5774": 10, "5118": 10, "5701": 10, "5101": 10, "3255": 10, "7049": 10, "2334": 10, "6688": 10, "3064": 10, "7016": 10, "4231": 10, "6300": [10, 69, 83], "7874": 10, "6969": 10, "0907": 10, "5613": 10, "6901": 10, "6220": 10, "6424": 10, "6212": 10, "6048": 10, "0418": 10, "5611": 10, "1164": 10, "5294": 10, "2371": 10, "5935": 10, "7186": 10, "6021": 10, "2754": 10, "5600": 10, "7885": 10, "6116": 10, "8136": 10, "4804": 10, "6906": 10, "6137": 10, "8878": 10, "5550": 10, "7077": 10, "7137": 10, "6258": 10, "1508": 10, "6230": 10, "0475": 10, "5714": 10, "1845": [10, 16], "4792": 10, "8920": 10, "6203": 10, "8469": 10, "5260": 10, "1548": 10, "5168": 10, "5146": 10, "4653": 10, "0514": 10, "5182": 10, "0346": [10, 13], "5293": 10, "0491": 10, "5078": 10, "3902": 10, "5425": 10, "0494": 10, "5825": 10, "4983": 10, "5356": 10, "5597": 10, "9477": 10, "4876": 10, "0231": [10, 13], "4425": 10, "4959": 10, "7402": 10, "5204": 10, "2624": 10, "5869": 10, "7483": 10, "690u": 10, "4854": 10, "8150": 10, "5501": 10, "9410": 10, "3997": 10, "4215": 10, "2882": 10, "4234": 10, "0723": 10, "4874": 10, "5979": 10, "4574": 10, "2138": 10, "3728": 10, "1270": 10, "4291": 10, "4191": 10, "944u": 10, "5475": 10, "3085": 10, "4220": 10, "9550": 10, "4462": 10, "9824": 10, "4472": 10, "4046": 10, "4947": 10, "1946": 10, "4137": 10, "2216": 10, "3308": 10, "5031": 10, "4353": 10, "0312": [10, 13], "3650": 10, "9376": 10, "3371": 10, "5264": 10, "3755": 10, "0196": 10, "3597": 10, "5115": 10, "7780": 10, "4358": 10, "9461": 10, "3288": 10, "3660": 10, "9661": 10, "3157": 10, "3340": 10, "4127": 10, "6904": 10, "3996": 10, "1034": 10, "3345": 10, "9519": 10, "3312": 10, "3092": 10, "3337": 10, "1958": 10, "3746": 10, "5674": 10, "3150": 10, "5879": 10, "3676": 10, "2338": 10, "8263": 10, "3658": 10, "1639": 10, "2630": 10, "9319": 10, "4072": 10, "3005": 10, "3710": 10, "7404": 10, "877u": 10, "4227": 10, "0063": 10, "3234": 10, "0952": 10, "4118": 10, "6172": 10, "3848": 10, "7425": 10, "2847": 10, "9733": 10, "4392": 10, "7742": 10, "3297": 10, "6202": 10, "3152": 10, "0852": 10, "3187": 10, "5098": 10, "3343": 10, "2998": 10, "2826": 10, "1402": 10, "3323": 10, "9419": 10, "3869": 10, "0579": 10, "8149": 10, "3481": 10, "9407": 10, "2775": 10, "3702": 10, "3950": 10, "5678": 10, "3758": 10, "2865": 10, "6083": 10, "700u": 10, "3228": 10, "4140": 10, "3314": 10, "2374": 10, "3163": 10, "4877": 10, "3328": 10, "7347": 10, "2806": 10, "6611": 10, "3507": 10, "0183": 10, "3537": 10, "7211": 10, "2512": 10, "9548": 10, "2597": 10, "8499": 10, "0331": 10, "3612": 10, "3022": 10, "3524": 10, "6265": 10, "3007": 10, "7482": 10, "3031": 10, "6250": 10, "2479": 10, "9818": 10, "2861": 10, "7851": 10, "3332": 10, "7385": 10, "2905": 10, "4698": 10, "3522": 10, "2373": 10, "3415": 10, "8500": 10, "3768": 10, "3015": 10, "1922": 10, "2303": 10, "8471": 10, "2210": 10, "7076": 10, "2392": 10, "4108": 10, "2677": 10, "0868": 10, "2544": 10, "3034": 10, "2302": 10, "2507": 10, "8782": 10, "2817": 10, "7991": 10, "3100": 10, "3194": 10, "2424": 10, "5348": 10, "8100": 10, "2898": 10, "4783": 10, "2233": 10, "2854": 10, "0588": 10, "2687": 10, "0520": [10, 13], "2821": 10, "3521": 10, "2332": 10, "3593": 10, "8894": 10, "2245": 10, "7685": 10, "2327": 10, "3211": 10, "2217": 10, "2340": 10, "5433": 10, "2339": 10, "1500": 10, "2732": 10, "0498": 10, "2924": 10, "6649": 10, "2547": 10, "2635": 10, "7917": 10, "2497": 10, "0261": [10, 13], "2481": 10, "2588": 10, "2350": 10, "0797": 10, "2288": 10, "2017": 10, "7328": 10, "2416": 10, "5938": 10, "631u": 10, "2616": 10, "8181": 10, "3714": 10, "2491": 10, "6091": 10, "2540": 10, "1394": 10, "2407": 10, "4652": 10, "2404": 10, "4267": 10, "2236": 10, "0930": 10, "2459": 10, "1801": 10, "4740": 10, "2230": 10, "7297": 10, "2452": 10, "7629": 10, "3585": 10, "2674": 10, "0978": [10, 13], "2440": 10, "4373": 10, "2246": 10, "9789": 10, "2398": 10, "1814": 10, "0026": 10, "2598": 10, "4723": 10, "2276": 10, "0607": 10, "1842": 10, "0658": 10, "2516": 10, "4747": 10, "2698": 10, "7970": 10, "9011": 10, "2248": 10, "8718": 10, "1988": 10, "9131": 10, "2647": 10, "0508": 10, "2470": 10, "6068": 10, "2103": 10, "9357": 10, "2256": 10, "8297": 10, "5076": 10, "2187": 10, "5882": 10, "2347": 10, "2125": 10, "2016": [10, 36], "2686": 10, "2414": 10, "1997": 10, "7690": 10, "2143": 10, "2220": 10, "8686": 10, "2027": 10, "0525": 10, "1796": 10, "1243": 10, "1688": 10, "2720": 10, "2427": 10, "6732": 10, "1930": 10, "2496": 10, "2101": 10, "2623": 10, "2311": 10, "2108": 10, "5763": 10, "1652": 10, "7140": 10, "2029": 10, "6269": 10, "1971": 10, "0215": [10, 13], "2013": 10, "4791": 10, "1939": 10, "2891": 10, "2023": [10, 81], "8636": 10, "1973": 10, "9831": 10, "2170": 10, "8269": 10, "2119": 10, "1718": 10, "3819": 10, "1753": 10, "4476": 10, "6607": 10, "1874": 10, "1594": 10, "1786": 10, "2699": 10, "1976": 10, "5859": 10, "1764": 10, "9975": 10, "1843": 10, "2896": 10, "1887": 10, "3193": 10, "1746": 10, "2219": 10, "7242": 10, "1838": 10, "4691": 10, "1993": [10, 66], "5528": 10, "1947": 10, "9465": 10, "1756": 10, "1666": 10, "2151": 10, "8272": 10, "2048": 10, "7447": 10, "1880": 10, "7260": 10, "1681": 10, "5052": 10, "1546": 10, "6121": 10, "8754": 10, "2054": 10, "1950": 10, "0882": 10, "1550": 10, "6943": 10, "1768": 10, "0412": 10, "1886": 10, "1832": 10, "7899": 10, "5472": 10, "1793": 10, "9719": 10, "4080": 10, "2140": 10, "2205": 10, "1552": 10, "2280": 10, "1875": 10, "1854": 10, "1512": 10, "7849": 10, "1730": 10, "0405": 10, "982u": 10, "1649": 10, "7960": 10, "1570": 10, "1624": 10, "6024": 10, "1648": 10, "9278": 10, "1910": 10, "3136": 10, "1602": 10, "3501": 10, "1725": 10, "3586": 10, "1869": 10, "1324": 10, "1830": 10, "4318": 10, "1761": 10, "2750": 10, "1722": 10, "9209": 10, "1948": 10, "2875": 10, "1831": 10, "7574": 10, "2206": 10, "8629": 10, "1956": 10, "3901": 10, "6336": 10, "9097": 10, "1850": 10, "5665": 10, "1741": 10, "1563": 10, "1533": 10, "2136": 10, "1710": 10, "2255": 10, "1863": 10, "6537": 10, "1473": 10, "4835": 10, "1926": 10, "0840": 10, "1754": 10, "7195": 10, "1532": 10, "6767": 10, "1429": 10, "4323": 10, "2109": 10, "0054": 10, "2667": 10, "1759": 10, "9251": 10, "507u": 10, "1677": 10, "7136": 10, "1644": 10, "2639": 10, "8118": 10, "1799": 10, "4443": 10, "1791": 10, "8709": 10, "1613": 10, "7294": 10, "1667": 10, "9038": 10, "1424": 10, "7962": 10, "4494": 10, "6228": 10, "1719": 10, "3485": 10, "1949": 10, "5489": 10, "1752": 10, "6652": 10, "1641": 10, "8077": 10, "9119": 10, "1614": 10, "9023": 10, "512u": 10, "1599": 10, "3130": 10, "637u": 10, "1543": [10, 13], "8407": 10, "0045": 10, "1616": 10, "8255": 10, "1658": 10, "5290": 10, "1623": 10, "4593": 10, "1598": 10, "1527": 10, "0035": 10, "1675": [10, 13], "1176": [10, 13], "1579": 10, "7624": 10, "1871": [10, 69], "0583": 10, "1676": 10, "2569": [10, 86], "6997": 10, "1630": 10, "5027": 10, "1714": 10, "3342": 10, "1937": [10, 69], "1909": 10, "1885": 10, "1699": 10, "7365": 10, "1782": 10, "2948": 10, "1433": 10, "7564": 10, "1609": 10, "3827": 10, "1524": 10, "3713": 10, "1615": 10, "6571": 10, "1436": 10, "3167": 10, "5656": 10, "1483": 10, "7080": 10, "9990": 10, "7168": 10, "1535": 10, "4206": 10, "2617": 10, "1322": 10, "8511": 10, "6179": 10, "2889": 10, "1330": 10, "4235": 10, "1684": 10, "8156": 10, "1526": 10, "8129": 10, "1451": 10, "5067": 10, "1263": 10, "4889": 10, "1551": 10, "9647": 10, "1477": 10, "6180": 10, "1572": 10, "4237": 10, "1674": 10, "9063": 10, "1378": [10, 13], "8684": 10, "1507": 10, "3229": 10, "5251": 10, "0613": 10, "1940": 10, "2832": 10, "1390": 10, "7029": 10, "2028": 10, "4180": 10, "1400": 10, "6053": 10, "1600": 10, "5463": 10, "4545": 10, "1690": 10, "9898": 10, "1560": 10, "5255": 10, "1496": 10, "3250": [10, 66, 67, 83], "1464": 10, "4964": 10, "1347": 10, "3822": 10, "1680": 10, "5625": 10, "1685": 10, "9671": 10, "1458": 10, "3715": 10, "1338": 10, "3292": 10, "1224": 10, "2853": 10, "1479": 10, "0943": [10, 13], "1457": 10, "9219": 10, "1475": 10, "0094": 10, "1670": 10, "0675": 10, "1342": 10, "1283": [10, 13], "1732": 10, "6730": 10, "1557": 10, "8197": 10, "1323": [10, 13], "2413": 10, "1480": 10, "8009": 10, "1554": 10, "0360": [10, 13], "1233": 10, "7350": 10, "1612": 10, "1095": [10, 13], "1309": 10, "7605": 10, "8509": 10, "0782": 10, "6975": 10, "1403": 10, "7559": 10, "1286": 10, "3266": 10, "1534": 10, "1359": 10, "4493": 10, "1618": 10, "6762": 10, "9501": 10, "2243": 10, "1328": 10, "4496": 10, "1260": 10, "8650": 10, "1356": 10, "1463": 10, "5878": 10, "1415": [10, 47, 59], "7405": 10, "1665": 10, "0463": 10, "1407": 10, "6085": 10, "1340": 10, "3311": 10, "1410": 10, "2766": 10, "1370": 10, "8288": 10, "1525": 10, "9971": 10, "1281": 10, "8653": 10, "1242": 10, "5224": 10, "1471": 10, "6353": 10, "1343": 10, "7267": 10, "1074": [10, 13], "5558": 10, "0684": 10, "6382": 10, "9643": 10, "1113": [10, 13], "1002": [10, 13], "1267": 10, "1333": 10, "1006": [10, 13], "1344": 10, "3406": 10, "1240": 10, "9328": 10, "1362": 10, "0289": [10, 13], "1332": 10, "5575": 10, "8355": 10, "1337": 10, "9758": 10, "676u": 10, "1549": 10, "9248": 10, "1168": [10, 13], "884u": 10, "1811": 10, "1528": 10, "3908": 10, "1278": 10, "1254": 10, "2802": 10, "1163": [10, 13], "0126": 10, "1241": [10, 13], "6989": 10, "1280": 10, "1467": 10, "1373": 10, "1589": 10, "5521": 10, "1462": 10, "5124": 10, "1276": 10, "0316": [10, 13], "1481": 10, "6486": 10, "1374": 10, "0903": 10, "1450": 10, "0636": 10, "1491": 10, "4013": 10, "1234": [10, 13], "3174": 10, "6376": 10, "1445": 10, "2293": 10, "1038": [10, 13], "1319": 10, "5845": 10, "1640": 10, "9712": 10, "1470": 10, "1387": 10, "7348": 10, "1372": 10, "6094": 10, "6782": 10, "8121": 10, "1897": 10, "3858": 10, "1149": [10, 13], "8614": 10, "1257": 10, "1769": 10, "1171": 10, "9660": 10, "1205": 10, "8323": 10, "1299": 10, "2956": 10, "1487": 10, "5287": 10, "1289": [10, 13], "2277": 10, "1239": [10, 13], "5310": 10, "1379": 10, "9230": 10, "1539": 10, "1353": 10, "1597": 10, "8884": 10, "9622": 10, "1425": 10, "1489": 10, "4607": 10, "998u": 10, "1121": [10, 13], "7008": 10, "649u": 10, "6141": 10, "1336": 10, "6669": 10, "664u": 10, "1420": 10, "3951": 10, "8741": 10, "2430": 10, "7218": 10, "1493": 10, "6457": 10, "1105": [10, 13], "8380": 10, "4162": 10, "1010": [10, 13], "1531": 10, "1357": [10, 13], "7809": 10, "1173": [10, 13], "1733": 10, "1384": 10, "7802": 10, "1453": 10, "4034": 10, "1326": [10, 13], "4750": [10, 69, 83], "3023": 10, "1197": [10, 13], "9775": 10, "1186": [10, 13], "1293": 10, "5841": 10, "0x21493feb2e0": 10, "x2_fit": 10, "10000": [10, 30, 31, 34, 51, 87], "y2_fit": 10, "savefig": [10, 13, 67, 68], "polynomreg1": 10, "pdf": [10, 13, 45, 67], "modell3": 10, "8789": 10, "5694": 10, "923u": 10, "6345": 10, "0535": 10, "6029": 10, "8562": 10, "6045": 10, "2389": 10, "5319": 10, "8144": 10, "5651": 10, "7026": 10, "5453": 10, "8189": 10, "4450": 10, "8942": 10, "4148": 10, "9610": 10, "4600": 10, "5944": 10, "6699": 10, "4774": 10, "4093": 10, "1962": 10, "3993": 10, "7253": 10, "3769": 10, "3109": 10, "8644": 10, "3242": 10, "6954": 10, "2662": 10, "1601": 10, "3351": 10, "7944": 10, "2859": 10, "0244": [10, 13], "4131": 10, "9188": 10, "2818": 10, "6651": 10, "7022": 10, "5209": [10, 13], "2689": 10, "4314": 10, "2602": 10, "8444": 10, "2458": 10, "6333": 10, "2193": 10, "4183": 10, "9316": 10, "1773": 10, "1334": 10, "1859": 10, "9955": 10, "2346": 10, "1298": 10, "7091": 10, "2049": 10, "8132": 10, "2178": 10, "1476": 10, "1915": 10, "1631": 10, "7415": 10, "7458": 10, "1386": [10, 13], "5268": 10, "1154": 10, "1505": 10, "5538": 10, "1858": 10, "7965": 10, "7481": 10, "9503": 10, "2743": 10, "1884": 10, "4006": 10, "1312": 10, "1766": 10, "8426": 10, "7501": 10, "1574": 10, "3583": 10, "1308": 10, "3793": 10, "6119": 10, "1040": [10, 13], "1743": 10, "1687": 10, "0333": 10, "1179": 10, "0807": 10, "1907": 10, "1058": [10, 13], "1700": 10, "1622": 10, "2294": 10, "1628": 10, "4703": 10, "1607": 10, "5396": 10, "1755": 10, "1934": 10, "1540": 10, "2809": 10, "8165": 10, "1456": 10, "2812": 10, "1383": 10, "7459": 10, "1341": 10, "3004": 10, "1245": 10, "1776": 10, "2148": 10, "1350": 10, "2608": 10, "1221": 10, "7366": 10, "8798": 10, "9409": 10, "1151": [10, 13], "5664": 10, "1065": [10, 13], "3788": 10, "1588": 10, "3678": 10, "1295": 10, "6875": 10, "1229": 10, "0279": [10, 13], "1348": 10, "1292": [10, 13], "1275": [10, 13], "9404": 10, "1152": [10, 13], "4883": 10, "1331": 10, "7920": 10, "7040": 10, "1142": [10, 13], "0395": 10, "515u": 10, "1147": [10, 13], "8693": 10, "974": 10, "3704": 10, "1155": [10, 13], "0687": 10, "1029": [10, 13], "2641": 10, "1127": [10, 13], "5576": 10, "1244": 10, "8689": 10, "1228": 10, "0304": [10, 13], "1290": 10, "4294": 10, "9052": 10, "1185": [10, 13], "3240": 10, "1206": [10, 13], "5858": 10, "4994": 10, "1222": 10, "5016": 10, "1556": 10, "1634": 10, "1143": [10, 13], "1146": [10, 13], "8025": 10, "1123": [10, 13], "7659": 10, "1596": 10, "8107": 10, "4868": 10, "1282": 10, "9418": 10, "1204": [10, 13], "6644": 10, "1046": [10, 13], "1559": 10, "0354": 10, "6815": 10, "9644": 10, "1327": 10, "7801": 10, "2833": [10, 14, 80], "1797": 10, "3525": 10, "1389": [10, 13], "1285": [10, 13], "9564": 10, "915u": 10, "8872": 10, "6163": 10, "9458": 10, "6194": 10, "1339": 10, "9855": 10, "1250": [10, 13], "7255": 10, "6780": 10, "562u": 10, "1172": 10, "8854": 10, "1259": 10, "4188": 10, "0122": 10, "7020": 10, "1501": 10, "1405": 10, "9000": 10, "4324": 10, "5773": 10, "1191": [10, 13], "8903": 10, "9497": 10, "995u": 10, "1129": 10, "5827": 10, "1371": [10, 13], "6389": 10, "4286": 10, "1515": 10, "0143": 10, "1406": 10, "4011": 10, "7952": 10, "1846": 10, "3533": 10, "2498": 10, "2135": 10, "1963": 10, "6042": 10, "564u": 10, "5562": 10, "4442": 10, "8740": 10, "1678": 10, "2083": 10, "1174": [10, 13], "3013": 10, "8075": 10, "0533": 10, "1484": 10, "7648": 10, "1048": [10, 13], "9400": 10, "1419": 10, "2313": 10, "3562": 10, "1213": [10, 13], "1125": [10, 13], "1399": 10, "4077": 10, "1351": 10, "9926": 10, "1138": [10, 13], "3006": 10, "1288": 10, "7547": 10, "4280": 10, "1959": 10, "4609": 10, "2432": 10, "1273": 10, "1269": 10, "1444": 10, "2088": 10, "1028": [10, 13], "8981": 10, "1114": [10, 13], "6379": 10, "1465": 10, "0994": [10, 13], "0004": 10, "2784": 10, "1122": [10, 13], "8612": 10, "1354": 10, "6093": 10, "1187": [10, 13], "2953": 10, "0744": 10, "1145": [10, 13], "789u": 10, "1112": [10, 13], "6757": 10, "761u": 10, "1076": [10, 13], "4928": 10, "1023": [10, 13, 36], "922": 10, "0698": 10, "1297": 10, "4617": 10, "4720": 10, "1363": 10, "1085": [10, 13], "5873": 10, "1057": [10, 13], "685u": 10, "1555": 10, "0469": 10, "8271": 10, "4932": 10, "1216": 10, "6666": 10, "1134": [10, 13], "1180": [10, 13], "2378": 10, "1118": [10, 13], "3349": 10, "1422": 10, "2969": 10, "5614": 10, "2310": 10, "2454": 10, "8443": 10, "1564": 10, "4193": 10, "1432": 10, "7741": 10, "1790": 10, "6158": 10, "470u": 10, "8593": 10, "9713": 10, "1130": [10, 13], "2473": 10, "2295": 10, "1215": [10, 13], "7302": 10, "1136": 10, "7336": 10, "976": 10, "5883": 10, "1200": [10, 13], "2003": 10, "3557": 10, "1364": 10, "6435": 10, "1093": [10, 13], "3416": 10, "1096": [10, 13], "1409": 10, "2996": 10, "6749": 10, "1156": [10, 13], "9496": 10, "1448": 10, "1166": [10, 13], "8688": 10, "1262": [10, 13], "1103": [10, 13], "8537": 10, "9765": 10, "3113": 10, "2204": 10, "1358": 10, "8558": 10, "3927": 10, "1148": [10, 13], "3948": 10, "1580": 10, "5474": 10, "6848": [10, 13], "1032": [10, 13], "2885": 10, "1144": [10, 13], "1307": 10, "3123": 10, "1249": 10, "5654": 10, "995": 10, "1561": 10, "883u": 10, "1306": 10, "3799": 10, "3732": 10, "6577": 10, "947u": 10, "1119": [10, 13], "8056": 10, "1369": 10, "8861": 10, "883": 10, "4447": 10, "1413": 10, "5739": 10, "1133": [10, 13], "3205": 10, "1189": [10, 13], "2164": 10, "1081": [10, 13], "2790": 10, "1109": [10, 13], "8219": 10, "1272": [10, 13], "5583": 10, "9428": 10, "4832": 10, "3220": 10, "4604": 10, "1184": [10, 13], "2619": 10, "6105": 10, "1203": 10, "9672": 10, "1033": [10, 13], "5132": 10, "662u": 10, "1087": [10, 13], "1423": 10, "5913": 10, "8113": 10, "1941": 10, "5821": 10, "904u": 10, "1355": 10, "1382": 10, "9205": 10, "1069": [10, 13], "8764": 10, "8895": 10, "8351": 10, "1256": [10, 13], "3913": 10, "8658": 10, "1625": 10, "1212": 10, "9664": 10, "1139": [10, 13], "6072": 10, "1519": 10, "5740": 10, "1398": 10, "1265": [10, 13], "9901": 10, "9531": 10, "1377": 10, "6982": 10, "2436": 10, "8719": 10, "1004": [10, 13], "1044": [10, 13], "0988": 10, "938": 10, "965": 10, "4555": 10, "1516": 10, "1391": 10, "4293": 10, "939": 10, "1092": [10, 13], "7569": 10, "5620": 10, "1255": 10, "0189": 10, "910": 10, "9502": 10, "1007": [10, 13], "8459": 10, "4696": 10, "1468": 10, "9542": 10, "1071": [10, 13], "7235": 10, "1395": 10, "2127": 10, "1003": [10, 13], "7729": 10, "1226": 10, "2039": 10, "8732": 10, "0362": 10, "1157": 10, "8203": 10, "1094": [10, 13], "1047": [10, 13], "991": 10, "3823": 10, "8072": 10, "1099": [10, 13], "3680": 10, "2901": 10, "5028": 10, "965u": 10, "953": 10, "7701": 10, "2329": 10, "828": 10, "4886": 10, "1016": 10, "984": 10, "5341": 10, "1225": [10, 13], "4716": 10, "880": 10, "2477": 10, "1049": [10, 13], "2839": 10, "1412": 10, "897": 10, "9396": 10, "2106": 10, "968": 10, "1974": 10, "8987": 10, "959": 10, "5702": 10, "1296": 10, "4587": 10, "4702": 10, "9849": 10, "1025": [10, 13], "4910": 10, "0101": 10, "977": 10, "7403": 10, "8224": 10, "5023": 10, "1418": 10, "4534": 10, "4327": 10, "8326": 10, "928": 10, "9790": 10, "6000": 10, "1110": [10, 13], "0791": 10, "705": 10, "3478": 10, "6181": 10, "1651": 10, "3030": 10, "1691": 10, "5712": 10, "3534": 10, "777u": 10, "2384": 10, "3733": 10, "4124": 10, "0186": 10, "1866": 10, "2545": 10, "3527": 10, "1208": 10, "4611": 10, "5908": 10, "912": 10, "0309": [10, 13], "1439": 10, "9208": 10, "1056": [10, 13], "911": 10, "3689": 10, "1159": [10, 13], "8199": 10, "8495": 10, "975": 10, "2523": 10, "8115": 10, "3545": 10, "5259": 10, "1917": 10, "0147": 10, "1488": 10, "9932": 10, "1803": 10, "7824": 10, "1360": 10, "8532": 10, "1089": [10, 13], "5126": 10, "0010": 10, "1124": [10, 13], "5730": 10, "1165": [10, 13], "9524": 10, "0228": [10, 13], "9938": 10, "945": 10, "6192": 10, "8549": 10, "1036": [10, 13], "9820": 10, "815": 10, "7364": 10, "5349": 10, "1097": [10, 13], "949": 10, "3937": 10, "927": 10, "4123": 10, "957": 10, "988": 10, "3683": 10, "970": 10, "1810": 10, "913": 10, "8410": 10, "9463": 10, "9288": 10, "906": 10, "7702": 10, "838": 10, "3699": 10, "1158": [10, 13], "7747": 10, "0820": 10, "875": 10, "4423": 10, "5223": 10, "961u": 10, "1131": [10, 13], "5903": 10, "905": 10, "4634": 10, "855": 10, "9978": 10, "1117": [10, 13], "7617": 10, "1019": [10, 13], "0109": 10, "5680": 10, "663u": 10, "5362": 10, "963": 10, "0330": [10, 13], "3125": 10, "2411": 10, "839": 10, "5699": 10, "6591": 10, "1073": [10, 13], "5262": 10, "866": 10, "0777": 10, "1302": 10, "0317": [10, 13], "899": 10, "5547": 10, "978": 10, "7943": 10, "1026": [10, 13], "9669": 10, "8402": 10, "955": 10, "0318": [10, 13], "5488": 10, "0631": 10, "6097": 10, "0580": 10, "1789": 10, "0697": 10, "1211": 10, "1807": 10, "6406": 10, "1805": 10, "6507": 10, "612u": 10, "3331": 10, "6302": 10, "6255": 10, "9072": 10, "8672": 10, "0254": [10, 13], "8870": 10, "3285": 10, "7749": 10, "0257": [10, 13], "0982": [10, 13], "6199": 10, "882u": 10, "5217": 10, "6583": 10, "6962": 10, "5741": 10, "3516": 10, "4929": 10, "5384": 10, "4287": 10, "5422": 10, "0908": 10, "3907": 10, "4102": 10, "9434": 10, "3502": 10, "8456": 10, "2059": 10, "2511": 10, "6811": 10, "1603": 10, "6337": 10, "2133": 10, "2921": 10, "4414": 10, "1083": [10, 13], "7733": 10, "2729": 10, "4938": 10, "2892": 10, "5532": 10, "2203": 10, "8427": 10, "2814": 10, "6213": 10, "2080": 10, "7165": 10, "1506": 10, "7127": 10, "7045": 10, "3197": 10, "6803": 10, "1961": 10, "8947": 10, "1813": 10, "8470": 10, "7760": 10, "2004": [10, 39, 81], "5909": 10, "2910": 10, "6932": 10, "7519": 10, "1018": [10, 13], "7737": 10, "0761": 10, "1800": 10, "3698": 10, "0x214942f4c10": 10, "x3_fit": 10, "y3_fit": 10, "polynomreg2": 10, "train_label": 10, "train_sampl": 10, "young": 10, "did": 10, "experi": [10, 69], "effect": 10, "drug": 10, "older": 10, "random_young": 10, "randint": [10, 31, 70], "random_old": 10, "scaler": 10, "feature_rang": 10, "normaliser": 10, "scaled_train_sampl": 10, "fit_transform": 10, "reshap": 10, "1d": 10, "2d": 10, "gpu": 10, "akselerasjon": [10, 15, 25, 36, 51, 59, 71, 78], "physical_devic": 10, "config": [10, 36], "experiment": 10, "list_physical_devic": 10, "num": [10, 59], "avail": 10, "len": [10, 23, 30, 31, 66, 71, 82, 88], "set_memory_growth": 10, "true": [10, 13, 14, 35, 36, 42, 47, 59, 64, 66, 67, 69, 74, 76, 80, 83, 88], "relu": 10, "softmax": 10, "fulli": 10, "connect": 10, "function": [10, 74, 77], "transform": [10, 88], "first": [10, 14, 80, 88], "hidden": 10, "last": [10, 62, 66, 86], "somewhat": 10, "arbitrari": 10, "give": 10, "probabl": 10, "sequential_9": 10, "dense_21": 10, "dense_22": 10, "544": 10, "dense_23": 10, "642": 10, "learning_r": 10, "0001": [10, 23, 71], "sparse_categorical_crossentropi": 10, "accuraci": [10, 42], "batch_siz": 10, "verbos": 10, "train": 10, "iter": [10, 74, 76], "batch": 10, "size": [10, 66, 88], "sampl": [10, 89], "level": 10, "6871": 10, "5157": 10, "6470": 10, "6371": [10, 15], "6139": 10, "5794": 10, "7381": 10, "5439": 10, "7767": 10, "5107": 10, "8081": 10, "4784": 10, "8371": 10, "4481": 10, "8533": 10, "4208": 10, "3961": 10, "3750": [10, 66, 67, 83], "8967": 10, "3565": 10, "9062": 10, "3408": 10, "9138": 10, "3279": 10, "9195": 10, "3170": 10, "9214": 10, "3084": 10, "9229": 10, "9257": 10, "2941": 10, "2890": 10, "2844": 10, "2805": 10, "2773": 10, "2746": 10, "9367": 10, "2724": 10, "2702": 10, "2683": 10, "9429": 10, "2668": 10, "2654": 10, "9381": 10, "9395": 10, "2628": 10, "0x214956a7cd0": 10, "l\u00f8se": [11, 12, 15, 16, 17, 35, 41, 44, 48, 51, 62, 64, 70, 74, 75, 78], "problem": [11, 35, 36, 37, 70, 74, 78, 79], "skj\u00e6rer": [11, 74], "nullpunktsproblem": [11, 74], "utgangspunkt": [11, 12, 15, 16, 17, 18, 34, 38, 43, 47, 48, 51, 59, 64, 66, 69, 70, 71, 73, 75, 78, 81, 84], "c_1": [11, 74], "c_2": [11, 74], "ln": [11, 12, 51, 71, 74, 75, 78], "006t": [11, 74], "produkten": [11, 74], "lik": [11, 18, 23, 36, 39, 41, 43, 46, 47, 48, 51, 59, 62, 70, 73, 74, 78, 79, 81], "konsentrasjon": [11, 17, 35, 44, 62, 69, 74], "formulert": [11, 12, 74, 75], "analytisk": [11, 12, 23, 41, 51, 71, 73, 74, 75, 78], "l\u00f8sbar": [11, 41, 74], "nullpunkten": [11, 12, 41, 74, 75], "strategi": [11, 41, 74], "teoretisk": [11, 71, 74], "bakgrunnen": [11, 51, 71, 74], "dr\u00f8fte": [11, 43, 74], "feil": [11, 36, 37, 41, 47, 51, 59, 62, 65, 67, 71, 73, 74], "begrensning": [11, 18, 39, 43, 44, 74, 76, 78], "5x": [11, 74], "894": [11, 74], "docstr": [11, 41, 74], "tolerans": [11, 74], "mak": [11, 14, 41, 42, 48, 62, 69, 74, 80], "iterasjon": [11, 51, 70, 74], "feilh\u00e5ndter": [11, 74], "uten": [11, 34, 36, 38, 40, 41, 47, 48, 50, 51, 59, 62, 64, 66, 70, 74, 78], "g\u00e5": [12, 44, 51, 64, 67, 70, 73, 75, 78], "ca": [12, 14, 36, 44, 67, 70, 73, 75, 80, 81, 85], "fire": [12, 34, 45, 51, 59, 65, 66, 67, 70, 75, 78, 84], "sp\u00f8rsm\u00e5l": [12, 75], "parvi": [12, 75], "gruppa": [12, 36, 75], "nullpunkt": [12, 41, 75], "grafen": [12, 18, 35, 41, 43, 68, 71, 73, 74, 75], "interval": [12, 36, 40, 41, 47, 66, 73, 74, 75, 78, 82], "nullpunktet": [12, 41, 75], "funksjonsverdien": [12, 15, 16, 17, 40, 41, 47, 62, 74, 75, 78], "randpunkten": [12, 75], "intervallen": [12, 75], "systematisk": [12, 15, 18, 34, 43, 70, 75, 78, 79], "d": [12, 15, 16, 17, 41, 44, 50, 62, 73, 75, 86, 88], "ta": [12, 15, 16, 17, 34, 38, 40, 41, 43, 44, 47, 48, 59, 60, 62, 64, 65, 66, 67, 69, 70, 71, 73, 75, 78, 84], "intervallet": [12, 40, 41, 44, 46, 47, 51, 70, 71, 73, 74, 75, 78], "juster": [12, 39, 44, 66, 75, 78, 79, 81], "komm": [12, 44, 47, 75], "n\u00e6rmere": [12, 39, 66, 69, 71, 75, 78], "anvend": [12, 35, 44, 75], "generaliseringen": [12, 75], "algoritm": [12, 13, 14, 37, 40, 41, 42, 59, 67, 73, 74, 75, 76, 78, 80], "utdelt": [12, 75], "grafer": [12, 44, 68, 75], "personen": [12, 14, 42, 62, 70, 75, 78, 80], "oppgi": [12, 74, 75, 78], "funksjonsverdi": [12, 17, 28, 40, 41, 47, 62, 68, 69, 71, 75, 78, 84], "lagd": [12, 15, 34, 41, 43, 51, 59, 64, 67, 71, 75, 78], "fungert": [12, 75], "blei": [12, 36, 75], "eksamen": [12, 75], "likninga": [12, 44, 62, 74, 75, 78], "h\u00e5nd": [12, 15, 47, 51, 65, 70, 71, 75, 78], "langt": [12, 15, 39, 67, 69, 73, 75, 81], "kommer": [12, 13, 14, 36, 42, 44, 51, 59, 66, 67, 69, 70, 71, 75, 78, 80, 81, 84], "kaller": [12, 15, 16, 17, 34, 39, 44, 47, 50, 51, 62, 64, 65, 66, 67, 69, 71, 73, 74, 75, 78, 81], "l\u00f8sning": [12, 35, 44, 48, 60, 65, 66, 69, 70, 74, 75, 76, 78], "ender": [12, 15, 16, 17, 75, 78], "eksakt": [12, 70, 71, 73, 75, 79], "tegn": [12, 15, 36, 38, 40, 41, 46, 51, 64, 68, 75, 87], "tiln\u00e6rma": [12, 75], "panda": [13, 14, 42, 67, 69, 71, 80, 81, 89], "pd": [13, 14, 42, 66, 67, 69, 71, 80, 81, 83], "seaborn": [13, 14, 20, 42, 66, 67, 69, 80, 83], "sn": [13, 14, 42, 66, 67, 69, 80, 83], "read_csv": [13, 14, 66, 67, 69, 71, 80, 81, 83], "skriver": [13, 14, 35, 36, 38, 44, 46, 47, 48, 49, 50, 51, 59, 60, 62, 64, 65, 66, 73, 78, 80], "fem": [13, 14, 40, 42, 65, 66, 68, 78, 80], "linjer": [13, 14, 35, 38, 43, 46, 51, 59, 62, 68, 69, 80], "head": [13, 14, 36, 66, 67, 71, 80, 83], "id": 13, "sepallengthcm": 13, "sepalwidthcm": 13, "petallengthcm": 13, "petalwidthcm": 13, "speci": [13, 66, 67, 69, 83], "setosa": 13, "visualiser": [13, 14, 42, 44, 47, 67, 69, 71, 80], "regplot": [13, 69], "histplot": [13, 66], "jointplot": [13, 66], "hue": [13, 14, 42, 66, 69, 80, 83], "violinplot": [13, 69], "axessubplot": [13, 14, 66, 69, 80, 83], "pairplot": [13, 67, 69, 83], "axisgrid": [13, 66, 69, 83], "pairgrid": [13, 69, 83], "0x232e0b53af0": 13, "describ": [13, 69, 83], "count": [13, 14, 42, 66, 69, 80, 83, 89], "000000": [13, 69, 71, 83], "500000": [13, 69, 83], "843333": 13, "054000": 13, "758667": 13, "198667": 13, "std": [13, 30, 69, 83], "445368": 13, "828066": 13, "433594": 13, "764420": 13, "763161": 13, "min": [13, 66, 69, 82, 83], "300000": [13, 69, 83], "100000": [13, 23, 25, 69, 83], "250000": 13, "800000": 13, "600000": [13, 69, 83], "350000": [13, 83], "750000": 13, "400000": 13, "max": [13, 35, 69, 81, 83], "900000": 13, "plotten": [13, 17, 66, 68], "beger": 13, "kronbladlengden": 13, "irisblomstart": 13, "forutsi": [13, 14, 42, 44, 67, 69, 80, 81], "bredder": 13, "lengder": 13, "kron": 13, "kriterium": [13, 14, 42, 46, 47, 48, 51, 67, 80], "arten": [13, 65, 66, 67], "spesifiser": [13, 14, 42, 47, 59, 62, 65, 66, 74, 80], "kategorien": [13, 14, 18, 42, 43, 47, 67, 80], "m\u00e5lkategorien": [13, 14, 42, 80], "v\u00e5r": [13, 14, 15, 36, 39, 40, 44, 51, 64, 66, 67, 69, 70, 74, 78, 80, 81, 84, 85], "model_select": [13, 14, 42, 67, 80, 83], "train_test_split": [13, 14, 42, 67, 80, 83], "cross_val_scor": [13, 14, 42, 67, 80, 83], "tree": [13, 14, 42, 67, 80, 83], "accuracy_scor": [13, 14, 42, 67, 80, 83], "confusion_matrix": [13, 14, 42, 67, 80, 83], "featur": [13, 67], "kategori": [13, 14, 18, 39, 42, 43, 65, 66, 67, 80, 81, 83], "klarer": [13, 14, 42, 66, 67, 80], "utenfra": [13, 14, 42, 80], "derfor": [13, 14, 15, 16, 17, 34, 36, 39, 40, 42, 44, 46, 47, 48, 50, 51, 59, 62, 64, 65, 66, 67, 69, 70, 71, 73, 74, 78, 80, 81, 84], "oft": [13, 14, 15, 16, 17, 18, 35, 36, 39, 40, 42, 43, 46, 47, 48, 50, 51, 62, 64, 66, 67, 69, 74, 78, 79, 80, 81, 84], "treningssett": [13, 14, 42, 80], "testsett": [13, 14, 42, 80], "treningssettet": [13, 14, 42, 67, 80], "testsettet": [13, 14, 42, 67, 80], "evaluer": [13, 14, 39, 41, 42, 67, 74, 78, 79, 80], "etterk": [13, 14, 42, 80], "blander": [13, 14, 42, 80], "generer": [13, 14, 42, 47, 66, 68, 70, 80, 84, 87], "slike": [13, 14, 15, 16, 36, 42, 51, 65, 66, 70, 74, 78, 79, 80], "testandel": [13, 14, 80, 83], "ml_data": [13, 14, 67, 80, 83], "test_siz": [13, 14, 80, 83], "random_st": [13, 14, 67, 80, 83], "treningskriteri": [13, 14, 42, 67, 80, 83], "testkriteri": [13, 14, 42, 67, 80, 83], "treningskategori": [13, 14, 67, 80, 83], "testkategori": [13, 14, 42, 67, 80, 83], "heter": [13, 14, 35, 36, 38, 42, 44, 46, 47, 51, 59, 64, 66, 67, 68, 73, 74, 78, 80], "decis": [13, 14, 42, 80], "classifi": [13, 14, 42, 80], "basert": [13, 14, 17, 18, 37, 42, 43, 44, 48, 66, 67, 69, 74, 78, 79, 80], "sammensatt": [13, 14, 42, 48, 59, 78, 80], "forgreined": [13, 14, 42, 80], "valgtr\u00e6r": [13, 14, 42, 80], "kombinasjon": [13, 14, 42, 47, 70, 71, 80], "utforsket": [13, 14, 42, 80], "betinged": [13, 14, 42, 80], "sannsynlighet": [13, 14, 42, 67, 80], "hendels": [13, 14, 34, 42, 70, 80], "beregnet": [13, 14, 42, 80], "mest": [13, 14, 36, 42, 48, 59, 66, 67, 69, 80], "sannsynlig": [13, 14, 42, 44, 48, 67, 73, 80], "utfallen": [13, 14, 42, 78, 80], "framhevet": [13, 14, 42, 80], "kombinasjonen": [13, 14, 42, 80], "kriterien": [13, 14, 42, 47, 48, 67, 80], "decisiontreeclassifi": [13, 14, 42, 67, 80, 83], "var": [13, 14, 30, 36, 42, 59, 64, 67, 69, 80, 82], "objekt": [13, 14, 42, 67, 78, 80], "kalt": [13, 14, 36, 42, 44, 47, 62, 64, 67, 74, 78, 80, 85, 86], "takler": [13, 14, 42, 80], "modellkategorier_forutsett": [13, 14, 42, 80], "bedr": [13, 14, 39, 41, 42, 62, 66, 71, 73, 74, 79, 80, 84], "riktig": [13, 14, 40, 42, 48, 67, 78, 79, 80, 84], "feiler": [13, 14, 42, 67, 80], "confus": [13, 14, 42, 80], "matrix": [13, 14, 42, 77, 80], "forvirringsmatris": [13, 14, 42, 67, 80], "feilmatris": [13, 14, 42, 67, 80], "cm": [13, 14, 42, 44, 47, 49, 67, 68, 80, 88], "heatmap": [13, 14, 42, 67, 69, 80, 83], "annot": [13, 14, 42, 67, 69, 80, 83], "cmap": [13, 14, 42, 67, 80], "viridi": [13, 14, 42, 67, 80], "predikert": [13, 14, 42, 67, 80], "sist": [13, 14, 36, 39, 42, 44, 50, 51, 62, 66, 70, 73, 78, 80, 81], "figur": [13, 14, 36, 42, 44, 66, 73, 74, 80], "figsiz": [13, 14, 42, 80], "plot_tre": [13, 14, 42, 80], "feature_nam": [13, 14, 42, 80], "column": [13, 14, 42, 66, 80, 83, 88], "class_nam": [13, 14, 42, 80], "versicolor": 13, "virginica": 13, "fill": [13, 14, 42, 66, 80], "nearest": 13, "neighbor": 13, "kneighborsclassifi": 13, "n_neighbor": 13, "weight": 13, "prediksjon_knn": 13, "presisjon_knn": 13, "presisjon": [13, 14, 80], "tilfeldig": [13, 34, 38, 48, 67, 70, 78], "blomst": [13, 38, 46, 51], "t1": 13, "t2": 13, "prediksjon": 13, "support": 13, "vector": [13, 77, 88], "machin": [13, 86], "svm_model": 13, "svc": 13, "prediksjon_svm": 13, "presisjon_svm": 13, "kmean": 13, "scale": 13, "dataset": 13, "load_breast_canc": 13, "bc": 13, "target": 13, "brystkreft": 13, "pop": [13, 14, 42, 50, 66, 80], "radius_mean": 13, "texture_mean": 13, "perimeter_mean": 13, "area_mean": 13, "smoothness_mean": 13, "compactness_mean": 13, "concavity_mean": 13, "concav": 13, "points_mean": 13, "symmetry_mean": 13, "fractal_dimension_mean": 13, "radius_s": 13, "texture_s": 13, "perimeter_s": 13, "area_s": 13, "smoothness_s": 13, "compactness_s": 13, "concavity_s": 13, "points_s": 13, "symmetry_s": 13, "fractal_dimension_s": 13, "radius_worst": 13, "texture_worst": 13, "perimeter_worst": 13, "area_worst": 13, "smoothness_worst": 13, "compactness_worst": 13, "concavity_worst": 13, "points_worst": 13, "symmetry_worst": 13, "fractal_dimension_worst": 13, "diagnos": 13, "diagnosi": 13, "map": [13, 14, 80], "x_train": 13, "x_test": 13, "y_train": 13, "y_test": 13, "modell_kmean": 13, "n_cluster": 13, "prediksjon_kmean": 13, "labels_": 13, "presisjon_kmean": 13, "8596491228070176": 13, "linear_model": 13, "kriterier_lr": 13, "kategorier_lr": 13, "ml_data_lr": 13, "treningskriterier_lr": 13, "testkriterier_lr": 13, "treningskategorier_lr": 13, "testkategorier_lr": 13, "l_reg": 13, "linearregress": 13, "linreg_model": 13, "prediksjon_linreg": 13, "r2_verdi": 13, "score": [13, 42, 84], "stign": [13, 73], "coef_": 13, "skj\u00e6ring": 13, "intercept_": 13, "7595012769586207": 13, "0x2330474a4c0": 13, "row": [13, 77, 86, 88], "validation_split": 13, "1s": 13, "259m": 13, "7000": 13, "val_loss": 13, "7175": 13, "9m": 13, "1857": 13, "1834": 13, "0541": 13, "8373": 13, "4279": 13, "9636": 13, "8666": 13, "5318": 13, "2094": 13, "0971": 13, "4665": 13, "2577": 13, "5435": 13, "2737": 13, "2443": 13, "1090": 13, "0997": 13, "0760": 13, "0849": 13, "0466": 13, "0984": 13, "10m": 13, "0404": 13, "0455": 13, "0962": 13, "0332": 13, "1050": 13, "0349": 13, "0393": 13, "0348": 13, "0293": 13, "0999": 13, "0255": 13, "0308": 13, "1035": 13, "8m": 13, "0315": 13, "1070": 13, "0256": 13, "1045": 13, "0292": 13, "0249": 13, "1052": 13, "0262": 13, "1051": 13, "0306": 13, "0248": 13, "1072": 13, "0240": 13, "0265": 13, "1100": 13, "0250": 13, "1079": 13, "0270": 13, "1061": 13, "0303": 13, "0267": 13, "0253": 13, "1132": 13, "0235": 13, "1082": 13, "0276": 13, "0221": 13, "1091": 13, "1066": 13, "0271": 13, "0272": 13, "0295": 13, "0269": 13, "1063": 13, "0285": 13, "1062": 13, "0311": 13, "0239": 13, "0252": 13, "1102": 13, "0275": 13, "0273": 13, "0264": 13, "1104": 13, "0286": 13, "0282": 13, "0268": 13, "0259": 13, "1088": 13, "1106": 13, "0234": 13, "0281": 13, "1011": 13, "0277": 13, "0283": 13, "1198": 13, "0251": 13, "1015": 13, "1162": 13, "0246": 13, "0243": 13, "0214": 13, "0297": 13, "1137": 13, "0290": 13, "1194": 13, "0237": 13, "0307": 13, "1084": 13, "1075": 13, "0263": 13, "1141": 13, "0298": 13, "1140": 13, "0236": 13, "0238": 13, "1031": 13, "0288": 13, "1086": 13, "1042": 13, "0245": 13, "1080": 13, "0274": 13, "0299": 13, "1098": 13, "0300": 13, "1039": 13, "1064": 13, "1021": 13, "1177": 13, "0291": 13, "1218": 13, "1077": 13, "1169": 13, "1178": 13, "0996": 13, "0313": 13, "0326": 13, "0302": 13, "1115": 13, "0294": 13, "1126": 13, "1167": 13, "0323": 13, "1055": 13, "1150": 13, "1068": 13, "0334": 13, "0998": 13, "0320": 13, "0327": 13, "0989": 13, "1266": 13, "0356": 13, "1183": 13, "0258": 13, "0310": 13, "0329": 13, "1078": 13, "0260": 13, "0287": 13, "1238": 13, "0992": 13, "0242": 13, "1037": 13, "0229": 13, "0280": 13, "1059": 13, "1009": 13, "1251": 13, "1303": 13, "1027": 13, "0319": 13, "1274": 13, "0990": 13, "0217": 13, "0975": 13, "1182": 13, "0357": 13, "0301": 13, "1195": 13, "0233": 13, "0355": 13, "0335": 13, "1214": 13, "0324": 13, "0969": 13, "0314": 13, "0305": 13, "0966": 13, "1227": 13, "0232": 13, "0227": 13, "0230": 13, "1153": 13, "1128": 13, "0284": 13, "0328": 13, "1014": 13, "0220": 13, "0296": 13, "1201": 13, "1005": 13, "1170": 13, "1022": 13, "1231": 13, "1008": 13, "0970": 13, "0338": 13, "0361": 13, "0973": 13, "1248": 13, "1067": 13, "0347": 13, "0981": 13, "0351": 13, "0968": 13, "0342": 13, "1043": 13, "1120": 13, "1196": 13, "1060": 13, "0339": 13, "1053": 13, "0939": 13, "0223": 13, "0919": 13, "1380": 13, "0343": 13, "1030": 13, "0991": 13, "0983": 13, "0225": 13, "0957": 13, "0924": 13, "0964": 13, "1013": 13, "1318": 13, "0x23312d56820": 13, "kronbladlengd": 13, "kronbladbredd": 13, "regresjonsdata_iri": 13, "corr": [13, 69, 83], "surviv": [14, 42, 80], "pclass": [14, 42, 80], "sex": [14, 42, 66, 67, 80, 83], "ag": [14, 42, 80], "sibsp": [14, 42, 80], "parch": [14, 42, 80], "fare": [14, 80], "embark": [14, 80], "class": [14, 42, 64, 80, 83, 86], "deck": [14, 80], "embark_town": [14, 80], "aliv": [14, 42, 80], "alon": [14, 42, 80], "2500": [14, 80], "third": [14, 80], "nan": [14, 66, 67, 80, 83], "southampton": [14, 80], "fals": [14, 35, 47, 50, 59, 64, 66, 74, 80], "cherbourg": [14, 80], "ye": [14, 80], "9250": [14, 80], "0500": [14, 80], "ser": [14, 15, 16, 18, 35, 36, 37, 38, 39, 41, 42, 43, 44, 46, 47, 48, 50, 51, 52, 59, 62, 64, 65, 66, 67, 69, 70, 71, 73, 74, 76, 77, 78, 79, 80, 81, 84], "hvem": [14, 42, 80], "overlevd": [14, 42, 80], "hvorfor": [14, 15, 16, 17, 18, 34, 35, 40, 41, 42, 43, 44, 47, 48, 50, 51, 62, 74, 78, 80], "overlevde_pros": [14, 80], "sum": [14, 15, 30, 42, 51, 73, 78, 80, 89], "2f": [14, 73, 78, 80, 85], "sletter": [14, 50, 66, 80], "886": [14, 80], "887": [14, 80], "888": [14, 80], "889": [14, 80], "890": [14, 80], "queenstown": [14, 80], "name": [14, 35, 62, 80], "length": [14, 80], "891": [14, 80], "dtype": [14, 42, 67, 80, 83], "object": [14, 67, 80, 83], "manglend": [14, 42, 80], "kolonnen": [14, 42, 66, 80], "isna": [14, 42, 80], "int64": [14, 42, 80], "fyller": [14, 42, 80], "alder": [14, 38, 42, 48, 59, 62, 80], "gjennomsnittet": [14, 42, 67, 69, 71, 80, 84], "mean": [14, 30, 42, 69, 80, 83, 89], "fillna": [14, 42, 80], "inplac": [14, 42, 67, 80, 83], "effekt": [14, 42, 80], "klass": [14, 42, 64, 70, 80], "kj\u00f8nn": [14, 42, 66, 80], "overlevelsessjansen": [14, 42, 80], "passasjerklass": [14, 42, 80], "countplot": [14, 42, 80], "palett": [14, 42, 66, 80], "ocean": [14, 42, 80], "d\u00f8de": [14, 42, 64, 80, 81], "overlevend": [14, 42, 80], "hvert": [14, 15, 16, 17, 35, 36, 47, 50, 51, 62, 66, 67, 69, 70, 73, 78, 79, 80, 87], "han": [14, 38, 46, 51, 70, 78, 80], "overrasken": [14, 80], "menn": [14, 42, 80], "s\u00e6rdele": [14, 42, 80], "d\u00e5rlige": [14, 42, 80], "odd": [14, 42, 80], "alderen": [14, 38, 42, 48, 59, 80], "passasjeren": [14, 42, 80], "sorter": [14, 36, 42, 50, 66, 67, 80], "aldersklass": [14, 42, 80], "voksen": [14, 42, 48, 80], "els": [14, 26, 34, 36, 41, 47, 48, 51, 80, 88], "barn": [14, 34, 42, 67, 80], "frivillig": [14, 15, 80], "erstatt": [14, 48, 77, 79, 80], "visualis": [14, 78, 80], "nye": [14, 18, 35, 39, 41, 43, 44, 50, 64, 65, 66, 67, 69, 74, 78, 79, 80, 84], "tell": [14, 36, 51, 66, 80], "forekomst": [14, 66, 80], "tilfel": [14, 65, 69, 71, 74, 76, 78, 80], "value_count": [14, 66, 80], "printer": [14, 35, 42, 47, 51, 62, 65, 80], "unng\u00e5": [14, 41, 47, 59, 80], "model": [14, 17, 18, 25, 30, 40, 42, 43, 44, 45, 51, 66, 67, 69, 70, 80, 83, 84, 89], "hvorvidt": [14, 42, 74, 80, 81], "overlev": [14, 42, 80], "overlevels": [14, 42, 80], "innsyn": [14, 42, 80], "uoversiktlig": [14, 42, 80], "teknisk": [14, 40, 42, 64, 80], "n\u00f8ye": [14, 36, 42, 66, 78, 80], "7653631284916201": [14, 80], "ok": [14, 18, 43, 80], "prosentandel": [14, 42, 80], "klart": [14, 42, 62, 80], "korrekt": [14, 36, 42, 62, 66, 80], "presisjon_d\u00f8d": [14, 80], "presisjon_overlev": [14, 80], "forventet": [14, 42, 80], "d\u00f8d": [14, 42, 44, 64, 80], "forgreining": [14, 42, 80], "max_depth": [14, 42, 80], "fysikken": 15, "jobber": [15, 41], "forenkled": 15, "begrenset": [15, 36], "end": [15, 65, 77, 82], "sv\u00e6rt": [15, 25, 36, 39, 40, 48, 51, 59, 62, 65, 66, 67, 69, 71, 73, 74, 78], "vanskelig": [15, 18, 34, 36, 38, 43, 69, 74, 79], "umulig": [15, 38], "\u00f8ke": [15, 70, 74], "modellkompleksiteten": 15, "mer": [15, 18, 22, 35, 36, 37, 41, 43, 44, 47, 48, 59, 62, 64, 69, 71, 73, 74, 78, 81], "virkelighetsn\u00e6r": 15, "fall": [15, 66, 71, 78, 79], "penn": 15, "papir": 15, "indikasjon": [15, 69], "framgangsm\u00e5ten": 15, "bevegelsen": [15, 25, 70, 78], "gravitasjonskreften": 15, "ma": [15, 40, 67, 78], "summen": [15, 22, 27, 30, 38, 47, 48, 49, 51, 59, 62, 66, 73, 78], "kreften": [15, 44, 78], "gravitasjonskraften": [15, 78], "tyngdeakselerasjonen": [15, 78], "havniv\u00e5": 15, "jorda": [15, 36, 44, 78], "gravitasjonslov": [15, 44], "klikk": [15, 41], "boksen": [15, 69], "begrunnelsen": 15, "gravitasjonskreft": 15, "ord": [15, 16, 17, 18, 39, 42, 43, 50, 59, 69, 78, 79], "forutsetning": [15, 34, 39, 43, 44, 70, 76, 78], "k_g": 15, "m_1m_2": 15, "r": [15, 18, 25, 32, 34, 36, 39, 43, 44, 47, 49, 59, 62, 65, 66, 70, 81, 84, 85, 88], "f_g": 15, "virker": [15, 44, 47, 51, 64, 78], "henholdsvi": [15, 44, 46, 47, 51, 59, 69, 73], "m_1": [15, 41, 44, 74], "m_2": [15, 44], "avstand": [15, 70, 74, 78], "tyngdesentr": 15, "gravitasjonskonstanten": [15, 44], "674": 15, "kg": [15, 22, 25, 51, 59, 78], "972": 15, "massesent": 15, "masssesenteret": 15, "km": [15, 44, 78], "punktlegem": 15, "6371000": [15, 85], "multiplisert": [15, 66, 73], "overfl": [15, 44], "varier": [15, 18, 34, 36, 39, 43, 51, 69, 73, 78, 79, 81, 84], "selvsagt": 15, "befinn": [15, 44, 51, 59, 74, 78], "endelig": [15, 51], "tidssteg": [15, 16, 17, 25, 39, 40, 44, 51, 70, 78, 79, 81], "verdi": [15, 16, 30, 36, 38, 39, 40, 41, 44, 46, 47, 50, 51, 59, 62, 65, 66, 69, 71, 73, 74, 78, 84], "farten": [15, 16, 17, 44, 59, 62, 71, 78], "posisjonen": [15, 44, 51, 70, 78], "lite": [15, 16, 17, 25, 36, 38, 47, 59, 73, 74, 78, 81, 84], "tidsrom": [15, 25, 39, 81], "s_t": 15, "v_t": 15, "kanskj": [15, 22, 36, 38, 39, 46, 47, 48, 51, 62, 64, 66, 69, 71, 73, 78], "v": [15, 16, 17, 25, 36, 40, 47, 51, 59, 62, 64, 65, 71, 77, 78, 86, 88], "tilsvarend": [15, 36, 42, 45, 47, 62, 67, 68, 69, 71, 73, 78], "hastigheten": [15, 74, 78], "v_": [15, 47, 49, 62], "a_t": 15, "ballen": [15, 25], "falt": [15, 51], "viss": [15, 16, 17, 36, 39, 51, 70, 74, 78, 79, 81], "scratch": 15, "antakels": [15, 44], "tatt": [15, 44, 59, 62], "v\u00e5re": [15, 36, 39, 51, 66, 67, 69, 71, 84, 86], "komment": [15, 17, 18, 43, 44, 73, 78, 79], "fart": [15, 23, 25, 44, 59, 62, 71, 78], "tillegg": [15, 16, 17, 35, 36, 39, 41, 50, 51, 59, 62, 64, 65, 69, 73, 74, 78, 81, 84], "gravitasjon": [15, 78], "krefter": [15, 78], "luftmotstand": [15, 78], "avhengig": [15, 16, 39, 44, 48, 69, 74, 78], "slag": [15, 16, 35, 36, 48, 50, 51, 59, 62, 66, 67, 69, 71], "faller": [15, 51, 78], "parameteren": [15, 16, 39, 64, 66, 67, 69, 78, 79, 81], "parameter": [15, 40, 79], "kvadrert": [15, 69], "positiv": [15, 69, 78], "retn": [15, 36, 70, 78], "nedov": [15, 70, 74, 81], "positivt": [15, 26, 36, 47, 48, 49, 69], "fortegn": [15, 41, 74], "negativt": [15, 26, 36, 47, 48, 49, 69], "bakken": [15, 25], "starth\u00f8yd": 15, "alternativ": [15, 69], "lagr": [15, 36, 45, 59, 65, 66, 84], "array": [15, 19, 29, 66, 71, 73, 78], "l\u00f8": [15, 17, 48, 71, 73, 77, 78], "programmeringspuslespillet": [15, 48], "puslespillet": [15, 47, 48, 71, 73], "steder": [15, 62, 67, 73], "rekkef\u00f8lgen": [15, 67, 78, 84], "angitt": 15, "entydig": 15, "angi": [15, 36, 50, 65, 69], "luftmotstandsmodellen": 15, "redegj\u00f8r": [15, 16, 17, 18, 43], "resultaten": [15, 34, 39, 44, 45, 62, 69, 71, 73, 78, 81], "h": [15, 16, 29, 35, 44, 47, 51, 59, 62, 65, 68, 73], "kastet": 15, "oppov": [15, 74, 78], "startfart": [15, 25, 44, 51, 59, 78], "istedenfor": [15, 16, 35, 40, 41, 44, 47, 51, 59, 62, 64, 65, 66, 67, 68, 69, 70, 73, 78], "slipp": [15, 79], "luftmotstanden": [15, 78], "ball": [15, 78], "vei": [15, 47, 59], "st\u00f8rrelser": [15, 36, 64, 65], "differenslikn": [15, 16, 40, 78, 79], "st\u00f8rrels": [15, 18, 36, 43, 46, 47, 59, 62, 69, 74], "avheng": [15, 16, 17, 39, 48, 51, 78, 81], "st\u00f8rrelsen": [15, 40, 42, 66, 69, 78, 79], "annet": [15, 36, 39, 47, 50, 59, 62, 64, 66, 68, 70, 74, 78, 79, 81], "tallf\u00f8lger": [15, 79], "liten": [15, 16, 17, 36, 39, 40, 44, 59, 66, 71, 74, 77, 78], "innf\u00f8r": [15, 18, 39, 43, 46, 50, 51, 62, 65, 66, 68, 69, 73, 74, 79, 81], "numerisk": [15, 16, 17, 23, 35, 40, 74, 78], "g\u00e5r": [15, 16, 36, 38, 39, 40, 41, 44, 45, 46, 47, 48, 51, 59, 62, 64, 66, 67, 73, 74, 78, 81], "utgangspunktet": [15, 16, 17, 73, 84], "kv": [15, 78], "flest": [15, 16, 40, 41, 59, 62, 64, 66, 78], "praktisk": [15, 16, 65, 78], "situasjon": [15, 16, 44, 66, 78], "likning": [15, 16, 17, 44, 78], "tilstanden": [15, 16, 40, 78, 79], "system": [15, 16, 40, 44, 51, 52, 69, 78, 79, 81], "etterp\u00e5": 15, "startbetingels": [15, 16, 17, 25, 32, 40, 51, 78], "startposisjon": [15, 25, 44, 51, 78], "teorien": [15, 16, 46, 51, 62, 65, 66, 69], "datamaskin": [15, 16, 36, 40, 47, 50, 51, 59, 67, 68, 71, 74, 78], "mv": [15, 60, 78], "ms": [15, 78], "annerled": [15, 78], "graden": [15, 69], "diskretis": 15, "skiller": [15, 46, 47, 51, 66, 69, 74], "pass": [15, 47, 48, 84], "initalbetingels": [15, 16, 17], "y_0": [15, 16, 17, 78], "funksjonsverid": [15, 16, 17], "nemlig": [15, 16, 17, 38, 39, 46, 51, 62, 64, 66, 67, 69, 71, 73, 78, 81], "definisjonen": [15, 16, 17, 71, 73, 78], "tiln\u00e6rmer": [15, 16, 17, 51, 69, 71, 78], "grenseverdien": [15, 16, 17, 71, 78], "delta": [15, 16, 17, 40, 71, 74, 78, 88], "x_0": [15, 16, 17, 23, 40, 70, 74, 78], "initialbetingelsen": [15, 16, 17, 44, 78], "startfarten": [15, 16, 17, 59], "t_0": [15, 16, 17, 78], "akselerasjonen": [15, 16, 17, 25, 36, 44, 51, 59, 78], "tidssteget": [15, 16, 17, 78], "husk": [15, 16, 17, 36, 38, 47, 50, 51, 59, 62, 66, 67, 68, 71, 78, 81], "verken": [15, 16, 17, 36, 48, 78, 81], "enest": [15, 16, 17, 36, 78, 81], "nettopp": [15, 16, 17, 36, 73, 78], "pr\u00f8ver": [15, 16, 17, 48, 62, 65, 78], "algebra": [15, 16, 17, 67, 78], "omformet": [15, 16, 17, 78], "begg": [15, 16, 17, 44, 48, 51, 65, 69, 78, 79], "sider": [15, 16, 17, 51, 78], "alein": [15, 16, 17, 78], "euler": [15, 16, 17, 25, 44, 81, 82], "j": [15, 22, 44, 47, 51, 59, 62, 77, 88], "bevegelseslikningen": 15, "v_0": [15, 59], "vt": 15, "simuler": [15, 16, 17, 18, 25, 34, 39, 43, 44, 70, 78, 79, 81], "todimensjonalt": 15, "kast": [15, 31, 34, 70, 87], "forsk": 16, "artsmangfoldet": 16, "utsatt": [16, 44], "\u00f8kosystem": [16, 51, 78], "populasjon": [16, 18, 39, 40, 43, 48, 69, 78, 81], "bevar": 16, "omstendighet": 16, "tiltak": [16, 36, 79, 81], "populasjonsdynamikk": [16, 40], "populasjonsmodel": [16, 79], "populasjonsst\u00f8rrels": [16, 18, 39, 43, 78, 81], "differenslikning": [16, 40, 78], "forveksl": 16, "nest": [16, 36, 39, 41, 50, 51, 70, 71, 78, 81], "foreg\u00e5end": [16, 51], "\u00e5penbart": [16, 64, 73], "p_t": 16, "p_": 16, "populasjonsst\u00f8rrelsen": 16, "n\u00e5v\u00e6rend": [16, 39], "utviklingen": [16, 17, 18, 35, 39, 43, 47, 51, 69, 78, 79], "timer": [16, 51, 64, 78], "per": [16, 18, 39, 43, 62, 69, 78, 79, 81, 82, 85], "time": [16, 27, 44, 51, 65, 88], "alltid": [16, 36, 64, 67, 71, 78], "b\u00e6reevn": [16, 44, 78], "ledden": [16, 18, 39, 43, 73, 79], "ettersom": [16, 35, 66, 67, 78], "\u00f8ker": [16, 36, 39, 44, 51, 73, 79, 81], "minker": [16, 79], "valgfri": [16, 59, 65, 78], "populasjonsendringen": 16, "oftest": [16, 78], "vekst": [16, 51, 78], "sier": [16, 18, 36, 38, 39, 40, 42, 43, 51, 62, 64, 74, 78, 79, 81, 82, 84], "faktoren": [16, 17, 39, 44, 79, 81], "newton": [16, 17, 40, 44, 71, 73, 76], "populasjonen": [16, 44, 48, 69, 78, 79, 81], "nytt": [16, 17, 35, 36, 41, 47, 48, 51, 71, 74], "implementert": [16, 41, 78], "fyll": [16, 36, 37, 39, 40, 42, 51, 64, 65, 73, 74, 79], "populasjonsdynamikken": 16, "hare": 16, "gaup": [16, 50], "ah": 16, "ch": 16, "dh": 16, "eg": 16, "parametern": [16, 39, 43, 78, 79, 81], "koeffisienten": [16, 39, 62, 69, 84], "beti": 16, "betydningen": [16, 18, 39, 43, 79], "antakeligvi": 16, "verifisert": 16, "gauper": [16, 78, 79], "harer": [16, 51], "canada": 16, "1935": 16, "dynamikken": 16, "nb": [16, 50], "lett": [16, 36, 41, 51, 52, 78], "tilpass": [16, 39, 66, 67, 68, 69, 81, 84], "manuelt": [16, 66], "tilpasn": [16, 79, 84], "jobbet": 16, "gradvi": [16, 17, 18, 43, 67, 74, 79], "konklusjon": [16, 17, 18, 43, 44, 48], "kinetikk": 17, "omr\u00e5d": [17, 69], "kjemien": 17, "handler": [17, 62, 71], "reaksjon": [17, 35, 44, 51, 78], "forholdet": [17, 35, 70], "reaktant": [17, 35, 44], "produkt": [17, 35, 44, 74], "empirisk": [17, 44, 69], "reell": [17, 18, 39, 43, 47, 48, 59, 62, 78, 79, 81], "utledning": 17, "reaksjonsraten": 17, "definer": [17, 35, 36, 40, 47, 50, 51, 59, 60, 62, 64, 68, 71, 73, 74, 76, 77, 78, 84], "endringa": 17, "konsentrasjonen": [17, 35, 44, 48, 62, 65, 69, 74], "reaktanten": 17, "reduser": [17, 18, 43, 51, 70], "stoffen": 17, "deltar": 17, "reaksjonen": [17, 35, 44, 74], "ratelov": 17, "hydrogengass": 17, "jod": 17, "gassfas": 17, "relativt": [17, 51, 74], "merk": [17, 19, 35, 36, 39, 44, 47, 48, 50, 62, 67, 71, 73, 78, 81], "rateloven": 17, "st\u00f8kiometrisk": 17, "likevektsreaksjon": 17, "skrive": [17, 34, 35, 38, 40, 46, 47, 48, 50, 51, 52, 59, 60, 62, 64, 65, 66, 67, 68, 69, 71, 73, 74, 78], "irreversibel": 17, "lave": [17, 36], "h_2": 17, "i_2": 17, "rightarrow": [17, 35, 44, 71], "2hi": 17, "k_r": 17, "fortel": [17, 34, 35, 39, 42, 44, 45, 51, 74, 78, 79, 84], "symbolet": [17, 48], "hi": [17, 35], "ratekonstanten": [17, 44], "eksempl": [17, 35, 36, 38, 46, 51, 62, 64, 65, 66, 70, 77], "tilstand": [17, 71], "c_": [17, 62, 77], "dannels": 17, "grader": [17, 18, 36, 38, 43, 47, 51, 66, 69], "celsiu": [17, 29, 66, 71, 82, 85], "grunnen": [17, 39, 79], "linjen": [17, 42, 66, 67], "750": [17, 48], "sekund": [17, 25, 36, 46, 51, 59], "h\u00f8ye": [17, 36], "molekyl": [17, 35, 44, 78], "kollider": 17, "rive": 17, "reversibel": 17, "beskrevet": [17, 39, 70, 81], "motsatt": [17, 41, 71, 73, 74, 78], "bakov": [17, 50, 71], "andreorden": [17, 78], "hydrogenjodid": 17, "framov": [17, 38, 51, 71], "likevektskonstanten": 17, "likevektskontstanten": 17, "reaksjonshastigheten": 17, "likevekt": [17, 48], "smittesprendn": [18, 43], "sykdomm": [18, 43], "smitted": [18, 25, 32, 39, 40, 43, 78, 81, 84], "indivi": [18, 39, 43], "incept": [18, 39, 43], "i_": [18, 39, 40, 43, 78, 81], "i_t": [18, 39, 43], "ai_t": [18, 39, 43], "spike": [18, 43], "proteinet": [18, 43], "coronaviruset": [18, 43], "gir": [18, 36, 38, 41, 43, 44, 47, 48, 50, 51, 52, 59, 60, 62, 65, 66, 67, 68, 69, 70, 71, 73, 74, 78, 81, 84, 85], "viruset": [18, 43, 44], "karakteristisk": [18, 43], "form": [18, 41, 43, 44, 51, 69, 78, 84, 85], "you": [18, 43, 69, 88], "appear": [18, 43], "run": [18, 43, 86], "jupyterlab": [18, 43], "javascript": [18, 36, 43], "fail": [18, 43], "load": [18, 42, 43], "some": [18, 43], "other": [18, 43, 66], "reason": [18, 43], "need": [18, 43, 69], "instal": [18, 43, 67], "3dmol": [18, 43], "extens": [18, 43], "labextens": [18, 43], "jupyterlab_3dmol": [18, 43], "py3dmol": [18, 43], "view": [18, 43], "0x21d5d6892e0": 18, "symbolen": [18, 43, 48], "smitteutviklingen": [18, 43], "uker": [18, 39, 43, 81], "157759": [18, 32, 39, 43, 81], "smitter": [18, 32, 44], "uk": [18, 39, 43, 78, 81], "trykk": [18, 36, 37, 38, 43, 62, 86], "hintet": [18, 41, 43], "pseudokod": [18, 40, 41, 43, 48, 74], "kontaktr": [18, 39, 43, 81], "spare": [18, 39, 43, 47, 50, 52, 78, 81], "gjenta": [18, 36, 38, 40, 41, 43, 46, 47, 51, 59, 64, 66, 70, 73, 74, 79, 84], "tid_slutt": [18, 25, 39, 43, 44, 78, 81], "vha": [18, 43, 60], "smitteraten": [18, 81], "enhet": [18, 36, 43, 44, 59, 66, 69, 78], "mottakelig": [18, 25, 32, 39, 43, 81], "suscept": [18, 39, 43, 81], "smittet": [18, 39, 43, 81], "modifiser": [18, 35, 43, 46, 47, 59, 66, 68], "ai_ts_t": [18, 43], "endret": [18, 43], "noks\u00e5": 18, "variabel": [18, 36, 38, 39, 48, 50, 51, 60, 62, 66, 69, 74, 84], "l\u00f8kka": [18, 34, 36, 41, 46, 47, 51, 66, 70, 71, 74, 78], "merkelapp": [18, 39, 43, 68, 71, 81, 86], "i_0": 18, "legger": [18, 34, 39, 43, 44, 47, 50, 51, 64, 66, 68, 71, 74, 78, 81], "muligheten": [18, 36, 37, 38, 43, 44, 51, 73], "frisk": [18, 25, 32, 39, 43, 81], "hurra": [18, 43, 48], "bedringsr": [18, 32, 43, 81], "bi_t": [18, 43], "tilfellet": [18, 43, 44, 62, 67], "recov": [18, 39, 81], "simul": [18, 34, 43, 44, 70], "fornutftig": [18, 43], "eksperimenter": [18, 38, 43], "fastsett": [18, 43], "parametren": [18, 43, 44, 69, 74, 84], "l\u00f8pend": [18, 43], "sidemenyen": [18, 43], "influensaviruset": [18, 43], "h3n2": [18, 43], "759": [18, 43, 81], "generelt": [18, 41, 43, 73, 74], "vaksin": [18, 43], "betraktelig": [18, 43], "effekten": [18, 42, 43, 81], "vaksinasjon": [18, 43, 81], "kjemi": [19, 30, 35], "eksperimentelt": [19, 44, 78], "fag": [19, 51], "delen": [19, 35, 37, 59, 71, 74], "emnet": [19, 37, 71, 74], "filer": [19, 30, 66], "read": [19, 66], "loadtxt": [19, 23, 30, 66], "vurder": [19, 35, 41, 74, 78], "ferdiglagd": 19, "egn": [19, 36, 39, 66, 78], "statistikkmodul": 19, "vise": [19, 35, 36, 44, 51, 66, 68, 73, 81, 86], "kortversjonen": 19, "titrerkurven": [19, 66], "egned": 19, "aksetitl": [19, 44, 68], "pynt": [19, 20, 66, 68], "plottet": [19, 20, 34, 35, 44, 66, 68, 69, 78], "interpol": 19, "titreringsdataen": 19, "definisjonsomr\u00e5det": 19, "listedataen": 19, "progammet": 19, "biblioteket": [20, 35, 44, 47, 59, 65, 66, 67, 68, 69, 71, 73, 74, 77, 78, 84], "visualisering": [20, 43, 45, 66, 68, 69], "co": [20, 29, 59, 62, 71, 73, 77, 78, 79, 88], "variabeltyp": [22, 60], "flyttal": [22, 47, 48, 49, 59, 60, 66, 70, 78, 87], "streng": [22, 47, 49, 59], "hei": [22, 36, 47, 59, 62, 88], "pi": [22, 31, 36, 44, 47, 49, 59, 62, 73, 77, 78, 85, 88], "3e8": [22, 51, 62], "lyshastighet": 22, "vakuum": [22, 51, 62], "float": [22, 26, 41, 47, 48, 59, 62], "oversiktlig": [22, 41, 44, 45, 62], "8e": 22, "oksonium": [22, 26, 48, 65], "h3o": [22, 26, 48, 59, 65], "mol": [22, 26, 35, 62], "ph": [22, 26, 35, 47, 48, 59, 60, 62, 65, 66], "log10": [22, 26, 28, 48, 59, 62, 65, 78], "l\u00f8sninga": [22, 26, 73, 78], "round": [22, 26, 30, 48, 51, 62, 66, 69], "def": [23, 24, 28, 29, 30, 41, 47, 62, 64, 65, 68, 70, 71, 73, 74, 76, 78, 84, 88], "return": [23, 24, 28, 29, 30, 41, 47, 62, 64, 65, 68, 70, 71, 73, 74, 76, 78, 84, 88], "fder": [23, 71, 74, 78], "ab": [23, 31, 36, 71, 74, 88], "10000000000000187": 23, "01": [23, 29, 47, 62, 65, 71, 78], "010000000000000675": 23, "001": [23, 44, 51, 71], "0009999999996974651": 23, "999999917198465e": 23, "05": [23, 51, 71], "0000013929811757e": 23, "06": [23, 71], "999243673064484e": 23, "07": [23, 71], "0108780656992167e": 23, "21549419418443e": 23, "09": [23, 71], "6548074199818075e": 23, "00017780116468202323": 23, "0015985556747182272": 23, "22044604925031308": 23, "puslespil": [23, 48], "skiprow": [23, 30, 66, 81], "delimit": [23, 66, 67, 69, 81], "41530332": 23, "27245747": 23, "10837905": 23, "89006706": 23, "79347005": 23, "52289161": 23, "27799927": 23, "08854176": 23, "94216878": 23, "86617154": 23, "66880686": 23, "53207626": 23, "30728764": 23, "17164433": 23, "97476839": 23, "62386432": 23, "38963929": 23, "14735903": 23, "07900081": 23, "69402869": 23, "95216465": 23, "02847067": 23, "13767422": 23, "22191004": 23, "dy": [23, 71, 88], "x_n": [23, 40, 70, 73, 74], "A": [23, 36, 44, 47, 48, 50, 59, 62, 70, 73, 88, 89], "itsatrap": 23, "scipi": [23, 44, 71, 73, 74, 76, 78, 84], "integr": [23, 44, 73, 76, 77, 78], "simp": [23, 73, 76], "trapz": [23, 73, 76], "quad": [23, 73], "misc": [23, 71, 76], "deriv": [23, 35, 71, 76, 77], "simpson": [23, 76], "trape": [23, 73, 76], "kvadd": 23, "500000000000002": 23, "4988010832439613e": 23, "while": [24, 25, 27, 29, 36, 46, 47, 62, 70, 74, 78, 88], "elif": [24, 26, 36, 47, 48, 51, 62, 64, 74], "kinematikklikningen": [25, 62], "ekvival": 25, "framgangsm\u00e5t": [25, 35, 44, 66, 70, 71, 78], "v0": [25, 59, 62, 78], "starttid": [25, 82], "tyngdeakselerasjon": [25, 78], "luftmotstandskoeffisienten": [25, 78], "utleda": 25, "n2": 25, "kinematikklikn": 25, "425710000007424": 25, "ga": [25, 69, 88], "diskret": [25, 68, 69, 71, 78], "urealistisk": 25, "resultat": [25, 43, 44, 48, 67, 70, 71, 73, 77], "kontinuerlig": [25, 39, 41, 51, 68, 69, 71, 74, 79], "smitten": [25, 39, 81], "aS": 25, "bi": 25, "mennesk": [25, 38, 44, 48, 51, 79], "i0": 25, "disponert": 25, "r0": 25, "friskmeldt": [25, 43, 81], "dager": [25, 39, 47, 68], "simuleringsl\u00f8kk": 25, "sder": 25, "ider": 25, "rder": 25, "tallet": [26, 36, 47, 48, 50, 51, 59, 64, 70], "null": [26, 36, 41, 47, 48, 49, 71, 74, 78, 83, 89], "basisk": [26, 47, 48], "sur": [26, 47, 48], "n\u00f8ytral": [26, 47, 48], "sleep": [27, 36], "kul": [27, 36], "paus": [27, 36], "utskrift": 27, "partal": [27, 29, 36, 46, 47, 49, 51, 65, 73], "factori": 27, "fakultet": [27, 51], "6439335666815615": 27, "gratuler": [28, 62], "navn": [28, 35, 38, 42, 59, 62, 81], "jesper": 28, "dyr": [29, 47, 50, 66, 67], "katt": 29, "hund": [29, 67], "axolotl": 29, "koala": 29, "gorilla": 29, "stumpneseap": [29, 47, 50], "nebbdyr": 29, "bever": 29, "arraymultiplikasjon": 29, "exp": [29, 51, 74, 77, 84, 88], "color": [29, 30, 34, 38, 47, 51, 64, 68, 69, 71, 74, 84, 88], "firebrick": [29, 71], "hotpink": 29, "navi": [29, 71, 84], "grid": [29, 30, 68, 69, 78, 81, 82, 84, 86, 88], "forestgreen": 30, "md": 30, "januar": 30, "1749": 30, "data_temp": 30, "temp": [30, 62], "snitt": [30, 69, 70], "avvik": [30, 71, 84], "bar": [30, 69, 88], "sum_": [30, 51, 69, 73], "x_i": [30, 69, 73], "karakter": 30, "promod": 30, "fysikk": 30, "biologi": 30, "tekforsk": 30, "r1": 30, "pie": 30, "polyfit": [30, 69, 84], "tilpasset": [30, 69, 84], "5059584318309436": 31, "antall_sekser": 31, "antall_kast": 31, "relfrek_sek": 31, "relativ_frekven": 31, "166646": 31, "prikker": [31, 48], "innafor": 31, "sirkelen": [31, 47, 59, 70], "1000000": 31, "totalt": [31, 38, 46, 51, 66, 67, 69], "a_kvadrat": 31, "a_sirkel": 31, "144408": 31, "002815346410206754": 31, "10000000": 31, "1413156": 31, "00027705358979313033": 31, "restituert": 32, "syke": 32, "mont": 34, "carlo": 34, "simulering": [34, 39, 78, 79], "kasinoet": [34, 70], "nedarv": 34, "\u00f8yenfarg": 34, "baser": [34, 36, 70], "plukker": [34, 66, 67, 70], "allel": [34, 70], "koder": 34, "mor": [34, 70], "far": [34, 70], "plukk": [34, 65, 66], "choic": [34, 36, 70], "genotype_far": [34, 70], "programsnutten": [34, 65], "trekker": [34, 36, 69, 70, 73], "genotyp": [34, 48, 70], "fenotyp": 34, "barnet": [34, 67], "syn": [34, 38, 40], "start": [34, 35, 36, 38, 41, 47, 51, 59, 65, 70, 74, 76, 81, 89], "genotype_mor": [34, 70], "allel_mor": [34, 70], "allel_far": [34, 70], "bb": [34, 70], "bl\u00e5": [34, 48, 64, 65], "brune": 34, "genotypen": [34, 48], "fenotypen": 34, "\u00f8yne": 34, "kj\u00f8re": [34, 41, 47, 51, 52, 59, 60, 62, 65, 71, 78], "simuleringen": [34, 70, 79], "trodd": 34, "kj\u00f8ring": 34, "kj\u00f8ringen": [34, 36], "valider": [34, 39, 42, 81], "krysningsskjema": 34, "nedarvingen": 34, "modifis": [34, 35, 36, 38, 41, 46, 51, 59, 62, 65, 68, 74, 78], "lagrer": [34, 36, 39, 44, 46, 47, 59, 67, 68], "rel": [34, 52], "frekvensen": [34, 51], "bl\u00e5\u00f8yde": [34, 70], "sin": [34, 36, 47, 49, 66, 68, 69, 71, 73, 74, 78, 84, 88], "kj\u00f8rer": [34, 36, 46, 47, 51, 59, 67, 78], "antallet": [34, 36, 48, 62, 66, 69, 70, 73, 78], "diskusjon": 34, "foreldr": 34, "usannsynlig": [34, 39, 81], "blaa": [34, 70], "frekven": [34, 51, 62, 66, 87], "antall_barn": 34, "relativ": [34, 66, 73, 87], "axhlin": [34, 68, 74], "red": [34, 64, 68, 69, 74, 86, 88], "str": [34, 47, 59], "dihybrid": 34, "krysn": 34, "fargen": [34, 48], "formen": [34, 47, 67, 69, 74, 76, 84], "erter": 34, "gener": [34, 66], "krysningen": 34, "gul": [34, 48], "gr\u00f8nn": [34, 48, 65, 68], "rynket": 34, "glatt": [34, 70], "genvarianten": 34, "dominant": 34, "sannsynligheten": [34, 70], "gr\u00f8nne": 34, "avkom": 34, "mangler": [34, 37, 39, 42, 64, 66, 67, 73, 74, 79], "plante1_i": 34, "plante1_r": 34, "plante2_i": 34, "plante2_r": 34, "gr\u00f8nne_rynket": 34, "antall_avkom": 34, "allel1": 34, "allel2": 34, "allel3": 34, "allel4": 34, "yyrr": 34, "yryr": 34, "yrry": 34, "ryyr": 34, "rryi": 34, "ryri": 34, "green": [34, 64, 68, 86], "ment": [35, 44], "grunnleggend": [35, 37, 44, 46, 51, 62, 64, 65, 66, 69, 74, 78], "samtidig": [35, 36, 66, 68], "setter": [35, 36, 40, 41, 44, 62, 73, 74, 79], "bevisst": [35, 79], "ubevisst": 35, "dekomponer": 35, "best\u00e5r": [35, 36, 44, 50, 62, 67], "problemet": [35, 38, 51, 64, 78], "analyser": [35, 67, 69], "henger": 35, "jeg": [35, 62, 70, 77], "syntetiser": 35, "l\u00f8ste": 35, "effektivt": [35, 37], "enkler": [35, 36, 39, 41, 62, 64, 69, 74, 78, 79], "knyttet": 35, "uavhengig": [35, 78, 84], "programfag": 35, "bibliotek": [35, 47, 60, 62, 66, 68, 74, 78, 81, 86], "mendeleev": 35, "chemlib": 35, "installer": [35, 67], "kjent": [35, 36, 51, 67], "z": [35, 36, 44, 64, 74, 76, 77, 88], "symbol": [35, 47, 48, 51, 59, 77], "grupp": [35, 36], "group_id": 35, "atomnumm": 35, "neon": 35, "ne": 35, "struktur": [35, 37, 44, 46, 47, 51], "periodenummeret": 35, "enten": [35, 36, 48, 51, 66, 67, 73, 79, 81], "tipp": [35, 74], "kommandoen": [35, 38, 46, 47, 48, 50, 59, 62, 64, 65, 66, 68], "period": [35, 51], "dokumentasjonen": 35, "lettest": 35, "grunnstoffen": [35, 65], "kombiner": [35, 44], "l\u00f8kker": [35, 36, 37, 62, 65, 66, 71], "elektronegativitet": [35, 48], "atomic_numb": 35, "electroneg": 35, "gjord": [35, 71, 76], "aksen": [35, 44, 73, 74, 78], "_y_aksen": 35, "trenden": [35, 81], "gjennomg\u00e5": [35, 60, 66], "navnelist": 35, "arn": [35, 78], "bjarn": 35, "mia": 35, "pia": 35, "m\u00e5ten": [35, 47, 51, 66, 79], "kokepunktet": [35, 65], "halogenen": 35, "kokepunkt": [35, 65], "\u00e5ret": 35, "grunnstoffet": [35, 48, 65, 66], "oppdaget": [35, 48], "discovery_year": 35, "atomradiu": 35, "stoff": [35, 51, 62], "elektronegativiteten": 35, "ioniseringsenergien": 35, "elektronaffiniteten": 35, "stoffet": [35, 51, 62, 77], "ioniseringsenergi": 35, "ionenergi": 35, "elektronaffinitet": 35, "electron_affin": 35, "illustrerend": 35, "kreve": [35, 36, 74], "fjern": [35, 50, 67, 69], "elektronen": [35, 36], "kjemisk": [35, 44, 51, 78], "forbindels": [35, 52], "compound": 35, "butan1ol": 35, "c4h9oh": 35, "forbindelsen": 35, "gram": [35, 62], "get_amount": 35, "prosentvi": [35, 36, 39, 79], "hydrogen": [35, 65], "ammoniakk": 35, "percentage_by_mass": 35, "natriumsulfat": 35, "na2so4": 35, "formelenhet": 35, "mole": 35, "nh3": 35, "molecul": 35, "1e24": 35, "6243271319293604e": 35, "026982178271251833": 35, "599017848710924": 35, "04099999999997": 35, "02e": 35, "6611295681063123": 35, "290697674418603": 35, "nacl": 35, "metanol": 35, "hcl": 35, "balansert": 35, "balanser": 35, "reaction": 35, "h2": 35, "i2": [35, 50], "formula": 35, "reaksjonslikningen": [35, 44], "is_balanc": 35, "sjekker": [35, 47, 48, 64, 71, 74], "balanc": 35, "1h\u2082": 35, "1i\u2082": 35, "1h\u2081i\u2081": 35, "2h\u2081i\u2081": 35, "klassen": [35, 64], "definert": [35, 47, 51, 62, 64, 69, 73, 78], "resten": [35, 51, 59, 67], "reaksjonslikning": [35, 44], "c_2h_6": 35, "o_2": [35, 44], "co_2": [35, 36], "h_2o": 35, "nh_3": 35, "NO": 35, "n_2": 35, "mg_3n_2": 35, "kvantitativ": 35, "analysemetod": 35, "analytten": 35, "tilsett": 35, "titranten": 35, "byrett": 35, "noter": 35, "undervei": [35, 44, 46, 47, 51, 59, 74, 81], "visst": [35, 36, 46, 47, 51, 62], "volum": [35, 64, 66], "titrant": 35, "titreringskurv": 35, "svak": 35, "base": 35, "ekvivalenspunktet": 35, "brattest": 35, "stoffmengden": [35, 62], "ekvivalent": 35, "glykolsyr": 35, "naoh": [35, 66], "s\u00f8rg": 35, "volumet": [35, 47, 49, 62, 73], "hvilket": [35, 36, 41, 48, 51, 62, 74], "tilsvar": [35, 67, 69, 74], "enkl": [36, 38, 46, 51, 59, 60, 64, 67, 74, 78], "lider": 36, "d\u00e5rlig": [36, 67], "rykt": 36, "milj\u00f8sammenheng": 36, "st\u00f8y": 36, "giftig": 36, "avfal": 36, "problemen": [36, 51], "teknologiproduksjon": 36, "potensielt": 36, "milj\u00f8problem": 36, "framtid": 36, "ressurs": [36, 37, 44], "dekk": 36, "behov": [36, 44, 66], "plastfanger": 36, "havet": 36, "sporer": 36, "kamera": 36, "kartlegg": 36, "biologisk": 36, "mangfoldet": 36, "intelligent": 36, "avfallsanlegg": 36, "plasttyp": 36, "gjenvinn": 36, "fornuftig": 36, "energitap": 36, "teknologien": 36, "mennesken": [36, 44, 48], "valg": [36, 48, 66, 67], "essensielt": 36, "sikr": [36, 48], "teknologisk": 36, "mikrokontrol": 36, "kret": 36, "komponenten": [36, 65], "transistoren": 36, "styrer": 36, "str\u00f8mmen": 36, "cpu": 36, "central": 36, "process": 36, "hundretal": 36, "million": 36, "transistor": 36, "ja": [36, 48], "bryter": 36, "oversett": [36, 48, 59], "spr\u00e5k": [36, 50, 64, 78], "datamaskinen": [36, 38, 46, 47, 51, 67, 68, 70, 71, 73, 78], "tallsystemet": 36, "bin\u00e6r": 36, "totallsystemet": 36, "tungvint": 36, "instruksjon": 36, "heldigvi": [36, 66], "modern": [36, 64], "programmeringsspr\u00e5k": [36, 59, 64], "kompil": 36, "arduino": 36, "raspberri": 36, "utrolig": [36, 47, 68], "utstyr": 36, "mikronkontrollern": 36, "kraftig": 36, "prosessor": 36, "raspberi": 36, "laver": 36, "kapasitet": [36, 64], "gjengjeld": 36, "mikrokontrollern": 36, "designa": 36, "britisk": 36, "selskapet": 36, "bbc": 36, "ungdomm": 36, "sendt": [36, 85], "grati": 36, "grunnskol": 36, "ideel": 36, "foreningen": 36, "l\u00e6r": 36, "kidsa": 36, "vitensentren": 36, "sparebankstiftelsen": 36, "norg": [36, 78, 79], "an": [36, 39, 62, 66, 78, 81, 86], "blokkbasert": 36, "kodesnutt": [36, 38, 48], "flytt": [36, 70], "ferdigdefinert": 36, "blokker": 36, "logisk": [36, 39, 47, 48, 69, 71], "rekkef\u00f8lg": [36, 47, 65, 66], "tekst": [36, 47, 52, 59, 66], "bygd": 36, "komponent": [36, 64], "figuren": [36, 41, 64, 68, 73, 74], "usb": 36, "tilkobl": 36, "ly": [36, 48], "utgj\u00f8r": [36, 81, 84], "skjerm": 36, "knappen": [36, 38], "styre": 36, "sekvens": 36, "inngang": 36, "hovedinngang": 36, "eksternt": 36, "merka": 36, "3v": 36, "gnd": 36, "ground": 36, "batteriinngang": 36, "batteripakka": 36, "aa": [36, 48], "batteri": 36, "omstartsknapp": 36, "bluetooth": 36, "innebygd": [36, 47, 62, 77], "antenn": 36, "blant": [36, 59, 64, 66, 74, 78, 81], "kommuniser": 36, "norskprodusert": 36, "lettvekterprosessor": 36, "lavt": 36, "str\u00f8mforbruk": 36, "lav": [36, 71], "midlertidig": 36, "minn": 36, "ram": 36, "lagringsminn": 36, "flash": 36, "kompass": 36, "akseleromet": 36, "retningen": [36, 70], "prosjekten": 36, "seiner": [36, 42, 47, 51, 66, 69, 79], "blokkspr\u00e5ket": 36, "menyer": 36, "puslespillend": 36, "knagger": 36, "blokka": 36, "putt": [36, 46, 59], "inni": [36, 38, 48, 51, 62, 64, 66, 70, 78], "variabelen": [36, 46, 47, 51, 59, 62, 66, 67, 69, 78, 81, 84], "vilk\u00e5r": [36, 37, 62, 64], "inntreff": [36, 70], "inntraff": 36, "teksten": [36, 47, 59], "microbit": 36, "displai": [36, 52], "scroll": 36, "spesialfunksjon": 36, "laster": 36, "ruller": 36, "bokstav": [36, 59, 77], "isteden": [36, 44, 45, 65], "evig": 36, "l\u00f8kke": [36, 46, 47, 51, 62, 65, 78], "hjert": 36, "imag": 36, "heart": 36, "leng": [36, 41, 44, 46, 47, 51, 74], "sant": [36, 46, 47, 48, 51, 73], "usant": 36, "nesten": [36, 38, 44, 85], "filosofisk": 36, "aldri": [36, 39, 44, 74, 81], "verden": [36, 44, 64, 67], "stopp": 36, "betingels": [36, 39, 47, 48, 79], "kodesnutten": 36, "farg": [36, 48, 64, 65], "pusl": [36, 47], "brikk": 36, "raskt": [36, 51, 68, 74, 78], "innom": 36, "programmeringskonsept": 36, "fullt": [36, 64], "lampen": 36, "rull": 36, "kodeeksempel": 36, "ghost": 36, "lyse": 36, "komplisert": [36, 64], "internett": [36, 44, 45, 47, 66, 68], "parent": [36, 62, 86], "pausen": 36, "millisekund": 36, "t\u00f8mme": 36, "clear": 36, "omtrent": [36, 44, 50, 51, 66, 73, 74, 78, 79, 81, 86], "blokkprogrammet": 36, "beslutning": 36, "selvf\u00f8lgelig": [36, 39, 71, 79], "bytt": [36, 59, 66, 67, 73], "knapp": 36, "button_a": 36, "is_press": 36, "button_b": 36, "tegner": [36, 38, 46, 51, 65, 68], "trykker": 36, "fin": [36, 74], "mulighet": [36, 47, 66, 68, 76, 81], "get_press": 36, "motta": 36, "blokkprogram": 36, "meld": [36, 64], "spesiel": [36, 59, 64], "kanal": 36, "kollisjon": [36, 44], "meldingen": 36, "funksjonaliteten": [36, 84], "sl\u00e5r": 36, "radioen": 36, "group": [36, 89], "kanalen": 36, "receiv": 36, "beskj": [36, 48, 50, 59, 74], "hemmelig": 36, "fest": 36, "inngangen": 36, "konsentrer": 36, "utgangen": 36, "formet": 36, "rund": [36, 51, 65], "hull": 36, "repeter": [36, 46, 51, 65], "motstand": 36, "elektrisk": 36, "potensiel": 36, "desto": [36, 67, 69, 71, 84], "h\u00f8yer": [36, 66, 73, 74, 84], "ladning": 36, "h\u00f8y": [36, 66, 71, 81], "f\u00f8re": 36, "bevegels": [36, 71], "elektron": [36, 51, 62], "beveg": [36, 44, 70, 74], "u": [36, 64, 65, 77, 78, 79], "m\u00e5le": [36, 45, 69, 73, 84], "volt": 36, "punkt": [36, 41, 71, 74], "amper": 36, "igjennom": [36, 47, 51, 74, 78], "leder": 36, "kobbertr\u00e5d": 36, "ledn": 36, "hindr": 36, "typisk": [36, 65], "metal": [36, 48], "kobber": 36, "gull": 36, "metallbind": 36, "metallatomen": 36, "husker": [36, 37, 65, 78], "bind": 36, "atomen": [36, 51], "elektronsj\u00f8": 36, "udefinert": [36, 48], "slikt": 36, "plast": 36, "porselen": 36, "material": 36, "elektronflyt": 36, "kovalent": 36, "binding": 36, "materialen": 36, "kobler": 36, "kretser": 36, "motstanden": 36, "sm\u00e5elektronikk": 36, "ohm": 36, "omega": 36, "spenningen": 36, "p0": 36, "digitalt": 36, "analog": 36, "analogverdi": 36, "p1": 36, "kobla": 36, "pin0": 36, "pin1": 36, "imellom": [36, 69], "pin2": 36, "write_digit": 36, "read_analog": 36, "f\u00f8lsomhet": 36, "samsvar": [36, 39], "kroppen": 36, "is_touch": 36, "lukka": 36, "aktiver": 36, "instrument": 36, "tolker": 36, "signal": 36, "temperatursensor": 36, "platinatr\u00e5d": 36, "tr\u00e5den": 36, "g\u00e5tt": [36, 51, 52], "tapt": 36, "krever": [36, 38, 44, 46, 51, 67], "kalibr": 36, "temperatursensoren": 36, "isvann": 36, "vannet": [36, 69], "holder": [36, 44, 51], "leser": [36, 59, 66, 71], "tester": [36, 41, 62], "kokend": 36, "m\u00e5lepunkt": [36, 45], "utenfor": [36, 51, 62, 69, 73], "ri": 36, "resistansen": 36, "veit": [36, 70, 78], "stemm": 36, "sensoren": 36, "line\u00e6rt": [36, 69], "gyldighetsomr\u00e5d": 36, "milli": 36, "kompasset": 36, "nord": 36, "\u00f8st": 36, "prosessoren": 36, "kalibrert": 36, "grei": [36, 73, 88], "temperaturendring": 36, "acceleromet": 36, "get_x": 36, "kompassretn": 36, "compass": 36, "variablen": [36, 38, 45, 46, 47, 49, 50, 51, 59, 62, 69, 74, 76, 78], "tastetrykk": [36, 39, 79], "l\u00e6rt": [36, 51], "bryne": 36, "utforskend": 36, "lykk": 36, "logger": 36, "teller": [36, 46, 50, 51, 65, 66, 71], "vaterpass": 36, "vater": 36, "vinkelrett": 36, "tip": [36, 78], "virkelig": [36, 79], "ligg": [36, 66, 67, 73, 74], "flatt": 36, "syne": 36, "greit": [36, 67, 78], "skrittel": 36, "akselerometeret": 36, "krystallkul": 36, "modfis": 36, "beskjed": 36, "sikkert": [36, 64, 79], "tvilsomt": 36, "mine": 36, "kilder": 36, "nei": [36, 48], "blitt": [36, 44, 62, 67, 85], "el": 36, "overf\u00f8lsom": 36, "was_gestur": 36, "shake": 36, "ansatt": 36, "astrobiolog": 36, "ansvar": 36, "drivhuset": 36, "mat": [36, 44], "ressur": 36, "overv\u00e5k": 36, "systemen": 36, "avl": 36, "oppdrag": 36, "fuktighetssensor": 36, "fuktigheten": 36, "spiker": 36, "spikern": 36, "spenningsfallet": 36, "for\u00e5rsak": 36, "m\u00e5ling": 36, "fuktighet": 36, "foresl\u00e5": [36, 44, 66], "bananplugg": 36, "frie": 36, "enden": 36, "bananpluggen": 36, "krokodilleklemm": 36, "kalibrer": 36, "vite": [36, 39, 47, 64, 65, 78], "lavest": [36, 74], "via": [36, 44, 64, 89], "displayet": 36, "prosent": [36, 44, 48, 59, 62, 66, 67, 69, 85], "planter": 36, "t\u00f8rr": 36, "v\u00e5t": 36, "tommel": 36, "smilefj": 36, "mottak": 36, "ekstra": [36, 51, 64, 65, 66, 71], "motor": 36, "van": 36, "oppsettet": [36, 81], "luftfuktighetssensor": 36, "velkommen": [37, 48, 86], "ressurssid": 37, "tema": [37, 39], "repetisjon": [37, 46, 50, 51, 59, 62, 65, 66, 68, 69], "kodestruktur": [37, 47], "klasser": 37, "datah\u00e5ndt": [37, 66], "maskinl\u00e6ringsmodel": [37, 67, 83], "faget": 37, "regresjonsmodel": [37, 79], "differen": 37, "differensiallikning": [37, 44, 79], "gjennomg\u00e5r": 37, "fagstoffet": [37, 59], "underveisoppgaven": 37, "\u00f8vd": 37, "regelmessig": 37, "aktuel": [37, 81], "interaktiv": 37, "editor": [37, 47, 51], "trinket": [37, 66], "nettleseren": 37, "editoren": [37, 59], "tilbakestil": 37, "hamburgermenyen": 37, "streken": [37, 69], "editorvinduet": 37, "reset": 37, "forn\u00f8yels": 37, "fantastisk": 38, "verkt\u00f8i": [38, 52, 67, 79], "gjettespil": 38, "spillet": [38, 70], "fram": [38, 39, 44, 51, 59, 70, 71, 78, 81], "plai": 38, "programkoden": [38, 47, 48, 74], "gjettet": 38, "ruta": [38, 41, 59], "fors\u00f8k": [38, 47, 68], "foreg\u00e5r": [38, 48, 51, 65], "enda": [38, 41, 47, 48, 62, 64, 73, 74, 78, 81], "gjetteprogrammet": 38, "beskjeden": [38, 48], "vunnet": 38, "skill": [38, 46, 48, 50, 59, 66, 67, 68, 78], "komma": [38, 46, 50, 59, 62, 66], "navnet": [38, 59], "ouput": 38, "skrevet": [38, 48, 59], "konsollen": [38, 59], "programmeringsmilj\u00f8": 38, "adskilt": [38, 62], "strukturen": [38, 44, 46, 47, 48, 51, 81], "styrk": [38, 46, 47, 51], "introduser": [38, 46, 51], "gunnar": [38, 46, 51, 59, 65], "kommando": [38, 46, 47, 48, 51, 59, 66, 68], "forward": [38, 44, 46, 51, 64, 88], "backward": [38, 44, 46, 51, 64], "trekant": [38, 46, 47, 51, 59, 63, 87], "vinkelen": [38, 46, 51], "skilpadden": [38, 46, 51, 64], "snur": [38, 46, 51, 81], "vinklen": [38, 46, 51], "trekanten": [38, 46, 47, 51, 59], "helst": [38, 51, 78], "likesidet": [38, 51], "vinkler": [38, 51], "snu": [38, 51], "indr": [38, 51], "vinkel": [38, 51, 59, 70], "helomvend": [38, 51], "turtl": [38, 51, 64, 70], "pekeren": [38, 51], "skilpaddeform": [38, 51], "limegreen": [38, 51, 68, 71], "limegr\u00f8nn": [38, 51], "vender": [38, 51, 67, 73], "\u00e5ttekant": [38, 46, 51], "f\u00f8rtitok": [38, 46, 51], "nittiseksk": [38, 46, 51], "slitsomt": [38, 46, 51], "hundrevi": [38, 46, 51], "un\u00f8vdendig": [38, 46, 51], "kant": [38, 46, 51], "kanten": [38, 51], "sidelengden": [38, 51], "hu": [38, 51], "detaljert": [38, 51], "huset": [38, 51], "uendelig": [38, 47, 51, 59, 68, 69, 73, 78], "vakkert": [38, 51], "eksemplar": [38, 51], "kunstverk": 38, "oversikten": 38, "logoen": 38, "grafikk": [38, 51], "former": [38, 51], "h\u00f8rer": [39, 48], "ordet": 39, "miniatyrdel": 39, "atommodel": 39, "forenklet": [39, 48, 79], "representasjon": [39, 79], "virkeligheten": [39, 67, 78, 79], "representerer": 39, "matematikk": [39, 47, 51, 59, 60, 70, 73, 78, 84], "fenom": 39, "aktuelt": 39, "smittespredn": [39, 81], "modelleringsprosess": [39, 79], "inneb\u00e6r": [39, 44, 79], "trinn": [39, 41, 51, 70, 74, 79], "fenomen": [39, 79], "studer": [39, 44, 47, 62, 66, 68, 73, 74, 78, 79, 81], "gyldighet": [39, 79], "prosessen": [39, 41, 74, 79], "observer": [39, 70, 79], "utfallet": [39, 47, 50, 51, 79], "fhi": 39, "h\u00e5ndteringen": 39, "koronaviruspandemien": 39, "smittemodellerer": 39, "utviklingingen": 39, "vekstfaktor": [39, 51, 78], "paramet": [39, 41, 47, 62, 67, 70, 73, 78, 79, 81, 84], "realistisk": [39, 44, 79, 81], "sprer": [39, 81], "vider": [39, 46, 51, 59, 64, 66, 69, 74, 78, 81], "forutsett": [39, 44, 81], "immunitet": [39, 81], "smittemengden": [39, 81], "m\u00f8ter": [39, 78, 81], "bild": [39, 81], "begynnelsen": [39, 81], "smitteforl\u00f8p": [39, 81], "peker": [39, 66, 81], "sykdomsutviklingen": 39, "visk": [39, 79], "bygg": [39, 79], "septemb": [39, 81], "smitt": [39, 40, 81], "i_n": [39, 40, 78, 81], "ai_ns_n": [39, 40, 81], "s_n": [39, 81], "bekriv": 39, "minu": [39, 69, 71, 73, 81], "andelen": [39, 42, 48, 66, 81], "\u00e5rsaken": [39, 42, 64, 81], "smittespredningen": [39, 81], "egen": [39, 60, 62, 64, 67], "usmitted": [39, 81], "sykdommen": [39, 81], "innf\u00f8rer": [39, 81], "tidliger": [39, 47, 51, 52, 62, 64, 76, 78, 81, 84], "r_": [39, 43, 44, 81], "r_n": [39, 81], "bi_n": [39, 81], "as_ni_n": [39, 81], "f\u00f8lge": [39, 43, 51, 78, 81], "sir": [39, 81], "smitteutvikl": [39, 78, 81], "bedringsraten": [39, 81], "leddet": [39, 51, 62, 81], "koordinatsystemet": [39, 68], "modellert": [39, 81], "aktivitet": 39, "endring": [40, 41, 44, 67, 68, 78], "smittemodellen": 40, "tallf\u00f8lg": [40, 47, 51, 78], "l\u00f8sbare": [40, 74, 78], "l\u00f8sing": 40, "difflikning": [40, 78], "framfor": 40, "leftrightarrow": 40, "smittemodel": 40, "ai": [40, 78, 88], "populasjonsvekst": 40, "antideriver": [40, 73], "differensiallikningen": [40, 78], "iterativ": [40, 78], "p\u00e5f\u00f8lgend": [40, 44, 70, 78], "utl": [40, 44, 70, 73, 78], "tiln\u00e6rmingen": [40, 71, 73, 78], "kvotient": [40, 71], "framoverdifferansen": [40, 78], "funksjonsuttrykk": 40, "x_start": 40, "x_slutt": [40, 78], "sluttverdi": [40, 78], "steglengd": [40, 51, 74, 78, 82], "y0": [40, 76, 78], "initialbetingels": [40, 44], "defin": [40, 41, 49, 62, 78], "vinduet": [40, 66, 86], "funksjonskal": [40, 62], "uansett": [40, 48, 62, 81], "argumentverdi": 40, "pleier": [40, 78], "difflikn": [40, 77, 78], "tomm": 40, "arrayen": [40, 41, 65, 66, 70, 78], "y_": 40, "y_n": 40, "yderivert": 40, "x_": [40, 69, 70, 73, 74, 78], "enklest": [40, 47, 62, 66, 71, 73, 78, 81], "l\u00f8sninger": [40, 47, 48, 62, 78], "oppgava": [41, 44, 62, 73], "log": [41, 44, 48, 51, 59, 71, 74, 78], "006x": 41, "poenget": [41, 42, 47, 51], "verifis": 41, "fant": 41, "forh\u00e5ndslagret": 41, "starten": [41, 59, 81], "fikk": [41, 48, 66], "inspirasjon": 41, "egner": [41, 66, 71, 74], "midten": [41, 73, 74], "fortegnen": [41, 74], "m_n": [41, 74], "midtpunktet": [41, 71, 74], "c_k": [41, 74], "sluttverdien": [41, 51, 74, 78], "starthjelp": 41, "svakhet": [41, 74, 79], "oppst\u00e5": [41, 74], "fallgruv": 41, "prinsipp": [41, 73, 74, 78], "robust": [41, 51, 65, 66, 74], "pakk": [41, 59, 74], "letter": [41, 64, 79], "gjenbruk": [41, 47, 62, 63, 64, 78], "dokumentasjon": 41, "eksempelet": [41, 47, 59, 62, 78, 79], "returner": [41, 47, 62, 64, 70, 74, 78], "relevant": [41, 45, 47, 48, 50, 59, 66, 68], "datatyp": [41, 47, 49, 66], "beskrivels": [41, 44, 59, 73], "maks_it": 41, "gikk": [41, 74], "feilmeld": [41, 48, 62], "datafram": [42, 66, 83, 89], "mener": 42, "irrelevant": 42, "datarammenavn": 42, "repres": [42, 89], "legitimt": 42, "overraskend": 42, "alderskategori": 42, "kolonnekategori": [42, 66], "separ": [42, 67, 89], "tren": [42, 67], "7597765363128491": 42, "diagrammet": 42, "visualiseringen": [42, 66], "filnavn": 42, "titanicmodel": 42, "sav": 42, "joblib": 42, "dump": 42, "0x1b5b38c7ac0": 43, "kontaktraten": 43, "r_t": 43, "strukturer": [43, 44, 62, 63, 64], "heller": [43, 45, 62, 67, 74, 78, 84], "helhetlig": [43, 44], "sp\u00f8rsm\u00e5lene": [43, 58], "malen": 43, "hensikt": 43, "teori": [43, 44, 47], "eventuel": [43, 45, 51, 67, 69], "betydn": [43, 47, 48], "hovedfunnet": 43, "presenter": 44, "ryddig": 44, "programkod": [44, 46, 48, 59], "veiledn": 44, "moment": 44, "sentral": [44, 48], "vurdert": 44, "inndelt": 44, "klar": [44, 66], "introduksjon": [44, 59], "dreier": [44, 46], "konsekvens": 44, "oppsumm": 44, "figurtekst": 44, "dr\u00f8fta": 44, "redegjort": 44, "problemstil": 44, "problemstillingen": 44, "godkjent": 44, "menneskepopulasjon": 44, "postapokalyptisk": 44, "viru": 44, "zombier": 44, "blod": 44, "bitt": 44, "klore": 44, "avsideliggend": 44, "landsbi": 44, "alexandria": 44, "n\u00e6rheten": 44, "washington": 44, "utbrudd": 44, "tilfluktsst": 44, "v\u00e5pen": 44, "mur": 44, "landsbyen": 44, "zombien": 44, "unna": [44, 69, 73], "trygg": 44, "begrunn": 44, "populasjonsutviklinga": 44, "f\u00f8dsel": 44, "innvandr": 44, "inkluder": 44, "ressursbegrensn": 44, "d\u00f8": 44, "sykdom": [44, 81], "skade": [44, 64], "alderdom": 44, "tilgangen": 44, "medisin": 44, "lege": 44, "zombiepopulasjon": 44, "lever": [44, 45, 64], "drept": 44, "rovdyr": 44, "revet": 44, "fillebit": 44, "smitta": 44, "zombiepopulasjonen": 44, "bidrar": 44, "livet": [44, 66, 79], "hilltop": 44, "kingdom": 44, "forsterkning": 44, "inklud": 44, "reaksjonsfart": 44, "industriel": 44, "milj\u00f8et": 44, "framtida": 44, "fartsloven": 44, "variert": [44, 85], "chapman": 44, "produksjon": 44, "tilh\u00f8rend": [44, 67], "reaksjonskoeffisient": 44, "xrightarrow": 44, "2o": 44, "o_3": 44, "2o_2": 44, "_2": [44, 69, 78, 79], "_3": 44, "oksygen": 44, "dioksygen": 44, "reagerend": 44, "st\u00f8tpartner": 44, "nu": 44, "tilf\u00f8rt": 44, "lambda": [44, 51, 62], "nm": [44, 48, 51, 62], "spaltingen": 44, "atom": [44, 79, 88], "dann": 44, "bryte": 44, "textrm": 44, "k_1": 44, "k_2": 44, "k_3": 44, "k_4": 44, "h\u00f8yde": [44, 47, 59, 65, 68, 78], "_": [44, 77], "teoridelen": [44, 81], "logaritmisk": [44, 71], "skala": 44, "yscale": [44, 71], "bdf": 44, "solve_ivp": [44, 76, 78], "1e6": 44, "justering": 44, "s\u00f8k": 44, "ideer": 44, "innkluder": 44, "\u00f8kt": 44, "kfk": 44, "sammenlikning": 44, "varmer": [44, 78, 85], "elektromagnetisk": [44, 48, 85], "m\u00e5lt": [44, 73, 82, 85], "kw": [44, 86], "str\u00e5lingen": [44, 51, 85], "solkonstanten": [44, 85], "_s": 44, "e_": [44, 85], "reflekter": 44, "_e": [44, 85], "emitter": [44, 51, 62], "loven": [44, 78, 85], "phi": [44, 85, 88], "constant": [44, 85, 88], "670373": [44, 85], "2k": [44, 73, 85], "uttrykken": 44, "svaret": [44, 51, 62, 78], "str\u00e5linga": 44, "energibevar": 44, "s\u00f8ke": [44, 68], "fascinasjon": 44, "undr": 44, "baner": 44, "lover": [44, 66], "kraften": 44, "universel": 44, "anse": 44, "kuleform": 44, "gm_1m_2": 44, "dimensjon": [44, 59], "valgfritt": [44, 47, 48, 65], "f_": 44, "p\u00e5virka": 44, "a_": [44, 51, 70, 73], "a_i": [44, 73], "a_x": 44, "v_x": 44, "v_y": 44, "solsystem": 44, "still": 44, "fokuser": [44, 67], "bane": 44, "p\u00e5virket": 44, "solmass": 44, "forhold": [44, 79, 81, 82], "au": [44, 78], "startbetingelsen": [44, 78], "st\u00e5": [44, 59], "origo": [44, 70], "tider": [44, 78], "banen": 44, "cromer": 44, "deloppgav": 44, "sammenlikna": 44, "simuleringa": 44, "planetermalstruktur": 44, "py": [44, 59, 62, 86, 88], "programstruktur": 44, "greier": [44, 78], "info": [44, 66, 83], "forslaget": 44, "programstrukturen": 44, "henter": [44, 50, 62, 78], "eksempeldata": 44, "planeter_data": 44, "dat": 44, "henta": 44, "nasa": 44, "modifisert": 44, "sida": 44, "ssd": 44, "jpl": 44, "gov": 44, "horizon": 44, "cgi": 44, "jobba": 44, "matrisestruktur": 44, "tankegangen": 44, "po": [44, 88], "illustrasjon": [44, 66], "arkiv": 44, "te": [44, 51, 66, 71, 73, 74], "arket": 44, "di": 44, "planetban": [44, 78], "pygam": [44, 87], "lyst": [44, 68], "fantasien": 44, "grenser": 44, "filnavnet": 44, "planetermalpygam": 44, "modelleringsprosjekt": 45, "prosjekt": [45, 87], "analys": [45, 69, 73], "regresjonsanalys": [45, 69], "sensor": [45, 66], "sp\u00f8rreunders\u00f8kels": 45, "xlsx": 45, "excel": [45, 89], "sentraltenden": 45, "spredn": [45, 81], "present": 45, "m\u00e5lene": [45, 69], "spredningen": [45, 66, 69, 81], "korrelasjonsplott": [45, 69], "regresjon": [45, 71], "ipynb": 45, "notebooken": 45, "programmeringsspr\u00e5ket": [46, 64], "geometrisk": [46, 51, 73], "m\u00f8nstre": [46, 51], "programmeringsvariabel": [46, 47, 59], "bok": [46, 59], "gjennomsnittshastigheten": [46, 59], "beveget": [46, 59, 70], "fordelen": [46, 51, 59, 65, 74], "v1": [46, 59, 88], "v2": [46, 59, 88], "v3": [46, 59], "v4": [46, 59], "tellel\u00f8kk": [46, 47, 51], "gjentar": [46, 47, 51], "tilstandsl\u00f8kk": [46, 47, 51], "rykket": [46, 47, 48, 51], "tab": [46, 51], "grundiger": [46, 51], "n\u00e5dd": [46, 48, 51, 81], "posit": [46, 51, 69, 88], "oddetal": [46, 51, 65], "kodeboksen": [47, 48, 59], "kinetisk_energi": 47, "kinetisk": [47, 59, 60], "kvadratrot": 47, "trigonometrisk": [47, 60, 73], "sinu": 47, "radian": [47, 62], "kvadratrota": [47, 69, 70], "49999999999999994": 47, "m\u00e5tte": [47, 59], "vinkelm\u00e5let": 47, "vinkelm\u00e5l": 47, "l\u00e6rer": [47, 60, 65, 66, 78], "matt": 47, "\u00f8vrig": [47, 66, 69], "arealet": [47, 49, 59, 62, 63, 73], "grunnlinj": [47, 59], "radiu": [47, 49, 59, 62, 70, 88], "forh\u00e5ndsdefinert": 47, "rota": 47, "opph\u00f8y": 47, "variabelverdi": [47, 59, 79], "formel": [47, 51, 59, 62, 73], "lurer": [47, 68], "foran": [47, 50, 59], "tallmengd": [47, 51, 59, 68], "irrasjonal": [47, 59], "rasjonal": [47, 59], "kompleks": [47, 59], "tallmengden": [47, 51, 59], "eksister": [47, 59, 62], "desimaltal": [47, 51, 59], "variabeltypen": [47, 59], "boolsk": [47, 59], "sannhet": [47, 59], "inputen": [47, 59], "tolket": [47, 59, 66], "standard": [47, 59, 66, 73, 78, 89], "tekst1": [47, 59], "tekst2": [47, 59], "tall1": [47, 48, 59, 60], "tall2": [47, 48, 59, 60], "tullsvar": [47, 59], "tallsvar": [47, 59], "interaktivt": [47, 59], "oppfylt": [47, 48], "kriteriet": [47, 48], "handl": [47, 48], "handlingen": [47, 48], "utf\u00f8rt": [47, 48, 69], "enormt": [47, 70], "testen": [47, 48], "innrykk": [47, 48, 62], "seri": [47, 48, 51, 69, 77], "overs": [47, 48, 84], "operatoren": [47, 59], "setning": [47, 48], "programmeringspuslespil": 47, "kodeblokk": 47, "andregradslikn": [47, 48], "bx": [47, 62, 69, 84], "varianten": 47, "\u00f8k": [47, 70], "partallsvariabelen": [47, 51], "l\u00f8kkene": [47, 51], "tilh\u00f8rer": [47, 62, 64, 66, 69], "l\u00f8kketabel": [47, 51], "tabellen": [47, 48, 65, 68, 70], "l\u00f8kkerund": [47, 51], "flink": [47, 51], "tusen": [47, 51], "tellevariabelen": [47, 51], "dobbelt": [47, 51], "kopier": [47, 51], "doblet": [47, 51], "bel\u00f8pet": [47, 51], "banken": [47, 51, 62], "\u00e5rlig": [47, 51], "rent": [47, 51, 62], "startkapit": [47, 51, 62], "5000": [47, 51], "kroner": [47, 48, 51, 62, 78], "datastruktur": 47, "tom_list": 47, "tom": [47, 50], "lemur": 47, "sj\u00f8ku": 47, "tekststreng": 47, "tallverdi": [47, 62], "penger": [47, 51, 62], "\u00e5r_list": 47, "penger_list": 47, "pengen": [47, 51], "gyllen": 47, "pengeutviklingen": 47, "plotteverkt\u00f8i": [47, 68], "planteh\u00f8yd": [47, 68], "plantevekst": [47, 68], "planten": [47, 68], "milj\u00f8gift": [47, 68], "organism": [47, 68], "innsj\u00f8er": [47, 68], "linjestil": [47, 68], "mark\u00f8rer": [47, 66, 68], "googl": [47, 52, 66], "s\u00f8keresultaten": 47, "flittig": [47, 68], "renteprogrammet": 47, "endrer": [47, 50, 65, 78], "grunnstruktur": [47, 66], "naturfag": 47, "tross": 47, "kodeteknisk": [47, 51], "ferdighet": 47, "realfag": 47, "virkem\u00e5t": 47, "funskjonen": 47, "kodeordet": [47, 62], "funksjonsnavn": [47, 62], "hete": [47, 51, 62], "spesifisert": [47, 51, 62, 66], "hovedsak": 47, "sistnevnt": [47, 67], "poeng": [47, 48], "sentralt": 47, "subtraksjon": [47, 59, 60, 62], "sylind": [47, 62], "systematiser": [48, 51, 79], "inng\u00e5r": 48, "setn": 48, "hverdagen": [48, 70], "billettpris": 48, "bussen": 48, "prisen": 48, "betal": 48, "pri": 48, "pseudokoden": [48, 74], "logikken": 48, "billettpriseksempelet": 48, "innrykken": 48, "ber": [48, 62], "vilk\u00e5rlig": [48, 62, 69, 74, 76, 84], "konverter": [48, 66], "vilk\u00e5ret": 48, "etterfulgt": [48, 51], "variabelnavnet": 48, "kolon": [48, 50, 62], "spesifikk": [48, 66, 78], "skje": [48, 73], "forkortels": [48, 74, 78], "likhetstegn": 48, "tilordn": [48, 62, 66], "oppsummert": [48, 69], "bestemmelsesn\u00f8kkel": [48, 67], "bestemmelsen": 48, "presi": 48, "reaktivt": 48, "alkalimetal": 48, "innskuddsmetal": 48, "jordalkalimetal": 48, "flytskjemaet": 48, "bergart": 48, "m\u00f8nsteret": [48, 51, 79], "steinen": [48, 51], "prikket": 48, "funnet": [48, 59, 69], "magmatisk": 48, "striper": 48, "stripet": 48, "metamorf": 48, "sediment\u00e6r": 48, "vennligst": 48, "aldr": 48, "gammel": [48, 59, 62], "dra": 48, "barnehagen": 48, "voksenlivet": 48, "gamlehjemmet": 48, "poengsum": 48, "karakt": 48, "karaktergrens": 48, "makssummen": 48, "sluttkarakteren": 48, "prosentgrensen": 48, "maks_poeng": 48, "prosent1": 48, "prosent2": 48, "prosent3": 48, "prosent4": 48, "prosent5": 48, "grense1": 48, "grense2": 48, "grense3": 48, "grense4": 48, "grense5": 48, "karakteren": [48, 81], "st\u00f8rst": [48, 71], "avansert": [48, 59], "variant": [48, 66, 74, 81], "rotuttrykk": [48, 62], "regneoperasjon": 48, "h\u00e5ndtere": [48, 68], "op": 48, "b\u00f8lgelengden": [48, 51, 62], "spekteret": 48, "bl": [48, 51, 62], "fiolett": 48, "575": 48, "585": 48, "650": 48, "oransj": 48, "r\u00f8d": [48, 65, 68], "oksoniumion": [48, 65], "h_3o": [48, 60, 62], "ioner": 48, "gen": 48, "q": 48, "hardi": 48, "weinberg": 48, "forandr": [48, 78, 82], "forutsetningen": [48, 79], "pare": 48, "mutasjon": [48, 70], "seleksjon": 48, "evolusjon": 48, "2pq": 48, "genvari": 48, "gjennomgang": 48, "heltallen": [49, 51], "pugg": 50, "operasjonen": [50, 51, 65, 73], "objekten": [50, 64], "klammeparent": [50, 67], "torndjevel": 50, "bj\u00f8rnedyr": 50, "blobfisk": 50, "sj\u00f8kneler": 50, "klammeparentesen": [50, 67], "aper": [50, 66], "sp\u00f8kelsesap": 50, "neseap": 50, "komodovaran": 50, "dyrelista": 50, "glaucu": 50, "atlanticu": 50, "extend": 50, "apelista": 50, "nr": [50, 51, 71], "revers": 50, "reverser": 50, "plassnummeret": 50, "lengden": [50, 64, 67, 69, 71], "vent": 50, "ni": 50, "nummer": [50, 51, 65], "plass": [50, 59, 70], "totallet": 50, "derfra": 50, "sluttelementet": 50, "plasseringen": 50, "negativ": [50, 69, 79], "bakleng": [50, 51], "par": 50, "tallist": 50, "bortsett": [50, 70], "lenger": [50, 78, 81], "sjett": 50, "programflyten": 50, "utvida": 50, "innhold": [50, 64, 65, 69], "ny_list": 50, "i1": 50, "index": [50, 66, 88], "rekkesumm": 51, "regul\u00e6r": 51, "mangek": 51, "sidelengd": [51, 70], "mangekanten": 51, "tellevariabel": 51, "listeliknend": 51, "eksemplen": 51, "generel": [51, 71, 74, 78, 81, 84], "argument": [51, 69, 78], "automatisk": [51, 67, 69, 74], "mellomrom": [51, 59], "gjentatt": 51, "oppdater": [51, 59, 78], "presist": 51, "tilordnet": 51, "tur": 51, "fortsett": [51, 74], "avslutt": 51, "styr": 51, "l\u00f8kketabellen": 51, "renter": [51, 62], "025": 51, "summer": [51, 69, 73], "dele": [51, 52, 67, 69, 74], "trinnvi": [51, 65], "formler": [51, 62], "l\u00f8ser": [51, 74, 77, 78], "iterativt": [51, 74], "gjentakels": [51, 70], "uformelt": 51, "repeterend": 51, "naturvitenskap": [51, 84], "opprams": 51, "partallen": 51, "fibonacci": 51, "prikken": 51, "rekka": 51, "f\u00f8lgen": 51, "a_n": 51, "leddnummeret": 51, "tallf\u00f8lgen": 51, "a_1": 51, "a_2": 51, "rekursiv": 51, "formlen": [51, 62], "a_0": 51, "kommet": [51, 71], "hundred": 51, "a_3": 51, "a_4": 51, "rekurs": 51, "2n": 51, "tjuend": 51, "rekk": 51, "rekker": 51, "kjenn": [51, 66], "m\u00f8nster": [51, 70], "9999999999999987": 51, "n\u00f8yaktiv": 51, "uled": 51, "summeformel": 51, "verst": [51, 67], "sjeldent": [51, 74], "n\u00f8yaktig": [51, 74], "morsomt": 51, "tver": 51, "fagomr\u00e5den": 51, "fysikkeksempel": 51, "bevegelsesformel": 51, "01960014606396": 51, "likevel": [51, 62, 66, 69, 81], "b0": 51, "bakteri": [51, 78], "antall_tim": 51, "23737": 51, "s\u00e5pass": 51, "stein": 51, "premiss": 51, "likhet": 51, "generaliserbart": 51, "foruts": [51, 65], "fallskjermhopp": 51, "veksten": [51, 78, 79], "formelbasert": 51, "ul\u00f8selig": 51, "temperaturavhengighet": 51, "bakterieveksten": 51, "vekst_list": 51, "229430": 51, "hovedpoenget": [51, 67, 71], "effektiv": 51, "intuitiv": [51, 73, 74], "hold": [51, 78], "tunga": 51, "munnen": 51, "innerst": [51, 66], "ytterst": 51, "ytre": 51, "utregn": 51, "999": 51, "dobl": [51, 67], "s\u00f8rger": 51, "utenom": 51, "kj\u00f8rt": 51, "hundrek": 51, "minner": 51, "hundrekanten": 51, "uendeligk": 51, "fibonnacif\u00f8lgen": 51, "x0": [51, 76, 78], "fibonaccital": 51, "x0_ny": 51, "displaystyl": [51, 77], "infti": [51, 77], "000": [51, 69, 78], "summ": 51, "kombinatorikk": 51, "prod_": 51, "fakultetet": 51, "t\u00f8ffeldyr": 51, "ukj\u00f8nnet": 51, "annenhv": [51, 68], "omgivels": [51, 78, 82], "d\u00f8r": [51, 81], "toeffeldyr": 51, "bohr": [51, 62], "foton": 51, "hydrogenatom": 51, "deeksiter": [51, 62], "skall": [51, 62], "fotonen": 51, "00": [51, 62, 65, 69, 74, 76], "cdot10": [51, 62], "ti": [51, 59, 70], "deeksitasjon": 51, "atomet": 51, "energiniv\u00e5": [51, 62], "18e": [51, 62], "63e": 51, "bl_nm": [51, 62], "1e9": [51, 62], "nanomet": [51, 62], "fotonet": [51, 62], "forleng": 51, "radioaktivt": [51, 70], "gjenst\u00e5r": 51, "n_0e": 51, "n_0": 51, "halveringstida": 51, "plutonium": 51, "halveringstid": 51, "n0": 51, "24000": 51, "50001": 51, "plattform": 52, "versjonskontrol": 52, "dropbox": 52, "onedr": 52, "disk": 52, "gjenopprett": 52, "versjon": [52, 62], "skei": 52, "ipython": [52, 62, 86], "ifram": 52, "www": [52, 66], "youtub": 52, "emb": 52, "bqamrj07mxq": 52, "autoplai": 52, "width": [52, 88], "800": 52, "height": [52, 88], "600": [52, 67], "importert": [58, 65], "programmeringseditor": [59, 60], "tallrekk": 59, "skjermen": 59, "bilder": 59, "gjennomsnittsfarten": 59, "3333333333333335": 59, "666666666666667": 59, "rektangel": [59, 64, 73], "svarsetn": 59, "side1": 59, "side2": 59, "rektangelet": [59, 73], "kvadratmet": [59, 85], "samarbeidsprosjekt": 59, "kommentaren": 59, "kommenter": 59, "tripl": 59, "anf\u00f8rselstegn": 59, "operator": 59, "oper": 59, "multiplikasjon": [59, 60, 64, 65], "divisjon": [59, 60], "ekspon": 59, "utf\u00f8rer": [59, 60, 66, 69], "heltallsdivisjon": 59, "divisjonen": 59, "n\u00e6rmest": [59, 71], "overskrid": 59, "modulusoperatoren": 59, "modul": [59, 62, 86], "nympi": 59, "eric": 59, "thon": 59, "alia": 59, "fjerd": [59, 74], "arcco": 59, "inver": [59, 77], "cosinu": [59, 62], "tierlogaritmen": [59, 78], "beregningen": [59, 74, 85], "kodelinj": 59, "bes": 59, "setningen": 59, "jammen": 59, "gammelt": 59, "topp": 59, "bunn": 59, "neq": 59, "bryr": 59, "lesbart": 59, "\u00f8v": 59, "feilmelding": 59, "typen": [59, 62, 64, 66, 78], "differansen": [59, 60, 62, 65, 69, 78, 82], "bug": 59, "grace": 59, "hopper": 59, "kompilatoren": 59, "maskinkod": 59, "insekt": 59, "satt": [59, 78], "fast": [59, 67, 74], "mekanisk": 59, "kr\u00f8ll": 59, "forh\u00e5pentligvi": 59, "sluttfarten": 59, "h\u00e5ndterer": 60, "logaritm": 60, "r\u00f8tter": 60, "e_k": 60, "h\u00e5ndterbart": 62, "heltallsverdi": 62, "syntaksen": 62, "funksjonsnavnet": 62, "silj": 62, "retur": 62, "areal_sirkel": 62, "volum_sylind": 62, "direkt": [62, 66, 68, 70], "smak": 62, "behag": 62, "forekomm": 62, "volum_kul": 62, "volumforskjel": 62, "strekn": [62, 78], "funksjonskallen": 62, "overf\u00f8rt": 62, "ingent": 62, "vist": 62, "renta": 62, "penger_i_banken": 62, "sluttkapit": 62, "kapit": 62, "3000": [62, 66, 88], "nameerror": 62, "traceback": [62, 86], "most": [62, 86], "recent": [62, 86], "call": [62, 74, 86], "appdata": 62, "local": 62, "ipykernel_39764": 62, "3569527658": 62, "tilgjengelig": 62, "lokalt": 62, "9fcd0c311f14": 62, "masseenergi": 62, "lyshastigheten": 62, "joul": 62, "9e": 62, "300000000": 62, "3x": [62, 74, 78], "\u00f8nskede": 62, "nevneren": 62, "omskriv": 62, "omgj\u00f8r": 62, "flytallsoperasjon": 62, "omkretsen": 62, "overflatearealet": 62, "sirkel_ar": 62, "sirkel_radiu": 62, "opph\u00f8yer": 62, "sirkel_omkret": 62, "kule_volum": 62, "kule_overfl": 62, "s\u00f8rge": 62, "karvonen": 62, "pulsen": 62, "hvilepul": 62, "h_": 62, "hvile": 62, "treningsintensitet": 62, "hjerteslag": 62, "minutt": [62, 66, 71, 82], "maksimal": 62, "textit": [62, 73], "intensitet": 62, "pul": 62, "molregn": 62, "taster": 62, "molmass": 62, "antall_mol": 62, "molmassen": 62, "ph_h3o": 62, "bevegelsesformlen": 62, "spektren": 62, "hydrogenatomet": 62, "636e": 62, "skallet": [62, 64], "eksiter": 62, "andregradsfunksjon": 62, "andregradslikning": [62, 74], "andregradsformelen": 62, "_x_": 62, "_x": 62, "6_": 62, "tilstandslikninga": 62, "idel": 62, "pv": 62, "nrt": 62, "trykket": 62, "pascal": 62, "kubikkmet": 62, "3144598": 62, "gasskonstanten": 62, "overf\u00f8r": [62, 66, 78, 81], "overskriv": 62, "lokal": [63, 74], "arealsetningen": 63, "objektorientert": 64, "abstrakt": 64, "nyttiger": 64, "simula": 64, "utviklet": [64, 70], "nordmennen": 64, "ol": 64, "johan": 64, "dahl": 64, "kristen": 64, "nygaard": 64, "popul\u00e6r": 64, "java": 64, "objektorient": 64, "spr\u00e5kene": 64, "meningen": 64, "drukn": 64, "kjennskap": [64, 77], "oppskrift": [64, 70], "instan": 64, "utgav": [64, 74], "attributt": [64, 67], "manipuler": 64, "heltallsobjekt": 64, "integ": 64, "objektet": [64, 78, 82, 86], "h\u00e5ndtert": 64, "skilpaddegrafikk": [64, 70], "skilpadd": [64, 70], "skreiv": 64, "rafael": 64, "eksplisitt": [64, 67, 78], "objektnavn": 64, "metodenavn": 64, "kodevindu": 64, "leonardo": 64, "danner": [64, 67], "tegna": 64, "blue": 64, "egenskapen": 64, "glass": 64, "skikk": 64, "klassenavnet": 64, "forbokstav": 64, "__init__": [64, 86], "self": [64, 86], "initi": [64, 78, 88, 89], "merkelig": [64, 66, 67], "konstruksjon": 64, "henvi": 64, "vant": 64, "henvis": 64, "oppskriften": 64, "konstruert": 64, "antakelig": [64, 73], "glasset": 64, "sjekkinnhold": 64, "vannglass": 64, "laget": 64, "dl": 64, "t\u00f8mmer": 64, "tomt": 64, "rommer": 64, "t\u00f8m": 64, "kapasiteten": 64, "mittglass": 64, "mario": 64, "plasser": [64, 67, 70, 77], "omkr": 64, "variasjon": [64, 81], "evnen": 64, "helsepoeng": 64, "hp": 64, "skilpaddeklass": 64, "harm": 64, "heal": 64, "artsnavn": 64, "chelonia": 64, "myda": 64, "levend": 64, "skilpadde1": 64, "vec": [64, 65, 88], "vektoren": [64, 65, 77], "normen": 64, "vektorklass": 64, "vektorklassen": 64, "norm": [64, 77, 88], "termosklass": 64, "arver": 64, "glassklassen": 64, "superklass": 64, "subklass": 64, "termo": 64, "isolasjonsverdi": 64, "super": 64, "termosen": 64, "superklassen": 64, "\u00f8ktemperatur": 64, "senktemperatur": 64, "henttemperatur": 64, "listeindeks": 65, "flerdimensjonal": 65, "rader": [65, 66, 67, 68], "opppf\u00f8r": 65, "matris": [65, 77], "begin": [65, 77, 82], "bmatrix": 65, "vanligst": 65, "vektoroperasjonen": 65, "eksempelprogram": 65, "rask": 65, "addert": 65, "vektorisert": [65, 66, 71], "registrer": 65, "fargekod": 65, "rgb": 65, "intensiteten": 65, "klammeparentes": 65, "parentes": 65, "svart": [65, 66, 69], "hvit": [65, 69], "magenta": 65, "indekser": 65, "kr\u00f8llparentes": 65, "n\u00f8kkel": 65, "n\u00f8kkel1": 65, "verdi1": 65, "n\u00f8kkel2": 65, "verdi2": 65, "n\u00f8kkel3": 65, "verdi3": 65, "nuklid": 65, "oppgir": 65, "atommassen": 65, "atommass": 65, "he": 65, "li": 65, "Be": 65, "litium": 65, "sammenliknet": [65, 69], "art": [65, 67], "vanadium": 65, "4e": [65, 88], "5e": 65, "7e": 65, "2e": 65, "surhet": 65, "kon": 65, "ortogonal": 65, "kontrol": [65, 71], "lise": 65, "jevnt": [65, 71], "fordelt": [65, 71], "synkend": [65, 73], "henn": [65, 78], "mange_tal": 65, "heltall_synkend": 65, "sirkler": 65, "sirklen": 65, "dictionarien": 65, "elev": [65, 71], "mariu": 65, "kristian": 65, "In": [66, 89], "we": [66, 89], "trust": 66, "must": 66, "bring": 66, "edward": 66, "deme": 66, "1900": 66, "daglig": 66, "prosesser": 66, "oppfatning": 66, "inntrykken": 66, "snubler": 66, "d\u00f8rterskel": 66, "tilstrekkelig": [66, 78], "skritt": 66, "terskelen": 66, "hunder": [66, 67], "katter": 66, "slutning": [66, 67, 69], "regel": [66, 67, 78], "samler": 66, "seeropplevels": 66, "netflix": [66, 70], "annons": [66, 70], "datainnsaml": 66, "regulert": 66, "regler": 66, "gdpr": 66, "protect": 66, "regul": 66, "natur": 66, "bearbeid": 66, "oppbevar": 66, "r\u00e5tekstformat": 66, "format": [66, 89], "word": 66, "r\u00e5tekst": 66, "kursiv": 66, "tekstst\u00f8rrels": 66, "r\u00e5tekstfil": 66, "r\u00e5tekstdata": 66, "ulemp": [66, 74], "adresser": 66, "kaffekopp": 66, "oc": [66, 78], "overskrift": 66, "mapp": 66, "filban": 66, "alternativt": 66, "nettadress": 66, "uio": 66, "studier": 66, "emner": 66, "matnat": 66, "ifi": 66, "IN": 66, "kjm1900": 66, "h20": 66, "prim\u00e6rt": 66, "open": 66, "n\u00f8kkelordet": 66, "split": 66, "rad": [66, 70], "lukker": 66, "readlin": 66, "splittet": 66, "radel": 66, "close": 66, "todimensjon": 66, "endimensjonal": 66, "slice": 66, "endimensjon": 66, "maskinl\u00e6r": 66, "dataramm": [66, 67], "kolonneoverskriften": 66, "overskriften": 66, "penest": 66, "ryddigst": 66, "smakebit": 66, "omstrukturer": 66, "datafila": 66, "penguin": [66, 67, 69], "registrert": [66, 69], "\u00f8yer": 66, "pingvindata": [66, 67, 69], "h21": 66, "pengu": 66, "kikk": [66, 70], "tail": [66, 83], "parameterverdi": 66, "island": [66, 67, 69, 83], "bill_length_mm": [66, 67, 69, 83], "bill_depth_mm": [66, 67, 69, 83], "flipper_length_mm": [66, 67, 69, 83], "body_mass_g": [66, 67, 69, 83], "adeli": [66, 67, 69, 83], "torgersen": [66, 67, 83], "male": [66, 67, 83], "3800": [66, 67, 83], "femal": [66, 67, 83], "3450": [66, 67, 83], "kolonnenavnen": 66, "pingvinen": [66, 67, 69], "Not": 66, "number": [66, 88, 89], "unders\u00f8kt": 66, "hend": [66, 67], "utvalgt": [66, 79], "damepingvinen": 66, "pingvindata_dam": 66, "utvalg": [66, 67, 69], "eksempelen": 66, "loc": [66, 88], "kolonneverdi": 66, "damepingvin": 66, "stigend": 66, "ascend": 66, "nebblengd": [66, 67, 69], "nebbdybd": [66, 67, 69], "sort_valu": 66, "mm": [66, 67, 69], "pingvindata_kort_nebb": 66, "mangelful": 66, "dropna": [66, 67, 83], "total_mm": 66, "to_csv": 66, "ny_pingvinfil": 66, "pingvindatafila": 66, "hankj\u00f8nnspingvin": 66, "kroppsmass": [66, 69], "count_valu": 66, "data1": 66, "hankj\u00f8nnspinginv": 66, "delt": 66, "un\u00f8dvendig": 66, "detalj": 66, "v\u00e6r": [66, 78], "kritisk": [66, 79], "fine": [66, 68], "utvidels": 66, "relasjonsplott": 66, "relplot": 66, "mark\u00f8ren": 66, "overk": 66, "formidl": 66, "style": 66, "ho": [66, 69], "forbedring": [66, 73], "foku": 66, "tetthetsplott": 66, "kde": 66, "kernel": 66, "densiti": 66, "estim": 66, "fordelingen": [66, 69], "tettheten": 66, "kart": 66, "h\u00f8ydeniv\u00e5": 66, "ringen": 66, "flesteparten": 66, "kind": 66, "jointgrid": 66, "0x2c48001ea60": 66, "kdeplot": 66, "crest": 66, "histogramm": 66, "s\u00f8yler": 66, "histogrammet": 66, "bin": [66, 88], "bredden": [66, 73], "s\u00f8ylen": 66, "binwidth": 66, "s\u00f8ylediagram": 66, "barplot": 66, "ci": 66, "sd": 66, "standardavviket": [66, 69], "streker": [66, 69], "s\u00f8ylediagramm": 66, "s\u00f8ylediagrammen": 66, "n\u00f8yer": [66, 69, 73], "omgang": 66, "ml": [66, 69], "eddiksyr": 66, "raden": 66, "molar": 66, "isotopen": 66, "forekomsten": 66, "istopen": 66, "sum_i": 66, "m_iw_i": 66, "m_i": 66, "w_i": 66, "tinn": 66, "isotop": 66, "stabil": 66, "desimal": 66, "omtalt": 67, "generaliser": 67, "oppfatt": 67, "forestilling": 67, "generalisering": 67, "induksjon": 67, "slutningen": 67, "n\u00f8dvendighet": [67, 79], "utsett": 67, "induktiv": 67, "l\u00e6ring": 67, "digital": 67, "omgir": 67, "kapitlet": [67, 74], "scikit": 67, "learn": [67, 86], "biblioteken": 67, "pip": 67, "terminalvindu": 67, "programmeringsplattform": 67, "atter": 67, "artsbestemm": [67, 83], "ringpingvin": [67, 83], "b\u00f8ylepingvin": [67, 83], "adeliepingvin": [67, 83], "lest": 67, "pingvinart": 67, "avgj\u00f8rend": 67, "medianverdien": 67, "drastisk": 67, "enkelhet": 67, "skyld": [67, 70], "pingvinarten": 67, "klare": 67, "grunnprinsippen": 67, "bestem": 67, "\u00f8nskerat": 67, "maskinl\u00e6ringsalgoritmen": 67, "skaltrenep\u00e5": 67, "avdatasettet": 67, "skaltestem": 67, "ogd": 67, "hengen": 67, "skinl\u00e6ringsbibliotek": 67, "ertilpasset": 67, "\u00f8nsket": [67, 69], "valid": 67, "forutsigelsen": 67, "mo": 67, "dellen": 67, "dobbel": 67, "treningsandel": 67, "train_siz": 67, "dypbden": 67, "pingvinnebbet": 67, "nederst": 67, "kategorielementen": 67, "l\u00e5ser": 67, "utvalget": 67, "generert": 67, "observ": [67, 89], "grunnlag": [67, 70, 81], "optimer": 67, "beslutningstrealgoritm": 67, "valgtr": 67, "sannsynliggj\u00f8r": 67, "treningsdataen": 67, "9402985074626866": 67, "testkriterien": 67, "texttt": 67, "treffsikkerhet": 67, "klammer": 67, "fint": [67, 74, 76, 78], "forvirringsmatrisen": 67, "matrisen": [67, 77], "xticklabel": 67, "chinstrap": 67, "gentoo": [67, 83], "yticklabel": 67, "dpi": 67, "ticklabel": 67, "artskategorien": 67, "testkategorien": 67, "foruts\u00e5": 67, "tilh\u00f8rt": 67, "skull": [67, 74], "ufattelig": 67, "rart": 67, "inform": 68, "vanliger": [68, 69], "profesjonel": 68, "foretrekk": 68, "plotteverkt\u00f8yen": 68, "hurtigvoksend": 68, "plant": 68, "vokser": 68, "register": 68, "h\u00f8yden": [68, 73], "tittel": 68, "aksetittel": 68, "xlim": 68, "definisjonsmengd": 68, "ylim": [68, 71], "verdimengd": 68, "rutenett": [68, 70], "plottekommando": [68, 74], "nettet": 68, "merkelappen": 68, "interpolasjon": [68, 73], "tydelig": [68, 70], "subplot": [68, 71], "figurnumm": 68, "stiplekurv": 68, "prikkekurv": 68, "tight_layout": [68, 71], "fikser": 68, "overlapp": 68, "kulfigur": 68, "png": 68, "y1": [68, 74], "y3": 68, "lawngreen": 68, "kurven": [68, 81], "maroon": 68, "deepskyblu": 68, "black": 68, "aks": [68, 74], "axvlin": 68, "favorittfunksjon": 68, "akser": [68, 71], "spesifis": 68, "subplotten": 68, "If": [69, 88], "your": [69, 86, 89], "statistician": 69, "better": 69, "fysikeren": 69, "ernest": 69, "rutherford": 69, "interferen": 69, "vend": 69, "pingvindataen": 69, "921930": [69, 83], "151170": [69, 83], "915205": [69, 83], "4201": [69, 83], "754386": [69, 83], "459584": [69, 83], "974793": [69, 83], "061714": [69, 83], "801": [69, 83], "954536": [69, 83], "225000": [69, 83], "3550": [69, 83], "450000": [69, 83], "700000": [69, 83], "nedr": 69, "midtr": 69, "\u00f8vre": 69, "maksverdien": 69, "begrepet": 69, "variasjonsbredd": 69, "variasjonsbredden": 69, "fjerdedel": 69, "q_1": 69, "q_2": 69, "midt": 69, "punktet": [69, 71, 74, 76], "kvartilen": 69, "medianen": 69, "q_3": 69, "resterend": 69, "p\u00e5virk": 69, "uteligger": 69, "iqr": 69, "kvartilbredd": 69, "boxplot": 69, "interkvartilomr\u00e5det": 69, "utstikker": 69, "cdot1": 69, "retning": [69, 70], "utstikkern": 69, "unormalt": 69, "unormal": 69, "uteligg": 69, "dypt": 69, "nebb": 69, "\u00f8ya": 69, "identifis": 69, "fiolinplott": 69, "likt": 69, "tynn": 69, "tykk": 69, "omr\u00e5der": [69, 73], "prikk": 69, "variasjonen": 69, "m\u00e5leverdi": 69, "m\u00e5ledata": 69, "tusenvi": 69, "vill": 69, "variansen": 69, "m\u00e5lingen": 69, "f\u00e6rre": 69, "m\u00e5lepukt": 69, "kvadrer": [69, 81], "neg": 69, "utlignet": 69, "ekstrem": 69, "stykk": [69, 73], "m\u00e5ledataen": 69, "posiv": 69, "usikkerhetsstolp": 69, "eksperi": 69, "standardkurv": 69, "magnesiumkonsentrasjonen": 69, "vannpr\u00f8v": 69, "mu": 69, "flammeatomabsorpsjonsspektrofotomet": 69, "nydelig": 69, "absorpsjon": 69, "errorbar": 69, "capsiz": 69, "argumentet": 69, "fmt": 69, "absorban": 69, "ddof": 69, "yerr": 69, "magnesiuminnhold": 69, "frame": [69, 83, 86, 88], "pointplot": 69, "kurver": 69, "funksjonsmodel": 69, "spektromet": 69, "absorbansen": 69, "standardl\u00f8sning": 69, "permanganation": 69, "mno_4": 69, "pr\u00f8va": 69, "kalibreringskurv": 69, "kvadrat": [69, 70, 84], "permanganat": 69, "ppm": 69, "reg": 69, "regresjonslinja": 69, "polyv": 69, "permanganatkonsentrasjonen": 69, "mno": 69, "_4": 69, "polynomregresjon": [69, 84], "polynomet": 69, "andregradsregresjon": [69, 84], "opprinnelig": 69, "ukjent_ab": 69, "regresjonen": [69, 84], "ukjent_kon": 69, "seagreen": 69, "klor": 69, "cl_2": 69, "drikkevann": 69, "klorforbindels": 69, "desinfiser": 69, "drikkevannspr\u00f8v": 69, "656": 69, "543": 69, "813": 69, "084": 69, "cl": 69, "ekstrapol": 69, "ekstrapoler": 69, "forsiktig": 69, "trender": 69, "verdt": 69, "parplott": 69, "0x28083e73220": 69, "vingelengd": 69, "regresjonslinj": 69, "lmplot": 69, "facetgrid": 69, "0x280879f8430": 69, "svakt": 69, "bl\u00e5tt": 69, "indiker": 69, "usikkerheten": 69, "usikkert": 69, "tydeliger": [69, 71, 74], "0x28087a06e20": 69, "0x280864bb970": 69, "pearson": 69, "korrelasjonskoeffisi": 69, "proporsjon": [69, 78, 82], "omvendt": 69, "absoluttverdien": 69, "korrelasjonen": 69, "korrelasjonskoeffisienten": 69, "xtick": 69, "rotat": 69, "roter": 69, "akseteksten": 69, "235053": 69, "656181": 69, "595110": 69, "583851": 69, "471916": 69, "871202": 69, "vingen": 69, "luffen": 69, "vinger": 69, "dyper": 69, "korter": 69, "bland": [69, 78], "\u00e5rsak": 69, "virkn": 69, "tingen": 69, "korrelasjonsanalys": 69, "faktorer": 69, "forklaring": 69, "presis": 70, "strikkeoppskrift": 70, "kakeoppskrift": 70, "anbefalt": 70, "filmer": 70, "facebook": 70, "gaml": [70, 79], "klassisk": 70, "renessans": 70, "fremst": 70, "gresk": 70, "matematikeren": 70, "kr": 70, "programmerbar": 70, "primtallet": 70, "stryk": 70, "multipl": 70, "inntil": [70, 74], "gjenv\u00e6rend": 70, "ufordrendend": 70, "eratosthenes_sil": 70, "finn_primtal": 70, "babylonia": 70, "2000": [70, 83], "utledn": 70, "kvalifisert": 70, "gjetn": 70, "gjetningen": 70, "46410161514": 70, "naturen": 70, "delvi": 70, "henfal": 70, "oppkalt": 70, "anvendels": 70, "tern": [70, 87], "terningkast": 70, "vurdering": 70, "trygt": 70, "gata": 70, "spill": 70, "lotto": 70, "klatr": 70, "bratt": 70, "fjellskrenten": 70, "melllom": 70, "estimer": [70, 81], "innskrevet": 70, "koordinat": 70, "leq": [70, 71], "avviket": 70, "partikl": 70, "reagererend": 70, "botanisten": 70, "robert": 70, "brown": 70, "1827": 70, "oppdaga": 70, "pollenkorn": 70, "vannmolekylen": 70, "dytter": 70, "pollenkornet": 70, "luktmolekyl": 70, "parfym": 70, "r\u00f8yk": 70, "lukt": 70, "makroskala": 70, "mikroskala": 70, "partikkelen": 70, "partikkel": [70, 71], "skr\u00e5bevegels": 70, "posisjonsarray": 70, "rutenettet": 70, "rute": 70, "koordinaten": 70, "yatzi": 70, "bursdag": 70, "fullbooket": 70, "fly": 70, "seint": 70, "k\u00f8en": 70, "idiot": 70, "flyet": 70, "hell": 70, "angel": 70, "bikergjengmedlemmen": 70, "plassen": 70, "grynter": 70, "idioten": 70, "sitter": 70, "setet": 70, "sted": [70, 74], "bytter": 70, "sete": 70, "stigningen": [71, 74], "forandringen": [71, 78], "forl\u00f8p": [71, 81], "df": 71, "lim_": 71, "behersk": 71, "f\u00f8rstederivert": 71, "l\u00f8sningsforslaget": [71, 74], "symbolsk": 71, "deriverer": 71, "yder": [71, 78], "titt": 71, "vel": 71, "fder_analytisk": 71, "delta_x": 71, "000000000000092": 71, "40000000000048885": 71, "03999999998569592": 71, "003999999920267783": 71, "00040000068821655077": 71, "999977025159751e": 71, "010780685348436e": 71, "07747097092215e": 71, "274037099909037e": 71, "008890058234101161": 71, "07992778373591136": 71, "524016993585974": 71, "581410364015028": 71, "n\u00f8yaktigheten": 71, "synker": 71, "\u00f8kend": 71, "minkend": 71, "attp\u00e5til": 71, "forvent": 71, "avrundingsfeil": 71, "avrundingsfeilen": 71, "xscale": 71, "vekstfarten": 71, "nyttigst": 71, "m\u00e5lefrekvensen": 71, "posisjonsdata": 71, "raw": 71, "githubusercont": 71, "andreasdh": 71, "nat3000": 71, "master": [71, 86], "doc": 71, "tid_": 71, "posisjon_m": 71, "00000": 71, "01001": 71, "000060": 71, "02002": 71, "000240": 71, "03003": 71, "000541": 71, "04004": 71, "000962": 71, "dydx": 71, "momentant": 71, "midtpunktstiln\u00e6rmingen": [71, 73], "4x": [71, 77, 78], "standardverdi": [71, 74], "sannsynligvi": 71, "posisjonsfunksjonen": 71, "nylig": [71, 78], "eksperimentel": 71, "70e": 71, "065t": 71, "heistur_kjemi_fysikk": 71, "dataframen": 71, "height_m": 71, "time_": 71, "tiln\u00e6rming": [73, 74], "graf": [73, 78, 79], "At": [73, 81], "bevist": 73, "fundamentalteorem": 73, "termen": 73, "greinen": 73, "omhandl": 73, "kalkulu": 73, "utnytt": 73, "grenseverdi": 73, "riemann": 73, "rektangl": 73, "rektanglen": 73, "venstresiden": [73, 78], "046675645664006": 73, "554129655173885": 73, "estimat": [73, 74, 81], "inkludert": 73, "10x": 73, "rektangelh\u00f8yden": 73, "ytterkant": 73, "underestim": 73, "overestim": 73, "venstretiln\u00e6rmingen": 73, "h\u00f8yretiln\u00e6rmingen": 73, "voksend": 73, "kompenser": 73, "endepunktet": 73, "aller": 73, "polynom": 73, "int_a": 73, "mathrm": 73, "x_k": 73, "f_analytisk": 73, "rektangelmetoden_h\u00f8yr": 73, "rektangelmetoden_midt": 73, "mink": 73, "langsomm": 73, "integrasjonen": 73, "toppstykket": 73, "horisont": 73, "nullt": 73, "reellt": [73, 81], "trapes": 73, "spander": 73, "illustrert": 73, "trapeset": 73, "stykket": 73, "2h": 73, "3h": 73, "ih": 73, "multipliser": [73, 81], "divider": [73, 78], "samlingen": 73, "f\u00f8rstegradspolynom": 73, "toppstykk": 73, "oscillerend": 73, "tredjegradstiln\u00e6rmingen": 73, "rektangelbas": 73, "famili": 73, "hyggelig": 73, "familien": [73, 78], "cote": 73, "trapesregelen": 73, "forel\u00f8pig": 73, "gauss_kvadratur": 73, "gauss": 73, "kvadratur": 73, "absolutt": 73, "2501565629694": 73, "25000015671972": 73, "6959623319719519e": 73, "trapesformelen": 73, "definisjon": 73, "sannsynlighetsfordel": 73, "utfal": 73, "sannsynlighetsfordeling": 73, "normalfordel": 73, "forsikr": 73, "997": 73, "tr\u00f8blete": 73, "pluss": [73, 78, 79], "turbul": 73, "d_f": 73, "cup": 73, "n\u00e6r": [73, 78], "reptisjon": 73, "spesialisert": 74, "l\u00f8sningsmetod": 74, "algebraisk": 74, "trik": 74, "l\u00f8sningsformel": 74, "pm": 74, "4ac": 74, "2a": 74, "femt": 74, "sine": [74, 79], "styrker": [74, 79], "006": [74, 78], "peil": 74, "s\u00e6rlig": 74, "langsom": 74, "y_forrig": 74, "x_forrig": 74, "x_7": 74, "x_8": 74, "n\u00e6rt": 74, "b\u00f8te": 74, "\u00e5penbar": 74, "lete": 74, "9999999962747097": 74, "\u00f8verst": 74, "tol": 74, "toleranseparamet": 74, "feilmargin": 74, "halveringspunkt": 74, "startet": 74, "toleransen": 74, "rasker": [74, 78, 81], "raphson": 74, "tangenten": 74, "startpunkt": 74, "tangent": 74, "startgjett": 74, "konverger": 74, "omform": 74, "deriverbar": 74, "beskrivelsen": 74, "langsomt": [74, 81], "tung": 74, "ekstremalpunkt": 74, "bunnpunktet": 74, "vidt": 74, "iterasjonen": 74, "oppst\u00e5r": 74, "startgjettet": 74, "newtons_metod": 74, "household": 74, "orden": 74, "hallei": 74, "ulempen": 74, "oppn\u00e5": [74, 79], "implementering": 74, "scientif": 74, "returverdien": 74, "root": [74, 76], "converg": [74, 76], "flag": [74, 76], "dukker": 74, "root_scalar": [74, 76], "broyden": [74, 76], "2y": [74, 76], "3z": [74, 76], "2z": [74, 76], "6y": [74, 76], "startverdien": [74, 78], "opt": [74, 76], "fun": [74, 76], "broyden1": [74, 76], "00000000e": [74, 76], "55271368e": [74, 76], "bisect": [74, 76], "veletablert": 76, "dfder": 76, "halveringsmetoden": 76, "nullpunkt_halv": 76, "method": [76, 89], "bracket": 76, "nullpunkt_newton": 76, "fprime": 76, "function_cal": 76, "9999999999993179": 76, "333331997329328": 76, "333333331995993": 76, "dy_dt": [76, 78], "y_int": [76, 78], "t_eval": [76, 78], "verkt\u00f8yet": 77, "stjernemerked": 77, "pensum": 77, "sympi": 77, "factor": 77, "solv": [77, 78], "utel": 77, "nonlinsolv": 77, "likning1": 77, "eq": 77, "likning2": 77, "likning3": 77, "2yx": 77, "diff": 77, "dsolv": 77, "uttrykk2": 77, "integrasjon": 77, "int_": 77, "oo": 77, "anbefal": 77, "vektor1": 77, "vektor2": 77, "prikkprodukt": 77, "dot": [77, 88], "skalarprodukt": 77, "kryssprodukt": 77, "cross": [77, 88], "vektorprodukt": 77, "coordsys3d": 77, "kartesisk": 77, "basisvektor": 77, "rommet": 77, "mathbf": 77, "hat": [77, 88], "ekstrastoff": 77, "universitetsniv\u00e5": 77, "col": 77, "transpon": 77, "rref": 77, "radredus": 77, "eigenv": 77, "egenverdi": 77, "eigenvect": 77, "egenvektor": 77, "diagon": 77, "diagonalis": 77, "determinanten": 77, "m1": 77, "m2": 77, "linalg": 77, "eig": 77, "determin": 77, "inv": 77, "tensorsolv": 77, "720": 77, "8064": 77, "ordin\u00e6r": 78, "influensautbrudd": 78, "ai_n": [78, 81], "ethvert": [78, 79], "differenslikningen": 78, "anvendelig": 78, "petrisk\u00e5l": 78, "satelitt": 78, "\u00f8konomisk": 78, "inntekt": 78, "investering": 78, "klima": 78, "funksjons_verdier_": 78, "bakterievekst": 78, "kb": [78, 83], "fallend": 78, "overordnet": 78, "bevis": 78, "bakterien": 78, "logistisk": [78, 84], "etterpr\u00f8v": 78, "virkelighet": 78, "forbedr": 78, "grunnlaget": 78, "satellitt": 78, "snart": 78, "initialverdi": 78, "andrederivert": 78, "gravitasjonen": 78, "massetetthet": 78, "startkonsentrasjonen": 78, "t_k": 78, "difflikningen": 78, "sammm": 78, "trinnet": 78, "differensiallikninga": 78, "difflikninga": 78, "oppdat": 78, "intitialbetingels": 78, "x_list": 78, "y_list": 78, "initalbetingelsen": 78, "lg": 78, "l\u00f8sningsinterval": 78, "n_": 78, "plotteverdi": 78, "ce": 78, "diskretiser": 78, "stegen": 78, "tok": 78, "u_": [78, 79], "u_n": [78, 79], "au_n": [78, 79], "2100": [78, 79], "1825": 78, "start\u00e5r": 78, "045": 78, "utslippsr": 78, "tonn": [78, 79], "innbygg": [78, 79], "\u00e5rstall": 78, "uder": 78, "utslippsraten": [78, 79], "vekstraten": 78, "b\u00e6reevnen": 78, "vekstrat": 78, "bakteriekoloni": 78, "_0": 78, "forh\u00e5ndsdefiner": 78, "forh\u00e5nd": 78, "tid_start": 78, "u0": 78, "omformuler": 78, "f\u00f8rsteorden": 78, "slipper": 78, "kula": 78, "tyngdekraften": 78, "starthastighet": 78, "tidsvariabl": 78, "tidsinterval": 78, "ordinari": 78, "differenti": 78, "equat": [78, 82], "pde": 78, "partial": [78, 82], "partiel": 78, "prinsippen": 78, "valu": [78, 88, 89], "dernest": 78, "tidsintervallet": 78, "evaluert": 78, "_y": 78, "_verdier": 78, "y_int2": 78, "tidsverdien": 78, "rung": 78, "kutta": 78, "rk45": 78, "go": 78, "l\u00f8sningsomr\u00e5d": 78, "4y": 78, "xy": 78, "dfrac": 78, "returnert": 78, "kari": 78, "\u00e5rsinntekt": 78, "oppretta": 78, "sparekonto": 78, "sparekontoen": 78, "inntekten": 78, "beregninga": 78, "fiskepopulasjon": 78, "avkj\u00f8lingslov": 78, "t_o": 78, "omgivelsen": [78, 82], "varmeanlegg": 78, "bil": 78, "innetemperaturen": 78, "bilen": 78, "fryktelig": 78, "romtemperatur": 78, "fiks": 78, "varmeanlegget": 78, "billigst": 78, "uheldigvi": 78, "verr": 78, "\u00f8delagt": 78, "familiemiddag": 78, "lovet": 78, "smakful": 78, "tilberedels": 78, "kalkun": 78, "middagen": 78, "plutselig": 78, "middagsavtalen": 78, "vanligvi": 78, "timen": 78, "kalkunen": 78, "ovn": 78, "spiseklar": 78, "panseret": 78, "tilbered": 78, "4v": 78, "2000e": 78, "500t": 78, "kj\u00f8returen": 78, "episoden": 78, "food": 78, "fabl": 78, "mythbust": 78, "haraldsrud": 79, "komplek": 79, "fasitsvar": 79, "motorsykkel": 79, "representasjonen": 79, "oppmerksom": 79, "begrensningen": 79, "innsikt": 79, "arbeid": 79, "\u00e5pner": 79, "refleksjon": 79, "rammebetingels": 79, "konsekvensen": 79, "gale": 79, "differensi": 79, "arbeidsformen": 79, "kompleksitet": [79, 81], "modelleringsprosessen": 79, "gaupebestand": 79, "m\u00e5ned": 79, "gaupepopulasjonen": 79, "etterf\u00f8lgend": 79, "utslippet": 79, "vekstfaktoren": 79, "india": 79, "tekstfilen": 79, "gyldighetsomr\u00e5det": 79, "begrensningsparamet": 79, "maksimalt": [79, 81], "parentesen": 79, "stagner": 79, "ekstraoppgav": 79, "tiltaken": 79, "co2": 79, "topputslipp": 79, "frivil": 80, "navnesen": 81, "modelleringsrapport": 81, "m\u00e5loppn\u00e5els": 81, "burd": 81, "\u00e5rlige": 81, "sykdomsforl\u00f8p": 81, "smittespredningsmodel": 81, "smittsomm": 81, "infect": 81, "spredningsraten": 81, "spredningsm\u00f8nst": 81, "smittsom": 81, "hygien": 81, "munnbind": 81, "kontaktm\u00f8nst": 81, "befolkningstetthet": 81, "mobilitet": 81, "hendelsen": 81, "individen": 81, "spre": 81, "folk": 81, "gjeld": 81, "egna": 81, "betydelig": 81, "langtidsvirkning": 81, "enn\u00e5": 81, "validert": 81, "immun": 81, "endring_smitted": 81, "endring_frisk": 81, "1509": 81, "influensasesong": 81, "smittede_data": 81, "infisert": 81, "modelldata": 81, "sakt": 81, "oppn\u00e5dd": 81, "flokkimmunitet": 81, "influensasesongen": 81, "befolkningen": 81, "sesongen": 81, "tested": 81, "tilpassed": 81, "influensaviru": 81, "h\u00f8st": 81, "smittsomhet": 81, "sykdomstopp": 81, "sesong": 81, "sosial": 81, "helsemessig": 81, "levestandard": 81, "parameterjust": 81, "vaksineringseffekt": 81, "omg": 82, "tomg": 82, "startverid": 82, "kopp": 82, "t_omg": 82, "koppen": 82, "tidsparamter": 82, "t_slutt": 82, "avkj\u00f8l": 82, "text": [82, 86, 88], "temperatur_kopp": 82, "pengw": 83, "bisco": 83, "4850": 83, "5750": 83, "5200": 83, "5400": 83, "core": [83, 86], "rangeindex": 83, "entri": 83, "float64": 83, "memori": 83, "usag": 83, "totalnebb": 83, "073099": 83, "351485": 83, "575000": 83, "0x203dc524fd0": 83, "9850746268656716": 83, "fagdisiplin": 84, "samfunnsvitenskap": 84, "\u00f8konomi": 84, "modellfunksjon": 84, "varian": 84, "curve_fit": 84, "modellfunksjonen": 84, "underbiblioteket": 84, "curv": [84, 88, 89], "fit_": 84, "kovarian": 84, "kovariansen": 84, "koeffisient": 84, "06359996": 84, "19079989": 84, "69959972": 84, "regresjonsmodellen": 84, "1x": 84, "x_ny": 84, "y_model": 84, "cornflowerblu": 84, "mater": 84, "original": 84, "r2_score": 84, "y_predikert": 84, "r2": [84, 88], "9585289514866979": 84, "eksisterend": 84, "framtiden": 84, "prosedyren": 84, "modell_logistisk": 84, "ks": 85, "solinnstr\u00e5l": 85, "radius_jorda": 85, "e_inn": 85, "3e": 85, "735e": 85, "e_absorbert": 85, "215e": 85, "overfalten": 85, "flatenhet": 85, "tidsenhet": 85, "varmestr\u00e5l": 85, "670373e": 85, "temperatur_kelvin": 85, "temperatur_celsiu": 85, "gjennomsnittstemperaturen": 85, "tkinter": [86, 88], "grensesnitt": 86, "vindu": [86, 88], "tk": [86, 88], "simuleringsplattform": [86, 88], "pack": [86, 88], "knapp1": 86, "button": 86, "fg": 86, "knapp2": 86, "mainloop": [86, 88], "toppramm": 86, "top": 86, "bunnramm": 86, "bottom": 86, "checkvar1": 86, "intvar": 86, "checkvar2": 86, "usernam": 86, "checkbutton": 86, "onvalu": 86, "offvalu": 86, "sticki": 86, "deep": 86, "tclerror": 86, "e3f7033e4f0a": 86, "anaconda3": 86, "lib": 86, "cnf": 86, "3141": 86, "3142": 86, "3143": 86, "widget": [86, 88], "3144": 86, "3145": 86, "widgetnam": 86, "extra": 86, "2565": 86, "2566": 86, "2567": 86, "2568": 86, "_w": 86, "_option": 86, "can": [86, 88, 89], "invok": 86, "command": 86, "applic": 86, "been": 86, "destroi": 86, "pyqt5": 86, "qtwidget": 86, "qapplic": 86, "qwidget": 86, "qpushbutton": 86, "qvboxlayout": 86, "app": 86, "window": 86, "layout": 86, "addwidget": 86, "setlayout": 86, "exec": 86, "sy": 86, "requir": 86, "qlabel": 86, "creat": 86, "instanc": 86, "argv": 86, "gui": 86, "setwindowtitl": 86, "setgeometri": 86, "move": [86, 88], "hellomsg": 86, "h1": 86, "hello": 86, "world": 86, "event": 86, "loop": 86, "main": 86, "exit": 86, "exec_": 86, "except": 86, "occur": 86, "us": [86, 89], "tb": 86, "see": 86, "full": 86, "systemexit": 86, "user": 86, "a_har": 86, "site": 86, "packag": 86, "interactiveshel": 86, "userwarn": 86, "quit": 86, "ctrl": 86, "warn": 86, "stacklevel": 86, "grafikkmodul": 87, "vpython": [87, 88], "sekser": 87, "rettvinkla": 87, "lb": 88, "lb1": 88, "lb2": 88, "natom": 88, "chang": 88, "thi": [88, 89], "have": 88, "more": 88, "fewer": 88, "typic": 88, "contain": 88, "cube": 88, "grai": 88, "edg": 88, "6e23": 88, "helium": 88, "ratom": 88, "03": 88, "wildli": 88, "exagger": 88, "around": 88, "room": 88, "anim": 88, "canva": 88, "win": 88, "align": 88, "hard": 88, "sphere": 88, "theoret": 88, "averag": [88, 89], "speed": 88, "distribut": 88, "sec": 88, "same": [88, 89], "collis": 88, "collid": 88, "One": 88, "mark": 88, "leav": 88, "trail": 88, "so": 88, "follow": 88, "its": 88, "path": 88, "caption": 88, "boxbottom": 88, "boxtop": 88, "vert1": 88, "vert2": 88, "vert3": 88, "vert4": 88, "apo": 88, "pavg": 88, "kinet": 88, "2mass": 88, "kt": 88, "cyan": 88, "make_trail": 88, "retain": 88, "trail_radiu": 88, "theta": 88, "px": 88, "pz": 88, "deltav": 88, "barx": 88, "nhisto": 88, "4500": 88, "histo": 88, "gg": 88, "graph": 88, "xmax": 88, "xtitl": 88, "ytitl": 88, "ymax": 88, "theori": 88, "gcurv": 88, "3001": 88, "accum": 88, "vdist": 88, "gvbar": 88, "interchang": 88, "barx1": 88, "barx2": 88, "checkcollis": 88, "hitlist": 88, "aj": 88, "dr": 88, "mag2": 88, "snapshot": 88, "numba": 88, "rate": 88, "accumul": 88, "updat": 88, "check": [88, 89], "ani": 88, "took": 88, "place": 88, "momenta": 88, "two": [88, 89], "ij": 88, "ptot": 88, "posi": 88, "posj": 88, "vj": 88, "vrel": 88, "continu": 88, "exactli": 88, "veloc": 88, "rrel": 88, "mag": 88, "one": 88, "went": 88, "wai": 88, "through": [88, 89], "anoth": 88, "angl": 88, "between": [88, 89], "triangl": 88, "compos": 88, "line": 88, "center": 88, "where": 88, "hit": 88, "asin": 88, "distanc": 88, "travel": 88, "contact": 88, "deltat": 88, "spent": 88, "insid": 88, "back": 88, "up": 88, "configur": 88, "mtot": 88, "pcmi": 88, "pcmj": 88, "bounc": 88, "lab": 88, "chapter": 89, "work": 89, "real": 89, "introduc": 89, "pand": 89, "partit": 89, "statist": 89, "binari": 89, "hypothesi": 89, "bootstrap": 89, "resampl": 89, "dimension": 89, "answer": 89, "question": 89, "retent": 89, "knowledg": 89, "kei": 89, "take": 89, "awai": 89, "tabular": 89, "spreadsheet": 89, "tabl": 89, "file": 89, "includ": 89, "comma": 89, "ar": 89, "explor": 89, "identifi": 89, "outlier": 89, "divid": 89, "disjoint": 89, "subset": 89, "singl": 89, "common": 89, "minim": 89, "measur": 89, "error": 89, "mode": 89, "median": 89, "absolut": 89, "squar": 89, "testabl": 89, "decid": 89, "compet": 89, "hypothes": 89, "denot": 89, "h_0": 89, "assum": 89, "being": 89, "come": 89, "underli": 89, "phenomena": 89, "differ": 89, "caus": 89, "free": 89, "techniqu": 89, "draw": 89, "new": 89, "when": 89, "drawn": 89, "pool": 89, "replac": 89, "directli": 89, "pair": 89}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"promod": 0, "datafil": [1, 2, 66], "prosjekt": 3, "i": [3, 18, 34, 35, 36, 38, 43, 44, 46, 48, 51, 64, 68, 77, 85], "databehandl": 3, "oppgav": [3, 8, 12, 18, 35, 36, 38, 40, 41, 42, 43, 44, 46, 47, 48, 49, 50, 51, 59, 62, 65, 66, 70, 71, 73, 74, 75, 78, 79, 84, 85], "1": [3, 8, 12, 15, 16, 18, 22, 23, 35, 36, 39, 43, 44, 47, 48, 50, 51, 53, 59, 62, 65, 66, 67, 70, 71, 73, 75, 76, 78, 81, 85], "kjernefysisk": 3, "reaksjon": 3, "fysikk": [3, 15, 44, 51, 62], "teori": [3, 6, 7, 20, 63, 81, 87], "2": [3, 8, 12, 15, 16, 18, 23, 25, 26, 35, 36, 39, 43, 44, 47, 48, 50, 51, 52, 54, 59, 62, 65, 66, 67, 70, 71, 73, 74, 75, 76, 78, 81, 85], "line\u00e6r": [3, 10, 77, 84], "regresjon": [3, 6, 10, 19, 30, 69, 84], "matematikk": [3, 62, 65, 77], "3": [3, 8, 18, 27, 35, 36, 39, 43, 44, 47, 48, 50, 51, 55, 59, 62, 65, 67, 70, 71, 73, 74, 76, 78, 81, 85], "klassifis": 3, "av": [3, 4, 8, 9, 12, 13, 14, 15, 16, 17, 19, 23, 24, 30, 36, 41, 42, 44, 67, 68, 69, 70, 71, 73, 74, 75, 77, 80, 85], "irisblomst": 3, "biologi": [3, 16, 44, 51, 65], "4": [3, 18, 28, 35, 36, 43, 44, 47, 48, 51, 56, 62, 65, 67, 70, 71, 73, 76, 78], "euler": [3, 40, 78], "totientfunksjon": 3, "5": [3, 29, 36, 47, 48, 51, 57, 62, 65, 67, 71, 73, 78, 81], "r\u00f8dvinskvalitet": 3, "kjemi": [3, 17, 44, 62, 65], "6": [3, 30, 47, 48, 51, 58, 62, 65, 71, 73, 78], "lemur": 3, "model": [4, 10, 13, 15, 16, 32, 37, 39, 78, 79, 81], "jorda": [4, 85], "str\u00e5lingsbalans": 4, "antakels": 4, "totalmodel": 4, "datasamling": [5, 7, 29, 58, 65], "l\u00e6ringsutbytt": [5, 6, 7, 9, 11, 19, 20, 35, 36, 48, 50, 51, 59, 60, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 78, 87], "array": [5, 7, 40, 58, 65], "underveisoppgav": [5, 6, 7, 9, 11, 19, 20, 36, 38, 40, 46, 48, 50, 51, 59, 60, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 78, 87], "l\u00f8sningsforslag": [5, 34, 39, 47, 48, 50, 51, 59, 62, 64, 65, 66, 68, 69, 70, 71, 73, 74, 78], "opprett": [5, 65], "behandl": [5, 19, 65], "arraydata": [5, 65], "datah\u00e5ndt": [6, 30, 67, 68, 83], "lese": [6, 19, 36], "fra": [6, 49], "fil": 6, "lister": [7, 29, 47, 50, 54, 68], "st\u00f8tte": [8, 85], "til": [8, 36, 85], "modelleringsoppgav": [8, 15, 16, 17, 18, 43, 44, 85], "temperaturmodel": [8, 85], "utrykket": [8, 85], "temperatur": [8, 85], "man": [8, 85], "skal": [8, 85], "komm": [8, 85], "frem": [8, 85], "l\u00f8sning": [8, 38, 46, 51, 59, 85], "ved": [8, 85], "bruk": [8, 73, 77, 85], "figuren": [8, 85], "over": [8, 85], "10": [9, 23, 51, 62, 65, 78], "numerisk": [9, 12, 24, 41, 71, 72, 73, 75, 76], "integrasjon": [9, 23, 73], "rektangelmetoden": [9, 23, 73], "derivasjon": [9, 23, 71], "funksjon": [9, 19, 23, 28, 47, 57, 62, 63, 68], "ulik": [9, 78], "tiln\u00e6rming": [9, 71], "maskinl\u00e6r": [10, 13, 14, 42, 67, 80, 83], "ii": [10, 34, 35, 44, 66], "nevral": [10, 13], "nettverk": [10, 13], "og": [10, 11, 13, 14, 19, 22, 23, 29, 36, 37, 42, 44, 47, 53, 58, 59, 60, 62, 64, 66, 67, 69, 70, 72, 74, 77, 78, 80, 81, 87, 88], "kunstig": 10, "intelligen": 10, "mer": [10, 46, 51], "avansert": 10, "eksempel": [10, 64], "lager": 10, "datasett": 10, "bygg": 10, "7": [11, 31, 47, 48, 51, 62, 65, 71, 73, 78], "likning": [11, 12, 24, 41, 74, 75, 76, 77], "nullpunkt": [11, 74], "halveringsmetoden": [11, 41, 74], "newton": [11, 15, 25, 74, 78, 82], "metod": [11, 15, 16, 17, 40, 70, 72, 73, 74, 78], "l\u00f8sing": [12, 15, 16, 17, 24, 41, 75], "utforsk": [13, 14, 42, 67, 80], "datasettet": [13, 14, 42, 80], "visualisering": [13, 14, 30, 42, 80], "test": [13, 14, 42, 47, 67, 80], "valid": [13, 14, 42, 80], "modellen": [13, 14, 42, 67, 80], "knn": 13, "svm": 13, "k": 13, "mean": 13, "cluster": 13, "regresjonsmodel": [13, 84], "bestemmels": 13, "art": 13, "oppryd": [14, 42, 80], "kinematikk": 15, "del": [15, 16], "diskret": [15, 16, 23, 79], "hint": [15, 18, 34, 41, 43], "differenslikning": [15, 79], "kontinuerlig": [15, 16, 78], "lov": [15, 25, 78], "som": [15, 40, 49, 85], "differensiallikn": 15, "en": [15, 16, 17, 46, 49, 59, 74], "differensiallikning": [15, 16, 17, 25, 40, 78], "iib": 16, "bevaringsbiolog": 16, "rapport": [16, 17, 18, 43], "iic": 17, "reaksjonskinetikk": 17, "reaksjonsfart": 17, "forklar": 17, "smittemodel": [18, 25, 39, 81], "smittespredn": [18, 43], "ekstra": [18, 47, 59], "plot": [19, 20, 29, 47, 68], "eksperimentel": 19, "data": [19, 23, 30, 66, 71], "fildata": 19, "interpolasjon": 19, "med": [20, 36, 38, 42, 62, 65, 66, 70, 71, 77, 83], "matplotlib": 20, "repetisjon": [21, 34, 35], "tema": [22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33], "tall": [22, 60, 87], "variabl": [22, 46, 47, 53, 59, 60, 62], "input": [22, 60], "matematisk": [22, 60, 70], "bibliotek": [22, 59, 71, 73, 76], "punkter": 23, "11": [24, 51, 62, 65], "12": [25, 51, 62], "fortsettels": 25, "beslutning": 26, "l\u00f8kker": [27, 38, 46, 47, 51, 56], "statistisk": 30, "operasjon": [30, 60], "sektordiagram": 30, "s\u00f8ylediagram": 30, "algoritm": [31, 70], "8": [32, 47, 51, 62, 65, 78], "9": [33, 51, 62, 65, 78], "grafikk": [33, 87], "biologioppgav": [34, 48], "fyll": 34, "inn": [34, 85], "koden": 34, "kjemioppgav": [35, 48], "periodisk": 35, "trender": 35, "st\u00f8kiometrisk": 35, "beregning": 35, "titrer": 35, "utfordr": [35, 70], "teknolog": 36, "programm": [36, 37, 38, 46, 47], "et": [36, 40], "b\u00e6rekraftig": 36, "perspektiv": 36, "mikrokontroller": 36, "introduksjon": [36, 88], "micro": 36, "bit": 36, "elektronikken": 36, "grunnleggend": [36, 47], "led": 36, "skjermen": 36, "knapper": 36, "radio": 36, "ekstern": 36, "tilkobling": 36, "pin": 36, "spen": 36, "str\u00f8m": 36, "resistan": 36, "skrive": 36, "sensor": 36, "overlev": 36, "p\u00e5": [36, 69, 78, 85], "mar": 36, "innhold": 37, "ent3r": 38, "gjett": 38, "tallet": 38, "skilpaddegrafikk": [38, 46, 51], "skilpadd": [38, 46, 51], "skilpaddekunst": 38, "avsluttend": 38, "eksempl": [40, 78], "\u00e5": [40, 51, 73, 74], "l\u00f8se": [40, 76, 77], "program": 40, "l\u00f8ser": 40, "startverdi": 40, "figur": [41, 68], "feilh\u00e5ndter": [41, 72], "titan": 42, "lagr": 42, "\u00e5pne": 42, "v\u00e5r": 42, "zombi": 44, "apokalyps": 44, "utgangspunkt": 44, "klimamodel": 44, "ozonlaget": 44, "farstlov": 44, "fartslov": 44, "dannels": 44, "nedbrytn": 44, "ozon": 44, "stratosf\u00e6ren": 44, "drivhuseffekten": 44, "solsystemet": 44, "teoretisk": 44, "bakgrunn": 44, "statistikkprosjekt": 45, "liten": 46, "start": 46, "variabel": [46, 47, 59], "komplisert": [46, 51], "grundig": [46, 51], "litt": [46, 49], "om": 46, "videoer": [46, 51, 59, 60, 65, 68, 69, 73, 74, 78], "variabeltyp": [47, 59], "vilk\u00e5r": [47, 48, 55], "tester": [47, 48, 55], "filmer": [47, 62], "innledend": 48, "definisjon": [48, 51, 62, 64], "python": [48, 77], "n\u00f8stede": [48, 51], "fysikkoppgav": 48, "video": [48, 50, 71], "f\u00f8rste": 49, "kodesnutt": 49, "nybegynner": 49, "de": 49, "kan": [49, 70], "f\u00f8r": 49, "while": 51, "For": 51, "tenk": 51, "tallf\u00f8lger": 51, "tallrekk": 51, "naturvitenskapelig": 51, "problem": 51, "l\u00f8sningforslag": 51, "13": [51, 62], "14": [51, 62], "15": 51, "16": 51, "17": 51, "programmeringsverkt\u00f8i": 52, "jupyt": 52, "notebook": 52, "github": 52, "frivillig": 52, "quiz": [53, 54, 55, 56, 57, 58], "aritmetikk": [53, 59, 60], "dictionari": [58, 65], "datatyp": 59, "hva": [59, 79], "er": 59, "pseudokod": [59, 70], "print": 59, "kommentar": 59, "brukerinput": 59, "datamaskinen": 59, "krever": 59, "n\u00f8yaktig": 59, "instruks": 59, "output": 60, "testquiz": 61, "form": 61, "parameternavn": 62, "flere": [62, 68], "returverdi": 62, "lokal": 62, "global": 62, "klasser": 64, "objekt": 64, "skilpaddeobjekt": 64, "spill": 64, "vektorobjekt": 64, "arv": 64, "vektoris": 65, "tupler": 65, "datah\u00e5nd": [66, 69], "h\u00e5ndtere": 66, "visualiser": [66, 74], "panda": [66, 83], "rydd": 66, "visualis": [66, 68, 69], "unders\u00f8k": 66, "iv": 67, "steg": 67, "le": 67, "dataen": 67, "velg": 67, "treningssett": 67, "testsett": 67, "lag": 67, "evalu": 67, "vider": 67, "analys": 67, "plott": 68, "samm": 68, "iii": 69, "statistikk": 69, "deskriptiv": 69, "m\u00e5l": 69, "spredn": 69, "interkvartilbredd": 69, "kvartil": 69, "persentil": 69, "varian": 69, "standardavvik": 69, "feil": 69, "korrelasjon": 69, "stokastisk": 70, "simulering": 70, "primtal": 70, "eratosthen": 70, "sil": 70, "slik": 70, "du": 70, "programmer": 70, "algoritmen": 70, "kvadratr\u00f8tt": 70, "gammel": 70, "babylonsk": 70, "mont": 70, "carlo": 70, "sannsynlighetsbegrepet": 70, "sannsynlighet": 70, "nedarv": 70, "tiln\u00e6rm": 70, "pi": 70, "brownsk": 70, "bevegels": 70, "enkel": [70, 74], "diffusjon": 70, "derivasjonsbegrepet": 71, "framoverdifferansen": 71, "feilanalys": 71, "andr": [71, 84], "bakoverdifferansen": 71, "sentraldifferansen": 71, "didaktisk": 71, "ekstrastoff": 73, "implement": [73, 78], "venstretiln\u00e6rm": 73, "h\u00f8yretiln\u00e6rm": 73, "midtpunktstiln\u00e6rm": 73, "trapesmetoden": 73, "simpson": 73, "integrer": [73, 76, 77], "praktisk": 74, "anvendels": 74, "l\u00f8sningen": 74, "finn": 74, "nullpunktet": 74, "forbedring": 74, "metoden": 74, "likningssett": [74, 76, 77], "deriver": [76, 77], "difflikning": [76, 77], "symbolsk": 77, "utregn": 77, "ca": 77, "comput": 77, "algebra": 77, "system": 77, "faktoris": 77, "elev": 77, "r2": 77, "vektorregn": 77, "r1": 77, "spesielt": 77, "interessert": 77, "matriseregn": 77, "taylor": 77, "rekker": 77, "forward": 78, "initialbetingels": 78, "deloppgav": 78, "od": 78, "l\u00f8sere": 78, "viser": 79, "bilden": 79, "rapporteksempel": 81, "hensikt": 81, "resultat": 81, "dr\u00f8fting": 81, "konklusjon": 81, "avkj\u00f8lingslov": 82, "pingvin": 83, "str\u00e5lingsbalansen": 85, "energi": 85, "treffer": 85, "planeten": 85, "systemet": 85, "ut": 85, "grafisk": 86, "brukergrensesnitt": 86, "tilfeldig": 87, "turtl": 87, "gridsystem": 88, "rutenettsystem": 88, "rad": 88, "kolonn": 88, "review": 89, "space": 89, "repetit": 89}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 6, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx": 56}}) \ No newline at end of file