From: Date: July 3 2009 10:46am Subject: bzr push into mysql-pe branch (Sergey.Glukhov:3424 to 3426) List-Archive: http://lists.mysql.com/commits/77867 Message-Id: <0KM7003AO9TG7QE0@fe-emea-09.sun.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="Boundary_(ID_I83ekBmDABi/OLPKmoBrYw)" --Boundary_(ID_I83ekBmDABi/OLPKmoBrYw) MIME-version: 1.0 Content-type: text/plain; CHARSET=US-ASCII Content-transfer-encoding: 7BIT Content-disposition: inline 3426 Sergey Glukhov 2009-07-03 [merge] 5.1-bugteam->6.0-bugteam merge @ mysql-test/r/view.result 5.1-bugteam->6.0-bugteam merge @ mysql-test/t/view.test 5.1-bugteam->6.0-bugteam merge @ sql/sql_insert.cc 5.1-bugteam->6.0-bugteam merge modified: mysql-test/r/view.result mysql-test/t/view.test sql/sql_insert.cc 3425 Sergey Glukhov 2009-07-03 [merge] 5.1-bugteam->6.0-bugteam merge @ mysql-test/r/warnings.result 5.1-bugteam->6.0-bugteam merge @ mysql-test/t/warnings.test 5.1-bugteam->6.0-bugteam merge @ tests/mysql_client_test.c 5.1-bugteam->6.0-bugteam merge modified: mysql-test/r/warnings.result mysql-test/t/warnings.test tests/mysql_client_test.c 3424 Bernt M. Johnsen 2009-07-03 [merge] Prepare for push modified: mysql-test/r/sp-fib.result mysql-test/t/sp-fib.test === modified file 'mysql-test/r/view.result' --- a/mysql-test/r/view.result 2009-05-19 04:47:24 +0000 +++ b/mysql-test/r/view.result 2009-07-03 08:42:46 +0000 @@ -3719,6 +3719,117 @@ DROP TABLE t1; # -- End of test case for Bug#40825 +# +# Bug #45806 crash when replacing into a view with a join! +# +CREATE TABLE t1(a INT UNIQUE); +CREATE VIEW v1 AS SELECT t1.a FROM t1, t1 AS a; +INSERT INTO t1 VALUES (1), (2); +REPLACE INTO v1(a) SELECT 1 FROM t1,t1 AS c; +SELECT * FROM v1; +a +1 +2 +1 +2 +REPLACE INTO v1(a) SELECT 3 FROM t1,t1 AS c; +SELECT * FROM v1; +a +1 +2 +3 +1 +2 +3 +1 +2 +3 +DELETE FROM t1 WHERE a=3; +INSERT INTO v1(a) SELECT 1 FROM t1,t1 AS c +ON DUPLICATE KEY UPDATE `v1`.`a`= 1; +SELECT * FROM v1; +a +1 +2 +1 +2 +CREATE VIEW v2 AS SELECT t1.a FROM t1, v1 AS a; +REPLACE INTO v2(a) SELECT 1 FROM t1,t1 AS c; +SELECT * FROM v2; +a +1 +2 +1 +2 +1 +2 +1 +2 +REPLACE INTO v2(a) SELECT 3 FROM t1,t1 AS c; +SELECT * FROM v2; +a +1 +2 +3 +1 +2 +3 +1 +2 +3 +1 +2 +3 +1 +2 +3 +1 +2 +3 +1 +2 +3 +1 +2 +3 +1 +2 +3 +INSERT INTO v2(a) SELECT 1 FROM t1,t1 AS c +ON DUPLICATE KEY UPDATE `v2`.`a`= 1; +SELECT * FROM v2; +a +1 +2 +3 +1 +2 +3 +1 +2 +3 +1 +2 +3 +1 +2 +3 +1 +2 +3 +1 +2 +3 +1 +2 +3 +1 +2 +3 +DROP VIEW v1; +DROP VIEW v2; +DROP TABLE t1; +# -- End of test case for Bug#45806 # ----------------------------------------------------------------- # -- End of 5.0 tests. # ----------------------------------------------------------------- === modified file 'mysql-test/r/warnings.result' --- a/mysql-test/r/warnings.result 2009-02-19 14:10:58 +0000 +++ b/mysql-test/r/warnings.result 2009-07-03 08:31:12 +0000 @@ -310,4 +310,9 @@ ERROR 22001: Data too long for column 'c insert into t2 values(@q); ERROR 22001: Data too long for column 'c_tinyblob' at row 1 drop table t1, t2; +DROP TABLE t1; +ERROR 42S02: Unknown table 't1' +SHOW ERRORS; +Level Code Message +Error 1051 Unknown table 't1' End of 5.0 tests === modified file 'mysql-test/t/view.test' --- a/mysql-test/t/view.test 2009-05-19 04:47:24 +0000 +++ b/mysql-test/t/view.test 2009-07-03 08:42:46 +0000 @@ -3704,6 +3704,38 @@ DROP TABLE t1; --echo # -- End of test case for Bug#40825 --echo +--echo # +--echo # Bug #45806 crash when replacing into a view with a join! +--echo # +CREATE TABLE t1(a INT UNIQUE); +CREATE VIEW v1 AS SELECT t1.a FROM t1, t1 AS a; +INSERT INTO t1 VALUES (1), (2); + +REPLACE INTO v1(a) SELECT 1 FROM t1,t1 AS c; +SELECT * FROM v1; +REPLACE INTO v1(a) SELECT 3 FROM t1,t1 AS c; +SELECT * FROM v1; +DELETE FROM t1 WHERE a=3; +INSERT INTO v1(a) SELECT 1 FROM t1,t1 AS c +ON DUPLICATE KEY UPDATE `v1`.`a`= 1; +SELECT * FROM v1; + +CREATE VIEW v2 AS SELECT t1.a FROM t1, v1 AS a; + +REPLACE INTO v2(a) SELECT 1 FROM t1,t1 AS c; +SELECT * FROM v2; +REPLACE INTO v2(a) SELECT 3 FROM t1,t1 AS c; +SELECT * FROM v2; +INSERT INTO v2(a) SELECT 1 FROM t1,t1 AS c +ON DUPLICATE KEY UPDATE `v2`.`a`= 1; +SELECT * FROM v2; + +DROP VIEW v1; +DROP VIEW v2; +DROP TABLE t1; + +--echo # -- End of test case for Bug#45806 + --echo # ----------------------------------------------------------------- --echo # -- End of 5.0 tests. --echo # ----------------------------------------------------------------- === modified file 'mysql-test/t/warnings.test' --- a/mysql-test/t/warnings.test 2009-02-05 10:05:23 +0000 +++ b/mysql-test/t/warnings.test 2009-07-03 08:31:12 +0000 @@ -220,4 +220,11 @@ insert into t2 values(@q); drop table t1, t2; +# +# Bug#42364 SHOW ERRORS returns empty resultset after dropping non existent table +# +--error ER_BAD_TABLE_ERROR +DROP TABLE t1; +SHOW ERRORS; + --echo End of 5.0 tests === modified file 'sql/sql_insert.cc' --- a/sql/sql_insert.cc 2009-06-23 11:37:39 +0000 +++ b/sql/sql_insert.cc 2009-07-03 08:42:46 +0000 @@ -1142,6 +1142,33 @@ static bool mysql_prepare_insert_check_t /* + Get extra info for tables we insert into + + @param table table(TABLE object) we insert into, + might be NULL in case of view + @param table(TABLE_LIST object) or view we insert into +*/ + +static void prepare_for_positional_update(TABLE *table, TABLE_LIST *tables) +{ + if (table) + { + if(table->reginfo.lock_type != TL_WRITE_DELAYED) + table->prepare_for_position(); + return; + } + + DBUG_ASSERT(tables->view); + List_iterator it(*tables->view_tables); + TABLE_LIST *tbl; + while ((tbl= it++)) + prepare_for_positional_update(tbl->table, tbl); + + return; +} + + +/* Prepare items in INSERT statement SYNOPSIS @@ -1290,9 +1317,8 @@ bool mysql_prepare_insert(THD *thd, TABL Only call prepare_for_posistion() if we are not performing a DELAYED operation. It will instead be executed by delayed insert thread. */ - if ((duplic == DUP_UPDATE || duplic == DUP_REPLACE) && - (table->reginfo.lock_type != TL_WRITE_DELAYED)) - table->prepare_for_position(); + if (duplic == DUP_UPDATE || duplic == DUP_REPLACE) + prepare_for_positional_update(table, table_list); DBUG_RETURN(FALSE); } === modified file 'tests/mysql_client_test.c' --- a/tests/mysql_client_test.c 2009-07-01 12:34:23 +0000 +++ b/tests/mysql_client_test.c 2009-07-03 08:31:12 +0000 @@ -5358,6 +5358,8 @@ static void test_errors() result= mysql_store_result(mysql); mytest(result); + DIE_UNLESS(mysql_num_rows(result) == 1); + (void) my_process_result_set(result); mysql_free_result(result); } --Boundary_(ID_I83ekBmDABi/OLPKmoBrYw) MIME-version: 1.0 Content-type: text/bzr-bundle; CHARSET=US-ASCII; name="bzr/sergey.glukhov@stripped" Content-transfer-encoding: 7BIT Content-disposition: inline; filename="bzr/sergey.glukhov@stripped" # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: sergey.glukhov@stripped # target_branch: file:///home/gluh/MySQL/mysql-6.0-bugteam/ # testament_sha1: abacb372542a9f2355d47a083b40686d93574943 # timestamp: 2009-07-03 13:46:30 +0500 # source_branch: file:///home/gluh/MySQL/mysql-5.1-bugteam/ # base_revision_id: bernt.johnsen@stripped\ # ac0x906mljzc6os9 # # Begin bundle IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWbjZU0IAFxDfgHCw+f///3// /+D////+YB9j29WQd83trm73b3TZ70OPGu3AumDNjT3OdNmJpq9m6WrayrPGTc4ZzzhvY9AA6daC TTJQAoHJjWUSddJV0UAoqEoTQponqntKP1PKNTNMmkxqNNqGgaGINNA9TTQBkBJIACBEaaifpCnq ekep6h6jTE2oaGgMgAAyDmmIyMmmTQDIaMhkyAAAGRpkaBhDIEhIQmU0MKaYQCYoBpkAGQAGgD1G h5QRKQgAjTTTQMmkzU9A1Gp6m1NBoAaAAA00CpSACABNGgTAjQUwRJ6gD1D1HqPUaBkMjTAuAfXR zav+2sa9EGL+WWyTyJIMmzDLFlqoZdpXndbdEx3mBaWxNdgyoI9X66lXRgIQ6j5FJzki0uVmg6SH SdRZqlZdMOf+7xYvZ3+thNLSmNceb3Fl13zPl7mtejdjFuiKkhwiSAUbqLES13/rOYBsQYi3AIJe npDaro2c767LtKbpu8J9aysTfTusanM0m6bGPnjCBk/E0U/OF4ZyEaF8XZyKFcBcB9fXxpFmHTxd K+Xj2AiyI0c6c6cnTfCidMQGtjneRKkYEalM971tLt5yz2ZM3njUC22jhhlym7G3PX34wYJMBfzd f+3JeyWIcZlhxVKF0McP9itOUOg6kwOIsfxPIf1ln5g/RDcPeVfj8iBxoEGMUkINttjbY20Ng2gb nQ/pSFbv9GDawnENDbGwHuAy8vk82m7TMqHmdNjIXtbz3LP0VaFnpV75VWUlpPTJh3vB6huMrYHd 5PWqKe69ZYxlsGdPG2tGliPS98SydyEY5Abm2metrlmezKJ7RQxNz3O2tqptx6syeuVWzvMiZO1s 7SjIZmZoKQt2ajYHJigGmmEc+YVn3B+QwnbDE3UUUU/YmX6xa7C8ooe8oW9s37yfI5Ln/Y8sN+b+ 4/luYMFFFSo/hPnNBWq1uXbdW+v3YAvjse0zhpYsBz9itg+GhVM9+Stp3gaJBI4Ye4m31ewA8r9m 6lP7V8SKue1DWA+Q+LxtRUr8rt/hCcVd9yTODRpePbcvb8cIONrGxylTNZw6MIHygxsbGDGxsbB3 zxqn6euiHuPcdQwG0qNTfsdrDGzjps1tiDdxqDYVOnwvbk3ICgowjMKhRd1EtG33vebDXOlI1SRb Fki8Gbe3PA/A+4uZZLOHixU9h8WDiuZded99LhAYCkDdJpxHCnGl4mbYjZLn+KdEcp1Ukjl9ld+d xt+Nt258nmOqriPHPf4d+PN1bppWDqS9c9MFI9c4rpovdVtz7YklKEr0ra/UB5nnSJeUQPheYkhJ yhQnaB6RCoC0spMjoakMuu4O6TC0UUUUcz0bcJa2dvdu5ud8kaNdQT3H0bE2+DeMvd57aEvm4BeR ijZt24Nb6jhhLqVdhKL5izjTPBJSwipKIXSQPSG+PNYkLSvS3jjhZiLADO0MfPJIkiQCQlKUp2pN pki+W1JXmNUVpGcYBU0I9PQa4WyUkwuXRoSatOtFjKe0a0vQ97KiVj7UMgyspdj1bdfvKoGBMMAN Tbh9nwPYj6Q3Q7TgA4CMSISJsA4CEGEgittVCVIBxOna0N9gwGFxIUYMQhH1c2pUtNzbf0AZDQlq hgWtoEkCSKSKSLl5L2d3eDuzM7qt8KENdFRRSsCMy0hW+O1oxI4EQF2k2hXYq7YGzSu0V5SWYqau 0GbyvuuzQD5wBgFJNY74grUiGtwA1VAbIoSuJMVCtqULUXyFgKEFSJIAkuJNJMWBijrIXrLM+uXO Rnl1KwtFqMVHqOsuSF93U7x5reZZCQqCWCjsDnUAgwgoqmBPwVFEUpjSFKgoECIPNknExlASLl9R 4rI1IrI4eqDAJLQQUDEj1GR8ybrJrRImCxqkga3CSXC3SywSVtMVQpIypCwu3696n+Kj3mS9lFFL G5ebW5a3tja3vLJuUXv3hvnz0T0nzmiCzwSNk2pHOZb51OfmhKCFzfZ085OTz4JmATY2Bpe1IMMx xkl1FdPWeClCVihjhr0WFyfVfWHiHfilYemBrMiQi1QEWgInDKFQ4iNP44IVRjiGE+hRNLuMy8Vc UlyWZRy5YxnvKFot0Gs5gCpmWZanZRSUIOTWE42GmBIi97ja2Dx6sP13dKOIbZ3M9d8vhuBxwabk mOGIsojVwTeTkmoMbj6GxDaFRay4QKCe0WXF1TI1FNnyIuHDxzDLZiUBiAgcR0EDIga/M64om4xk 90bq9hPe4oebbYQTShHkQj4bW7ip3F1CbE+ERKleRLJgg/39b0CAGZBAaqg4ZnekSePQ2yz3WJjH M/9nJUZ3+RtN6hIuxAmdxyOJ2FEO0ZyO4zLmRTwgvc2lcYsVi5EnNU54yTLPN28m1y8EJ69lLaue wPM4WyxRbdceJT5GWUF5jC1aSwARZ8Mymd41ZcEgSOnkY2KNBIiDczMapbl9YneRkqRKTiII1S5D lCEkxwAcCRRRiIKvYGFcsdkzo7A/JApVUqNM3yQgRJzsPH4YlKohgKHcQeZW6NL1UqnvOcQWlDyg Di0NS1LpNkV/rIJlzByN1Rr8sUcNwSgacDh0CpWgnicnmuCIWvUbTs4uWIjzmb1T1IQHgNtGpe5O TNk1LWheudGhe9Y8pm0sXVL5KmTfHyjpD5svlrj8tbPJPnC9OjjdhV1cXyQ7+Ti7qWmjZoWqZ5B0 TJzQRdmSGFyeIwUZKqQkuyDqTPEoWMEC2iSdACw0HCZipBPLlyOag6VUrFJtJvAwOPKakSIQHFEs wSa0hw6EALk3Q5EjJ3oPJOmCwA8yNgjY33mXTEqk2alrKtuWWMME25wwpFzJVFdPTmFYRgMMOG0G 5jw7xDd0sZJv2AHUODIL5CpsZMEUbG5QgTJHbmbGBIsWLkDz+eSxE8yOK0rH30NZzJpdicu4uJN9 qDhh8CHF5A3zTxW6ZOw7n4pVxrIl7jtmbAM3sM3ZxKGiDdYHXh06WS2eZmIIgW5NVrNamB7LJW/W bxFBRtgpeXrnartUWvpVJU83YyYtTY1L1HtvZVt+2MGTe22ou0KhtUWsVTdhSq539+s1PQ73uoX1 Ww8e4lc6BOKkGtB5EqZDdVXvnRLzauCq0iqE7JRoc2Lg/DQ1LXJwcG5oOxm2aopG9rYrFG+PpG2G iHcn0TykrhaLFUlvtQZpMR06eK/a5x33JzytGwpWbrwQc2lfwX5jf8gPE8HmJsgNSlriscx24ZIj 9fGaHvAbTFoiCcRVDBtElgd4DCCbKFzjUgXcDxxRk3vRpHGPFi0r81bE14RvW+FMLFHXopl0aatH DlwTW3qPbH66o8HB3xz7N+zYmvLX4q+zcrVObxVc/TjoaDTNFIszmaxmHTKM1ipi3OMULQORzJkz YoQIlTQwdBwaHTUmYJESIrMuyDAGyOPR8Fkt0TQeOUFZilfkbP2OXdHTnJ8mdCYpPodsaLQRQsCQ xr0geg0yz1yIeHhwW4wdhRdCMNmslFDjXbkWF7zRtcY6loG0iwmKkkQS9eeb4DC1Fc33sXyNROKl O2l5XKyJgUcYlJW5xudJlDTksVuxuZ8b6M3a4sV2pe2MLDBsWELJFKbx53IGLDzoVMGS000R5wMY dGxiqamxYxaXhezWhfG9MHzGSx9J6SpKUwJvJUhiK5IFtVenhswTpaEQeTK7DQZIxK5NqUMgVBPZ 0BKQCSeA983vN1YqrkitITKiCQPI1jBy7Jkql7TIKpU9qLOeaW8foAf41NzW9Yr0sce52uajVjqx 39i1xVL9EpzcVfLS42UUqbijkXL6F7mZgA9ff7fM++0k9m/EtWSAGGi7TQ0tC5W2qm1wWL25xUYG 9cwfmli9mzXrGLBU0vKPCSb+YWw8JNqcU/AeCt5Dbsn3767NlU49fExYrwxyeIV12xkr60jQXrwo KixFFCvQdamKDlnUxCNtCaBaA9QHpjxIZghKzAH7IkjRiNCdS2MGrcwdi3neXNNSjM0LbEgko2NC BE3PR6Jlw3McFB9AIHMt2oFSjivXsS5cvK1zSUadOCxXXirWMWh4e0nzAdAjbScHUOqW62RyrZYs htAzx8QwG8iTOUEktxb3O8cFttdLnBSSVlgZalawGkPTk/vDVhx3kSOLBFxqQXNbmhISYsVJaY75 FTuJRHuEnO6GxAIabTM1JKr3KzXGMyMrzytaVDU6m5gvXHKMlzYxVr1rNoVtqBciXKnskWyActNx KDARYNGNATQGFUCwVGWcWBVCVSxhK1kCwKFCLtAqRyiusFjCd0WEBbQeZYZ8v4CGJ0vVh7erFDwN YN5Wd73tOsbG024xjy8wgOJtOmhKAFO6MJEoB2RAdoEUad8niEPXkuL4AQwxJCOAAoFGMSFwCico NQFFiUIQxBGBGMYwjAUokgm6eZ4p/lgooPqPEVi4VCuLFRSlKKKYD/TbdRRYKo+FaKJiay/JT8Si jW9a4Ec7taNgpBisFgBFgjhR+dDq9h8V8E9v7h8o/Olz+vvzAagkYRjAhACAtoY8/chZZ+Nar1Mf 0hhBoLAJfpf8kZbrkYDClpyNgGEtR6Tn/UQFOIJfPt9wEmIoORieAkk1Sqnsgn9KMxR3xoWYSVWF 7kfs/cZCo05DXVkmIf2riyuTXXwhx6ChJfRVFZaa+Tdnl/VJKTfzrL5WkWXJNSSXlEnIvF8aYUM6 OtktY3OtMhgs1cf/iScBqTFMikm2koRW5fpU0E3BxS2pWvv2HbH9I3AsxgtwtxVBU7jUXFk+jY2S W19wl8L718DwPDGRswfIXhS0YHMIBC/7KFv4e90V6YjvrWqxdgeB5jWidSL3IFEGlitVQoUsSpKx bO30+5YwkhIEIyCNsD10E/GoPOeJrPAPMGEMYjBtGAcTj8lbkQTkD2HKcpcFJ3IWICe0VAS+WUFB USM+WJA0CO8BzjROYsOYiUHKQNhFq1Y3wo3Kmxm/1hRescXcnFi0H83BoWP+Cx0TefzMVjY+Uf1z b3asT1pCUpJnxmDKb2t2dnnNvXFzmt5Na9I2Lk7Gbc6MbnYrc29qiHig4pyNEX/104X7CUoReklR gKnS1Aa7U1IaP3phzl1hbioHQeUBuleNxrgSCAwigBp4kYp6DmieD82ti6SivUitl8XkME6Uje9n otWmTrdax0eKjpP6xRGTBU+TqeXy1uTUzaVGlWxeiptj0YNaxRk0aNb+sNDWra1QVNKo0tTc1tK5 i8Uses9XIwUUeXNGhOZY2NCx865chsbP4EUIRQhFDsOB0GTJxa3F/RPnJPwqTedgj3F6Vaxi8U7H m9weecPj2dZ+JJC+eVm+Phwjz77VqS1PF0eLtXuUxq6nJ3PNO5pc2MfAwmxk8Fz1XtTtkrWtzYvd 3y1MW1m3OksblGtm3ml1TJe3ug2tCi1gotWiyuWsV6xU2uchc0uas7JLGbs5KVN7gxfSpioyaHRR wfLU7RQ8R3G81T70tHnJz/sYJRglo2SSC1GElI87ZJkzZxrhtkrmm2qlFM/edltuPbBvcHR54Ttd SjuaZreDvWtq903pkva17gwLmc7lyqJvRLDbtWr5xlBRugZO5uaWDMeapk0iGguXeseba9KqnM9I ZpbbvXObJto6ZOLYqWsJTkqapthSE2bI647ecfd3s9Ua6/3dQpdb/WzQhudJh2STdgb3PRAhsNBM uAKrlqwrfysf0zS5RRRS6kSKpwejzbng5ieTOX7fW7ds9OHNyaXyNTYtZx/0k1oyWtr5MVrjSKUa ee6HGH8nHD7/YhpCRnn0leK0Rguek9iD2oORg6HeE3UzUdbqaetwbVS4osXK1qsvj0h4xRKMNIrW AcrrCQtUojGDyJnQSwQIFbQ667gZuprbHz+fUtXMnbOj7HyW6buS9va4upFbhFFUatXWujTzcknh GK6V6p5SdIiyr3bOxMHu8p0KQKvj1rk60fHJsgqRpEqglhiVI2Vpc6/GqGXXD5xQ/kjSEek/OboG e4/ClyGSI1NFI+N4cRok/5ayC2gsAiG8K3j4ohWVJxj40REvKhYMxFwRIeHowppgIlpW+BRKHSLp DV3dVn0RJ8OL0dr2YYY+zE/DJayXMXo+6p4QmyNC50YqDLW+j6/W5oaGLcYM2bQrXLFzN90B5qPI FDOZmCRIcgTGhkic0C2RqvWL9KHb26o+8GsO8k+0Ps8JvRmP3QuwpD4k9aoOj8Q0Ct5yfknnGfZ9 x4za1o/KuVxXTq2JYba3xtJkHSNaG8IVCxgQQbo2AVIKaU6x3diX0K+w4E1XT0KoVJrTY6QHKPCF 8kdx2x/gidgO5O7fJOpPvrDrHc4Tv6UpK5UKviWB9Y+6bIdsXLyiEoDh5zUtYZBuq3vW4TN7jXfD kQ3GprdXIKQEuLHfNMyhI8oco4USPecn2+aDKLVMkwvntJMXsu0SWvWX+Y9ht9+D5iRlDORQNYj5 STvf29kJtj6ew0Q90rN/JCN+kPwHCGmb5Z0kHXY7o190ydrdYzEzwnVJKD+z9w0Csau4UpEhSNey WOuIjsT9PqsXucNPdO+GiPvC/oMXZOcug09zyj2g8pPN1zdjC+Gc+kDUfj3ZB5Bi+IeelOCXJyTh DeS6G+HT39iYpb0T25SdXZHHnHZJfCRq7UFe1Nrzdyak+0cGae0Yx9odWlzvRSkkVvtC6O18ofSF JKyTKMGoxBe4LbwimR33zJlS6l2RAgkkjEgGEVQeFIRWc6ec6VSXaYaXORf8+hd2zXDqrVD3RpsH 3mSWyR+4UjSjoKnOP1R+JJDk94xHlw7ItXRtSefMVEpJAv+yfJYNXJ9O3GD4rdvfZnoySThFyK6J eH8R+BmPC2ofaUD/DI1jjHdNCPrJwi2S4aoTbHgtnFFI+Hwxh6jXD2jJH+MOx1Pk+wI6eHUtygHe ylB0q6xIAkA8hWCkCtdTioJKAkMYdokqXtWDgBQGYzI+cmiD7WaeOgWkWRcK1ckWj4hmJ/zfpH+R e2c6NzvH5+0d+mGiNiNdTP8iFaG2yWyIBFGoCAMiA3x3/PtEsAax6i4UTu3JfCNIkj10SkvvSmNc T2GUxLePus0Fgax4fa+6gGiBder4O9VAy5aCZ0N0ggVwAWAOs9vx24AC7ENtsY3wetESgIGIN6q7 6wHa+dqTm8E41yueIKYt45MGUwO7fMOMA7bpEP4ah1SZnD8lUlUH7h+o/SCbR7xsmUJ7bHPLciL0 jtnXHxc6obJc02fOPnkt1Q8R7cR6SaEMwGZEiPTdTUt46FuHWunuc3DQOMdg6t6fINMYw+z84wtc IqhtecSSyFEaI6RkkbhpTQnb2QrUnSidsdcWNHcHXLpYKSZlEGDxPYecXWTWnZJare+JiF1UEA+Y tppfdTsitCJHoj0AdYFEDMBBWoXHrGKI50Jiv5SpohvrUJ6+EeE3InCKmBC6X4/JkiKM4V2Qs8If tgMKIM6qkS6Gfen696NaLxhQLSnCgwzRtp6yPoGNmKE1MEOPNyPvpZU0EQCguVao1R6RDGSb4wmb jSKNpDm3R1v3gMPUAyJMIMgmohkE1EMiGpchqXbB5Jx900RoYwnSE4GMxk5xEbItg/aS31jVAwjy ixy2N8JvUalUqlUqVJFFFFFFCEIQh3I+sAoDClSCyqikVQjqQg59cQ2kwaQDYjJDA9LRRWgzVoPu kCvZDKn6yauWcwU+thXR4yrnRc+JERvnlKprADFYTQNB2ogGaSZlAojfG1/eSh/sURPVi6ff8o46 3dEXCiZQDeMaBjHyiBEoJEwp6oez27f7nfaPaVdYwfKlKL67Kv1TOG6H8Qvuup+X7xvKTcOAOMzi iyKn8XYNOGh6x8EbUdiM0VxUsWoLB+jCYBYxnm/jH4tuh6heFPapJWeG0tpqS4wjOe1lBCoBsW4n pANo8J+0l2mHOFMSsNfBVAxtGibo5S+JkpE51xWxLIWpwbY7LLdCXx+1WyH6R2v9snMGKcoa0zhI 6puhyHJJNMiiQMa3xxOvmkbl+Mdrtirc4tVc5RpTY/OWxSfr4NaH81Aow6rp+MCIz0Sd/UJ5w/fG uJtHOP2D0TJtj70cJ3Q/WVSqFUss1REYI7IV7NUaE5/mmfakdTOMKoqgUm+Nkkou/YO6HnOWzolg +4z3fjqZp1KlSVPJ0TZLr43MtAqlhGobw3dE5Xdm4hwDaq27BzidZmvlCHZjGTtKKEotqSx9dMao wb/eeEPCXw/glXgmEODg+c7I67EkeEPFVHUKbVVt8kvwvXkRcNaRnLPFPkj6Q2IxXy5cmcTEc9Dg Vt9a60MHHjL10DIqGwbPhNC2Abg6TlXRDwnSdJdOFe2Uhri5C5MBTZmObZDpGkbpXmAwkTIBn1ci cQ0FMiGAefyeylJ/4u5IpwoSFxsqaEA= --Boundary_(ID_I83ekBmDABi/OLPKmoBrYw)--