From a88e5562f8ea2ac5fff831b7a01f527170d82c23 Mon Sep 17 00:00:00 2001 From: Pontoporeia Date: Tue, 31 Mar 2026 16:47:29 +0200 Subject: [PATCH] fix(config): auto-route test.db locally, posterg.db on production - config.php: getDatabasePath() detects php built-in CLI server (php_sapi_name() === 'cli-server') and routes to test.db; all other SAPIs (nginx/fpm) get posterg.db. DB_ENV env-var still overrides either way. - migrate.sh: auto-initialise the target DB from storage/schema.sql when the file is absent or has no tables yet. Existing DBs with data are left completely untouched (table_count check, no re-run of schema on populated DB). Idempotent: safe to run repeatedly. - justfile: serve still calls migrate (which now handles init too), no DB_ENV prefix needed since sapi detection handles routing. --- TODO.md | 2 ++ scripts/migrate.sh | 10 +++++++--- src/config.php | 32 +++++++++++++++++++------------- storage/posterg.db | Bin 237568 -> 221184 bytes storage/test.db | Bin 237568 -> 0 bytes 5 files changed, 28 insertions(+), 16 deletions(-) delete mode 100644 storage/test.db diff --git a/TODO.md b/TODO.md index a19f76b..e164357 100644 --- a/TODO.md +++ b/TODO.md @@ -6,3 +6,5 @@ - [x] Fix wrong `require_once` depth in `public/admin/actions/page.php` (`../../` → `../../../`) - [x] Fix same path depth bug in `formulaire.php` and `publish.php` - [x] Fix CSV import: imported theses not visible on public site (is_published defaulted to 0, access_type_id never set) +- [x] Fix DB routing: local dev (php -S) auto-uses test.db, production (nginx/fpm) uses posterg.db — no env var needed +- [x] migrate.sh auto-initialises DB from schema when absent/empty; existing DBs untouched diff --git a/scripts/migrate.sh b/scripts/migrate.sh index fe2c4b6..48c34b3 100755 --- a/scripts/migrate.sh +++ b/scripts/migrate.sh @@ -63,9 +63,13 @@ migrate_db() { local db="$1" local label="$2" - if [ ! -f "$db" ]; then - echo " [$label] database not found, skipping: $db" - return + # Auto-create from schema only when the file is absent or truly empty (no tables) + local table_count + table_count=$(sqlite3 "$db" "SELECT COUNT(*) FROM sqlite_master WHERE type='table';" 2>/dev/null || echo 0) + if [ "$table_count" -eq 0 ]; then + echo " [$label] initialising from schema…" + sqlite3 "$db" < "$REPO_ROOT/storage/schema.sql" + echo " [$label] schema applied." fi # Ensure tracking table exists diff --git a/src/config.php b/src/config.php index 0a117c6..87939ab 100644 --- a/src/config.php +++ b/src/config.php @@ -8,27 +8,33 @@ // Database paths relative to repository root define('DB_ROOT', __DIR__ . '/..'); -// Test database (used in development) +// Local dev database (php -S, never committed) define('DB_TEST_PATH', DB_ROOT . '/storage/test.db'); -// Production database (used on server) +// Production database (nginx/php-fpm on server) define('DB_PROD_PATH', DB_ROOT . '/storage/posterg.db'); /** * Determine which database to use. * - * Always defaults to the production database. - * Set DB_ENV=test explicitly to use the test database. + * - php built-in server (php -S …) → storage/test.db (local dev) + * - everything else (nginx/fpm) → storage/posterg.db (production) * - * export DB_ENV=test # use storage/test.db - * export DB_ENV=prod # use storage/posterg.db (default) - * - * The old file-existence auto-detection has been removed: a leftover - * test.db on a developer machine no longer silently redirects all - * requests to test data. + * The DB_ENV env-var can still override either way: + * DB_ENV=test → force test.db + * DB_ENV=prod → force posterg.db */ function getDatabasePath(): string { - if (getenv('DB_ENV') === 'test') { + $env = getenv('DB_ENV'); + if ($env === 'test') { + return DB_TEST_PATH; + } + if ($env === 'prod') { + return DB_PROD_PATH; + } + + // Auto-detect: php built-in CLI server == local development + if (php_sapi_name() === 'cli-server') { return DB_TEST_PATH; } @@ -36,8 +42,8 @@ function getDatabasePath(): string { } /** - * Check if running in test/development mode + * Check if running in local dev mode */ -function isTestMode() { +function isTestMode(): bool { return getDatabasePath() === DB_TEST_PATH; } diff --git a/storage/posterg.db b/storage/posterg.db index d1e88165c158795c55bb9eda34d838f9afb36714..61c33a51fee808f3c9982a3f79c47f7ba1cd82a8 100644 GIT binary patch delta 3029 zcmb_eeQaA-6@Ta6_xv0u@pC?$XD4xd6UTAB9NT$zN>kb_O}n*XB;Ar$fatO6&Qr2TgFECmBf=$X^>IQIyN|}FA@YcnUQ8`mXp?{o6?V^OVSzX zlypLxU9DL7g49rA#xf+-DJ{iUh}Z{FeO!yBw9)ijLQ9!fP6c9Fo}hn8t8m}V@@~bi zgh(jd8{XO*>hV~4&Z`WsolWXfNi{L8Yu&-_9)GZaX~i~Jw@Iwb5ZfD#W>V>-n%3j7 zVqymeUBd;6nk+o$QAXwx@p~I1B|PU=9>_V9nknkePY0dz1$v2S$PABXqKR}SSxm-b zG92DF9Z&xk({6$1T*^L8kKIE{fakgG%HCKiy`l}(mKXT2^3@^t{sP2>c+RQp(o!kC zSa^KEbAF{inNE?x%#3jZhcjBLNE|Qh+vnb7>tMWn6Y_LCunD;y_Y@)*66ZE~=wTju zmE9~?^r@IOqs7ui%r`PW8KS^E^I{qfIhKyHeN)c zo*i9Q`ZE)Hv0XQF-=z#2m3&kiD$cMb*}#$of^JJ-d6CVw?*Rx>VbE!n1V=VO zrzAL72wk+n?;0vMc;6)o+*VGZi+xa2Rm47Z2B0ClLBJ;nTnDEN43M3l^$!mChx8&JmF{|?~ed+O*vlF$ha z^iLV6&VDilB3PbqIYl`Xf-h+_bQs#0zs4qwABH*JLI|P1XJ|Vien0Ugl3GfiVAbe5 z#_0G=JgsGtjE-vKIV#6*OF}D?GX#QUJ7M1}Eg4gzog~Co+H8JBmydvp?oYxC=y938 zm4Q~M%`(IL!D3zI%&e<$+Z=T0DD;YT9W^Go&uN^yp1yPxEG~Ho+eO*wgy+iPLW$BwJ2*RM>LX-li`t}hx;GcJ^Jv_&_SJIk5-2=m$>hhweP&uf<+;)K71ABR4(KjjADJY!LcdH)@7X16LquK)axW z9#D{n(r#2qzruK+oxY@?R;KY*J$BF!71RQ4v^tD@;Lk%HVPv6?gi$TD(z!5drSB-n zNiT&NqmRC4OdWYf5<_Jyyv*rO`omBP0*Atq@UN~b+oO) z$Yl?ew;`EtJl^M`S9Y-Y5X!XJv$uC308?MRNgnp+RXslsb%L9{y@D)jIx$}C4bpQ# zbSd}dl2~!@)~lTKsx&FpSg)=&lGm*C>LBWJ7c{Aleq*V92!#qe*+-dr9z4pA#X=zDIsYM^qO9_3^7AP%kfzTFO9;J`ld;h=h z%7y(9r5nu!u z0Y-okU<4QeMt~7`E)cjQk5q2k0H#9Mk|Kr8J7Q)FUhB)^Htrf zH0Bddc_l zu7MARWgIn26}w)(`J^wV6OqyLg~Ig0(p9^*U{(z6q~R<&NPFOn;gn3n@fHmKOMX81 zQuRL^HJtgpTUxN~N=TtYUKLY`$fjL|!b^;*Hu8v3)$?$URxe-Hk;cuJ`6bCj(z^}MTBbobdpeKwJZY(G>ej8x2$p-n7Zb!q)<3xJEji8O`4#YQ?B}tdB=Zzw#7UhOGLKp2Lxut z*6u-CZUw*c7wFfsCd;^zh-^b*$92cNsB7m8aFG0&ui@vjE!w$`M5G4@KB&7@6BV8U zJ*t=ehfAOdDE=(je>#d3!T#fQu%mX5UV5l*collM(DwV;rkWEEL^{Rci1@ttg!q7X zk9b`CsCb>YBo2#;m=PzxRzv6Si~u9R2rvSS03*N%FanGKBftnS0*t_m9)VO^Sr_&6 zd3Qo|D%+xNy#~{e>DrFF8g)PQKPs!@c;m0q_unLQF{L|N(XIJ9Md?_hD1Fg6 zlgu>UW`=| zQ8(p&Klh`#>D;=`k9R)SIoH{XApFM&FanGKBftnS0*nA7zz8q`-zo?kULB7N(TuKf zNw>;|qfM0-j7r6RIAn%8)zNG`f{Emj%l3kH+F81)9mfiVrMGwnmOX?7 z4|z45k+r^0uVCsOc%L(A`9w&-kXK{rcx0?lI8o6TODJj%k@8Awyo# z_+R9HHzGbNep$R;yi^Q}b?TSY52;V6uU5ZJJ)o}2{VhK8A0xmBFanGKBftnS0*nA7 zzz8q`jKB*Afz2Wo*-$v?=!B78;o5JVS#q! zVz9RyBNNfUag3l%Yw2oOxNV)3*jS}fcRfeWCHsTRWjXd{V=x*a84QE9iF%c?#;Wy@ zkXtjc$hN}tj#y+pK?@3neC~#+WR zSp22rx8Q5YvG|dk%avLC0EUAbq__ zfad>W>i><1r^Fk@x8Vo>F#?PLBftnS0*nA7zz8q`i~u9R2rvRKIt0EA2MAutcHsa) zqkgGh8?!vaDVsR5vPSzp922`v+wETMJHW`=!U%SL&}M>jv`_-;A6#w9^y*kw;f|aOi#Cj%0H@bB)=e0mb`IN6 zWK6AG*Ur={9?EANKX)c1%RDv%9E{-HO~+rAp-t6L7afVYLW}?-zz8q`i~u9R2rvSS03*N%FanIg^Nzsr*p+PbKWJQtZB|C2E1M9M zZOZA!I)s%>1s&^^gXwUS0L}j^;tdg;{{PGH_>U1_1Q-EEfDvE>7y(9r5nu!u0Y-ok zUiUa*a0&T%509y(pHJtxH zXItgqNWk_Z8sz-HBA$wfFJkBaQ{R{haxRPjBftnS0*nA7zz8q`i~u9R2rvSS03+}p zLqMKo&}KSN=taAkpd+VjNw-V_H2>cr-Ww5r4u}630Y-okU<4QeMt~7u1Q-EEfDvE> z7y(A$1&F|AtOD3j7_sJYMPbP4{(Cem0O&5z9f(VB3lBm2|2xEIBH}aROE16*a*-GT zMt~7u1Q-EEfDvE>7y(9r5nu!u0Y>2F5uoc10y9BJr_!BnngnS6KPlEk#3#jXh_{HB ziSuF*kNn37FanGKBftnS0*nA7zz8q`i~u9R2)xJ<*qDq(x(Xw8&j~v(e_Mj~-M8Pu z7qaiZCmxFo6wc0Gz=3>ASIeenJJ`t|5^!rQ7TH!fXE<}VQ`N0fSdN=;9Kia5e`{b! z5*x7ufQnl-?U1kCSOBo8fa?Yf?O|g!Bmm9-C&im1;&bB7;;ML$_^|l0_~eV6#9Tc_ zfDvE>7y(9r5nu!u0Y-okU<4QeM&N~oKw9aFN>fCV_VKry9TK-F1JUbE3~`}si?*2) zVi{$9)HfX{eo`4r&w#{U!99g*DL+^O7mY6XIiHZ|7f%pHZ#OeC~1e z2eUgm7qY|RUFvUjzE(Vv{daXs=lx<-eX{c(IzRlvA_qtYZulDz3f=09*|htmA%k_aG%xvIk1e(p6kwZd(WF#W}rRv9%M90jTyT-o+#mJ;R<&dV=o1;>Y#^1SFi8sQVIxAu9xIjt%N(?>3!igWpDJH?Rs?6 zy9GjOQy!*N4R<#c>r@>n4om?31^P8ar5~}%hHh!2xQ)H;7=v6xBV3W<~20R@Iu{1NTa()nTnPWtHD{Ipbf_M zFT2N`^+Cxu2mI5R?cPMFfpc7AV^Ud5d2gUpYc^)K z3UC{h4E$U(jV?;ZS$g}TaVu3xmQhxG9aX%F7J3WC)T?N7NO&z(WPa(YWtYsdv4);> z%cSz!)@piMAa3!{R98{_IkQp~6u+cbXYKO5p;8!2cSs=ERxUsYoY5)E7qsFmQK4*? z>eNz+ycwAhpmlXi_tM01vhfj08bDe!fwNgj$!g=wendm#K`D|{DX@%VLOfVTf-pjh zD4CucryS?(%EgN97%|FV&hgv3s}QRL3Mo>w2BRz*a{WJu<(Ny4qfiju_o`Y%{2%dE z+yU_S;ixE1gh#LtPJ6_1IZ5N{OUFJ2=a72hcqMNM1~W%2Fe z0Wm4Y#R+j#42wM?4{N|yu~FPAR*8&=ssC5~XZ4Hf->IKg|3dvU^$*qGQ-4Rjrv9q> zOX|<7Z&&|^`qS!5fVF z6uIe>(mf&FqI8c-cT~E^q&p(rqtZP>Zt8C79+vK1(mf>IVd)-}?g8oUm+n64?j<+5 zN4f>+?w0P5bO)uoOS*aK4oJ73+{8}l-YMNa>Gn#uN4h(tyIs0>kQ?77-L2ByB3(_o z-O}AG-A&}iHcEGcbZ?jLdgMg8H3_))PI9{(`{i~u9R2rvSS03*N% zFanGKBftnS0^cA6Ualk}o34yukG*GL0gN|&qNrK4@Wpg%Seh|gF*L){Y73WLIdN{8 znp<}?yv3psBd?vu(ge%KDjclE!0L_~ty|Fy*K3d879nIy{FO*YBC_Gi8NURUK?TrD zB?AjtDD%2S`O>7m%(zz3OUp|1Tohp;nuv5=*-{v%l`)h*YAjdDP(hX+ceSO*G|#Sk zRPCybWhXucx`xtt1}(2Zkvxhui!z(Gx3Kg$3LR2en*UeCpVR$+e=ENF4I(jT!w4_} zi~u9R2rvSS03*N%FanGKBftnS0?#1=v^$_-M^R|ofPAowj+D}smc|8||4*sE5fPsd z?-oBKE{bDfz4|m>@E;?<2rvSS03*N%FanGKBftnS0*nA7@IpdhM=BoaixiIIya76u zpjO9xcgdgVE)4A6qYdpI9y~ByIG9hyBL^deX}j)fWyi+ec@2B$UBg*~8xp=J5s&PQ z6h=q2V-F5Yj1Ej3*Y@NG!ve;a2b>yNA>bXccw~Dk#g#%S?V(o6^p1|UP%GxRB^r-( z2RW{g9nJrz#D$3X5>D&;G3@mJ2=@P95a0DeA~BbR5nu!u0Y-okU<4QeMt~7u1Q-EE zfD!oCL4ZzhTyCXE(aE0S28kpcJ9(Y$A+hY8Kj@FsA%l%@G{ld!y^zKOrS-y(BG3Pm zQ7C*I04m}i3C08B-^4%pKfiTQ<&rW2i~u9R2rvSS03*N%FanGKBftnS0*pX70z)+E zKbU~CHAX+P!ik92iI0>=_u`Q^>X+3i~pxhu!tXO`R{i)pBftnS0*t^51c8HV6J2L|q7f74#9neA zs^FO18M+8sKF?sc9B!62X1vQa!<`vg_IS&c`_?48dU~RdUi5UFeY@=AvWK;!lf{wg zqBcEpY`lo0YTMG(dNUgS%(6B%F;S-0lvxLMk*G=5~4Rk`{4n_Sns7L3O(NwaluP^%Oh)-hE(joCK2Si@>lwMZnxny=O{e8{%L>wnHqX~L1%{ApJ-Ay zMI!XdoFaMPm1`vrxb+%#x|^uH+x9cItom&qo`c$d9o@1YrCuvPo1Xk!N1|)z&Zy7o zfp+5>IPBiSiT%E^(|A;tS9kfxUQ#>y5w!2hg=n&C!-nW9clynz?kxZ|XiVgFEK4JJ z`JBOJ;1Gk#*V|aWF8Fe>(MT%V6G>H)uZ_Pyc_!K;p6vK%@ksQSI`*o+8hKapQ83fH zh@<{f|GjeJwq)1PQ1p9FN}li*4A*pL+FHzwZ#FFBlpDVXOcQ))Q;!>3uTRfb9y2!+ z#&*hv)6}#Z8t_oR=GeF^V!2k`_}YW+p^7Ur>P}C;hH4p?aPtPb&1N!<5;ZmILBDM6 zihOUgBK^3Gq9JWi<~~2{iL;Z%v6B;0>2HPY(~Hy-89w z!mmuol>lvv`Mkl|o<}>FjrS`;nJh-H{HGQU-|Wgi`m$T4%KP2Eav$(+&^IlAS|7&8 z%X_gP!ivJi54|!E2j5o|L<0lbSt+FKIjxbiIj2?Y70;|y3~2&bsU0-)e%@L^D~I+r z5R@}qG-djd@Aj3hLtW3LwJ)c{%+T`Z+jp)@bRAj0lBP?6$v)%zw}Rz<@te(d&pQ9_ z&)$;kTE9N}lMgjzE-q%06eq(k&t`a^WtwS^l=QMuMfuBy z2gT8q>9-9B+8U`}*47Z|hEL5gWUJw~Dlux~GA_%L>AROLy9VvYS5v9HFWWshNcAiG z1t?MAOWusUg-Z_nD9{Am$)%UeMp>J^tX-%(m$jM$EsAKS^;Y#u+R)x0l|Gq|17+B` z*p`idb~R87zBFMtUU%fsZkKC5;>(Y6@MflJT6GVs6qp_*ye9yzUN4*Wu0`Z-OUn2q zZ$_(;ZRCbX4?Cs@7}_GtnH6J(a-AU#Y9SJ^+tBUh6n5D0-aY-h`y?>u z{P%RP7#Mc{rb(7ER+}pFz=(o2i7fQZ+0Nx=a?@rNQd6(ig4XtI3=6&#cvd6qer;B_EW??p>E420 z+-6bGk_>a+(k>d8{lYBM&zB3LWtx85C#hEYAxe88+S{`DZB22dtXnN|S7y(9r5nu$qp$H_hv1l}%%_cJBXEKR2`RQ~bMSd!kNRppSCKBW)5{WqZ z@pvLeek_(y$XAp^2l*XvV~FkV|9>Kav;V#%{#N{z_?Y+u@w;M4Jc$zkp7@4VkTYWh z7y(9r5nu!u0Y-okU<4QeMt~7u1Q>xxgvR&LY&I+XOeQ0J4B@4pN~NTq#2Op7cZvmZUW|wVal1&UUsC@< z{gC<|1mZtNfDvE>7y(9r5nu!u0Y-okU<4QeM&S8HVD*{=Cat?u+11Ux%BxrVuQIDz zuU7f5(xUZB_^(oG>y_%iO6Hoc*5vRi+MP;tb~N9u?(~Btvdvd(vVO35Mrpmv1n<&q zQPY0Zc&ZgFU#Ic^SFi@)Y3u;_g!riV2=)N{CSLO&BftnS0*nA7zz8q`i~u9R2rvSS z03*N%eDe{AWfhzW5X->L#L{rnu@u}?ED1M>J^wffAQp!kkHz4^fvdzi;NqXs*#G~F z{`~*ni%*MBia){V|AROI;8(@B-Vwv!e2Q=h7y(9r5nu!u0Y-okU<4QeMt~7u1Q>zm z3IREO?9JBvV;Us`-H2%j2{$m6f0Y-okU<4QeMt~7u1Q-EEfDvE>7=dpv0`X1-M*u2u z%=$+&9dg<~9mlkPG}RHuyni%_)BfNkFye=Yv;Q#lAC1N1nES^*fH)@qqaE=$X8xlc zxD7yoX@K_scZ#=$-T#O4|M7wU7y(9r5nu!u0Y-okU<4QeMt~7u1Q-EE;2VK}+_s-p z{N4YV4u9G|*!-XB@HhV_6#1D%1hU-7iRDW6h1@-6DpH&}Ie?onu`u*x_)JN4twWeNB%j&nQ52%ysxOzf8st&7r)V$iO zZbcFKj}c%57y(9r5nu!u0Y-okU<4QeM&NlufF_S8?j`rkIdaF(l6!iB+Zv=p}c154m^jAa~n#a<|?=?v`!jYFo+e-a_tXjoeM$&fl9joe$i$X$0Uxwot%ckM0YX4jItW(~QkSChMH6}du? ztE%MYa^!Y)lAFzvo5_%yPLrETk(*4Cn@ErwECrym0I&mq+zy-s=->Yri)@eN9!nYV z_u@y`-|KFTZHjE_KHHIsMAL70IRzQQzf=MLB85U^_u%fm1A~M6rtO9Lz$~2m>`Go6 z(mwTyH)s>4XSgN9DjBXeRWnMSqgMX7v zvmE5EmFwCu$F48v3wk~?R?$4e@?;JuMMbyfkwn>?n_If-;Df7`7W8V()tsfP!7J0K zxSC-hOMJ8~*DNC_<%mL7bqnQ2MV7A4qk8?CXV*OnJZr*1P86N7?(}G@xroQt!g{owRan+_o!X1Qd~qBC>e+e!Xe^!0Q&FJ z=S|e0eyJH;JEGl70onsg%2agIMfHgsj^h)?}P_7}g!a7`y`5Jq-vS(MDxh z1Oz@V$_wr(QygGVJOchJgE;spVIi;p1-Jw(11j2%d|lNm^LQ?)C??CO!eZ zL(-}MIcjr~5J(K9wp^K_*4xg;4L;KBI;GTP@49DJOpo}e4^+|S%nCIt&!Cn}CRU)v;yLw_%(S}nc52r_q`WrXV^|lAy5^$%0~d4%3M5fqE*Z+i5VK$` zuqEn?Rya3j01c`q_`F;W(Ct^sNwlkV6AVmR>xi;8}$XElT+m?l2vZlnA zgsxv3ea@8p8v-N|4Icqv6?H}%uT@ZXsy~&_tkx=KNwT|NN(;5qE~89q~|U`MGakurRRufHrhscxcb?;Ly#z`tCcF&5=zzuXJ~$Ao^c@mL&705XroE z(wM8DaB~m{OYf>0X9B?sLFMT6s!j#BbjR^qC{c1;G6#KQ=z%8pJk4p5!!Y7SwjY zOvDHXvjD-1Z%F>)LKQ6G*TL@_sFIF8Pefe0n%9m#A91OS)w{XhFf~&GRXo|hN#d_ zonM{!SyoJMH6OneO=yq__}~)Be;BdS|mdA`v-l7y*Zu?3H90o z9nc?kMZl$z^bhw$rXrDpAzWG**R@&00bL;hKr;vIl^VAlms;&P^zlIIjDEpz(3l`l zOG}TJQFW3*R8ozEo9-DEQU*ZMMHAJ*N9sLvw`Njb?Pkzy0k}Ir$s-`TpW_tGq^`n& z1f|qW7lEKbKyFhf?2BVi4>a)*r(Y`(he(wr14RYdfkjcqitM@&koZ)u6JgO|Y9oGE z067zs8rhuDof2USNo0X|U0BXC0!hFY{z|s4CP~-Dg6dvOKB( z%s~-(94VFTN=2WwK{(VTpD9{y9jaHqHl@24OVl1yxeO=Ci4s1-j1(KvOd99~ z*=2(4q>2J521vm#L5&fqfhF2KYG6@EB+FB;!8-xmm)-`p&49^A03ql@{7&-ISB(0# z2azkKXKJoQ7WhMzdW<>`&nPWego5OWfTT;0W!j0ooHamE^vLKXp%AnIjVyy|XnKhx zx;{^Re}*(Q)PWi}1faRNbQQl4IOwq@7^J&4S%^x09ScqA^*N*f=5op=MMk|Lm`aXO zHv3U8^zT#`S0{>-w2>&I0Yh~~Pl3#cVI-@8NoD?-Wv{@djlwsm7?8D{fKo_ZN5G8a z7y42&AW&V%ytjA;wFy~FmzaD6qRu6~Bw*{Bj($-0yLQrJm)@ppTfoYhHm-#(gNnGi z2Eah!vg|@oqq6CkXuwk9-dJT>7}sz!vUN+G@r1q?dIgY%KqM(ygEkGWN3UwT_yK|% z5R8!jKJtyWs~yQKy&9-Cu`83>eL(^sVQCh(p)1uPCD8R>0?6P#6qce|kaomvXno7O zq8nvN{`g|~+GE4ikE1jwX$9jM((uZQWzDz*(QO&~4>WrBYmXf{qE*qJLD3MQcyq5_ z^=(mz&If(b`RX3(;JZUa=k9Yf7FdALLEF=*gFy?GBNE6xbl&(_LE}$8oow$;NL+x5 z#2s^vDHSwg5Gnsqr;)PV`xXvp%Jun){2`Sg2pIy$(v)QkWe|| zs8!_fA0xmBFanGKBftnS0*nA7zz8q`i~u9R2)tMk$VH8ah&&!q-<$bj^2g%;kTl}| zJ$^Ly$=JiOHOkwS>5h+e%;IzKpSqCy`Q#6NGqAWaoKJ2zv_AFdPS|_qFPX#QJbC|J9)A=sjUz;Gjd`YU(cUAPJz!(Xny3(vEs?G ziHwH7;FJGen<`ERNtI`GPdluQo}Zj7PE5~CkDVz_O^=*8r`><5I9bH(6+TWB@6Vg% zLz&{laX|L(-we=R5P3elGud^dFM4GytaX@rDqoT`Gu;^&D;HpR4t&D6^>SB0!Lf(fa0klU)bbN3SHC$x@EseN1N5xg*iFcYXBb*Jn_x z&sI!#!6^Ib_pX$FGhBP}?o9J_-gtMq_o%01p^!8lOJ{qK%Jj&w@nSHA(JO@@q}kZSbddz%JGbzeys-+4|R`z zV3`E$+lEWOY4#IS3q3L^%vE8oY*|`<9ux{3B0tGwG0StYY(I?2B1bzleP$f9Ychmi z_BJTBV`tBf7e^+v>hn33?$3`uWC+QyPP{JnBoOLlGF9{rw+l1@Zv2supnqnm5{ zy=@uQ+P`SemUuzrHflGB=+~L@mO|z_sz}m8uvwC@w4jB4Jd70@pc5+RNJ864-tkE* z6RPRn!gUErg2|7Tjx|Cdw3i=U^AV%Lkdgtg4rlf<=BH%*DincMDgBaT+NI=}HM#zX zQf<(%V(aB+NB0wFCyQezCnW#(HUaC?CW|M~?@x>trve?K7qW+%-tppi5xT|b$kgb_ z@nWVgyDR$27euf8pSKW)HYK{w_N~+y8%;<~Bf2v~%b&GKMEQaLywGvY8G#oR0*@Zq znC$B7i@xgMvR=|}yvv(zcW6)PhYb44ra*6WFHJQj=mBMDsFf>xZ`Y1my+glTva5Tf zj{52R2YZo_MEq3`ltX)06uhN@fxA+NloNB2n7SAd?@|}Vt?KW*pvcRGVFVZfMt~7u z1Q-EEfDvE>7y(9r5%?BI;2d_6cXjVg7YcGF0K4>p{mK_FEX-9Nx_H4|D9=?cK6Jq? zFZherhX!`<*RV5k&+g&EzQ#KC!VtY0+B>{^_joK7*|1>%DF)LBqyB6Hd4^S|RrqrG z{EDe9%V0uDMK*1s)EW~M<1|r$dA6@FJ&7y(9r5nu!u0Y-okU<4QeMt~7`9udeY8=`>`B-W{H ziZ)CbN?PfPN_$I3T3Mg=S7XxnKP%o95!b|%IO+di#g||S_#4~-@KN!U_`vg6N=}*) zU<4QeMt~7u1Q-EEfDvE>7y(9r5nu$K5rKr#5lwzJ>w6jBOH1$Rla$@8toRU<4QeMt~7u1Q-EEfDvE>7y(A$MS=h=$;T-K zdj z$SRxC!I$0s`2YP8@j1--|DO1Oc)$39_-pZR;wv}};Ll$qkaIN{0Y-okU<4QeMt~7u z1Q-EEfDvE>7=af70x=~*Gyf5q`Hw`?aU~kfVCp{-P14V7g4`G;|08hmQ&GrGb;Oit zI_Z!9f7@UG|7r1;;*Z5g#Qzq*E&f*gqxjg1035CYBftnS0*nA7zz8q`i~u9R2rvSS z03-0?L4XGLZ6*MEOvzzCR{uw6^?xK9r{@l70f=G!e}vZmM}qbLy#N2j!wOszMt~7u z1Q-EEfDvE>7y(9r5nu!uffqLdG^D@Y1VHcFECBR~{r?f#|KC3TSKk{EcZmDdkBKM5 zu=pXY0&vy$s{bZ_^TmxA*Nzcj1Q-EEfDvE>7y(9r5nu!u0Y>0k1%Zvq;i#p%C9`Vh zOBKWOjHB~a-K^wGb~W3rj7D+EooDFvylc$c6~i))nx%?eFVpu-uW~->Ef{uf!K@hh zdBa(B5VUGICDU+@8qR#)EiKq~CB07B71i^P7}cZI%a?V$qUb5gyP{VNcj2O*clCd8IElowd-ERwl7k|#3toPv}!x1ZW(#Uq-*%ft(fuk%6{C~SF!UK z5X5aOMvT6cb;m?@HN&pA;wY5cW!7y(9r5nu!u0Y-okU<4Qe zM&QMb04?gzX35QD$W6=b|0%inKPmVBC*=PBxLp1pYdZj-1MC0O!TNt5|G&7ogloqL zFanGKBftnS0*nA7zz8q`i~u9>t&YHdbo`$K03FJuNcs>Q{$m6ffo})`uREI96xnn> z(vgZr(r+B4JkQ`?s(^oyLLm~|&v9V9XX$DQOPBh!ilNnX2a9_Q%hL=`tLR#(Zn{|W zlYBZm{;5~|_}31oImV(%(cQYEd5&$mnrnJ>-7{^=)yhaicRb3)GfQR-uje$wn%C!- zt{Sek^q6+csb4ZGSn{Nm=$~mlq?HZFGM65A@T^-F1-$kcLdrB8eATM9r5TrMOIID_ zTr!5WV|Lj@XnRgOZP^c3jPkr+xltRT%XQ7FS1B;oDp4)3Ju&K6($RYJ`F!8CC-Y$` zXua2-Xkl>e$-aKdyW-c#bUk2aICHjBHR`URP3exlpxvii3kLEwTu-Z82C~B1DWHsq zC9LLhjcZS8mR;5HY+9~|Z>XMD)&W(e$8c+U38~g+vC2!U*#K0p)f~erJCp)|)fa8k z0jh=u%;l>Eeb)4J%e(e&!_8~shSsR^M61fEM?0aZCN1=I#%gf?zJa} zfxL#rab`s;_vjYNNW7>$R5!IMsE^vYrKQI~93l|Wq&h390B7EGD+s-45R~9P&!}MC z9%Xbr$7r@QkF?#Ts|dDel(d(CFrfR^NecEMM=S9sDoqFbT^;LjDq7OUSI>TuuIiJ(FuW??I9b}sJLi*;38s2 zl)COS3AHG{NtR8wW}{sqw>(&+DjR&ws4pV+fQi_WG-#jz-$r`@UMRX{*If|RM7~rT z)6r@byea85eU@@JED4@$R0!^eL`kvE5$RBUDQL+AwI$Q~iO6OIGP(!@dPos5kF
F5*k9&P3UINw@%g6sS$o_-&#O#ULPqR&>F>Os&;NTMLwp+AHweUtcTs4<#FUWFI(BKH4!H$MyKi8y zFtGc8HgsTkXwUHA(9OO2zGLytkxe64x}*$$)5}SQZwis&`^R)G0@R9ZD;TXLoyU()prFRfmdY!~4K#}CJ9m#K|27UtgHR2}J%uPNWn;_yZ znu{dHsiiDkt(j#I7ulH>*xLjPXv0!`nATiHuLkX`w1CB_Qq)oo?q%2W`5lW^7Y)b< z(8#q*CW#7{vLJzK0DKQErCLWLlqCZJ@K9dC{wqgqMQVZ)bH9 zEBJ^O=xLWV$i5nA0_xzitbWZw-Knkn&7+Z*Y%j#m6|D3{S264-?DT7%T`w&d^ur-} z1_qG*2T~r;OC{SupGs1-l(+LvzLt0M2L9FX+sp$m3TD?A9kfCs2Z?pllIlN9|nj8k2pbb*PmqLVcB(jlc0dEoe07B4BcB0@V z*Ke}bnkjVwh(eUQL^=zQZzA4|3GSMnEM9vD2o<0z<%Weq*w9~mCZDfUtLP^M;_|>5 za4I+qeWhbs^ViVN3en$3^fRo7>Pv5@LVIYvSdcBr+#4{wU9sm)lvyfX z^s^zE&?&jlKqOU{u2ytl1d>q0M86HnNcm=Ir*N*GXMaZ0z0hrKfp_-me z+9kE_8Y!7>eU_RRDSl|Xr0SIId1|plZQ$bqKqz}!weDiQJ!m>dtM7IEkbNu=pf&`U zOkZT7^OBrXHPMP7MW~+82oRpaQE<{P5r(p&qSx#SdOpC6XjEc!L#~7gY&$N)U!Zhc zkcvWpoV5xRF`wa~a|BV_g&762u{PdETjoSL6OTcp$F-r`27{LU z7_>wp(O0i)1eJr9hy6hdt~D&|BSL{f5{jy>LD$1m^0Nw9H;_A^s{;vzFdhaVvLDg* zYBh``NDo42v=}f6+K5}Pkj^ZnhG97d)IMt9XtzLI>H&z3oFuQBb8{FwP@9I96eI?6 zG|P|&4{5WI<7glfV`m55EVjdzo-T=F?GRs3lR-*Vbr89N&V`qQ#Vl+Nnh$>5f3sHZaxE5S~fXS zR-y0G#tyuvMjn(|78IfadV*dr`#A*oQH!Lp31LI{OJOAIJc~-A*7$(L0^ls0GH$CZ z!b1#D)%|XKPM0m%aq}TOwBUI)cX-z>=%)Eub2eY6JvQiFto*F8YrbO7>Xlt(8yW*; zxT|nr_kn}^2Sd^cdG*SvG&pX(&vCE%jukj=_rBvs4TC7K*ck}arUDLp&gekTAgU;1v=ol6K&Q)@T%xcR{C6P|iIP8xWg|pe2Mt11b`e zzRK@Yx*_b*clDs}tbnOylP+JjfG35O4Z31n!mlRRwP)WLctAW5vv^3+^1B_kt!N}p zp^#JONL=04O}D9ID6Y?abI6bS9jWd?M?^WE3#t|d_w3yrLc)+&uRD=~=KOML{D{8c zP~=K?B(epxz0UeEG&Is2QqyRo)$tQp=o~8MtRct7XaEm9Fa`orn@2^DB%jW7K-x4o z0ZmX2kH`Q(acg$D1jdl4krjjVWfvW$+n;IDNtd0K9P&eEKz3```E^ke7Ac(5>lIr& z;TRZjWx!p5UP`5E@W7{D@x8-%fP^Qm8vrx;4=p>vv#J!5JE9fQbkRNevJ2xq8Xd@H zmGKdQDqYs+Nf!Y-_`MWh}y5+Elb4~c2@`UMCjQrs5M z4@n7!-nubx$7_r=pjJqmk<_w*vZdPS2bq;k;EB>O=rS9Ss<_M4&u zwF%z)J(x5HwCS7@MH*d!d?@zAkQXRpV=zsTwLr71JJ;UrA`2gPsVY;ycJ19337I-I z8V3p;n4-}Npaud)zhRI*4pUY==wp2arGyShX4hzrQr?t}1zXxKFfIhgNpS|{5w=56 z*3A$ijt$ckY&3G1PSz1$f;O5PNh&E6N%Nb78b`xDs)_u8*ktT!4h@LIC95^fT@4nO z;+@Q)6&h)_2}W5?43SAJW~3smYu@ErL%SpC3xN>WpP;ruB}WzQ8V0ANnr8?uU23RO z@5ZMKs1~5Y=va2d;I=t3qatP?R;k{B0H%g1)4>n{{SOLA5;~A5#JkPL3Z|$N{b6OJ zA*x25Ej4l)2m6GSJq7G7Zhizky{+vebF1t(Ao=ZCDi%^RJ=#}V(R!QK4GVOGG10>~11H_F< zW2o~?smpPmR6C6f@tx0u{@?({#$c!jB48YV0?FYHjJ+P=N<8h`k?}l7CG!~oOt-8Y zlHh?X%lKA3UH0*g9q+u7m%ix#)rW+Im6B@Pyj;&cnEZW~F0PNP{ypGLpLJDE*NnNgfDPvW5}& zjoJ|9_=xIFlO}5PXPVW-=Vdj;n3XIqlFNt<$w(TI%F)Y|7mZ$**Rw1uBDGMPhPvPj z;Fux%rp$ECoUda{j##KW3gJSPgsg-qL0Ztz1~3TrH8j{mAS`49kU3i<6txRL8I2O5 zsZRi_5D}&Bta};HKx+BSNPCwiI|ejl(6KQlA(L}3q|@xBUy;q%cB?j7)1W+2_d?7g zI~=m{%+uRu5#>+~YL<)aP&)}X(nAGY($+yl47V@I+LFmevV9&(1w=0yWne_{`vb(L z?EH>`xP#O?i^e7ds$tP!82u5X7|dFvA^HXK)q7{r=V~G^m=V%}l9FQ}Y-~3%1SL@m zt(T++v`!dri0Xh4MFmqjG%|1YP`(Ah2k8bbAgirEqL8L~@O+RR^#P=%kfj-ACkbcH zp@$&Dz0Wn6TL2MJa~d9NbC9c28<4?KK&kGa9MW(PEeb#z2TJVRlAp~#nfobjB!$p^L5#RvPFpTQQerIlxN&kr-?^01ZGd167die3}c22zw&wJh62qD z-SBD{0KoDSiG2TwqsetWJ*l5MORDJN3{KI2#yK-ruT+*j1XaFota!h+?1MHkm6^^@p{IvwGI)T2a@q4`LvIE&-5Hn}paSU?Ke(NjSn8N< zrrGB}8IvjLwdOayHUl9A!d3lPb6)ck^bSl%c$a6OG`5Ox*|KY{iLoLP%)^-;kUy8a z8Q6@PVKB`g`2ZXtHLOP1=6g9K)p$FH-gd?{A2DVy*J1l_^;Rh`DPXv6TNx^?Z*;~8 zRQ9%yUcT|J1?q*mb9tr)QbXlx0a-PnZxbUm-jxk$kDnn1YP^#(-0s4%Z~(gbx)E+x zH|sMM)4JGt0R`2Wf#$T}zdAX2_WZe-(X$hyBh$Ud$EK#oCPt?1+sywm7Y}3-+n`aa!;EC}`@-;w)>_u%UQ4}`$7NNsHpIR#PLUItlR7pu_{ zNqj)x4x%;Q%8byKmt{o2pnU~x0m_YEIvLi}^TFq3Q5s?WpnBea4oVc7dRyB;vuMx3 z4b7oFydT`nx8C_VxuH2V*-G;&?fFzf^J#_l16T5mH+~+K&^!W0)V#U&9OgoE@WV=R z3DQ@6ip=GM*FNdN3Gzv}L^|=uO8aju#)$Lc&sSM2*I0AWEUv&%5v9aI)(l zvPp(#BO|m$TlLI2$>2BST|Mif-`2{D>Ovhc6-nHfcH^^5l1fcs`ySoC zKiRcyTl7_{rGnK~ytbeFg4BGas_jFdPWkoM#wMnVCySF>LsjxcTo4?T4FBGyeQ5!b zuv0Ya=_hjH>|}B5Bl^#U5I;c=)vPy->?M@Nnq!xEAF z(zh%HLM1eQrf=_oMAz81mDIX6NM?rG9`;|^zBk#mZe8@z0UuuEK;+r898kOokZeP# z9hZ^w(-7T=bf!2l?N_FyzBb_2&QFZpdp@XZ35TrtT8DNV`tbDFnPO9O9X&q@%%*4P z<<#`ZnRA)Go_&d~L+e(o9twzh!QE@_K~q{Ey|T8&cc2EeQfMkOq$N`A4YzP3|1A&J zU~B`3x2riCrGb)8jrKhMVD|?5M8xD4*9^H-=H1k-xRj-k@1~m&^_Y7(MpkuWr9~-os96L$e zA09F@a$*`E&z~b|P~~OR%(3Fhu?eXv24CcBZK^mOq$39)hqW6>M!FW2n>y=>;{6bE zhcZyBu1pOkHx##}9vxd=?p80-R{FM=;dN*W(5mwdHE9cVV}05_{s(GxWLI*-;SH%r zhnCkW=#g7x3toiR=7!KW)FcRTV=aOYUw;k!^Z%|!#J`At6i?&i|34KU5g!o0A$~>t zf8uKUh?jpe0*nA7zz8q`i~u9R2rvSS03*N%FanIg^Nv6=mgDx1-=sa9SNkDPCiZR|0m+P2u}U~1@VKz7H37jNT`3RzFYla^&xdq9aKf` zi@B$A@5sGAcQH4S+nLLCe!lZVop0-Wb?3#-Go5|ezt4Us`$YEj*;4jsc5^nG`FQ46 zGe41WGiNh{nN0dK>0e3zWZFxQr@K>MNv7KCBhn;jBg8;?c03;w<@ z*zH3?>^My&!HQ2>|E$rXQOx&;gzLU17THudgHW`1F(iOCMp;ebxBv$W7Ux4k44jHZ z4i>P0#b0Vji`izeJsC3zmKPFyI~LhnIEPIpU;=EF#~Sb{EJ4Rs-;lsNh6uJ(*b8qBOkg!IopKRIsO^J9g%Pa7 z(=Bb(-?R{t+{Rth(kNJ1X8rkCWPbrmwXq98t`NrJVLDs_i(o_2+A=_}oYEh@s9(m4 zEIlO19sPvw2n5Bz^74>Sn|4wIKL>$l*F!#Uy^}coT(CwS>)J!YZ11D$2Rmu$ z*bf{i5fV)6C2`PbdvhTnHuuCL8w$Z;5Fy{U?eN*tqAksGIbKMh4cn>RU9iotqH1?g z86fQZV{byDZ`nq`woWDq3DUC_8*Cx%u}Ypu6r8LR5^&QN!WK)4v7j&Hv!+pDWamO# z0YXA-?j}Gk)UmrE6#3!JvB*^6CiXXnq`h@hAm^mO45#eIjl{9E*gdRtw{M6=))EdO zsc*iWN?x-eXF>^a$9iH;EcC{K71(D*8{9%t>AsD6LmY^pKN1emrY=Gl{YNb{{>EFW z{La$bLnZx|bwp~3|BB3X3o#QecMGdy_gX5QUPYfCUP)~Y5tvRZ!0xzmSOvA!6ry=f zP6!0rDhh#(W7rTEu3BsmR7Na0t%gMJR;i37y*g{-T&9o!T8`4UbjM%c8WLhtXTZgf zej%T`vyw(DYb@I`)M^|1g;x+mT3P}@XUXW;*dLP5&J;;*sRZ~tUh2@tXt{nRB=8+c z$zJVePlSZpk{||)|3r32B)2zrD)$|^$y_D3CHtDr zcjkU9m&$!#_D8aRko|b>1L|jmqW+Y4Lv~JmjoK+Hxqr`ouJe7J6WRCXz94$Vm(&wk zuk)vKPj+_a{z!e9cxmU|*|&;r@jme(^($g^r<(h;I^6lN`i|`HsGn4yQv1b(_?Xz+ z`Iq8nRI4+edtCj&?2gWb?67#3`dgi^6^~^9UER`ozZg}Y?EHt$4?o{(Kc~+KFanGK zBftnS0*nA7zz8fyV6CzGC_xc5-- zrpb2fcI99++&p_Kt#n1DDfVPWSs(Syt|wB;x+s}gi!#@SIraD&r7ybNbUM09*&b~- zlOCfN?IzI?RoN14jWCW1Wm~k()Om!S+svAGQ`Tg{JSRG6(MIQVIxg!wDjV+myZ0P%|GD z>pGL(5S4zp`EHOXAx(9==$iIWvs|8v(lWsfP+6Cm+xm%!zG-bIA=_p~yOXk9ZZhj5 z@-}EQ*PB%~L<3V;j}KeR?6rgFLME>56sKvE;mzcr84;@sVx+_ zX@1fu!@$(k-J?uJZ^Ep!IpCj$3276dCe1|~lge7kdjq8!n1OC5fR>qj)>A8Kn0IcY zlKG~bE=ot5ZEmG1wM;bYsN!UfxrJgjOfPGxB26>P8hUD)R94ed(|odu;*+UFQ2d5j zM5QoI6G$#V2MO&k|yo=C}Rx0@o8RH>HPAwd`gCWbiW z*f1x=D1)ZyKp|ESF%xujD&6U(Nq{ET@6CNUBK}Q$MSKA}0RBpRT>O#vJ@MNZz5fc< z1Uw=Bhxl*eN5v0_*N7|P5#fr8FvPcu`^7miCXR_iVviUQJ22Y6O{^9f*a`lR`W5x_ z>Sxryz$${@SASQ1zxr$HFRAZTA6Ngo`V;CK)Yq%ut-efsSgon1I;*}^omS7NC)6YA z0d+{dQ{AR+RM)Ahnp7jXf5FOwzs>!1?i0B`MiKds5nu!u0Y-okU<4QeMt~7u1Q-EE zpoKvEUfcmck&T~&cP1M@3vWCdpMZBd8$Sc@o@{&^-dHAn8s4c){2q8GGx0HaCo=I< z@QRuENqEQ8@e}Yy)A1s_W9j&Dcq8ffD7>TT_%V1#((w^^d(!cv@a|5>kH9;ej^7RM zu2lRmyhEw@UGRoe@k8(qrsBi!4y57-;q6bw55U`(itmTFHx=IpZ%-<|7hWM1-ve)V zGG2f;l#K6&H<*kM!P}LL55mhQsQ55O|GzHYE#8U!0B;j-7DvRJF#dnFc)563%!?U}{m+V%V!zlWdNA(q5<(=^ z|EGRc{Q^e)pHx4pepvl&_1Ce3;GOE*)HkbdQhz{wwfb_5_-%Dwol)=4{Xg}rdJ-f4 z{pv2YN9|U-RG}twU(J0X_nF)$b05upIQQGRU(dZe_s-nga&OMPDfa`pSEGph#|SV2 zi~u9R2rvSS03*N%FanIgw=x3BSd_-=_e%dv_MG&`vuCA$Iy)i#d$MPwKb9Gn{;AAq z>7UHpBmEPZG3ggGr=)*8eNy_P=@ZgFmM%(vBz;`^N7JLyKaxHs{XOXs>EE3`D*eOh zBhtSsb+_~nr4CDfICYow52g-D|3GS3`ukG{rN1wAK>B-A`=!4pwNLtm)L!ZDPVSNZ zP_iKX!Q^h~?@A6yKc5_w{y=h<^!t-}>F-PqNdL}czx4YOJEh;7xKsK)i9YG?Nc2j7 zd!k4BcO-U5e_LX^^tUFk&L4PhiEop>7T+rU?)VnzZ;ory-xTkb{>J!b>2HW{lK${t*n;* zDrJ@Qg(9S{DysBzN>2KnN~iR*3Qhq)Ju)3Q1ps~;8~Mpkb>I{L_{k2O0sueJkx0a% z>1aGIy;w|oiXy#^j#w<6PSgBVy@`T&skc3lr z7uxb|u5*{SJR@igcVyuzb{$Kk-I86SIJG)%4Wt|4WKj>`4m?~ncn@yRrAzYg3HK*q zV?FL-Lh*6V5AL;-yR?J*!I3Afmus%L#zk!igWVB}M#Zkx{QC!~kT@eKxbeMhD+Ptc zGJ86yLS6v6>tD_l{GOTcif#&dNQ_fW`Y|BzQS{!gf%ir~!upA;r$ z`q$xs{}=&AfDvE>7y(9r5nu!u0Y-okU<4R}Z#e{p63S>{aB$y@UM|nT&QP;)pe^0B zjcd^JxCgy4C@u_XLwkmY4i4|x-5Xbi5M{57GON=))+>dK$&h9wn zZh6MD zzBU5g%4qZ%EDniVl_7k;-n@Y00qFJhwuIPbWdyHRG8`y$JZQL;pku3YI{h_F0{=hw C@o%31 diff --git a/storage/test.db b/storage/test.db deleted file mode 100644 index a5901c5c6513fc6ad10216fd91949352f871c68b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 237568 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