Skip to content

Upgrade instructions

Axel Bocciarelli edited this page Sep 19, 2021 · 34 revisions

This page includes instructions on how to upgrade from specific versions of the deck. If your upgrade scenario is not listed below, please refer to the instructions in the README and release notes.

Note that these instructions apply only if you care about keeping your progress. If you don't mind starting the deck from scratch, you can always upgrade from any version to the latest by performing a clean import.

Unless otherwise mentioned, the version of the deck is given on the deck description page.

From v4.1 to v5.0

English versions

If you have the English versions of the deck (standard or extended), you can follow the normal installation/upgrade procedures.

All other language versions

Due to a mishap with GUIDs (which are about as annoying as they sound :)), the original v4.1 release was buggy. The v4.1 release was quickly taken down and the issue fixed in the v4.1.1 release, but you might have installed the buggy version in the meantime.

You'll have the buggy version if you installed between 1 February and 6 February 2021. If you don't remember when you installed the deck (I wouldn't, after several months!), you can check whether you have the buggy version of v4.1 ("v4.1.0") with this debug console snippet:

Debug console snippet to determine if you have the buggy v4.1
# Scotland chosen because its name is different in all our languages.
guid_scotland = "h~5xz+=ke~"
en_scotland = "Scotland"
scotland_fields_arr = mw.col.db.execute("SELECT flds FROM notes WHERE GUID = ?", guid_scotland)
if len(scotland_fields_arr) == 1:
    scotland_country_name = scotland_fields_arr[0][0].split('\x1f')[0]
    if scotland_country_name == en_scotland:
        print("You have the English version of the deck.")
        print("v4.1.1 and v4.1 are identical for you, so you don't have to worry!")
    else:
        # In principle, it's also possible you have the English version,
        # but changed the name of Scotland.  However, it's unlikely.
        print("You have the buggy version of v4.1 (v4.1.0)!")
else:
    print("You DO NOT have the buggy version of v4.1!")

If you're not familiar with the debug console, you can access it with Ctrl+Shift+;. After pasting the snippet into the top box, you can execute it with Ctrl+Enter.

From v4.1.1

Any language except French and Norwegian

If you have the Czech, German, Spanish, Dutch, Russian or Swedish version of the deck (standard or extended), you can upgrade using the normal installation/upgrade procedures.

French or Norwegian (Bokmål)

If you have the French or Norwegian (Bokmål) versions of the deck, you need to first run the corresponding debug console script below. Note that if you use AnkiWeb, a full upload will be necessary the next time you sync.

Debug console snippet to migrate the French GUIDs
guid_mapping = \
[('6=u<D5pin$', 'p);vRzMs+W'),
 ('9hd8!!ycm1', 'Ive-9<)?/'),
 ('-*s*/9Bs5]', 'o6puwHE{j4'),
 ('4X<I%j50vO', 'ua?z9KS@^h'),
 ('&<jl3wt=@N', 'o.l+o.aIv#'),
 ('9V(hJ,wI/J', 'i+%_VY]7bt'),
 ('#VI;#M=9p0', 'vwLrgavleL'),
 ('#f!B=ER`FI', 'umk_Ql/M`8'),
 ('(=4za=v)XL', 'F*@Hxe1UYX'),
 ('!t*473y]Ab', 'oTmq$Cq1H`'),
 ('&kNm}C1;F^', 'fe<{h`wWIF'),
 ('8HhkHhJ{zG', 'dTNjd[5|Ge'),
 ('56heGus|:W', 'e?6[KX^Js+'),
 (',{L,s4k?Ei', 'CJb&~c&tZv'),
 ('$*(t0;xm-I', '0/,+rSKt6'),
 ('%-!:KaSHN^', 'qTFGENa@Y3'),
 ('#1;Z.gJtCH', 'AtMq%)YA4~'),
 ('&HCzzs8Azt', 'O0NI(S,j2o'),
 ('/$EW+%8{uu', 'm]_=p1zwik'),
 ('3sa$9R,{2H', 'uuu#3&G{(R'),
 ('.E2S!BCc]o', 'qMOzrk<+(:'),
 ('$0oS&elogg', 'zXq}ul(8_E'),
 ('sMhU>3vg+', 'i_0H+>}|<.'),
 ('$~oj/Wt/Ds', 'G6=c,ll^]`'),
 ('$g#hDGvSF;', 'jk_(_rr<<!'),
 ('#(P(|c!kKo', 'IJG[L,X;A3'),
 ('-_F_/K$VQL', 'vaSXyU,d,a'),
 ('46.6)30lNw', 'L[=I7EcROn'),
 ('&;_]4B@=PD', 'L&#(>5c7a*'),
 ('%-a<I17=N1', 'Q}6:Ng``xM'),
 ('$7da!Nj/Q:', 'upq|kJ[Qi$'),
 ('!!D6Ivb.]#', 'w1FM?@j-tk'),
 (',%%ecY+9=G', 'gPWIY|dqgC'),
 ('(QQ?Y*LQ]c', 'hBl;b1akKo'),
 ('X0E7(l<s4', 'kbJZsU]Tm~'),
 ('&|Jl^Y30aG', 'x)ZvHsvNcz'),
 ('/ZZE730XJ6', 'nlky<K>nXE'),
 (')`rlSMmq5C', 'B)M|?v5vl3'),
 ('%yG[ER$x!n', 'DUa%sQ;0;@'),
 ('7{Nf8U(:Yv', 'IkP885[1L6'),
 ('+~@cG#)SLP', 'h0~.:5}&Q8'),
 ('#KODG$yc>M', 'INr2(vFB[p'),
 (':no*A/F-X7', 'Q=UkoGw%47'),
 ('#*v.r[&I!:', 'HsOJP(RQoY'),
 ('/qbzM$A]}&', 'J#u?@$XnR$'),
 ('+3Tw45u=NZ', 'iB7LW}8*Ii'),
 ('8?DMM6C%Mz', 'vbEn[U)2cf'),
 ('7!~yssKO^1', 'n65[nUZiZc'),
 ('-1dy+?BC2Z', 'K6g6$oK|jN'),
 ('%2B%b*%04$', 'O}c<W!@%aZ'),
 ('#L#s^-u~3#', 'g[tAvcrR3^'),
 ('9chyXc|PI{', 'Ft$h3i.|l.'),
 ('&s~^Wl-d_U', 'y8u|!Om27i'),
 ('4:raHq`A,^', 'lo1wB^!`h,'),
 ('$sM{>P7XjN', 'y`v(^%tvG3'),
 ('!igL313u6Z', 'uO%6i;{0PZ'),
 ('#.pgRFoi{5', 'Ddu%%IIGo*'),
 ('3lK*SldlTg', 'rl:ZBh8sp^'),
 (')v:.,va`^]', 'cHz7UCnS&i'),
 ('+)Q)kWr_&W', 'wAQL>iJ/-]'),
 ('/xT`}}~iCg', 'cM;m6U=Dg5'),
 ('(]fmzQ[XIP', 'FFMu>hPw;u'),
 ('#!,>y|yo#S', 'I_Q-5hX|5;'),
 ('w4mckxRd8', '[#-i4q4Hz'),
 ('8N<ZUI<7U{', 'z7[5xEgcrA'),
 ('8m=%vP4<vl', 'Ay%EM@L0b~'),
 (':VT&estn,-', 'bsVR4>6gl0'),
 ('-vzFkuSyI', 'QykP%i/vKj'),
 ('86,Z?=IsFl', 'bP:bhgKryC'),
 ('#_PR1yB8Ma', 'G@(d+tSaA^'),
 ('.dNLR]_sx)', 'm$gS*RQqQ1'),
 ('#VE^N5hGYu', 'O#$FD?t_j)'),
 (')#^@iC_^[S', 'o#s^(c`}.G'),
 ('!Zw]xBvuR}', 'w[%X~D#R,7'),
 ('!b-gm4nTaZ', 'CY~?X/vp+j'),
 ('*0z&2xS`./', 'Cu].QU#a&l'),
 ('.fSbI)(WoY', 'hX`.aRn$&{'),
 ('*@96zt>W(p', 'IThTxqnu;|'),
 ('7,cs//Xh%G', 'lW;xJ;HJv/'),
 (')V0#0Kxsw}', 'c(A-(Xa1)x'),
 ('(A@dh_GNTI', 'hv3J+WS`/,'),
 ('&eYZ1wa1.|', 'y;mRF(PX>0'),
 ('-0_uAO:q9w', 'q1DvZ4Qkh,'),
 ('5?1c-[%F4W', 'k{y?<`|#63'),
 ('#S<rhq}E^A', 'ny_8#ZQA/?'),
 ('-s<:n-Y4O`', 'svVKQZTWFU'),
 ('&qqVQS/L4K', 't,2AZ>_CA/'),
 (':oOUjPA0l@', 'n,~jhT?[]W'),
 ('&sRN]ZC^IC', ']#3u-c%5X'),
 ('#k5iRD7&/,', 'Qw(O&Fnkul'),
 ('-Jf2|I3J_%', 'Hk9k3U@-DA'),
 ('/f,JZwW]PF', 'LG(/,IHQi@'),
 ('#;To0tpzRI', 'xwNS`|r~1x'),
 ('.?}z):Mm{e', 'qJP9,I/X;?'),
 ('9z,F5a_,MU', 'H38F4o,>An'),
 ('/ke~[g[5o.', 'xc)G{&Ta22'),
 ('6@4k^ad#{7', 'DS~l]pq.y<'),
 ('$[5~vtlvR{', 'uNyx=*R.$~'),
 ('6%=p&3,>uY', 'E2g&j~V_+i'),
 ('*]@=|(P&<T', 'umTKoLZSfc'),
 ('.=6hM$s#y-', 'hZ-27c=iA5'),
 ('73Gm00~5lE', 'H(5ar5kY/Y'),
 ('8A@HUJr:ff', 'oi2j6zc,T]'),
 ('4IW9N[*%GC', 'bDx}p^DSVL'),
 ('7F#;o#)skB', 'hN=Lly0+D{'),
 (',_;c/s#fv@', 'w#;7*w+/l+'),
 ('6|`1h}9+}T', 'wt?Q|)Y7F1'),
 ('&%UrM&9*M^', 'i_cTqW/(1E'),
 ('-B?LuKnS-_', 'q@wPIm/;#)'),
 ('%=z.T2U3DH', 'DN*^.Q~HcI'),
 ('$Yv;,~-qh^', 'x2E6#%E!/p'),
 ('-6zBhoKab*', 'r{g3sXk]Cm'),
 ('&R+cVo=x@J', 'Jcx)35]`H]'),
 ('34oNS(6k9e', 'bp+p&^O&Nz'),
 ('-FIWqaZ=JS', 'HPt<x)x%Jh'),
 ('+!j{6/<S]Z', 'p`7>hfkNfW'),
 ('%xM&}K46Wj', 'C^p96b?pgu'),
 ('&j!yffCSDy', 'g^hxtS_)Ja'),
 ('!r=zLB$L+y', 'N@X:<s:Osr'),
 ('#Qh=s|ej#b', 'Kc0|/i[KY@'),
 ('9|Lp]CQLcb', 'm`:zwx?UCO'),
 (',&$^l?t%<u', 'kfOOt3pPdZ'),
 ('!;Dq}1-MZD', 'G]3ZD2G$ww'),
 ('%gC$*1tfYh', 'rHNPZJUEFp'),
 ('&BOwzZ[?oQ', 'f;],oZor+L'),
 ('!4zXnDu[kP', 'CW+/?p:?BO'),
 ('*sUb?H$Mz_', 'FHqW?gqMKx'),
 ('6C_}Ueyong', 'HQ$_4*oGf3'),
 ('%<Up(wv26R', 'pcYb[d%n,O'),
 ('5#NGm&~Qb]', 'g8.ti_%`5'),
 ('95;[^xx(0{', 'hE&?:>xB0v'),
 ('&sa}G#;+dP', 'MV[vr/8+{>'),
 ('6I/|P;+uP+', 'HrZ~>9NjBH'),
 ('%#/9gH$pBE', 'A_Vjy~^@?}'),
 ('8_CQg1KM;?', 'DDzO/+_}ww'),
 ('!Q@j;oDlzU', 'x7GO_2-WY$'),
 ('&eZ:rb2,KA', 'i3#3D+l`w$'),
 ('%vEb08UVjK', 'f0b;Rq1k!_'),
 ('4TAgip=34#', 'twkWz3eS+-'),
 ('6`t^+Ihw=b', 'j8XG#DTPjL'),
 ('&~heQ]qzLh', 'AmEQ/?7Q#x'),
 ('8*6K9&w+HE', 'Iq@M;2CIzf'),
 ('8hl0)=npe/', 'uhYJm4N/!$'),
 ('9MdUp{rI|T', 'oCa[}6b]{J'),
 ('7Z@:HCq)~;', 'ymuYBM5)ux'),
 (')hJ.^svNj|', 'u9/j`LQwrv'),
 ('/?GN3hOh;]', 'B|v&Z,u=T'),
 ('6$a$0NrHg[', 'bTrCSD^W4m'),
 ('*Lx=O4#}}}', 'xQK`2V6wDX'),
 ('&j*`NS9VX6', 'r7L@;3f5Y^'),
 ('8JI.v!2-9k', 'vy}j#{dVU,'),
 ('%p_,w4-u*E', 'M4#3n[]D/T'),
 ('$8H<CYW:j{', 'p(t;=_z4`='),
 (',{RxI#)OqC', 'Gh36nI3h)B'),
 ('(/zPGU)G[h', 'A%emXRt~a]'),
 ('$p$KneE.7u', 's9?zpnq?/g'),
 ('-x.Z)J:Wq7', 'Osy[q7a%UV'),
 ('+)DCoJT@`+', 'iyxxWaZ8Wb'),
 ('9w+LY`MQI=', 'fRSFWQK>W('),
 ('%u?5Uvi7Iw', 'lcC48!,,{,'),
 ('+]`9*|j,48', 'ja9thWdG~?'),
 ('-,vL,Ck1b<', 'Cdm[YJ2i`t'),
 ('#JOB#-z}f0', 'BxD0*Nx8HN'),
 ('$w,nJG9B]S', 'mK?UY]$UVp'),
 ('6|R,LHN4W<', 'e-#MW&-!m7'),
 ('),m?:sFJM)', 'O_HGdfn7R7'),
 ('-$(A|xCw_Q', 'rnHajUXn]|'),
 ('$9D)+!30rS', 'ns:xfr`B.`'),
 ('54#chhJxe$', 'JXC>bWd>&Z'),
 ('C<30_,bn[', 'BNN4wvUA&P'),
 ('6|Sy`~3!SD', 'sOd2&00m?K'),
 ('3}:C`LN-gu', 'q382+6kQ}}'),
 ('-F<:3!Mw)S', 'sgq|,rEUT>'),
 ('.#L|`l0FG!', 'Mmy:MH3p-5'),
 (',XPV8.Y1]a', 'bb1Lx^zyVu'),
 ('%I8+tuQBJS', 'mSo]}$<EpU'),
 ('97u^uvmjWX', 'OXH#q-u9XF'),
 ('9/GzY1g[3q', 'P[t`X50n$K'),
 ('.%}9u/#wp_', 'CaSU3w{HJO'),
 ('8J%?A2<9^^', 'b(JUWzefV^'),
 ('.1Y%ZGu9B$', ':?*,_d`iM'),
 ('O%RvG>|&U', 'N$AR]vQR?L'),
 ('6ePg6aB;Xn', 'jFv`AX2j9Z'),
 ('.kYP5Cfn.X', 'w{[+/hi?P7'),
 ('/Pp>neNJBu', 'C}D/)CbE1E'),
 ('$-~F9])-*A', 'r]by!Z{bH3'),
 ('52|EyK(XJ`', '5H}uoT?x9'),
 ('.cSpQ^;3]E', 'd_{5}`KOeV'),
 ('+`7CxeatsD', 'b=!Fr*y_C!'),
 (':x<[.Y4EzS', 'P[nc3.TLD`'),
 ('&!)INMVCp:', 'G~@ufSz/a;'),
 ('$gcuZbj4h-', 'J32gf}o<MD'),
 (':iuV9+QXx~', 'dnCkHdCc(#'),
 ('4>dnXM*r6i', 'M$iq^Ddz$z'),
 ('8xCSB:9T#%', 'cH+7jy4I,m'),
 ('8Fvw!]i-Ky', 'uQ-6g&t&/t'),
 (',ap,Z]l4j~', 'ltf#^eLgH='),
 ('860fGtb*C', 'cYWtxb5I.n'),
 ('%PEa&:7)~{', 's&%k)X]^%+'),
 ('+FlzQtk`=B', 'b-3J|=Nm69'),
 ('%qMWTh4cJt', 'G;f97RI^i|'),
 ('#z:ag9+^G`', 'Lng7&qhm~G'),
 (',|(kc|s`8L', 'L~g[-Y5a.V'),
 ('%mSEQe2l<A', 'uEmYu^%Cdm'),
 ('Gh*ms#MOV', 'dW]ePHn0<E'),
 ('7</<K,iSXc', 'xj/*Nw.FyN'),
 ('+~JfScn!`6', 'I5l?zw=g2W'),
 ('+(OZso/p.^', 'HF8bKY!Wia'),
 (':ENbJ%yR,D', 'PcUr6zy#ql'),
 ('6_`wCn#u5[', 'uTx.c_gB-g'),
 ('#`/r{t6kJ$', 'M=(.zK+i8]'),
 (')igfmH$6J&', 'w?},I|jwcN'),
 ('3b[296X{9?', 'wU6oi[(~g5'),
 (')dGvASz&G>', 'rJf@3vMORX'),
 ('*Hn*p*)1#L', 't)7YT?VSxY'),
 ('43cTOGEj)l', 'm*zfj4hJj+'),
 ('&<={(+jozV', 'z#:5{OdBN]'),
 ('-5!6[%RV9*', '`ePFuGBDX'),
 ('&yogG~T>p3', 'co2;shq(5S'),
 ('9gWY@FF|-W', 'z>%tQDyw7D'),
 ('61xR!}Ai>,', 'yc9tc)O|D)'),
 (':MC[k=Y11F', 'CmEf8|#B?{'),
 ('.rmM.@lH+_', 'QG_m`Y6OnU'),
 ('$5DS;+F%kJ', 'H~PFXc^2.|'),
 (',[$I2]lD>K', 'CuDj}XI),:'),
 ('3~naGW46|}', 'j]:U,18j(c'),
 ('+D,[UF8cTc', 'c+Zk;oa>e/'),
 ('#5yj*07m,E', 'dy>%OTh=dS'),
 ('%/jf,8#~[^', 'j_Sf!`8fUy'),
 ('5myhN(r.ry', 'ET[Oa;OLaK'),
 ('$MiT.z/Fc8', 'wt]m$(ynIk'),
 ('5dG$pYv{K<', 'dC[x.]4VGu'),
 ('*a4gvLV](+', 'w?1B]|VvAn'),
 ('(q-])R)46M', 'N?ze.ZE4@K'),
 ('*g>LI2fHxg', 'DRS!iJyvJG'),
 ('/D~Q*P+F}F', 'L5qdsn2.Vt'),
 ('-Z7sTcvA-:', 'u:[~?k7{9`'),
 ('3v(.j8C)yi', 'ct@4i2c5]R'),
 ('6Gv>I942T8', 'Pki<F_#mJ$'),
 ('4brK(ueHjr', 'v&W7WvlFQH'),
 ('.U:4$M0^-D', 'JS/Mu$zWXF'),
 ('#S,&1?JB/4', 'd*RV!D6_/z'),
 ('5KvPdycB[*', 'r6u%*kzI$i'),
 ('/^I6?3XNUl', 'L{DDezoz^'),
 ('8L3/=bn10A', 'wao7Vn!%<:'),
 ('pjDe<0+nI', 'B,.i%oyEc%'),
 ('@A!3Lr}AC)', 'k9gbGeqVQp'),
 ('}W[v]WLqpS', 'N;|zJ3r1U0'),
 ('`[EFj3Q_Xc', 'x!47n<n_@M'),
 ('aX)c#|LzSg', 'ilFuAD^xhq'),
 (',0YP]2b@j(', 'KfB$YBpp#='),
 ('4Dq;11v]_e', 'oPx5Bq1z_~'),
 ('7<aB1a+~cq', 'xs+r,A:Ybh'),
 ('(C]g#<ka!b', 'l:S1L#&(=-'),
 ('71i7gJj,l8', 'vV<w5Z&41M'),
 ('8Oe@_|:,Pp', 'l?;mPU|Vu$'),
 ('-U}*=l~z0q', 'g&y>f[SfCo'),
 ('5t]f^yIVO5', 'mC$X9cRfF4'),
 ('4M<E98:`~`', 'CJHNGvTT1-'),
 ('6VjEVH*n<a', 'c.@-5vbYSr'),
 ('%xBPj3X%+H', 'Bvr#2W*V4O'),
 ('6x64b,+z|j', 'HY(==0nL/5'),
 ('^#5pa%x1,X', 'x9m098F78O'),
 ('+9>b&ggK{8', 'QGDo{u)NuE'),
 ('=5v4XjOX^U', 'j7FyQaW,n{'),
 ('{<NC:Dq=AP', 'QwwgN[<duR'),
 ('6cwO!PU0l6', 'gb>Q&:;ekF'),
 ('!Jsg$jKgv+', 'dNo9L*#}F?'),
 ('>0NDs;]+8P', 'f^0aH]F%!V'),
 ('<!OcYW#vke', 'kfniDM68Fr'),
 ('`vw1aQoPmt', 'HG:Vbwri`^'),
 ('8Z^|Di-3{d', 'QplodT,RlZ'),
 ('}.rQ5q3d<D', 'b<9P_L#s6?'),
 (',:Shm37_h@', 'L}~TYYHI[l'),
 ('<a]{=Rhi4', 'Jt*Ggc<HyU'),
 ('@]8x06>+BF', 'vhs6OnHZaA'),
 ('>]pOHrn[3r', 'H1L?;^]mY]'),
 ('5g?v1zUT>w', 'IG)L^LIKi]'),
 ('a%:~pq*Zm{', 'jcw8^HL&m5'),
 ('-f.maKrMXZ', 'P}xBc:eoH6'),
 ('.-9~%U?$I:', 'yu2IoRS.M)'),
 ('6P-AoL#`1)', 'k]|`O*|sYC'),
 ('*Y0`l7(NW{', 'HnPq%JW}F9'),
 ('+q6ucl<dnP', 'BZ#71-])!<'),
 ('b-MN}/UQnp', 'hzN$`?YJ.^'),
 ('#6!CT^2j*&', 'H5FPagvP>_'),
 ('Ktd^5Q1j?', 'FIQ,YV4(u'),
 ('5%Xglve#^/', 'FE||8n;*pO'),
 (')*H8xs9sa@', 's~{9dxCHY+'),
 ('{miPy~A<!k', 'BLz2@~|QXB'),
 ('f01lKj)]XJ', 'Q&)&?}53&@'),
 ('4siewp.4[V', 'bP[|CaNP86'),
 ('(eHZaC~(l;', 'Ba#m$J?4gW'),
 ('<y2-E`C%:d', 'Mie3UMRyst'),
 (':zYlU5e>v/', 'n^,sUM_!k_'),
 ('h,gB?X*uD', 'xAxtN`17x^'),
 (')3u-*ZQo7+', 'B35In/Q=Tg'),
 ('3LA?Jag<~4', 'GRj)gtiMbo'),
 ('awWq`A6Q!q', 'l&Uv?yLL12'),
 ('ftTMc81UP$', 'bMX+]D]Ya>'),
 ('*E7|5>f|hE', 'E9Y{~}fJ|q'),
 ('+N5*Ov8;6:', 'wx)T{wK99M'),
 ('unrS^0xLD', 'vk=UoW^`zU'),
 ('.!m2T?CMvM', 'Ek~&z$tb-I')]

def replace_guids(mw, mapping):
    for guid_i, guid_f in mapping:
        # These should NOT be present.
        ids = mw.col.db.execute("SELECT id FROM notes WHERE guid = ?", guid_f)
        if not len(ids) == 0:
            print(f"GUID {guid_f} already exists as note id(s) {ids}!")
            print("You either already have the deck with the correct GUIDs or something's gone wrong.")
            print("Aborting GUID-replacement operation!")
            return 1
        # These should be present.
        ids = mw.col.db.execute("SELECT id FROM notes WHERE guid = ?", guid_i)
        if not len(ids) == 1:
            print(f"Warning: note with GUID {guid_i} does not exist!")
            # not aborting — the user might have simply deleted some notes
    for guid_i, guid_f in mapping:
        # Not doing everything in one go with `executemany` for readability.
        mw.col.db.executemany("UPDATE notes SET guid = ? WHERE guid = ?", [(guid_f, guid_i)])
    # We need to force a full sync!
    mw.col.db.execute("update col set scm=?", int(time.time() * 1000))
    print("GUID replacement was successful! "
          "If you use AnkiWeb, a full upload will be needed next time you sync!")
    
replace_guids(mw, guid_mapping)

If you're not familiar with the debug console, you can access it with Ctrl+Shift+;. After pasting the snippet into the top box, you can execute it with Ctrl+Enter.

Debug console snippet to migrate the Norwegian GUIDs
guid_mapping = \
[('e+/O]%*qfk', 'iR~,tG{Val'),
 ('h~5xz+=ke~', 'dYU=!{y0JI'),
 ('s9-GL*@AXD', 'o+)poCG*[u'),
 ('cPO|Cru8n<', 'rymWNfd[Q['),
 ('m*#%sE.`.;', 'PgW-Gd/F7?'),
 ('hNE9}>;Q&-', 'D_u6CIg+wo'),
 ('jN|NAUP*h}', 'emhqi6m<;X'),
 ('j|z@PMgdx,', 'K-DUUlt#`y'),
 ('n+t>2`:;P/', 'dSwjDNnc7['),
 ('ilGtw#=asM', 'fWbYL=>/W&'),
 ('mcc&0Kq^xE', 'L5j),}Ge5('),
 ('gz9${p}er*', 'l$1j[S4Z_w'),
 ('dY96`C-f(_', 'AY#z1NqLE<'),
 ('r>aI-$$|wT', 'po@@>#g44W'),
 ('k9E.p^<u$,', 'ru^aT_ML-F'),
 ('l$zM~ihPFE', 'eX=4L.MZ/)'),
 ('jTNoKo}Bu+', 'j4W[{Wd$i.'),
 ('mz[>>AxIr4', 'g3SU#SH>>e'),
 ('u4^lH.xem5', 'yLv#s7(0/U'),
 ('bk2ByZIeU+', 'n`P0w@?q1u'),
 ('twrhzJ[k:Z', 'fy^;okm_1k'),
 ('kS)hDm%w}R', 'EHD^CXLh4!'),
 ('AES],s:8=', 'd55<bwWcif'),
 ('k[)#L4.[v3', 'Fwsjx3/<>H'),
 ('k}A9]O:0xw', 'n{xEq+_:c{'),
 ('j7eEZkzsCZ', 'rQ)Q-EabYy'),
 ('s<_WLSB3I/', 'oLdeL6a~[X'),
 ('cYKvF#ptF7', 'b<&&OM3fYy'),
 ('m)WUtJS`H&', 'uo7@ZxIP[$'),
 ('l$2O|9w`F~', 'dmsIj2JJlB'),
 ('kZ52zV#[Iv', 'eYu}=wB+0H'),
 ('i2]v|D3@:j', 'u[#kd&*}Yc'),
 ('r5C646H*+*', 'QKm&4[Vr$t'),
 ('nIfRn<aY:N', 'l2LUY9/|t]'),
 ('5S(f7%O-$', 'Dh89q.%Zv<'),
 ('m?}%V6s8]*', 'C[hSE1x])}'),
 ('uRo^w#p5Be', 'j~OT/nTkAt'),
 ('o=,%hU&yX%', 'eX^dJ|[uA*'),
 ('lq`T^ZBF2Y', 't9&OjLNz]p'),
 ('f>c7x2E]Q6', 'dn}H9%A|!j'),
 ('q[S4`,F0D=', 'K/#FG8!}DG'),
 ('jCd]`-=k,:', 'zU[B!jrpgl'),
 ('vf)G?[_?Pf', 'wOOaycR~z&'),
 ('j9:K,~DQ2v', 'HbTQZU8t9?'),
 ('ui3>b-?a@m', 'M7m8p!;nP0'),
 ('qVi;t%/`F|', 'p%wZ4zSjCt'),
 ('g-]bb&[.E!', 'o|SPdBlcOk'),
 ('f21=-A~W;~', 'neb-=f&6r^'),
 ('sT5=H|@KU|', 'pnd}~gw/:?'),
 ('lU@C3<C8Wk', 'bMw[aotLc)'),
 ('jDA-V?/hVj', 'wPY8.I+[Xh'),
 ('h_9=mkZXAH', 'cJ%(LRs3)q'),
 ('mk1VltJl<]', 'MnfK7af3~4'),
 ('c(,2{yXI#E', '>1ErI|!*U'),
 ('kkbYQXw5b;', 'w`{+uGys`~'),
 ('ia8as9sCY|', 'vxq=QA:/`z'),
 ('j%*8gN)q>d', 'N(,;S#&N9e'),
 ('bd~Ght5tLR', 'DO-=AqS[Lk'),
 ('onMKID2d;D', 'L1&JVH|{R,'),
 ('q8fF$4,c6_', 'b#r[:tRj+!'),
 ('upiX0g1quR', 'G4K|pWoffU'),
 ('n:7&>YT5A=', 'A|BG)32=10'),
 ('j2IQ=f=w3@', 'C18`2)zTm('),
 ('EWXNc<g5)', 'k[{=KKFtb8'),
 ('gFOojQO(MH', 'E8sr_C_vb['),
 ('gePC:Xt_nW', 'x4(t9J8nNQ'),
 ('vNiD6A.v#s', 'p~,(pas|?P'),
 ('?n!)c/h=Q', 'e7w}$Wx7yb'),
 ('gYIoR`|AxW', 'bK<b=p-Thp'),
 ('j<egqG@)EL', 'G{5yk85S92'),
 ('t`cagaWApo', 'w9bE`pR=z#'),
 ('jN^Vc%9OQ5', 'or<mz7dcH6'),
 ('o3VS!KWb/@', 'yRZn!>(_#b'),
 ('iR;U<J:CJJ', 'k+4CLKx35g'),
 ('i^J8&$(1]|', 'q%;R^5+|lP'),
 ('pS>DrFhd%u', 'Q]0R7JuJ6g'),
 ('t|h3|;E4g{', 'NSVN;H$s)m'),
 ('p.yv>BQ470', 'P*4KZ6]?rf'),
 ('f#4-L[mp5*', 'M}OReg^Eem'),
 ('oNpApS<AoJ', 'pRN@`OrOhv'),
 ('nsS59c`VL,', 'cIOEmhU5Nt'),
 ('m{noqE29%I', 'oK)C745Je~'),
 ('sSW/?WMy17', 'B5/<2!_D3h'),
 ('d-q4J~CNW_', 'n,VX3H7IE:'),
 ('jKO,9y0M;#', 'P>,2#H.@>i'),
 ('skOM(?n$GG', 'ELkg0G|C?W'),
 ('mi+kf0LTW.', 'b[oi-M:re$'),
 ('vgdj#X?8dB', 'qD4Ir3_WvI'),
 ('mkgcU7[bA%', 'AoE=M5R+:x'),
 ('jcu!gLw/&r', 'vlABC@3)lD'),
 ('sB7rZQsR<l', 'lalXr{5>N~'),
 ('u|I}oElaH)', 'i$+!}pvHZ('),
 ('j)i)pB*HJ,', 'l[H_#9Xj.5'),
 ('t-0>F]bu>P', 'x1I5QDSZdm'),
 ('hrI_uiW>E]', 'p]3f+<QuK['),
 ('uc61ToT%gt', 'z,yR__YX6x'),
 ('e.t$Vi5,>f', 'i3+,TcHF,N'),
 ('k/u1:B%DJH', 'G$NEO(W.(v'),
 ('e5P*D#I{m{', 'ml7O4E=o<>'),
 ('p:SPZ:e/*[', 'dryK>>pO;}'),
 ('t+v9b--,qs', 's^sd#Qsi,{'),
 ('fV`&p81%d(', 'h<BBS_PmX6'),
 ('gsS{jR,]|Q', 'p-Q-4>W#GK'),
 ('cAlyc~G.y%', 'kQssZ~b%|u'),
 ('fxAN),FAc$', 'vwR_K?gn6&'),
 ('r<N4LAAnnB', 'yV;KtlAuQ?'),
 ('e?Xq9gy=@[', 'J$+%7z?.y*'),
 ('m5j,b/y<EE', 'm=n=4WFqE3'),
 ('stRa/S(0$F', 'fFI@z-#q(E'),
 ('l+>Ki!j#v+', 'fLs!R5^k7e'),
 ('kQ:NIhJy~E', 'I%N^RyEm:/'),
 ('sY>@9w~i^p', 'ILj+.~~7_X'),
 ('mJH4kwPF.-', 'ci5EzZT?lp'),
 ('bW)ch:vs1P', 'tt:.S?c/]j'),
 ('sx|l+io`B@', 'L&YSIviD+L'),
 ('q2#Yv[O0:|', 'Kx5=:O[u*^'),
 ('lpbD0St&OU', 'f[U(U6e5OW'),
 ('mbz=7n[0v9', 'I[^T<Hq,U}'),
 ('ijP>aJBT!9', 'dV#R#|}uZH'),
 ('jI9P-f6r3M', 'B,]AC/PAz1'),
 ('h?a*UKfT_M', 'BqW}>:ZSdW'),
 ('r6BV%|..*5', 'J4zOBxF6Lw'),
 ('i)]+09JUR&', 'oM$V=]IFjW'),
 ('l}[BG9.nQS', 'bw=b(wfRVC'),
 ('mtd;>7T|g>', 'ya?+!BD<rP'),
 ('iW>m(L/~c=', 'jKTnJ!T6lc'),
 ('pkj3RPBUrF', 'Cw^_3<[mGM'),
 ('euW0jm=wfR', 'H9A(m7f1)9'),
 ('l*j*EE:!Y?', 'n%Pw}}<GAT'),
 ('d3c`&/1Y^D', 'Rb7MD6j!0|'),
 ('hXNTVF<:SH', 'fxvMT{|_3M'),
 ('mk20`,N=`=', 'Re+G*@uJCl'),
 ('eALZe^HCHq', 'vy^=B$6h^Y'),
 ('l3Ly8PBxt(', 'm<$SD/W~so'),
 ('g<[f89~U)A', 'Q7W^uZrI_<'),
 ('iIS#Nw]tr]', 'l.HYqQ_/Rf'),
 ('m{oM,jr>C#', 'zJ%%Hz#s9&'),
 ('ln^3p)j3b.', 'MWm=94b?vO'),
 ('cL?8!xP#Wj', 'm>7j+&89xI'),
 ('e=.VHQ9E+M', 'Ng%@)K)[c{'),
 ('m[96fa+HDS', 'dctSh&<iaU'),
 ('g9v~y/;=z(', 'iYAK36Cua{'),
 ('g~%pF`(x{u', 'PQ6$bI??y6'),
 ('hE5j*e,Q?[', 'Bq5H0+i]XW'),
 ('fRSM{K+;[w', 'z7wQ8s_Si['),
 ('o~}KVA:VbI', 'qqJpIWfqFB'),
 ('u-`cspdp)D', 'Ce096-Qwie'),
 ('e42BpV,P}C', 'D+L%7xa1|K'),
 ('pD<Pd$Ag@J', 'Dn/EH3[r{9'),
 ('mbGXc0y3Pe', 'g?)zvSS|6#'),
 ('gB|K:+r?1V', 'mh=!E~}0-Q'),
 ('lhWI;$JC9(', 'BGwA6-2[o8'),
 ('k0{O[6l]bH', 'xL^i{$Dd?}'),
 ('r>g<|,FWi%', 'O86#Kfnj]4'),
 ('n&>e`2FO/S', 'svzWf$x!8;'),
 ('khB~(m^@Z5', 'M,j]%f~qLY'),
 ('spKoFRM4if', 'QyNb5MKVnQ'),
 ('q8][)Ri}=q', 'hqnhi=ysa:'),
 ('hoHandbYAy', 'B4sHDjU:Pl'),
 ('lmRujD!(A7', 'GDX20ZK?Xx'),
 ('q:XyGf#>Wg', 'do3`,9Ol!H'),
 ('s#:aIK$9^x', 'Gs*[8}bP33'),
 ('jBd@A?>g|}', 'cnUAu<NuSS'),
 ('koI(}OyJ:@', 'zH)c,C{V#j'),
 ('e?gIaPc$Ox', 'yC]*G[N>gv'),
 ('o#&RMA_REo', 'u!WO.fcw8<'),
 ('s4E?ZF[E<>', 'b|Gr(/*-kx'),
 ('k1]FH+s8j@', 'k4o56u=}jw'),
 ('dWA49p}F{k', 'sk!p1OhX-1'),
 ('K*b}<I3(~', 'ipKjLUOh4Q'),
 ('e?h=Xhs+K&', 'P}MIWKA{Xz'),
 ('b@M[XTc?}5', 'k,Tmj~Pw.i'),
 ('sxOMs+bE8@', 'cep8BP*Eja'),
 ('t3aZXtpNyi', 'C00t,nt-~8'),
 ('rPekx@n9:L', 'ueNqs:h=(z'),
 ('lAxH.CfJB@', 'DNXY<9~9OH'),
 ('hZ/V/D&rO`', 'l!=SCi?>l?'),
 ('h&`>n98~V1', 'G5wA};7d`m'),
 ('t50y/[AEhF', 'la.c2n+A7e'),
 ('gBCR?!O*;E', 'sZ</&q1)tK'),
 ('tTnCoO/*tk', 'd.lZ`^MKjl'),
 ('W5?6yQZD2', 'u#*HO9?|?]'),
 ('e{e8vi@^PY', 'c^iV73&0V('),
 ('tcneuK7v%`', 'gBJKTCx_/6'),
 ('uH*Q(mcRt5', 'w0Je-<6ym_'),
 ('k$1_yaF?9#', 'o[GR>HoXjp'),
 ('dUZ^=SE5BG', 'NGD}XK^mX}'),
 ('t_h*fbN#:(', 'y[:PO%mkg('),
 ('q=w[<m2Bk&', 'z?M@Me}UrK'),
 ('vpOTK6tMr@', 'y8o-zQb(8j'),
 ('m2F|cUkKhv', 'B{LJC|+^D.'),
 ('k}4/oj#$~s', 'efA[V?^$DO'),
 ('va/ky=f5pK', 'CTw3Yd}Sx4'),
 ('c,5(mUGzYT', 'G#LLy[.iS2'),
 ('gp[h@]y13l', 'Cko(o5/eN6'),
 ('gx:;za!?C9', 'K>Dfm{ad5K'),
 ('r]*Ioa%$bK', 't@-V_iMKbK'),
 (')Y}Qy.3GK', 'G8%+Eg:Na<'),
 ('lH^2D]w;[H', 'qpx1j<_-l5'),
 ('qx%>fB$d+$', 'z|A6R3H)3B'),
 ('libliptkB4', 'J,3]AhU%0c'),
 ('jrM28*HbyG', 'jWy+dd+,ta'),
 ('r?E$4f-d0/', 'c}m%T+N!Gz'),
 ('leh^fmrt*#', 'xzc~#RzbI@'),
 ('O~pXkAbd3', 'FCE{oF+@St'),
 ('f*LO~>!0PN', 'I{.D^{85=#'),
 ('q[}7hk(+=e', 'uu)_`Q0++C'),
 ('q7do-wLx%E', 'c$J,,={OZd'),
 ('vwc3}.=Z#&', 'qhlz<GNM_8'),
 ('e<X;[vACXC', 'emq?3*tP9W'),
 ('j=L,YBvsBk', 'f2L&U-(v+/'),
 ('oa87&PB&Bm', 'Gc>|URJcg|'),
 ('b^Try&me1A', 'Dd.ED,HOi&'),
 ('o``:?0>/yz', 'J3)Ty17a?Q'),
 ('pz(G*<F93/', 'xWD+oGZ~vY'),
 ('cV4idO^r8W', 'G+c6-zDX5@'),
 ('m*PYE=#wr^', 'g;I=8p!(]b'),
 ('sXzvT.g31p', 'b_#ie@t!%Q'),
 ('mq)8`hi{hb', 'AGUPi8s%aF'),
 ('h}lnSN_f$_', 'CwGQYVm2&`'),
 ('eT<gzg?q,r', 'Hh[ZfFwkH,'),
 ('vE[T$`n9T)', 'PFcyiTRKq='),
 ('tj&bK}%P!F', 'Ql.8m|u}H!'),
 ('kX]hN=_.c-', 'k}E2,sF7^}'),
 ('r/B|ra%L,.', 'FGrbm!9:Cd'),
 ('b[(2`4t&?J', 'FMj}H;knqq'),
 ('qvITjNxkLN', 'd9@W=6sKJ-'),
 ('jX=#G8wu#(', 'F)s+:]$(EA'),
 ('l&#7I)Ah/E', 'zv#Fyq9;?1'),
 ('de=9c:,@j9', 'AJ/nnIR/[0'),
 ('kE!iKHLN_g', 'rB6=j&@4e&'),
 ('d``B*6:eCx', 'uL7#}Qw}D9'),
 ('p]t8:Tka7q', 'OawZ7gbEjw'),
 ('niJUFZF$Y:', 'D=!L6rg_pr'),
 ('p}Qa|!7PpR', 'qOB6Gi<G='),
 ('uv1fGXHN@)', 'l(DiRV,GPj'),
 ('sRw-ik:I$v', 'NH:[}beT-z'),
 ('bnEK#)[;qT', 'r8MKfCfg2E'),
 ('ey:Q|*t!Lg', 'b2PYE2BvAR'),
 ('c^,~EC6Pb2', 'nJdfBSsZq='),
 ('tMMtBUpb$&', 'ox5y>?yriv'),
 ('jKIDq|}J&c', 'P%!7{$,zCG'),
 ('dC:e5G4J/p', 't;/rK0Elxw'),
 ('u;|vR#mVMW', 's9/>8RT~Sr'),
 ('gDsLPj(9S#', 'raobJ?,rJ['),
 ('xb&P*pH(Q', 'OB:w%H&-Al'),
 ('Bszsaz0Iuo', 'IozRi;br@?'),
 ('JOT:U4ayh@', 'BidEZ1j?sA'),
 ('G/^_##fcPN', 'Q0Hf<s|zmU'),
 ('LPF4AfaHKR', 'eyVn,2@529'),
 ('rSneU!3}bn', 's>VRzs_ra_'),
 ('cv+Nq9:a<P', 'nK_Xe;yw*A'),
 ('f*2@qiHh_1', 'Fe.owPPLXj'),
 ('nuU8A_$i2M', 'v#9&oC&^gU'),
 ('fT!w8R#>dg', 'zv;#VKpiyA'),
 ('gG6SWfM>H0', 'msi&z%jb~L'),
 ('sM0GPt1HS1', 'wt&@Z9Ke*y'),
 ('dlU7VG|3Gd', 'i?3Cq]Y=6@'),
 ('cEO^y)Md[G', 'IHD#^9>(oF'),
 ('eN#^kPGv*L', 'Bc^_k/M|{V'),
 ('lp@e##m.!+', 'ePFlYQsRPh'),
 ('epvt3>HH?U', 'lQbPlI/gwj'),
 ('E3u*2.<9#`', 'c*=o}p_W/X'),
 ('q1Q3Do8S>g', 'b~m$wS)FZZ'),
 ('yX:tmrd5;]', 'x)A]S|GN_G'),
 ('H*c[ML+`s=', 'Aal{|%850}'),
 ('e_;dzXj8de', 'uge7s($h<X'),
 ('iB-8Br~onq', 'H)ax6=5vNG'),
 ('zSc]-^U=0=', 'td+]W)8y3S'),
 ('x2d4n4ADcP', 'B)~SL?|&BX'),
 ('Gn;q2Y)Xe4', 'qoQ,f:/adY'),
 ('gRVZ]qJ#>O', 'GkU[4wRj6;'),
 ('J%,fuysl*&', 'JffL}$<;]['),
 ('r(h9&#wc~B', 'nnM01DlaVX'),
 ('_]DH+g9!$', 'jH=<{Pcl+D'),
 ('B:x<p&Q=t)', 'J|aJY+vge3'),
 ('z:*d{z(~V2', 'vJUDdBqkkp'),
 ('d}R:qHj1,7', 'v/?czq&41s'),
 ('L5M1*yG7eH', 'F/|qA9Xb`f'),
 ('s|K&2S,UP|', 'f)MSa#ZHdL'),
 ('t$y1C2R-Av', 'r%;LR/o1J0'),
 ('eHJ?)TAdTo', 'w[pneW3d#g'),
 ('pQpX%(EVOH', 'lzpJ#A4I81'),
 ('qiv/4tOlf=', 'pAb@53Gk?Y'),
 ('M$bc0[jYf0', 'ufv>~I-Znw'),
 ('jYz[ibrr9m', 'u1C2Jtm-p^'),
 ('SlOEXfq#|', 'F[7BR94HX^'),
 ('d5m8%D6,;u', 'c.$2jl~n2_'),
 ('o9{x<AyA]B', 'NbC3xEVGZ}'),
 ('He!e=h?_2V', 'Iu#Jjq4.-;'),
 ('QSq%~rFaP-', 'yLhZzEnGK&'),
 ('ck!6;xK$/^', 'E2:8?ZCW`='),
 ('n{{o2K1:dw', 'zBa]c`I@&q'),
 ('xqrJ^d[.(O', 'cE|I9C6tDG'),
 ('vrn%j%6{nu', 't1~2K{sjcs'),
 ('p#R$-mG/L', 'C+sW!v-+p]'),
 ('oV/JG7fwZq', 'x-wPy%*F%3'),
 ('bD?R}i8_[c', 'J[Z3=;n.`R'),
 ('Lol+XIvY21', 'OGgh6NLJ_1'),
 ('Qlib4)q2Hk', 'Cay~/DU6[Y'),
 ('pwwZu{7f~(', 'q>RaVbPB3|'),
 ('qFuGdDx^Yv', 'A.lC&CUT?S'),
 ('Cf2@;p<aL', 'Q)zp&X@y?g'),
 ('t2&ri|[Un:', 'Hg&j8uJWA$')]

def replace_guids(mw, mapping):
    for guid_i, guid_f in mapping:
        # These should NOT be present.
        ids = mw.col.db.execute("SELECT id FROM notes WHERE guid = ?", guid_f)
        if not len(ids) == 0:
            print(f"GUID {guid_f} already exists as note id(s) {ids}!")
            print("You either already have the deck with the correct GUIDs or something's gone wrong.")
            print("Aborting GUID-replacement operation!")
            return 1
        # These should be present.
        ids = mw.col.db.execute("SELECT id FROM notes WHERE guid = ?", guid_i)
        if not len(ids) == 1:
            print(f"Warning: note with GUID {guid_i} does not exist!")
            # not aborting — the user might have simply deleted some notes
    for guid_i, guid_f in mapping:
        # Not doing everything in one go with `executemany` for readability.
        mw.col.db.executemany("UPDATE notes SET guid = ? WHERE guid = ?", [(guid_f, guid_i)])
    # We need to force a full sync!
    mw.col.db.execute("update col set scm=?", int(time.time() * 1000))
    print("GUID replacement was successful! "
          "If you use AnkiWeb, a full upload will be needed next time you sync!")
    
replace_guids(mw, guid_mapping)

If you're not familiar with the debug console, you can access it with Ctrl+Shift+;. After pasting the snippet into the top box, you can execute it with Ctrl+Enter.

After running the debug console script (and after or before the full sync — it doesn't matter), you can upgrade to v5.0 by following the normal installation/upgrade procedures.

Rationale for migrating the GUIDs, if you're interested in why this is necessary

Every note in Anki has a GUID (globally unique id). This allows two notes to be recognised as the same, irrespective of what deck, whose collection or what device they're in.

Due to design choices in the previous Deck Manager we used (anki-dm), the GUIDs in the English and Norwegian versions of the deck were the same, and so were the GUIDs in the French and Spanish versions of the deck.

This meant that while it was possible for somebody to have, say, the English, German and Spanish decks, in parallel, in the same Anki collection, they could not have both the English and Norwegian decks or both the French and Spanish decks, together. For instance, if you had the French version of the deck and tried to install the Spanish version, then due to the clashing GUIDs, Anki would think that the notes in the Spanish deck were updates to the notes in the French deck, and would overwrite your French deck, instead of adding the Spanish deck in parallel.

This limitation wasn't catastrophic, but it was annoying and confusing to explain, so we decided to migrate the French and Norwegian GUIDs, in order to remove it.

From v4.1 ("v4.1.0")

Before upgrading to v5.0, you need to first run the debug console script below that corresponds to the language of your deck. If you use AnkiWeb, a full upload will be necessary the next time you sync. After running the relevant script, you can follow the normal installation/upgrade procedures. (If you have the French or Norwegian decks, you DO NOT need to run the 4.1.1 debug console script — you can directly upgrade to v5.0.)

Note that if you use the English version of the deck you do not need to and SHOULD NOT run any of these scripts! If you have a non-English version of the deck that is not precisely v4.1 (e.g. v4.1.1 or v4.0 or earlier — see above for how to check whether you have the buggy v4.1), you also DO NOT need to run any of these scripts.

If you're not familiar with the debug console, you can access it with Ctrl+Shift+;. After pasting the script into the top box, you can execute it with Ctrl+Enter. If you have any doubts please ask in Discussions (for instance, in the thread dedicated to the release) or open an issue!

Czech
guid_mapping = \
[('e+/O]%*qfk', 'C{]JF%%mr*'),
 ('h~5xz+=ke~', 'CzhyKE{%zy'),
 ('s9-GL*@AXD', 'uMj[iKx*FT'),
 ('cPO|Cru8n<', 't2Q}Uw:@3V'),
 ('m*#%sE.`.;', 'qd!suvo&1v'),
 ('hNE9}>;Q&-', 'zT0L2L~T>H'),
 ('jN|NAUP*h}', 'rNr_y>Sm<E'),
 ('j|z@PMgdx,', 'vt!WOLxZl$'),
 ('n+t>2`:;P/', 'nG#=Zxp5Qn'),
 ('ilGtw#=asM', 'l]+1ZOhWt<'),
 ('mcc&0Kq^xE', 'u3}~&(A[aZ'),
 ('gz9${p}er*', 'noQ|9=PqcG'),
 ('dY96`C-f(_', 'A7Cj*hqC7['),
 ('r>aI-$$|wT', 'pbX.~.6OJO'),
 ('k9E.p^<u$,', 'AQZNs:<Ihn'),
 ('l$zM~ihPFE', 'D8N9aGT(YL'),
 ('jTNoKo}Bu+', 'gM5c_bst5A'),
 ('mz[>>AxIr4', 'Pqi/=VQrpE'),
 ('u4^lH.xem5', 'e%6%K/Fo7O'),
 ('bk2ByZIeU+', 'B&Pa`TK.W@'),
 ('twrhzJ[k:Z', 'gMpU6QZpk{'),
 ('kS)hDm%w}R', 'xT>UY=~g;v'),
 ('AES],s:8=', 'y29//}tZ9$'),
 ('k[)#L4.[v3', 'LKI5~A(OZ!'),
 ('k}A9]O:0xw', 'Q`OBBA(IqJ'),
 ('j7eEZkzsCZ', 'BCT|*-aN8t'),
 ('s<_WLSB3I/', 'l]B_A,?ph!'),
 ('cYKvF#ptF7', 'p2-()%uZj7'),
 ('m)WUtJS`H&', 'It2!t/-o?>'),
 ('l$2O|9w`F~', 'M*;rH]4K.>'),
 ('kZ52zV#[Iv', 'HqC57O<OYN'),
 ('i2]v|D3@:j', 'wO[~:de]T'),
 ('r5C646H*+*', 'B*Me@Zh_[S'),
 ('nIfRn<aY:N', 'f=(W,pEE)M'),
 ('5S(f7%O-$', 'mn{KoGN.?b'),
 ('m?}%V6s8]*', 'pL;e7uiX=l'),
 ('uRo^w#p5Be', 'D!-|+!*eBX'),
 ('o=,%hU&yX%', 'F-eGLxAZDt'),
 ('lq`T^ZBF2Y', 'xaacSwZi[n'),
 ('f>c7x2E]Q6', 'PSEKL{AHnb'),
 ('q[S4`,F0D=', 'Hx}kMe>iu~'),
 ('jCd]`-=k,:', 'uv?Z2p<%;s'),
 ('vf)G?[_?Pf', 'M%Zo)4Ex%5'),
 ('j9:K,~DQ2v', 'MY>?+-m40S'),
 ('ui3>b-?a@m', 'KM9;RF<Oa9'),
 ('qVi;t%/`F|', 'jpd^m*aK7%'),
 ('g-]bb&[.E!', 'hRH,A7qwWn'),
 ('f21=-A~W;~', 'k[^`V_WQ^I'),
 ('sT5=H|@KU|', 'AhCfC]V,BF'),
 ('lU@C3<C8Wk', 'JD*D+bih|F'),
 ('jDA-V?/hVj', 'wM29>6E7w2'),
 ('h_9=mkZXAH', 'Lh8)I$R;q>'),
 ('mk1VltJl<]', 'c@Ms0SL)sn'),
 ('c(,2{yXI#E', 'G4t&;Hch6N'),
 ('kkbYQXw5b;', 'iP!?$Z_Ki5'),
 ('ia8as9sCY|', 'p|~)@{)+S*'),
 ('j%*8gN)q>d', 'JJzRb!:b#h'),
 ('bd~Ght5tLR', 'z^#eqWYO-D'),
 ('onMKID2d;D', 'm.mLjg-{lM'),
 ('q8fF$4,c6_', 'Qt7ILf!6y2'),
 ('upiX0g1quR', 'naB8r`cM^+'),
 ('n:7&>YT5A=', 'xMDjNS>?hL'),
 ('j2IQ=f=w3@', 'DBo3+cT-[:'),
 ('EWXNc<g5)', 'v/ymm:8cf7'),
 ('gFOojQO(MH', 'vI7@NGK_Rr'),
 ('gePC:Xt_nW', 'dt/qfm,mMR'),
 ('vNiD6A.v#s', 'I/zO]{Q@(q'),
 ('?n!)c/h=Q', 'InSmtkntKP'),
 ('gYIoR`|AxW', 'm-W32Cjt+v'),
 ('j<egqG@)EL', 'u?7-e.O&if'),
 ('t`cagaWApo', 'bu.JnK@qu%'),
 ('jN^Vc%9OQ5', 'L!)340&$>j'),
 ('o3VS!KWb/@', 'IEVE(R=UT_'),
 ('iR;U<J:CJJ', 'f;ryKmL?JH'),
 ('i^J8&$(1]|', 'vg&(+g]]yT'),
 ('pS>DrFhd%u', 'G4?YxB/<HP'),
 ('t|h3|;E4g{', 'q<##9ET8w4'),
 ('p.yv>BQ470', 'Nz_#ah$j&d'),
 ('f#4-L[mp5*', 'IoHWaA78;3'),
 ('oNpApS<AoJ', 't(:iXC>cS>'),
 ('nsS59c`VL,', 'w~5sD@C~%!'),
 ('m{noqE29%I', 'p;&<%/w5b|'),
 ('sSW/?WMy17', 'jV+V-M0[9X'),
 ('d-q4J~CNW_', 'J>b>D;vQoW'),
 ('jKO,9y0M;#', 'AnTl}_8m=/'),
 ('skOM(?n$GG', 'kC{ALA>P%a'),
 ('mi+kf0LTW.', 'Fx4sZh>`:m'),
 ('vgdj#X?8dB', 'AX#-0[v2j?'),
 ('mkgcU7[bA%', 'dr(`ZC<V%p'),
 ('jcu!gLw/&r', 'bND)UmT$s;'),
 ('sB7rZQsR<l', 'g[l><1FFUo'),
 ('u|I}oElaH)', 'sH*CmlNZ<I'),
 ('j)i)pB*HJ,', 'Kx0E[9ibDy'),
 ('t-0>F]bu>P', 'P*^/<)(KjW'),
 ('hrI_uiW>E]', 'o-iAF(Oe;d'),
 ('uc61ToT%gt', 'oBc!CE4|t8'),
 ('e.t$Vi5,>f', 'BA4?dToa9]'),
 ('k/u1:B%DJH', 'tcsX~cQjI2'),
 ('e5P*D#I{m{', 'Qe#D4C[<+m'),
 ('p:SPZ:e/*[', 'C]<t^C)#CC'),
 ('t+v9b--,qs', 'O1bKEd;`i]'),
 ('fV`&p81%d(', 'Fx%kVt2%kj'),
 ('gsS{jR,]|Q', 'v8pkKiW5;U'),
 ('cAlyc~G.y%', 'MfwiBI+|=9'),
 ('fxAN),FAc$', 'zWj%QH!y<q'),
 ('r<N4LAAnnB', 'E]~7Dc-XV@'),
 ('e?Xq9gy=@[', 'iV*VDI/knn'),
 ('m5j,b/y<EE', 'K+Rf&9RCYP'),
 ('stRa/S(0$F', 'wC(@I#Qj=_'),
 ('l+>Ki!j#v+', 'C%r3!}*o9-'),
 ('kQ:NIhJy~E', 'd}n!kX+/ph'),
 ('sY>@9w~i^p', 'iR6^@_]dvR'),
 ('mJH4kwPF.-', 'Did1{bE2yj'),
 ('bW)ch:vs1P', 'k5Zby(Llz+'),
 ('sx|l+io`B@', 'z.;^Kjw?w-'),
 ('q2#Yv[O0:|', 'uq)KM}CVsF'),
 ('lpbD0St&OU', 'l_bSqy)=W%'),
 ('mbz=7n[0v9', 'P{?pBbVc*#'),
 ('ijP>aJBT!9', 'Hb~5J(.Fg~'),
 ('jI9P-f6r3M', 'DE`CrM74%0'),
 ('h?a*UKfT_M', 'Hfw[5^1FXT'),
 ('r6BV%|..*5', 'Cob1W^QJ3F'),
 ('i)]+09JUR&', 'tOc]hT~n}*'),
 ('l}[BG9.nQS', 'Gg8=;ywiMF'),
 ('mtd;>7T|g>', 'bhv8b|]kY9'),
 ('iW>m(L/~c=', 'juCeYT&eX9'),
 ('pkj3RPBUrF', 'bTd6E)qj]$'),
 ('euW0jm=wfR', 'Pmp+_CoZ`T'),
 ('l*j*EE:!Y?', 'dET^[R~4O3'),
 ('d3c`&/1Y^D', 'wOmUda6!>t'),
 ('hXNTVF<:SH', 'y*>>K_Rv{P'),
 ('mk20`,N=`=', 'Byv;->|tVn'),
 ('eALZe^HCHq', 'MQbYhy*8W1'),
 ('l3Ly8PBxt(', 'j^9KkW@1V^'),
 ('g<[f89~U)A', 'HxK!=[v%7I'),
 ('iIS#Nw]tr]', 'j}.YHgP+1)'),
 ('m{oM,jr>C#', 'h~hx$TrJ9L'),
 ('ln^3p)j3b.', 'N/[L&}q{Ro'),
 ('cL?8!xP#Wj', 's|EEBYpJ*s'),
 ('e=.VHQ9E+M', 'cm97y|}K9@'),
 ('m[96fa+HDS', 'uwH,{ZS,Hs'),
 ('g9v~y/;=z(', 't/Q9G`l<(*'),
 ('g~%pF`(x{u', 'v0.(wt0=5,'),
 ('hE5j*e,Q?[', 'lJGFm$U&>?'),
 ('fRSM{K+;[w', 'uWjhG1h]m'),
 ('o~}KVA:VbI', 'BAz%}9{UE'),
 ('u-`cspdp)D', 'hM~h4Ec9ZW'),
 ('e42BpV,P}C', 'x(aw,hH&Y['),
 ('pD<Pd$Ag@J', 'zybU=+SV=e'),
 ('mbGXc0y3Pe', 'jD9{n{|+PU'),
 ('gB|K:+r?1V', 's|eW&jr[=w'),
 ('lhWI;$JC9(', 'CQy8.z2s`v'),
 ('k0{O[6l]bH', 'LYe,4PfG4a'),
 ('r>g<|,FWi%', 'Rh_*(xz;/]'),
 ('n&>e`2FO/S', 'jDvPRSN7UT'),
 ('khB~(m^@Z5', 'hnq?l@KUUT'),
 ('spKoFRM4if', 'sLc+1O/t|!'),
 ('q8][)Ri}=q', 'm|F4][J.!m'),
 ('hoHandbYAy', 'L>tNacmJP#'),
 ('lmRujD!(A7', 'wX.mVG|9{n'),
 ('q:XyGf#>Wg', 'c#$?0jnW0K'),
 ('s#:aIK$9^x', 'g-3%G(QyEf'),
 ('jBd@A?>g|}', 'za4sz~iaR*'),
 ('koI(}OyJ:@', 'A}fIE>Pq[I'),
 ('e?gIaPc$Ox', 'FqClN*Uskm'),
 ('o#&RMA_REo', 'vqczM!*!WR'),
 ('s4E?ZF[E<>', 'dL;ASbD>B}'),
 ('k1]FH+s8j@', 'B>y*UU741f'),
 ('dWA49p}F{k', 'b<l<9Sv>;o'),
 ('K*b}<I3(~', 'MfdunrN!.('),
 ('e?h=Xhs+K&', 'C@Qb!4TM+Y'),
 ('b@M[XTc?}5', 'hV^z0k.t6x'),
 ('sxOMs+bE8@', 'vFrU{gPXOA'),
 ('t3aZXtpNyi', '^@~8x/eFp'),
 ('rPekx@n9:L', 'K4#|XaqO:g'),
 ('lAxH.CfJB@', 'stl,m~cAO&'),
 ('hZ/V/D&rO`', 'j1e,tg|Z&b'),
 ('h&`>n98~V1', 'qjIBt_WC^1'),
 ('t50y/[AEhF', 'FQm}Y9aG^*'),
 ('gBCR?!O*;E', 'h:@GWL?4y1'),
 ('tTnCoO/*tk', 'KI?g-vLTJ8'),
 ('W5?6yQZD2', 'd`,;^d_nt5'),
 ('e{e8vi@^PY', 'b:(mUH@(`.'),
 ('tcneuK7v%`', 'c0H>DK:hY.'),
 ('uH*Q(mcRt5', 'CPWU&xD,31'),
 ('k$1_yaF?9#', 'Aq@4iLUo[t'),
 ('dUZ^=SE5BG', 'u2@(1}y4a{'),
 ('t_h*fbN#:(', 'u2YZ8>C2[I'),
 ('q=w[<m2Bk&', 'B1cUA{Hro^'),
 ('vpOTK6tMr@', 'b~C@$BV@fk'),
 ('m2F|cUkKhv', 'ddf7bzEG~m'),
 ('k}4/oj#$~s', 'P,t][$~Axv'),
 ('va/ky=f5pK', 'xN@x`d<BS1'),
 ('c,5(mUGzYT', 'j.J_!d]H{c'),
 ('gp[h@]y13l', 'nLS!c^B.u5'),
 ('gx:;za!?C9', 'uJWy?`0JRW'),
 ('r]*Ioa%$bK', 'I[3;:2u9!5'),
 (')Y}Qy.3GK', 'Qt?NY}jsN;'),
 ('lH^2D]w;[H', 'm~5*]PDD9k'),
 ('qx%>fB$d+$', 'vlkjlV^U~T'),
 ('libliptkB4', 'bwsw8$TgX1'),
 ('jrM28*HbyG', 'd[tm>aNv-o'),
 ('r?E$4f-d0/', 'fPO>]fFure'),
 ('leh^fmrt*#', 'oBs%LSd4B;'),
 ('O~pXkAbd3', 'IxLAH)+-_V'),
 ('f*LO~>!0PN', 'l[/(,BJdiJ'),
 ('q[}7hk(+=e', 'k`{m~8Eb`.'),
 ('q7do-wLx%E', 'GJT]wWpqv6'),
 ('vwc3}.=Z#&', 'OL?i,z)TP#'),
 ('e<X;[vACXC', 'rsxD)TXKC#'),
 ('j=L,YBvsBk', 'tKD)*8S3TN'),
 ('oa87&PB&Bm', 'y9[[$e%qC`'),
 ('b^Try&me1A', 't6K(T;};3}'),
 ('o``:?0>/yz', 'sg,bj=%n1w'),
 ('pz(G*<F93/', 'onvgK4ynAq'),
 ('cV4idO^r8W', 'r]11B;H~[z'),
 ('m*PYE=#wr^', 'CO+b,zPO_I'),
 ('sXzvT.g31p', 'NwEo@VHs_d'),
 ('mq)8`hi{hb', 'vwc}tXrF=w'),
 ('h}lnSN_f$_', 'H,;72`%LJX'),
 ('eT<gzg?q,r', 'hO~G0Ujd_$'),
 ('vE[T$`n9T)', 'D|=[nt0eT&'),
 ('tj&bK}%P!F', 'vLL9vrH]jE'),
 ('kX]hN=_.c-', 'G5M^3c_/X|'),
 ('r/B|ra%L,.', 'bbW|f)4_>u'),
 ('b[(2`4t&?J', 'QP7}%SW/px'),
 ('qvITjNxkLN', 'h70gtJ%&xI'),
 ('jX=#G8wu#(', 'sOvum<h.&0'),
 ('l&#7I)Ah/E', 'p2,K;bOB~T'),
 ('de=9c:,@j9', 'e_%R[08+Z'),
 ('kE!iKHLN_g', 'pSK9uw6xC?'),
 ('d``B*6:eCx', 's{g7@QD$qr'),
 ('p]t8:Tka7q', 'jhuwlGqRkR'),
 ('niJUFZF$Y:', 'cfXokA*89x'),
 ('p}Qa|!7PpR', 't0QR1Q:HMY'),
 ('uv1fGXHN@)', 'e[{g,ks$!I'),
 ('sRw-ik:I$v', 'v6t>$<ADP['),
 ('bnEK#)[;qT', 'i:L[HB&@F['),
 ('ey:Q|*t!Lg', 'x]o%O2Wi4u'),
 ('c^,~EC6Pb2', 'ebha1T}R8+'),
 ('tMMtBUpb$&', 'CP|Bi<B+3('),
 ('jKIDq|}J&c', 'i9-RjgM[_,'),
 ('dC:e5G4J/p', 'x`*~=TA+FK'),
 ('u;|vR#mVMW', 'bmb^QU~Z*k'),
 ('gDsLPj(9S#', 'P&j>MnZjBl'),
 ('xb&P*pH(Q', 'FUCfa4kb<y'),
 ('Bszsaz0Iuo', 'q9GttqBN(j'),
 ('JOT:U4ayh@', 'ujWW0n-WqL'),
 ('G/^_##fcPN', 'u}sPj7cerL'),
 ('LPF4AfaHKR', 'Fs>y5(sRng'),
 ('rSneU!3}bn', 'c!B%9S]zNK'),
 ('cv+Nq9:a<P', 'gH(-5bzcUq'),
 ('f*2@qiHh_1', 'g.N+uMm,{6'),
 ('nuU8A_$i2M', 'IS`eM7]t)I'),
 ('fT!w8R#>dg', 'Ja&@${-ll#'),
 ('gG6SWfM>H0', 'f#ZCPMD62V'),
 ('sM0GPt1HS1', 'I_$^q=J15;'),
 ('dlU7VG|3Gd', 'O_++P3q,lg'),
 ('cEO^y)Md[G', 'yKo`$PaHGg'),
 ('eN#^kPGv*L', 'J9k3i5aRzz'),
 ('lp@e##m.!+', 'F9A3Lkp?+N'),
 ('epvt3>HH?U', 'v]C@D/(-+g'),
 ('E3u*2.<9#`', 'kn6vhJtt!Y'),
 ('q1Q3Do8S>g', 'nlr&VdfBJA'),
 ('yX:tmrd5;]', 'BLvM|PE:rh'),
 ('H*c[ML+`s=', 'f.Z<UFi.{x'),
 ('e_;dzXj8de', 'wsM3JR2Xv?'),
 ('iB-8Br~onq', 'G4|N9mDxa&'),
 ('zSc]-^U=0=', 'l1uc5E8j;X'),
 ('x2d4n4ADcP', 'Rf#Y$PY2hD'),
 ('Gn;q2Y)Xe4', 'x18Y%w8iOt'),
 ('gRVZ]qJ#>O', 'pvm.S00zT/'),
 ('J%,fuysl*&', 'AnHKmxdHRZ'),
 ('r(h9&#wc~B', 'h:!&t0Lvqc'),
 ('_]DH+g9!$', 'urEGY*T)mW'),
 ('B:x<p&Q=t)', 'd9jaR(A9o('),
 ('z:*d{z(~V2', 'c2(xx0>{|K'),
 ('d}R:qHj1,7', 'nsv]+(L(N^'),
 ('L5M1*yG7eH', 'bQ*]^-KLDC'),
 ('s|K&2S,UP|', 'mH(F;!A-^i'),
 ('t$y1C2R-Av', 'gs<Y_*zj#^'),
 ('eHJ?)TAdTo', 'fL<HB36|&)'),
 ('pQpX%(EVOH', 'kI#F9[@KH|'),
 ('qiv/4tOlf=', 'k~[RV@<s7/'),
 ('M$bc0[jYf0', 'Ngx+p%Tn$u'),
 ('jYz[ibrr9m', 'iq(<JF$S6/'),
 ('SlOEXfq#|', 'BU*(=#&k=b'),
 ('d5m8%D6,;u', 'LXl!1P9Nfp'),
 ('o9{x<AyA]B', 'HiMLHEOc_m'),
 ('He!e=h?_2V', 'M(|D;@jB#D'),
 ('QSq%~rFaP-', 'pi]:s4:9TG'),
 ('ck!6;xK$/^', 'D!9j=Ss[H)'),
 ('n{{o2K1:dw', 's)}(&(C~qe'),
 ('xqrJ^d[.(O', 'Gp?#Ik&V&F'),
 ('vrn%j%6{nu', 'IJ6D7S}LvU'),
 ('p#R$-mG/L', 'f[E%u}3F%e'),
 ('oV/JG7fwZq', 'Hm4bJ<Y`aA'),
 ('bD?R}i8_[c', 'wsH3aZT9(O'),
 ('Lol+XIvY21', 'P4d|2~&E#h'),
 ('Qlib4)q2Hk', 'x;/B{evQ?m'),
 ('pwwZu{7f~(', 'b~j)uKz$/r'),
 ('qFuGdDx^Yv', 'lz;Aa8Mc)h'),
 ('Cf2@;p<aL', 'M%RATtq>65'),
 ('t2&ri|[Un:', 'o!L7Ln:)+/'),
 ('dbP/Cj}sB+', 'IToJAz{P9K'),
 ('wa>{k!2cXc', 'wsB.ZRe68:'),
 ('5JJ2]i)p4', 'Oh:F{^dxzr'),
 ('s>f40rn,O]', 'HXMK8^/pUt'),
 ('ssbyA9}]QP', 'Jf_>OgL@4?'),
 ('vKx<0Qa!aP', 'kddhH#ut%s'),
 ('fkq7lhLkdH', 'Pv4nPI$/4$')]

def replace_guids(mw, mapping):
    for guid_i, guid_f in mapping:
        # These should NOT be present.
        ids = mw.col.db.execute("SELECT id FROM notes WHERE guid = ?", guid_f)
        if not len(ids) == 0:
            print(f"GUID {guid_f} already exists as note id(s) {ids}!")
            print("You either already have the deck with the correct GUIDs or something's gone wrong.")
            print("Aborting GUID-replacement operation!")
            return 1
        # These should be present.
        ids = mw.col.db.execute("SELECT id FROM notes WHERE guid = ?", guid_i)
        if not len(ids) == 1:
            print(f"Warning: note with GUID {guid_i} does not exist!")
            # not aborting — the user might have simply deleted some notes
    for guid_i, guid_f in mapping:
        # Not doing everything in one go with `executemany` for readability.
        mw.col.db.executemany("UPDATE notes SET guid = ? WHERE guid = ?", [(guid_f, guid_i)])
    # We need to force a full sync!
    mw.col.db.execute("update col set scm=?", int(time.time() * 1000))
    print("GUID replacement was successful! "
          "If you use AnkiWeb, a full upload will be needed next time you sync!")

replace_guids(mw, guid_mapping)
German
guid_mapping = \
[('e+/O]%*qfk', '7rv=E6qjR%'),
 ('h~5xz+=ke~', '!Le9##zdQ2'),
 ('s9-GL*@AXD', '.it+:!Ct{^'),
 ('cPO|Cru8n<', '5>=J&k61ZP'),
 ('m*#%sE.`.;', '(qkm4xu>uO'),
 ('hNE9}>;Q&-', '!<)iK-xJnK'),
 ('jN|NAUP*h}', '$<J<$N>!T1'),
 ('j|z@PMgdx,', '$J#C>FS{9J'),
 ('n+t>2`:;P/', ')r5Ab>w*>M'),
 ('ilGtw#=asM', '#X+584z^4c'),
 ('mcc&0Kq^xE', '(OOn~D2<9_'),
 ('gz9${p}er*', '9#ilIiK|3H'),
 ('dY96`C-f(_', '6|ifHvt}oX'),
 ('r>aI-$$|wT', '-AM-t5l@8j'),
 ('k9E.p^<u$,', '%i)u1<ynlJ'),
 ('l$zM~ihPFE', '&l#;LbTI*_'),
 ('jTNoKo}Bu+', '$]<0/hKu6I'),
 ('mz[>>AxIr4', '(#DAAt9B3u'),
 ('u4^lH.xem5', ':dFX,&9|Yv'),
 ('bk2ByZIeU+', '4Wb%!S-|^I'),
 ('twrhzJ[k:Z', '/83T#CDdwp'),
 ('kS)hDm%w}R', '%[pT(fmpKh'),
 ('AES],s:8=', 't)iVs4wh,'),
 ('k[)#L4.[v3', '%Dpk:Xu:7t'),
 ('k}A9]O:0xw', '%K$iEHwT9<'),
 ('j7eEZkzsCZ', '$gQ)}d#l&p'),
 ('s<_WLSB3I/', '.yG`:L%W-M'),
 ('cYKvF#ptF7', '5|/7*41m*x'),
 ('m)WUtJS`H&', '(p`^5C[>,E'),
 ('l$2O|9w`F~', '&lb=J28>*2'),
 ('kZ52zV#[Iv', '%}eb#Ok:-;'),
 ('i2]v|D3@:j', '#bE7Jwc/w$'),
 ('r5C646H*+*', '-e&fdZ,!rH'),
 ('nIfRn<aY:N', ')-R@Z+MRwd'),
 ('5S(f7%O-$', 'Y[F8gm=t5'),
 ('m?}%V6s8]*', '(BKm_Z41EH'),
 ('uRo^w#p5Be', ':@0F841Y%7'),
 ('o=,%hU&yX%', '*zsmTNnr{D'),
 ('lq`T^ZBF2Y', '&2H]FS%ybo'),
 ('f>c7x2E]Q6', '8AOg9V);?w'),
 ('q[S4`,F0D=', ',D[dH$*T(Q'),
 ('jCd]`-=k,:', '$&PEH%zdsN'),
 ('vf)G?[_?Pf', ';Rp+B:G.>8'),
 ('j9:K,~DQ2v', '$iw/s](Jb;'),
 ('ui3>b-?a@m', ':UcAN%B^C('),
 ('qVi;t%/`F|', ',_Ux56v>*0'),
 ('g-]bb&[.E!', '9tENN7D&)A'),
 ('f21=-A~W;~', '8bazttLPx2'),
 ('sT5=H|@KU|', '.]ez,@CD^0'),
 ('lU@C3<C8Wk', '&^C&c+&1`%'),
 ('jDA-V?/hVj', '$($t_.va_$'),
 ('h_9=mkZXAH', '!GizYd}Q$|'),
 ('mk1VltJl<]', '(Wa_Xm.eyV'),
 ('c(,2{yXI#E', '5osbIr{Bk_'),
 ('kkbYQXw5b;', '%WN|?Q8YNO'),
 ('ia8as9sCY|', '#MhM424v|0'),
 ('j%*8gN)q>d', '$mqhSGpjA6'),
 ('bd~Ght5tLR', '4PL+Tmem:h'),
 ('onMKID2d;D', '*Z;/-wb{x^'),
 ('q8fF$4,c6_', ',hR*lXs`fX'),
 ('upiX0g1quR', ':1U{~~aj6h'),
 ('n:7&>YT5A=', ')wgnAR]Y$Q'),
 ('j2IQ=f=w3@', '$b-?z}zpcT'),
 ('EWXNc<g5)', 'x`ndOySe9'),
 ('gFOojQO(MH', '9*=0VJ=8;|'),
 ('gePC:Xt_nW', '9Q>&wQ5=Zm'),
 ('vNiD6A.v#s', ';<U(ftuok.'),
 ('?n!)c/h=Q', '.ZAGOvTzJ'),
 ('gYIoR`|AxW', '9|-0@>Jt9m'),
 ('j<egqG@)EL', '$yQS2zC9)b'),
 ('t`cagaWApo', '/HOMS^`t1*'),
 ('jN^Vc%9OQ5', '$<F_O6iH?v'),
 ('o3VS!KWb/@', '*c_[jD`_vT'),
 ('iR;U<J:CJJ', '#@x^yCwv.~'),
 ('i^J8&$(1]|', '#F.hn5oUE0'),
 ('pS>DrFhd%u', '+[A(3yT{m:'),
 ('t|h3|;E4g{', '/JTcJ*)XSZ'),
 ('p.yv>BQ470', '+u!7Au?Xgq'),
 ('f#4-L[mp5*', '8kdt::YieH'),
 ('oNpApS<AoJ', '*<1$1Lyt0~'),
 ('nsS59c`VL,', ')4[ei`HO:J'),
 ('m{noqE29%I', '(IZ02xb2m}'),
 ('sSW/?WMy17', '.[`vBP;rax'),
 ('d-q4J~CNW_', '6t2d.]&G`X'),
 ('jKO,9y0M;#', '$/=sir~FxB'),
 ('skOM(?n$GG', '.W=;o.Z5+{'),
 ('mi+kf0LTW.', '(UrWRT:M`L'),
 ('vgdj#X?8dB', ';SPVkQB1P['),
 ('mkgcU7[bA%', '(WSO^0D_$D'),
 ('jcu!gLw/&r', '$O6jSE8(n-'),
 ('sB7rZQsR<l', '.%g3}J4Ky&'),
 ('u|I}oElaH)', ':J-K0xX^,G'),
 ('j)i)pB*HJ,', '$pUp1uqA.J'),
 ('t-0>F]bu>P', '/t~A*;NnAf'),
 ('hrI_uiW>E]', '!3-G6b`-)V'),
 ('uc61ToT%gt', ':Ofa]h]6S/'),
 ('e.t$Vi5,>f', '7u5l_be$A8'),
 ('k/u1:B%DJH', '%v6awumw.|'),
 ('e5P*D#I{m{', '7e>q(4-?YZ'),
 ('p:SPZ:e/*[', '+w[>})Q(qU'),
 ('t+v9b--,qs', '/r7iN%t$2.'),
 ('fV`&p81%d(', '8_Hn11a6PF'),
 ('gsS{jR,]|Q', '94[IVKs;Jg'),
 ('cAlyc~G.y%', '5$X!O]+&!D'),
 ('fxAN),FAc$', '89$<p$*tOC'),
 ('r<N4LAAnnB', '-y<d:t$gZ['),
 ('e?Xq9gy=@[', '7B{2i~!,CU'),
 ('m5j,b/y<EE', '(eVsN(!+)_'),
 ('stRa/S(0$F', '.5@MvLoTl`'),
 ('l+>Ki!j#v+', '&rA/U3V47I'),
 ('kQ:NIhJy~E', '%?w<-a.rL_'),
 ('sY>@9w~i^p', '.|ACipLbF+'),
 ('mJH4kwPF.-', '(.,dWp>yuK'),
 ('bW)ch:vs1P', '4`pOT)7laf'),
 ('sx|l+io`B@', '.9JXrb0>%T'),
 ('q2#Yv[O0:|', ',bk|7:=Tw0'),
 ('lpbD0St&OU', '&1N(~L57=k'),
 ('mbz=7n[0v9', '(N#zggDT7z'),
 ('ijP>aJBT!9', '#V>AMC%Mjz'),
 ('jI9P-f6r3M', '$-i>t}fkcc'),
 ('h?a*UKfT_M', '!BMq^DRMGc'),
 ('r6BV%|..*5', '-f%_m@u&qv'),
 ('i)]+09JUR&', '#pEr~2.N@E'),
 ('l}[BG9.nQS', '&KD%+2ug?i'),
 ('mtd;>7T|g>', '(5PxA0]@SR'),
 ('iW>m(L/~c=', '#`AYoEv]OQ'),
 ('pkj3RPBUrF', '+WVc@I%N3`'),
 ('euW0jm=wfR', '76`~VfzpRh'),
 ('l*j*EE:!Y?', '&qVq)xw3|S'),
 ('d3c`&/1Y^D', '6cOHn(aRF^'),
 ('hXNTVF<:SH', '!{<]_yy)[|'),
 ('mk20`,N=`=', '(Wb~H$<,HQ'),
 ('eALZe^HCHq', '7$:}Q<,v,,'),
 ('l3Ly8PBxt(', '&c:!hI%q5F'),
 ('g<[f89~U)A', '9yDRh2LNp@'),
 ('iIS#Nw]tr]', '#-[k<pEm3V'),
 ('m{oM,jr>C#', '(I0;sc3-&B'),
 ('ln^3p)j3b.', '&ZFc19VWNL'),
 ('cL?8!xP#Wj', '5:Bhjq>4`$'),
 ('e=.VHQ9E+M', '7zu_,Jixrc'),
 ('m[96fa+HDS', '(DifR^rA(i'),
 ('g9v~y/;=z(', '9i7L!(x,#F'),
 ('g~%pF`(x{u', '9Lm1*>oqI:'),
 ('hE5j*e,Q?[', '!)eVq|sJBU'),
 ('fRSM{K+;[w', '8@[;IDr*D<'),
 ('o~}KVA:VbI', '*LK/_twON}'),
 ('u-`cspdp)D', ':tHO4iPip^'),
 ('e42BpV,P}C', '7db%1OsIK]'),
 ('pD<Pd$Ag@J', '+(y>P5$~C~'),
 ('mbGXc0y3Pe', '(N+{OT!W>7'),
 ('gB|K:+r?1V', '9%J/w#3.al'),
 ('lhWI;$JC9(', '&T`-x5.viF'),
 ('k0{O[6l]bH', '%~I=DZX;N|'),
 ('r>g<|,FWi%', '-ASyJ$*PUD'),
 ('n&>e`2FO/S', ')nAQHV*Hvi'),
 ('khB~(m^@Z5', '%T%LofF/}v'),
 ('spKoFRM4if', '.1/0*K;XU8'),
 ('q8][)Ri}=q', ',hEDpKU[z,'),
 ('hoHandbYAy', '!0,MZ{NR$>'),
 ('lmRujD!(A7', '&Y@6Vwj8$x'),
 ('q:XyGf#>Wg', ',w{!+}k-`9'),
 ('s#:aIK$9^x', '.kwM-Dl2F='),
 ('jBd@A?>g|}', '$%PC$.A~J1'),
 ('koI(}OyJ:@', '%0-oKH!CwT'),
 ('e?gIaPc$Ox', '7BS-MIO5=='),
 ('o#&RMA_REo', '*kn@;tGK)*'),
 ('s4E?ZF[E<>', '.d)B}yDxyR'),
 ('k1]FH+s8j@', '%aE*,#41VT'),
 ('dWA49p}F{k', '6`$diiKyI%'),
 ('K*b}<I3(~', 'Dq41y-co]'),
 ('e?h=Xhs+K&', '7BTz{a4#/E'),
 ('b@M[XTc?}5', '4C;D{MO.Kv'),
 ('sxOMs+bE8@', '.9=;4#NxhT'),
 ('t3aZXtpNyi', '/cM}{m1G!#'),
 ('rPekx@n9:L', '->QW9/Z2wb'),
 ('lAxH.CfJB@', '&$9,uvRC%T'),
 ('hZ/V/D&rO`', '!}v_vwnk=Y'),
 ('h&`>n98~V1', '!nHAZ2h]_r'),
 ('t50y/[AEhF', '/e~!v:$xT`'),
 ('gBCR?!O*;E', '9%&@B3=!x_'),
 ('tTnCoO/*tk', '/]Z&0Hv!5%'),
 ('W5?6yQZD2', 'PeSw!?}(V'),
 ('e{e8vi@^PY', '7IQh7bC<>o'),
 ('tcneuK7v%`', '/OZQ6DgomY'),
 ('uH*Q(mcRt5', ':,q?ofOK5v'),
 ('k$1_yaF?9#', '%laG!^*.iB'),
 ('dUZ^=SE5BG', '6^}FzL)Y%{'),
 ('t_h*fbN#:(', '/GTqR_<4wF'),
 ('q=w[<m2Bk&', ',z8DyfbuWE'),
 ('vpOTK6tMr@', ';1=]/Z5F3T'),
 ('m2F|cUkKhv', '(b*JONWDT;'),
 ('k}4/oj#$~s', '%Kdv0ck5L.'),
 ('va/ky=f5pK', ';MvW!,RY1a'),
 ('c,5(mUGzYT', '5seoYN+s|j'),
 ('gp[h@]y13l', '91DTC;!Uc&'),
 ('gx:;za!?C9', '99wx#^j.&z'),
 ('r]*Ioa%$bK', '-Eq-0^m5Na'),
 (')Y}Qy.3GK', '9|1g!uc+D'),
 ('lH^2D]w;[H', '&,Fb(;8*D|'),
 ('qx%>fB$d+$', ',9mARul{rC'),
 ('libliptkB4', '&UNXUi5d%u'),
 ('jrM28*HbyG', '$3;bh!,_!{'),
 ('r?E$4f-d0/', '-B)ld}t{~M'),
 ('leh^fmrt*#', '&QTFRf3mqB'),
 ('O~pXkAbd3', 'HL+nW$NPW'),
 ('f*LO~>!0PN', '8q:=L-jT>d'),
 ('q[}7hk(+=e', ',DKgTdo#z7'),
 ('q7do-wLx%E', ',gP0tp:qm_'),
 ('vwc3}.=Z#&', ';8OcK&zSkE'),
 ('e<X;[vACXC', '7y{xDo$v{]'),
 ('j=L,YBvsBk', '$z:s|u7l%%'),
 ('oa87&PB&Bm', '*MhgnI%7%('),
 ('b^Try&me1A', '4F]3!7Y|a@'),
 ('o``:?0>/yz', '*HHwBTA(!?'),
 ('pz(G*<F93/', '+#o+q+*2cM'),
 ('cV4idO^r8W', '5_dUPHFkhm'),
 ('m*PYE=#wr^', '(q>|),kp3W'),
 ('sXzvT.g31p', '.{#7]&SWa+'),
 ('mq)8`hi{hb', '(2phHaU?T4'),
 ('h}lnSN_f$_', '!KXZ[GG}lX'),
 ('eT<gzg?q,r', '7]yS#~Bjs-'),
 ('vE[T$`n9T)', ';)D]l>Z2]G'),
 ('tj&bK}%P!F', '/VnN/[mIj`'),
 ('kX]hN=_.c-', '%{ET<,G&OK'),
 ('r/B|ra%L,.', '-v%J3^mEsL'),
 ('b[(2`4t&?J', '4DobHX57B~'),
 ('qvITjNxkLN', ',7-]VG9d:d'),
 ('jX=#G8wu#(', '${zk+18nkF'),
 ('l&#7I)Ah/E', '&nkg-9$av_'),
 ('de=9c:,@j9', '6QziO)s/Vz'),
 ('kE!iKHLN_g', '%)jU/A:GG9'),
 ('d``B*6:eCx', '6HH%qZw|&='),
 ('p]t8:Tka7q', '+E5hwMW^g,'),
 ('niJUFZF$Y:', ')U.^*S*5|N'),
 ('p}Qa|!7PpR', '+K?MJ3gI1h'),
 ('uv1fGXHN@)', ':7aR+Q,GCG'),
 ('sRw-ik:I$v', '.@8tUdwBl;'),
 ('bnEK#)[;qT', '4Z)/k9D*2j'),
 ('ey:Q|*t!Lg', '7!w?J!53:9'),
 ('c^,~EC6Pb2', '5FsL)vfINs'),
 ('tMMtBUpb$&', '/;;5%N1_lE'),
 ('jKIDq|}J&c', '$/-(2@KCn5'),
 ('dC:e5G4J/p', '6&wQezdCv+'),
 ('u;|vR#mVMW', ':xJ7@4YO;m'),
 ('gDsLPj(9S#', '9(4:>co2[B'),
 ('xb&P*pH(Q', 'qNEfq1,oJ'),
 ('Bszsaz0Iuo', '[4#4Ms~B6*'),
 ('JOT:U4ayh@', '~=]w^XMrTT'),
 ('G/^_##fcPN', '{vFGk4R`>d'),
 ('LPF4AfaHKR', 'b>*d$}MA/h'),
 ('rSneU!3}bn', '-[ZQ^3c[N)'),
 ('cv+Nq9:a<P', '57r<22w^yf'),
 ('f*2@qiHh_1', '8qbC2b,aGr'),
 ('nuU8A_$i2M', ')6^h$=lbbc'),
 ('fT!w8R#>dg', '8]j8hKk-P9'),
 ('gG6SWfM>H0', '9+f[`};-,q'),
 ('sM0GPt1HS1', '.;~+>maA[r'),
 ('dlU7VG|3Gd', '6X^g_zJW+6'),
 ('cEO^y)Md[G', '5)=F!9;{D{'),
 ('eN#^kPGv*L', '7<kFWI+oqb'),
 ('lp@e##m.!+', '&1CQk4Y&jI'),
 ('epvt3>HH?U', '7175c-,ABk'),
 ('E3u*2.<9#`', '_c6qb&y2kY'),
 ('q1Q3Do8S>g', ',a?c(hhLA9'),
 ('yX:tmrd5;]', '>{w5YkPYxV'),
 ('H*c[ML+`s=', '|qOD;Er>4Q'),
 ('e_;dzXj8de', '7GxP#QV1P7'),
 ('iB-8Br~onq', '#%th%kLhZ,'),
 ('zSc]-^U=0=', '?[OEt<^,~Q'),
 ('x2d4n4ADcP', '=bPdZX$wOf'),
 ('Gn;q2Y)Xe4', '{Zx2bRpQQu'),
 ('gRVZ]qJ#>O', '9@_}Ej.4Ae'),
 ('J%,fuysl*&', '~msR6r4eqE'),
 ('r(h9&#wc~B', '-oTin48`L['),
 ('_]DH+g9!$', '=E^|rSij5'),
 ('B:x<p&Q=t)', '[w9y17?,5G'),
 ('z:*d{z(~V2', '?wqPIso]_s'),
 ('d}R:qHj1,7', '6K@w2AVUsx'),
 ('L5M1*yG7eH', 'be;aqr+0Q|'),
 ('s|K&2S,UP|', '.J/nbLsN>0'),
 ('t$y1C2R-Av', '/l!a&V@%$;'),
 ('eHJ?)TAdTo', '7,.BpM${]*'),
 ('pQpX%(EVOH', '+?1{m8)O=|'),
 ('qiv/4tOlf=', ',U7vdm=eRQ'),
 ('M$bc0[jYf0', 'clNO~:VRRq'),
 ('jYz[ibrr9m', '$|#DU_3ki('),
 ('SlOEXfq#|', 'LXe_{R2k@'),
 ('d5m8%D6,;u', '6eYhmwf$x:'),
 ('o9{x<AyA]B', '*iI9yt!tE['),
 ('He!e=h?_2V', '|QjQzaB=bl'),
 ('QSq%~rFaP-', 'g[2mLk*^>K'),
 ('ck!6;xK$/^', '5Wjfxq/5vW'),
 ('n{{o2K1:dw', ')II0bDa)P<'),
 ('xqrJ^d[.(O', '=23.F{D&oe'),
 ('vrn%j%6{nu', ';3ZmV6f?Z:'),
 ('p#R$-mG/L', 'ikhCtY+vE'),
 ('oV/JG7fwZq', '*_v.+0Rp},'),
 ('bD?R}i8_[c', '4(B@Kbh=D5'),
 ('Lol+XIvY21', 'b0Xr{B7Rbr'),
 ('Qlib4)q2Hk', 'gXUNd92V,%'),
 ('pwwZu{7f~(', '+88}6?g}LF'),
 ('qFuGdDx^Yv', ',*6+Pw9<|;'),
 ('Cf2@;p<aL', 'vRsTx1yME'),
 ('t2&ri|[Un:', '/bn3U@DNZN'),
 ('dbP/Cj}sB+', 'OjlKz@2/j+'),
 ('wa>{k!2cXc', 'NnxZS,Tdmh'),
 ('5JJ2]i)p4', 'cYp<xlh&6.'),
 ('s>f40rn,O]', 'x<|U~!Rw@;'),
 ('ssbyA9}]QP', 'wTi<lH6s=X'),
 ('vKx<0Qa!aP', 'o*$5]rH:r['),
 ('fkq7lhLkdH', 'b,nf]GF[[?')]

def replace_guids(mw, mapping):
    for guid_i, guid_f in mapping:
        # These should NOT be present.
        ids = mw.col.db.execute("SELECT id FROM notes WHERE guid = ?", guid_f)
        if not len(ids) == 0:
            print(f"GUID {guid_f} already exists as note id(s) {ids}!")
            print("You either already have the deck with the correct GUIDs or something's gone wrong.")
            print("Aborting GUID-replacement operation!")
            return 1
        # These should be present.
        ids = mw.col.db.execute("SELECT id FROM notes WHERE guid = ?", guid_i)
        if not len(ids) == 1:
            print(f"Warning: note with GUID {guid_i} does not exist!")
            # not aborting — the user might have simply deleted some notes
    for guid_i, guid_f in mapping:
        # Not doing everything in one go with `executemany` for readability.
        mw.col.db.executemany("UPDATE notes SET guid = ? WHERE guid = ?", [(guid_f, guid_i)])
    # We need to force a full sync!
    mw.col.db.execute("update col set scm=?", int(time.time() * 1000))
    print("GUID replacement was successful! "
          "If you use AnkiWeb, a full upload will be needed next time you sync!")

replace_guids(mw, guid_mapping)
Spanish
guid_mapping = \
[('e+/O]%*qfk', '6=u<D5pin$'),
 ('h~5xz+=ke~', '9hd8!!ycm1'),
 ('s9-GL*@AXD', '-*s*/9Bs5]'),
 ('cPO|Cru8n<', '4X<I%j50vO'),
 ('m*#%sE.`.;', '&<jl3wt=@N'),
 ('hNE9}>;Q&-', '9V(hJ,wI/J'),
 ('jN|NAUP*h}', '#VI;#M=9p0'),
 ('j|z@PMgdx,', '#f!B=ER`FI'),
 ('n+t>2`:;P/', '(=4za=v)XL'),
 ('ilGtw#=asM', '!t*473y]Ab'),
 ('mcc&0Kq^xE', '&kNm}C1;F^'),
 ('gz9${p}er*', '8HhkHhJ{zG'),
 ('dY96`C-f(_', '56heGus|:W'),
 ('r>aI-$$|wT', ',{L,s4k?Ei'),
 ('k9E.p^<u$,', '$*(t0;xm-I'),
 ('l$zM~ihPFE', '%-!:KaSHN^'),
 ('jTNoKo}Bu+', '#1;Z.gJtCH'),
 ('mz[>>AxIr4', '&HCzzs8Azt'),
 ('u4^lH.xem5', '/$EW+%8{uu'),
 ('bk2ByZIeU+', '3sa$9R,{2H'),
 ('twrhzJ[k:Z', '.E2S!BCc]o'),
 ('kS)hDm%w}R', '$0oS&elogg'),
 ('AES],s:8=', 'sMhU>3vg+'),
 ('k[)#L4.[v3', '$~oj/Wt/Ds'),
 ('k}A9]O:0xw', '$g#hDGvSF;'),
 ('j7eEZkzsCZ', '#(P(|c!kKo'),
 ('s<_WLSB3I/', '-_F_/K$VQL'),
 ('cYKvF#ptF7', '46.6)30lNw'),
 ('m)WUtJS`H&', '&;_]4B@=PD'),
 ('l$2O|9w`F~', '%-a<I17=N1'),
 ('kZ52zV#[Iv', '$7da!Nj/Q:'),
 ('i2]v|D3@:j', '!!D6Ivb.]#'),
 ('r5C646H*+*', ',%%ecY+9=G'),
 ('nIfRn<aY:N', '(QQ?Y*LQ]c'),
 ('5S(f7%O-$', 'X0E7(l<s4'),
 ('m?}%V6s8]*', '&|Jl^Y30aG'),
 ('uRo^w#p5Be', '/ZZE730XJ6'),
 ('o=,%hU&yX%', ')`rlSMmq5C'),
 ('lq`T^ZBF2Y', '%yG[ER$x!n'),
 ('f>c7x2E]Q6', '7{Nf8U(:Yv'),
 ('q[S4`,F0D=', '+~@cG#)SLP'),
 ('jCd]`-=k,:', '#KODG$yc>M'),
 ('vf)G?[_?Pf', ':no*A/F-X7'),
 ('j9:K,~DQ2v', '#*v.r[&I!:'),
 ('ui3>b-?a@m', '/qbzM$A]}&'),
 ('qVi;t%/`F|', '+3Tw45u=NZ'),
 ('g-]bb&[.E!', '8?DMM6C%Mz'),
 ('f21=-A~W;~', '7!~yssKO^1'),
 ('sT5=H|@KU|', '-1dy+?BC2Z'),
 ('lU@C3<C8Wk', '%2B%b*%04$'),
 ('jDA-V?/hVj', '#L#s^-u~3#'),
 ('h_9=mkZXAH', '9chyXc|PI{'),
 ('mk1VltJl<]', '&s~^Wl-d_U'),
 ('c(,2{yXI#E', '4:raHq`A,^'),
 ('kkbYQXw5b;', '$sM{>P7XjN'),
 ('ia8as9sCY|', '!igL313u6Z'),
 ('j%*8gN)q>d', '#.pgRFoi{5'),
 ('bd~Ght5tLR', '3lK*SldlTg'),
 ('onMKID2d;D', ')v:.,va`^]'),
 ('q8fF$4,c6_', '+)Q)kWr_&W'),
 ('upiX0g1quR', '/xT`}}~iCg'),
 ('n:7&>YT5A=', '(]fmzQ[XIP'),
 ('j2IQ=f=w3@', '#!,>y|yo#S'),
 ('EWXNc<g5)', 'w4mckxRd8'),
 ('gFOojQO(MH', '8N<ZUI<7U{'),
 ('gePC:Xt_nW', '8m=%vP4<vl'),
 ('vNiD6A.v#s', ':VT&estn,-'),
 ('?n!)c/h=Q', '-vzFkuSyI'),
 ('gYIoR`|AxW', '86,Z?=IsFl'),
 ('j<egqG@)EL', '#_PR1yB8Ma'),
 ('t`cagaWApo', '.dNLR]_sx)'),
 ('jN^Vc%9OQ5', '#VE^N5hGYu'),
 ('o3VS!KWb/@', ')#^@iC_^[S'),
 ('iR;U<J:CJJ', '!Zw]xBvuR}'),
 ('i^J8&$(1]|', '!b-gm4nTaZ'),
 ('pS>DrFhd%u', '*0z&2xS`./'),
 ('t|h3|;E4g{', '.fSbI)(WoY'),
 ('p.yv>BQ470', '*@96zt>W(p'),
 ('f#4-L[mp5*', '7,cs//Xh%G'),
 ('oNpApS<AoJ', ')V0#0Kxsw}'),
 ('nsS59c`VL,', '(A@dh_GNTI'),
 ('m{noqE29%I', '&eYZ1wa1.|'),
 ('sSW/?WMy17', '-0_uAO:q9w'),
 ('d-q4J~CNW_', '5?1c-[%F4W'),
 ('jKO,9y0M;#', '#S<rhq}E^A'),
 ('skOM(?n$GG', '-s<:n-Y4O`'),
 ('mi+kf0LTW.', '&qqVQS/L4K'),
 ('vgdj#X?8dB', ':oOUjPA0l@'),
 ('mkgcU7[bA%', '&sRN]ZC^IC'),
 ('jcu!gLw/&r', '#k5iRD7&/,'),
 ('sB7rZQsR<l', '-Jf2|I3J_%'),
 ('u|I}oElaH)', '/f,JZwW]PF'),
 ('j)i)pB*HJ,', '#;To0tpzRI'),
 ('t-0>F]bu>P', '.?}z):Mm{e'),
 ('hrI_uiW>E]', '9z,F5a_,MU'),
 ('uc61ToT%gt', '/ke~[g[5o.'),
 ('e.t$Vi5,>f', '6@4k^ad#{7'),
 ('k/u1:B%DJH', '$[5~vtlvR{'),
 ('e5P*D#I{m{', '6%=p&3,>uY'),
 ('p:SPZ:e/*[', '*]@=|(P&<T'),
 ('t+v9b--,qs', '.=6hM$s#y-'),
 ('fV`&p81%d(', '73Gm00~5lE'),
 ('gsS{jR,]|Q', '8A@HUJr:ff'),
 ('cAlyc~G.y%', '4IW9N[*%GC'),
 ('fxAN),FAc$', '7F#;o#)skB'),
 ('r<N4LAAnnB', ',_;c/s#fv@'),
 ('e?Xq9gy=@[', '6|`1h}9+}T'),
 ('m5j,b/y<EE', '&%UrM&9*M^'),
 ('stRa/S(0$F', '-B?LuKnS-_'),
 ('l+>Ki!j#v+', '%=z.T2U3DH'),
 ('kQ:NIhJy~E', '$Yv;,~-qh^'),
 ('sY>@9w~i^p', '-6zBhoKab*'),
 ('mJH4kwPF.-', '&R+cVo=x@J'),
 ('bW)ch:vs1P', '34oNS(6k9e'),
 ('sx|l+io`B@', '-FIWqaZ=JS'),
 ('q2#Yv[O0:|', '+!j{6/<S]Z'),
 ('lpbD0St&OU', '%xM&}K46Wj'),
 ('mbz=7n[0v9', '&j!yffCSDy'),
 ('ijP>aJBT!9', '!r=zLB$L+y'),
 ('jI9P-f6r3M', '#Qh=s|ej#b'),
 ('h?a*UKfT_M', '9|Lp]CQLcb'),
 ('r6BV%|..*5', ',&$^l?t%<u'),
 ('i)]+09JUR&', '!;Dq}1-MZD'),
 ('l}[BG9.nQS', '%gC$*1tfYh'),
 ('mtd;>7T|g>', '&BOwzZ[?oQ'),
 ('iW>m(L/~c=', '!4zXnDu[kP'),
 ('pkj3RPBUrF', '*sUb?H$Mz_'),
 ('euW0jm=wfR', '6C_}Ueyong'),
 ('l*j*EE:!Y?', '%<Up(wv26R'),
 ('d3c`&/1Y^D', '5#NGm&~Qb]'),
 ('hXNTVF<:SH', '95;[^xx(0{'),
 ('mk20`,N=`=', '&sa}G#;+dP'),
 ('eALZe^HCHq', '6I/|P;+uP+'),
 ('l3Ly8PBxt(', '%#/9gH$pBE'),
 ('g<[f89~U)A', '8_CQg1KM;?'),
 ('iIS#Nw]tr]', '!Q@j;oDlzU'),
 ('m{oM,jr>C#', '&eZ:rb2,KA'),
 ('ln^3p)j3b.', '%vEb08UVjK'),
 ('cL?8!xP#Wj', '4TAgip=34#'),
 ('e=.VHQ9E+M', '6`t^+Ihw=b'),
 ('m[96fa+HDS', '&~heQ]qzLh'),
 ('g9v~y/;=z(', '8*6K9&w+HE'),
 ('g~%pF`(x{u', '8hl0)=npe/'),
 ('hE5j*e,Q?[', '9MdUp{rI|T'),
 ('fRSM{K+;[w', '7Z@:HCq)~;'),
 ('o~}KVA:VbI', ')hJ.^svNj|'),
 ('u-`cspdp)D', '/?GN3hOh;]'),
 ('e42BpV,P}C', '6$a$0NrHg['),
 ('pD<Pd$Ag@J', '*Lx=O4#}}}'),
 ('mbGXc0y3Pe', '&j*`NS9VX6'),
 ('gB|K:+r?1V', '8JI.v!2-9k'),
 ('lhWI;$JC9(', '%p_,w4-u*E'),
 ('k0{O[6l]bH', '$8H<CYW:j{'),
 ('r>g<|,FWi%', ',{RxI#)OqC'),
 ('n&>e`2FO/S', '(/zPGU)G[h'),
 ('khB~(m^@Z5', '$p$KneE.7u'),
 ('spKoFRM4if', '-x.Z)J:Wq7'),
 ('q8][)Ri}=q', '+)DCoJT@`+'),
 ('hoHandbYAy', '9w+LY`MQI='),
 ('lmRujD!(A7', '%u?5Uvi7Iw'),
 ('q:XyGf#>Wg', '+]`9*|j,48'),
 ('s#:aIK$9^x', '-,vL,Ck1b<'),
 ('jBd@A?>g|}', '#JOB#-z}f0'),
 ('koI(}OyJ:@', '$w,nJG9B]S'),
 ('e?gIaPc$Ox', '6|R,LHN4W<'),
 ('o#&RMA_REo', '),m?:sFJM)'),
 ('s4E?ZF[E<>', '-$(A|xCw_Q'),
 ('k1]FH+s8j@', '$9D)+!30rS'),
 ('dWA49p}F{k', '54#chhJxe$'),
 ('K*b}<I3(~', 'C<30_,bn['),
 ('e?h=Xhs+K&', '6|Sy`~3!SD'),
 ('b@M[XTc?}5', '3}:C`LN-gu'),
 ('sxOMs+bE8@', '-F<:3!Mw)S'),
 ('t3aZXtpNyi', '.#L|`l0FG!'),
 ('rPekx@n9:L', ',XPV8.Y1]a'),
 ('lAxH.CfJB@', '%I8+tuQBJS'),
 ('hZ/V/D&rO`', '97u^uvmjWX'),
 ('h&`>n98~V1', '9/GzY1g[3q'),
 ('t50y/[AEhF', '.%}9u/#wp_'),
 ('gBCR?!O*;E', '8J%?A2<9^^'),
 ('tTnCoO/*tk', '.1Y%ZGu9B$'),
 ('W5?6yQZD2', 'O%RvG>|&U'),
 ('e{e8vi@^PY', '6ePg6aB;Xn'),
 ('tcneuK7v%`', '.kYP5Cfn.X'),
 ('uH*Q(mcRt5', '/Pp>neNJBu'),
 ('k$1_yaF?9#', '$-~F9])-*A'),
 ('dUZ^=SE5BG', '52|EyK(XJ`'),
 ('t_h*fbN#:(', '.cSpQ^;3]E'),
 ('q=w[<m2Bk&', '+`7CxeatsD'),
 ('vpOTK6tMr@', ':x<[.Y4EzS'),
 ('m2F|cUkKhv', '&!)INMVCp:'),
 ('k}4/oj#$~s', '$gcuZbj4h-'),
 ('va/ky=f5pK', ':iuV9+QXx~'),
 ('c,5(mUGzYT', '4>dnXM*r6i'),
 ('gp[h@]y13l', '8xCSB:9T#%'),
 ('gx:;za!?C9', '8Fvw!]i-Ky'),
 ('r]*Ioa%$bK', ',ap,Z]l4j~'),
 (')Y}Qy.3GK', '860fGtb*C'),
 ('lH^2D]w;[H', '%PEa&:7)~{'),
 ('qx%>fB$d+$', '+FlzQtk`=B'),
 ('libliptkB4', '%qMWTh4cJt'),
 ('jrM28*HbyG', '#z:ag9+^G`'),
 ('r?E$4f-d0/', ',|(kc|s`8L'),
 ('leh^fmrt*#', '%mSEQe2l<A'),
 ('O~pXkAbd3', 'Gh*ms#MOV'),
 ('f*LO~>!0PN', '7</<K,iSXc'),
 ('q[}7hk(+=e', '+~JfScn!`6'),
 ('q7do-wLx%E', '+(OZso/p.^'),
 ('vwc3}.=Z#&', ':ENbJ%yR,D'),
 ('e<X;[vACXC', '6_`wCn#u5['),
 ('j=L,YBvsBk', '#`/r{t6kJ$'),
 ('oa87&PB&Bm', ')igfmH$6J&'),
 ('b^Try&me1A', '3b[296X{9?'),
 ('o``:?0>/yz', ')dGvASz&G>'),
 ('pz(G*<F93/', '*Hn*p*)1#L'),
 ('cV4idO^r8W', '43cTOGEj)l'),
 ('m*PYE=#wr^', '&<={(+jozV'),
 ('sXzvT.g31p', '-5!6[%RV9*'),
 ('mq)8`hi{hb', '&yogG~T>p3'),
 ('h}lnSN_f$_', '9gWY@FF|-W'),
 ('eT<gzg?q,r', '61xR!}Ai>,'),
 ('vE[T$`n9T)', ':MC[k=Y11F'),
 ('tj&bK}%P!F', '.rmM.@lH+_'),
 ('kX]hN=_.c-', '$5DS;+F%kJ'),
 ('r/B|ra%L,.', ',[$I2]lD>K'),
 ('b[(2`4t&?J', '3~naGW46|}'),
 ('qvITjNxkLN', '+D,[UF8cTc'),
 ('jX=#G8wu#(', '#5yj*07m,E'),
 ('l&#7I)Ah/E', '%/jf,8#~[^'),
 ('de=9c:,@j9', '5myhN(r.ry'),
 ('kE!iKHLN_g', '$MiT.z/Fc8'),
 ('d``B*6:eCx', '5dG$pYv{K<'),
 ('p]t8:Tka7q', '*a4gvLV](+'),
 ('niJUFZF$Y:', '(q-])R)46M'),
 ('p}Qa|!7PpR', '*g>LI2fHxg'),
 ('uv1fGXHN@)', '/D~Q*P+F}F'),
 ('sRw-ik:I$v', '-Z7sTcvA-:'),
 ('bnEK#)[;qT', '3v(.j8C)yi'),
 ('ey:Q|*t!Lg', '6Gv>I942T8'),
 ('c^,~EC6Pb2', '4brK(ueHjr'),
 ('tMMtBUpb$&', '.U:4$M0^-D'),
 ('jKIDq|}J&c', '#S,&1?JB/4'),
 ('dC:e5G4J/p', '5KvPdycB[*'),
 ('u;|vR#mVMW', '/^I6?3XNUl'),
 ('gDsLPj(9S#', '8L3/=bn10A'),
 ('xb&P*pH(Q', 'pjDe<0+nI'),
 ('Bszsaz0Iuo', '@A!3Lr}AC)'),
 ('JOT:U4ayh@', '}W[v]WLqpS'),
 ('G/^_##fcPN', '`[EFj3Q_Xc'),
 ('LPF4AfaHKR', 'aX)c#|LzSg'),
 ('rSneU!3}bn', ',0YP]2b@j('),
 ('cv+Nq9:a<P', '4Dq;11v]_e'),
 ('f*2@qiHh_1', '7<aB1a+~cq'),
 ('nuU8A_$i2M', '(C]g#<ka!b'),
 ('fT!w8R#>dg', '71i7gJj,l8'),
 ('gG6SWfM>H0', '8Oe@_|:,Pp'),
 ('sM0GPt1HS1', '-U}*=l~z0q'),
 ('dlU7VG|3Gd', '5t]f^yIVO5'),
 ('cEO^y)Md[G', '4M<E98:`~`'),
 ('eN#^kPGv*L', '6VjEVH*n<a'),
 ('lp@e##m.!+', '%xBPj3X%+H'),
 ('epvt3>HH?U', '6x64b,+z|j'),
 ('E3u*2.<9#`', '^#5pa%x1,X'),
 ('q1Q3Do8S>g', '+9>b&ggK{8'),
 ('yX:tmrd5;]', '=5v4XjOX^U'),
 ('H*c[ML+`s=', '{<NC:Dq=AP'),
 ('e_;dzXj8de', '6cwO!PU0l6'),
 ('iB-8Br~onq', '!Jsg$jKgv+'),
 ('zSc]-^U=0=', '>0NDs;]+8P'),
 ('x2d4n4ADcP', '<!OcYW#vke'),
 ('Gn;q2Y)Xe4', '`vw1aQoPmt'),
 ('gRVZ]qJ#>O', '8Z^|Di-3{d'),
 ('J%,fuysl*&', '}.rQ5q3d<D'),
 ('r(h9&#wc~B', ',:Shm37_h@'),
 ('_]DH+g9!$', '<a]{=Rhi4'),
 ('B:x<p&Q=t)', '@]8x06>+BF'),
 ('z:*d{z(~V2', '>]pOHrn[3r'),
 ('d}R:qHj1,7', '5g?v1zUT>w'),
 ('L5M1*yG7eH', 'a%:~pq*Zm{'),
 ('s|K&2S,UP|', '-f.maKrMXZ'),
 ('t$y1C2R-Av', '.-9~%U?$I:'),
 ('eHJ?)TAdTo', '6P-AoL#`1)'),
 ('pQpX%(EVOH', '*Y0`l7(NW{'),
 ('qiv/4tOlf=', '+q6ucl<dnP'),
 ('M$bc0[jYf0', 'b-MN}/UQnp'),
 ('jYz[ibrr9m', '#6!CT^2j*&'),
 ('SlOEXfq#|', 'Ktd^5Q1j?'),
 ('d5m8%D6,;u', '5%Xglve#^/'),
 ('o9{x<AyA]B', ')*H8xs9sa@'),
 ('He!e=h?_2V', '{miPy~A<!k'),
 ('QSq%~rFaP-', 'f01lKj)]XJ'),
 ('ck!6;xK$/^', '4siewp.4[V'),
 ('n{{o2K1:dw', '(eHZaC~(l;'),
 ('xqrJ^d[.(O', '<y2-E`C%:d'),
 ('vrn%j%6{nu', ':zYlU5e>v/'),
 ('p#R$-mG/L', 'h,gB?X*uD'),
 ('oV/JG7fwZq', ')3u-*ZQo7+'),
 ('bD?R}i8_[c', '3LA?Jag<~4'),
 ('Lol+XIvY21', 'awWq`A6Q!q'),
 ('Qlib4)q2Hk', 'ftTMc81UP$'),
 ('pwwZu{7f~(', '*E7|5>f|hE'),
 ('qFuGdDx^Yv', '+N5*Ov8;6:'),
 ('Cf2@;p<aL', 'unrS^0xLD'),
 ('t2&ri|[Un:', '.!m2T?CMvM'),
 ('dbP/Cj}sB+', 'B8+FHyt^E'),
 ('wa>{k!2cXc', 'cv-,SC1HIr'),
 ('5JJ2]i)p4', 'f=r^TR.L0,'),
 ('s>f40rn,O]', 'yK@HKIZR,h'),
 ('ssbyA9}]QP', 'izUG=]G]=<'),
 ('vKx<0Qa!aP', 'k=,7DzSs>p'),
 ('fkq7lhLkdH', 'r[gU./Cvk`')]

def replace_guids(mw, mapping):
    for guid_i, guid_f in mapping:
        # These should NOT be present.
        ids = mw.col.db.execute("SELECT id FROM notes WHERE guid = ?", guid_f)
        if not len(ids) == 0:
            print(f"GUID {guid_f} already exists as note id(s) {ids}!")
            print("You either already have the deck with the correct GUIDs or something's gone wrong.")
            print("Aborting GUID-replacement operation!")
            return 1
        # These should be present.
        ids = mw.col.db.execute("SELECT id FROM notes WHERE guid = ?", guid_i)
        if not len(ids) == 1:
            print(f"Warning: note with GUID {guid_i} does not exist!")
            # not aborting — the user might have simply deleted some notes
    for guid_i, guid_f in mapping:
        # Not doing everything in one go with `executemany` for readability.
        mw.col.db.executemany("UPDATE notes SET guid = ? WHERE guid = ?", [(guid_f, guid_i)])
    # We need to force a full sync!
    mw.col.db.execute("update col set scm=?", int(time.time() * 1000))
    print("GUID replacement was successful! "
          "If you use AnkiWeb, a full upload will be needed next time you sync!")

replace_guids(mw, guid_mapping)
French
guid_mapping = \
[('e+/O]%*qfk', 'p);vRzMs+W'),
 ('h~5xz+=ke~', 'Ive-9<)?/'),
 ('s9-GL*@AXD', 'o6puwHE{j4'),
 ('cPO|Cru8n<', 'ua?z9KS@^h'),
 ('m*#%sE.`.;', 'o.l+o.aIv#'),
 ('hNE9}>;Q&-', 'i+%_VY]7bt'),
 ('jN|NAUP*h}', 'vwLrgavleL'),
 ('j|z@PMgdx,', 'umk_Ql/M`8'),
 ('n+t>2`:;P/', 'F*@Hxe1UYX'),
 ('ilGtw#=asM', 'oTmq$Cq1H`'),
 ('mcc&0Kq^xE', 'fe<{h`wWIF'),
 ('gz9${p}er*', 'dTNjd[5|Ge'),
 ('dY96`C-f(_', 'e?6[KX^Js+'),
 ('r>aI-$$|wT', 'CJb&~c&tZv'),
 ('k9E.p^<u$,', '0/,+rSKt6'),
 ('l$zM~ihPFE', 'qTFGENa@Y3'),
 ('jTNoKo}Bu+', 'AtMq%)YA4~'),
 ('mz[>>AxIr4', 'O0NI(S,j2o'),
 ('u4^lH.xem5', 'm]_=p1zwik'),
 ('bk2ByZIeU+', 'uuu#3&G{(R'),
 ('twrhzJ[k:Z', 'qMOzrk<+(:'),
 ('kS)hDm%w}R', 'zXq}ul(8_E'),
 ('AES],s:8=', 'i_0H+>}|<.'),
 ('k[)#L4.[v3', 'G6=c,ll^]`'),
 ('k}A9]O:0xw', 'jk_(_rr<<!'),
 ('j7eEZkzsCZ', 'IJG[L,X;A3'),
 ('s<_WLSB3I/', 'vaSXyU,d,a'),
 ('cYKvF#ptF7', 'L[=I7EcROn'),
 ('m)WUtJS`H&', 'L&#(>5c7a*'),
 ('l$2O|9w`F~', 'Q}6:Ng``xM'),
 ('kZ52zV#[Iv', 'upq|kJ[Qi$'),
 ('i2]v|D3@:j', 'w1FM?@j-tk'),
 ('r5C646H*+*', 'gPWIY|dqgC'),
 ('nIfRn<aY:N', 'hBl;b1akKo'),
 ('5S(f7%O-$', 'kbJZsU]Tm~'),
 ('m?}%V6s8]*', 'x)ZvHsvNcz'),
 ('uRo^w#p5Be', 'nlky<K>nXE'),
 ('o=,%hU&yX%', 'B)M|?v5vl3'),
 ('lq`T^ZBF2Y', 'DUa%sQ;0;@'),
 ('f>c7x2E]Q6', 'IkP885[1L6'),
 ('q[S4`,F0D=', 'h0~.:5}&Q8'),
 ('jCd]`-=k,:', 'INr2(vFB[p'),
 ('vf)G?[_?Pf', 'Q=UkoGw%47'),
 ('j9:K,~DQ2v', 'HsOJP(RQoY'),
 ('ui3>b-?a@m', 'J#u?@$XnR$'),
 ('qVi;t%/`F|', 'iB7LW}8*Ii'),
 ('g-]bb&[.E!', 'vbEn[U)2cf'),
 ('f21=-A~W;~', 'n65[nUZiZc'),
 ('sT5=H|@KU|', 'K6g6$oK|jN'),
 ('lU@C3<C8Wk', 'O}c<W!@%aZ'),
 ('jDA-V?/hVj', 'g[tAvcrR3^'),
 ('h_9=mkZXAH', 'Ft$h3i.|l.'),
 ('mk1VltJl<]', 'y8u|!Om27i'),
 ('c(,2{yXI#E', 'lo1wB^!`h,'),
 ('kkbYQXw5b;', 'y`v(^%tvG3'),
 ('ia8as9sCY|', 'uO%6i;{0PZ'),
 ('j%*8gN)q>d', 'Ddu%%IIGo*'),
 ('bd~Ght5tLR', 'rl:ZBh8sp^'),
 ('onMKID2d;D', 'cHz7UCnS&i'),
 ('q8fF$4,c6_', 'wAQL>iJ/-]'),
 ('upiX0g1quR', 'cM;m6U=Dg5'),
 ('n:7&>YT5A=', 'FFMu>hPw;u'),
 ('j2IQ=f=w3@', 'I_Q-5hX|5;'),
 ('EWXNc<g5)', '[#-i4q4Hz'),
 ('gFOojQO(MH', 'z7[5xEgcrA'),
 ('gePC:Xt_nW', 'Ay%EM@L0b~'),
 ('vNiD6A.v#s', 'bsVR4>6gl0'),
 ('?n!)c/h=Q', 'QykP%i/vKj'),
 ('gYIoR`|AxW', 'bP:bhgKryC'),
 ('j<egqG@)EL', 'G@(d+tSaA^'),
 ('t`cagaWApo', 'm$gS*RQqQ1'),
 ('jN^Vc%9OQ5', 'O#$FD?t_j)'),
 ('o3VS!KWb/@', 'o#s^(c`}.G'),
 ('iR;U<J:CJJ', 'w[%X~D#R,7'),
 ('i^J8&$(1]|', 'CY~?X/vp+j'),
 ('pS>DrFhd%u', 'Cu].QU#a&l'),
 ('t|h3|;E4g{', 'hX`.aRn$&{'),
 ('p.yv>BQ470', 'IThTxqnu;|'),
 ('f#4-L[mp5*', 'lW;xJ;HJv/'),
 ('oNpApS<AoJ', 'c(A-(Xa1)x'),
 ('nsS59c`VL,', 'hv3J+WS`/,'),
 ('m{noqE29%I', 'y;mRF(PX>0'),
 ('sSW/?WMy17', 'q1DvZ4Qkh,'),
 ('d-q4J~CNW_', 'k{y?<`|#63'),
 ('jKO,9y0M;#', 'ny_8#ZQA/?'),
 ('skOM(?n$GG', 'svVKQZTWFU'),
 ('mi+kf0LTW.', 't,2AZ>_CA/'),
 ('vgdj#X?8dB', 'n,~jhT?[]W'),
 ('mkgcU7[bA%', ']#3u-c%5X'),
 ('jcu!gLw/&r', 'Qw(O&Fnkul'),
 ('sB7rZQsR<l', 'Hk9k3U@-DA'),
 ('u|I}oElaH)', 'LG(/,IHQi@'),
 ('j)i)pB*HJ,', 'xwNS`|r~1x'),
 ('t-0>F]bu>P', 'qJP9,I/X;?'),
 ('hrI_uiW>E]', 'H38F4o,>An'),
 ('uc61ToT%gt', 'xc)G{&Ta22'),
 ('e.t$Vi5,>f', 'DS~l]pq.y<'),
 ('k/u1:B%DJH', 'uNyx=*R.$~'),
 ('e5P*D#I{m{', 'E2g&j~V_+i'),
 ('p:SPZ:e/*[', 'umTKoLZSfc'),
 ('t+v9b--,qs', 'hZ-27c=iA5'),
 ('fV`&p81%d(', 'H(5ar5kY/Y'),
 ('gsS{jR,]|Q', 'oi2j6zc,T]'),
 ('cAlyc~G.y%', 'bDx}p^DSVL'),
 ('fxAN),FAc$', 'hN=Lly0+D{'),
 ('r<N4LAAnnB', 'w#;7*w+/l+'),
 ('e?Xq9gy=@[', 'wt?Q|)Y7F1'),
 ('m5j,b/y<EE', 'i_cTqW/(1E'),
 ('stRa/S(0$F', 'q@wPIm/;#)'),
 ('l+>Ki!j#v+', 'DN*^.Q~HcI'),
 ('kQ:NIhJy~E', 'x2E6#%E!/p'),
 ('sY>@9w~i^p', 'r{g3sXk]Cm'),
 ('mJH4kwPF.-', 'Jcx)35]`H]'),
 ('bW)ch:vs1P', 'bp+p&^O&Nz'),
 ('sx|l+io`B@', 'HPt<x)x%Jh'),
 ('q2#Yv[O0:|', 'p`7>hfkNfW'),
 ('lpbD0St&OU', 'C^p96b?pgu'),
 ('mbz=7n[0v9', 'g^hxtS_)Ja'),
 ('ijP>aJBT!9', 'N@X:<s:Osr'),
 ('jI9P-f6r3M', 'Kc0|/i[KY@'),
 ('h?a*UKfT_M', 'm`:zwx?UCO'),
 ('r6BV%|..*5', 'kfOOt3pPdZ'),
 ('i)]+09JUR&', 'G]3ZD2G$ww'),
 ('l}[BG9.nQS', 'rHNPZJUEFp'),
 ('mtd;>7T|g>', 'f;],oZor+L'),
 ('iW>m(L/~c=', 'CW+/?p:?BO'),
 ('pkj3RPBUrF', 'FHqW?gqMKx'),
 ('euW0jm=wfR', 'HQ$_4*oGf3'),
 ('l*j*EE:!Y?', 'pcYb[d%n,O'),
 ('d3c`&/1Y^D', 'g8.ti_%`5'),
 ('hXNTVF<:SH', 'hE&?:>xB0v'),
 ('mk20`,N=`=', 'MV[vr/8+{>'),
 ('eALZe^HCHq', 'HrZ~>9NjBH'),
 ('l3Ly8PBxt(', 'A_Vjy~^@?}'),
 ('g<[f89~U)A', 'DDzO/+_}ww'),
 ('iIS#Nw]tr]', 'x7GO_2-WY$'),
 ('m{oM,jr>C#', 'i3#3D+l`w$'),
 ('ln^3p)j3b.', 'f0b;Rq1k!_'),
 ('cL?8!xP#Wj', 'twkWz3eS+-'),
 ('e=.VHQ9E+M', 'j8XG#DTPjL'),
 ('m[96fa+HDS', 'AmEQ/?7Q#x'),
 ('g9v~y/;=z(', 'Iq@M;2CIzf'),
 ('g~%pF`(x{u', 'uhYJm4N/!$'),
 ('hE5j*e,Q?[', 'oCa[}6b]{J'),
 ('fRSM{K+;[w', 'ymuYBM5)ux'),
 ('o~}KVA:VbI', 'u9/j`LQwrv'),
 ('u-`cspdp)D', 'B|v&Z,u=T'),
 ('e42BpV,P}C', 'bTrCSD^W4m'),
 ('pD<Pd$Ag@J', 'xQK`2V6wDX'),
 ('mbGXc0y3Pe', 'r7L@;3f5Y^'),
 ('gB|K:+r?1V', 'vy}j#{dVU,'),
 ('lhWI;$JC9(', 'M4#3n[]D/T'),
 ('k0{O[6l]bH', 'p(t;=_z4`='),
 ('r>g<|,FWi%', 'Gh36nI3h)B'),
 ('n&>e`2FO/S', 'A%emXRt~a]'),
 ('khB~(m^@Z5', 's9?zpnq?/g'),
 ('spKoFRM4if', 'Osy[q7a%UV'),
 ('q8][)Ri}=q', 'iyxxWaZ8Wb'),
 ('hoHandbYAy', 'fRSFWQK>W('),
 ('lmRujD!(A7', 'lcC48!,,{,'),
 ('q:XyGf#>Wg', 'ja9thWdG~?'),
 ('s#:aIK$9^x', 'Cdm[YJ2i`t'),
 ('jBd@A?>g|}', 'BxD0*Nx8HN'),
 ('koI(}OyJ:@', 'mK?UY]$UVp'),
 ('e?gIaPc$Ox', 'e-#MW&-!m7'),
 ('o#&RMA_REo', 'O_HGdfn7R7'),
 ('s4E?ZF[E<>', 'rnHajUXn]|'),
 ('k1]FH+s8j@', 'ns:xfr`B.`'),
 ('dWA49p}F{k', 'JXC>bWd>&Z'),
 ('K*b}<I3(~', 'BNN4wvUA&P'),
 ('e?h=Xhs+K&', 'sOd2&00m?K'),
 ('b@M[XTc?}5', 'q382+6kQ}}'),
 ('sxOMs+bE8@', 'sgq|,rEUT>'),
 ('t3aZXtpNyi', 'Mmy:MH3p-5'),
 ('rPekx@n9:L', 'bb1Lx^zyVu'),
 ('lAxH.CfJB@', 'mSo]}$<EpU'),
 ('hZ/V/D&rO`', 'OXH#q-u9XF'),
 ('h&`>n98~V1', 'P[t`X50n$K'),
 ('t50y/[AEhF', 'CaSU3w{HJO'),
 ('gBCR?!O*;E', 'b(JUWzefV^'),
 ('tTnCoO/*tk', ':?*,_d`iM'),
 ('W5?6yQZD2', 'N$AR]vQR?L'),
 ('e{e8vi@^PY', 'jFv`AX2j9Z'),
 ('tcneuK7v%`', 'w{[+/hi?P7'),
 ('uH*Q(mcRt5', 'C}D/)CbE1E'),
 ('k$1_yaF?9#', 'r]by!Z{bH3'),
 ('dUZ^=SE5BG', '5H}uoT?x9'),
 ('t_h*fbN#:(', 'd_{5}`KOeV'),
 ('q=w[<m2Bk&', 'b=!Fr*y_C!'),
 ('vpOTK6tMr@', 'P[nc3.TLD`'),
 ('m2F|cUkKhv', 'G~@ufSz/a;'),
 ('k}4/oj#$~s', 'J32gf}o<MD'),
 ('va/ky=f5pK', 'dnCkHdCc(#'),
 ('c,5(mUGzYT', 'M$iq^Ddz$z'),
 ('gp[h@]y13l', 'cH+7jy4I,m'),
 ('gx:;za!?C9', 'uQ-6g&t&/t'),
 ('r]*Ioa%$bK', 'ltf#^eLgH='),
 (')Y}Qy.3GK', 'cYWtxb5I.n'),
 ('lH^2D]w;[H', 's&%k)X]^%+'),
 ('qx%>fB$d+$', 'b-3J|=Nm69'),
 ('libliptkB4', 'G;f97RI^i|'),
 ('jrM28*HbyG', 'Lng7&qhm~G'),
 ('r?E$4f-d0/', 'L~g[-Y5a.V'),
 ('leh^fmrt*#', 'uEmYu^%Cdm'),
 ('O~pXkAbd3', 'dW]ePHn0<E'),
 ('f*LO~>!0PN', 'xj/*Nw.FyN'),
 ('q[}7hk(+=e', 'I5l?zw=g2W'),
 ('q7do-wLx%E', 'HF8bKY!Wia'),
 ('vwc3}.=Z#&', 'PcUr6zy#ql'),
 ('e<X;[vACXC', 'uTx.c_gB-g'),
 ('j=L,YBvsBk', 'M=(.zK+i8]'),
 ('oa87&PB&Bm', 'w?},I|jwcN'),
 ('b^Try&me1A', 'wU6oi[(~g5'),
 ('o``:?0>/yz', 'rJf@3vMORX'),
 ('pz(G*<F93/', 't)7YT?VSxY'),
 ('cV4idO^r8W', 'm*zfj4hJj+'),
 ('m*PYE=#wr^', 'z#:5{OdBN]'),
 ('sXzvT.g31p', '`ePFuGBDX'),
 ('mq)8`hi{hb', 'co2;shq(5S'),
 ('h}lnSN_f$_', 'z>%tQDyw7D'),
 ('eT<gzg?q,r', 'yc9tc)O|D)'),
 ('vE[T$`n9T)', 'CmEf8|#B?{'),
 ('tj&bK}%P!F', 'QG_m`Y6OnU'),
 ('kX]hN=_.c-', 'H~PFXc^2.|'),
 ('r/B|ra%L,.', 'CuDj}XI),:'),
 ('b[(2`4t&?J', 'j]:U,18j(c'),
 ('qvITjNxkLN', 'c+Zk;oa>e/'),
 ('jX=#G8wu#(', 'dy>%OTh=dS'),
 ('l&#7I)Ah/E', 'j_Sf!`8fUy'),
 ('de=9c:,@j9', 'ET[Oa;OLaK'),
 ('kE!iKHLN_g', 'wt]m$(ynIk'),
 ('d``B*6:eCx', 'dC[x.]4VGu'),
 ('p]t8:Tka7q', 'w?1B]|VvAn'),
 ('niJUFZF$Y:', 'N?ze.ZE4@K'),
 ('p}Qa|!7PpR', 'DRS!iJyvJG'),
 ('uv1fGXHN@)', 'L5qdsn2.Vt'),
 ('sRw-ik:I$v', 'u:[~?k7{9`'),
 ('bnEK#)[;qT', 'ct@4i2c5]R'),
 ('ey:Q|*t!Lg', 'Pki<F_#mJ$'),
 ('c^,~EC6Pb2', 'v&W7WvlFQH'),
 ('tMMtBUpb$&', 'JS/Mu$zWXF'),
 ('jKIDq|}J&c', 'd*RV!D6_/z'),
 ('dC:e5G4J/p', 'r6u%*kzI$i'),
 ('u;|vR#mVMW', 'L{DDezoz^'),
 ('gDsLPj(9S#', 'wao7Vn!%<:'),
 ('xb&P*pH(Q', 'B,.i%oyEc%'),
 ('Bszsaz0Iuo', 'k9gbGeqVQp'),
 ('JOT:U4ayh@', 'N;|zJ3r1U0'),
 ('G/^_##fcPN', 'x!47n<n_@M'),
 ('LPF4AfaHKR', 'ilFuAD^xhq'),
 ('rSneU!3}bn', 'KfB$YBpp#='),
 ('cv+Nq9:a<P', 'oPx5Bq1z_~'),
 ('f*2@qiHh_1', 'xs+r,A:Ybh'),
 ('nuU8A_$i2M', 'l:S1L#&(=-'),
 ('fT!w8R#>dg', 'vV<w5Z&41M'),
 ('gG6SWfM>H0', 'l?;mPU|Vu$'),
 ('sM0GPt1HS1', 'g&y>f[SfCo'),
 ('dlU7VG|3Gd', 'mC$X9cRfF4'),
 ('cEO^y)Md[G', 'CJHNGvTT1-'),
 ('eN#^kPGv*L', 'c.@-5vbYSr'),
 ('lp@e##m.!+', 'Bvr#2W*V4O'),
 ('epvt3>HH?U', 'HY(==0nL/5'),
 ('E3u*2.<9#`', 'x9m098F78O'),
 ('q1Q3Do8S>g', 'QGDo{u)NuE'),
 ('yX:tmrd5;]', 'j7FyQaW,n{'),
 ('H*c[ML+`s=', 'QwwgN[<duR'),
 ('e_;dzXj8de', 'gb>Q&:;ekF'),
 ('iB-8Br~onq', 'dNo9L*#}F?'),
 ('zSc]-^U=0=', 'f^0aH]F%!V'),
 ('x2d4n4ADcP', 'kfniDM68Fr'),
 ('Gn;q2Y)Xe4', 'HG:Vbwri`^'),
 ('gRVZ]qJ#>O', 'QplodT,RlZ'),
 ('J%,fuysl*&', 'b<9P_L#s6?'),
 ('r(h9&#wc~B', 'L}~TYYHI[l'),
 ('_]DH+g9!$', 'Jt*Ggc<HyU'),
 ('B:x<p&Q=t)', 'vhs6OnHZaA'),
 ('z:*d{z(~V2', 'H1L?;^]mY]'),
 ('d}R:qHj1,7', 'IG)L^LIKi]'),
 ('L5M1*yG7eH', 'jcw8^HL&m5'),
 ('s|K&2S,UP|', 'P}xBc:eoH6'),
 ('t$y1C2R-Av', 'yu2IoRS.M)'),
 ('eHJ?)TAdTo', 'k]|`O*|sYC'),
 ('pQpX%(EVOH', 'HnPq%JW}F9'),
 ('qiv/4tOlf=', 'BZ#71-])!<'),
 ('M$bc0[jYf0', 'hzN$`?YJ.^'),
 ('jYz[ibrr9m', 'H5FPagvP>_'),
 ('SlOEXfq#|', 'FIQ,YV4(u'),
 ('d5m8%D6,;u', 'FE||8n;*pO'),
 ('o9{x<AyA]B', 's~{9dxCHY+'),
 ('He!e=h?_2V', 'BLz2@~|QXB'),
 ('QSq%~rFaP-', 'Q&)&?}53&@'),
 ('ck!6;xK$/^', 'bP[|CaNP86'),
 ('n{{o2K1:dw', 'Ba#m$J?4gW'),
 ('xqrJ^d[.(O', 'Mie3UMRyst'),
 ('vrn%j%6{nu', 'n^,sUM_!k_'),
 ('p#R$-mG/L', 'xAxtN`17x^'),
 ('oV/JG7fwZq', 'B35In/Q=Tg'),
 ('bD?R}i8_[c', 'GRj)gtiMbo'),
 ('Lol+XIvY21', 'l&Uv?yLL12'),
 ('Qlib4)q2Hk', 'bMX+]D]Ya>'),
 ('pwwZu{7f~(', 'E9Y{~}fJ|q'),
 ('qFuGdDx^Yv', 'wx)T{wK99M'),
 ('Cf2@;p<aL', 'vk=UoW^`zU'),
 ('t2&ri|[Un:', 'Ek~&z$tb-I'),
 ('dbP/Cj}sB+', 'rVJ^|c*{=!'),
 ('wa>{k!2cXc', 'Pz{%n/nX,I'),
 ('5JJ2]i)p4', 'uE!R:a{FS{'),
 ('s>f40rn,O]', 'f4q6u$5n-L'),
 ('ssbyA9}]QP', 'dl_kl*?R;X'),
 ('vKx<0Qa!aP', 'P!2gMb,SH>'),
 ('fkq7lhLkdH', 'wr@MO]j=pc')]

def replace_guids(mw, mapping):
    for guid_i, guid_f in mapping:
        # These should NOT be present.
        ids = mw.col.db.execute("SELECT id FROM notes WHERE guid = ?", guid_f)
        if not len(ids) == 0:
            print(f"GUID {guid_f} already exists as note id(s) {ids}!")
            print("You either already have the deck with the correct GUIDs or something's gone wrong.")
            print("Aborting GUID-replacement operation!")
            return 1
        # These should be present.
        ids = mw.col.db.execute("SELECT id FROM notes WHERE guid = ?", guid_i)
        if not len(ids) == 1:
            print(f"Warning: note with GUID {guid_i} does not exist!")
            # not aborting — the user might have simply deleted some notes
    for guid_i, guid_f in mapping:
        # Not doing everything in one go with `executemany` for readability.
        mw.col.db.executemany("UPDATE notes SET guid = ? WHERE guid = ?", [(guid_f, guid_i)])
    # We need to force a full sync!
    mw.col.db.execute("update col set scm=?", int(time.time() * 1000))
    print("GUID replacement was successful! "
          "If you use AnkiWeb, a full upload will be needed next time you sync!")

replace_guids(mw, guid_mapping)
Norwegian Bokmål
guid_mapping = \
[('e+/O]%*qfk', 'iR~,tG{Val'),
 ('h~5xz+=ke~', 'dYU=!{y0JI'),
 ('s9-GL*@AXD', 'o+)poCG*[u'),
 ('cPO|Cru8n<', 'rymWNfd[Q['),
 ('m*#%sE.`.;', 'PgW-Gd/F7?'),
 ('hNE9}>;Q&-', 'D_u6CIg+wo'),
 ('jN|NAUP*h}', 'emhqi6m<;X'),
 ('j|z@PMgdx,', 'K-DUUlt#`y'),
 ('n+t>2`:;P/', 'dSwjDNnc7['),
 ('ilGtw#=asM', 'fWbYL=>/W&'),
 ('mcc&0Kq^xE', 'L5j),}Ge5('),
 ('gz9${p}er*', 'l$1j[S4Z_w'),
 ('dY96`C-f(_', 'AY#z1NqLE<'),
 ('r>aI-$$|wT', 'po@@>#g44W'),
 ('k9E.p^<u$,', 'ru^aT_ML-F'),
 ('l$zM~ihPFE', 'eX=4L.MZ/)'),
 ('jTNoKo}Bu+', 'j4W[{Wd$i.'),
 ('mz[>>AxIr4', 'g3SU#SH>>e'),
 ('u4^lH.xem5', 'yLv#s7(0/U'),
 ('bk2ByZIeU+', 'n`P0w@?q1u'),
 ('twrhzJ[k:Z', 'fy^;okm_1k'),
 ('kS)hDm%w}R', 'EHD^CXLh4!'),
 ('AES],s:8=', 'd55<bwWcif'),
 ('k[)#L4.[v3', 'Fwsjx3/<>H'),
 ('k}A9]O:0xw', 'n{xEq+_:c{'),
 ('j7eEZkzsCZ', 'rQ)Q-EabYy'),
 ('s<_WLSB3I/', 'oLdeL6a~[X'),
 ('cYKvF#ptF7', 'b<&&OM3fYy'),
 ('m)WUtJS`H&', 'uo7@ZxIP[$'),
 ('l$2O|9w`F~', 'dmsIj2JJlB'),
 ('kZ52zV#[Iv', 'eYu}=wB+0H'),
 ('i2]v|D3@:j', 'u[#kd&*}Yc'),
 ('r5C646H*+*', 'QKm&4[Vr$t'),
 ('nIfRn<aY:N', 'l2LUY9/|t]'),
 ('5S(f7%O-$', 'Dh89q.%Zv<'),
 ('m?}%V6s8]*', 'C[hSE1x])}'),
 ('uRo^w#p5Be', 'j~OT/nTkAt'),
 ('o=,%hU&yX%', 'eX^dJ|[uA*'),
 ('lq`T^ZBF2Y', 't9&OjLNz]p'),
 ('f>c7x2E]Q6', 'dn}H9%A|!j'),
 ('q[S4`,F0D=', 'K/#FG8!}DG'),
 ('jCd]`-=k,:', 'zU[B!jrpgl'),
 ('vf)G?[_?Pf', 'wOOaycR~z&'),
 ('j9:K,~DQ2v', 'HbTQZU8t9?'),
 ('ui3>b-?a@m', 'M7m8p!;nP0'),
 ('qVi;t%/`F|', 'p%wZ4zSjCt'),
 ('g-]bb&[.E!', 'o|SPdBlcOk'),
 ('f21=-A~W;~', 'neb-=f&6r^'),
 ('sT5=H|@KU|', 'pnd}~gw/:?'),
 ('lU@C3<C8Wk', 'bMw[aotLc)'),
 ('jDA-V?/hVj', 'wPY8.I+[Xh'),
 ('h_9=mkZXAH', 'cJ%(LRs3)q'),
 ('mk1VltJl<]', 'MnfK7af3~4'),
 ('c(,2{yXI#E', '>1ErI|!*U'),
 ('kkbYQXw5b;', 'w`{+uGys`~'),
 ('ia8as9sCY|', 'vxq=QA:/`z'),
 ('j%*8gN)q>d', 'N(,;S#&N9e'),
 ('bd~Ght5tLR', 'DO-=AqS[Lk'),
 ('onMKID2d;D', 'L1&JVH|{R,'),
 ('q8fF$4,c6_', 'b#r[:tRj+!'),
 ('upiX0g1quR', 'G4K|pWoffU'),
 ('n:7&>YT5A=', 'A|BG)32=10'),
 ('j2IQ=f=w3@', 'C18`2)zTm('),
 ('EWXNc<g5)', 'k[{=KKFtb8'),
 ('gFOojQO(MH', 'E8sr_C_vb['),
 ('gePC:Xt_nW', 'x4(t9J8nNQ'),
 ('vNiD6A.v#s', 'p~,(pas|?P'),
 ('?n!)c/h=Q', 'e7w}$Wx7yb'),
 ('gYIoR`|AxW', 'bK<b=p-Thp'),
 ('j<egqG@)EL', 'G{5yk85S92'),
 ('t`cagaWApo', 'w9bE`pR=z#'),
 ('jN^Vc%9OQ5', 'or<mz7dcH6'),
 ('o3VS!KWb/@', 'yRZn!>(_#b'),
 ('iR;U<J:CJJ', 'k+4CLKx35g'),
 ('i^J8&$(1]|', 'q%;R^5+|lP'),
 ('pS>DrFhd%u', 'Q]0R7JuJ6g'),
 ('t|h3|;E4g{', 'NSVN;H$s)m'),
 ('p.yv>BQ470', 'P*4KZ6]?rf'),
 ('f#4-L[mp5*', 'M}OReg^Eem'),
 ('oNpApS<AoJ', 'pRN@`OrOhv'),
 ('nsS59c`VL,', 'cIOEmhU5Nt'),
 ('m{noqE29%I', 'oK)C745Je~'),
 ('sSW/?WMy17', 'B5/<2!_D3h'),
 ('d-q4J~CNW_', 'n,VX3H7IE:'),
 ('jKO,9y0M;#', 'P>,2#H.@>i'),
 ('skOM(?n$GG', 'ELkg0G|C?W'),
 ('mi+kf0LTW.', 'b[oi-M:re$'),
 ('vgdj#X?8dB', 'qD4Ir3_WvI'),
 ('mkgcU7[bA%', 'AoE=M5R+:x'),
 ('jcu!gLw/&r', 'vlABC@3)lD'),
 ('sB7rZQsR<l', 'lalXr{5>N~'),
 ('u|I}oElaH)', 'i$+!}pvHZ('),
 ('j)i)pB*HJ,', 'l[H_#9Xj.5'),
 ('t-0>F]bu>P', 'x1I5QDSZdm'),
 ('hrI_uiW>E]', 'p]3f+<QuK['),
 ('uc61ToT%gt', 'z,yR__YX6x'),
 ('e.t$Vi5,>f', 'i3+,TcHF,N'),
 ('k/u1:B%DJH', 'G$NEO(W.(v'),
 ('e5P*D#I{m{', 'ml7O4E=o<>'),
 ('p:SPZ:e/*[', 'dryK>>pO;}'),
 ('t+v9b--,qs', 's^sd#Qsi,{'),
 ('fV`&p81%d(', 'h<BBS_PmX6'),
 ('gsS{jR,]|Q', 'p-Q-4>W#GK'),
 ('cAlyc~G.y%', 'kQssZ~b%|u'),
 ('fxAN),FAc$', 'vwR_K?gn6&'),
 ('r<N4LAAnnB', 'yV;KtlAuQ?'),
 ('e?Xq9gy=@[', 'J$+%7z?.y*'),
 ('m5j,b/y<EE', 'm=n=4WFqE3'),
 ('stRa/S(0$F', 'fFI@z-#q(E'),
 ('l+>Ki!j#v+', 'fLs!R5^k7e'),
 ('kQ:NIhJy~E', 'I%N^RyEm:/'),
 ('sY>@9w~i^p', 'ILj+.~~7_X'),
 ('mJH4kwPF.-', 'ci5EzZT?lp'),
 ('bW)ch:vs1P', 'tt:.S?c/]j'),
 ('sx|l+io`B@', 'L&YSIviD+L'),
 ('q2#Yv[O0:|', 'Kx5=:O[u*^'),
 ('lpbD0St&OU', 'f[U(U6e5OW'),
 ('mbz=7n[0v9', 'I[^T<Hq,U}'),
 ('ijP>aJBT!9', 'dV#R#|}uZH'),
 ('jI9P-f6r3M', 'B,]AC/PAz1'),
 ('h?a*UKfT_M', 'BqW}>:ZSdW'),
 ('r6BV%|..*5', 'J4zOBxF6Lw'),
 ('i)]+09JUR&', 'oM$V=]IFjW'),
 ('l}[BG9.nQS', 'bw=b(wfRVC'),
 ('mtd;>7T|g>', 'ya?+!BD<rP'),
 ('iW>m(L/~c=', 'jKTnJ!T6lc'),
 ('pkj3RPBUrF', 'Cw^_3<[mGM'),
 ('euW0jm=wfR', 'H9A(m7f1)9'),
 ('l*j*EE:!Y?', 'n%Pw}}<GAT'),
 ('d3c`&/1Y^D', 'Rb7MD6j!0|'),
 ('hXNTVF<:SH', 'fxvMT{|_3M'),
 ('mk20`,N=`=', 'Re+G*@uJCl'),
 ('eALZe^HCHq', 'vy^=B$6h^Y'),
 ('l3Ly8PBxt(', 'm<$SD/W~so'),
 ('g<[f89~U)A', 'Q7W^uZrI_<'),
 ('iIS#Nw]tr]', 'l.HYqQ_/Rf'),
 ('m{oM,jr>C#', 'zJ%%Hz#s9&'),
 ('ln^3p)j3b.', 'MWm=94b?vO'),
 ('cL?8!xP#Wj', 'm>7j+&89xI'),
 ('e=.VHQ9E+M', 'Ng%@)K)[c{'),
 ('m[96fa+HDS', 'dctSh&<iaU'),
 ('g9v~y/;=z(', 'iYAK36Cua{'),
 ('g~%pF`(x{u', 'PQ6$bI??y6'),
 ('hE5j*e,Q?[', 'Bq5H0+i]XW'),
 ('fRSM{K+;[w', 'z7wQ8s_Si['),
 ('o~}KVA:VbI', 'qqJpIWfqFB'),
 ('u-`cspdp)D', 'Ce096-Qwie'),
 ('e42BpV,P}C', 'D+L%7xa1|K'),
 ('pD<Pd$Ag@J', 'Dn/EH3[r{9'),
 ('mbGXc0y3Pe', 'g?)zvSS|6#'),
 ('gB|K:+r?1V', 'mh=!E~}0-Q'),
 ('lhWI;$JC9(', 'BGwA6-2[o8'),
 ('k0{O[6l]bH', 'xL^i{$Dd?}'),
 ('r>g<|,FWi%', 'O86#Kfnj]4'),
 ('n&>e`2FO/S', 'svzWf$x!8;'),
 ('khB~(m^@Z5', 'M,j]%f~qLY'),
 ('spKoFRM4if', 'QyNb5MKVnQ'),
 ('q8][)Ri}=q', 'hqnhi=ysa:'),
 ('hoHandbYAy', 'B4sHDjU:Pl'),
 ('lmRujD!(A7', 'GDX20ZK?Xx'),
 ('q:XyGf#>Wg', 'do3`,9Ol!H'),
 ('s#:aIK$9^x', 'Gs*[8}bP33'),
 ('jBd@A?>g|}', 'cnUAu<NuSS'),
 ('koI(}OyJ:@', 'zH)c,C{V#j'),
 ('e?gIaPc$Ox', 'yC]*G[N>gv'),
 ('o#&RMA_REo', 'u!WO.fcw8<'),
 ('s4E?ZF[E<>', 'b|Gr(/*-kx'),
 ('k1]FH+s8j@', 'k4o56u=}jw'),
 ('dWA49p}F{k', 'sk!p1OhX-1'),
 ('K*b}<I3(~', 'ipKjLUOh4Q'),
 ('e?h=Xhs+K&', 'P}MIWKA{Xz'),
 ('b@M[XTc?}5', 'k,Tmj~Pw.i'),
 ('sxOMs+bE8@', 'cep8BP*Eja'),
 ('t3aZXtpNyi', 'C00t,nt-~8'),
 ('rPekx@n9:L', 'ueNqs:h=(z'),
 ('lAxH.CfJB@', 'DNXY<9~9OH'),
 ('hZ/V/D&rO`', 'l!=SCi?>l?'),
 ('h&`>n98~V1', 'G5wA};7d`m'),
 ('t50y/[AEhF', 'la.c2n+A7e'),
 ('gBCR?!O*;E', 'sZ</&q1)tK'),
 ('tTnCoO/*tk', 'd.lZ`^MKjl'),
 ('W5?6yQZD2', 'u#*HO9?|?]'),
 ('e{e8vi@^PY', 'c^iV73&0V('),
 ('tcneuK7v%`', 'gBJKTCx_/6'),
 ('uH*Q(mcRt5', 'w0Je-<6ym_'),
 ('k$1_yaF?9#', 'o[GR>HoXjp'),
 ('dUZ^=SE5BG', 'NGD}XK^mX}'),
 ('t_h*fbN#:(', 'y[:PO%mkg('),
 ('q=w[<m2Bk&', 'z?M@Me}UrK'),
 ('vpOTK6tMr@', 'y8o-zQb(8j'),
 ('m2F|cUkKhv', 'B{LJC|+^D.'),
 ('k}4/oj#$~s', 'efA[V?^$DO'),
 ('va/ky=f5pK', 'CTw3Yd}Sx4'),
 ('c,5(mUGzYT', 'G#LLy[.iS2'),
 ('gp[h@]y13l', 'Cko(o5/eN6'),
 ('gx:;za!?C9', 'K>Dfm{ad5K'),
 ('r]*Ioa%$bK', 't@-V_iMKbK'),
 (')Y}Qy.3GK', 'G8%+Eg:Na<'),
 ('lH^2D]w;[H', 'qpx1j<_-l5'),
 ('qx%>fB$d+$', 'z|A6R3H)3B'),
 ('libliptkB4', 'J,3]AhU%0c'),
 ('jrM28*HbyG', 'jWy+dd+,ta'),
 ('r?E$4f-d0/', 'c}m%T+N!Gz'),
 ('leh^fmrt*#', 'xzc~#RzbI@'),
 ('O~pXkAbd3', 'FCE{oF+@St'),
 ('f*LO~>!0PN', 'I{.D^{85=#'),
 ('q[}7hk(+=e', 'uu)_`Q0++C'),
 ('q7do-wLx%E', 'c$J,,={OZd'),
 ('vwc3}.=Z#&', 'qhlz<GNM_8'),
 ('e<X;[vACXC', 'emq?3*tP9W'),
 ('j=L,YBvsBk', 'f2L&U-(v+/'),
 ('oa87&PB&Bm', 'Gc>|URJcg|'),
 ('b^Try&me1A', 'Dd.ED,HOi&'),
 ('o``:?0>/yz', 'J3)Ty17a?Q'),
 ('pz(G*<F93/', 'xWD+oGZ~vY'),
 ('cV4idO^r8W', 'G+c6-zDX5@'),
 ('m*PYE=#wr^', 'g;I=8p!(]b'),
 ('sXzvT.g31p', 'b_#ie@t!%Q'),
 ('mq)8`hi{hb', 'AGUPi8s%aF'),
 ('h}lnSN_f$_', 'CwGQYVm2&`'),
 ('eT<gzg?q,r', 'Hh[ZfFwkH,'),
 ('vE[T$`n9T)', 'PFcyiTRKq='),
 ('tj&bK}%P!F', 'Ql.8m|u}H!'),
 ('kX]hN=_.c-', 'k}E2,sF7^}'),
 ('r/B|ra%L,.', 'FGrbm!9:Cd'),
 ('b[(2`4t&?J', 'FMj}H;knqq'),
 ('qvITjNxkLN', 'd9@W=6sKJ-'),
 ('jX=#G8wu#(', 'F)s+:]$(EA'),
 ('l&#7I)Ah/E', 'zv#Fyq9;?1'),
 ('de=9c:,@j9', 'AJ/nnIR/[0'),
 ('kE!iKHLN_g', 'rB6=j&@4e&'),
 ('d``B*6:eCx', 'uL7#}Qw}D9'),
 ('p]t8:Tka7q', 'OawZ7gbEjw'),
 ('niJUFZF$Y:', 'D=!L6rg_pr'),
 ('p}Qa|!7PpR', 'qOB6Gi<G='),
 ('uv1fGXHN@)', 'l(DiRV,GPj'),
 ('sRw-ik:I$v', 'NH:[}beT-z'),
 ('bnEK#)[;qT', 'r8MKfCfg2E'),
 ('ey:Q|*t!Lg', 'b2PYE2BvAR'),
 ('c^,~EC6Pb2', 'nJdfBSsZq='),
 ('tMMtBUpb$&', 'ox5y>?yriv'),
 ('jKIDq|}J&c', 'P%!7{$,zCG'),
 ('dC:e5G4J/p', 't;/rK0Elxw'),
 ('u;|vR#mVMW', 's9/>8RT~Sr'),
 ('gDsLPj(9S#', 'raobJ?,rJ['),
 ('xb&P*pH(Q', 'OB:w%H&-Al'),
 ('Bszsaz0Iuo', 'IozRi;br@?'),
 ('JOT:U4ayh@', 'BidEZ1j?sA'),
 ('G/^_##fcPN', 'Q0Hf<s|zmU'),
 ('LPF4AfaHKR', 'eyVn,2@529'),
 ('rSneU!3}bn', 's>VRzs_ra_'),
 ('cv+Nq9:a<P', 'nK_Xe;yw*A'),
 ('f*2@qiHh_1', 'Fe.owPPLXj'),
 ('nuU8A_$i2M', 'v#9&oC&^gU'),
 ('fT!w8R#>dg', 'zv;#VKpiyA'),
 ('gG6SWfM>H0', 'msi&z%jb~L'),
 ('sM0GPt1HS1', 'wt&@Z9Ke*y'),
 ('dlU7VG|3Gd', 'i?3Cq]Y=6@'),
 ('cEO^y)Md[G', 'IHD#^9>(oF'),
 ('eN#^kPGv*L', 'Bc^_k/M|{V'),
 ('lp@e##m.!+', 'ePFlYQsRPh'),
 ('epvt3>HH?U', 'lQbPlI/gwj'),
 ('E3u*2.<9#`', 'c*=o}p_W/X'),
 ('q1Q3Do8S>g', 'b~m$wS)FZZ'),
 ('yX:tmrd5;]', 'x)A]S|GN_G'),
 ('H*c[ML+`s=', 'Aal{|%850}'),
 ('e_;dzXj8de', 'uge7s($h<X'),
 ('iB-8Br~onq', 'H)ax6=5vNG'),
 ('zSc]-^U=0=', 'td+]W)8y3S'),
 ('x2d4n4ADcP', 'B)~SL?|&BX'),
 ('Gn;q2Y)Xe4', 'qoQ,f:/adY'),
 ('gRVZ]qJ#>O', 'GkU[4wRj6;'),
 ('J%,fuysl*&', 'JffL}$<;]['),
 ('r(h9&#wc~B', 'nnM01DlaVX'),
 ('_]DH+g9!$', 'jH=<{Pcl+D'),
 ('B:x<p&Q=t)', 'J|aJY+vge3'),
 ('z:*d{z(~V2', 'vJUDdBqkkp'),
 ('d}R:qHj1,7', 'v/?czq&41s'),
 ('L5M1*yG7eH', 'F/|qA9Xb`f'),
 ('s|K&2S,UP|', 'f)MSa#ZHdL'),
 ('t$y1C2R-Av', 'r%;LR/o1J0'),
 ('eHJ?)TAdTo', 'w[pneW3d#g'),
 ('pQpX%(EVOH', 'lzpJ#A4I81'),
 ('qiv/4tOlf=', 'pAb@53Gk?Y'),
 ('M$bc0[jYf0', 'ufv>~I-Znw'),
 ('jYz[ibrr9m', 'u1C2Jtm-p^'),
 ('SlOEXfq#|', 'F[7BR94HX^'),
 ('d5m8%D6,;u', 'c.$2jl~n2_'),
 ('o9{x<AyA]B', 'NbC3xEVGZ}'),
 ('He!e=h?_2V', 'Iu#Jjq4.-;'),
 ('QSq%~rFaP-', 'yLhZzEnGK&'),
 ('ck!6;xK$/^', 'E2:8?ZCW`='),
 ('n{{o2K1:dw', 'zBa]c`I@&q'),
 ('xqrJ^d[.(O', 'cE|I9C6tDG'),
 ('vrn%j%6{nu', 't1~2K{sjcs'),
 ('p#R$-mG/L', 'C+sW!v-+p]'),
 ('oV/JG7fwZq', 'x-wPy%*F%3'),
 ('bD?R}i8_[c', 'J[Z3=;n.`R'),
 ('Lol+XIvY21', 'OGgh6NLJ_1'),
 ('Qlib4)q2Hk', 'Cay~/DU6[Y'),
 ('pwwZu{7f~(', 'q>RaVbPB3|'),
 ('qFuGdDx^Yv', 'A.lC&CUT?S'),
 ('Cf2@;p<aL', 'Q)zp&X@y?g'),
 ('t2&ri|[Un:', 'Hg&j8uJWA$'),
 ('dbP/Cj}sB+', 'vqay>V@}^.'),
 ('wa>{k!2cXc', 'kP@udSHU#/'),
 ('5JJ2]i)p4', 'E([1*B$wFU'),
 ('s>f40rn,O]', 'HtFq_[S@sg'),
 ('ssbyA9}]QP', 'e&L!j2[3Fp'),
 ('vKx<0Qa!aP', 'E*M$FU#Mf5'),
 ('fkq7lhLkdH', 'GOD93nYZ33')]

def replace_guids(mw, mapping):
    for guid_i, guid_f in mapping:
        # These should NOT be present.
        ids = mw.col.db.execute("SELECT id FROM notes WHERE guid = ?", guid_f)
        if not len(ids) == 0:
            print(f"GUID {guid_f} already exists as note id(s) {ids}!")
            print("You either already have the deck with the correct GUIDs or something's gone wrong.")
            print("Aborting GUID-replacement operation!")
            return 1
        # These should be present.
        ids = mw.col.db.execute("SELECT id FROM notes WHERE guid = ?", guid_i)
        if not len(ids) == 1:
            print(f"Warning: note with GUID {guid_i} does not exist!")
            # not aborting — the user might have simply deleted some notes
    for guid_i, guid_f in mapping:
        # Not doing everything in one go with `executemany` for readability.
        mw.col.db.executemany("UPDATE notes SET guid = ? WHERE guid = ?", [(guid_f, guid_i)])
    # We need to force a full sync!
    mw.col.db.execute("update col set scm=?", int(time.time() * 1000))
    print("GUID replacement was successful! "
          "If you use AnkiWeb, a full upload will be needed next time you sync!")

replace_guids(mw, guid_mapping)
Dutch
guid_mapping = \
[('e+/O]%*qfk', 'K`AixN?4fO'),
 ('h~5xz+=ke~', 'yM2(NER.TK'),
 ('s9-GL*@AXD', 'Ca99PA=59O'),
 ('cPO|Cru8n<', 'oTXQ,6j^=,'),
 ('m*#%sE.`.;', 'z&9OM<varw'),
 ('hNE9}>;Q&-', 'plhRl:Tz/O'),
 ('jN|NAUP*h}', 'F5Vc$<OC20'),
 ('j|z@PMgdx,', 'HM%kKM-7l.'),
 ('n+t>2`:;P/', 'O8/WkWCPZP'),
 ('ilGtw#=asM', 'e(k0BGyL4h'),
 ('mcc&0Kq^xE', 'z+,{cjN9md'),
 ('gz9${p}er*', 'Hp1dL9r:*P'),
 ('dY96`C-f(_', 'CY;OB`EDX7'),
 ('r>aI-$$|wT', 'p((H!2~3O7'),
 ('k9E.p^<u$,', 'oW=/gF6ZOL'),
 ('l$zM~ihPFE', 'Cx2EH*D>}Z'),
 ('jTNoKo}Bu+', 'LW*h#/!%&m'),
 ('mz[>>AxIr4', 'cU)|/vPi6j'),
 ('u4^lH.xem5', 'M5*2c!ENJ`'),
 ('bk2ByZIeU+', 'ed!}~imM[!'),
 ('twrhzJ[k:Z', 'pV`:gi7=r2'),
 ('kS)hDm%w}R', 'd!lJ)zdUTJ'),
 ('AES],s:8=', 'gGm>+9`k&'),
 ('k[)#L4.[v3', 'dG[-P1]Ly-'),
 ('k}A9]O:0xw', 'rd_(OgnX-P'),
 ('j7eEZkzsCZ', 'trUg0y&dqG'),
 ('s<_WLSB3I/', 'p/C10M3xxF'),
 ('cYKvF#ptF7', 'COfUkybfx]'),
 ('m)WUtJS`H&', 'lQZ,yi}j,|'),
 ('l$2O|9w`F~', 'c7Zh2xn$t_'),
 ('kZ52zV#[Iv', 'e=OVM]`Q{U'),
 ('i2]v|D3@:j', 'byp9L/7/,y'),
 ('r5C646H*+*', 'HL//^#,,5X'),
 ('nIfRn<aY:N', 'pfZC2}Oawc'),
 ('5S(f7%O-$', 's!x^ui`nhG'),
 ('m?}%V6s8]*', 'kYE~9)8V#3'),
 ('uRo^w#p5Be', 'p#WecI-Q`c'),
 ('o=,%hU&yX%', 'ca6|9M[|.3'),
 ('lq`T^ZBF2Y', 'K0`3{Z#>H&'),
 ('f>c7x2E]Q6', 'QYr^22xCo3'),
 ('q[S4`,F0D=', 'MjYBzKMsYj'),
 ('jCd]`-=k,:', 'iOD+[;vOc1'),
 ('vf)G?[_?Pf', 'i`?s5yONk<'),
 ('j9:K,~DQ2v', 'NIKs(pApAY'),
 ('ui3>b-?a@m', 'OQK^$9xbg,'),
 ('qVi;t%/`F|', 'u>]sc0f?(|'),
 ('g-]bb&[.E!', 'fQMbKoTu%<'),
 ('f21=-A~W;~', 'P+Jx`aqYih'),
 ('sT5=H|@KU|', 'b.r+%C+uUG'),
 ('lU@C3<C8Wk', 'KRSC>TBXX('),
 ('jDA-V?/hVj', 'Bo5dwc%z#M'),
 ('h_9=mkZXAH', 'C_6GTKD=fH'),
 ('mk1VltJl<]', 'msv?k9JTsv'),
 ('c(,2{yXI#E', 's3s^.)4kHT'),
 ('kkbYQXw5b;', 'e90l[|lH!I'),
 ('ia8as9sCY|', 'K[L!R^!9Z,'),
 ('j%*8gN)q>d', 'sM=)Xv_Xa-'),
 ('bd~Ght5tLR', 'v&-O]]=OEZ'),
 ('onMKID2d;D', 'sGn#POf<9-'),
 ('q8fF$4,c6_', 'Pc50gy=WZl'),
 ('upiX0g1quR', 'Mmj=@>?Sx{'),
 ('n:7&>YT5A=', 'q-&Hq~16&{'),
 ('j2IQ=f=w3@', 'e8|;;S>xQ.'),
 ('EWXNc<g5)', 'A+}@K7X|kA'),
 ('gFOojQO(MH', 'zumu&z#g.>'),
 ('gePC:Xt_nW', 'sp;kVFWNG~'),
 ('vNiD6A.v#s', 'Bapr]RwJ#?'),
 ('?n!)c/h=Q', 'IuT|OM*Nw~'),
 ('gYIoR`|AxW', 'q>9E7+;4K.'),
 ('j<egqG@)EL', 'BP[&G+`3;|'),
 ('t`cagaWApo', 'EjFv^:qmnZ'),
 ('jN^Vc%9OQ5', 'f($keyMpus'),
 ('o3VS!KWb/@', 'xLWoq0vCna'),
 ('iR;U<J:CJJ', 'i%DV(Dbx=K'),
 ('i^J8&$(1]|', 'Neqxx;S4OH'),
 ('pS>DrFhd%u', 'GmH*JA[[k`'),
 ('t|h3|;E4g{', 's5?gh*QP;:'),
 ('p.yv>BQ470', 'eCQL}h5w8Y'),
 ('f#4-L[mp5*', 'i$q|D&dUr3'),
 ('oNpApS<AoJ', 'tZgE~cq(oF'),
 ('nsS59c`VL,', 'qL:(ZnK[{b'),
 ('m{noqE29%I', 'mB&*r_Fpq%'),
 ('sSW/?WMy17', 'q4wi1(V&xq'),
 ('d-q4J~CNW_', 'P=:bxc_JC&'),
 ('jKO,9y0M;#', 'tUW+`.SQo9'),
 ('skOM(?n$GG', 'AX<o!y5NLm'),
 ('mi+kf0LTW.', 'p$AAnTq6oJ'),
 ('vgdj#X?8dB', 'o0AQQ^2)G6'),
 ('mkgcU7[bA%', 't>J`KZclA6'),
 ('jcu!gLw/&r', 'ds<d0w<UR-'),
 ('sB7rZQsR<l', 'c1(m|]%(&c'),
 ('u|I}oElaH)', 'N-%-M=n!dh'),
 ('j)i)pB*HJ,', 'n8ieJA{+lP'),
 ('t-0>F]bu>P', 'F&@Rc;dl]z'),
 ('hrI_uiW>E]', 'Q+z>Go{V83'),
 ('uc61ToT%gt', 'J[n$C~*-<~'),
 ('e.t$Vi5,>f', '.9`Zb?|4]'),
 ('k/u1:B%DJH', 'sFwd3<b,Q*'),
 ('e5P*D#I{m{', 'j!9GChs@cQ'),
 ('p:SPZ:e/*[', 'B{FDr5`ABh'),
 ('t+v9b--,qs', 'cXB4#4>X;-'),
 ('fV`&p81%d(', 'b&EqNhY[/p'),
 ('gsS{jR,]|Q', 'G;pW`r5kYU'),
 ('cAlyc~G.y%', 'QcXm!E@Yw1'),
 ('fxAN),FAc$', 'Ef]sAhH-1='),
 ('r<N4LAAnnB', 'E;nd7c[w(:'),
 ('e?Xq9gy=@[', 'd.;lCBC_WK'),
 ('m5j,b/y<EE', 'Kg*_Uu;=~F'),
 ('stRa/S(0$F', 'D/^OcViV>B'),
 ('l+>Ki!j#v+', 'dm/G5**HY~'),
 ('kQ:NIhJy~E', 'j/kD7I4;Hg'),
 ('sY>@9w~i^p', 'E/MT}kv2tI'),
 ('mJH4kwPF.-', 'q37^cz*P9W'),
 ('bW)ch:vs1P', 'ioJ7(frmya'),
 ('sx|l+io`B@', 'd8zQ]l>xmo'),
 ('q2#Yv[O0:|', 'eswlz&5_-]'),
 ('lpbD0St&OU', 'L&Wh0Oh!9*'),
 ('mbz=7n[0v9', 'M75UjrE!_q'),
 ('ijP>aJBT!9', 'vNlrE-EWLf'),
 ('jI9P-f6r3M', 'c(O@!xlX|c'),
 ('h?a*UKfT_M', 'rIn3klxCO3'),
 ('r6BV%|..*5', 'hs$=I;b%H{'),
 ('i)]+09JUR&', 'rBXL[4*?g5'),
 ('l}[BG9.nQS', 'm$4os@Y#(Y'),
 ('mtd;>7T|g>', 'l::->dQxMA'),
 ('iW>m(L/~c=', 'l57t^$S&*u'),
 ('pkj3RPBUrF', 'Oy&*?<z%kE'),
 ('euW0jm=wfR', 'g:S=I8r:O>'),
 ('l*j*EE:!Y?', 's$RMwIQGZb'),
 ('d3c`&/1Y^D', 'Q+8JVQabLR'),
 ('hXNTVF<:SH', 'QL%7i$x/c,'),
 ('mk20`,N=`=', 'Evr|0ju(D2'),
 ('eALZe^HCHq', 'F@t-f&]i?`'),
 ('l3Ly8PBxt(', 'rqH=>+|p}D'),
 ('g<[f89~U)A', 'E-hC9K}m$~'),
 ('iIS#Nw]tr]', 'epu:F7KRn!'),
 ('m{oM,jr>C#', 'N<D}v:QnwJ'),
 ('ln^3p)j3b.', 'jmR])+zhJo'),
 ('cL?8!xP#Wj', 'qS%*AW?D,f'),
 ('e=.VHQ9E+M', 'QPl3$nhmkb'),
 ('m[96fa+HDS', 'zE7(j<-d3N'),
 ('g9v~y/;=z(', 'p?N:RJ`9Qb'),
 ('g~%pF`(x{u', 'm@%Rs{o2LO'),
 ('hE5j*e,Q?[', 'O|]ivh~%v{'),
 ('fRSM{K+;[w', 'bq]dHo&Tn~'),
 ('o~}KVA:VbI', 'J)9J,MA_jm'),
 ('u-`cspdp)D', 'Iva{=NlZof'),
 ('e42BpV,P}C', 'MXc[U*Dc|y'),
 ('pD<Pd$Ag@J', 'xCFE#ual.E'),
 ('mbGXc0y3Pe', 'O.[B3&pjNc'),
 ('gB|K:+r?1V', 'w_*e?Ms1]_'),
 ('lhWI;$JC9(', 'kQ8x(01<}'),
 ('k0{O[6l]bH', 'Owoj&4yEcQ'),
 ('r>g<|,FWi%', 'A7d`$VleNv'),
 ('n&>e`2FO/S', 'sUW(K@)rpu'),
 ('khB~(m^@Z5', 'K1#2~5/6~Z'),
 ('spKoFRM4if', 'L#b;#eu1UR'),
 ('q8][)Ri}=q', 'BHe5zlq%zC'),
 ('hoHandbYAy', 'Ca[)+1M+q?'),
 ('lmRujD!(A7', 'CTD4|lJ}]5'),
 ('q:XyGf#>Wg', 'oA1,v5>^){'),
 ('s#:aIK$9^x', 'A$m)oTJ1BW'),
 ('jBd@A?>g|}', 'jxR[;SimkU'),
 ('koI(}OyJ:@', 'lR`ZpmCTOP'),
 ('e?gIaPc$Ox', 'p/fH$J091^'),
 ('o#&RMA_REo', 'OwHb{Mz|$h'),
 ('s4E?ZF[E<>', 'h<Q}<=6jye'),
 ('k1]FH+s8j@', 'r@_hV$i3&g'),
 ('dWA49p}F{k', 'vRx60WZhA6'),
 ('K*b}<I3(~', 'Q_m!=Xe)uk'),
 ('e?h=Xhs+K&', 'vp8J2mcIv`'),
 ('b@M[XTc?}5', 'K[7:%jDicU'),
 ('sxOMs+bE8@', 'qj/S4:J~Wh'),
 ('t3aZXtpNyi', 'c+d=6X;DR:'),
 ('rPekx@n9:L', 'xm[hZ@]0D2'),
 ('lAxH.CfJB@', 'cl`b5<!_&X'),
 ('hZ/V/D&rO`', 'z@fLLI>[@B'),
 ('h&`>n98~V1', 'Ob.MR2u/-&'),
 ('t50y/[AEhF', 'oO/>jPN^a5'),
 ('gBCR?!O*;E', 'JM7]2EJ[qX'),
 ('tTnCoO/*tk', 'jpDvwSb-OL'),
 ('W5?6yQZD2', 'J%7U=$j(Cr'),
 ('e{e8vi@^PY', 'q;6Wv3u)tx'),
 ('tcneuK7v%`', 'D@,Q^H)}Ln'),
 ('uH*Q(mcRt5', 'ebcMj4pw`P'),
 ('k$1_yaF?9#', 'lWXANkm_ks'),
 ('dUZ^=SE5BG', 'f.SoIgVf$q'),
 ('t_h*fbN#:(', 'sHKG^]G1Hi'),
 ('q=w[<m2Bk&', 'xPbky$#R*1'),
 ('vpOTK6tMr@', 'gw%[JT~eOZ'),
 ('m2F|cUkKhv', 'o@zxjV_qcp'),
 ('k}4/oj#$~s', 'K~OD+`QJa('),
 ('va/ky=f5pK', 'nm*l%S8r+{'),
 ('c,5(mUGzYT', 'o^IIsTJR4['),
 ('gp[h@]y13l', 'uc9G:E._YR'),
 ('gx:;za!?C9', '/zj4yGq-~'),
 ('r]*Ioa%$bK', 'zlk#[1bx]e'),
 (')Y}Qy.3GK', 'tBCiVBcuG_'),
 ('lH^2D]w;[H', 'lI<3M8p[+)'),
 ('qx%>fB$d+$', 'n58X<QI]0p'),
 ('libliptkB4', 'rs3Uv}D,)h'),
 ('jrM28*HbyG', 'jcwmr?mk}z'),
 ('r?E$4f-d0/', 'Abp+=0%|oz'),
 ('leh^fmrt*#', 'B2:MgtMw1@'),
 ('O~pXkAbd3', 'llB|P7o^Tq'),
 ('f*LO~>!0PN', 'K7t:ah)Nlf'),
 ('q[}7hk(+=e', 'n1HR1,WDIm'),
 ('q7do-wLx%E', 'cx%FD8~SUL'),
 ('vwc3}.=Z#&', 'M=3y(}U;7v'),
 ('e<X;[vACXC', 'rMX~]}XH:Z'),
 ('j=L,YBvsBk', 'tTWNp2kfJh'),
 ('oa87&PB&Bm', 'bPqp-AGH3Y'),
 ('b^Try&me1A', 'iEf6;Pr<M!'),
 ('o``:?0>/yz', 'AfMgn:9E6@'),
 ('pz(G*<F93/', 'y;=#m2VTao'),
 ('cV4idO^r8W', 'LB())=5`]S'),
 ('m*PYE=#wr^', 'J0UNSJ4UR.'),
 ('sXzvT.g31p', 'Nvp;D=X.u{'),
 ('mq)8`hi{hb', 'p{:,t++CFI'),
 ('h}lnSN_f$_', 'CpG.*qzHU5'),
 ('eT<gzg?q,r', 'fO#rmj#,Uh'),
 ('vE[T$`n9T)', 'r=<RFKhs~w'),
 ('tj&bK}%P!F', 'bit-NvK^B3'),
 ('kX]hN=_.c-', 'I>,%[aL/r)'),
 ('r/B|ra%L,.', 'q,5sUDZJ@|'),
 ('b[(2`4t&?J', 'fN1A,qu<xJ'),
 ('qvITjNxkLN', 'A16VT}*wpu'),
 ('jX=#G8wu#(', 'Ip12e4sGC?'),
 ('l&#7I)Ah/E', 'mxqXkoW;I]'),
 ('de=9c:,@j9', 'BND}O4g5Z('),
 ('kE!iKHLN_g', 'p~cba36}ll'),
 ('d``B*6:eCx', 'kZ;onU6NiN'),
 ('p]t8:Tka7q', 'oI5~{W$B0+'),
 ('niJUFZF$Y:', 'G.,g9N->(r'),
 ('p}Qa|!7PpR', 'fITQ3o(eNJ'),
 ('uv1fGXHN@)', 'vu]t,+fglW'),
 ('sRw-ik:I$v', 'MZ+&Gti2z$'),
 ('bnEK#)[;qT', 'Cr+mEZlgA:'),
 ('ey:Q|*t!Lg', 'AYOdHe0+qw'),
 ('c^,~EC6Pb2', 'J^vx<Yy&b%'),
 ('tMMtBUpb$&', 'Qm?>e]Q]ag'),
 ('jKIDq|}J&c', 'CH0T!),h9{'),
 ('dC:e5G4J/p', 'r+ehJ?q]D.'),
 ('u;|vR#mVMW', 'F[Xrq2xy>E'),
 ('gDsLPj(9S#', 'A1z!_C=d(c'),
 ('xb&P*pH(Q', 'HedPV<oAW~'),
 ('Bszsaz0Iuo', 'FlmNG3Av;e'),
 ('JOT:U4ayh@', 'zy#+XVV9S`'),
 ('G/^_##fcPN', 'DjNpq@BAMv'),
 ('LPF4AfaHKR', 'jVChM/v;]D'),
 ('rSneU!3}bn', 'u@^{[]68&M'),
 ('cv+Nq9:a<P', 'q,Yx(B^2)]'),
 ('f*2@qiHh_1', 'o2AxTxOe+;'),
 ('nuU8A_$i2M', 'e1k,rPrJXi'),
 ('fT!w8R#>dg', 'fezBXMIU#+'),
 ('gG6SWfM>H0', 'ygzZMO52<5'),
 ('sM0GPt1HS1', 'RiU6/6cNcj'),
 ('dlU7VG|3Gd', 'EV{1>IbA3.'),
 ('cEO^y)Md[G', 'Ok!(($u.|p'),
 ('eN#^kPGv*L', 'suwt).}j(N'),
 ('lp@e##m.!+', 'LoxeR.`jw@'),
 ('epvt3>HH?U', 'p}2F6mZ.QA'),
 ('E3u*2.<9#`', 'bEhl$M2clS'),
 ('q1Q3Do8S>g', 'mUci[@*L<c'),
 ('yX:tmrd5;]', 'CQTeWe?;Y/'),
 ('H*c[ML+`s=', 'Ih-lfoAUWi'),
 ('e_;dzXj8de', 'txn5MPFzv#'),
 ('iB-8Br~onq', '*/b5m[q8j'),
 ('zSc]-^U=0=', 'eY!@E#<EI8'),
 ('x2d4n4ADcP', 'cH2i]a9RGb'),
 ('Gn;q2Y)Xe4', 'McX+ixO5W@'),
 ('gRVZ]qJ#>O', 'I+N4^}Lq%;'),
 ('J%,fuysl*&', 'M#?I9kQFyj'),
 ('r(h9&#wc~B', 's$aq*|$f>s'),
 ('_]DH+g9!$', 'mJVG+OU2XO'),
 ('B:x<p&Q=t)', 'KNRlqLN%1t'),
 ('z:*d{z(~V2', 'ngbe6iK.Qu'),
 ('d}R:qHj1,7', 'q3=L7rObtd'),
 ('L5M1*yG7eH', 'J#7Tt[f!e*'),
 ('s|K&2S,UP|', 'B8UUt(OH@c'),
 ('t$y1C2R-Av', 'pediB(:-]T'),
 ('eHJ?)TAdTo', 'oQ(1eJZ%h_'),
 ('pQpX%(EVOH', 'Kroi)OhVu'),
 ('qiv/4tOlf=', 'M?CI|U:7E'),
 ('M$bc0[jYf0', 'p><!jX(|}?'),
 ('jYz[ibrr9m', 'qh#R8~1)v.'),
 ('SlOEXfq#|', 'CN1N1S@Hy['),
 ('d5m8%D6,;u', 'B!be^2p5w-'),
 ('o9{x<AyA]B', 'I}SX`lcqJ9'),
 ('He!e=h?_2V', 'AP>P}@<F6G'),
 ('QSq%~rFaP-', 'C8l&[)j7Y)'),
 ('ck!6;xK$/^', 'r)k(h&xdEF'),
 ('n{{o2K1:dw', 'jov_[O@hK6'),
 ('xqrJ^d[.(O', 'ru#Hv&<OO['),
 ('vrn%j%6{nu', 'l$|!y^BHT^'),
 ('p#R$-mG/L', 'sgfCxE,%}I'),
 ('oV/JG7fwZq', 'Dp?|DrS.=x'),
 ('bD?R}i8_[c', 'E^e,*~,>&|'),
 ('Lol+XIvY21', '%Z}v@QXG-'),
 ('Qlib4)q2Hk', 'gJpb~!c0G8'),
 ('pwwZu{7f~(', 'FyYW/{EEO`'),
 ('qFuGdDx^Yv', 'A2*i`{j|[I'),
 ('Cf2@;p<aL', ']xe(O=bdk'),
 ('t2&ri|[Un:', 'Q+I:vHQr7%'),
 ('dbP/Cj}sB+', 'ftryRYGk$7'),
 ('wa>{k!2cXc', 'o3&;VW(Hf,'),
 ('5JJ2]i)p4', 'yXSMWI1KUx'),
 ('s>f40rn,O]', 'i1Ug;$!s.p'),
 ('ssbyA9}]QP', 'x{fP[=gD9V'),
 ('vKx<0Qa!aP', 'hC)w>ab^[Q'),
 ('fkq7lhLkdH', 'w7op[fQgTo')]

def replace_guids(mw, mapping):
    for guid_i, guid_f in mapping:
        # These should NOT be present.
        ids = mw.col.db.execute("SELECT id FROM notes WHERE guid = ?", guid_f)
        if not len(ids) == 0:
            print(f"GUID {guid_f} already exists as note id(s) {ids}!")
            print("You either already have the deck with the correct GUIDs or something's gone wrong.")
            print("Aborting GUID-replacement operation!")
            return 1
        # These should be present.
        ids = mw.col.db.execute("SELECT id FROM notes WHERE guid = ?", guid_i)
        if not len(ids) == 1:
            print(f"Warning: note with GUID {guid_i} does not exist!")
            # not aborting — the user might have simply deleted some notes
    for guid_i, guid_f in mapping:
        # Not doing everything in one go with `executemany` for readability.
        mw.col.db.executemany("UPDATE notes SET guid = ? WHERE guid = ?", [(guid_f, guid_i)])
    # We need to force a full sync!
    mw.col.db.execute("update col set scm=?", int(time.time() * 1000))
    print("GUID replacement was successful! "
          "If you use AnkiWeb, a full upload will be needed next time you sync!")

replace_guids(mw, guid_mapping)
Russian
guid_mapping = \
[('e+/O]%*qfk', 'Jm&ky}FZz?'),
 ('h~5xz+=ke~', 'bms0vPoZ2i'),
 ('s9-GL*@AXD', 'OIwD?Vq[H}'),
 ('cPO|Cru8n<', 'b9(smVRG!j'),
 ('m*#%sE.`.;', 'G=a}N]t`St'),
 ('hNE9}>;Q&-', 'ry#$]bo`k}'),
 ('jN|NAUP*h}', 'hE`:7lrR4P'),
 ('j|z@PMgdx,', 'Qhq[TBO5H)'),
 ('n+t>2`:;P/', 'yT?~lnZ:gX'),
 ('ilGtw#=asM', 'jI?2qf!yDb'),
 ('mcc&0Kq^xE', 'w]]>DB_&l`'),
 ('gz9${p}er*', 'PiubQg^Ss5'),
 ('dY96`C-f(_', 'I7y6V2sDdB'),
 ('r>aI-$$|wT', 'v~cPQn}Wc%'),
 ('k9E.p^<u$,', 'b}AIti8H8S'),
 ('l$zM~ihPFE', 'kOtGr;P3}k'),
 ('jTNoKo}Bu+', 'pJE)w+ZJK%'),
 ('mz[>>AxIr4', '?R^lQY*D*'),
 ('u4^lH.xem5', 'n8DMh4+UMz'),
 ('bk2ByZIeU+', 'DNb~sC&J5%'),
 ('twrhzJ[k:Z', 'if&Ipt4{R!'),
 ('kS)hDm%w}R', 'gd(%cHqsMU'),
 ('AES],s:8=', 'paYW617a]n'),
 ('k[)#L4.[v3', 'qLh1v`1iQr'),
 ('k}A9]O:0xw', 'f6}E@C#_3N'),
 ('j7eEZkzsCZ', 'x4g!MZegS}'),
 ('s<_WLSB3I/', 'Gir-4TL#W$'),
 ('cYKvF#ptF7', 'A,M2k`~Wd['),
 ('m)WUtJS`H&', 'ld2~^b3]8e'),
 ('l$2O|9w`F~', 'B}gk}F/NJD'),
 ('kZ52zV#[Iv', 'P<8J|ziSx_'),
 ('i2]v|D3@:j', 'GvL1T<pl)T'),
 ('r5C646H*+*', 'H[sth&^jGj'),
 ('nIfRn<aY:N', 'Qz/GWg%Oi'),
 ('5S(f7%O-$', 'st{N3o<qmk'),
 ('m?}%V6s8]*', 'hs,ph6r@5'),
 ('uRo^w#p5Be', 'Gn220)gYMN'),
 ('o=,%hU&yX%', 'ImiWQfE/Wg'),
 ('lq`T^ZBF2Y', 'A`|*K1}2WV'),
 ('f>c7x2E]Q6', 'wz:QAN8%&+'),
 ('q[S4`,F0D=', 'elHzZb0RD>'),
 ('jCd]`-=k,:', 'EEpm1lUrG]'),
 ('vf)G?[_?Pf', 'fmanrW{ILh'),
 ('j9:K,~DQ2v', 'drS3F@Hxm;'),
 ('ui3>b-?a@m', 'vC~!WO}1Yx'),
 ('qVi;t%/`F|', 'Cz:.t]Ga.k'),
 ('g-]bb&[.E!', 'pQlr/JYlFs'),
 ('f21=-A~W;~', 'Q-1OO^)n>C'),
 ('sT5=H|@KU|', 'erbhQg!RK]'),
 ('lU@C3<C8Wk', 'gyBy@/*]JR'),
 ('jDA-V?/hVj', 'fn`TSL4H+K'),
 ('h_9=mkZXAH', 'w,s~/*1#Rg'),
 ('mk1VltJl<]', 'E9ORP)qdh9'),
 ('c(,2{yXI#E', 'ERCyEa-V]o'),
 ('kkbYQXw5b;', 'A1fj8m}V_0'),
 ('ia8as9sCY|', 'pwG/f8TA%+'),
 ('j%*8gN)q>d', 'LN}*YP~{-L'),
 ('bd~Ght5tLR', 'hb~_{qK>D='),
 ('onMKID2d;D', 'gCZT`M|9xu'),
 ('q8fF$4,c6_', 'ssdH.@,b*<'),
 ('upiX0g1quR', 'H16eX1]VWw'),
 ('n:7&>YT5A=', 'I!PNDUSvR|'),
 ('j2IQ=f=w3@', 'Nf8Q{=WT+v'),
 ('EWXNc<g5)', 'hEB<R*c15)'),
 ('gFOojQO(MH', 'b6L`KDbdIg'),
 ('gePC:Xt_nW', 'jOH{z(39<b'),
 ('vNiD6A.v#s', 'hqBB(<N!^q'),
 ('?n!)c/h=Q', 'dozwSc3oL_'),
 ('gYIoR`|AxW', 'xD;}}nO&|5'),
 ('j<egqG@)EL', 'H^_J<Y5+Lq'),
 ('t`cagaWApo', 'taEpjjAUDi'),
 ('jN^Vc%9OQ5', 'CP<0cpy;,I'),
 ('o3VS!KWb/@', 'Q!DmMRZl:C'),
 ('iR;U<J:CJJ', 'e@]nUPgXPS'),
 ('i^J8&$(1]|', 'JumHq-w(@9'),
 ('pS>DrFhd%u', 'NgIL<U_<X{'),
 ('t|h3|;E4g{', 'g_banf#h(Q'),
 ('p.yv>BQ470', 'A4mx0mYQ.6'),
 ('f#4-L[mp5*', 'F9=}W4o(m('),
 ('oNpApS<AoJ', 'l_u,7Sl);4'),
 ('nsS59c`VL,', 'sp#%Uu{jxI'),
 ('m{noqE29%I', 'O>:Y)[/m@5'),
 ('sSW/?WMy17', 'J@?!E/?|:y'),
 ('d-q4J~CNW_', 'bt,AY},y$2'),
 ('jKO,9y0M;#', 'G:w,Y[(aW1'),
 ('skOM(?n$GG', 'OB*1GftSKF'),
 ('mi+kf0LTW.', 'q?uiYsL{dZ'),
 ('vgdj#X?8dB', 'tRCc37FI3F'),
 ('mkgcU7[bA%', 'b5~CCSrPP.'),
 ('jcu!gLw/&r', 'L@{q~To$1C'),
 ('sB7rZQsR<l', 'iT>Kc}4kE='),
 ('u|I}oElaH)', 'L_#MCSsliG'),
 ('j)i)pB*HJ,', 'M_^<HEN]5='),
 ('t-0>F]bu>P', 'uoblR~tJv{'),
 ('hrI_uiW>E]', 'A#PXVu3{OG'),
 ('uc61ToT%gt', 'J/Z,LIAPP>'),
 ('e.t$Vi5,>f', 'pcq,]2w8O['),
 ('k/u1:B%DJH', 'CAUBpe+}Rh'),
 ('e5P*D#I{m{', 'pMLZoOPY5w'),
 ('p:SPZ:e/*[', 'K9nrzyH&<X'),
 ('t+v9b--,qs', 'mBU4P!~(nj'),
 ('fV`&p81%d(', 'JqECz@.%4i'),
 ('gsS{jR,]|Q', 'QU|9z>>-i<'),
 ('cAlyc~G.y%', 'dQpb|V+vI#'),
 ('fxAN),FAc$', 'Et,iKxkLUP'),
 ('r<N4LAAnnB', 'e5i.x%JIir'),
 ('e?Xq9gy=@[', 'I6q=nh1_(R'),
 ('m5j,b/y<EE', 'L++V2zV3fB'),
 ('stRa/S(0$F', 'w<=bLWa9^e'),
 ('l+>Ki!j#v+', 'gWiiNVbwTm'),
 ('kQ:NIhJy~E', 'KR0|YigF}Y'),
 ('sY>@9w~i^p', 'N>!/r-|iKh'),
 ('mJH4kwPF.-', 'LBA=S$7TwR'),
 ('bW)ch:vs1P', 'vAR>ZSEGi/'),
 ('sx|l+io`B@', 'i>!/t@^}^?'),
 ('q2#Yv[O0:|', 'oQe#*&QQB'),
 ('lpbD0St&OU', 'e[XV}qzx6q'),
 ('mbz=7n[0v9', 'qn,8N+7Z^{'),
 ('ijP>aJBT!9', 'cdC>T>VY4t'),
 ('jI9P-f6r3M', 'F,ZHHr/u@K'),
 ('h?a*UKfT_M', 'in7S|U&pW]'),
 ('r6BV%|..*5', 'dm&o}^E:Y%'),
 ('i)]+09JUR&', 'g?oII<6[ZM'),
 ('l}[BG9.nQS', 'nDcU{JcnF/'),
 ('mtd;>7T|g>', 'eTUA#N*+_%'),
 ('iW>m(L/~c=', 'uB1!(|)h6G'),
 ('pkj3RPBUrF', 'oM2[$i]Jg{'),
 ('euW0jm=wfR', 'CeFx+%T#{9'),
 ('l*j*EE:!Y?', 'y-F:kD#HUc'),
 ('d3c`&/1Y^D', 'w`Lo,-amU6'),
 ('hXNTVF<:SH', 'pR,WF6cJZz'),
 ('mk20`,N=`=', 'Fvsev/q[3n'),
 ('eALZe^HCHq', 'OGgJtMdwEP'),
 ('l3Ly8PBxt(', 'FeM1Z:8]S-'),
 ('g<[f89~U)A', 'H4;V}Gjc$p'),
 ('iIS#Nw]tr]', 'hL96AeDkLm'),
 ('m{oM,jr>C#', 'd;7/rK:;@r'),
 ('ln^3p)j3b.', 'wt1^C^RyMj'),
 ('cL?8!xP#Wj', 'K{N|AkKxc*'),
 ('e=.VHQ9E+M', 'H)jJ?RQ{`4'),
 ('m[96fa+HDS', '|a&v3R&*G'),
 ('g9v~y/;=z(', 'p*/Yx`XElV'),
 ('g~%pF`(x{u', 'yJuwsoHp0*'),
 ('hE5j*e,Q?[', 'r[B4}qKEKl'),
 ('fRSM{K+;[w', 'de.tDgRhFi'),
 ('o~}KVA:VbI', 'AFNn,$>?6v'),
 ('u-`cspdp)D', 'QF&bT0`se)'),
 ('e42BpV,P}C', 'w_RRz<D>=p'),
 ('pD<Pd$Ag@J', 'rE0yeh1k~6'),
 ('mbGXc0y3Pe', 'ndb6k{nIX-'),
 ('gB|K:+r?1V', 'gVIrkH[g_z'),
 ('lhWI;$JC9(', 'tLN$~<D&LN'),
 ('k0{O[6l]bH', 'M$Ym*hq(lZ'),
 ('r>g<|,FWi%', 'iqg6(sCS87'),
 ('n&>e`2FO/S', 'E_Y_gka<wh'),
 ('khB~(m^@Z5', 'xBZF?3m:=u'),
 ('spKoFRM4if', 'yR{s}{|vzP'),
 ('q8][)Ri}=q', 'bD5Cj?{})5'),
 ('hoHandbYAy', 'cD]Q9Pd0ZO'),
 ('lmRujD!(A7', 'F289Jx}!aE'),
 ('q:XyGf#>Wg', 'J(!?!{vv{7'),
 ('s#:aIK$9^x', 'Ci{2x]j^h='),
 ('jBd@A?>g|}', 'I`2u4=)$rI'),
 ('koI(}OyJ:@', 'n+6|^+yndU'),
 ('e?gIaPc$Ox', 'A^v{U|AR{a'),
 ('o#&RMA_REo', 'p7}c5wf.O#'),
 ('s4E?ZF[E<>', '!lbQb6Q:w'),
 ('k1]FH+s8j@', 'jH,I*;o6vh'),
 ('dWA49p}F{k', 'G2WhVSEk&4'),
 ('K*b}<I3(~', 'y&XDZ^<U3_'),
 ('e?h=Xhs+K&', 'dMQkP!;0c='),
 ('b@M[XTc?}5', 'L?:>A,WJLB'),
 ('sxOMs+bE8@', 'nNI(>d`5|I'),
 ('t3aZXtpNyi', 'Pkxoj6=pZF'),
 ('rPekx@n9:L', 'rz5xk#1<PP'),
 ('lAxH.CfJB@', 'xxk(Bq-Z`<'),
 ('hZ/V/D&rO`', 'ewx9/IV5o%'),
 ('h&`>n98~V1', 'xddNP~dyT_'),
 ('t50y/[AEhF', 'zRmOT{Xeqm'),
 ('gBCR?!O*;E', 'H+Rb-3u-sn'),
 ('tTnCoO/*tk', 'LE9jC#sSOE'),
 ('W5?6yQZD2', 'N}PXRbob?8'),
 ('e{e8vi@^PY', 'il|4oTIh7t'),
 ('tcneuK7v%`', 'J2r:;Tb}bM'),
 ('uH*Q(mcRt5', 'iT]9Jy+|:B'),
 ('k$1_yaF?9#', 'ns9RF=A{<?'),
 ('dUZ^=SE5BG', 'oQW|#KNZR!'),
 ('t_h*fbN#:(', 'QUEZaS<.i&'),
 ('q=w[<m2Bk&', 'NgMbQSn4l{'),
 ('vpOTK6tMr@', 'v5e#_P()cc'),
 ('m2F|cUkKhv', 'J2R`q[Z2!i'),
 ('k}4/oj#$~s', 'DMfp:u>1/~'),
 ('va/ky=f5pK', 'E{q^42h($('),
 ('c,5(mUGzYT', 'N&H{fk[c3L'),
 ('gp[h@]y13l', 'yTwB:d{m;m'),
 ('gx:;za!?C9', 'j[3-~lc=uu'),
 ('r]*Ioa%$bK', 'E+q[fM~I%,'),
 (')Y}Qy.3GK', 'Fa.~5.=<;F'),
 ('lH^2D]w;[H', 'qjeAhS!PI:'),
 ('qx%>fB$d+$', 'm6|Qi!lWAQ'),
 ('libliptkB4', 'lq[V&Ro6p!'),
 ('jrM28*HbyG', 'uCA#@hm#=u'),
 ('r?E$4f-d0/', 'u~Z*V|m1JC'),
 ('leh^fmrt*#', 'Aovq2LfJ3x'),
 ('O~pXkAbd3', 'J?N4X)hLQ4'),
 ('f*LO~>!0PN', 't2BlE6w@U0'),
 ('q[}7hk(+=e', 'mmn-72S%.C'),
 ('q7do-wLx%E', 'iBkK=.H[[*'),
 ('vwc3}.=Z#&', 'yD<PlLql`:'),
 ('e<X;[vACXC', 'i4D*V-sHYX'),
 ('j=L,YBvsBk', 'NLQ8Se/(B%'),
 ('oa87&PB&Bm', 'dl?k9`s(|K'),
 ('b^Try&me1A', 'zR_=AM#e1.'),
 ('o``:?0>/yz', 'M~5K,Lq-LX'),
 ('pz(G*<F93/', 'sKVdix$DBJ'),
 ('cV4idO^r8W', 'emf@Kw7U_W'),
 ('m*PYE=#wr^', 'j{s4{ed!RV'),
 ('sXzvT.g31p', 'q|wSo|9[WL'),
 ('mq)8`hi{hb', 'o.R(%XRfF<'),
 ('h}lnSN_f$_', 'J4U9*&@eJO'),
 ('eT<gzg?q,r', 'x$e/?}ioiX'),
 ('vE[T$`n9T)', 'O,{dn7CExu'),
 ('tj&bK}%P!F', 'vqizD*x9.v'),
 ('kX]hN=_.c-', 'AE%P6;/:4z'),
 ('r/B|ra%L,.', 'i;wkVQEC8~'),
 ('b[(2`4t&?J', 'w^9U1RGI}b'),
 ('qvITjNxkLN', 'Nq3Z?3&|oE'),
 ('jX=#G8wu#(', 'Dy8wkcY4!S'),
 ('l&#7I)Ah/E', 'pHNtJdHo[e'),
 ('de=9c:,@j9', 'IBl:CrljZo'),
 ('kE!iKHLN_g', 'EwR<30)#1g'),
 ('d``B*6:eCx', 'ikT)0#7&yt'),
 ('p]t8:Tka7q', 'kAP^Ny~90T'),
 ('niJUFZF$Y:', 'u.[N1#,@y:'),
 ('p}Qa|!7PpR', 'xDK0`i2s%/'),
 ('uv1fGXHN@)', 't9Ryk}`qj2'),
 ('sRw-ik:I$v', 'PB_{Euk>>/'),
 ('bnEK#)[;qT', 'A)h(R4;N+m'),
 ('ey:Q|*t!Lg', 'vPy3m1oa#d'),
 ('c^,~EC6Pb2', 'd`zDA9y~gZ'),
 ('tMMtBUpb$&', 'C&k%h=UUn#'),
 ('jKIDq|}J&c', 'dzu,L2RTO6'),
 ('dC:e5G4J/p', 'CQXXs$n5cv'),
 ('u;|vR#mVMW', 'xBC@m/Re-7'),
 ('gDsLPj(9S#', 'u~.<cG1`ob'),
 ('xb&P*pH(Q', 'B[,~m31[Og'),
 ('Bszsaz0Iuo', 'dIUwggycz7'),
 ('JOT:U4ayh@', 'fBT#}$9v{@'),
 ('G/^_##fcPN', 'uvRyF*9Zqg'),
 ('LPF4AfaHKR', 's^4z/0k+AF'),
 ('rSneU!3}bn', 'Ej./VrJYpS'),
 ('cv+Nq9:a<P', 'Og]Pyc,dB|'),
 ('f*2@qiHh_1', 'O6aT:6ldHZ'),
 ('nuU8A_$i2M', 'xWSI:FF;%x'),
 ('fT!w8R#>dg', 'EMPCtOx;Rj'),
 ('gG6SWfM>H0', 'yXRb0bi*D.'),
 ('sM0GPt1HS1', 'c3fq*,<:~U'),
 ('dlU7VG|3Gd', 'D#f:CN7HH4'),
 ('cEO^y)Md[G', 'ym)YXCoojW'),
 ('eN#^kPGv*L', 'n!%,$ZZU.A'),
 ('lp@e##m.!+', 'ds)Lw5L_oG'),
 ('epvt3>HH?U', 'Btv`iTH0LW'),
 ('E3u*2.<9#`', 'q]o/<>5}wu'),
 ('q1Q3Do8S>g', 'M_Aq-@$=Ed'),
 ('yX:tmrd5;]', 'M0{EnlSZ[&'),
 ('H*c[ML+`s=', 'q}Pw=WLDWu'),
 ('e_;dzXj8de', 'od6cw^-E-]'),
 ('iB-8Br~onq', 'Ily]WmR8_^'),
 ('zSc]-^U=0=', 'hpvj)-!USf'),
 ('x2d4n4ADcP', 'J3~et+v|e@'),
 ('Gn;q2Y)Xe4', 'G!-:Hml<-@'),
 ('gRVZ]qJ#>O', 'f-#kZAo/ON'),
 ('J%,fuysl*&', 'etM=#0^o-o'),
 ('r(h9&#wc~B', 'i-&Ri-vDye'),
 ('_]DH+g9!$', 'JS=q2$2L3]'),
 ('B:x<p&Q=t)', 'D,@m:}o|sK'),
 ('z:*d{z(~V2', 'fs]5;0c;}B'),
 ('d}R:qHj1,7', 't$C>63YEjQ'),
 ('L5M1*yG7eH', 'EZvlR:83-^'),
 ('s|K&2S,UP|', 'MHvNbPV}Qa'),
 ('t$y1C2R-Av', 'Hmbq~BF@]H'),
 ('eHJ?)TAdTo', 'v]|R(og)1x'),
 ('pQpX%(EVOH', 'yB!Y:vm[{l'),
 ('qiv/4tOlf=', 'IW*fIQ@Vn!'),
 ('M$bc0[jYf0', 'v:EM)mKjX1'),
 ('jYz[ibrr9m', 'G:i:X<AqLs'),
 ('SlOEXfq#|', 'Aa(5k`u_H.'),
 ('d5m8%D6,;u', 'pj`8ER+@;H'),
 ('o9{x<AyA]B', 'gZA|73/rf@'),
 ('He!e=h?_2V', 'N<Zjd9rV2&'),
 ('QSq%~rFaP-', 'Iktca^NUQ'),
 ('ck!6;xK$/^', 'i2(em&ob8T'),
 ('n{{o2K1:dw', 'wj)M@s{]YR'),
 ('xqrJ^d[.(O', 'b/*Gfh]U>A'),
 ('vrn%j%6{nu', 'nq{:LP(wy='),
 ('p#R$-mG/L', 'hME8pvJ-]J'),
 ('oV/JG7fwZq', 'ofER|_J~:`'),
 ('bD?R}i8_[c', 'k.2O4>+A!V'),
 ('Lol+XIvY21', 'z~`99rF8Y^'),
 ('Qlib4)q2Hk', 'u9:IZ@Uo>l'),
 ('pwwZu{7f~(', 'NvOwi0qs57'),
 ('qFuGdDx^Yv', 'xfB@_iTV&b'),
 ('Cf2@;p<aL', 'h*-O8Wp^BE'),
 ('t2&ri|[Un:', 'cz=5m*@Fez'),
 ('dbP/Cj}sB+', 's_iv#ETD^J'),
 ('wa>{k!2cXc', 'cPg&WpVKO~'),
 ('5JJ2]i)p4', 'n!&0937~y!'),
 ('s>f40rn,O]', 'HE)H&.0Xn6'),
 ('ssbyA9}]QP', 'h46=t>$v#7'),
 ('vKx<0Qa!aP', 'D&9$.-JH&Q'),
 ('fkq7lhLkdH', 'y!Xu5N$EBT')]

def replace_guids(mw, mapping):
    for guid_i, guid_f in mapping:
        # These should NOT be present.
        ids = mw.col.db.execute("SELECT id FROM notes WHERE guid = ?", guid_f)
        if not len(ids) == 0:
            print(f"GUID {guid_f} already exists as note id(s) {ids}!")
            print("You either already have the deck with the correct GUIDs or something's gone wrong.")
            print("Aborting GUID-replacement operation!")
            return 1
        # These should be present.
        ids = mw.col.db.execute("SELECT id FROM notes WHERE guid = ?", guid_i)
        if not len(ids) == 1:
            print(f"Warning: note with GUID {guid_i} does not exist!")
            # not aborting — the user might have simply deleted some notes
    for guid_i, guid_f in mapping:
        # Not doing everything in one go with `executemany` for readability.
        mw.col.db.executemany("UPDATE notes SET guid = ? WHERE guid = ?", [(guid_f, guid_i)])
    # We need to force a full sync!
    mw.col.db.execute("update col set scm=?", int(time.time() * 1000))
    print("GUID replacement was successful! "
          "If you use AnkiWeb, a full upload will be needed next time you sync!")

replace_guids(mw, guid_mapping)
Swedish
guid_mapping = \
[('e+/O]%*qfk', 'M@9EfpNi;z'),
 ('h~5xz+=ke~', 'Gpeah<lh@u'),
 ('s9-GL*@AXD', 'nN,;(#X}Wt'),
 ('cPO|Cru8n<', 'b4O.fdq=&&'),
 ('m*#%sE.`.;', 'pk+~~g89%y'),
 ('hNE9}>;Q&-', 'Ae@YR@cdSW'),
 ('jN|NAUP*h}', 'h>OmJ~oZ~|'),
 ('j|z@PMgdx,', 'gM+}.:OZH]'),
 ('n+t>2`:;P/', 'wH[5PSfX;K'),
 ('ilGtw#=asM', 'Qi.AoC*UvT'),
 ('mcc&0Kq^xE', 'j^H$O[w*tW'),
 ('gz9${p}er*', 'O:){fAE+[h'),
 ('dY96`C-f(_', 'KUSv4_ZftC'),
 ('r>aI-$$|wT', 'f`?#zj#)DE'),
 ('k9E.p^<u$,', 'x]u},H#?K~'),
 ('l$zM~ihPFE', 'B,[GBme-:n'),
 ('jTNoKo}Bu+', 'rF%zt5M&?-'),
 ('mz[>>AxIr4', 'z9T_hmmT*f'),
 ('u4^lH.xem5', 'v3/LK?TI+'),
 ('bk2ByZIeU+', 'GO8K><b?f2'),
 ('twrhzJ[k:Z', 'wR=%k%E3:i'),
 ('kS)hDm%w}R', 'wh@G!lN$Q|'),
 ('AES],s:8=', 'w2^A.*A;0^'),
 ('k[)#L4.[v3', 'ca`<lL]SBn'),
 ('k}A9]O:0xw', 'lsc1G{vU4.'),
 ('j7eEZkzsCZ', 'C[bMs5PN|d'),
 ('s<_WLSB3I/', 'DVc[0B1#@*'),
 ('cYKvF#ptF7', 'P;wx%Rx}g%'),
 ('m)WUtJS`H&', 'i3-W.8A8pC'),
 ('l$2O|9w`F~', 'x^M8w2)s#:'),
 ('kZ52zV#[Iv', 'ODx_iYAqK('),
 ('i2]v|D3@:j', 'oU<~4jjCyP'),
 ('r5C646H*+*', 'A&@FdL>j&h'),
 ('nIfRn<aY:N', 'dnY]_1$e<W'),
 ('5S(f7%O-$', 'u<w5s|M#Ds'),
 ('m?}%V6s8]*', 'JO{1$2yxOD'),
 ('uRo^w#p5Be', 'l*S7j866t<'),
 ('o=,%hU&yX%', 'I}xtas*<<='),
 ('lq`T^ZBF2Y', 'HX#;I12-Gu'),
 ('f>c7x2E]Q6', 'O|!r8pZc_@'),
 ('q[S4`,F0D=', 'c0X`Rdpvdg'),
 ('jCd]`-=k,:', 'QO[lJt~Q]N'),
 ('vf)G?[_?Pf', 'u3u7Z|VQV`'),
 ('j9:K,~DQ2v', 't%PfM!!RPu'),
 ('ui3>b-?a@m', 'A:WhEL~x!A'),
 ('qVi;t%/`F|', 'd&Z;v4SLqS'),
 ('g-]bb&[.E!', 'H/1j+}vOwc'),
 ('f21=-A~W;~', 'qv@;*gj=VH'),
 ('sT5=H|@KU|', 'IlH%F{np<['),
 ('lU@C3<C8Wk', 's=)J}uTu.N'),
 ('jDA-V?/hVj', 'GilXrl.A_%'),
 ('h_9=mkZXAH', 'q*^h!N31k*'),
 ('mk1VltJl<]', 'xc^[E/Z[$R'),
 ('c(,2{yXI#E', '(;;{-bktU'),
 ('kkbYQXw5b;', 'FOI,VR<;HS'),
 ('ia8as9sCY|', 'b2;iz|xg^@'),
 ('j%*8gN)q>d', 'uVs:]g8l.&'),
 ('bd~Ght5tLR', 'FBWKraq$]`'),
 ('onMKID2d;D', 'F[Hq;*V/7K'),
 ('q8fF$4,c6_', '[&[K^KiK8'),
 ('upiX0g1quR', 'mSow!CwtLI'),
 ('n:7&>YT5A=', 'J.*@Nk4>0*'),
 ('j2IQ=f=w3@', 'B;S:<cu0^C'),
 ('EWXNc<g5)', 'B7hcD[}|,:'),
 ('gFOojQO(MH', 'n$t4JTV.L['),
 ('gePC:Xt_nW', 'we!,qZc~VX'),
 ('vNiD6A.v#s', 'P.ls/JP5<}'),
 ('?n!)c/h=Q', 'ljuf!A77m!'),
 ('gYIoR`|AxW', 'm9{}Vj*h)B'),
 ('j<egqG@)EL', 'hB_EsBpVEy'),
 ('t`cagaWApo', 'k$T,&qpZ_E'),
 ('jN^Vc%9OQ5', 'B`1@FnD9*.'),
 ('o3VS!KWb/@', 'Nky*kq6)GC'),
 ('iR;U<J:CJJ', 'dJX+VxBemo'),
 ('i^J8&$(1]|', 'ugyWN%[pXR'),
 ('pS>DrFhd%u', 'w5=:(t5%R6'),
 ('t|h3|;E4g{', 'E[0uav)J05'),
 ('p.yv>BQ470', 'FGu[yfPiJ7'),
 ('f#4-L[mp5*', 'nh!${YsPie'),
 ('oNpApS<AoJ', 'bkjWZ<Vg]U'),
 ('nsS59c`VL,', 'KWY%fKd5dT'),
 ('m{noqE29%I', 'w3V@j|Foq~'),
 ('sSW/?WMy17', 'pD{#)wT+1u'),
 ('d-q4J~CNW_', 'f?dUt&>$PS'),
 ('jKO,9y0M;#', 'p02Yuw`G)/'),
 ('skOM(?n$GG', 'hj]p(iMKl7'),
 ('mi+kf0LTW.', 'qjZDlzf]=l'),
 ('vgdj#X?8dB', 'b^b:}HG<(/'),
 ('mkgcU7[bA%', 'p(q*slFP*F'),
 ('jcu!gLw/&r', 'j(X|k-_Sv|'),
 ('sB7rZQsR<l', 'P~zp{JVRjt'),
 ('u|I}oElaH)', 'lNTL4T}K1)'),
 ('j)i)pB*HJ,', 'OlYF5,:|Q3'),
 ('t-0>F]bu>P', 'y=oLcr9$cQ'),
 ('hrI_uiW>E]', 'L3Z}n~/Szn'),
 ('uc61ToT%gt', 't&Ov:{KJHy'),
 ('e.t$Vi5,>f', 'eqi30~lJCU'),
 ('k/u1:B%DJH', 'yJ+?5Bb~=:'),
 ('e5P*D#I{m{', 'p;W>c.=a5.'),
 ('p:SPZ:e/*[', 'Op1]SnugtV'),
 ('t+v9b--,qs', 'z8UXM/Z23%'),
 ('fV`&p81%d(', 'N&=0FE?0K3'),
 ('gsS{jR,]|Q', 'DnUNQy>V@c'),
 ('cAlyc~G.y%', 'p){pPjR5:$'),
 ('fxAN),FAc$', 'QyZ%*OdzFY'),
 ('r<N4LAAnnB', 'Q5Si^%B~:x'),
 ('e?Xq9gy=@[', 'F+l?rc6nr?'),
 ('m5j,b/y<EE', 'ubj(k(`p0:'),
 ('stRa/S(0$F', 'KHEo&Oa7_F'),
 ('l+>Ki!j#v+', 'sj6y@z=dRP'),
 ('kQ:NIhJy~E', 'vl*,GQz^vQ'),
 ('sY>@9w~i^p', 'H_pUK6Xu]`'),
 ('mJH4kwPF.-', '8CAB|Q`3c'),
 ('bW)ch:vs1P', 'hWSXAL,1[1'),
 ('sx|l+io`B@', 'p?*+RZ<OgX'),
 ('q2#Yv[O0:|', 'tJ&;D}C]UV'),
 ('lpbD0St&OU', 'cBQpjb$FFF'),
 ('mbz=7n[0v9', 'GV|.:pW~=#'),
 ('ijP>aJBT!9', 'LH]h^.GA_i'),
 ('jI9P-f6r3M', 'z}n.If4:?)'),
 ('h?a*UKfT_M', 'uU![?ri)d_'),
 ('r6BV%|..*5', 'Qmb.+7huoY'),
 ('i)]+09JUR&', 'c#-~c^hZ8~'),
 ('l}[BG9.nQS', 'if5[hu6l7g'),
 ('mtd;>7T|g>', 'eDx9dZ&k(k'),
 ('iW>m(L/~c=', 'c=F0q+d|m#'),
 ('pkj3RPBUrF', 'o%$r]1QH{t'),
 ('euW0jm=wfR', 'F5Fbm]10e3'),
 ('l*j*EE:!Y?', 'EKcj[W^+w]'),
 ('d3c`&/1Y^D', 'y!.rR1N]Q%'),
 ('hXNTVF<:SH', 'FO/D@z0E%#'),
 ('mk20`,N=`=', 'g^MDw[q&`K'),
 ('eALZe^HCHq', 'D^z&W{[{ng'),
 ('l3Ly8PBxt(', 'n$0d;K4M?l'),
 ('g<[f89~U)A', 'eRztGZ?5gt'),
 ('iIS#Nw]tr]', 'mmXmH,@{!K'),
 ('m{oM,jr>C#', 'rVhH@X0hOr'),
 ('ln^3p)j3b.', 'dYQH;whZ9c'),
 ('cL?8!xP#Wj', 'ya#p*nPn}U'),
 ('e=.VHQ9E+M', 'i?;Nx?in:X'),
 ('m[96fa+HDS', 'hqHjJQR@ve'),
 ('g9v~y/;=z(', 'caoMw/l6Qq'),
 ('g~%pF`(x{u', 'qvU`=w(275'),
 ('hE5j*e,Q?[', 'oVtF.y]H)M'),
 ('fRSM{K+;[w', 'x2Ho#9JF2&'),
 ('o~}KVA:VbI', 'njbrSU^agd'),
 ('u-`cspdp)D', 'uRPZ]lF~NL'),
 ('e42BpV,P}C', 'o@l9/@&CEQ'),
 ('pD<Pd$Ag@J', 'I4?0i2<YxI'),
 ('mbGXc0y3Pe', 'JA;WxR7VVZ'),
 ('gB|K:+r?1V', 'ncoVNK:5c/'),
 ('lhWI;$JC9(', 'B*Q><ygyqQ'),
 ('k0{O[6l]bH', 'Pc}I71FH$K'),
 ('r>g<|,FWi%', 'Ko1^yAR.yn'),
 ('n&>e`2FO/S', 'l{J_M.Vp>X'),
 ('khB~(m^@Z5', 'LCs2:t<[-X'),
 ('spKoFRM4if', 'c@58oWbN3U'),
 ('q8][)Ri}=q', 'N@bHVDe+Kb'),
 ('hoHandbYAy', 'heo$u3%xYs'),
 ('lmRujD!(A7', 'Q8=#jf;Izu'),
 ('q:XyGf#>Wg', 'O>(c0%czoO'),
 ('s#:aIK$9^x', 'm%N$gpC+n]'),
 ('jBd@A?>g|}', 'rJG$qf|FO4'),
 ('koI(}OyJ:@', 'DOTLV^*F{H'),
 ('e?gIaPc$Ox', 'fk0sh|Ih~P'),
 ('o#&RMA_REo', 'w7J5,@!ZO`'),
 ('s4E?ZF[E<>', 'Q@3rl@WPXz'),
 ('k1]FH+s8j@', 'A`?%3b$nUX'),
 ('dWA49p}F{k', 'O%#xYWz^#M'),
 ('K*b}<I3(~', 'fwm<gn03ey'),
 ('e?h=Xhs+K&', 'HzN{~)3NGK'),
 ('b@M[XTc?}5', 'OzZ|9/zKGy'),
 ('sxOMs+bE8@', 'J+O2qUIUz|'),
 ('t3aZXtpNyi', 'OX,mUDIStL'),
 ('rPekx@n9:L', 'kjo~PAZ.,y'),
 ('lAxH.CfJB@', 'r#k4%<ieJ;'),
 ('hZ/V/D&rO`', 'k^PtQpRdLQ'),
 ('h&`>n98~V1', 'i7sQICmsKP'),
 ('t50y/[AEhF', 'I=mZ*3?!_l'),
 ('gBCR?!O*;E', 'wY{he1D;Tc'),
 ('tTnCoO/*tk', 'Qg3C+rbaa*'),
 ('W5?6yQZD2', 'Bp:8AxZIJ*'),
 ('e{e8vi@^PY', 'O8La>q*+=D'),
 ('tcneuK7v%`', 'd&bsqV:N$w'),
 ('uH*Q(mcRt5', 'ELV(4@XqZt'),
 ('k$1_yaF?9#', 'gM!|AcSE~W'),
 ('dUZ^=SE5BG', '^(x:orV#n'),
 ('t_h*fbN#:(', 'Leo~hD<WPr'),
 ('q=w[<m2Bk&', 'iKL]@oe;,B'),
 ('vpOTK6tMr@', 'QIn7X6P~>i'),
 ('m2F|cUkKhv', 'qvhov1fh!t'),
 ('k}4/oj#$~s', 'P?8;T>jkXg'),
 ('va/ky=f5pK', 'fGB0mK7OmU'),
 ('c,5(mUGzYT', 'b.K2|uT9#&'),
 ('gp[h@]y13l', 'o6Q=4QRc:P'),
 ('gx:;za!?C9', 'O6XK(yEdjN'),
 ('r]*Ioa%$bK', 'Q!&RwY_+~G'),
 (')Y}Qy.3GK', 'HU{V)h>->1'),
 ('lH^2D]w;[H', '|:r0wYpo+'),
 ('qx%>fB$d+$', 'M<c,]nB<a~'),
 ('libliptkB4', 'N={U.qMDd5'),
 ('jrM28*HbyG', 'OgRSGzP9iU'),
 ('r?E$4f-d0/', 'gux9;qM)nK'),
 ('leh^fmrt*#', 'hq?[{n24G;'),
 ('O~pXkAbd3', 'u._5@pRbGb'),
 ('f*LO~>!0PN', 't1sE<.qtO/'),
 ('q[}7hk(+=e', 't|}7%V0{4w'),
 ('q7do-wLx%E', 'v?vAk$tZAa'),
 ('vwc3}.=Z#&', 'l,[F>UJ/PN'),
 ('e<X;[vACXC', 'zz4Ej5gtx6'),
 ('j=L,YBvsBk', 'BJvzz<mQn/'),
 ('oa87&PB&Bm', 'GH~LmtD8o#'),
 ('b^Try&me1A', 'N@2CXFim}.'),
 ('o``:?0>/yz', 'jZpi[+b>`2'),
 ('pz(G*<F93/', 'LvKjC9)Jop'),
 ('cV4idO^r8W', 'f&H7U0-[5}'),
 ('m*PYE=#wr^', 'MD>R`2$IfI'),
 ('sXzvT.g31p', 'kA<Bx%0-hP'),
 ('mq)8`hi{hb', 'kp&`?`CDeL'),
 ('h}lnSN_f$_', 'yp(op%kwx]'),
 ('eT<gzg?q,r', 'gum46?fIJ@'),
 ('vE[T$`n9T)', 'nB97`B-u)'),
 ('tj&bK}%P!F', 'O-wR/1*Y6i'),
 ('kX]hN=_.c-', 'M1DF:M)y_T'),
 ('r/B|ra%L,.', 'H!Ms:!^6Ka'),
 ('b[(2`4t&?J', 'P$;>yK&Bb#'),
 ('qvITjNxkLN', 'NJhO,P|nW`'),
 ('jX=#G8wu#(', 'ki}T;HSiij'),
 ('l&#7I)Ah/E', ':+A,]QJt-'),
 ('de=9c:,@j9', 'o6f7z~ZCr6'),
 ('kE!iKHLN_g', 'jX.V=Tm<P3'),
 ('d``B*6:eCx', 'eItZ|YXm$3'),
 ('p]t8:Tka7q', 'f*vz&Ph[bR'),
 ('niJUFZF$Y:', 'fsloLaTPf8'),
 ('p}Qa|!7PpR', 'ga-I(hwLN)'),
 ('uv1fGXHN@)', 'AUgq3IkilN'),
 ('sRw-ik:I$v', 'w`;zj+qi],'),
 ('bnEK#)[;qT', 'Ar:~TK>ugF'),
 ('ey:Q|*t!Lg', 'pbJ|E`wn_~'),
 ('c^,~EC6Pb2', 'KG~t}M~,_o'),
 ('tMMtBUpb$&', '|*Z`50Bgs'),
 ('jKIDq|}J&c', 'qW1*i(&R3$'),
 ('dC:e5G4J/p', 'iZ`BoOu7TH'),
 ('u;|vR#mVMW', 'B=^Q!Oy7dx'),
 ('gDsLPj(9S#', 'EykZ%2$zVY'),
 ('xb&P*pH(Q', 'P)2eJ7Sr]e'),
 ('Bszsaz0Iuo', 'Cj.2Qz[,?;'),
 ('JOT:U4ayh@', 'mjltS8qw#I'),
 ('G/^_##fcPN', 'wN+#PV27nX'),
 ('LPF4AfaHKR', 'DMw7[z1|/f'),
 ('rSneU!3}bn', 'myDYy<t!DY'),
 ('cv+Nq9:a<P', 'e7aUv]y3NG'),
 ('f*2@qiHh_1', 'fL<u4=Axl['),
 ('nuU8A_$i2M', 'j65XMZPPCl'),
 ('fT!w8R#>dg', 'taGg_[({a>'),
 ('gG6SWfM>H0', 'c3_S$ge,H%'),
 ('sM0GPt1HS1', 'mVqJCtNO^w'),
 ('dlU7VG|3Gd', 'f*A:Z4bkRD'),
 ('cEO^y)Md[G', 'ite]=1-[IW'),
 ('eN#^kPGv*L', 'sE1}%6$3D9'),
 ('lp@e##m.!+', 'li{q-g0Ru|'),
 ('epvt3>HH?U', 'iWh/XzA:Fx'),
 ('E3u*2.<9#`', 'QQ+*SW>?NN'),
 ('q1Q3Do8S>g', 'J{(N4{^e:N'),
 ('yX:tmrd5;]', 'GZ2yh|R:fR'),
 ('H*c[ML+`s=', 'gx#n~i)Kft'),
 ('e_;dzXj8de', 'sB,_Fhn5&I'),
 ('iB-8Br~onq', 'xV<kEl1ZJ$'),
 ('zSc]-^U=0=', 'lGG8WbUQzc'),
 ('x2d4n4ADcP', 'p6lxT;d^Pq'),
 ('Gn;q2Y)Xe4', 'ngPe&f4ARW'),
 ('gRVZ]qJ#>O', 'ywSb;Oor?l'),
 ('J%,fuysl*&', 'uxU}LMXAY+'),
 ('r(h9&#wc~B', 'z;zuT%S.hs'),
 ('_]DH+g9!$', 'g*C+;[^vP9'),
 ('B:x<p&Q=t)', 'gn,]{C-kDK'),
 ('z:*d{z(~V2', 'x-s/YndH;0'),
 ('d}R:qHj1,7', 'pG~&s-.Pv='),
 ('L5M1*yG7eH', 'iw)&(><6ju'),
 ('s|K&2S,UP|', 'HeX)uooi/y'),
 ('t$y1C2R-Av', 'x*o*2(qrzU'),
 ('eHJ?)TAdTo', 'd/vX5sh?Z9'),
 ('pQpX%(EVOH', 'G&{G$z2N`]'),
 ('qiv/4tOlf=', 'cd@bD^dpRt'),
 ('M$bc0[jYf0', 'B4o4Qgpxa='),
 ('jYz[ibrr9m', 'D.R!j]):&%'),
 ('SlOEXfq#|', 'u>bFUX4,^('),
 ('d5m8%D6,;u', 't!YaMvtxM)'),
 ('o9{x<AyA]B', 'fl~nzy1ZAc'),
 ('He!e=h?_2V', 'Qqzh;Z,9&o'),
 ('QSq%~rFaP-', 'A`,,|zaW//'),
 ('ck!6;xK$/^', 'vHOU`CM:P+'),
 ('n{{o2K1:dw', 'bM>er*)`9o'),
 ('xqrJ^d[.(O', 'g67ir]U+=9'),
 ('vrn%j%6{nu', 'F%kRV:W:T$'),
 ('p#R$-mG/L', 'xA+]rlW|<7'),
 ('oV/JG7fwZq', 'dBTCh;2%Xv'),
 ('bD?R}i8_[c', 'B0j5`h}ycY'),
 ('Lol+XIvY21', 'AUQ5QqT7N~'),
 ('Qlib4)q2Hk', 'Lg|45@I{1+'),
 ('pwwZu{7f~(', 'CpZYay1jbg'),
 ('qFuGdDx^Yv', 'omFN1!]szI'),
 ('Cf2@;p<aL', 'DRY)+ITFX-'),
 ('t2&ri|[Un:', 'c7[u_eSWiy'),
 ('dbP/Cj}sB+', 'yychoEU/n9'),
 ('wa>{k!2cXc', 'x=Gm50ksY@'),
 ('5JJ2]i)p4', 'ch9]RU,k}a'),
 ('s>f40rn,O]', 'J]3b`qj!hC'),
 ('ssbyA9}]QP', 'D((j`lUo!d'),
 ('vKx<0Qa!aP', 'fyeM9@jJW0'),
 ('fkq7lhLkdH', 'x}$b4LJvm3')]

def replace_guids(mw, mapping):
    for guid_i, guid_f in mapping:
        # These should NOT be present.
        ids = mw.col.db.execute("SELECT id FROM notes WHERE guid = ?", guid_f)
        if not len(ids) == 0:
            print(f"GUID {guid_f} already exists as note id(s) {ids}!")
            print("You either already have the deck with the correct GUIDs or something's gone wrong.")
            print("Aborting GUID-replacement operation!")
            return 1
        # These should be present.
        ids = mw.col.db.execute("SELECT id FROM notes WHERE guid = ?", guid_i)
        if not len(ids) == 1:
            print(f"Warning: note with GUID {guid_i} does not exist!")
            # not aborting — the user might have simply deleted some notes
    for guid_i, guid_f in mapping:
        # Not doing everything in one go with `executemany` for readability.
        mw.col.db.executemany("UPDATE notes SET guid = ? WHERE guid = ?", [(guid_f, guid_i)])
    # We need to force a full sync!
    mw.col.db.execute("update col set scm=?", int(time.time() * 1000))
    print("GUID replacement was successful! "
          "If you use AnkiWeb, a full upload will be needed next time you sync!")

replace_guids(mw, guid_mapping)

From v4.0

To v4.1.1

You can follow the normal installation/upgrade procedures.

Under some circumstances, you might end up with two decks: your original deck called "Ultimate Geography" and a new, duplicated deck called "Ultimate Geography_2". Unless you created some notes of your own, every card in your original deck should have moved automatically to the new deck and your original deck should now be empty. You can verify this in Anki's card browser.

To get back to having a single deck, move any of your own cards out of the original deck and delete it. Then, rename the new deck to "Ultimate Geography".

To v5.0

If you use the French or Norwegian deck, please follow the instructions for upgrading from v4.1.1 to v5.0, above. Otherwise, you can just follow the normal installation/upgrade procedures.

Note that you might still end up with two decks ("Ultimate Geography" and "Ultimate Geography_2"). This can be dealt with as described in the v4.1.1 to v5.0 section.

From v3.3

To v4.0

Some notes and cards were removed to reduce bloat. For details, please see the v4.0 release. The upgrade process is also described there, in detail.

To v5.0

If you use the French or Norwegian deck, please see the instructions for upgrading from v4.1.1 to v5.0, above. Before upgrading to v5.0 you need to run the corresponding debug console script mentioned there, as a very first step!

(This applies to all decks:) Some notes and cards were removed during the v3.3 → v4.0 transtion, to reduce bloat. You may wish to read the upgrade process notes for the v4.0 release. You can import the "Ultimate Geography Legacy" deck, from there, to separate out (and either explicitly keep or remove) the notes and cards that were removed. (You do not need to import the actual v4.0 deck, as an intermediate step, though!)

Clone this wiki locally