Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
10.1.22
-
None
-
10.1.24, 10.1.30
Description
When trying to install database with rest encryption and config like :
innodb_file_per_table=0
|
innodb_data_home_dir=/
|
innodb_data_file_path=/home/a/innodb_data_home_dir/ibdata1:3M;/home/a/innodb_data_home_dir/ibdata2:10M:autoextend
|
Errors below are shown:
Space id in fsp header 3176603904,but in the page header 0
|
[Note] InnoDB: Highest supported file format is Barracuda.
|
[ERROR] InnoDB: Corruption: Block in space_id 0 in file //home/a/innodb_data_home_dir/ibdata1 corrupted
|
[ERROR] InnoDB: Based on page type SYS (6)
|
[ERROR] InnoDB: Database page corruption on disk or a failed
|
[ERROR] InnoDB: Space 0 file //home/a/innodb_data_home_dir/ibdata1 read of page 192.
|
[ERROR] InnoDB: You may have to recover from a backup.
|
InnoDB: Page dump in ascii and hex (16384 bytes):
|
len 16384; hex c32efd07000000c000000000000000000000000000042...
|
2017-02-22 15:11:15 7fb0eb12ebc0 InnoDB: uncompressed page, stored checksum in field1 3274636551, calculated checksums for field1: crc32 1289775906, innodb 511039384, none 3735928559, stored checksum in field2 3103017090, calculated checksums for field2: crc32 1289775906, innodb 3103017090, none 3735928559, page LSN 0 274306, low 4 bytes of LSN at page end 274306, page number (if stored to page already) 192, space id (if created with >= MySQL-4.1.1 and stored already) 0
|
and later:
|
2017-02-22 15:11:15 7fb0eb12ebc0 InnoDB: Assertion failure in thread 140397834857408 in file buf0buf.cc line 4844
|
..
|
mysys/stacktrace.c:268(my_print_stacktrace)[0x7fb0e91b43ea]
|
buf/buf0buf.cc:4710(buf_page_io_complete(buf_page_t*))[0x558c4c25bc1a]
|
buf/buf0rea.cc:262(buf_read_page_low(dberr_t*, bool, unsigned long, unsigned long, unsigned long, unsigned long, long, unsigned long, trx_t*, buf_page_t**))[0x558c4c26febf]
|
buf/buf0rea.cc:474(buf_read_page(unsigned long, unsigned long, unsigned long, trx_t*, buf_page_t**))[0x558c4c2710f4]
|
buf/buf0buf.cc:3002(buf_page_get_gen(unsigned long, unsigned long, unsigned long, unsigned long, buf_block_t*, unsigned long, char const*, unsigned long, mtr_t*, dberr_t*))[0x558c4c2569ea]
|
include/trx0rseg.ic:73(trx_rsegf_get_new)[0x558c4c21015e]
|
trx/trx0rseg.cc:289(trx_rseg_create_instance)[0x558c4c210a4c]
|
trx/trx0sys.cc:661(trx_sys_init_at_db_start())[0x558c4c211f6e]
|
srv/srv0start.cc:2545(innobase_start_or_create_for_mysql())[0x558c4c1fb93b]
|
/sql/mysqld(+0x79a5ed)[0x558c4c1385ed]
|
handler/ha_innodb.cc:4439(innobase_init(void*))[0x558c4bf01ec5]
|
sql/handler.cc:513(ha_initialize_handlerton(st_plugin_int*))[0x558c4bda663b]
|
sql/sql_plugin.cc:1687(plugin_init(int*, char**, int))[0x558c4bda753a]
|
sql/mysqld.cc:5148(init_server_components())[0x558c4bd121ad]
|
sql/mysqld.cc:5739(mysqld_main(int, char**))[0x558c4bd16a4a]
|
When trying the same without encryption - no crash happens.
When trying single ibdata file - no crash happens (e.g. innodb_data_file_path=/home/a/innodb_data_home_dir/ibdata1:3M:autoextend )
Attachments
- error.log
- 111 kB
- error1.log
- 111 kB
- innodb_data_home_dir.zip
- 4.90 MB
Issue Links
- causes
-
MDEV-12114 install_db shows corruption for rest encryption and innodb_checksum_algorithm=strict_none
-
- Closed
-
- relates to
-
MDEV-14701 install_db shows corruption for rest encryption with innodb_data_file_path=ibdata1:3M
-
- Closed
-
Activity
Confirmed, I could repeat corruption using the scripts:
jan@jan-laptop-asus:~/mysql/mariadb-environs$ ./replant.sh m1-10.1 ~/mysql/10.1 ~/mysql/10.1
|
jan@jan-laptop-asus:~/mysql/mariadb-environs$ m1-10.1/gen_cnf.sh innodb-data-file-path="ibdata1:3M;ibdata2:10M:autoextend"
|
jan@jan-laptop-asus:~/mysql/mariadb-environs$ m1-10.1/configure_rest_encryption.sh
|
jan@jan-laptop-asus:~/mysql/mariadb-environs$ m1-10.1/install_db.sh
|
Installing MariaDB/MySQL system tables in '/home/jan/mysql/mariadb-environs/m1-10.1/dt' ...
|
2017-12-15 9:39:24 140253535536512 [Note] /home/jan/mysql/10.1/sql/mysqld (mysqld 10.1.30-MariaDB-debug) starting as process 7676 ...
|
OK
|
Filling help tables...
|
2017-12-15 9:39:29 139895452108160 [Note] /home/jan/mysql/10.1/sql/mysqld (mysqld 10.1.30-MariaDB-debug) starting as process 7709 ...
|
Aborted
|
|
WARNING: HELP FILES ARE NOT COMPLETELY INSTALLED!
|
The "HELP" command might not work properly.
|
Creating OpenGIS required SP-s...
|
2017-12-15 9:39:30 139923984815488 [Note] /home/jan/mysql/10.1/sql/mysqld (mysqld 10.1.30-MariaDB-debug) starting as process 7726 ...
|
Aborted
|
|
WARNING: OPENGIS REQUIRED SP-S WERE NOT COMPLETELY INSTALLED!
|
GIS extentions might not work properly.
|
In error log you see:
2017-12-15 9:39:29 139895452108160 [ERROR] InnoDB: Database page corruption on disk or a failed file read of tablespace ./ibdata1 page [page id: space=0, page number=192]. You may have to recover from a backup.
|
2017-12-15 09:39:29 7f3bf2ba8580 InnoDB: Page dump in ascii and hex (16384 bytes):
|
len 16384; hex ae6e77c7000000c000000000000000000000000000186ceb0006000000000018b1b7000000002dc6269ae5ceb2f861b0747bcc8d861eef901a7f067a18926abcbd2035c2ee52f9fdbc6389866aea4c0119e3258811b4325ad279e5019426abec953b2bc32233f0409d013ef3794ed3d49c597d26e8de7100ce6f3b4ee6ed455619a77680fab6fece640c74580e8a19532ed05f81d5a265db756618ca230b15e2ad80ab40c380ee2e7a02d867235f40c25f243ff7e3f9e9046f09248d29d567cdc4a57bb2dfd4954b383ab5612687f183bfaba2d21596a4241380a4e68ce1d66fab634c0c5d5c2dfa5615d562e03ff711db32042bc20b38d64b3bc314af6eb11e1a2720ec5b792df11ddc8445cce20d7d5054716b3e6699468e31984644b174bd4ebd75d441c4bca1a44030657e37b06a0adfa34629d7c92de1252e4522f2b68d83fa6061c6d4d259a7a2eaffcc3913c0b764d49bd26cc96e7c3649f65f98066be2be5d30b8f9a4f5dddea403f62197b307d6955a7aab9cdbd86eb036e816c045c7b482a8722f3ee152b3c83f21e26d8905aca026860d1c26312252a29a97807f2dae7b9de306451f88d24b935050a684575c22ecc4cba66b8ddc3e969cb4b0ab7c84f60598d1c99a1d6b2424265dddb302af2c1be9f19e3a2df31a206bd564915b63541d5baf54f1009f34d5e16c0dbf50cb8bca8102122b14c3d5f4805682cd1cfb4269b5281393043373a99db7037343077a607e903bf4d44322ec9d8c29aa599c1f8ddec8c335afe5fa7c68523e713ffad146f85038e20b8ba3d7f3bef7ed8eb6627ca9ea14dcdc0ae398dfd014a965044614782d6c5e22877d569e1b72a877d3ac26a6ef81c3ca3cc9a4be88e1a3350654541781e147b0de65dbbb65ff67b3415375f1f6653c2243a9d2a1cbd9bffbda8bf0b343c6765510298bf9ef6b3ff5a140e94e498c9eba316c29410aaba59de2126e58ba0a6191f4218a57f41ac43b0ebac68623653fdba2504656f5f5879c2002757f7d6a50e0cd4f2b94f0aa2a0b3afaf9497b6375585115e3f0cdcb9c6ce351d725b1fc745a087690f790fb79f35b5159af316c3f710e384d894c11feffc0d39e69f291146be6cd38c7152030dfc17bff3a064daf0c436267661f28c881be446488e90c0fe894e786ec7594f9f95e811c123ec9b772f582d1155a790f7aa887c310c8f96a2bd2560c57829951b850fe10437b54ac9459643e3136af45dea920ae4471e3cd8713719a3f1907d5f076d4b40f28be7eccfd589933a87e87a9efe21733fb1e068f37dda9ee061280185c4e646562680f765e7364269783e505c13991a35f317653373795c1e1ccfe0b42c0ea1ed3cd3464a851505c3dbeffb8a0cfc930d8a4234b9ef7cd190281226e842d0b1c0314846c8f2f5274528b40ca7ffe47c07d79911e8a782e15dda291ae1cbc1e58e8f95a93acf3f9394cc25eda4149eac5edb941191c421f5cbb78286e898f9b00645e4d308e1b645fc81c3f674253e5314aab8a0d8938fe0f313add215c5adda2f026419f7e421c3b6a761da1d1c2025b2cab226b0ca470c0b0f4e7e24f229aa65f0c752cbb18e1806381685c70a032ca51d550a1619ae29e78cf7bf36be4ca33249230520fe1004eec3a465c9cdd49d10052a32c6582f0c2d7ec195aa66988e7fa79d21bc7641289b5088095620f160a6e0ca2db2467bcf38881a5ce782ba4acfd377c16121f30cdc2003c6d06c3831238758107e272a7e9ebea1440c18bd35d927058eb10fac6b2fd1354dbb2c9f6985090414743e4cbcbd0d5f783afff94e6d787dcd1d457148071d22ec1883345d4fcd5e8e7c234028346f96d8699cf155ebd7abd3c9e7692b5310bde6b59c11dfe6c6f452a4b9502077594358f22b82486225ad131f569ce4324255c352de577295030bea0c72180fd5ed9f5fc9101405db2217d8f7a3e654b585adfc390a4fa69bc3af0d5798bd93547cc3ef9bc2759d5b692c97a44a71aefc76c7e5daad87cc7bb8646c244e9fdb2702b23b9c644fc75cf7996e5c82c2d457a29a27800876b56c01311e5c2fbc31cab3c27b6a0ca735021f5653e1e283da7689d47838d84c8a0442c83f5095afb0659d611f6c88b5d4b923f9769a69b020eee40344f939213feffed2609a2cc66e4ed116df1077403168d58f4034a3e391301bce6ceff852adb9b5f1cc1a80b0bf28c0273c4a696c521dfbd56e7ccecfd51beb8bbf94b961d8bc57055aa5d20e11d866e69b8416d757bc4a31cc46fc05a9fb14b5bd454d9617168aab9779430341e07994c9747a6f8fa86962ea50a33aba1fc4c0ab42c79e93e68d7eac29956db06ca36df1356917c5ef0202680ce3164a6bb86068cff2f8aca5bfb05cc296658e6032c288286cbfc1c47355964beeb066015e348537715337ec52f2fc9cd22b900c1d616ea38fee2bf13870185a9aabde169444f32e6c672a43b8a4a2285df1ea82c4e22b76883830e515ba82045e7746c2244399e5299bd699e4b216d6dd97aaca2dec68c31c271ecf8c1ec79961817092c00bcc0cff74f0136cda1568f690c791849836e19ba9fb93d9eb1de18ad66ca1f48924f6b69cea84648fdcf6f1531979e93103b0840de0e9f5160d09256e54d50438c6ca416f2763e68f69585e18a331cf35d393af88cc53a2a6c7f6e7b1ee34c2f634a08761e4945bad8345166efbd16998069b7d5efd668821a106a01da1d4df4193400bac1e6ed090a3d2ba326c24597ab50434370827cc1ad95b94456796015c475f162fd0aba9c08125eade651844d998ffcdf8f930a71085e04e8ea28cf691572d057924ee56bcb6bd759c864eb74bba3943b3dd67799bef8136c3af7f2638445cbd87b29399e59f8a4cf7dcede90f4c98788733771d1b43c17b8bc3905c7e741bff03c60160671bcf3d107c1226cb7e6ec203c826c48cb87e53b068a8c087e85d1d5b56ded221e74b6c4fcc0c452d7ac018b9556dd8cc5fb0c8f06ebdb96ddc3f6b33e650772ac900f17b097be1538780fcf0d76a586aa49d3883b0fa2da9b1870abf69055e8ca680d8413de19262efd4b151569a6aebf2ced094ff2eef0604ddac6cea018c5225c17180265a5501f6f495eb0b2ee3ad004a75bb52c26215511a2eee8821da9c815af51d90b9e2676cac1c3c2298f8636aee496d5ab1b7e1d9e308df9aa4ac202f13f91bd74a3796c7a4e09fb89c5d38b459185c7c328cf22d3dac3dd7e94dfe2b8c1ce4ba720a550b73e017504aea9b463d5ec8b1e4396723214855eefb94c8154ea8312b43edff77bce886bcc2d28acf03c09236b3138e06b762c6391305d70a0eeaa4ba7fbd46e4235c55f5b38f9e3b6fc3c528b85fbf6bfef5f6d46fd4ba488497a17108d8390b986fafcaf34a9120ee963474623b10e80812a2e14c7707dc7158f300bf95c0bf0bcb8211524df2ed6167ca69d0ca257e2dca5a9ba2719c87b79ee74f7624f6524a30998dc0c51514e4381aa04c0f3acf70a9f65bc6dbfe69b888bbb36ccd71b10f5af1b8d18f8f72e0f3862a121127a10db693a5c7e7aeb0fc3af334681e5ead63f5570d18c63c5d60fe2e6c3ead418888f4681d5c3d3dbd396dfe64d7226bfeeefb946a4c7787ac81787b4c40f28bd2826ba9d304506e54a344d06c5e70331bbaa9b7cb6e0b8b27697e36f56db9aeba1e20823eb4081df2a08cbca8f739c0435f520091708e9d414ef59c4f6130357365f3e487b95fd60d19c908f7cca2519f88f0508ad0dd6e6bbbd62736e678a64d51c4880b0b21141fa5d485c507ff616f522c8ffb6c87554d8b02d06857f01b94a73b87ba2952307aa9793f3c8b0dc3a81eab689dbedd2fb31e13d823d236edb2756131a90bacf90fae5d95790a6cee91f771517e294f5f33878ec8840671eccc9d6dba21dcfcd1970465bec9e136aa1f4a7360f6c8f8081e241c369c945acc268bbec28be2edcea4669a48482bee5e21f0cf3b7a5ad0149ee98a1ccbf3e3e62258dcdc1ac4a6b8a2d0a01f8e022faa4dd57ecd2961edc82e174aa278113ac80bdbe4074e77660018227a0b3ade1265da620e8564c81790c14c0a250a10b2605c2cb1bb2d8c10e6ba29a35410bae1280edd461d1f67593d926b7cc53e390ac8d114ca5e954e73035130a19009d80703ff3fe28a7bdbc36a7980e64cd56f29737682d191a397249d8ebf308d6ca2828f593bfb5c617a33a075f652be80b0928c066a3b89e88950c41aa13d4171685cd4de639a46cf198ede3df9703613d49781bc25446c42106db9a8378f06d0c5e2e227abda97c0a1cd26dbc3c3a30d94767016d309edde86d18415a87e8dc271dd36c2f9705ddfbde066284a3c1ac9cadc16e1884d850261d9870adb365b1cb24a6187694902856a02428445acb80582538937fcebf30fee5a36d3d5184ae744835c4d0449e4e0665e9f5048c94f232159edb925a7340ed8af832dcc59b8b6c48452291739a6a1865de4db0c8e4be16aaa55c65e3b39af6bd5b0206a5b651b691416e4df57abab85154aed81ce23d215122a74ec916686cd261f87c282416956d70a35ef7b8c961b0bc588129e36fc44149beb505ae5de7771bcf06964fd3c536af355197662889569d2719276996f9db354ef0159fb27d1a3b55e8eacc6385263110e8f2f99decbf2b41d5eea856c123942e671c7c377609d98be829d7b83177e12c82e301b2fc6f967afdd14d3b0b204507904761298da5cf7bb889ef76fdec441ff2db18e0d5c93265fcfbd4d97b30c12af5cfd57b6571aaacd5606e0ac1b502a2b1f2276ed227fe22fcf076ae3a2f88a35dbe25ade6667abfcb6a2c5faf717b861339f35df1c3a8bb138d6d13ae27ad65c3164b62a0f7c52e41f493b514dde9f28a3a837e52a014b3519beba0846dc3496271b59daa75021c2bac523711c3ecd29a7397d75051bc46202453c4bf84fac8cf913fe0573ce3cdb043c7a1cd3b8b4adac377544696aa183346b8d9114872d9c0ed524e111a785ab39ad65c4854f18c613f856451899c6897a0f8b5130efe1c8b38d2d0e8336171e4e2c5993c6ee66b03e4b828b01f23800b588c6326fd8113d2c2041f83e5f390f6a7d33a9c20889a55333f3c14d04ccd66298b72359bb1e1761d70e073afc207596921c293e411a5ff733ea484a34492fb6337ebab375c1f8e57211505d00ed0cad598a886302dde5b9ce03edd8a456786a2483634f04661009c70e9d8aacd6372a3d01ffd9a518f5d97d3592b68832613b07a8f5fe7f119aec3be9e22b9d5b8c93bc248619efff71cfbb73ba8fce25719cda81a4e13da0bca07671fbb4ac1701e91287d0d847fd020b0b09b7b274853a3fcae841cdeff40ffc39643a53bcb42b446f7f9be2351c6c2a2071553e6913fbcd8daa4b2632042b3bc95e1b8566018d8a59321b67d799be85535f07c58c2e5ebc17626be58344f601ab4246473abfb664c2d487908f67f83b7723690c6fadb3823cbebbda60303cb994cdcc946a5f4b375c0d447508985487fe5572d9c02e4460d26de3b74cc210b288cb443629319333334b0db6e8bb63a7273ba1187297b1f84be0772f28627d73097b95c2e397a93bbb8316bdd1f49b3ad17fde9f03e911a7cbacd58190a1bef5d2022ba8422edbf7097eaf1c22697ed3061d6adf7d2d9dc7cbdd366090b60391918c60d9c4e098c6a218d4d0cf2d6aa4c63b64bc69c4cd35fa6d0a83d2bb0a101d9426096dec7f05379f557c0ac3512286afbac34f8e264f6347301bf30de689806543467743f77ace5f0edf261537fcc22cf038b54c6b5f56e35ce8ec8819f1fda80aabd0cd1ce4a9b4a9852270bd6a3d13aff3cd473aa88ae5b52a1d4a31e0075a194747e94b016bbb7cf3e215aed72e85f6d524066ee398acc8c6c7253139990305a995b37fb8f3c8079b626b96728eb92e718610cf5d4be424f91fa48cb018bb30ff870f09c8adce8b8e72e4882ee3a76bc3f457bb1028aaa7273a6c4eb36b25082d2559944040e6e0d90cf474ec99891344572daa24061b14180274e05c3a801f8a46b75d959e18f31d274254d229f64b109fb0375a3bfe9ae626192c21a80c4dac4fd350d2a4be66d99b900ffc8a296a54cce9a0d238870ebadd170341908d94b6ce024060bf9e64eeb0422f06696168157f323055f307efefdebd7a6464b6a50fabcb7f1d2289b6bab61adcd45868a69fe3a395c8bef2fe83494d91efd32d0cad3d25823a0b857a62424d4735d1db6b6690b60ded864fdf647463b7bc37d07100e47af9436b0b0b5b6ee84b1fb0ce2cea5ea9152ef607346c0d1b7221e54354b80c50c37226076bded7ce34eca0b2aff874b9697f001ea89b14ebd3e1fa93b3e609b2138407ee7d7e0d899d5a1881802e270dd3103d452993d2c006289b2bc87c9830bc8cbdccc137d4ba6c99ba53ac7f31522ea1a9f99ed59ddfe164ac875f1d17600ee35245a11f2f0e5173eaffff6179226d1f0921cfc634df2401158f5512c7a78ebaf889bef9a91f62d161d96c0c4049102fe2d0e43d511265e3378d1cf0bd35ac963114f3f84467562a596a8e19dde99f371bd690f45281b79e7d02ffdef26235606c81389341beca20315093572cdd244b985f6f562d4e7fabb2a2508518aa6d9190e22f4775c80be6a21d579df8f2d9c11f6ac4a33fa74985841b50331c00f60a5e05262310af545958c882171dc1e8e67dd69d938fbd30513509c59ea46f5d2a08920b607a0c2064e7881154b0de43087ce620267c21a6d66fabaa511ee9dfe9f8a0a92c8194ebcbacc3fb2ba240aeea4636ea1becb563c0e9588278390c39f3fa06aefe36a8c6bc8aa88df155992323e54893bad97bcae49d670ff24336622dad91e0e86eb1c2bdadbffe4bf952d2f2779e2a9dabb3867d906927e144356fa3ae2d482dd61e7dbfa29865627d5d478a998df80a8f7f0a4f562ee18e7bcbb4c44c5b32f675d1774f70406ebec6bf33f424dcabb15e98fcd5486e5c4bd4330a2dd981a897361543e36a6ecf23d5cd38ce769b35802c2aeb13b272737d34a3448f00edf7a243781b9106e39b931f897a63b57c63c46124beaae4577bad451eb961c8faafe4c4f220d8cbf64fdf96bbeee6d552cfcd2460d8a12ca53082c0513ee72ab8ed4792d369593ff12ba86d303fa53dc6a28bd674b5c9a7cc270ac20ae64382ae7221745d54c01c4e6b57914a0435892700e7c856f8ab07b1a94b3a425edb44551b69704d3b64eb5ffb69c5fbd8d566debe1b99ebbc4bab1ae8b32de0c262626b6103e5e6aaf89695b5f0d5bc5f2b0b77da84ab1c7eb4bb1b90cf33503c028aee03d404ad682e73246701d8757bfceae829438470bf227dcc7da95aacbf53696886be903aede3fe25e71143db821fbffaa38314a1f71ebc2de0e10265bb95e273e30337d434f6ccf05e7c615bdfbbfe29521b2fdef67b54c95d106aaa28ff1873057ba071947f8a97bd8940415cc467d4c9b14168ad297b6e9e6269934fb2b073e577b7b9109bb609048f4f5f3c53ddbcec3aab08329e56148bb0da64adac594a76bca3d60ba6c41b0c4eaf3aa56920b7211a00884b6acc1592cce0aea67708b7e3379e00fe7d93dbbf28d8ff94ead0ed77629c244a176d396c834045953855818702e8dfa4fe5c57c30d864dc8b60acca97bab124492be34440acf428c12d92cb3d73a93f977ad2824172b82708f2e8d1524d7d515ece2444dec6b8ba6288282d474e9acc18e0eeb0f2fac9146e1cf15a21a66a3b4b6f380749b8cc84a0a75ed0acc049acc0fafc083ae09856bef74c4281d2c445639be38abf12ecf191ec541c6a55d0a14fb24d46bcaff56ac27bc06e951e8ad08c664a9ebfb1960a1abfab05c33db2121db90065aad127bd72d345b16627262ec8e4f5f55b93958f2ca6f15d6795cb01489e6779a8cbb20fede121cf0106d7d11db5254c2ffaeed1b7c33e3f9c252e9e1f7ac3ae9f2c116ef38a10742719f023a696813c30240ee8ad7271ff68b92dc877782c4f2639f8f6462b0c2436aef466d48669d22d67e57277bb573b9512f325f21daa3b3de3099dc0de38a9ce5c103e6dab23adf4065396a1b97373fb8857f38945688b695bb6d48578b3276372ad4b5e455770aa00349663f9a07039ac1a4ff19d3d83b52503a97a84e11056bff8d79c24e5bb3bec53aac6dfa5a7089ec0188464ff351d99d0c2f0268a6a7d93a31991a484fb593ca465905300b578d6c6bfd07da203ffd7b0188b541abb662b484e7dba5f1843a91b6a57c76d383d8a913ac7c46ec45be93f3f6d00a2f2b307d6df67c0b3c9d95b46b0358d50fe5f1b65ed40e7b492c897dedbb15c79ccb635b34b5baa91ae6a86732d76d40e305dda62b97fbe7361c31409496261c8a48a09951789100a629a90a7e3b6b9705fb21755a0e2e0aad41732772ab66b4c588215691a1135c35215dc560c5737abc83193edd81198039ce76c1f3e152989a33f8b84ff2edd60c821a40e5f7dc545a95ad25e249ba49fe2877074f405a0b8730c4d9d4152b512d3ae562dd2bd2878601e4643ee12eb9a8cb70060bf80a9b9e9cd833a3b495270d4afefc2fb827a8f0e05d0ae62007a33b42cb7b1f192c255dac17ea4a9189c31d0aecbd7e5f573e77c831cc286d99e3e2d1ba68cedd5d74a33798b27cbf477fab4a4626e6cfb96ac7355ec0c241b0c9ec647070856bae1ee2e46f2b47eca2802521c5e4fcc20b39d6a35c71f8e663af3c001a5d8fb1c37d4b21ba4d9d73cd49dcfb04345216681c4ec58fdf1741ddbe27b12b91b738a845a6d98331bb18f1b26c403bfc3e27c4a830fbc4595fd0a360304eddc2ad499f35e1418c1508e00eb496c2ded81000e1024e17fc20a30add64861b0d960e900f882c452248e9cecc10a0750d65ce3e20c41cf8297b62dbe8f28222fe7a883f6580d2173fa53032e128e25c2f5c1742862884657f43041b8885107194f7de7c44c212e3fa1433d84f94ec589897d4d3598941c489612de806c4e4c73ffdedf35129ad11d3750eb6739c10a1b26d46fc924dc9f036e5d4d4f341c4092131dbe8b3e1a255bed6a3a67fc4dca7f8886a62c6cdc97c4a886bedbab12931fcfe5661be52d0bd163445d1d89e760d496ab0de7b5f259c7991020eddb9e433896ee246e8a7b05dd8e360022849c9a3ee966586c6efe2bb43584358f67e4348a6250e681b71ce0d1d441e95f44f1968fc71914876ea85f68731257624be8cf75188cc0f8419761d99ac30f8f6795956eef5ff65afdcae98d1f2b87bb1841fbc142f9ba1b134e692a147b85e8f2b2cfee81da0b0a092653bbf8320df54a7c8368430377b4baf5b802f8f23d35427ba99354c5c6a250fec168b1ea62fff3b8c5e63df5334f49ce1da053e57f81eae4ca9f7e0faeaa61663514565fb77df034b713f6e3278c0ccc485da5ff174dd08a6c9c60bdfa9101fe14c0371f65e5c4ddc086ade75371c20c000ce0ce28fd0539f49328f4f3a94cc9b22bcde70b2574dec45d1305bb64d49ccf31e07c820486f525656d623fb513c3bf094b4585c323df031e22457f152ac464060cecbb1a75daa52e74950044535ea626347df07f68c51189e426c53579f1ec70c3b76796a2861362f8f800429b0ab7fa1a22387746f314bc16b81282e8f3c70bcd38ee53db94a154f35fce97624a1f467f7fa98514bf6a7f0507679cb6e8aaf641d5583f4964a58ab078874f67d7b59d6a73c859feaca914c1b62e78f734e96f45811fc5cae98722d0f51688ee9c3eb470717e797a7419fe37c5e5c764f62b55582f3e12afbd84762a60c46c8af9dcbba2f4bb923122921acba395f2266908359fcb1e74c3542a2e05add372bc3ee32ed278a07aa553ec9aba6055c47a2139efedc9fe45d7b41fc102e08bf17277495adb05f4abae9dde96dd798d916b12326e7f001ce4448ad0bb5d13be40c764d76c382048fde85db631f8ea43da8cf13c2fdc8143c5457c75e90fad611b7371b340a32df91c1ac6040a652aac2119768c70e41ec383b3e5b415926c287840a3dd03b0971fa334c06262b94d01d834162f868942808efa2df2eab99112bc6156942cf38ea945911c8305225fc3ad8c3ccfbe4b594e82f08d3d0264da17ea73deb147c1cc34fab5cf21e2b957572ae89ac8a72575c56d43d97e851177a2ce2c5ea6f8e660b9645362d6db044b4c3a88b50fd6372c793cb82862408cdd66c2d5de1903c4fb70151cb4bd4b57a261f283017d2a2bc33b8ed8884e5eaed1d8ead1378112015b3d3a26b86b449a78c9c532a9a7fa6e9b0bf6e8c6794095e403c35cdbe63b5bf805384d5a1d70c5fdc6cc3f312eb16c9b100e8165f072ddacfba9e541a48bc158aa872ac199a4849d5078d45e45887eb3ef93b8f443d7d28672a2c808eb77552d3782eeefc43781103f5c9ba37817c854263673fe5ad7a390c86ce0f5934201b978a0bd4e01f486ae29cac6ef9a4076bc8a645e7377c40b4a4bdf97647793fe7f1fd2b9b40d2c67fde6706027e99dda32dbbb2727bc3a41df699c662217efb9e55f6cb3cb33a689d85f1e8b3caaff232983c0bfabf7724f1e1bd9c6c20c95a174debe7fac24d4e0cf7f485694efd0353141e145a5fa3ac001246c2ed19907d1486b0cf0e04c674ae037580d999ec8314ba251ec7db13579c10407f70cf87f57dd50c8062f92474d09becb3dc7b69fff21c476fbbf8ecd717c792f8bdadc8b6fdb71fd05a01c48c0af5cf0578b07189eba6a5e21ef39f9951a3ec902649d8ca7b50cdb381b9259aeb256a4c6a852ce57af503557f5b64159fdbb3d1a04693aa2e7eef55a8d5f8762b57c6d0e3056dccf5677eb8209eb4b39c51e4607883f3cb603d45559f3a342c97e4451ba8e7506ffd2bc94d6a0687fbe9a00923d467117e81aebe0b048d8460c6539307e048e6a0ab0724ee4edfa13adba2c6b7345f7f5f608359a628af3b25e76fffb829b98a726f37a2941954b410f4ec05baee7ba11d1bb86c9536efdfd3f3d51d56d54058d0d5101234cf6a4c2c6cbf7741913bfa6b624948ff40dc89bda07a1348af7c2f6d1945d5bed432b17f7337112aa9ea3be3300b75b1c9d9c5c37dafc344eb7656565e8e790f0661d3525de94a8757e120662cfa37d0903c5e10c0bae40f3e7a53395fdba0fea068527777f6db59901014171dd075a9732f5b4bf8c39dfe78c806cc1792f3b98b064fbb5db138e40c341fd969c830ed868e59c3a2aa5fa710458179e8cca0ae01049d3f8e68cc0f8deb2e0bf51eb8c2b531699624a0f79c5ac2b0f127e02ca28e83906b795cb538d563fc29b6bed279c599e94719849f840682fb49b4ca9147597a63e74d5f2151ddeebf55fb283cbed44e9edbc9f3892e16a7b9e68fcddc41c9a65e7f98c9e7289503ac688893bf4924235aaf70f71e3d7269b6dde4aeeadd06948106f4c2578723a1880d80514d3facb8e0f26985b3f0323ec5fe34f67d4e3fdccf884cdd8e1dcbe0b5f9060bb789993c4c35f0db85861ab6d208269a0385d1afb695ebf7a2e9f02628b483bac2062080dc42afa6faf316c5d31f09cf8f3ace71af221b025a1549dfab5c04fd2ad64b316e848caf2b8bb0e2a7e179e960acaeeef21ea6307ca7edb49edebfee64797c26ca26d9cf47dd84ef55bbf22ae3812baafd482c0cc6f6bd5a3de92cb0801601888e0735c9536a9f8f41a5879f01624cb36e495dfbf97b59a1821854d83df5bdb4b0183df883afbff8cf2640d09342b319d12dae5221166b7653065162b4ac324b62989f996ccf7882202edd0ecc801ed1d03c47c341b1fd96deb91dbf6421a295fdf575583388bb405207fc259aee891d6fbe43e82641670ca0cee51a1ba4a31ac6158c2a770b6aef604c8427d0da9666107ffb8301da3ff5cd40d5d11a26943e08941251ea91667629a9fe5560a6e997db1af63ec34d623cf8398b2b45b59e11ab3e6cfdca9337bf1f7dba8d3397fe3e68345740c241be80b23925304797408d0f7940800fa0786997a39eb35868df65d15b7b019fcda1008d5b9b2d53ca82304bf04b8e780afaff526a669d6f8212b828329114ea3e6583301942c109344549b75d72da74d9ca9a5d1551acb365a589ea56cf724ea56d8cbe8737ade3283f2db3dfb0d675eba1044dc247afc2e8f95012e65d0d346ec95b139f9b4290c0d79320dfc089f2d4c918c0c2cca40395529afe160563290fc0221ad1d3d8597e1f024177790ff11db620b7cc0361ff1324624b75306789404eb0f49a9a982aad6cd12d50846f970110c6a6417dd6f05fa77727dea50717e23d8d656904f08a5f2a9d986ddd4bdd1c029adb4861c7042d07452653438694bd074cfe61f700e5325e238b9c48398004676bf6e8e25dda19bc21b9fbd55629045b7a6f5fc39165a70d827106c4a216e6b6f51b2bacdf54e7f73c3730ea06d33b9dcfe88cbb3e9c01bc1a1c2a3ace9d50abcddc11dbe3a5f4c34602cda2d33dca999b6b5d2caa8f1fb9edc81fdf9c997154a4dbea12d2ba77b9ec132928c1a4f3644f5bcb7aef03e0bfd94e5ce3bab5e0441f08a035d47775f2baf953371191b7f5c609126ac3904bfdb6dcdbd816db442cc18bcd18edb5b363948fbcd87959c5c16914b04801572e8427f60e52f948f1d140274f1f5fb2a6493b4aabdc288570a0d16b1feef9bdb8ab25c1dead210ab5535ff0a538be985388f9c487032eadfa9cb60f2d935316a081b503a19531437fde082c953fd08c69f58ac38556a51ccaf7943da4ce1a7017c052b12a3021edac56b8d76ea52b31cc4fcae0fedc5d1e0a178757492c97c0517393974ea48f70313988f5a18877adb4a50e8460e6131740571317736c17e320cb06dacb4bd908b50e386022e95c8b976ce40d272ca16999d0f911a8be70fdb0411418e44f7958894316513e91b53d23963bae55dd1ed20621beede9246b91d1cb98f1a0138a16f82fe36b3dc83b20aa4f9b8bc793925dd0817255a3f0e78e7d0e61564571d7265c7f974bd29bf5c2ccac41c55a9cc323aba522271b72c1f14c2fc038c8a0da6066c7747582073435ba8c99e7f928ab1d8eb0a403d19a32b0e67cdee09bca1247dbef0a861c22799d3e7582a2e1876ebbfc8ece43b76f6e2e5976873d18c0228b626c8eb3e2dcb7031426794ef476eda76a506a156202fa596968dd54b50c63280aa4184ca598cf81fe8b02c2b134d76596dae4b4efa3b6b844c57ac4e7e0d81ddae42ab4fdfe9e7841c57876657418cddb8d120a51c4e1c02cea6c16f51a93093d4cabbe460a783320eff88aceebbc17df05cec31d3c6217a07319e7e8d08e4140b82a964665a57afbc54f2ac7f62ce4437182c1a00819da4e898f2f54ccaef66a25a8453cddbed6b69c9ff5affe7b2d12c1ee2e24c13b948483a52a981ecbc92eabdbed6b9f2d769fce84e2f5f249d864ddaad1d80ad435c8e998f77ea6a47ca5c63d331bcf7ce9841c1e148f52ff0c66af255c5a60394785b8b6e2bc7bdc66adb959e138788ee72022a7e4ef49ada81297ff71c1cd871a81b7cb5c79f1c0365dd800de9fa799425d266eefd09cdc7616da534d3abfab1dfd398ff9b2c5006cd66f0875a8d6d62528252b0e72163775dcbe99fe33b21721995208ae53e570d35e84dff02473a7044e98ec9c3deaba012b6eef1bb881893d4618588d6443e74511baaf1eb9c1b52b6027b5dadc027807ad8f8ab2674aadf3f3c78628e8495c0dd7a6b499f802228b35221fa8adf939c2665653f55df7c6bc0da2c6a8a5cb3e978b7fefb2ca5ebb3718699c6bf15c0022954faffacf97537b961130866a0f037fcb53856129313425836f2240c869c433acd6b0b92ada517995ec3de176ec152570af23a9f30b0abcfdbdd52891aa45fb563fecfdcd98729dc452c1b729b67f59586300ecba37d293fea830b8082bd09afa86b5b8b94d7bcea7c9af2ad3996afe9132a495d24fdf863f7bf22547e96824f4c6856fb9340295b55cc1afbedf932d005c61555a544f5ef7cd9896f5563f681f4a4f0abdf3154d4ad73b576eef01b7b286746a9a2e9905f1b681eca12da3a8f422dda391636be676653cc6a561df1612fd035fc1debe11ab55f94392687642af2be5fdd6f4dedc33a1027a795ac713ccfe049a4a34fc4d3a40746dadb5e4afd082a70cfcdc12b19dbbfe0a22c9a2d06bc419a14fc7c250a8383537f82f9356112851147b205d9c44180a5dc3decda3eb51db597c9e4d641e6c4b55f5e9a0ed160165cdefaa9bca5bb1b045ea621d1057c50faac270f376753bfe0a4645fb74c2f689ae22321746b352742746e909c8bf89cb1ed371713720220718f16e9c5d0378fca4e18721539183a25b4cddc8a55851dc719979b4b368562bee1f0c1f721baa77e6e474a6e38f70f9f800fe5845494939477a5e40a182200efea8ad9ea6af248fb4136e6693bcd628573ea92f628d181ffaea1c1b68e9caf6f0e6167caaa73a87d096e1abeb9259dd923c8c3a9a64a511777719928ee7e6ac5f7a9f795c6e2f79fb802a96f9a32acdb97b938db3da0ac54a0d6bcd53c68948cebc068c4b1f94cf463906aa284c28956d5d25054080b07f32493ea3294cfe6be6d33ccfa2a473754995ada3dfe492ba2516c66031c37e99129342173fd59192f301a92aa4be27492f7d2959786d7db348bef941b8d6a6b9c0eb35430c95b2af5e28c9ed0f160c02b3c8a9dcb8aa680a9e9d2db3dc020084d3c7191e922659610328ddeb2ea9d4cfcf40fa8ec6f50f0d6f223a33dc4a58e50cf072d5d931bedef34adda2671d6be0780090a57b688feff12bc360e1edb9d881a8c0376666795ddaa0169b33962a6c559042db9c3dd0dd944bd3e39410224737597408091314ee5b30c8f53ab310ba5f09f9709027e660f58254d6ae23e845d5a0f50e6d71c01cba2588feda81ebe3a1b98e688cc3ec5b23ebfa02c9d98d1c115a90e5a0c298bb5c3106c538d16efa96e86d00a495d099109729d2d1faab3df7e2d3e74f2c4aeaa2e6f82c26b1ce31a09aa4f0ca525b8a078bb8c7a0a7b4a28213b35d5dec4816e814c02eea60540e58348a9f755572fd1da815e408496fab3a8c1c5772162bbd0e846359035a8645dc8ad6abbb0c60bd129883f40b8b067cbd8a0f5a16d2cd3d7c963eb082f19e884c545620eead0ce90a930cb379908a52cd79ace13bc7b91a6fe612cccded81be22daad6894a76a1d6adbdf47266ce18cf00896f14ae73cadeb2c6dd14eb9cf9b5c008ab34d9bd216400d1bf84d0ee17a3502a4052a6a5e8333c685e1014153c2c1075186daac6d5d8b7b82072bda75dee62b0c751d08e699b0d0c477236da1c956b09635f0fe31e131ce19b923145f04d10c8aac498882d562fba85c8618e15b22d1dbf8fc4b86ba752bf6084d5cb65974cc8f0ee4fb5f1e6018f4f7c831e4901699ba1b5e3fcd3cbc738f3d9ae986768d0a7fddf0736be28ded24b5d5bbd00128b8662931d6f5a0372ef15184ab06582df88affff936b98c6ec564289a9ee5c803584d87aef7d92f0a0fda5a45d6a9e057b9d6fb90185095cb0279dec60afb1c35e30b64b33ef5640c509c7f61338eb1a4f6f0a6eea552d8968b64323232fcb99660aa573048219d1643aa29d9933405f3589885839044a6a7a277490e0b8ea38dd0324b565b302e6bcb5df3c5cecadfcf1885330e5bfd66ec06e07430e3f4b255fed06d6d075c6637a38ab103bbe5082e9ba3c94909722cda05235cfa3cb1eab45f4f6e18d176b85f4d16fc072b55505ac5762351f2e931120775948ac61c19326558ee935e9e2706429228b9bc0f71c7d66f7ba6983f8cb1533737431119bd4f86bfde047851a9d471975eaf791fc0987ea0edda95e8271ed3e625e6320949e60bd93d5a53e1b1d0c5395c8d0d54ed44ae9b6cc136040c56b34d995f6d11e374e63417fe9dc0bfb576ec8536b22ac143df7b380107ddff077a4bf39183e3f5505f29b9914b69f11596c53f9a4263aaf90d95e5f16d51eb333438da82bfad714eb18a6476dea5b5f96e2fa8aab09c8d1e3af41534a9db5ebb7cc8fc2e0ec4e3a1948fb421a64d26e249397c73b23a65771e4a7fd2085b22961c95fd87f1f7d9ca9aef3a150db9f2d891430fcf58ce82240086b29ee1e7b5450ff132fde68ef26d6d16415afc891799b8ff9d805f7bb71ee10084fe9de9ccbb73b56a49a652e49092c8b69f0aa650c8e88e4736e8aad14c9161293e4186c120140b3d77039d1c0dab4dcf337ebd30661c428d825acbb1c5d85903dfba91b91841047f2d9bbc48f0d619ea49fe22197b28998b0c6cf39a5913fad8bd083d3bb2b068b5ca07bb5333b0ca7b61ee1dba4721ec6e4c8c6f7ab13180ec2e638808aca30c6feb744c3a20aa2aa0f5b5bfd0b45d792e9cc75d6b4e03f165714c1376660b218943f30ae6701636937fc96bd528650423b3a4c363f469cde98ab392683d99e9dfb52ba9f1cf3e41577379990f900843f2dac33c70d20459121596dbf0902c85894fbd1d24e702b67dccbb5423624d6303f65b8d0345355066d58d031f98953513cd6ded1d40c2fe8b74eb5bf0e78fa2fe8c94dbdbabbeb5e5e1bd96fb935638496dc13580a907da67752d10e2d8caf296692dab48e74c651295366dc863183aafde82ba27c55940049844278f7fb2e7c0722f932e5ee4dd319d7fc58e686728e6033f34f48239f458781075766d3798e6ae875d321c293d9d5497504a0dad7864c92c4a48a5451b26f5aba53603f4eba7f86fed322d99e9292599c0c99116f6b6a6dc59a6bd40a2525a162c849eed480d3ae471654442c2ce04f815a20f8f56a3249ce30ee129dfd23d0fed280123cfb82231d3e6f107148f8c7fcb6492574460be93553bf36117a50f20f8910377ad5e56d2f3dc77831f1343bb3c7a075ed50d7918104cdbe6f0f53b9ff93d5b24f2cc65ca125028003e6973908662b4c9bd007d483511f8101461a3334f0d0354a12ecc6922f1e35fdb8ff1a2901af3b105bd182ea850643c20166cb83721e9fa399538df3aaf895879744d8bd410594c19d5e8169dcc0d478ca8adac44458e39b4f351be38062ed7adf24f0abc760aa27b062f40d9d0c042d39bec99ae62faace08791fa83f838c09e1166091e4e7d6ecf75afee24702a3c7ebbee77f118ab42ee0e839adbaa0453bba32c7b75174b88327faa5ab6e301283a755bb86354a512fe3b6a8a39d5e1b3ed91280d455c4d521e67ac074651d138e04ad6d4032dd6b9156c12f619fabb2932953f2da953f5937f9358f949db278176c094a3499e1fe1cbe11cad4325a35ec978d61a38dbe45b8e86f0c04b5371b363e1726941b696775e2a2722c63013f5d19c35610fd07a442f4a8b59047c72e3e5b4e20c950ddc5717cdcd651cadfbffb3e241d9d0fafe73be34c7f1f3402adc2f3b31e6be90f9ac03fc52ff348de5e41730f27f64b0ae196dd913b7e2b865b0344aa1b17735b1f908279ea4dccd1c213c013259cfbb30bb64acfbb7643c6ae449443b9ed75814c7eecd776de073e1ec757a3170f2fca265410da25b6e658df860e0041d7f73db888a0b419b484a449c3232fe2351bff3e435d54f261774d8e9f261b5d8bb42d7e3720c08fc0c897abff009654b5a11985fd5caaccb02546d57fe8437b8c662817559cad7cb92e57db31c423eb82fdc40319d072cccf0b5ac8bb6e024d648e2bdcdb5cce832fb6bee08040eea988e02d28ab8204b861eb4c5b8ebbf744b7d1f9339c59619de8e4f9d332a8026d596e475e0a1fccda44a6f517da1f25c99f4e469296fac62c5ad2dd69d07f1c160591188fb3f265ba8d5cb83fd80adb310c91e862797a189baad5967c80c7169c1d09c706b6ca265bf2cce8a8a138879649a215df15c3e40833a00b3bb191706efa027275a2fd4b6594e4507ac493f9af6f88efe97b722037e1355269aa5c7a2b1592c072c7708da6e76376ecbeb987d8f21a7d3b3781df14977168b69bca586463b128790a51ded37e0efade14c63d0bbd88ac9315571270cfb46fca6e4d3576a8d00fca756fe2e12388b2ba3f4c39b904728f84a45522b287db8974efe6846d3bdf958c4739811e05d3d97b1cb2b4fded0ffb7cfa20c7ba21f448cbd193f88c952755aefe2b30e78f202f5d65852d0b863253ecaaa01eaca6c925c76d72897ef806a3d0b24c584be2cad5b8b67c29ad82397ae22950e3f9b19f79df9028e506d1f015d2975bd247a3d696df0d4e0a088ad55381d479433aaad0c5383cc2660a6706286ecce0161707c789bc632ebe51368aa73b91aa69b5bf56873305c72c90233a536a7d39ee53cb619f2082402406c52c66e68886c4e4d818389954cdac6e5624ac2c4cb0e4ddfba773ce7a6dc57b219188cc4dfb12146253c8c7657155a56b44f493b8866627a22a602b73a9b5ff7e230d4b5b710ec6a3ea025bbc80eb470ce196daf6bac785df6d9df441be69d7121774ffed1241e419ee4770b5d80898b63ac73fa425370359722c03280754d3f95b1d592ae9c6b4b6b604a6431bb3ec3b8d68ed9d8a1332238575ea11e2a9fb0a603ad00a756f1eb53655a4b5c4e33815c768420d24f90ded2be4b44908abe5b306d9b50611914f81f3b6542088778c039eda08960fd5c402f32382ef550794bb77e52c9fd34972cf860c52cfa269a89ef66c5824568acf6b8d9eacabe23ca86f38f6d8b2e68cb002d796c9ee75121f28ebb7edcfedc583c9978fe6cfbf179c2b9093cc683a29504678dbc68d00a70af3950068e9bb992f82afb6463243d509a9f2306eb4cbbe49f8d4ec01d98c3837e3259ae621a764c2ea1d879b24d4f93c281714e15017eea8c310719df29ea453381fc62e9af7340fb63f29d8c9560274aa49f2c5ada34024bbfe175fdc7c15aa502cffd4dab1a1546f79fcbbb6e4f3ee93c9683a2ad056296388bb3e5fb34045791b44b516de65f198f11ab7bc9bef1fafcbb869873f0d6df047b58f2cacd0e46203b1c37f26e1e32aa3a0e6b1ef2646fef7118f6a12397f66d4e16b4ab760bec6542d99d3d088704fed17d96e115b97bd83e937903c3e5b8df3f70932de583a03b9deed8a788c59fcb5c1132ac112abc12a59f714fa4f9b2718473bc3121cc22664244b41bb8cfdcd983fbaa5b7b3b92c3ad53ae6576a97c52c39f79e188bbde37e531eab26cea3f6fcdfda48f03ca75cfd78bd971c88f301a5377d5415e304daeb987cf5e20634cee4076e3100414a06ff31728f39dc3e71b63bbbdaa8b8f001b98d51cbd72417d15c9a2b02593d4a7e8898316b263adba49f693918ece69d90f74479bea304058b69a4cf23d508fb2a89dc83fac8574297918a68214c9c9e75c68293dff18b870a1862168465c5f6664e09f3f350227a48aae6624918a1c91ce202eff8dfa1b8e47cd908fb70d31c74abec1f004b124d8d5c339672993831b220cbbeedfab9e2eb36576bde4f881b46964f335251be025cebded50248330b197ccf496fe532e2936882a3be5da8533d8aceaab37d6867b1626cac94b0aeef62346872c90333a790e8b505fab9c6feec19e1305b12d515807481c887bd4a6c6063ac80732999131b3ca2db911fa2b0bb191a308c2ab137c47c044f714324a3613eac5fe2dd52cb5b983cf73ec14dc3c8e91c0d4240517612676271eeb5804f30dcd1c01a0f21098b59cea1007df5c96d3fc08ce32e1ef20144fc488a969ff68cfcc715ebc7fb44a439ae834388963df8490c411e5c0863f7f7e5d0e10da472c4396936f50fa832f0eb4454f08550339b765c8c9389f6748d775ba1ba06962a9893492ee2b1ec31ab0c151425e9ded5cca3ed3c6a33ba731c7f84b066aa54e1fb8bbdbcfe9fdfe7bc578d564b6d84c88d87b8982fd3a29aa7659bdd7b897e93e9b2fcea6c341972f3f1c119b9624dbcc91c7b6552edc2cae3eee2bd08d38143b8512113a7d0cd18b80a595a6c665bc5a1575018c0ddce29c4b532b8b55d42b1765ca10127120e98cb2f437db4114b4b56145e2650a651e515c20027a3f255bc7618c9890fb18774eaf01fbea2c7d3416bccd631cf53f4cc0b85754896c2d909ac683a63e6d91a1dadaf102a03a972b3ab3b012b4fc0dbc693f429a7887f6fb1e9728b1b410139565d55d5c84f39e0c60101d0c76400c0386d9f4038ac8cb2d4f16578ffa70ea9206cfcb6810db4765ed3d0886192a9b30a8e469256fc82149e3d2750c55cf745542a1bd9724caad9c9bf57a3df43739c340dc6ab4c8b0688bb2d3c7bedd731ed860df4daa470d24bec6e2c82183492c82526fbec1f97af49ba8a65d186049e7ef1a4944a7217e38ad2435bbbf70fbf5af08fa293e94551508f59ee86dfc261b368689d167e5020a994208d622ed9e9763b154b6434396201f23c06ab28f6d092afe34a120755fbdafa693e6f944664818b2d90b884a13a74f4fc498dbc2ccabaf15aa722f679e0651dc5b6f8f03e743cd2a5ec8ccacb8d3f7894c38e96b57f3c1727a8c798b341c0872b22389b2122d6a1915fd7c315e13826185ffa99645f84bdbb57c757fbe09937891bd477f40d697e45f8e4c7e739c6541a304fccbd10d17d9efb46949ef640fd8bca8a3d498c3f5593ce3f6ef49453de1fd660a766c69578d9519e6986f8f3b5b2ccb0aaa7cea150c0336029d4d30bdd58901f9f7120f1667d342866b08c523e809ecc3399c3562306463184d052a134331b548a86c76bc3b8fad27271b623432ed615f3e4b0b9d05db9fa265cc72d359fef9b1ddd6a06f2780e81b6576017647a7f6032d25fe1c0c7d3971fabf1b65d2047c8a25c23acb73fad71154c864b839392d2061e59b22229633ccd61312bb7819bb998d9b7c2ee49c67322766ab5e7d8b354dcf4a6df0d8234d20744dd0ec604742cfa943013c0b3f2300e91d690e443ac71ea4aacb23c127c27cc33943844025552b98875ea48c840c2bdc0827ae23b38633a8c0fb537a2675484c5fe1b971a9a751b88d4db7c70f69379da1e3fe35dc17c380fa409e2a7861452902103456f4b9e10a724e1050d832d92221e2b34a212a01353a8e4eb03774384c126caaecd46d1987c1e8ba6bf6cf8e3a985a738ebc9ec8a9e8186b25cdf9a411fc52c30f37bd9618b1a22404f52951ebe241abbdbb684dd3ff7432c611e19b12d516f6aa0634646fef830bcdfaa47a4e4022d30179b7800683e9bb4338693a5c1381f8e503ab5463d70a57fdbd17383bf4b0b21b2e7d650336fd3c42ad69ec06a8231c9ae570248b5c65cc340bed94380372f67e9d942b3751e6a0aa809cdc4d2a68c885bc5702c79de628614c17f3e88faf1be284c1958f6537d8529e9102bc86e4560f430e1a62c6c92300c4eec1263710b5de104e9359d208e7f389f73780c37e66a575f829f2e1074578ea184d32602319f9c9402a421e61be6688d6400c9d74ac047993db0fad0060d466e83e048c2ca03c25b9bcf972b8f51e8011a8534843a182dd93d383dfa171613c1d37d9900c1d4536032b44eff17ce46d709f18a35c531ed4a4718795ebaa1b90c9f0920d94dd314257419ae9f07b57cf4df948f4357d76c090439078e54fcc156d404b29a89e7a2f045c2a8369f0b0a09e9fcc17ea68f9815692c0f3bdfd5be87d342c7ddff12b59f0727277bf404d01987dce7df04f5241d4b12d8dceeb6026cd381444c2d5c6007ee61376f0ed852283c22cc3a0f2b67b052bbf5561084598782052498ada5a84854d865dc7fb24a92dbbf3f7b11ef727f92ea911fb228f1ee0cf3b0757d65a4a713f75f65c43d549b681ab51343442ed41bbee45322b554419339a9365fa1a589924873553a0cfd5dca6cc5e9760541badbb3eb04a71dddf0fa1ee7c71cdc86258201becd13649a3db96687a484cf0ab2bc6679f7df490e1c7063bc7fe182ede564b6b98c9307cbfc2d164cabeca27093bf8bf25c676f97cf6cbfb0aa6420732f77405f90dccbbaa036d8f079a0aabf657ca01bc2c7939a0390353f1d5431b761053b8d4392d427871e31f74f20dcb66726109d88d0ca43752f789c38638aac05c1848f815bb9c4a94ec6f08a04bc7306541cdd0b122d8e8737e1b41abb73578f576da167f0fbeecdb5c2de7f468f2cf9cbe03ea946c1010ab4bbf3186a64255a6c49833296be197ba600ccacc2a576362df74c920ce3e7b93e9cd7108ceee20776046fada0b3030ca43029bd946052f12003423f7bb06c98a680672aa819825aac715e686dfe1b0f84645a777d27cfa5df09d81a76df2d66ba27232d6cb4a9be5017e809d02c94477ec10044fe9d6e707e03c50d7d22e981361b9660f18bf166cf28f021125b132e74908dfe7dc2a9a4864e96ebcbef4545eace8e02be7bfdf530e92ee2fe70fd032f6484e39696a218923760cfadf224c2389c5483b8bdfb5062fa8ce61049d63c54d480d1b1ee1c8ec7c9278856181dfa37d98e09448aa7a9060f9b9dc9a0539e5e365ef634d43dd11db465effab7a7c568de2b3731b39e957e2f0fa3c0529f09740419bce7cb84b7d5e18f17911997c7e8bec556d7f7ef9fe4f9e1ed061aa06ce7da6b0b4f46b29fff8a4b93e3e454d65a8779e439a7420220c3dbbb3d0aa1ad8aa57fdee3df52b803bdfeb45338faa254cc90cd472599fca41523c4695a46a5f0221aa7af89ea3b714bc8e3cfc398dec578f24efc92df87f1558124dc0df1f47ee04c3a0a1845158559c4cc10042ee3854a424b2f796ad739576feda4313b8bed746b19a69eb06cfaacb1c26f32b48937b8c1293576ed19f8ad2b20b5acfda99f4e69f31c43aad937fb2ef2f85b5067be177abdc593f4c1943ffd16ed6603b86f1f98c82eddc6953ab640fa15374ac66c7c45e52dfe8444d48d53568ef37c96b1d551a36bf01b22fd352fbc09c3cc7f78060652d7fe336727f8b35aef6be849cce94f19c27cdac93a7332d9ca7afa1f7eba0ed72a3b6c1dee26f4be00144e689ef7867b4573421ad36a9adbb6c79da45de7e3759b0ab6d250b2773b790827163c67a4adad800a55aa2877918f2475bda69ab12d79ba65dcb188a10813ec33f8bc526c4c75fb6202b03d7f4f72969cff8343e44fb6fe26543ded0045f245faa24e5d5d2a2e73b3e54b278168c85a03d13cb0bfc9aee8726fcf173ff5a528d79bd1f2967cc109395e530db9c8637f1d69d00186ceb; asc nw l - & a t{ z j 5 R c j L % 2Z y & ;+ "3 @ > yN Y}& q o;N EV v d tX S. _ e uf # @ .z g#_@ _$? o $ ) g { K8: a& $ o cL ]\- V b ? 2 + 8 K; n ' [y- E }PTqk>f F 1 FD t N u A @0e~7 j F) - %.E" `a Y 9 d l n|6I _ k ]0 ! Zz n 6 E r/> R ?! m & &1"R - { E K PP W\" k > | k$$&] , :- k d [cT [ T 4 l P + V Bi ( 3s sC z`~ ; C" ) Y 5 |hR>q? F P8 b| e F x-l^" }V r w & < 5 TT G e e g ASu e<"C C vU ) k? @ NI 1l)A nX a ! W ; #e? PFV u }jP O+ * : I{cuXQ l Q % tZ v y [QY 1l?q 8M L i k 8 0 { : M Cbgf ( Dd u ^ > r Zy z j+ V W Q P C{T Yd>16 E Dq q ? v ( ~ X 3 ~ 3 7 \Ndebh v^sd& 9 _1vS77 B 4d QP\= 0 #K "n - l /RtR @ G }y x. X Z 9L ^ AI A B \ x(n d^M0 d_ ?gBS 1J 8 1: !\Z &A ~B ;jv [, "k p O" _ u, c h\p 2 Q P a x { k 3$ 0R N :F\ I R ,e Z i y d b n $g x+ 7| 0 <m 8u r @ ] pX T P AGC W q . 3E 4 F m ^ z < v 1 kY loE*K u 5 " $ "Z 1 i C$%\5- w)P0 ! ^ @] !} z>eKXZ i : y 5G > 'Y zD l~] | F D p+# D u y ,-Ez) x kV <' sP! e> (= h G D, Z Y ]K ? i @4O & f m t X J>9 * _ s ! V Q K pU ] ni Amu{ o Z K[ T aqh w 04 L G . 3 L ,y >h V 6 V |^ & 1d / [ )fX ,( G5Yd ` HSw 3~ // " 8 iDO2 r ; J" ,N" h Q[ E tl"D9 R i K!mm z 1 q y , O 6 V i y I n = f H Oki FH o 1 ; @ Q` V MPC l v>h 3 ]9: :*l n{ L/cJ v IE 4Qf i h j M 4 =+ & E PCCp | DVy` u b ^ Q M q ^ ( i r W N k k Y d t ;= w l: c E {)9 Y } s7q < 9 A <` q "l < lH ; ~ m " t R V >e r 8x v I ; p U h &. K i , O `M "\ e P oI^ : [ ,&!U Q &v ) 6 ~ 0 J ? t ylzN E ( " ~ K P > u c C r2 ^ L T > { k -( < #k18 kv,c 0]p K nB5 _[8 <R _mF K Iz 4 cGF# *. p} 0 \ ! $ . | W ' {y t bOe$ QQNC e m 6 . 8b ! z i:\~z 3F ?Up c F Mr& F xz ( (& 0E J4M 1 | v oV # @ * s 5 Y W6_>H{ ` | % bsng d H A ]H\P " uT - Js { # : 1 = =#n 'V W w 8x @g pF[ j 6 l A i E h ( . Fi I >>b% Jk - " W t ' @t v` ' &] VL y P & k 5A a u & S L T 05 p? ( 6 d V 7h- 9rI (( : _e+ ( f A M 9 l a=Ix TF ! x m ^."z | m <:0 Gg m0 m AZ ' l/ b n P& p e $ v (V $(DZ X%8 0 m=Q tH5 D N e 2 Zs@ 2 lHE" s j e M \e [ Q AnM z QT =!Q" N hl a |($ mp ^ a X ) o AI ] w O 6 5Q f( V ' 'i 5N } ;U c &1 +A V # .g |7v ) 1w , o z M; E Ga) { v D 2e {0 * {eq `n 'n ' " v :/ ] % fz j,_ q{ 9 ] m ' e Kb .A : ~R Q m Ibq u + R7 s PQ F $S ? W< C ; J wTF 3F Hr RN xZ \HT a? dQ h 8 3aq <n k ( # X c& : U3?< L f) r5 v p s Yi! s> D c7 7\ W! 0- [ > Eg H64 Fa p cr Q ] Y+h & z _ " ; Ha ; W N g J p (} {'HS @ C ; B F #Q S ? c B V` ! }y U5 |X v& X4O` $ds fL-Hy r6 8# L F u GP H W- F & ;t ! ( Cb 334 n :rs ){ r ' 0 \.9z 1k I > | X ] " " p & 0a | f `9 N j! M Lc K L _ =+ B` Sy W 5 (j 4 d 4s 0 h T4gt?w aS " T n5 J J R' : < s [R u t~ >!Z r _mR@f 9 lrS 0Z [7 < y & g( a BO H p .H :v ?E{ rs 6 P U D n GN 4Er @a A 'N ku Y 1 t%M" d u ba 5 *K m L # p p4 Kl $ N " f W # _0~ FKjP ( k a E i :9\ / 4 2 X# W $$ s] i ` d GF;{ } G 6 R `sF " T5K 7"`v | N * K N > ;>` !8@~ p 1 R =, b }K : " Y J u v 5$Z > & cM @ X Q,zx - - C &^3x Z c O? Fub q i E( y / &#V 4 5r D b *% Q " w\ j! y - J3 t XA 1 ` Rb1 E !q g i 8 P Y F Nx K 0 b g mf N ? $ cn V< ' ? j j k Y 2>T ; I p $3f" + -/'y 8g ~ CV : a ) V' x b LD /g] t k ?BM T C0 saT>6 =\ i X ;''7 J4H z$7 n9 1 ;W <F K Ew Q LO" d k mU, F S , r y-6 S j( gK\ | p d8* " E L y CX p | o { % EQ N _ Vm 2 &&& >^j i[_ [ } J K 5 ( =@J 2Fp W 8G ' 6 k ? ^q = ! 81J q &[ ^'>03}COl ! g L 0W G { F}L & 4 + >W{{ ` H = ) aH J k =` lA V r Y, gp ~3y = N v) D v 4 YS X p. O |0 d ` $I+ D@ ( - =s ? z Ar ' RM}Q^ $D b (-GN n Z! j;Ko8 I ^ I : V LB Ec T jU O MF j { n fJ = e ' r E f'&. [ , ]g H gy ! %L/ >? %. z , n t' # <0$ rq h - wx,O&9 F+ $6 f i -g rw W; % ;= 8 \ >m # S ss W Eh i[ x 'cr K^EWp 4 c p9 O = % z V $ ; S d 5 & j} Y< e S x } T f+HN} _ C jW m8= : n [ ??m g [F 5 P _ e @ \y 5 K[ j s-v 0] b sa Iba b p_ U 2w* kLX i 5 R V W7 1 l > ) ? . ` ! _} E Z ^$ pt s M AR V- (x` FC ` :;IRp z b z3 , U ~ 1 s | >- J3y ' w bnl sU $ G V .F ~ ( R ^O j5 f: 7 < CE!f X t { s Zm 3 & |J E 6 * ^ P Il- $ 0 Ha ` R$ P \ A - ("/ X !s S . % t(b FW 0A Q O} L!.? C= N }M5 H lNLs 5 7P g9 & o $ n]MO4 @ > %[ j:g M ,l f - cD] ` Y C8 $n { 6 " > fXln + 5 5 g 4 bP A _D n _hs WbK u A a g n _ Z + A B Ni* { &S 2 J| hC w =5B{ T P h b = 3OI S ~ af5 V_ } 4 ' H] M l ` 7 e Sq ( 9 ( L + %t ] d 1 | %emb? KE # "E * d u .t DS^ &4} h & 5y p g b B "8wF 8 S T _ bJ F j g A X?Id x Og js Y .x 4 oE " > pq~yzt 7 d +UX/> v*` l 1" &i 5 t T*. r > . x z S `U z!9 E rwIZ y k 2n D ] @ d l8 H ] 1 C </ C E|u a sq @ - e* ! v p l(x@ 4 bb M 4 / B - aV , E "_ < KYN = d s G 4 ! WW* %u mC ~ w ,^ ` dSb KL: 7,y< (b@ f p KW a }*+ ; N^ 7 [=:& kD x 2 n y@ \ ;[ 8MZ p ?1. l e r A X * Px ^E ~ C r wU-7 7 ?\ x T&6s Z l B x N ) @v d^sw JK dw ,g p`' 2 '' :A i f" _l 3 _ < #) rO t $ HV 51A E : $l. Hk LgJ 7X 1K Q } 5y W P / GM = ! v q|y/ o q H \ W j^! 9 > d 8 Y V R W P5W AY = i: Z _ b |m 0V Vw K9 F ?< UY B ~DQ u h =Fq H F e90~ j rN ,ksE 5 b ^v & z)A KA N [ Sn ?=Q mT Q #L t $ 4 ][ C+ 3q 3 [ \7 4N eee f 5% u~ b } @ 3 'w m Aq Z 2 9 l y/; d @ A h :* q X I Q +S bJ y + ~ ( 9 S V? k ' Y q I @h/ L u >t _ D 8 j{ h e r P: ; B5 q & m J iH oL%xr: & [? # _ Og _ ` x _ Xa m i 8] i^ z. b H; b * o 1l]1 ! % T O d H *~ ! c ~ I G l m } N [ " 8 ok ` s\ 6 Xy $ 6 ! M [ K : d 4+1 " f e0e +J $ ) " |4 m B )_ WU 8 Y > d p Q J1 aX p B} fa 0 \ ] iC A% gb V n } c 4 # [Y 3{ 9 Et $ # S yt z9 5 ] < # & i !+ ) N X3 , DT u - M U 6ZX l $ V sz 2 = g^ D $z . .e F 9 ) y2 -L , @9U) `V2 ! = $ w b | 6 2F$ S x I F p jd o wr} Pq~# V O ) pB tRe48iK t p S% 8 Fv n % Ub E 9 Zp ' lJ!nkoQ N s s m3 :_L4`, -3 JM -+ { 2 O6D > ; ^ A ]Gw_+ 3q \` & 9 m m B [69H \ K r B ` / t *d W \ U5 S 8 Hp2 ` 51j P: S 7 S X 8UjQ yC L | + k v R xut | 99t H Z z JP F a1t q1w6 ~2 m P . v @ r A D 1e S 9c ] b F 8 o 6 y9% %Z? x dW re t ) \, U 2: R"q , lwGX sC[ @= + g $} a ' X*. v ;v hs ( & >- p1Bg Gn v V / KP 2 A Y ,+ MvYm KN ;k LW N~ B O W fWA N oQ 0 ` 2 } \ 1 !z 1 ~ dfZW T b D7 , L f Z S ki Z , L HH:R i N/_$ M C\ w jG \c 1 A H / j U x[ n+ j r *~N ) q | e y % f am 4 ,P f Z mbR R !cw] ;!r >W 5 M G:pD a D>tQ R {] ' z &t ?<xb zkI "( R! &ee?U |k ,j \ x , q )T u7 a f 7 8V BX6 $ C: k ^ n RW : 0 R _ c ) E, r g 0 })? k[ | 9 *I]$ c "T~ OLhV @)[U 2 U D | oUc 1T s v {(gF _ h : B- 9 6 gfS jV a/ 5 _ 9& d* _ oM : ' q< I O F ^J *p + , - A |% S 5a G A = > A _^ ` \ ^ ! |P ' 7gS d_ L/h #!tk5'Btn 7 r q 7 N r 9 :% U K6 b ! ~nGJn8 T w " j H A6 i; b s ( o ag s } n % # JQ wq ( ~j o 2 8 = T <h h L c j V PT $ 2 m3 *G7T Z = I+ Qlf 7 )4!s Y /0 K t 4 jk T0 [* ` +< = M<q "e 2 L oP # = P -] 4 &q W 6 vfg i 9b Y - D >9A $su @ 1N S 1 ~f X%Mj > ]Z P X : > > , Z ) lS n I] r - ~->t .o k O % x z {J(!;5 n L @ H UW/ ^@ w!b F5 5 d] j ) ?@ g m, c / Eb 0 7 , { a, - Jv rf o s 4 !d P*@R 3<h^ <, u m r ] b Q i Gr6 k c_ 1E M -V/ a - k R ` e L O O| I i 8 gh 6 ( K][ b oZ r J e 6 n d( XM / ZE W P y 5 d > d P a3 R d222 ` W0H! C ) 4 X D wI 2KV[0.k ] 3 [ f t0 U mm \f7 . I r, #\ < _On v _M +UPZ v#Q 1 u 2eX ^ ' B ( q o{ ? S77C O xQ q ^ y ~ ' % 2 I =ZS 9\ T D l 6 V M _m t 4 v 6 * C {8 zK P_) Ki ? Bc mQ 348 qN dv n/ : 4 ^ | . ! M& I9|s :ew J [" : C X $ E 2 mm AZ _{ s jI R P G6 L a)>A =w M 3~ 0f B Z Y A - H I " {( l Y =; h S3 {a G! nL oz 1 .c o tL: * ]y. ]kN eqL vf ! C p 6 k (e # c i h= + >AWsy C <p Y , O $ } T#bMc [ E5Pf 5 m @ t [ V8Im 5 gu- i- H Le 6m c : ' Y@ D' r/ .^ 1 hg( ?4 9 Xx uvm7 ]2 )= T PJ xd ,JH E & 6 o 2- )% Y @ RZ , H : qeDB V $ ) = ( # "1 d WD` U; a w ^V w C <z ^ y L ; =[$ e P( >is b }H5 a 3O T . i" _ . Pd< l 7! 9 8 : XytM YL G DE 9 Q 8 . O v { /@ B b 8 f N}n u $p*<~ w B S ,{u K 2 Z (:u[ cT ;j 9 ( E\MR g FQ 8 J - l )2 ?- S X I ' v I C% ^ x 8 [ KSq c riA w^*'" 0 5a zD/J Y |r W e A s 4 @* /;1 R 4 0 d m e 4J w5 ' !< 2Y 0 d d<j ID; X wm s uz1p eA [ne ` s A HJD 22 #Q 5 O& t a B r z eKZ _ TmW 7 b uY } B> / @1 , $ H 2 k K tK} 9 O 3* & u JoQ} \ i)o b - `Y ?&[ ' Yg qi pkl e , yd !] \>@ : ''Z/ YNE I? " ~ U& Y, ,w nv7n } ! x Iw i F; 7 Lc 1Uq' F Wj V . 8 + G( JER+(} N hF X s ]= +O { D ? RuZ x XR c%> l \v ( j= $ , [ g # " ? Pm ])u $z=im U8 G 3 S &` pb ap|x 2 h s [ hs0\r 3 6 < $ @lR nh lNM L bJ M w< W !F%< vW ZV OI; fbz" : _ 0 j> % p m k x] D q!wO $ A w ] c s BSp5 " 2 uM? kKk`Jd1 > 3"8W^ * V SeZK\N3 \v O KD [0m Pa ;eB x 9 ` \@/28. PyK ~R 4 , ` , & f Eh # m .h -yl Q! ~ X< x l y < g h p 9P * dc$=P # L N ~2Y b vL. y MO qN ~ 1 ) E3 b s@ c `'J ,Z 4 K u Z M F nO> < b 8 4 W KQm _ { s {X F ; 7 n 2 : k do q # mN v eB = } { > y ?p - ; \ 2 * qO q s 1! "fBD [{; S ev |R y 7 1 l ?o u q 0 Sw A^0M ^ cL @v o ( c rA} % c I i tG 0@X L =P ? t)y \h)= p !hF\_fd ?5 ' f$ . G 1 J $ 9g) " . ev id 5% % P$ 0 S.)6 *; 3 7 { & K #F , 3:y P_ o -QX H { : 2 1 - + |G D 2J6 - , s < $ a&v' X \ 2 O i h q^ JC 48 c ? ~] G,C oP / EO U 9 e 8 gH u ib 4 + QB^ \ > ; 1 K j N { x d L { :) vY > / A /? $ U. , > + 8 ; :} e Z u KS+ U + e q 7 A aE e e Q\ z?%[ a wN ,}4 c ?L WT l- >m : +: i?B x ( e ]\ ` v@ -O W p h Ge = * 0 i%o !I u U tUB $ z= 79 @ j h s ` M G $ ! I, Ro z ] `I ID !~8 $5 p )> U m & 6 g B " c T CC # j m * 4 u_ DfH J OO r/g Q [o C *^ L8 kW rz y 4 r # -j |1^ a E K |u x G @ _ L~s eA iI d Y< IE= f vliW o ;[, | 6 M0 g B k # 9 5b0dc M * C1 H lv ; '' b42 a_>K e r Y o' ev vG -% }9q e | % : s T d 99- a "" 3 x |. g2'f ^} 5M Jm #M tM `GB C < ?# i D: # ' | 9C @%U+ ^ + ' # 3 Sz&uHL_ q Q M i7 5 @ *xaE) 4V rN P 2 "! J!* 5: N 7t8L l m k : Zs k% R 7 $ )Q A hM t2 4do zN@" y C8i:\ Tc W 8; .}e 6 <B i # p$ \e 4 8 r ~ +7Q M*h W (aL e7 R V C b # &7 N Y 7 ~f u ) Ex M2`# @*B a f @ t y ` f > , <% r SHC qa< 7 E6 +D | mp \S q 1BWA {W M H 5}v C x O m@K) z/ \* i h V [ }4,} +Y rrw @M } } ORA - `& 8 D ~ v " , { + Ua E x RI Z M ] $ - ' . " ; W ZJq?u \C I Q44B A E2+UD 3 e X $ 5S ^ `T > Jq |q bX 6I hzHL + g } ; . VKk 0| d ' ; % v | B 2 t m W ,y9 9 S C v S 9-Bxq t fra 7R 8 \ H J o K 0eA " s~ A 5x v \- h l K 1 BU 3)k ` *Wcb t >{ q w`F 00 C F / 4# h r % FE w | ] m k r2 J ~ Dw O <P . a f l % 2 I * Hd n T^ + S / 2 HN9ij! #v "L# H; / a c MH | x a } H z ` 9 e cMC F^ z|V s 9 W < ) @A | K}^ y |~ Um ~ O a } k) >>EMe w C t " = W = + ; E3 %L rY AR<F j_ ! z < 9 W $ - X M G QXU L B 8T $ s v C F i & +H { Wn Z 1 : / { w Y?L C n `; iS d St f ^R DMH 5h 7 k U 6 / R < `e- 6r 5 ' 3- r oK D xg W4! 6 ly E ~7Y m% 's qc zJ Z y G[ i ] > ? & _ + )i 4>D o eC _$_ $ ;>T x = & s ZR y )g 0 7 l ;
|
InnoDB: End of page dump
|
2017-12-15 09:39:29 7f3bf2ba8580 InnoDB: uncompressed page, stored checksum in field1 2926475207, calculated checksums for field1: crc32 3780270371, innodb 1905261382, none 3735928559, stored checksum in field2 938595997, calculated checksums for field2: crc32 3780270371, innodb 938595997, none 3735928559, page LSN 0 1600747, low 4 bytes of LSN at page end 1600747, page number (if stored to page already) 192, space id (if created with >= MySQL-4.1.1 and stored already) 0
|
InnoDB: page type 6 meaning SYS
|
InnoDB: Page may be a system page
|
2017-12-15 9:39:29 139895452108160 [Note] InnoDB: It is also possible that your operating system has corrupted its own file cache and rebooting your computer removes the error. If the corrupt page is an index page. You can also try to fix the corruption by dumping, dropping, and reimporting the corrupt table. You can use CHECK TABLE to scan your table for corruption. Please refer to http://dev.mysql.com/doc/refman/5.6/en/forcing-innodb-recovery.html for information about forcing recovery.
|
2017-12-15 9:39:29 139895452108160 [ERROR] InnoDB: Ending processing because of a corrupt database page.
|
2017-12-15 09:39:29 7f3bf2ba8580 InnoDB: Assertion failure in thread 139895452108160 in file ha_innodb.cc line 22004
|
InnoDB: We intentionally generate a memory trap.
|
InnoDB: Submit a detailed bug report to https://jira.mariadb.org/
|
InnoDB: If you get repeated assertion failures or crashes, even
|
InnoDB: immediately after the mysqld startup, there may be
|
InnoDB: corruption in the InnoDB tablespace. Please refer to
|
InnoDB: http://dev.mysql.com/doc/refman/5.6/en/forcing-innodb-recovery.html
|
InnoDB: about forcing recovery.
|
171215 9:39:29 [ERROR] mysqld got signal 6 ;
|
This could be because you hit a bug. It is also possible that this binary
|
or one of the libraries it was linked against is corrupt, improperly built,
|
or misconfigured. This error can also be caused by malfunctioning hardware.
|
|
To report this bug, see https://mariadb.com/kb/en/reporting-bugs
|
|
We will try our best to scrape up some info that will hopefully help
|
diagnose the problem, but since we have already crashed,
|
something is definitely wrong and this may fail.
|
|
Server version: 10.1.30-MariaDB-debug
|
key_buffer_size=134217728
|
read_buffer_size=131072
|
max_used_connections=0
|
max_threads=153
|
thread_count=0
|
It is possible that mysqld could use up to
|
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 467266 K bytes of memory
|
Hope that's ok; if not, decrease some variables in the equation.
|
|
Thread pointer: 0x0
|
Attempting backtrace. You can use the following information to find out
|
where mysqld died. If you see no messages after this, something went
|
terribly wrong...
|
stack_bottom = 0x0 thread_stack 0x48400
|
/home/jan/mysql/10.1/sql/mysqld(my_print_stacktrace+0x38)[0x555fb02483b8]
|
/home/jan/mysql/10.1/sql/mysqld(handle_fatal_signal+0x394)[0x555fafbe2c43]
|
/lib/x86_64-linux-gnu/libpthread.so.0(+0x110c0)[0x7f3bf28360c0]
|
/lib/x86_64-linux-gnu/libc.so.6(gsignal+0xcf)[0x7f3bf0044fcf]
|
/lib/x86_64-linux-gnu/libc.so.6(abort+0x16a)[0x7f3bf00463fa]
|
/home/jan/mysql/10.1/sql/mysqld(+0xa6befe)[0x555faff3eefe]
|
/home/jan/mysql/10.1/sql/mysqld(+0xc5501f)[0x555fb012801f]
|
/home/jan/mysql/10.1/sql/mysqld(+0xc7399e)[0x555fb014699e]
|
/home/jan/mysql/10.1/sql/mysqld(+0xc73e7c)[0x555fb0146e7c]
|
/home/jan/mysql/10.1/sql/mysqld(+0xc50e94)[0x555fb0123e94]
|
/home/jan/mysql/10.1/sql/mysqld(+0xbe4a41)[0x555fb00b7a41]
|
/home/jan/mysql/10.1/sql/mysqld(+0xbe5172)[0x555fb00b8172]
|
/home/jan/mysql/10.1/sql/mysqld(+0xbe5476)[0x555fb00b8476]
|
/home/jan/mysql/10.1/sql/mysqld(+0xbe5709)[0x555fb00b8709]
|
/home/jan/mysql/10.1/sql/mysqld(+0xbe86af)[0x555fb00bb6af]
|
/home/jan/mysql/10.1/sql/mysqld(+0xbbf8fe)[0x555fb00928fe]
|
/home/jan/mysql/10.1/sql/mysqld(+0xa4d870)[0x555faff20870]
|
/home/jan/mysql/10.1/sql/mysqld(_Z24ha_initialize_handlertonP13st_plugin_int+0xf3)[0x555fafbe4c98]
|
/home/jan/mysql/10.1/sql/mysqld(+0x4ec401)[0x555faf9bf401]
|
/home/jan/mysql/10.1/sql/mysqld(_Z11plugin_initPiPPci+0x91d)[0x555faf9c0003]
|
/home/jan/mysql/10.1/sql/mysqld(+0x40ab93)[0x555faf8ddb93]
|
mysys/stacktrace.c:267(my_print_stacktrace)[0x555faf8dec13]
|
sql/signal_handler.cc:168(handle_fatal_signal)[0x555faf8d4210]
|
buf/buf0rea.cc:272(buf_read_page_low(dberr_t*, bool, unsigned long, unsigned long, unsigned long, unsigned long, long, unsigned long, trx_t*))[0x7f3bf00322b1]
|
trx/trx0sys.cc:683(seg.cc:360)[0x555faf8d40ea]
|
The manual page at http://dev.mysql.com/doc/mysql/en/crashing.html contains
|
information that should help you find out what is causing the crash.
|
2017-12-15 9:39:30 139923984815488 [Note] InnoDB: innodb_empty_free_list_algorithm has been changed to legacy because of small buffer pool size. In order to use backoff, increase buffer pool at least up to 20MB.
|
|
2017-12-15 9:39:30 139923984815488 [Note] InnoDB: Using mutexes to ref count buffer pool pages
|
2017-12-15 9:39:30 139923984815488 [Note] InnoDB: InnoDB: !!!!!!!! UNIV_DEBUG switched on !!!!!!!!!
|
2017-12-15 9:39:30 139923984815488 [Note] InnoDB: InnoDB: !!!!!!!! UNIV_SYNC_DEBUG switched on !!!!!!!!!
|
2017-12-15 9:39:30 139923984815488 [Note] InnoDB: The InnoDB memory heap is disabled
|
2017-12-15 9:39:30 139923984815488 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
|
2017-12-15 9:39:30 139923984815488 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
|
2017-12-15 9:39:30 139923984815488 [Note] InnoDB: Compressed tables use zlib 1.2.8
|
2017-12-15 9:39:30 139923984815488 [Note] InnoDB: Using Linux native AIO
|
2017-12-15 9:39:30 139923984815488 [Note] InnoDB: Using SSE crc32 instructions
|
2017-12-15 9:39:30 139923984815488 [Note] InnoDB: Initializing buffer pool, size = 128.0M
|
2017-12-15 9:39:30 139923984815488 [Note] InnoDB: Completed initialization of buffer pool
|
2017-12-15 9:39:30 139923984815488 [Note] InnoDB: Highest supported file format is Barracuda.
|
2017-12-15 9:39:30 139923984815488 [ERROR] InnoDB: Database page corruption on disk or a failed file read of tablespace ./ibdata1 page [page id: space=0, page number=192]. You may have to recover from a backup.
|
2017-12-15 09:39:30 7f4297691580 InnoDB: Page dump in ascii and hex (16384 bytes):
|
len 16384; hex ae6e77c7000000c000000000000000000000000000186ceb0006000000000018b1b7000000002dc6269ae5ceb2f861b0747bcc8d861e
|
<cut>
|
2017-12-15 09:39:30 7f4297691580 InnoDB: uncompressed page, stored checksum in field1 2926475207, calculated checksums for field1: crc32 3780270371, innodb 1905261382, none 3735928559, stored checksum in field2 938595997, calculated checksums for field2: crc32 3780270371, innodb 938595997, none 3735928559, page LSN 0 1600747, low 4 bytes of LSN at page end 1600747, page number (if stored to page already) 192, space id (if created with >= MySQL-4.1.1 and stored already) 0
|
InnoDB: page type 6 meaning SYS
|
InnoDB: Page may be a system page
|
2017-12-15 9:39:30 139923984815488 [Note] InnoDB: It is also possible that your operating system has corrupted its own file cache and rebooting your computer removes the error. If the corrupt page is an index page. You can also try to fix the corruption by dumping, dropping, and reimporting the corrupt table. You can use CHECK TABLE to scan your table for corruption. Please refer to http://dev.mysql.com/doc/refman/5.6/en/forcing-innodb-recovery.html for information about forcing recovery.
|
2017-12-15 9:39:30 139923984815488 [ERROR] InnoDB: Ending processing because of a corrupt database page.
|
2017-12-15 09:39:30 7f4297691580 InnoDB: Assertion failure in thread 139923984815488 in file ha_innodb.cc line 22004
|
InnoDB: We intentionally generate a memory trap.
|
InnoDB: Submit a detailed bug report to https://jira.mariadb.org/
|
InnoDB: If you get repeated assertion failures or crashes, even
|
InnoDB: immediately after the mysqld startup, there may be
|
InnoDB: corruption in the InnoDB tablespace. Please refer to
|
InnoDB: http://dev.mysql.com/doc/refman/5.6/en/forcing-innodb-recovery.html
|
InnoDB: about forcing recovery.
|
171215 9:39:30 [ERROR] mysqld got signal 6 ;
|
This could be because you hit a bug. It is also possible that this binary
|
or one of the libraries it was linked against is corrupt, improperly built,
|
or misconfigured. This error can also be caused by malfunctioning hardware.
|
|
To report this bug, see https://mariadb.com/kb/en/reporting-bugs
|
|
We will try our best to scrape up some info that will hopefully help
|
diagnose the problem, but since we have already crashed,
|
something is definitely wrong and this may fail.
|
|
Server version: 10.1.30-MariaDB-debug
|
key_buffer_size=134217728
|
read_buffer_size=131072
|
max_used_connections=0
|
max_threads=153
|
thread_count=0
|
It is possible that mysqld could use up to
|
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 467266 K bytes of memory
|
Hope that's ok; if not, decrease some variables in the equation.
|
|
Thread pointer: 0x0
|
Attempting backtrace. You can use the following information to find out
|
where mysqld died. If you see no messages after this, something went
|
terribly wrong...
|
stack_bottom = 0x0 thread_stack 0x48400
|
/home/jan/mysql/10.1/sql/mysqld(my_print_stacktrace+0x38)[0x55f7232f13b8]
|
/home/jan/mysql/10.1/sql/mysqld(handle_fatal_signal+0x394)[0x55f722c8bc43]
|
/lib/x86_64-linux-gnu/libpthread.so.0(+0x110c0)[0x7f429731f0c0]
|
/lib/x86_64-linux-gnu/libc.so.6(gsignal+0xcf)[0x7f4294b2dfcf]
|
/lib/x86_64-linux-gnu/libc.so.6(abort+0x16a)[0x7f4294b2f3fa]
|
mysys/stacktrace.c:267(my_print_stacktrace)[0x55f722fe7efe]
|
handler/ha_innodb.cc:22006(ib_logf(ib_log_level_t, char const*, ...))[0x55f7231d101f]
|
buf/buf0rea.cc:272(buf_read_page_low(dberr_t*, bool, unsigned long, unsigned long, unsigned long, unsigned long, long, unsigned long, trx_t*))[0x55f7231ef99e]
|
buf/buf0rea.cc:505(buf_read_page(unsigned long, unsigned long, unsigned long, trx_t*))[0x55f7231efe7c]
|
buf/buf0buf.cc:3084(buf_page_get_gen(unsigned long, unsigned long, unsigned long, unsigned long, buf_block_t*, unsigned long, char const*, unsigned long, mtr_t*, dberr_t*))[0x55f7231cce94]
|
include/trx0rseg.ic:70(trx_rsegf_get_new(unsigned long, unsigned long, unsigned long, mtr_t*))[0x55f723160a41]
|
trx/trx0rseg.cc:205(trx_rseg_mem_create(unsigned long, unsigned long, unsigned long, unsigned long, ib_bh_t*, mtr_t*))[0x55f723161172]
|
trx/trx0rseg.cc:290(trx_rseg_create_instance(unsigned char*, ib_bh_t*, mtr_t*))[0x55f723161476]
|
trx/trx0rseg.cc:360(trx_rseg_array_init(unsigned char*, ib_bh_t*, mtr_t*))[0x55f723161709]
|
trx/trx0sys.cc:683(trx_sys_init_at_db_start())[0x55f7231646af]
|
srv/srv0start.cc:2654(innobase_start_or_create_for_mysql())[0x55f72313b8fe]
|
handler/ha_innodb.cc:4475(innobase_init(void*))[0x55f722fc9870]
|
sql/handler.cc:521(ha_initialize_handlerton(st_plugin_int*))[0x55f722c8dc98]
|
sql/sql_plugin.cc:1404(plugin_initialize(st_mem_root*, st_plugin_int*, int*, char**, bool))[0x55f722a68401]
|
sql/sql_plugin.cc:1681(plugin_init(int*, char**, int))[0x55f722a69003]
|
sql/mysqld.cc:5152(init_server_components())[0x55f722986b93]
|
sql/mysqld.cc:5741(mysqld_main(int, char**))[0x55f722987c13]
|
sql/main.cc:26(main)[0x55f72297d210]
|
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf1)[0x7f4294b1b2b1]
|
/home/jan/mysql/10.1/sql/mysqld(_start+0x2a)[0x55f72297d0ea]
|
The manual page at http://dev.mysql.com/doc/mysql/en/crashing.html contains
|
information that should help you find out what is causing the crash.
|
The error log message somewhat misleadingly says:
2017-12-15 9:39:29 139895452108160 [ERROR] InnoDB: Database page corruption on disk or a failed file read of tablespace ./ibdata1 page [page id: space=0, page number=192]. You may have to recover from a backup.
|
It is the system tablespace, but assuming innodb_page_size=16384 (the default) and innodb_data_file_path=ibdata1:3M;ibdata2:10M:autoextend, page 192 should be the very first page of the file ibdata2. But the message always refers to the first file of the tablespace. (Some other InnoDB error message displays the page number relative to the start of the file, but here 192 is correct, because the hex dump shows the same page number (000000c0) at bytes 4‥7.)
The code that I removed should have removed a write to the first page of ibdata1 only. The initial MDEV-12113 commit removed the (very wrong) write to the first page of ibdata2 already. I believe that my code removal should not affect the reproducibility of this problem.
Found offending commit by bisecting:
d27ce36bc807f0c3c803e192ad1851f7f86a0 is the first bad commit
|
commit 352d27ce36bc807f0c3c803e192ad1851f7f86a0
|
Author: Jan Lindström <jan.lindstrom@mariadb.com>
|
Date: Tue Aug 29 14:23:34 2017 +0300
|
|
MDEV-13557: Startup failure, unable to decrypt ibdata1
|
jplindst, please close this ticket and file a new one for the regression, linked as "related to" this one and linked as "caused by" MDEV-13557. The bug was originally fixed in MariaDB 10.1.25, 10.2.7, 10.3.1. The regression that you mention was introduced in MariaDB 10.1.27, 10.2.9, 10.3.2 (two minor 10.1 and 10.2 releases later). A proper test case would have caught this regression on Buildbot.
marko could you confirm what exactly means "cannot repeat any problem when I manually restart the server" ? Did you see a crash during my_install_db or not?
I don't think mtr is capable to customize my_install_db action, at least I didn't find the way some month ago when I was investigating this.
Elena's command should work, - feel free to stick with it as long as you are really sure that installing your built binaries (after each compilation) is suitable action.
(I always work with multiple versions at the same time, so hardly ever have any binaries installed on the machine - this is why I provided alternative way to reproduce the problem (without root access to the machine)).
So you can try to use --builddir= and --srcdir= parameters instead of --basedir= (to skip "make install" step), but that would also need additional actions to make sure that server is able to find plugins. After all the actions will look exactly what my suggested three commands do.
marko "exact plain commands" are inside those 3 simple sh scripts, just paths will vary depending on where you generated them from templates:
gen_cnf.sh
[client]
user=root
port=3307
[mysqld]
server_id=1
port=3307
EOL
[mysqld]
EOL
configure_rest_encryption.sh will execute exact commands dba is expected to use while generating encryption keys (again, within corresponding directories where your build is located):
plugin_load_add=file_key_management
file_key_management_encryption_algorithm=aes_cbc
file_key_management_filekey=ssecret
innodb-encrypt-log=ON
innodb-tablespaces-encryption
innodb-encrypt-tables=FORCE
EOL
install_db.sh
Feel free to copy the commands and adjust paths everywhere if you don't like pre-generated scripts with exactly the same content and correct paths.
ibdata1 may contain user data (am I correct?), so it must be encrypted. Also some environment may have already configured REST encryption during datadir initialization (e.g. when datadir is wiped out completely and then restored from logical backup).