Closed dcoudert closed 5 years ago
Description changed:
---
+++
@@ -1,4 +1,4 @@
-The py3 failing doctest in in `graphs.MathonPseudocyclicStronglyRegularGraph` is
+This ticket fix this py3 failing doctest in `graphs.MathonPseudocyclicStronglyRegularGraph`
Failed example: @@ -43,3 +43,4 @@
'sage'
and 'bliss'
is the sameMathonPseudocyclicStronglyRegularGraph
to make the doctest stable with py2 and py3+Other doctests are still failing with py3 and bliss.
Changed branch from public/graphs/27571_automorphism_group to public/graphs/27571_automorphism
previous branch was not correct (direct modification of develop. oups..)
New commits:
88bde07 | trac #27571: fix a doctest in MathonPseudocyclicStronglyRegularGraph |
Branch pushed to git repo; I updated commit sha1. New commits:
cedcb22 | trac #27571: clean bliss, canonical_form, and automorphism_group |
Description changed:
---
+++
@@ -40,7 +40,10 @@
and the order `list(G)` is not always the same in py2 and py3...
So, in this ticket, we do
-1. ensure that the ordering with `'sage'` and `'bliss'` is the same
-2. specify the partition in the doctest of `MathonPseudocyclicStronglyRegularGraph` to make the doctest stable with py2 and py3
+- ensure that the ordering with `'sage'` and `'bliss'` is the same in `automorphism_group` and `canonical_label`/`canonical_form`
+- clean bliss to avoid for instance indexing a dictionary with a possibly not hashable key. The new solution is slower but safe.
+- specify the partition in the doctest of `MathonPseudocyclicStronglyRegularGraph` to make the doctest stable with py2 and py3
+
+
Other doctests are still failing with py3 and bliss.
Branch pushed to git repo; I updated commit sha1. New commits:
9006edb | trac #27571: remove not tested tag in petersen_family |
With py3 I regularly tag has not tested the doctest of pertersen_family
. This is a bug reported in #26800...
Description changed:
---
+++
@@ -39,7 +39,7 @@
- for `'bliss'`, the order is always `list(G)`
and the order `list(G)` is not always the same in py2 and py3...
-So, in this ticket, we do
+**So, in this ticket, we do**
- ensure that the ordering with `'sage'` and `'bliss'` is the same in `automorphism_group` and `canonical_label`/`canonical_form`
- clean bliss to avoid for instance indexing a dictionary with a possibly not hashable key. The new solution is slower but safe.
- specify the partition in the doctest of `MathonPseudocyclicStronglyRegularGraph` to make the doctest stable with py2 and py3
Description changed:
---
+++
@@ -46,4 +46,4 @@
-Other doctests are still failing with py3 and bliss.
+Other doctests are still failing with py3 and bliss and could be fixed in another ticket.
I tried to investigate further on the possible cause of the issues with automorphism_group
and the Python3 failing doctests in src/sage/graphs/generators/families.py
.
The good news is that we have the same result with 'bliss'
and 'sage'
sage: G = graphs.PaleyGraph(9)
sage: a = G.automorphism_group(partition=[sorted(G)])
sage: it = (x for x in a.normal_subgroups() if x.order() == 9)
sage: subg = next(iter(it))
sage: r = [matrix(libgap.PermutationMat(libgap(z), 9).sage())
....: for z in subg]
sage: ff = list(map(lambda y: (y[0]-1,y[1]-1),
....: Permutation(map(lambda x: 1+r.index(x^-1), r)).cycle_tuples()[1:]))
sage: L = sum(i*(r[a]-r[b]) for i,(a,b) in zip(range(1,len(ff)+1), ff)); L
[ 0 1 -1 -3 -2 -4 3 4 2]
[-1 0 1 -4 -3 -2 2 3 4]
[ 1 -1 0 -2 -4 -3 4 2 3]
[ 3 4 2 0 1 -1 -3 -2 -4]
[ 2 3 4 -1 0 1 -4 -3 -2]
[ 4 2 3 1 -1 0 -2 -4 -3]
[-3 -2 -4 3 4 2 0 1 -1]
[-4 -3 -2 2 3 4 -1 0 1]
[-2 -4 -3 4 2 3 1 -1 0]
sage: G.relabel()
sage: G3x3=graphs.MathonPseudocyclicStronglyRegularGraph(2,G=G,L=L)
sage: G3x3.is_strongly_regular(parameters=True)
(441, 220, 109, 110)
sage: G3x3.automorphism_group(algorithm="bliss").order() # optional - bliss
3 # <-- expect 27 in Python 2
sage: G3x3.automorphism_group(algorithm="sage").order() # long time
3 # <-- expect 27 in Python 2
The issue may come from PermutationGroup
that is used in both case...
Branch pushed to git repo; I updated commit sha1. New commits:
15790aa | trac #27571: fix merge conflict with 8.8.beta5 |
Any comment is more than welcome.
hmm, I don't understand, are you saying there is a discrepancy between Python 2 and Python 3 answers?
Yes, the answer in py2 of sage: G3x3.automorphism_group(algorithm="sage").order()
is different than in py3. have no clue whats going on.
Here, I try to align the behaviors with sage
and bliss
, and fix an issue in MathonPseudocyclicStronglyRegularGraph
.
I presume that py2 is giving the correct answer, right?
I don't know. We should ask experts in these graph and methods.
why would you think there is graphs.PasechnikGraph(..)
there?
you are talking to one of them ;-)
$ git blame src/sage/graphs/generators/families.py
...
4c7cb931a9b (Dima Pasechnik 2015-11-07 17:41:10 +0000 3124) def MathonPseudocyclicStronglyRegularGraph(t, G=None, L=None):
...
you can take canonical forms of G3x3 in py2 and in py3,
in py2 compute G3x3.canonical_label().automorphism_group()
(of order 27)
and check that it is also an automorphism group for G3x3 in py3.
(you should also chech that the canonical labellings are the same, naturally)
I guess it's a bug in py3 implementation (or in bliss)
you can take canonical forms of G3x3 in py2 and in py3, in py2 compute
G3x3.canonical_label().automorphism_group()
(of order 27) and check that it is also an automorphism group for G3x3 in py3.
How can I do that ?
(you should also chech that the canonical labellings are the same, naturally)
Since we try to avoid sorting vertices, canonical labels in py2 and py3 have no reason to be the same. And, we use partition = [list(self)]
I guess it's a bug in py3 implementation (or in bliss)
I don't know. I'm having hard time trying to understand this code.
I'll be happy if we could at least finalize this ticket, and possibly let the other issue for another dedicated ticket.
Replying to @dcoudert:
you can take canonical forms of G3x3 in py2 and in py3, in py2 compute
G3x3.canonical_label().automorphism_group()
(of order 27) and check that it is also an automorphism group for G3x3 in py3.How can I do that ?
G3x3.canonical_label().automorphism_group()
gives the group by a list of generators,
so apply each of them to the other graph...
(you should also chech that the canonical labellings are the same, naturally)
Since we try to avoid sorting vertices, canonical labels in py2 and py3 have no reason to be the same. And, we use
partition = [list(self)]
well, this is manifestly not true - canonical means lexicographically minimal (or maximal) 0-1 adjacency matrix (converted into a vector). A non-lexicographically optimal "canonical" is not canonical...
G3x3.canonical_label().automorphism_group()
gives the group by a list of generators, so apply each of them to the other graph...
I really don't know how to do that. I have never studied or used these tools.
Well, applying a permutation p
to a a graph g
is just g.relabel(perm=p)
. E.g.
sage: g=graphs.PetersenGraph()
sage: aut=g.automorphism_group()
sage: amat=g.adjacency_matrix()
sage: g.relabel(perm=aut.gens()[0])
sage: amat==g.adjacency_matrix() # as expected, as a.gens() are automorphims of g
True
age: p=PermutationGroupElement("(1,2,3,4,5,6,7,8,9,10)")
sage: g.relabel(perm=p) # but p is not
sage: amat==g.adjacency_matrix() # so the adjacency matrix gets changed
False
I tried this with Python 2 with and without this patch and get the same error:
sage: g = graphs.PetersenGraph()
sage: h = g.canonical_label()
sage: aut = h.automorphism_group()
sage: aut
Permutation Group with generators [(3,6)(4,7)(5,9), (1,4)(2,6)(5,7)(8,9), (0,1)(3,4)(6,7)]
sage: list(aut.gens())
[(3,6)(4,7)(5,9), (1,4)(2,6)(5,7)(8,9), (0,1)(3,4)(6,7)]
sage: amat = h.adjacency_matrix()
sage: p = PermutationGroupElement("(3,6)(4,7)(5,9)")
sage: h.relabel(inplace=False, perm=p).adjacency_matrix() == amat
True
sage: p = PermutationGroupElement("(1,4)(2,6)(5,7)(8,9)")
sage: h.relabel(inplace=False, perm=p).adjacency_matrix() == amat
True
sage: p = PermutationGroupElement("(0,1)(3,4)(6,7)")
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-15-d9b1c60b9f74> in <module>()
----> 1 p = PermutationGroupElement("(0,1)(3,4)(6,7)")
/Users/dcoudert/sage/local/lib/python2.7/site-packages/sage/groups/perm_gps/permgroup_element.pyx in sage.groups.perm_gps.permgroup_element.PermutationGroupElement.__init__ (build/cythonized/sage/groups/perm_gps/permgroup_element.c:5853)()
502
503 degree = max([1] + [max(cycle+(1,)) for cycle in v])
--> 504 v = from_cycles(degree, v)
505
506 self.__gap = 'PermList({})'.format(list(v)) # Make sure it is a list
/Users/dcoudert/sage/local/lib/python2.7/site-packages/sage/combinat/permutation.pyc in from_cycles(n, cycles, parent)
7041 # Only positive elements
7042 if int(flattened_and_sorted[0]) < 1:
-> 7043 raise ValueError("All elements should be strictly positive "
7044 "integers, and I just found a non-positive one.")
7045
ValueError: All elements should be strictly positive integers, and I just found a non-positive one.
probably there must be commas between cycles. check the docs on the function you get the error in.
e.g. [(1,2),(3,4)]
should. away from the kbd now, in a train, sorry.
The format of the input is ok. I tried PermutationGroupElement([(0,1), (3,4), (6,7)])
with same result (i.e., error).
As I said, this ticket fixes 1 doctest and aligns the behaviors of the implementations bliss
and sage
. I don't understand the problem with automorphisms, permutation groups, etc. and so I propose to let the resolution of thee issues to another ticket with experts in these questions.
It is a bug in the constructor of PermutationGroupElement
. The code assumes that 0
is not in the domain...
A workaround would be to relabel the graph vertices from 1, to n, not from 0 to n-1. OK, our flight is boarding, need to go :-)
Should we open a new ticket for the bug in PermutationGroupElement
?
Replying to @dcoudert:
Should we open a new ticket for the bug in
PermutationGroupElement
?
I just opened a ticket for this, see #27881
To test if automorphisms are OK, one can also convert permutations into matrices.
sage: G3x3=G3x3.canonical_label()
sage: a=G3x3.automorphism_group()
sage: pm=map(lambda t: t.matrix(), a.gens())
sage: am=G3x3.adjacency_matrix()
sage: map(lambda t: t*am==am*t, pm)
[True, True, True]
So one can output matrices in py2 and input in py3, and do the check. (assuming G3x3 is already in canonical label form in both)
Running the example with py3 gives [False]
with this patch
sage: G = graphs.PaleyGraph(9)
sage: a = G.automorphism_group(partition=[sorted(G)])
sage: it = (x for x in a.normal_subgroups() if x.order() == 9)
sage: subg = next(iter(it))
sage: r = [matrix(libgap.PermutationMat(libgap(z), 9).sage())
....: for z in subg]
sage: ff = list(map(lambda y: (y[0]-1,y[1]-1),
....: Permutation(map(lambda x: 1+r.index(x^-1), r)).cycle_tuples()[1:]))
sage: L = sum(i*(r[a]-r[b]) for i,(a,b) in zip(range(1,len(ff)+1), ff)); L
[ 0 1 -1 -3 -2 -4 3 4 2]
[-1 0 1 -4 -3 -2 2 3 4]
[ 1 -1 0 -2 -4 -3 4 2 3]
[ 3 4 2 0 1 -1 -3 -2 -4]
[ 2 3 4 -1 0 1 -4 -3 -2]
[ 4 2 3 1 -1 0 -2 -4 -3]
[-3 -2 -4 3 4 2 0 1 -1]
[-4 -3 -2 2 3 4 -1 0 1]
[-2 -4 -3 4 2 3 1 -1 0]
sage: G.relabel()
sage: G3x3=graphs.MathonPseudocyclicStronglyRegularGraph(2,G=G,L=L)
sage: G3x3 = G3x3.canonical_label()
sage: a = G3x3.automorphism_group()
sage: pm = list(map(lambda t: t.matrix(), a.gens()))
sage: am = G3x3.adjacency_matrix()
sage: list(map(lambda t: t*am==am*t, pm))
[False]
and without this patch, we get
[False, False, False]
thus, it was broken before the patch, as [False, False, False]
is obviously not correct (probably due to incorrect indexing of vertices), and even more broken after the patch, which appears to break either the construction of the graph, or the very computation of the automorphism group. :-(
To rule out that the construction gets broken, can you compare the adjacency matrices of the canonical label computed with py2, with the one computed with py3?
even quicker might be to compare G3x3.graph6_string()
here is what I get with py2
'~?Ex?????GCH@aUBIGU?[oIi@aoXEpgIpSFOJs[DUY`LTa@}DZDuLYHyFkBHTrxhHf^IcV\\{YJiBxbLaJxWiwL{@rqEA@FeOoWDZWIHaErl\\tAI{vfUGFZl[{BqEEjtXZ@PViyKqEFi|_zAqpgwXyGqx`p`{BXSppOLtBDnOBDepPlq@PF[KE~?KBrWgpB?gJ\\OpSK?oKz`_wI@_BWul?c]\\`[FUoAY{sLPVk?dj[OGfYocTo\\O_nQocVPVH?^hORKpk[?~?w?~Fw?ExPT`^IQphieKULqxKFdpo[g^UQgnEfK_NjYDTxJKj?NVkHbyELJGF]Z@[}?{uKguHTowbJ\\PW\\_lMIPgrmBIl@XwqJ?f`Pe]fk|LIw\\Op[nIzejPwdWo\\fMjlJq[ETP^Wu@llEe@TKFu\\_JUqiWe`Wvql?ZlPebFgbuDYrl`u\\kKtHyBlcvPrrXDhI}CZklWyvX?nj[}gypWTxk]Bzf\\w\\iEhNeTkfZrnIjopP|KxwO@fWWkvVhVdgG_?zdCZjlTNJWS_?mXPbm\\XrjWRCLlesFiKthvrigPVZl@f`YZRzjJCBj\\hDjBs]VvYWEWf?p]vt]ujIW\\LDI`Pnlq~R]SgjDPMGo^l{vqyowZ?deLziMGVZMPjaLBJP]ypoT[yXeqc[`]B}]FAe]qpMcjWhaE`VxRL`cyZnR_RWL?|tcUpIxmvMSaYDGtx[Tgg}YnqfFlUyw@VZRb?mhmBhZ\\k{OLU|IoEZbWmEZ\\mi?]uYY_MxYbKBd]?auNf^Kj[izurCq}?XYMy}i]ps}\\mCkv?auFmvKytK}tm_z?`adZIzsrjwN[ZXLcAFA[ri}RrvA}UucjG_ic]Ru{Uy{RsutWJxbc[_~lmDBjxA~rOFtTWj@^U}EDuyC~]cEx[XbGv\\n@bM}?~ufA[\\YIQ|`u^eyo^y^PGgs|`hLUNhxnbD~exaCTdZBQjg|Vh{sZ{vpOCXvcu?pf\\lz@J]zRNtAb|Xk@P\\fZ|CTr|LVZca|Xl?o\\\\^^@RU~RRvYusaey}i@Yjo|]EE?upZkWhk|qoKrjF\\ggWD\\dtkKLmne?]ZS^X`a_MlYwlvH`sQVWVp][G@YvmJRF{RPrCjaf[lh_CknZ`qL|QW{SeYFtXxG@WnygQt?}DEM{\\NMHSiA[ajoiiQJoTPytTyiPM_eIJlBKsOvCMFtbNpqPK_tEZKW^|yfgXCYzO~kALoDIdsz^v{YtCXLf_~XCbWB`Mh|N|zehPPRmW^x?jSBIHl^BydMjBaizx}Bd_Y?Z\\`fT]wRwqjA|m^WiYD_Dupa{X}KVMSYejy}bFCW_YthFfAFxbgqm{z]q]gAAIg|\\ipALtTRdNZlmhjoCC`o}upi@Dx[YkNrj^MYk?_iK\\tmM?P}@}@~}MN~?w?w?wFF?w~zx~nbG]vlPKbEz@Iuc_iq]nN||PI|t]DHSVwIDsgbEqn]nvvCh|VUKHo^gadYIBbMnUfyGBFXUaOJV[[EhKdBtphLez@AMq]KOQfxX@yGhaluWZb^_`DU\\WgAs|LGjSPotrRRP~?PJXo\\eErYgg`UhdORLqTFyA@ZNAjgTud`_olhK_xXdiNqGDkmGz_\\ueEASm`sCk\\DyxTX{Ma^pLK^T]AkEkVnZ[hdqsqzFIVwJozrX_k`wfnuwxdYUU^PxH}DYTx\\geOjS}}tSuYU{kZ_G\\kvOz]]WKDjDxutNKIlh[r?IZmkbzNN@CZWNhmlj_XkxSy?hYzkFlllCOZgvdjqm_VPNF\\VR_Ld]^D\\ou?lQOnTViLWVM\\]sgBhtvbZSL_XccNe\\wZkBt[|Ue@Uumw\\ZDgBscE{p{jShlSAQr[\\~dLaA{sKdmW@lREtKJj_QTbk^|YWcFhhDNM_RQefjAi{PHKkt^xYY_fLKPrm?RouXzuHbb{mvUNdLT{AS\\qykAl^yW|}Aii|fm\\FfRD{aDTs{xAZNuZM^OVFMr|\\`yY[vOKMrfbGJZ}hjav[ZpVey?oluEo\\Eg]ZI~HC|gommkvEjuoEBMsMbWTauxR|GdySTZes}FjYoIBrWjDW]E]kN{aRyPRRsFkx}a\\ci{]yJAzSaic`LCbZjixDZi~abkK{y}RA^DCmDHJC_zxzN@j[^rDUXfT^IgNkIeIHceOT{~US]tZ^CmLRGzqVm?U{IkFeYJhGhic}bZyKwZYBue\\kAVeFC\\StMQTBgTy\\lrBp[iFr`}g@^QbOxec}QOaq`nzpcnLDM[DatkEQO^`aERaDVhi_nzwhNJSht@iLxAooVdGgdogVq\\AF~mFHtQ[mGpLrGX`Ey``C{DR]ALtyf[GcVfTHokMS^?YRWzRNDTEYg^fpmWKKtklI`hMF[AqYbwZfGxDVP]]xfObDVksbEKhTwEHmFhMtFDDzVB_]oX}AsxzUtZT_X[?}hdVO]K@YlIWVoP~Aht]dvYrGXS_]mI[qMi?UzdIHyGnpLJfsj\\pXDeOF]PptBf?Qz]{ldycqui^OSpc~@Pj]DKv@jTAFcH|[ZNpMTk[}ADhF{GpvSYEyKUwDM`B|RZMxJLbdx@T`VwcUtWYRkUVCD]?a`N]q[wllgoJ~H]W[KW`o`Txy`[nUpGN^qTqLjXSQ~pUsShWISILVj_]ivbWD|zGyWvYbAvye]ESL@R@PytkRrVLY[kyzf`e@lLO@jDyFbj{|Kp]]EJHFjIXltrjDgD]M?PsZo\\ZZfxEXtqaVHMZXW{{ziF_FYp?Uo^GxjnV[TFfiISd]NQVhdmRNiojTAGtdMovYvQs[rCEK}F}IdiX^cN]oMpaOLhikVyVeUMcsCimd}bDeZJsdyyHpoIDps\\B|J{JbouAFRe^cU^In`cQHcUZcDMlWFk|EfOtoIT}ylMHiy[|Dc_JIUtGXLy_^FwS{hiOTl{vXRBhrbuES_jG]pG[m]?zVWY{HxADvmzFGauj?f|afUAuma?tZtH@ezFGPn|dXa`E`meGe|kM\\ATxi?LuliAH~BaDl~TFP_Sp\\QsB]uh\\`BjhGDutsOPngy?u~yEwKQWYy~oTVrGVcChDQJXZgfbfDjUEGpUI]FnL]~AbvaIj_JOKqYqx_|S{YVacWXdDsnU\\j}G\\]ahiOJOsImUmAxqw]TiEHDcfe^SVS{ts[rPu_b}VNEnaWurQijWTAIjLg`}l[ls{TkW|_I|rj`zeSLnOxayKOXbZa`^bk[y]W{kNa@vh{wjyMDlhbMT`oGmNUOZkVzRhfYmI|UMFbtM]WDH]k?BfR[lbL_skTvrbRmswumLS\\XmVU_XJNC?NEZx[FiHd_r]{iZeroyukWxlq\\]?[djO?\\TNjSUwHqbAPmAI[~yyTOeGIuVpQd{MkYLk[{JQrALglO^CEbn}jPcEgGtruEH{pki\\YMmHStOlgiWJo_t\\}|hKA[CbhzSHvQmPizBr_kwkEsrApk\\JnA`kuXD\\]A\\jWDzuWbBssQ`MV]ikTmBkYrySBmigNZKFLu_NxnAINcokHRj|F`iYItQzrAIze_t\\gduu?vllCK\\r?kFHnky`w]chdbHMfVW_@duOzfcaAkf}IdqN~ga]RxmncHkiHVet[GAFTo]fggaLJ}gxS\\~q_]dvkzqWeVCbrVl@?QZhFqxP_MH~cxWi~}OJc}uzVv\\NnGcAreJTXrtWj@BA\\~cGPAayqLRtimHnuh|xHGTdUSzQuy`wGSRZ~@?aEKubW^iVaZnUtvsh@KeYs\\Rr]Eg_oL^|?_oWMwjD\\yYiZ}M@p}@oMN~Fwwww~~???w^_?^~~_?^_[Bb|R`VKVAb\\@gXiznukCuEEJswLwwh~yhNKbE_RbHsXoTl_kBhZ|}tAbSQH{tA|Sp^|cfhdFCJIc^C]GZUHGmenvZoapPafrCNfGf~yH[uPU@jjA@ZE`Zmpk?ZUluuwBlvLj_wyUKzfpeoL`UY{GDkIhlfUg?j]tuZWFmZhxbIxWNYv`u_UbE\\iAHYETYyto?\\rmZugFttqmafMSUlzaz?L`iIiRKot^o?]YZcTnq}SDFcgn{btHL@tDQm^BkIVBcYIzy?LJRyBmyvMCKy`F}q[chc[eYFjeMhXbJCo|mo@Yhn_unJyWSVaa^kjpGtBpDi]\\IqmOv[sV|rdXZcgQWKCgxsutVYF`@vyAYmxJx_e[P^bRN{{\\SncGPWgaclsZpvWX`BvkIM]hNd_f\\?~Ss^vYfg^Q_IgoSI]Yu[xkU_bzwPW~Czi_Zm]sZoQmmaV@LFCOYdFFV[PeZQ}Jy\\UFyIzqhh?jYliHE|QRoLKkABsaY]^AirLV`~QzB^BT|D\\?LerYoRiuhMCsROGjPdd\\wMXNR[ZlLsVkNZqEs@ouOMljl^zoKRnLW?ald~hRBt@Hbx~ASTw]RHal_v@Fliv^{ooNlkWAEtU~KKjd?drf|IDRe]GsWu`YOiu|lnzOgVrpgCBmd~`TRo`Ijj{pQFh\\PWbkVw?FF??F?{[^{B{[?B~b~_N~}M@pp}@poMMN~~|o_vkZjkeS?ynLl?QcbnGHUZV\\B@bRut[tjUitymGLjSzfXX?FM{]W@`PmyCbHtncSSK|nFpyNRi]qwGlZeZjMP?]NjN?OgjNoHEY|^?p`T|fMlRVbs}DwlYodYuRRy@iZOwcQtW]UFmjZw{a`sV|yHoWLKdrEv`G|[hdxCsmGwP`mgtJRtpnt]BAkZ}sqhCEiQyLugHrta[}@Kyo[DELwTqd|bZvM_pkF~ebaPDJCbk|UEJjYkIntmAp_ZgoJBqubxlblZ?Ls`bZFFsfce{|PPi|hPJ|]gbPDjDAgtLk]zS^EkAxgSMtbnAxsll]EB]ZJEZnL_uGZWKRAll`vZ`zFOL\\@`UtTxbjfe^pRENhPElY\\CJ[Be_sj{xV?sFCRRriotimniIbj\\Nos[NR_TuhuATiETOX\\}KmaWHoIjffHNFM]{HUU\\VwsTFYWPlyT_rWadcTZ]jKoeHSArtwrLWvfjEEcLl\\i}VjTeC?\\uk?b\\D?]]uvxly_`ZAe_Tig~Ugkc_v[vjxjlJOGEtZO@lWWD]ll|zXwGPsXKBSmLvgbIMDj\\jvTZX]@?Tmw_JZB?Yt|lzZYp?Yox_FhantHXD\\vkOqUuU[D|DRnU?THsn`FJQsDu^\\whbaWxTQTUctL|U`cljKeH}EMvL?JSivIFDhkQk|}uRB`TSxhBkQmQ|\\_kdmTd@|`qnp_RPKniBhRkDkn^ebPoVFEYS\\ClofPjliI{|JRgRDWrm?og\\WZN?nVWLxsT`avv@YXKIy|kJev`lYq{jCo\\BrgDBEtEVSRTlbUtbWWZ\\sEsTINNtWZljBjtUZWEbWUx_KWTwSyoi|YJfkFPOv{ouaLQ]^mn_sZnJCk[UbAKqaw{tS~TXDTFEJjdYaxca}g[FyFxnMpgf]kWUhJT@QhPwx]H~KkiWqhFfqVBNHB]TEF{FyvNghe^JPddQfAOmE[\\Tp^rJGVCwXxsUozX?~`TB{b}[|J[LOKv}ugqAtGEfJ]Y@cr^dMAFjlD]Pfg{dfU]VHMks{o{@\\^|UD_Lq?h{tm_`Kv}RCH[}qFcy[jhJfUh{SilM\\DWBm~mKKaLo@jixs`HS~sY_Xx{TMdTxMH\\uTriHcsm@LUDgXkzXEhJMav^uWyJHfSsttbRmb?rlGl`?L~alXM?Y{Aqcy|kDqebSnvZoxDfHyLYm`fv@`FscUp?U~HYpN?RtCi`j^X@mIicnvus]HXXUlFl`T{pPD{Hdg_P~iWdt{jTfemFh@{{?s~SUuLh_uKKCUXStdiRVtcIO|nGfUS^NWvJfXpZOfVODV{Hj[ZaRJAa@hrJXShT~SPgLu{AxhSxzMp\\mNE]@[{_K~dPujXCeYKCKYVFXgQ|vcBOlngFpobXyFrHVWi^MV`cyXKYBiHm~OwbEPfq{}SO|WOTkAQSeXdd{Jwc|dFNTfQP{qapEXa\\}iT@oejf\\[kI]Q_gx@`aJqsXzEyHtXMVpfeD[uGuAyIZmqf@Sdhs~MkAmY_`lAECiu[RcDyx?BJf[ny\\Ih\\@i}rH{DJwbFpKBR]bUCn|^uqlUFWdF?^ic@Cz\\J~MqJUoUfjiV`C}gL\\Q_KvkNDH~V|jeXg}EahCzpGAM]xZ}TqYTaK|vQ]HHv@Xq[@S~`UgNzvlsnPbs\\rfQVj[Ker@FIjPFtEX_hM?CdKu{\\zsF^PZsnHhZYtG^OTw|hI|iE\\hAFP\\cFmDiGsT?IQXZ[^NwI}gnlMRTukZ_n_MylYUjZDdiaBqZDBl`yGLP_GcZE}NZuG}rJ{NQXuwvGZcRmMM?NoMM@~?F?FwFFww~?~b_B_^~{^b{[?[N}?FwFF~~wCjG]ttUZIHRrJFcl`dAkywkZW^Sp[aG~zhKkcQFVZ_~KVcpXQ}fbkXoMTuW\\FXGwFJrbOzPusbwDD}~HhPK_s~Sb|G{fhcXy]\\dcohtqgxRXaWbNNFAlbvOrgCr}{ejHC`[|qF{KyVbvv|cX[bgY{fCJq{`PDazciNZcDES}}XOG`qu^WV]QJKGyQ||zXa\\Khc{f_rM[iQ@c~EgYzsHCfNmZAB@iuVsRxoigo[\\NnnZC[wedfQwQlNPPOqfiojT}@EFJnhdAGVJXv@|hcsQFJeejqtH`]Jee{M^UWoXK[q[]Jiqt~HAiSMSOxwxJg_^ZD{_akp^U`JBwtTNhN]MaaiIeeptM[ezyWFD`QohVTPv@A}wZcgLbXnISiLouXnKlxmBEaMRebc}KzZmCWdbJ?i][Tr@E}g^QG\\vxbceO{epJdO}xI_{Qi[?PPZJYPRLkve}}Brjf[f^hXMH`Q}yikeOldgijC]|Og\\Oww_CTIqySQ|[lxm}`{]]tFzmYQhPCn]VERWKrkKp[F^a`FHbdO?oduTgpUyp|Nzc]iz]I|}TQ[cCcJsstwPlI?s]r}xIRR}YCubpU{MPK`uhWA|]hYI^KqXhGTxTovdLNSDYW@fUvnpQSzvOIuMRfpSXSLlHOLx{JWr]DqjH?zQ{_}\\LMSFR_DTZvnSHsn\\GJ[\\PzbDFOTkd_Nfql_tyTMbcC\\rSfwYP`BkCaXrH]ITfk@||a~wRt@|QqLcUUKfnLvmYKqGZQeObuyU_WSl@aeVHUqDfxA\\~I^yDv@^BalWEUjDvL}]whSgZCiS`|]WsIAepBDRkeYKqzGVvXN|_~CZdLExBJFI\\s~Z\\cJcDk`go^`P|{VWFHZruoofaarbDeRJwezBGqvD`ywF{LLEphmrRQn@cZaBFnirGhMvXla_{dExWXUUMweuJGfjKI{onoYYmRJTwwd{I_}KKM}x[`ce}llBAy`bhgXXq]iYsKgxlSYma^`RRiRb\\kkewYA{[|AFtl}CXTaX\\YMxcghFnzqkcL@HHA[vQlRshxPwM~aBdNhMKurQDxZ~@`XiXZWh|DWXBz~Q|GL?XB?^FQyTu`xW{Q~iBFRw[ZFjR@nJ^pClHLd\\cnaJB_z~lYhAcOeCJjLZO~AmkNA^xGiY{qjJ[uqFF`tadU^s\\c_zRgPoOEezjQUNr}obUmFbSjPFUwJlQNUKvkTu_ptFJSMr\\ilDBsxaPa?NK~Ecr]^{SFlamMHuC]N`Twp\\bW~OlY`TUNJBFT|MpPFsm@T@?lM{sfJ\\^lOTmi[VGuGxnCu[KxjJ^?bUIFi|Pnuxi_minPEjD_sPZmLglS`t\\on_}d?zbpCsUegBKUm}QtED]jW^}mMCYyZp@m`cKpJylhJF@U^alpMsGrZU@TPew@YFi}TF_pi|[J~\\UIBZJx_moqDPD~EsjFGZRtQ{JwSJijOJHiZ?NBNZgeAUi|iEN|TufdqWpyD_VYzjyG|Sx@NqiD?rRBfmh{crlvMT?WAyoahtZoo~mYs|LqajcWa]rnMtDrdQBmfAaGZPTrtrgitl}Rg?oEtOhg|YpP}uZYxtMBf_Y@}N[}crppoQ{wiOHNDFZ]VIJutyhcA_Yc]euece?\\RXnCr`hkwMU`_b{ovmfqJme\\`Ki]hA\\hXevVzjna@CQVMlLHM?d[tN`UeLL[QqiCP~CfzdsRzc^_YhV`KXxTInr}x|o_SChx\\hhHOC{mewJqUeNAXXQC^gr^M[i^MJsROxqcdre`\\x~s}{CQ?cvViyMl[MEYAjEH\\erEBElkNzBMaKb@rKLvDYvtnLb`KFSU{ciDGumrtoxjWwioPsLRKlwSWLn`myJ[BSIIZ`Zib]vL}LXIC[g|tHCaXjfY{pw|PpeGMokTqlgWgmua}kNKJOKXMbXmLj^MyphaO{JNpGeQJn]klLAF]L{`@gVIfheLdLClGXzChEhhPNrjh{YyvG_RSYUp[}IS^vvbJRSEvD|D@WFqFyDhfPalAJiwgThRBLtxp|RmVgCQosetNMQ[N|vrXRQ`Vo~I_bCyIzQkqYoqe@ttOqKyDE{{{mxlJ{A@pUcwfjiHb~fQwJbpdRmeDhIAzYyhRsuDfA_zR[[czeqzC]TTSe@VCsR]Ub\\ylHuueOrfDedxKLiORzRdqYhs[iKDUjpwg}e[u`ybeCkQ[IcureF{vQZlUiOymEUfwguaGNlNePjLWuKKPsnbiI}XMuBw[UQgPwJSuhwVuzQX{sU{j|eCeEqvqDSrq{{RzK^qCaNKZ[KG_ZWMmlqoYqJo^VoYH\\kQpQpejMz]@MDMVsbPVS{{r]gnqg_Y{F]IG_EuLfd{SUMRKZfqIQ^[DcSjD\\W~ZPHPdJz_XJjfVPnsR|DOJUanb?oAuarq}bELIlD{|@iRy_koctusJqu}WZLYWLdkwxGvUxOj^GwJUQx?PZQBqpI[NOHBie~QRh^Ke]uNtGvdu{IuNR@WxfbiA{ngTFzCpJaeq?WuaNU@rE[aGXdNuQnBvXD{jN\\?}lZsgytLCY]VFaB{n`Ovkq_lgyo@Esg^ICtQ{A_m`ntG{rvHFkd_hysvdmMYmChFtnmaJ`\\wpSAVIZlGgNIKQvsrXOnv{``HW}ZJLOCcPgHzsuXnFUX`MBvZmiQhZ\\CU?lWfzAgIq[Dlxk]CZn{iDGZMYw|ACcDEGniZZFpxJgMOzZ}XIpd^Gr?Dke~EObUI_nnKlSB|~PQcPjhsudAQ?fILpPxYGRUr_mhl^tXBDr`ZBlMaaqU}lsX]?iEr[hko\\VBZsnSV]C@uqo^EFRWQUMwbVJN\\zOWXwhYNhkEKS|vkorqCWtZHpibK{I}xZ`ft?ItQp]EM\\_XEjiBZbt|\\Og\\iDk]ekWLFNyvArgB`[lMUJDswM~JL`vd?ZEUIVE]QlJLS}od{KOBzxLDknsjP{hH~CFz@iHISqfNyHA]|_eHHIf~FjTBdTfabRJc}sF\\GoB^\\R@{l{hT]bBmsDuph@JPUJr}P?t~OggWRh}xrx`dbdtBRd[VZA^KP?nnaWuq|okzqEVuA]sSodhBHy~I_enwPCoqL^t]]fUuP}KfDr~itJ_eKTejmUYKDgGfsPo?FUE~b{SeRR`mpm@L_Xqp~O[_xrmqFwXpNV~DmX@MEWnTsktOiPDMoYO@Eqlzf[`MUSplhsHY?{e\\yPwDx\\jWNpXTNNzdqh@iPYju[ifAY?p^@X?@VINynSPhpqUleWFWAsxVlBgRr@aGqumsvjd{|YTM?kPqvg\\GpgsaS_uByvJ^qqbZ}@q|}j_HcG{uOX{VYOkAklfhu]d{|uDi_LPSnkNBBhK_f@KPzkx^yqJY|aS||xoHWAnKcF]LVAE_[lb|JZqvVuKsWEHbd}BeHShoFGHg\\lsn~JGlvgRfvj[?xARhcaz`kv[wz_|@notmGWkgqDgiVqm{PFtKh^tEI]AHQ]pbCAYpm?hnUma|yZYvRru]TrDXB~DXtAbFAoX`q\\pvoamrTB}rBBsDHQ}BWGFEpsBLY|UFysu{umnVY[yLSJ}K][EBRBG]EH|Mz_q^ROr~PGjcCfHyIgGdbUWBVNNWZyeunS{}eEEZfbj~lda?jL{_ElHy}X@ffGqoGongrhVsi}lOGKh]DBZLzcvIbSXQJMDERmkZ~\\fG_ZP|G@nQ]\\ePdwwdaHAjrBw\\xMnZOGHMU``U|fwfWpUJCXxP`XfUjnyyX_BivH?mYVNioU\\Sol?hR]H[p~G|rXCCMUWoMuu|RKwN@cg~pss}{nk\\PLbt?yILI]YvjVALXropwIyF?\\@C_sDPkpP|TvusIG{OwcmTx~FdL|X|[jEKywBdPYQvP|wyDX[mSko\\Qi@w@cEGKjDgjwy}v`DHogxDSy{}M\\L|XvS{IqjWFcKYM\\L}jKFDs|OuaLiKBcCQJ?sbTcf[^^X_cj_ihRFYso|SrgFBcrOo}hYgEZ^^CZhh_qWwSKvys^VLuCTKc^sy~KHfch^qH]e?hCeWtsqhESkkWK\\mWk@zVv_yxROceiKIlzkNVZ\\@`LGvk}^ghTwg^qXMsOgSg]IuZE`Qe[kDFmTe?lm}wTrYWOep`bP|lbnNZ`DDHU|VN{SY\\Or|GfyGOqPJs[nW_oac_nZe^S[ar~PnwaALFhHKnqPnag|{d@~y^@QC{zJQLPPOdtxjpI^IhzKE@c`C}tN]JHEz{r^`CDhMXBT]aZ]FDzXIF~q{GoJffEbaQWSk{|MWR~Gx{aIGaWB}plxLHbn{R~@CEd]CrR[hZ[WrzXAN~MwcGNVSsipPDQVUs|EJ}]_IERNxJen`^JugI`]{uIphkA^smobPGwQkloMjx[H}s\\ewiOkAkptUmb|JVGEDcVyRlZdZitkGhU{liRhY?^uis_rGeC{dwFN\\Sp]tVTiabK@jD\\Ll`~Gxw?pcb}Rfbyd{rmC`e^TkLSz?J~RWoTCq_ya}@uneQfZM]LqDI_NGxdmk^ce`PfZBBJoavNgVEWyaRHdswl`{|KuhMqpU~M_fwp}CyLArFMyEZTaNUsDyBqxBDrXPa^@Q}^?{UboeUOlix[JxxW|BekavvX@nHrkJdWQxJ\\RAy{Bi{pLSMewKF\\dCbmHByzCw]FI`qQtMjSZjfJKqwkrZvWHmdVgNcWJhNLhInSInN@Tc[wtZgCBETS~ymqA@LhnPccB}Ct{w}Fo{nnRAirCCfdqn{fTh@{djPFJJm}@\\Y{XZXCAM`[n}Xk_aJYNdHGa}hFnEmhsmlytOrkP@bhmZ{jpkP]dWrDXXy}`NFmFLi_PDTK\\~Jl__SZU{`HOvdJVird[rq~SkYMb@AxtJ~PxuOZqWtEKk~ZcFen_vGHSKdMxVuM{L@MZNjA\\yk@DDi@~R]SgZ]tHt{O]daXFEK}hoL}WpTJnLDq_RqOUGXH|RvLVeKIVY\\sRZpoHAlCLuVtd@V{wNfkBKwfO[MTvI`\\swbbNZQiU?VQOV@XD{\\]k^Qoa\\i}oL^M_DQScVtVdo`vnCm]sDiYdOwirwwbVegpo~NQXW@ExYL}qPugqC[\\kNtSQrE@UdKo^{tYY[OTmRDdqMdJJTDL\\@U\\Yw^^OGiI~tAIVqrB~k_|Hs?wzLJtpENAaQtLCN~FEU]AFidSkyFDrRD`jV?U]ZiM}sAahn|?g[yV`^{cNgi_TT]KzpKLgWP]Egb~jEij`BVCmE^@qqikos]WRJplbvsaQCn|cCheaHVNrjKQB{hG[OefxmZhzPvJFcdTyJkEuHCHrRb__HuKm@P]lrI]~jt?{m]JyxORp~Tqi_VjQAc`L^pmtjsjjFMdAzTNPKrB?VeTS_`QmDsGbv[jBv~MwDxdq^Ux?\\T~Eqw`NJQES@h~Umufoxkt]PRXc~@NGp?]fHqACRiUWCrzSkjz{~CRifi\\wpHEnm^GBHnOS[s?~kY}{YdRFcnBcOkhvcmO}UCmPIp~BcMMSj^xcfiYjotoLcgwQLN^fHCH^oOsk_^xW}|UFBXskpsBLBftIanUCMqGu^bHQYVB^vXHqjbtFQJdAmAThzts_cjx@UTOFzLf^MIdL]Qs]@IiV]JDRxOXXSbVwhIjJIN}xH]Dm[jXBUIRthL?E{c~yKkfRAn`x]SG{\\kQEn}I^[ePU[hDCLGX{KfG^S_nL{vCmErFOfO~o`jLIh?uhM~ofH]SD|RisiBizORL^sRzscbbsQIGXajeD]B]WHZjwydaeieTIh}cJNEas@YxJ}pRHxoexVe[IFMz@HN^eJnqCpjqPB@TEfQPyDxgJMzjMQiWmTPKj{oW}rixuCH@BxL[mCGkztwvAqCM{}ziv^EZOUhCC}CgbJ`zvLTJIl^LP@xsbEwlDjbjimp}CAOKxjTY_oX^V[NaKgI~Njre}sUsEwW@nCWEie]nhlAwzN\\B@jU`TjJHXpq|EynOOQCmk]JWQBNj^DwL`BZjl}NVuIsbWp@LoRAsqVt{peSzFmdCTzOMLjDW{]FoCCDAmIf^aLuxySeYeCsYc}Ze]CiY]fJ@\\^bs}ad]iyLTLUzdR{EKeot_\\Cdkq?~?_GI`wpr|PMnreCmpSDjQds}bscQr{jIBx|VewpMvRpWxau}a^pDXEgy@wglWSD}?P@Ahox\\xKrnV`QmHWTLMRe}JeQIjmKkRfvMZqHuZNK[YrY}P^`FHWjWBeIVHCRsKLjr[WBlx@e@Jk{IzhMdwKZK^qLYHmmDsmgt@E^mIPQdpE_Zoyz]tllzOEH_QZzxDDjy\\aAZ|AHaIl\\I^YQf[IJYNqjERlihejahOHvyqDCdsT_JrIz]vjlZSGhOAjv~?ovnKsPJ^_PgSuNKNjQY^B@nB|FEiUnDVRK\\ACmzYKcarQK@|HxnzVUxk`Cw@D}~}@poN~}M@o~~Fw?F~wFw?{???^{[B{^b{B_MNpwF?~~?wz{?^{?[[????[^_B~b~~E{hk_~gMnKXh|^iDgPYWxcZvBcRyKaOjnN@Q`XhITXDQc|HULVNwjN@IflAgSWID}JssqP~_fmo\\M{~Ie_HYi\\EZxPpRkSh?x{|AQhTHaXhPRQkjWLs~eK|?yXtQIPGWRuFrhc`}pI}gmdx~`TGSh[mPNsieJwMQAM|[bGThcHs[cMctDsVX^gx[`KukgdECKFrPUGeuqxwYtNiV]LA[mEtOmBNEQsDlqtNl?eNIqt__}jcHT}QmTqmRL?LxBrYRkWqxqgsBZY]mJJLxMnLGNeSrabaFipWaM|WjmcEhwVMg_fs{Cc~pRg|RhEg@{h]NPThTVNGZ?euxxpbsvaZysAyhRpI[H[xQoEnqo}lAWmhR]AAzNOHr|O}Ro}PK_VgrjLPuFRTyCzMFKPYW{{g~uy\\OcTCYIpV[HrAjzXBMyepkoTbqiIH}fH\\XGVbQZR[KqHJn~vs_SqB{iMaXhPy{K~]ixI_p_iMbXkJhQZxdP^MUhcpLFRHHLzTFLdEYhhLpsVOHL~~ze?SwDzENDDR`{ya~rX{SO[OXf@vSFognnGg}wzCrO]FMaae}chvGhTrQZJKMgCy~~vo`AXiA@XlSiWMLz}_nWnv[iM?|k}\\Cj|d?CwF]pc\\GqpV|GgBK@ews^jMBmo^\\d`uE[unUkOPJLg[[HUt~WTlTz^STGYtvigp}mGAWazwa[wPpJ~KP?d_MxWrnJ`NwRyss]aivFxwwGDcuSxOhl^}Cr[vt{HqAlv]Kozmc_EgX}gd[cRSv{K_DSAyep]k{Q}`\\lpbwYNTm^?uzJ\\xfKZGwlyEzRKZPw?]obLxE]PRk{vGKsL^?D{OPjWLFo_kXhuti\\g^{ze|q]_qu@V{lfwmd[c[mXbZTojTg?}aHNcu]BImmwcKtL]?TwGLLgKvaALEfzPlMe^nXzNq[_rU?zzJ\\s^BiIitiUlJg\\MW?~?ovhX\\@pvVTGTQfm?ewOUbWTZ__uHjueyTh^umuvh]@Wr^`\\GIUOH[@Ki]jyor}vXc]OcttI[jhtyKdHc|IcpPEutX}R~@\\WmBxGbN@@WeQj~fWJ|sjgGRWGk_eSVs|Xa~ZjiFgCy[hhrT]\\`ccq]sYQac]ZJnp^gYxFa\\DDJcCWqpD~t{Hn]Xe_hEOhQ@kHzN]QN}rm_}AQfoySlffwUPId|HcHHU]sm|R{`le[JdEO|@@gxQZ|nOjzkvYEWacLEKHu\\M[q`XLBsjVDA^vFok{y}_yKDw]Z|CjjAmtfhC[dUsxKW]OC|@Emu{U|d^QFOWceIoep{hyU@kpFYLtOi^xZ_nVM{bWaFoynxSfJE^PugeKfUqgmE\\?Qk_w|ZtFyq~gJ_aRKHgLYxq{JCXkFozWdP^svaUmz]ArCLox^{aNdC}exdPUPzFDTH]?FT@U[vqZxjsqWBS^?tZxwTsquwVcVL``CIfyeFzUP[Yu`VG}DHIF~UWIssaVoZMXyhQbxnwdhoKNelYeY@WZoFL|rEuP]tByEmSSI@e|fB^NGXpxQhwVQKKQ~]h@swqQ{RJp^CxQ[n|QKyCdtw{rX_KTm@[^\\g\\[UZWv_Zh`_cYZySVnU@tYeg]cxcKHf|]CZQohZ`K|FmHoji~ceipBM^W{Ncb[GRxYvDrfLfFpJIVmnVsCl_wcOYTIZSKcctI[FCqWT~`iWlt@zrx~eaQncpNIJMfPsmQ\\d@JsmreVdldVHJ`v[|zcQLacpAYOmYTCbcXawRaHhF}axEVobnrf|uQI]e`^Aii^`rMcjQ_\\wZ\\TNRuRfSdI^]^VoCubIE@LDXNAaTQsHwdSQeR|`mGndBzjj}whO|r?}hLEn[oSMG@{MYZzpVRxu`RphDNtwecuKBsn`jEPVaKttMpoFdHwh}vtDF_PkqgjZ^bsGySBb[yYGTS@MSzDzyeizmWHykcJ{{eeYa`]RkLfORsW]jMphCy`\\C~y}EFSOTxCfNZu[_uQ`RkncoTF?DtJa^nHZNm]CVMHS^riYEwKRc}axTBMWd]sjUOV`FeJ}zdDT`@uqINL|joJXAKjRz\\kYAxSpq@oJLBPvzNnlAuw}C[_At@{[~`Elh{NfgqERqEn|hWQT@A]bAgq^rAQb^^yaIH|[tQBxAxWDGdkDU^ZvvpB^F[PS_IpBlV\\`YUtrNVcIQNQe^thhQD@Q[ooeh^hPQJ^nqRAdzfbgHsTSqEOJpBLvlnnkEui{EM?RCbuM}_s|hsnfIP`VHS~mfEHO_h]HIJQ^oiGp~^wghHzeGNna~xaR@gxIYnnQ[?fQcX~GNR]jrKxLBGGx|clKzmdPQSSY?GQBVTtpGqfHHtFyUi[^VRWDvrN}cWghdKTt}iN?QYco~hByNr\\HtEeIGNNkTdR|q`XOiP_?h@Mm][DTEcg{e}R\\KZx{e`Nmb~wWREa[HZvjIwCdMPJ{c\\j[novDLGo`t}Spsnr`PpQDW?IORZFf`FQXGjpZxErTm^CAqsJN[woLwX}{i\\tFUSzhA_XAQjjXZYo}`nMkS|a`PPilIKHUmNyWz{zZqfedVWDMg}?_MCGqtJNdpOmgl}{`|sdXsnCg`CqIYxjLnA}A}isY}BCSLMTKKFW{^yJZuxzgysrXgEj`u?OmABXQknRootW]zyI}XRqY^HQAHHOlnDzYb[bnFas|E@HUbKwSHu[^lEnnNNqTyDvCLEpy?`NYUXwCKfQfWKynit~GgWNogs}Q\\yyAA[veAY{^iAhQj\\aHrrHDPfDNj\\@RSf}glTSNnlJLC{zG{m?SdwTtDb\\x]nkcBEy`SzqQ~T`@Hun@RMj|?sHs^gKu]GckVEFtycLYE~cpkyB|vdd_]VaZXoDA]W]Wqmve]zIGgnIFQ|HNnWOQVYsPLrmqBKRL}ALjghR@tD\\xlBPeZ}GvPc]~fJEDsYwzUh\\P`pb?q?|la^eXCwHGjlxszVBR`BeZn[NTRb\\IVphrajHfdaF`fIrrG@xJudQOpCy|Grp|IteWSwTCQC|tA~`XagHGmnjqxsph`QxX~TNHVD{HvMbhqLDyqgYaxNRpCBdNuEQOsBr{`xpyVh\\ChSbAHA}m@~QkSW_eXvffNXJQ_huM~am[NBxa^TJqgwitdoT`syjggBgzwrH@WDxv@w_UUTSz@r?CKwZr{x}e|prIar[XwCvDKJztuPmdlUz][xGse]_D~GqiWxZXrfFaw_xj?ECY`UCGqran`J_AERBy~Rnq^ipdqTMp[aVGe`~]\\WfTuJt^VRHWrRo?~hUDpXXw}VIuWcMfO?oZChoOZJFByCy?_kgnN{mze}LTWjRLFgFSpKZnfeXe\\kr\\x{kaot[_R{fIXEdxjhsxii@xk?IDaW^Z}OI`qbwCZSHn|L|jMFHWZUpsw\\?fG}i[_kV`XG`}{JGufEIjiaOumF{BuEThOb[]SZMwvlfv\\v?gTQloAjoMn{l}bqbcWzVBedL?xF[yU?k]hSKD}wbIZSsMYyHBY[ZkJwTDdaRUUTijo~enVjyPAgwZoC\\Wdvxu|LhTHglybrISaSi}LKaTMTgaEzwLcuXWWlkqAs{VsRsYQj?hlZB\\Fp]{]r?~FFw~?w????[^~{^{Bb_N~p}N~o?M@o?Np~wFB~bb~{[Po?M@}Np~po?@~pp}?M?w?wFw~~w'
py3 without this patch and no canonical labeling
'~?Ex???C^ckeoLON?T_P~FHYklbWZBU[@zE@VT?bp~FJclUZJWuZBWYlXoFbuKAlVT?{Pw~`ZqxJRYrXZ@nXkLa[tYr_pfbuKDTUji_]NC]NFUj]VJcZLjLeqEr]rXkCy[tYlOpwrpw{AjTTitWFaNwb}GyvclxJ]PlXZUUtcLzB]ovkCxjMYregWruK|bN?iiyimij?fTUqsvwpwuswvTU}@nolfWutS{Rk\\TkZUailLw~CxkBWvT{J[[wAvFwZRihkAilLw~CxlFZEyn`Zbf[fa\\bilbYuqRijXYZ{W|_Uw~BY\\TLlOL}DkzEuif_WuswvTU}DWBWvT{J[[yNwfTUqsvwp{dhZb{LhtSvXZELlMLtTnbWZ@nolfWutTjMAilLw~Cxk]p_{Rk\\TkZUiygAvFwZRihmNF{E~Au\\bZT]VHYfTUqsvwpuZJWijR]NpMZZL`kWuswvTU}EjU[Fa\\bilbYs{]p_ZEyn`ZbfIt\\S?vwUrkZYjwbp~DTYZp}HrXZqxJULlMLtTn`lXkl`kZi}DmM[ZuZBW{Rk\\TkZUrejU[AvFwZRihnE]NWoRijXYZ{WyilVT?{Rk\\TkZU}NC]NFUw~BY\\TLjTnJdqLb\\VolprerYrXk`nolfWutSuZuZL_fTUqsvwprhrTitBEufEyivpbpfbpwDTYZp}HrYjTTitWELlMLtTnbpF{P~C^pMptUplYlxJ]QvcijR]NpMZLjJYqukavFwZRihkvkLzB]oLb\\VolprhrU[tfLOfTUqsvwpwruK|bN?L}DkzEuitT\\TVTT_^oF{@~??BbFHHh@tOB}??^~w?M[TK[dIQ?^~~{???Ik`qcpc`r}??^oF{@QBqRajGp????~~oF}QiBxBbEc??@~??N~|bHhI_xrGB~~????B~chKO{dS[?~_NwB}??KXLHSFMXGwB}??^~w?wpqQYO\\Tq?N~~}???KdHaFcibdc~_?F{@~?@rahbchQ\\_???F~}?~ik`qcpc`ug??F{??~~xIgNcMKYPwF~}????F}cFcfDUPaj?~_NwB}??XIRCNHTFG~_@~??N~{?iqFIREQFxJOB~~~_???wpqQYO\\TXZF{??~_NwAQiBxBbEdkL_???^~wB}FMIeMQdHYr_??Nw?@~~s_{cwiqKRuKF~}????F|bHhI_xrGji_^oF{@~??HIgNcMKYS]Nw?^o?B~~?KXLHSFMXMVHY?^~~{???S_{cwiqKZLdk^o?B}?~_BbFHHh@tUrWZ????~~oF~HQW`xIgwtYr_??Nw?@~~ik`qcpc`rpzEB~~????B}FMIeMQdHTiygF{@~?^o?AcFcfDUPbwbp~?B}??^~wBHQW`xIgwlx[dg@~~~o???pcsdO[xcZUZJW~_?F{@~?Ik`qcpc`r]rWZ????~~oF{wpqQYO\\TMYlXo??F{??~~oxpSpqShMK{]p_~~o????~qTO^G[WsiilVT?~_NwB}??@rahbchQ^FaNFb_Nw?@~~_IO]Q[TXEItZqx[_B~~~_??AQiBxBbEcuZUZLc~_?F{@~?XIRCNHTFBXnXku????^~wB}pcsdO[xcfRejTi??@~??N~{wpqQYO\\TbpfbpwF~}????F|TcMSeKcNTiitYkB}?~_Nw??iqFIREQF{P~C^pF?^o?B~~?QTO^G[WsdnHZqU{_B~~~_???M[TK[dIQukljJYq^o?B}?~_EKeciBfK`nWZuE|_???F~}?~s_{cwiqKXrU[tfLO??Nw?@~~xIRCNHTFKXzE]pf_^~w????^rbFHHh@tTTVTTtTWDVElLlnCz}?~_Nw?@MildhnpbZ]B\\U[lp_Nw?@~~_KZY[Zij^BpTfWtjWu?~~~w???L}DkzEuicxZTZWr^b}??^oF{@wfWyjWulAtlb{ExtS???^~wB~TUe{^a[u?vM{JYmLk??^o?B~~ZEyn`Zbf?peuszpTU~~w????^tmNoufTRWEKuuf]Iiv}?~_Nw?@TUe{^a[ub}IkzElZEoF{??~~oBWvT{J[[zciwthllwf?N~~}???NCzFTZEtlcUlk^_vMi~o?B}?~_HtTklL}K]oLn@mjMUwo??@~~_NyvFwZRihliCxZTZWr^_??~_?F~}Z{JXuLlTN?LrnAujbZ^~w????^{ZY[Zij^Ak@Yup}B[yj~?^oF{??ZEyn`ZbfP~@m\\wUt[ZW@~??N~{@MildhnpbxJSxZTZWr^_@~~~o???lp}EsyiZklajbUeuva\\~??NwB}?plhpmil{ZBWpeuszpTU_??B~~?^r^`ZMplijU[FajMpjUpk??~_?F~~TUe{^a[uNWoLn@mjMUw~~{????N~a\\bilbYtVT?LrnAujbZ^oF{@~??DmNoufTR[]Nwiwthllwf?Nw?@~~_B^`ZMplinJclWrZY\\wijOF~~~???CyiuUe~EMrXZBZoZirdmN}??^oF{@TUe{^a[uuZBW{TXuLYuL_??B~~?^{ZY[Zij^BTjM@Yup}B[yi??^o?B~~{Rk\\TkZUfbuKCxZTZWr^b~~????B}uLt^AvFMTiygBZoZirdmN}?~_Nw??Z{JXuLlT{Pw~a[lilkXno?~_?F~}?ijR]NpMZJ]VHYUlk^_vMi_N~~}???KZY[Zij^BYrXZEKuuf]Iiv}??^oF{?uLt^AvFMLzL`kExv`ZTpl_??@~~_N~a\\bilbYu[tYr_iwthllwf??F{??~~tmNoufTR]K{]p_{TXuLYuL~~w????^xtTklL}K\\TUji_]IkzElZE~wB}?~_?Fa\\bilbYvpwbpwytlb{ExtS@~??N~{?lp}EsyiZUj]VJcZ]B\\U[lp_N~~}???EpmjwUwxrXlXkuOvM{JYmLl~??NwB}?L}DkzEuier]rXkCxZTZWr^_???^~wB~MildhnpbfRejTiEKuuf]Iis??~_?F~~bZRb\\TZwpwrpw{AjbUeuva\\~~_???@~ijR]NpMZTYilUj?fJYjZEZ{^oF{@~??KZY[Zij^FaNwb}G}Kuuf]Iis@~??N~{@wfWyjWulU{dnHZqExv`ZTpl_F~~~???DTYZp}HrXlXZUUtc{TXuLYuL~o?B}?~_DmNoufTRXnWZuE|_iwthllwf???B~~?^upmjwUwxsxjMYregLn@mjMUwo?B}??^~{yiuUe~ENE]pfkXwAtlb{ExtV~~????B}Z{JXuLlTiiyimij?EcxTRAwRQXKeRHcqYmLYZZ]Hv{@~?^o??fSohf?uTHcqXKeRHZ]B\\U[lp_Nw?@~~_CjAR[TCouRHcqXKeRwirkYtkZ?^~~{???DPKwdBQ]ERHcqXKeRMUtUuKvw~_?F{@~?BAwiBSsgfHcqXKeRHUlk^_vMi_??B~~?^o[BSpMT`iQXKeRHcqR[zoliwuo?@~??N~{AYSLocybaRHcqXKeRbLlhvail~~o????~_CyeDKwEqeJDapWkUMKuuf]Iiv}?~_Nw?@FiHfCgYRokUJDapWk^DU\\bUlbWB}??^~wBcomI_tLIHkUJDapWkYmLYZZ]HoB~~~_??AqHhOvARiMEJDapWkUItlb{ExtV}??^oF{@kB_YeHqkLPapWkUJDau{EykxZb???F~}?~lOEcxTRAwRKUJDapWkXquiupe~??@~??N~{{AT`HmIaWYpWkUJDapLrnAujbZ^~w????^tWCjAR[TCoudQhSiTIclZW~@m\\T~_NwB}??P~EDpSEhhPMdQhSiTIcZf]DlVEu?^o?B~~?[dgfSohf?uTQhSiTIdQfJYjZEZ{?N~~}???JJW[BSpMT`iSiTIdQhSimLYZZ]Hv{??~_NwBWZDPKwdBQ]EdQhSiTIdbLlhvail???F~}?~lXoHhOvARiMITIdQhSiVajMpjUpk??~_?F~}]p_EcxTRAwRSiTIdQhSev_vTfJ[^~}????F|VT?iHfCgYRofB`ow[MFB[zoliwuv{@~?^o?ANF{HhOvARiMB`ow[MFBdVElLlnCw@~??N~{@qxJR_YeHqkLOw[MFB`oxbLlhvail?^~~{???UZJWdWQZageEfB`ow[MFEv_vTfJ[^{??~_NwBXkL_YRdTKJ`K[MFB`ow[{TXuLYuL_??B~~?^ujU[@Mh`RM@kgw[MFB`owlZW~@m\\T??Nw?@~~fbuKEDpSEhhPKw[MFB`oxMUtUuKvw~~o????~it\\SBAwiBSsgfcqXKeRHcZ]B\\U[lp~oF{@~??NC]Nw[BSpMT`iXKeRHcqXHquiupe~?B}??^~w@ZqxJTPKwdBQ]FHcqXKeRGlZW~@m\\T?^~~{???LjLdkBQ[ih`[HkeRHcqXKeKuuf]Iiv}??^oF{?ZuZBWRQ`mCfS[XKeRHcqXB[zoliwuo???~~oF}[tYr_dWQZageExKeRHcqXImLYZZ]Ho?@~??N~~E]NWoCyeDKwEqkeRHcqXKfajMpjUpn~~????B~TTiygB_YeHqkLPSiTIdQhTwirkYtkZ~_NwB}??]NC]NFEcxTRAwRIdQhSiTIdjZFwLrigB}??^~w@Ylx[mPLIEwQ\\PoiTIdQhSiZ]B\\U[lp_N~~}???ErYrXk`Mh`RM@khSiTIdQhSZf]DlVEu~_?F{@~?Er]rXkCjAR[TCotSiTIdQhTMUtUuKvw???F~}?~rhrTitBAwiBSsgeiTIdQhSipeuszpTU_?F{??~~{]K{]N?iHfCgYRoidQhSiTIimLYZZ]Hv~}????F}jTTitWAYSLocyb_MFB`ow[NMUtUuKvw~_NwB}??]G~aNwbqkHLpSRBOw[MFB`o}Kuuf]Iis@~??N~{?lxJ]QvcEcxTRAwR@ow[MFB`r[zoliwuoB~~~_??@lXZUUtcomI_tLIH`ow[MFB`~DU\\bUlb^{??~_Nw?vkLzB]oCyeDKwEq_w[MFB`o|VElLlnCw???^~wB~MYrekxiDPKwdBQ]CMFB`ow[Mu{EykxZb??Nw?@~~wruK|bN?[BSpMT`i@ow[MFB`tjZFwLrin~}????F}ijiiyikBXXTfek^dMildhnpbk{brTVFuBQ[ih`[HimLYZZ]HqljXbfmUrEufEyivotuPrtfcjHtKIXoLdLn@mjMUwpzdFTzJJSvwUrkZYjqYi|c]q]dWQZageE}IkzElZEqq]Y{g}pVwfWyjWulNI}S\\jkktCraSLHwXquiupe~?bzMTdUtNTThnFwfLl`yqjxLW}DpSEhhPLYup}B[yiFHVkYuRs\\kZi}DmM[jblZMo|q[BSpMT`iExv`ZTpl_LWxzXqTuTmNoufTR[]rkxFdZTLIEwQ\\PpbLlhvail?kfenINkTtThnFwfLmRTVkbuRpMh`RM@kjEZZRnDTZFYprurcjklb\\Volprl`yqjxLW|PKwdBQ]FpTfWtjWvq[d]pjXNP~CzFTZEtjVXFNU]QnAwiBSsgfTpjRZZpMk`zdFTzJJU\\TZJR^bEjblZMo|qRQ`mCfS[JUuNoZfT\\_uUTXxjFxJ[^`lMierqndFYzJJ_YeHqkLPlwLtXqvEt@UtkprvJWZ{JXuLlTbu\\fG{jYbQ[ih`[Hhquiupe~@wC^XqkiuhzEufEyivpXxFeimNkdWQZageEexv`ZTpldWAljXbfmUpkZi}DmM[]T{gzVXXdWQZageEjUuNoZfTW~aq]Y{g}pVMildhnpbbu\\fG{jYwVDOYedCr[zoliwuvHYbzMTdUtNJ[^`lMiet[\\jXuFmPMh`RM@ki[lilkXnpXZBUM]u[d\\fEufEyivpqYi|c]q][BSpMT`iT[Ysuu{Rl`k[d]pjXNPr^`ZMplilfc]Yiw}qge[Q`hNBbLlhvailYr_uUTXxjFxTThnFwfLemqM]k{dYYSLocybbpTfWtjWu]p_N[gynXXY}HuMiuLj\\`yqjxLWwsfIiWVAXlwLtXqvEji_FmS\\VkklTmNoufTRZVXFNU]Qmge[Q`hNAZf]DlVEubp~C^XqkiuhwvwUrkZYi]T{gzVXXRQ`mCfS[T[Ysuu{RmVHYTlZK[|quRijXYZ{W|`yqjxLWz_YeHqkLREZZRnDTZXklbcjuLZHyNTUe{^a[ubu\\fG{jYqkHLpSRBUv_vTfJ[]rWZDc{txP|anEufEyivojblZMo|qEcxTRAwR]IkzElZEujU[BUM]u[d\\fpMptUplZXxFeimNkHtKIXoLdJUuNoZfTRpzEBXXTfek^cuLt^AvFMxLT]qNXNWVDOYedCxquiupe~AlVT?Yprurcjke~Au\\bZTT[\\jXuFmUDpSEhhPLlwLtXqvFwbp~@zdFTzJJUilLw~CxlXxFeimNk[BSpMT`iRdlTlbL}DnJclZJIk{tb{kZY[Zij^C]rkxFdZUge[Q`hNAlZW~@m\\TZUZJWbzMTdUtNLb\\VolpremqM]k{dWsfIiWVAZEZZRnDTYZuZBWTlZK[|qu]HuMiuLj]RTVkbuRqYSLocyb_vM{JYmLlMYlXoURrVdFuItmNoufTR]o|XT{ek]T`HmIaWZTpjRZZpMpfbuKFHVkYuRs]\\TZJR^bE]T{gzVXXHtKIXoLd]IkzElZEyilVT?bzMTdUtN]HuMiuLjW|fXqNIuj_YeHqkLRpTfWtjWvw{Pw{^cjuLZHyMlp}EsyiZxLT]qNXNBQ[ih`[HdjZFwLriitZqx[dc{txP|alkZi}DmM\\XxFeimNkRQ`mCfS[Ln@mjMUwurYrXkeqqjNLW~GvwUrkZYjkNUT^HjFHtKIXoLdExv`ZTplbXnXku@jFNZMQmrMildhnpbYzGxyrqTqkHLpSRBXquiupe~Cy[tYlON[gynXXYwuswvTU}BqndFYzJMDpSEhhPNEZZRnDTZbpfbpwAljXbfmUqilLw~CxkjblZMo|qiHfCgYRot[Ysuu{RilTUjT_[d]pjXNP{ZY[Zij^Eo|XT{ek\\LIEwQ\\PpMUtUuKvw{P~C^pFuUTXxjFx]HuMiuLjT[\\jXuFmSjAR[TCovEZZRnDTYlxJ]QvcYprurcjktThnFwfLbqndFYzJGsfIiWVAWvM{JYmLkukljJYqIuleM]xZDmNoufTR\\fc]Yiw}rAwiBSsgfwirkYtkZLzB]ovk@zdFTzJJTkZi}DmM\\FkzMPxUtHtKIXoLdT[Ysuu{RhrU[tfLObzMTdUtNRijXYZ{W}RTVkbuRtPKwdBQ]DlwLtXqvFbNWruK{Aq]Y{g}pUZ{JXuLlTYzGxyrqTm@iWfIotDjZFwLrilTVTTtTWCeRHcqXKerqNLT[^X~?^oF{??MK[cecFTZJIk{tb{`hMTSomCseRHcqXKdjkbfjNHU?~_?F~}?BfDRFHQciuleM]xZA\\RAe[BXQRHcqXKeRqYi|c]q]?^~~{???Ik`qcpc`rvIMjuUUkjAR[TCoscqXKeRHcfd^IMtuU^w?@~?^oDGNHMIkbEq]Y{g}pVSRMHOsf`CeRHcqXKfW]ki}RUM???N~{@~ci_}OwphP|fIqjYfkJagLRQaWQXKeRHcqT[\\jXuFmO?@~??N~|bHhI_xrHqTzElc|F[BSpMT`i?cqXKeRHcpzMrc]Tl^~{????N}QcpBqTPpjFNZMQmqedB[HMgw?WkUJDapW{einXFkfnwB}?~_?BERQT@reQq]Y{g}pURiWSr_ZIbkUJDapWk\\`yqjxLWwB}??^~w?wpqQYO\\StbflfHVXiHfCgYRo{bDapWkUJDjkbfjNHU?~~~w???qSeG]QiM[d]pjXNP{JagLRQa\\cWkUJDapWiwzUrkN[nw?@~?^o?[wiWxISc|qbi|ddiedB[HMgwu@apWkUJDa]T{gzVXX???F~}?~ik`qcpc`|ddU]Yp}R_YeHqkLPiBDapWkUJENXu[bqli??^o?B~~ci_}OwphIuleM]xZ@hMTSomCpwBDapWkUJErqNLT[^X~~_???@~h@xHpTcWp|fIqjYfhUCewiH`ikAdQhSiTIc]T{gzVXX~_NwB}??XIRCNHTFDZUrFN[lcjAR[TCouNwhSiTIdQhPzMrc]TlOF{??~~oAjG[hKXG]q]Y{g}pV`[T@iYSRxJTIdQhSiTHVFYu\\`zc?~~~w???MK[cecFTP|fIqjYfa\\RAe[BXTdkSiTIdQhSmRTVkbuRv{??~_NwAQiBxBbEctbflfHVX[BSpMT`iZBWhSiTIdQhU]Pxijbz???@~~_Nw[wiWxISfcjuLZHyNSRMHOsf`Yr_hSiTIdQhL\\c[|XxIo?B}??^~|GNHMIkbFXXTfek^cedB[HMgwNWoSiTIdQhSl`yqjxLW~~}????F|bHhI_xrG]xPt]qqtEcxTRAwRIyg@ow[MFB`pjkbfjNHV~?^oF{??ci_}OwphFmS\\VkklYaXpIEc{K]NwMFB`ow[MFd^IMtuUOF{??~~oBERQT@reQNkxUTZS{edB[HMgwx[dgw[MFB`oxkNUT^HjF?^~~{???S_{cwiqKTZUrFN[lb_YeHqkLQrXZ@ow[MFB`qNXu[bqlj~??NwB}?MK[cecFT[d]pjXNPxUCewiH`mrWZ@ow[MFB`pVFYu\\`zc???N~{@~qSeG]QiMURrVdFuIphMTSomCrTjM?w[MFB`oxXxFeimNk??Nw?@~~ik`qcpc`uk[|kxIzHMh`RM@kg{]p_MFB`ow[M[einXFkfn~{????Nw[wiWxISfXXTfek^d`[T@iYSRTiygERHcqXKePVFYu\\`zd~?^oF{??h@xHpTcWlWxzXqTu[JagLRQa^aNF{XKeRHcqXJNG{tTp|_B}??^~wBHQW`xIgw]xPt]qqt[BSpMT`iJ]VHYqXKeRHcqPzMrc]TlOF~~~???BERQT@reRXXTfek^dSRMHOsf`ZUZJWqXKeRHcqL\\c[|XxI~w?@~?^oAjG[hKXG]NkxUTZS{LHqieDoeLzL`kXKeRHcqXMRTVkbuRo???~~oF{wpqQYO\\SjYuWxzdkRQ`mCfS[RejU[ERHcqXKeRW]ki}RUM??^o?B~~BfDRFHQcuRrVdFuIxUCewiH`mK{]p_qXKeRHcqFd^IMtuU^~{????N{dSFqFELJcjuLZHyMRiWSr_ZIiit\\S@SiTIdQhTFkzMPxUt~_NwB}??@rahbchQW}rdXTlRr_YeHqkLRpwbpwyhSiTIdQjctTzG|c{?~_?F~}?h@xHpTcW{d]pjXNPphMTSomCqtZqx[ahSiTIdQirqNLT[^W?~~~w???ci_}OwphURrVdFuIssgZ`HtFBXlXkuPSiTIdQhTkNUT^HjF~_?F{@~?XIRCNHTFLddU]Yp}PMh`RM@kguZuZL_TIdQhSiTL\\c[|XxIo??@~~_NzERQT@rePjFNZMQmrIocvDPKLfRejTiAhSiTIdQg{jxPumqq??^o?B~~MK[cecFTFmS\\Vkkl[JagLRQa]NE]NF_IdQhSiTId[\\jXuFmV~}????F|TcMSeKcMjYuWxzdkiHfCgYRotYilUj?B`ow[MFBzBtdVqYp~wB}?~_?AjG[hKXG^cjuLZHyMedB[HMgw{P~C^pFB`ow[MFBiwzUrkN[_F{??~~oCdSFqFELJXXTfek^dIocvDPKLU{dnHZq@ow[MFB`rqndFYzJGB~~~_???M[TK[dIQtbflfHVXEcxTRAwRLjJYquk_[MFB`ow]rqNLT[^X~??NwB}?WqYQgM[qIuleM]xZKJagLRQaXnWZuE|_B`ow[MFBpzMrc]TlO??@~~_N|GNHMIkbC|qbi|ddiRiWSr_ZIfLXrU[t?MFB`ow[NqYi|c]q]??Nw?@~~xIRCNHTFG}rdXTlRtPKwdBQ]FE]pfkXw?[MFB`ow\\jkbfjNHV~~_???@~MK[cecFTURrVdFuIv?tKRdWYdTVTTtTWDfc]Yiw}oYRdTKJ`K[WxHLGMiiwthllwfRijXYZ{WxKeRHcqXMqqjNLW~HjkbfjNHURiWSr_ZIBfDRFHQcln@mjMUw{ZY[Zij^CeRHcqXKdUtkprvJWxLT]qNXNQkHLpSRBTUOxQWqO~ajMpjUpkvwUrkZYjHcqXKeRHN[gynXXY`xVqbl\\dege[Q`hNBQBqRajGpfJYjZEZ{]HuMiuLjXKeRHcqXLc{txP|akZBtdVqYp{JagLRQa[dSFqFELHYup}B[yjTUe{^a[ucqXKeRHcp|fIqjYf_TpulfW]xM@iWfIotEKeciBfK`m\\wUt[ZXkZi}DmM\\HcqXKeRHxI|bUq]b_bu\\fG{jYhhOvARiMKdHaFcibeKuuf]IitZb{LhtSvHcqXKeRHYprurcjk_[einXFkfa\\RAe[BXRERQT@reREZZRnDTZTUe{^a[uWkUJDapWuRrVdFuIw}o|XT{ek]ge[Q`hNA[WxHLGMi{TXuLYuLlb\\VolpreJDapWkUJUM]u[d\\fcYzGxyrqTwVDOYedC{dHaFcibdVElLlnCzpMptUplYpWkUJDapxI|bUq]buPVFYu\\`zcedB[HMgwBfDRFHQcjUuNoZfTXtTklL}KZDapWkUJC|qbi|ddjk@xVqbl\\ddoLRCxUEgiqFIREQFZ]B\\U[lpj[^`lMieuJDapWkUMqqjNLW~HiC]rkxFdZSYRdTKJ`LHT@{`pbQfJYjZEZ{E~Au\\bZTUJDapWkUIljXbfmUo{ArqNLT[^XIocvDPKLh@xHpTcWexv`ZTplkZY[Zij^BDapWkUJENkxUTZS{j?NI}S\\jkkqkHLpSRB[dHaFcibatlb{ExtTkZi}DmM\\QhSiTIdQTlZK[|quP~C]rkxFdZVAwiBSsgeiqFIREQFLrnAujbZRijXYZ{WyTIdQhSiTc{txP|anclIwzUrkN[a\\RAe[BXPpbccs_yi[lilkXnolp}EsyiZhSiTIdQhP|fIqjYfjJWxLT]qNXNM@iWfIotHIgNcMKYTVElLlnCzEufEyivpQhSiTIdQYprurcjkzBWk{brTVFuTCraSLHwOxpSpqShMKuuf]IisvwUrkZYjQhSiTIdQxI|bUq]blXoL\\c[|XxIssgZ`HtFDGNHMIkbFpTfWtjWvTUe{^a[uhSiTIdQhZJIk{tb{buKEo|XT{ek[YRdTKJ`KpcsdO[xcZ]B\\U[lp}HuMiuLjYTIdQhSiPzdFTzJJTVT?YzGxyrqTtCraSLHwXIgNcMKYPm\\wUt[ZXZb{LhtSu[MFB`ow[N[gynXXYpw~_{jxPumqqedB[HMgwWqYQgM[qT[Ysuu{Rb^`ZMplihow[MFB`qNkxUTZS|qxJUo|XT{ek\\oLRCxUEhQBqRajGppeuszpTUrijXYZ{Wr`ow[MFBaljXbfmUqrXZC]rkxFdZUT`HmIaWY[WxHLGMiZ]B\\U[lptThnFwfLb`ow[MFBfHVkYuRs^XkL`VFYu\\`zcLHqieDoeqSeG]QiM]IkzElZE{ZY[Zij^@ow[MFB`qq]Y{g}pUtYr_k{brTVFuCyeDKwEqdUOxQWqOytlb{ExtVpMptUplY[MFB`ow[YprurcjkfbuKFHijuPzHzAwiBSsgeFMIeMQdHfJYjZEZ{Lb\\Volprb`ow[MFBeqqjNLW~HUji_IwzUrkN[kJagLRQa\\GNHMIkbDlwLtXqvEZ{JXuLlTqXKeRHcqLWxzXqTu^C]Nwk{brTVFuM@iWfIotKdHaFcibcxZTZWr^ailLw~CxlcqXKeRHcN[gynXXYj]VHYbu\\fG{jYtCraSLHwUKeciBfKatlb{ExtVEufEyivpcqXKeRHcuUTXxjFxLjLdkL\\c[|XxIphMTSomCqjG[hKXG^EZZRnDTYuLt^AvFMqXKeRHcqP|fIqjYfb]rWZFHijuPzHxLIEwQ\\Po[WxHLGMiLrnAujbZ]HuMiuLj[eRHcqXKaljXbfmUq[tYr_uFjInctbqkHLpSRBOxpSpqShLVElLlnCxZb{LhtSvcqXKeRHckfenINkTwrpzE?{jxPumqqRiWSr_ZIci_}Owph]IkzElZExtTklL}K]RHcqXKeRcjuLZHyNTTiygC]rkxFdZToLRCxUEgFMIeMQdH{TXuLYuL}HuMiuLjTQhSiTIdS^Xqkiuhzpwbpw~HijuPzHwYRdTKJ`LQBqRajGpUlk^_vMij[^`lMietQhSiTIdVHVkYuRs\\Ylx[mQrqNLT[^WedB[HMgwci_}OwphLn@mjMUwupmjwUwxqhSiTIdQiq]Y{g}pUuZUZLcuFjInctbcyeDKwEqkdHaFcib`m\\wUt[ZWvwUrkZYiiTIdQhSiuUTXxjFxEr]rXkBVXFNU]QmT`HmIaWYpcsdO[xcfJYjZEZ{RijXYZ{WtQhSiTIdRUM]u[d\\e\\MYlUgFd^IMtuU[JagLRQaXpbccs_yjEZZRnDTZbZRb\\TZwTIdQhSiTFmS\\Vkkl[]K{]N?TpulfW]xTCraSLHwTUOxQWqO|VElLlnCyilLw~CxkiTIdQhSiTlZK[|quTYilUj?uFjInctbhhOvARiMDUOxQWqO{xZTZWr^bEufEyivoFB`ow[MFxI|bUq]b}G~aNwbiwzUrkN[hUCewiH`kdSFqFELJEZZRnDTZwfWyjWulB`ow[MFBzJIk{tb{dnHZqU{`xVqbl\\dcYRdTKJ`KFMIeMQdHLrnAujbZTThnFwfL_w[MFB`ozUM]u[d\\dlXZUUtck{brTVFuWVDOYedCuKeciBfKfajMpjUplZb{LhtSuFB`ow[MFTlZK[|quE|`nWZuANXu[bqliRiWSr_ZIh@xHpTcWt[Ysuu{RepmjwUwxo[MFB`ow[|qbi|ddjMYrekxiFHijuPzHyge[Q`hNBchKO{dS[Z]B\\U[lprijXYZ{Wow[MFB`o{^XqkiuhzE]pfkXwBVXFNU]QloLRCxUEg[WxHLGMiUlk^_vMie~Au\\bZTOw[MFB`o|c{txP|amijiiyik?wpqQYO\\TTpjRZZpMuUTXxjFxRijXYZ{WphMTSomCv{@~?^o?ArqNLT[^XHcqXKeRHBfDRFHQcln@mjMUwtZUrFN[leLlMLtTn_fSohf?uS?~_?F~}?YzGxyrqTqXKeRHcqQjG[hKXG^pTfWtjWu]xPt]qqtL}DkzEuiqkHLpSRBOF~~~???FHijuPzHyRHcqXKeQS_{cwiqKXquiupe~Dc{txP|anpMptUplZSRMHOsf`~_?F{@~?Fd^IMtuUXKeRHcqXGci_}OwphJUuNoZfTW}rdXTlRtTYZp}HrZAwiBSsge???N~{@~uFjInctbqXKeRHcqOWqYQgM[qExv`ZTplmQnWtkfgzWvT{J[[xoLRCxUEg??^o?B~~TpulfW]xQXKeRHcqOXIRCNHTFKXllM{TTjUM]u[d\\dZb{LhtSuedB[HMgw~~o????~pzMrc]TlXKeRHcqXGBERQT@reREZZRnDTZXNL]S^WjijR]NpMZCyeDKwEqnwB}?~_?FHijuPzHxapWkUJDbFMK[cecFT]IkzElZEuk[|kxIzJWvT{J[[yge[Q`hNA?~_?F~}?uFjInctbkUJDapWk]RHQW`xIgxTpjRZZpMxI|bUq]b}HuMiuLj[JagLRQaWB~~~_??@jkbfjNHUpWkUJDapk_[wiWxISdYup}B[yi]xPt]qqtfTUqsvwphhOvARiMNw?@~?^oAmMtkzBvHapWkUJDbkAjG[hKXG\\lwLtXqvFkkirrUNqUw~BY\\TLm@iWfIot???@~~_NxxVqbl\\ddapWkUJDatAQiBxBbEdMUtUuKvwTlZK[|quE~Au\\bZTPhMTSomCo?@~??N~}NXu[bqlipWkUJDapN?h@xHpTcWexv`ZTplg}rdXTlRuLlMLtTnaT`HmIaWZ~~_???@~k{brTVFuKUJDapWkTWEQcpBqTPpYup}B[yijYuWxzdkZEyn`ZbfQkHLpSRB^wB}?~_?@xVqbl\\dedQhSiTIdF{Ik`qcpc`r[zoliwutc{txP|am\\TZJR^bF`[T@iYSR?^o?B~~?PzMrc]TlYTIdQhSiVHYMK[cecFTRdlTlbL}G}rdXTlRqvFwZRihkfSohf?uS?~~~w???TpulfW]xSiTIdQhSjJWci_}OwphT[Ysuu{Rek[|kxIzMLlMLtTn`oLRCxUEh~??NwB}?xLT]qNXNSiTIdQhSl`k@rahbchQ[XllM{TTnHVkYuRs[vwUrkZYjSRMHOsf`???F~}?~u]PxijbzITIdQhSiRU[DGNHMIkbFpTfWtjWvkkirrUNqijR]NpMZHhOvARiM??B}??^~zVXFNU]QmdQhSiTIc]p_WqYQgM[qLn@mjMUwrvIMjuUUna\\bilbYsYRdTKJ`L~~_???@~uFjInctbsiTIdQhSd\\SAQiBxBbEcZf]DlVEuN[gynXXYj[^`lMieyaXpIEc{N{@~?^o?@jkbfjNHU[MFB`ow[bp~BERQT@reQjbUeuva\\Fu[jIli]L}DkzEuihhOvARiM?F{??~~o@xVqbl\\dcw[MFB`oxqxJTGNHMIkbFEZZRnDTYjYuWxzdkfTUqsvwpm@iWfIot?F~~~???Eo|XT{ek[w[MFB`oxXkl_wpqQYO\\Su{EykxZbxI|bUq]btThnFwfLhUCewiH`n{??~_NwANXu[bqli[MFB`ow[uZBWqSeG]QiM]IkzElZEzHxjqbzD]LlMLtTn_YRdTKJ`K???N~{@~TpulfW]xFB`ow[MFEjU[AjG[hKXG\\Yup}B[yitbflfHVX{Rk\\TkZUcyeDKwEq_?B}??^~|fc]Yiw}ow[MFB`ow]NWo@rahbchQXquiupe~EqqjNLW~HkZi}DmM\\`[T@iYSR~~o????~{einXFkfb`ow[MFBalVT?h@xHpTcWln@mjMUwuk[|kxIzHnolfWutVAwiBSsgf~?^oF{??TpulfW]xXKeRHcqXNC]NwqSeG]QiMRdlTlbL}BvIMjuUUlTYZp}HrXoLRCxUEg?~_?F~}?k{brTVFuXKeRHcqXDnJclKXLHSFMXDjZFwLrimqqjNLW~JEufEyivpSRMHOsf`?^~~{???PzMrc]Tl[eRHcqXKbYrXZAjG[hKXG^EZZRnDTZFu[jIli]ZEyn`ZbfBQ[ih`[Hnw?@~?^oBVXFNU]QnHcqXKeRGZuZBWMK[cecFTExv`ZTpldZUrFN[lfa\\bilbYtLIEwQ\\Po???N~{@~xLT]qNXNXKeRHcqXHrTjM?M[TK[dIRTpjRZZpMkfenINkTj[^`lMiexUCewiH`g?@~??N~~W]ki}RUNcqXKeRHcpfbuKCdSFqFELJpTfWtjWvqTzElc|FfTUqsvwpcyeDKwEqn~{????NxxVqbl\\dfHcqXKeRHTTiyg?[wiWxISfpTfWtjWvFu[jIli]{Rk\\TkZUm@iWfIotNwB}?~_?C]rkxFdZTSiTIdQhTw{Pw{]cFcfDUPalZW~@m\\TxI|bUq]bj[^`lMiephMTSomCoB}??^~wBctTzG|c{iTIdQhSiUj]VJcci_}OwphLn@mjMUwzHxjqbzDZWvT{J[[xLIEwQ\\Po?~~~w???k{brTVFuIdQhSiTIerYrXkeQcpBqTPovM{JYmLlkkirrUNqL}DkzEuicyeDKwEqnw?@~?^oEo|XT{ek\\SiTIdQhSZLzLeoKXLHSFMXHquiupe~BUM]u[d\\e\\TZJR^bFIocvDPKL???F~}?~l\\c[|XxItQhSiTIdSy[tYlOMK[cecFTWrZY\\wijRvIMjuUUmLlMLtTnbAwiBSsge??^o?B~~NI}S\\jkkidQhSiTIk]K{]N?TXBdHbHBt[Ysuu{RdZUrFN[ldTYZp}HrYge[Q`hNB~~_???@~TpulfW]xIdQhSiTIilTUjT_Ik`qcpc`xquiupe~FHVkYuRs^EufEyivoedB[HMgw~_NwB}??ZBtdVqYpow[MFB`o~aNwb}G{dSFqFELJEZZRnDTZkkirrUNq{Rk\\TkZUqkHLpSRBOF{??~~oAmMtkzBvGMFB`ow[MlxJ]QvcBfDRFHQcexv`ZTplek[|kxIzLTYZp}HrWYRdTKJ`K?~~~w???NI}S\\jkk`ow[MFB`utdlXZUPbHhI_xrHwirkYtkZTlZK[|quJ[^`lMie{JagLRQa^{??~_NwArqNLT[^WFB`ow[MFLzB]ovkDGNHMIkbEjbUeuva[]xPt]qqtZEyn`ZbfCyeDKwEq_??@~~_N{]rkxFdZSMFB`ow[NMYrekxiEQcpBqTPplwLtXqvFFu[jIli]fTUqsvwptCraSLHwO?B}??^~~HijuPzHwMFB`ow[NbNWruK{?wpqQYO\\SlZW~@m\\TkfenINkTe~Au\\bZTV?tKRdWYf~}????F|jkbfjNHUFB`ow[MFiiyimij?'
py3 without this patch but with canonical labeling
'~?ExH__gOWkwRGNvRBv?qFBBWHcsLb^sGQOUe_}rejchQkJC^GARlW\\@IpUAlDCFAplU[YI}QMYsqEBWr_TYx]AiIoZXcHzWyHuhVMTK{CGV^zVGGxICymlcuf^CGJ{KOTgBbVth?WeoQN??}\\rqZBx]rjaiX}qaqmeMTBkC{FA??hESePw@Am_lUhXedcAo\\wdGxugMiBQQ}kBF{Q}T_mI_Bp_~?tpWhMiXbQ^IjsWD\\loj|UQC@hi{YJrsyxinQ`ybF\\yJx{Bcyz|akU@yNlYU_fKt}xQ[nN}Y[C{aNoaRMedU~qDLSTMhJkXhxsEtiVYeqe^KGQIJy^lKVbHSyKolAdaKDevQTfLCA_^S^z]MWDSr}dMbMe{jECHU^MDG{QdL{dV|IDyH\\ZEbwkECO}uLOVIbOuoDYSpLHHTu]@zOxB`CPryhvD`hW}d|cUgJSNl}E^SK_FctfkvTNz|DpihjSUTM]k\\\\jl?NLbTXeNMAyUjWd\\{hcXo]XAEeByCZ]^~\\geTzqh@]^erkLYNtFEx[Rys|vCXGlFVBrmgukoYx`^e[J[EUyYFMbaartPyfreNrMqyEbDwErZXrKF|dskWbduZqOnDkifl}qnZndgqpLjOee|l?`ylvm{ZPUwRM]cInO{hCUMJ\\b|se_YVLAfvr_}JJNAajZgA}eKMlqkzbzwxvNrWtMT^YbAt^GzPO`[YX^}o^dCiyF^bxuI@GfnjIzpE_oW{\\mgM]]wDu{^er|IMrYEmj\\chjad|dQiTuBsm{{JHeiTY[ldZE^racrJGMEu^NKKTqsTV]iSLtXG^uYHMp\\ez`zX[yOLLtJt~MzXCxM??LjEBxzrBnrbDWxVGSxnqt_ylqvFkAzwQGWvT|wafzODSvK{|`}vqZcQztYtAzURcyliWm^Az[QZYqFwobOn[sVzNpdLuMNqE_fkLf~yP{T\\x@l_{nEhH[JHy\\I~`lq~rxKpmezvBWoDQnej`n|hLG^aBDMB_WtgFChuZtBwGpVSVDOXCbekEvJEbxfSu]Q_@aAG`AjvHzpvR`]yeJNAiGeVpH@?JWo_\\vxir@m@?aFMZafVCRV@{FqlY?rWF?MwyfW|Qv_FwM}\\SJAwat@GUiPjtcGVTPWp^QAKopzdJq}GVG_qaFCMNV?u}D]ZQGpY_WZs[Ey{Ma\\jWwRcBPVeZcqECWs|`Av_F}VBltyyHjgWIX^RJKapG?soPm?NuDl?p}uifgGtJcXN@}ni@xd`gJLMWm]CQeD]Z~QSC`}}XPPKIs`PNhFr_oO{\\XVrjBY?{`Gj@kvnCl~DYpWGltD\\{MsCP@JlzKySEjLkFESRxdVpQ{YKhb}`_ia_dVmzE{wPkmI[Dux\\cNVQ~N?ltLCgHKNEJhQieVI}Hx[tfTGdhb@i[jN?FZyB\\H?|BjZXhTdNpQoC|I?\\Kby@mIKrUjKWmMtN^SOD{zjYG~vRhk?`ZWrWuAxH\\AnvdmIG^\\o{vYrRc{Dca_WuWR{|eXXNQPx^ViGRDho_Ld`sRLdE`k?ZL{Qvwm]?ZtGnLSfx_fQgOXG~\\xhtMyhUgqS^qMS@mLZu\\vW]ts?IIHYiZ{@le{TFWxS|JDg|JRycQJKL~geszyGMKZX]^eoKGtkuFaJS{u_OvvsDN_\\y^CgoDAF]rD}|nic\\^aQ@BvT}Iwa\\s[BKqw|GrxMP^fz]NmIcAwkAsRhGUFtXOie~]SAoAwaxwMF\\TUHfzqj?RQ}@FwP}T@MC~}yM@kOkpm{xiJH}SQvd^iJHnPHKtDWdWaOcVv|EpjSk\\YJxcoVl?Niacz}WgLJU[RLy[SkOPQd]nMiRS`zqy{{uVDrKTeA~TyOWogL{sxBujXinx]uIUCyESv?EL|nbB`LtHiLpRn`ZddtKyKhFWIiCnbC}dRrPUZZ_KbEVjshSkkRHm@^\\lJvWE\\VLnk?hpV@f{zD}Qe_N@fPsQLFtMQHcl^aSqVQUbSbj]]SJxVonsHZj`QFDhvDUh}U?Z[VHafE[F[fOEI@]RxuFod[zlqQYzJ|_UfiuMpRKvzmOhr~hft_H?PWE@iM[ru^yvvn~RCe?nt[pWsGG?[X?Y|ZbJJS_}FPnLR}?}KskPPps~bk?G~t]skRMOdk{BhWluV_qqno_}hwm^s|no^s]OWeE\\io]bCAFiOBQT`|^kzOk}|?AbvfWcVwgOF}@iElc~z}~\\KkUJmLiDBY~nK_Bg`gVh[bP~hTNTQK|HpYpE}PgsZFkHWU@fF}NLWfoUN@RgrmpzUew`KTlysTvyBfFcnHxp@teK}q}bTHYAVBUxJTxrXYPSmRxdFm{ktkqJQYOQdd_w^FVfZSFl\\NaIsSfo`R|IZarXJkaRjmK]EWWn]?FjBqTgcc}ltxMSeXckcbOQqrUnN|@{t]OpQR]U`OOb]nIulLYs?\\txypDNnfHkgQv?_rm]eI\\Ks}Ahxk{SaUNJbjPVe]J`AvcerhVdd[]groGLSIqyv[][iueNiRM{@?zL`bZmhcllacHNF^S?[rFc~s`]`je~mmSWckNiIElH~}j~DJZHGxA?BjQQIGvJQbbo^R}[Y`bL{vnaGbLXAdXxYMa}\\TVgiqjeh@}u|_DbZU[FrSQmetmRw?}QlOikkLnzj_S@HeyTglFryMUTt~WNAMGc^E\\z\\xcaT@Pwr]pYU`yHy^GOKMJ]]_n[qhzZYv?cSFwVKxI{ykh~JqbklP_eIuQxFfNrDFKYiEzjnDcGjndhCUWLVH_rf?]{r?uRFCDf^~zl?TUZ\\qKYBhFpkVAizrusDqJ}AJvAakHxsNEfTOsuMOz@SKwLJwvBzk}RU@iR}IFxf[q]o~tcPs[{ldlIkSo\\KW|RBnByUZ[ZiSMA[gN|GPxbtxgHODzDlmYjPU]RD^k\\vBaKG]WLZ{zruGqFLmVTO_RyKdr{r`]WrL]C\\GHNMtT\\VABNex_idiQrgvnqk}VCsArE?bd@~iG`STZmQulnRO`j{^j\\idQENel]zCatnRSmCp@tAuUxZU\\bvCwQX@N?D~fsb\\eE@Iy}sf]X{J@uuTO[NtfdJOvyod@PUQKgy|n?[{ayTgVubtc]rzH~?_YKaR\\T\\}MeiRrMybnExEO]guG{bw]dPdUQIfxZS[TDjF~Le{JIA|WJuj@erX?vSs@dFW\\y]Zv[wpfSr]uAAXRudWSotGb}{iU?|capeu|kvSp[za]]hCCyHo~?zCpe`~EOU{fNzaUwnKjmBelmFs|yGRm?]ZrnRr?eoYcU`@@Sf?D_l{GpdM|z{X|ZsXe{JNhSshbN_JDtKp~x?BTlCVyw^ZTVCZaN}aJoZJZ?SM?nLyllVaQPwrEdFodE|{j{Sabu_HqVIdTDs@q^K\\\\dFzu`xXASUVUCWcz[j|eUYpC`dGYPUmiju{]FTyMXLcIafEShz]`uCATXzZUIALLZtxKrShmT{m`Kl`Mfrrpt?rBx`DxKoJmTu|EVUTwQbyJTZb_[V~SggRGljQAKOQNxvEzVamfYGQn@gW|}UE`y[W[hLamGJi@YzwxHfKW\\^_Yt}k@~RoqrLVDS[f]_kPKElJbpKPTL^YS~fVA?D^xlovbYzFTFeZEpSdTOM}vY`fVVhZOJl\\VPXqWqTX_dSyzknEgoafxRcemZxKq]dk[lzhtNs?K]_Re?F?C}b^XIeMzMLZq^qLB^KyUppeyE^AJPgvZzCUU@gWiBfN@|EeydUv]dJC^XfjQdRWWvzKSoTlmIrsEB?Zc?cT~fMuqQbuu~LLmQU|LCoJYTae]oeiAwGZLnCT~cdmjZBI_jtj[kjQjoCMYHUfnyZGFGBV{DAmzLTNX]M{IrU[trOKHfYpyHsLJ@T`Epb]Y~pB~bHg`kxZPVPvDtYLugANU^n?iAP}?NYBrxUZp~Bo^QBYZBWqTprU}FdNrMooAdQ?jp^]s^X|PsgpO`QjtZikThwb{GMRYqDrQg[VgHe[[xLJrNYxVovL{nC?N[]OEyRYQVS{FEwoSQ|~rxjXtXCT~fpkA_FBw|CsEoSiXOO]XtbxIG?????????????????B~~~~~~~~~~~~~~~~~~|HPb{uVf?o_BZQIGOSK~o]mg~v}T[Kl?XfY}iFEiww_MZhOLhGyeoK|}Kz^V@|~tbg\\GgrcHFAsbqmNArqDw~D@_\\_YBr^oHYyax~eP^`aW{dxFsjCfGctBOq_@NSrc]|~QFuAwMI]U{rVqXpLyOCUtaF]EjUUsWgM`WVll~rRawlU\\AuubKdTyWFGem|az\\Dy@EgTA[^W`SgtZJ\\eP|teh[j?dn{QbXXu[[XgaK{AK[u[koi]LD~egxXVQkpwI~TUQBaNW~SeWV{CFyNGikEIBjdyQD~RD}UPKmstI|`Ra|xesDEd[ZcHhp[PoFVJtYbrzUFX@O@^nsItYgvWVZ@dGS\\nANe?uVGF?Ne^cclx^Pzm[P|@CNzMi|yOTDh{bPyBLoHbhg\\SlWMilUS_C|mjt[zzPFslBPRUB@mHm}{IuL@kdryvMkaLegG~VZMFBdgF@NjrOSm_S\\Nm~KB`W_Bcd|`~UejqgPVefgqlFP[mNPArZsSIuBvLySI\\BHqjLfF[wGmC|RzqLjHKnkq{sJ\\ipAW\\FB|OUUSjJ[p}DM]eg\\VEh\\^UkHASML|HVNmwISPjSsSXXWOLzp?sVTwVTWY^LzcIjqI|_cX\\koEpdAx_Qf~SiUv]KMqzkg~vEXIY{SBdMITnglNgrOtl[EhMsxHorKR^Eo`|fbBhy{nq^?DE_zlb|mEjiD[C?Mq}dClTVbnHpfSfDpgFt?LbVeuVVFB~aJI`BqLBwCahvMlS|]Ju^~ek?Lw[[cAFGjmsHmwr|cE^mWBgcT_teW]cTlJXNBK|\\aH~zaTfTgO_]SyBi^BKdtYmSRHw`ZTyWFp|sZwr|N_d[wPFc`DhTI|v}]OHUKxig`z@}UOEc}}`PNN_kQyx{qmx`SSLmfsRAVMrF|GLWf\\C}IoSwZEopZNkGzzVeTIiTdu@WoxyxgLTdFFW|xNSdTBikANgNa`DTYtHcmD}uLubrT}zWIFEwVH{k}\\bSBL{lh@gxuvyUR\\N\\I?D{PhDZK`YAl]QZr\\f\\?A[L`ScpVI\\IZgVln?vdPaYqonX|IM}cCDUkiFdJHczStWVaDkpMbhYfWOs^YzFmEK^aXYRbVvCVEZShohgwCS^^vQ[atnhKvNiX}HG@H~abKrsLAm{LM[dWBMQ^jZ{htQgKOJnVbgsN{~KxV?BEUZ{?WOn\\s\\X_vWjoWuaPBTDniJ]pbi^DrynAP|aeWLF]r_Vw|FNH@^@qmYBvth}Ges@Xe{xVNWALQmKaiq}SvEnP}Zj`uxcdOG^XT}grJDxdvFOUEF]JX`ySlNaJEZER\\p|{ha_lPTmKQsuZ]lQDiB{KJInXANi[eG}ehZ`vOetJmUNV~IdmvOsb]EM^oPY[BIwuaRezi@XeJtKdpmRP\\x|ewWmvES]gYiqiLWHVrpZKBnuBoZDR]qbIleR|RqI`^zDSevdP`RUkc|@IVzlqejcKlX[}QX|OZv?fnbWEmCb^Dp]Gb^AsbYJjdwpGCrTiExkfjeLXuwt?AEJ[xph^YjfHj]gMjtgCw?ts_[\\xhy}JSolpxYTreC[Qh|fYoMLMXurHfEfFsVqBmCRCI^`qBvVTG\\wHJqRTFMqYxOUx|rcT||e~iYhsJFshtpR\\\\wgJePpHvXUlxbCQWioCusMzdenI@Tmtb\\UuBT?Jb]skzrSJNHOdQVhViEVOVbfH}^vEABi`Y[uVcXL\\gfbV[W^ac~O_cvastA\\y@_x`t`eq}hDln]}iREhXlXKtfA^cg]wRJfgUuPAaf}tbQqpD}nKdWlqM?pt}oAO^~]uBXfhhgTkDCELdaeqHVo^qQVGfif|s[NJ?ZvWBB{dR[~b|rpxX@uAHWkxOSg_s^eOu^BSX^}I\\gFqdRieDP[zXtwIzTH{WUpVUMDorLd@{kNFrEiM^Y{jsyOKBDsoxsQoi}MIwWLuI{vKQKkyr@rjnFdWmyttMbY@SiMbCkK\\oshdt\\XxQYNQf`TSB|]IMors\\Qivjk?X`zJivPLObwrkmrUVMrbH|LwB[epIrNz``CFUXIn~xGusM`UICXZpFDkdbspYzwZ^@zw[qPz]rK\\pOIsxGdwmI}_Xb{JVkCTyH{ohMxeI\\^?M@SdtijCavXqXHsNibkvnH@JsUxvRx?D}OyCwZL^RHADp\\r[HVBxnxz_XxlH{?WaF^Ts_I^Gk?{uZ@Pib~mAfRNTq]hHpmj_jH}~ruhPu?yOEIRmsxJjg{GCVp`gkmbjQ]DGa^`depwX@~VeYLFWNTM@~eDP{wiLv{FIBnZ}_?CygTDVAKH|qSiAQ^GWxvVs{YNBfFAwL[y^eFXqcAX`SZDq}oromw{Jy\\{EokwVRjtQT?]XrQpstbosmkWXlO}t^@audDzcwAorDCx`^WFDDiuey}_ldh|_xoHkemrcaHiEL`dUt]IZvpWWUt~HE?MzrRmrQd\\\\Ss[HDTBaKnbpJXZxH~PudILkSnsR`@gL?rlueCz}vDtm?kLXmYaUijELStU`HflmEnleVWc\\IBBYK[iIDB[yWwKjGFTMHTZkiD}eQk^lNrr]@FzKSeWlCAaJFzXXQn}^XbPAqwp{m{gHwaUfH`g`mzla@mucQ_{|\\VwPdiI}BhKi?eQIftnFq?TWNNUpxnxeKp_MNa~imQ\\@hCmeiqCHR]rUWbDvDBQHmnh]~Cj[QTqt_}SEYrJTERsctgVj?LhnTksdrYWH\\Wv?ep_TV}klgwPuj[VwY@TucWjVM~Y|xlEKMBKKPeXTMoENG~[GPHQfDHY`]pBnnlJ_QJhgmJ[z[xqxgYJpJrOYmPIaIxNg[LUdySj}JX\\un?_o~zqFbQCE~kBrT{`e\\?|iXHJCMrjClBElVWORNIkKk?qEvy~n]?UYdMG}IEziXf]hciLqR_MecHb}SUzAi}oqPnFpq~zGUdBWyh\\a?YxfO{p|ltCixKyjuTUdRcAq?YVjC_lg_o}H]mdGy]}GssgQf_nIxDakw~PQPE~dgNsx|goS_GR`\\PU~nN~VFdHnRrydY_Iais`zJeQJhTtjpyqYjHpNR]P?Th@l|S}EkhuwajZCgknOxU^LcfUIaxNNnkRPcYdT^TUFQ]J?KS|SH|WOkJ`_|URLTQOGyM{vRNKRyvgC\\_jLhV|pjK]duLI@sIsL|fuL_JVxGDN[SM@V~}KK~AiO}eEHL^KNoQYBXamJlbYPguh`kh`reCr]NbE_sbv^CGjxtma[?{]squM{}HUfDRm@GR}NBEBT~DKX_\\qTqfCVvEKpF?}w]AthKtY\\_m}kEkhgH|v`_nfTo_uQV{AtVCFFXbxuxlk^`i@un|MpF?IWpr[[j|pIE`@^`@q~aiNFaf{l^UAIWaImuGeNelbBho^\\Sqx`VasP{D{XIogn}StoRoxJHMP{eY\\csd@kDpF]QfdFcufil^OD[{]eWbASzWTXh]LrpYIhE~OIUZERgYLA[Ssvk{a|kBjM|SE`U~oAuMpT^@My}TkRHBRdQr]CaXRxv?\\?fFWAk~_N^LLLwtSzp_J}WKNcIYGKLCFVwhqy]psxs[Z@zVQQ}a]ODpYmmRm\\uVgZYj_s\\z\\WOAocqepoO^TSNxJFjLF[Krl]KME@nSPRqh^JaTq}LQzpN^i__]QhDsDvzRaJWcZRNFIy`fKPxTUuJgWPdSnPNkDVq\\^YthHRWDr{cbFXtL?~ybmPdJaiMv?aBf[@Zrlts@C_i]f~lQ]LxfLsaFSvkHm^CoH|fJDJJqVIPXSMhHuOzQZEfMMX~wWZUcFWffxad`vEUhBfxVLk_c_fyxKZexIFUBgl|HAfRUSPL[mUoTp{FB_yqjRd]CJBZVw]OlrtVu^eUG{g\\pXK?su_crXhaFKCCvhSRXu}DcmMs}}NYcc^_aMBL]N@CQMTZRnt\\yjEE@HdLPAEVzf?yVfj`kSaz[~avsWEt_q]KRIkMYfKq[|~KOkomoN_OnCsiARq~_}aTIb{?pvhBxz^NieVu`bsWLD_LxTP[`VM?V[KZ[E~EX_yde\\f?WHMdkefxr~mqzib^Sohz`QMrQ?iyGvQle_^fLxqhpBBL?rMBNn@GRcfeHGno~ITPRZTeALg{s~Ffxi`zL]yRdC\\Q`vbr@OG]RdW_JqLEo[WrvDTqlA[xmvMmPe@LLsJmx[{CdjMXp\\j}DIdWwTQYJ@LDBrFNSL[jKvfGeFrol\\n_Aq}i`M\\hyDfU?yyU[`|TYSwTkFB`FqF\\}@l]sWiDwPQOHNzl@TLiTjVchyDop`\\hiYmaMFd[awD@h`uvclTiVTxcnFfF_s@bUaelspYnOqVNlKlwWpJUxbUcjf?]OZNdgCcprjYn{Bx?qYRJl{O|?HumG^g@DzZPUm\\XhjP\\MNygZpciWK[lkILxI`aE}dkdheGQQVx_fXB@pfk\\kaSTwxtI[P|ZM}LiEHaJJYrJrC_LtmY@{\\CNO|bwZYBT]UpY[NFnzjhcaZWbGvPMkUky?GNSdZM{|VKvAHCrY`sz{V`}`DFSL@KNRvzFetRcff@tdZAO@zqXHgffJSaw_}uU`iKmFYzXSINSYow?P[Y]QqZmcLNK\\FXZsklkCItMQ]GxYvzG]UdVMeGdu?EzeWJLKeQnZ?otHItgzEb{qmgte^hXckmiiUEdb?JZmMAqsfBMlHNJEnTJBuFhUDMEDCxoQcyZvF_wo~w_wimfj^B\\mAwe]qE@UCMRbqrcUEhUxeawg}G{^`BaFAk]FT|VqPHLzRG~pLJkCsNWhOcmjZdbN_wUIokRWsjNmenBDMY]gk@Q?LlO~p`rM~Ta{}]UwEKgNtlbzgG{h_^KBslGBCCulZO_{~UDhSJ`W{s]Ix^erweOz~V{eO_hQHsZKejpqUOPhnaWiR`hX{xblzdHAC_xgFqc]ZNh`@^k\\|[YJ[qknANn?`^MZDnrDMQGoB_TGDOJEPfYfSe\\soDpz[DJ\\bqrISLT|B^OlTvuJDXVBBunSs_`\\QwcoPxUC}]oMEKVrdVFQ?qBThZe|{NF[nrASC^^P`YGQqTDGp}eX~AjqUa`qbFtC{bBUYkqrd?IaVI_^\\FmunUlDHxlThVIlV~ASIFrMAjGKwSJihOCfbWieNCBbXaG]a_OXLhEGAy?ytEiSW~Fr@YCU[}^oumDbCq`|^zNp`NeY`UMpqKRivzx~q{rko?DuOBaVu_?b}msY^oTHNWRUl[zr^R^zqKKZIlpO{|O[NE|zP^Rin~EE`]\\OQbGb}dONwAVBGfs~{rScDEBO|Xslyf|TsPE[vS{mQ`Bj[]ftn}x@QdyAsLLeUGiTqy_]Z{YokiaZkElzYseR\\iNu@xnItzAQr\\xulQBXfTObo|~@p_^kBwFA?{@|cSr_`x?^?~^m^_wNzs}fFB?|oBxz~oF}boNf\\@A^IA\\HcI}@mpJELcy]cn@\\VRQ`d\\TJQFeb^q}q`dTc]nXRBz[DS^Rfbe^CR`g@R@YjDvJbgMlMe[wRRp\\qenZZAeHSRZ}sF\\rvPGcKTnR`R`uj^WPgRhREddw[SRW]cBvrRFGRl~UOyxdhAeffv[FCPN\\CAnO]inzvcx|Q`XyIcBhLqLtr?Ag`x]|eaAj_uJKivbcgB~m]Zj^V^tGp\\ZGGZ~vkQ{GoX@OUNUSgUMb_RHcgd|{jXds^JEEiDItzsHlxY]baFacesZyUhxinK}ZC\\krfGVSxSmhUcGGLlDtMhdGsd_csJ{Kb[~eav|\\}u^kahk{LHWS[ygqv]ih\\aJEebak_d^JUt]XSy@hDz_OduluEnSK|]AnqvbjkdCsshqzKiec]C~xCmeMKMkAwt[dXS`?E^no_eAUrwTzmEWzwknvHVgV}MuoMFtoK[FFnvDxAypISuVNKAUBfSDtZMNCi^pUWInEjo_XKzbYZtVyYkjMVLqanhC[cqevwhXHBZ`erGKZvpd^^ia?AaC@SF{`v{zWFjzeWpVxP[YNOnsZfN@ZPLwuL`sPykMJS]CVfFKyEmkB?Rro{lg@OvV\\rdpPzrQNPkIkXbp}UwuVIrg\\qXWjXd@sW?|~RLOPhxPbtwByaHn~\\G[RAb`Hw]izNAy_[yWpSKpx~DzgVjqyEslDeITbBBQnHPU^K\\zWEw[BbF`WIVDkh]yr]Ut]VgjNQLExUyYRsNXuI_ufurPUHpdIjX^XSeYQDEinDl?}C}Rm{LFP|OtVp`]XF_]FSUnrNXgiD^L`yOnE}z[S]P`ZL?_wkba]Uq[dHUSIatE|`ugL{zLZup]C[`\\k\\s\\eQpRNm_vlQGXpaPHdB^Jpm}ew@Q?ZpS@zdVjZ}LDzCZswXeQHgYt_nr}C\\P{A]Ofr~VAHay?B~^CGecJMiZLZcS^|a`bal`WDRlj]mxi[KybJ?uICAN}~g{Jlu`m[wg^TD{\\KpEDvhNgYfTXaG[dOhQ|YUeqI~RBxI^IlbbZl@_f\\@}HP]iZKrvueKrrJq[gyTuL?XYachRBsT{bolYwMCM]WI`J~fxuJVMnnG@Y{pf`TouHTmXbPHx@n^GP[PLCJAUywZJukPrOnTm{IaR}Q_Wdz^tDx\\lNMM^?Ycgkl{WhtSv@ahdOMFaXyi}sW@Lp^LeKD|sBnP[XtqtAcvWXu{i^}c{MnaIeAWo}hWsG@BlgPavH{t?K^K\\snCClM^GS^^swUhiI}`QXJUBZv_GJTMn{uKflZsSk@k]TLerOtUslnEpAEOni|Aa}kJOPl\\?UyVmudrOnRkStiPGNDooaX~tF[p|Jh\\ky_x?aPdR`]iSldX\\KfrtQKZ^QhbJGDB^sfF}HYLRzC\\?dmLFx?m\\S|^@~`akHOAxDmDC|@V]@KRARl^FtPevL^kpMToe?io\\ZST~u]CaB\\{{C\\MSQXsyhtqJeLHP@G^c_ipxTvZOpNP\\rjxhXLUTBnHTa~tgLK?}B_cq~mdGA^nDTgXyv[LrFEBca?FplL\\MwY]A}|rIaNqyO`gKPnu[Qz|sqz@CL^UbPSReQh~N]R`gFLdS[gvN@PfH[`]@CSJYsm{xj~w?vyRG~BxQE{u@awfi}TSLbpBlISQwOt}Ny\\X_OFP_[XNcXaUuKNprDermoaEcAexlhEz}JCpJrfLk}O@Jzsm^[raG`hU[LVh\\ZpE{xZ@kd_mwAgnWTflT[`iUUC^vuirFhwQH\\Ecp[Sv}cbxjQErRUUFbJUQ[?_fWW?]gdtj}C]hfdEtQ[Skf}aj[EbfmcSW@reUR}Pm_HJJuU\\NVJd?jtE|ZebFGShzCOGEmd[N|heRIIlVjeBIW}^FeXt{dbu`@Yab@jGhX~[SZ]TMeDfQ^Na{AD[TDqsfqSBkVLucT_`[jlF}WPtb~@YYgzyPqGH]ucuw?CQyl^[hmkgdVmqJjT@yFEOfPXsfOWNrE|LpYDr[Iym{FKe[ZOjGNUlSiokW[FnZpVOlLrJGNF]dT]FVID}QSAdPWCnUAsf]|RZWfa^^WfmWbXEp\\aheMEKRDX]Rg}NYF]?\\IPNyt^gr?MEg[uTRZWv@jCUAeWHVvmB^_LPViSgVRph~^we_yJaIvySKiwX{gQMXZewV~A`dgipmLDfy@Cmy_T]mOUJ}Ur_w?vsVvx?spEFX}qFWxs|IzcsWnLKaoNRph_PXTMsWbLbDJVKKDT|fHu\\`t@[]cMQwutss|mUgW}@KCkJP^Am\\itCnZGfxPVHS\\NNzBaoDzMl{gIylfEB\\euCL{aF?M_FlPBnIUl~DftxXLlIuL?IuET^^FOkh`hm?PmuCMl{|cEt|b`aBiHXQLzHaSHFmYpBYc~U]XJFiohPQCFcfnMutlDgB}|Q|VOLL@~PwKKRMAXRXz|Eh]OduNOHtN?BmeVEYiRtnVog`ecm~dboMx[P]UsrqCK~SX^LYX|r^kCosiWBbOVA{byq`rnThNBqDgWlW`Hw}{LcXgjrGT~PeYW{QZjkiD[G}IGyEb^{OgsJXGqaJbNjYzibjNX^~t?[KGbCmtR?vQrJ?Qr_yB[^kYe^sgl[_@pYHD_XeXzMYuBujVddFSWAg_qpENyWdTQfUjEbnRrnmQLbTtCp{}bCJg\\EoXKGm_kMQ[McQRIMn\\cyV]WgNQokXkhgmxAgj~pCsDYVNJakQZQZqj\\FOSxqXtmpR`FpdKNXCOZ^|zTK`CB[BSuiYtls[V]RnXhOLU@rDvBd_o{?QgvDeKIdVD^M~XzTQtsmpsWDGE]cHs\\zSZmZWQx]cR@yBVoOT\\BdofVQ`Y}vn]~pkCKHHxCtV?G|rE|YVzFsARhP@kyasy`VBsPe}|TwM_MNfDowcTDE]qGLxr~[zcS`\\\\SxzD\\C|OueCdlp`eaoSnlR?tLPRTgnDvkqNFP\\sGblwJZgbEvktTTPJC^QjlmKmyVSTK?V{BzFGb@G{gJ\\dxwe|FA@\\je@DugWmz{FimRHL@qisHJ@ISvvMvycVzi|BACcfnVcbCEU|KWq\\heMW}eIzs\\mScfCdpRbJ\\s\\PAgTQwX[eyQe^bJOvlas\\`fykKilRyXbcPrDDJoonLu@KOqN`uSdq|rIx\\Ue@ctKUEHPgeOhpoUBWx\\}}qJyABV@SB@J~VNTmsn^T@Ja}LV_JxQ^JVJaF^Woex_rdcdmWdpTTHhpd?qz{cNXKP~g_^Af|R@@JW[H^uJsozoU|hYPKPANcM@cpptyP]JBe]qN{xM_Hf^\\gjbXMYYByTAS[NzTIOHTTSw@kJ\\iyhnbbBV]wbeyrk?~^yCKdcoJdOrk|K|Xo@nM@iomViE_^INuVTYFWcwvEU{KH|\\x@S`k^TiGkFAXh}XSOHkZ@m[CbuzpvTuSvWqJBLPv\\|Gabpyp_b_Ts~NEBSKLsEXZrkMd[xYS{\\@d[g~QU_ix`s[N@sSn]dzKYatd?CGy{Vd|lw\\\\MEEvoOejnYMUMhLJO`TrqGSA}cVfXK@d]@PIXAyBjy|xcEh~We`G|W[uMr\\Z\\Cub\\Hx?PtgXee[CzhOran~dSTAhpNU@\\?ZDnSXY_vTkxkbB]rjSicVP?W{TbbnK~ILOrEbUlkRyLcmSCElXyCD{xzQVRl]xR]cQ|@QDme|_`BWfvFwd`tbo}cIf[ftMCjpeatR?i|XhRbua_ZxN{bWCRqf[o^CPILra{kMvVTvPIu\\gAVBrH`uYelGPAiTvz@fP]dbnCKHY}Va|MYfQDrccHbTe]_tqV`KAu\\Tc|xIjiAwyQVxPpDYjT|GVxAImRlVOPDzwYanhka\\_\\{QGtS@YlAtz\\ettPkeFpVF|gRDR\\lsDth{@U@_p[T{Ef}j^XRbFHfm[?l~JA[_XF?gwEoV[ArpXxn~af_hCAsLPUe}YLEiKdQVA|f[[kSe|QupgpPELxPRoI~qgdi]MptMtvOflLWDLhSZbxRdE`I|yG{Wo\\sARcFhIIN|oxUkmuskWRXOEOx]{v[YLd`jGJB\\KtqrYFSshYH`l|[\\??i~g`Kg\\nAm^jBuUTwXZH\\kGmc]hPNRDnVy_t]cJYE`MWYxUyC\\NBex\\GLpwBbC]gcsg~fG_dLtf[HqlzQS\\{rIHG{BlGVYAn}}CNKTnkIM~pQzqMOd`oo[tS|PAKBad|WrTwgO||ERIoOmuu^PC`jsPOxhFhMhu|cFSkzPxEaOFhsZMjbQTCtjmksCeAGB|uRByFhhZyqVmVxClBhizyuCkd_ePGT}AU[s}ZZKn|JEUoNjX{mDGatEgwFT\\nOca~CQvfOKITyRMyE{}DkZL}YEtpM?DtooNRxEmwI[dw]ZdZhbHulbGWy^VW_UgF{LQwpv?|]}hQjWAISyZ`dKbLpqKeXwfhii@WyoNjnf{Ba|GX{CscwNaul?SwF{czDkkkVnHa]fP?|cfqxuhcJV_TQJoIEuWB|rTxpyTBRU\\qrfYrw{qAAm`SGrUwPRbPCN|QU{q\\jgBerSkZcWiJhzSj^DVB^BI[FpFHUYypdm[ozhkUCNIshoJ|dYXjtaLAfkel?i~bgIKX]RIq^ujPO}TX{?XjGbYhw?\\g|@b`NevYnnCKNLmVSEqxQQf@anCgme~xM?sZqlkkOicVKuFf_Ez?IHKvdxR{w|cAM@iqxavgTs\\Q{sQHchz}fDXKwrIiXFG`kMzQWJQFeinmneP`MwHlgwEbT}ak[mIkFYFYNx`@wFDIHNNDXW\\nwxCH\\pWRdtUeF\\Kgoq@zdWZW|DWhM\\RjbGQQg}OZfu`YOZ^tHIfGhIZCYBt|\\UMuvA]hGLWNUfeNLJ{OyXvnWKxDCkPGrE\\rEAVlfcBOYVlBpSeVae{cEn}M^hyIDSjNaqcYlvgw@MPdizLwqeOt}xQorraAERgY\\TIqxGTiv|dPSbTQH~@jSE~G|PZQimPhxklkj}cPYQnEkw@^dATc\\cHv{zV_WjUBO?I{~HcuUrfB^HygQs|BTsPWqUbPrStxZ_WjteZREZTZYnmmsXqcbuUAq]NWjgXRwLkO@QonyZLniKqv@lW_~AzhjDE}qCyP[cg|WKbXvSofI|SfIgUSTclSTSwM^~^s?ojcYwEj\\hM@ZGUCFDDtnydNsxpprHnS?LLLcDV]PtSf_p\\O{bzz@T|HbCkunIBAW|KEiNvV_yngZFeMRSYfEUsXoWl\\G|TIDnOtIxa@XuxG{jbQG{cLGdoTRlv|ioyDtHmMG{Bbpr^{zGM`@Kjtb}ocDgr@yYkdZQ\\mhqCrzRPUHkMIoXciNIwI|dIkAvDuPTexBjVDDbQZp~bDhNhX]LaIEXHlvyEG@|eNke[PkIJ`NnOMDkvVq?{@MFsbkP{sdXeaNVbv^RP`aVWkeiwdpXxe^bNsGpO]ZShIfGPewyzrkUuO~NVFc~AHDPyA@OH}t|PMLnnPB]]US@VBNxhIjcaIHM]]~p\\hIlAd}GFO\\\\JYf~LaIAKS]?MqwY~TMCbQ`E~wHJSy]]yTS@nKg{CX|BSQgBFRtzcrajVvtoljFJBgBq]SSYlCxOlDvvZktiT@UW|`gMnJ@_EikqzqNZ@q_Aom}t`{OdaXvw@xNQM|dZZSVfEJSXsW?KkbHy|ixHZZXsLL@x_}yXkGbt\\tCGEGSN]uVmivWeOcjE}dydM`kdrIJMdAHbm}SlAXBy?ecZEphZ}UsstoUE@ZIQ\\CfBnmViOnDKKl`zVrP}M{OR@B}GV[dHoBpz|nBNqPwqQZoMeOr\\k?[mZmCfjoCgiA}EWETjMCUXFQNu|L[p[s\\S]wthy\\sAx_\\[Ox{qu\\RUYoJplljZ?A@VYRfp`lw]q{_Ift~ALa|Vi?kPOzZEjq_QOFmHfHNHy\\gjvD[c~LsT_HMcEVIjbeqzNlQiknB[iJvhpGY_TThorbRO@}p[wixELAJgdro[oq^}OHidPFZy|Fh\\heQ_jfe^bIBz{vY`dDjh^KgQScEGvFzsXDQsFlFI`bF^ReG?WlF`YyAmkrGzv`nfaHdu`j{DJ@rIT{ttqRDTxP{{SZGPc~sx`HE~BMka@tYcs?SYtMztybXn@@IoLdGSVydr[dKhy^`uflaqauq\\QXJ`vx{WUveKD{C[guTpcEKPNUD^JvJBdqGnwGFm^FTiAHpGGDVywyBHlLepXutJg~FiMbsr?dlom}tnEIuRcKARTUIJJcGqE]Nvpw[|CSLc[E_vr`h\\DdKKJvipq}owGhY^lsy_`Fbz`xWutyiSfus[WzSsLJRTAt`a?XyFj\\B[fD_doqx[hMc@QuN{EXhFsRP]TLIwntorYt]zl_HhXv[t}GcLLqphv}gC\\lTYLJgW|PlWIncGchvRGC\\fob_JAvGUsS^}XAxcTNFbrdr?uZfshmwPtky?^ULWxbZl|PuLA^c?KlQiYiUxyBJPe_|JE]a}}BGEkKoDWkw?OUp^^bjc}\\@b[~u\\A[_{lQB~s`^W^a~mcfgGmM{MNKOR`PakOitjuI]BxwIM_GkCcJ^nFsiFg~]W~}n`wh`g]a[DVYAbcyqZzTntiUNuHHK{NMAMEm?SFqo_j^_LjrQIOwar_gsCtRJb|ydEXGayJ~zRh?JJPVs~][Ks~b^Rp`FjXNqPnBjLGvKiIxCxHhUe_NQHbVHBCVaKGbloHWS|cWr|]aRJHpoyDey^j[h{]nHcKpdi{eMhtkxvkftV[cs?}qsTCRKCfCEtwv\\SMExoGznQP_DbKLhKTO{a^[^FUn{{wcN`XYZ[v}xAu`_s{WXYp{}uKgPCEWNfBFbuBfGrkc\\k@XFMO[ywBowMCppxfPujy{]FBjYB`w}Ob}Uo^oBw~o^~b~w?xoB~rcRob_F??~~?]?^w?WR|c?F?Bo?Fw?N~}^o?^K~O]F{?^wFw?^~}Nf|bK????????????????????????????????????N~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
py3 with this patch but no canonical labeling
'~?Ex???C^ckeoLON?T_P~FHYklbWZBU[@zE@VT?bp~FJclUZJWuZBWYlXoFbuKAlVT?{Pw~`ZqxJRYrXZ@nXkLa[tYr_pfbuKDTUji_]NC]NFUj]VJcZLjLeqEr]rXkCy[tYlOpwrpw{AjTTitWFaNwb}GyvclxJ]PlXZUUtcLzB]ovkCxjMYregWruK|bN?iiyimij?fTUqsvwpwuswvTU}@nolfWutS{Rk\\TkZUailLw~CxkBWvT{J[[wAvFwZRihkAilLw~CxlFZEyn`Zbf[fa\\bilbYuqRijXYZ{W|_Uw~BY\\TLlOL}DkzEuif_WuswvTU}DWBWvT{J[[yNwfTUqsvwp{dhZb{LhtSvXZELlMLtTnbWZ@nolfWutTjMAilLw~Cxk]p_{Rk\\TkZUiygAvFwZRihmNF{E~Au\\bZT]VHYfTUqsvwpuZJWijR]NpMZZL`kWuswvTU}EjU[Fa\\bilbYs{]p_ZEyn`ZbfIt\\S?vwUrkZYjwbp~DTYZp}HrXZqxJULlMLtTn`lXkl`kZi}DmM[ZuZBW{Rk\\TkZUrejU[AvFwZRihnE]NWoRijXYZ{WyilVT?{Rk\\TkZU}NC]NFUw~BY\\TLjTnJdqLb\\VolprerYrXk`nolfWutSuZuZL_fTUqsvwprhrTitBEufEyivpbpfbpwDTYZp}HrYjTTitWELlMLtTnbpF{P~C^pMptUplYlxJ]QvcijR]NpMZLjJYqukavFwZRihkvkLzB]oLb\\VolprhrU[tfLOfTUqsvwpwruK|bN?L}DkzEuitT\\TVTT_CstRBI[BUIiRQq@rdQSe[WPhKxHWxDTGMobVDOeedX?|Ha[ci`L`dBV@MgFWfDSfHQB_eLRTHUDTQqF?zEQ?ugRdHkJaRcT@yPpaASwocplPLQM@xJDTc?RWXOtoRiIiUOwFWqW{hp`HbYaYRcT@yPpbqBY`MSeom?zCwicxITcobVDOeedKTSedcBfL_HhieESwEsb_]QpTXEgTHQXp`Ec{_]cpMQTPwB_eLRTHUCxHWxDTGMj?iQcrbALHq[agNQMKW~`L`dBV@MgpTQYUOM[xJR_eLRTHUEc[BqUIjHXZChp`HbYaWxHWxDTGNkL_ZSHqcuDpcBseHqQiYr_HhieESwEiiUOwFWqRuKECYwiCssgMpMIhMQcji_WPjagRRQiPoNHWikc]Nw[CpiYhIox?|Ha[cimVHYiQcrbALHkTSedcBfJLdkBY`MSeomDTJG[BkXMrWZAZBIEmA\\OxHWxDTGMtYr_dMKHKZSR@uHpTHqSbpzE?eeiWXR_ZHqI_|GwpTiygChp`HbYaZGFhKRcdTwbp~ECYwiCsshTQqF?zEQlx[dgeeiWXR_Y[ck[aicFZUZJW[CpiYhIoq[agNQMKR]rWZDQSe[WPhKMpMIhMQdMYlXoHkKgYwHtIPoNHWikeK{]p_EtA[hL`[KTSedcBfIilVT?[CpiYhIo`uHpTHqSnFaNFbbY`MSeomIPoNHWikatZqx[aZBIEmA\\QRcT@yPpauZUZLcHhieESwEx?|Ha[cibXnXkuASwocplPKpTQYUOM[fRejTiECYwiCssgxHWxDTGNbpfbpwDQSe[WPhLTQqF?zERTiitYk?ZSHqcuDo[ck[aicF{P~C^pFHhieESwE`uHpTHqSdnHZqU{chp`HbYaXTQqF?zEQukljJYqTHQXp`EcyPoNHWik`nWZuE|_obVDOeedQ[agNQMKXrU[tfLO[CpiYhIokTSedcBfKXzE]pf_HkKgYwHtK_]cpMQTTTVTTtTWFJWtTfg|eRHcqXKeRXxFeimNkuIrteNqYqXKeRHcqUmqM]k{dXi]uPt\\fdHcqXKeRHxLT]qNXNAmrFY{l`yRHcqXKeQ]T{gzVXX@yMjxUUmqRHcqXKeRkNUT^HjFANqkzEhxVHcqXKeRHTpulfW]x?kl]PzWjbqXKeRHcqW|fXqNIugEpU]kp}RTapWkUJDbqYi|c]q]bizK\\jquFeJDapWkUMo|XT{ek^cNPt^IqtuKUJDapWkUmqM]k{d\\ckl]PzWjbkUJDapWkT[\\jXuFmUoP}TfWtNIuJDapWkUHxVqbl\\ddiFJWtTfg|dapWkUJDbFkzMPxUtN?Yflc\\VXxKUJDapWkZNG{tTp|ak@i]uPt\\fdQhSiTIdQNI}S\\jkkp~@yMjxUUmqdQhSiTIdFkzMPxUtxJUpU]kp}RUdQhSiTIcjblZMo|qklaNqkzEhxVQhSiTIdQxLT]qNXNZBWTuWzVdkNSiTIdQhSjNG{tTp|bU[DdjqNZD[]dQhSiTIctuPrtfcjNWo[lbTU]buYTIdQhSiUo|XT{ek\\VT?TuWzVdkNFB`ow[MFEmqM]k{d[]Nwkl]PzWjbfB`ow[MFBqndFYzJNJclP}TfWtNIr`ow[MFBeo|XT{ek]rXZBS|kbizNGw[MFB`oxFkzMPxUtuZBWxZEik|FkfB`ow[MFD[\\jXuFmRTjMBWjNUW~Hi[MFB`ow[k{brTVFuFbuK@yMjxUUmow[MFB`oxqYi|c]q]Tiyg@yMjxUUmrHcqXKeRGjblZMo|q{Pw~aNqkzEhxVcqXKeRHck{brTVFuJ]VHYTuWzVdkNXKeRHcqXG|fXqNIujYrXZFJWtTfg|fHcqXKeRGtuPrtfcjLzL`kUUnG|kTp{eRHcqXKfHijuPzHy[tYr_Yflc\\VXxXKeRHcqXL`yqjxLW}K{]p_uIrteNqYxKeRHcqXBqndFYzJLTUji_P}TfWtNItQhSiTIdS]rkxFdZVpwbpw~JWtTfg|dSiTIdQhTqYi|c]q]Uj]VJckl]PzWjbidQhSiTIjNG{tTp|bXlXkuRWjNUW~HiiTIdQhSiuFjInctber]rXkBS|kbizNHSiTIdQhStuPrtfcjfRejTi@yMjxUUmpSiTIdQhS]T{gzVXXpwrpw{@VXbl]Uo{iTIdQhSiTpulfW]xTYilUj?kl]PzWjb`ow[MFB`|`yqjxLW~aNwb}GzS|kbizNGMFB`ow[MjblZMo|qU{dnHZq[lbTU]buOw[MFB`oxxVqbl\\ddlXZUUtcNPt^Iqtu@ow[MFB`zNG{tTp|`nWZuE|_uIrteNqY`ow[MFB`w|fXqNIukxjMYregIzK\\jquF_w[MFB`o~HijuPzHzE]pfkXwC^dXuLRqkMFB`ow[MtuPrtfcjiiyimij?RB[KigwHbQ[ih`[HerXkuZLerDTHhX?xqSR[WSougRiWSr_ZIZLerXkuZFHJFGih@ouTSHmCuET`HmIaWYuZLerXkuq@yRCxHTEEgL[QaYYge[Q`hNAuZLerXkuBkRaiRch?f`RT@khp`[T@iYSRZLerXkuZIiUOwFWqOiMHQWf`Em@iWfIotErXkuZLesfGiBsbbCB`KREwYchLIEwQ\\PouZLerXkuhF?{daiq?BXTOewRWQ\\RAe[BXSy\\MfRhsxTQqF?zERFHwStOZI[TCraSLHwXsy\\MfRhsfGiBsbbFcdCvEDKLiWVDOYedCxsy\\MfRho\\a[TQ[dIqTFChKRobSsgZ`HtFCy\\MfRhsxaicsk_[xkEEgL[QaYXoLRCxUEhMfRhsy\\MhF?{daiqLO[HaWvBSdBQ[ih`[Hhsy\\MfRhuONQWfHIg{@KLoqib_fIocvDPKLfRhsy\\MfFHJFGih@tWEEgL[QaYYT`HmIaWYlUjTitYlcxDO]c[Wp~B`KREwYcjAwiBSsgelUjTitYlWihLJGFM[digwdHa]CYRiWSr_ZIUjTitYlUsb_]QpTXJJWEqi`Loeom@iWfIotDitYlUjThqQpqIiO^WZAWZ`dTF@Mge[Q`hNAlUjTitYlq@yRCxHTLXoQaZbAeEtCsgZ`HtFAtYlUjTitTQqF?zEQ]p_HwStOZI[BQ[ih`[HditYlUjTg\\a[TQ[dHVT?dCvEDKLiTCraSLHw[]NFbpw{\\GwFckTUQNF{WY_tpIHhcsgZ`HtFENFbpw{]NGFhKRcdTqxJPNAeiBXR`oLRCxUEhbpw{]NFbWihLJGFMUZJW[HaWvBSdQkHLpSRB[]NFbpw{YidcM@uKfXkLagwdHa]CYLHqieDoepw{]NFbpfHJFGih@ujU[AWZ`dTF@KfSohf?uTbpw{]NFbBkRaiRchFbuK?uTSHmCuFAwiBSsgfbpw{]NFbcxDO]c[Wit\\SAgwdHa]CZ`[T@iYSRLerXkuZLx?|Ha[cinC]NwRB[KigwHm@iWfIotBXkuZLerYidcM@uKdZqxJR`KREwYcige[Q`hNAZLerXkuZMQUMPTQBljLdkQaZbAeEt@hMTSomCpkuZLerXmRcT@yPpaZuZBWEqi`LoeohhOvARiMBXkuZLerW\\a[TQ[dI[tYr_HwStOZI[QkHLpSRBRXkuZLer\\GwFckTURE]NWoWY_tpIHha\\RAe[BXPkuZLerXlaicsk_[xTTiygB`KREwYchoLRCxUEhTitYlUjTBkRaiRch]NC]NFEqi`LoeobQ[ih`[HilUjTitYlGwFckTUPYlx[mPKLoqib_eedB[HMgwitYlUjTiq[agNQMKUrYrXk`NAeiBXR_fSohf?uTTitYlUjTq@yRCxHTEr]rXkCgewoh`lQT`HmIaWZTitYlUjTWihLJGFMRhrTitBBSEmHPLL`[T@iYSRitYlUjTifHJFGih@{]K{]N?iMHQWf`EtCraSLHwYlUjTitYiidcM@uKejTTitW@NAeiBXR`LIEwQ\\Ppw{]NFbpwMQUMPTQB}G~aNwbtFChKRobXUCewiH`nbpw{]NF_MpMIhMQclxJ]Qvcot@jaSRRBQ[ih`[HnFbpw{]NAidcM@uKdlXZUUtcRB[KigwHwVDOYedC~Fbpw{]NDGwFckTUOvkLzB]oMCpKZ`iQa\\RAe[BXVbpw{]NFaRcT@yPpbMYrekxi?uTSHmCuEge[Q`hNBw{]NFbpwWihLJGFMWruK|bN?dCvEDKLiM@iWfIotNFbpw{]NEONQWfHIiijiiyik@kuZLerXlXxFeimNkxZEik|FkcstRBI[BXtTklL}KZXkuZLerXjkbfjNHVkTfjK^ctiQcrbALHwuswvTU}BXkuZLerZctTzG|c{tNZGymrqobVDOeedE~Au\\bZTPkuZLerXk]T{gzVXXTuWzVdkNHkKgYwHtNCzFTZEtgZLerXkuZZBtdVqYprs\\Vqkl\\b_eLRTHUEilLw~CxkBXkuZLerXVFYu\\`zdFxU\\bS{jEtA[hL`[Lb\\Volpr_LerXkuZLg|fXqNIuldjqNZD[]SwocplPKlp}EsyiZ?fRhsy\\Mf[einXFkflak|Xb{eiZBIEmA\\QilLw~CxlFfRhsy\\MfZBtdVqYpt\\eMtxZBshp`HbYaXkZi}DmM\\qRhsy\\MfRemqM]k{dXyMjxUUmoZSHqcuDpwfWyjWulkcy\\MfRhsxVFYu\\`zdXY{bupVFobVDOeedRijXYZ{W|_fRhsy\\MfFd^IMtuUW~IrkYfdXLLSoqf?tZb{LhtSutA\\MfRhsy\\FkzMPxUtxZEik|FktHQXp`Ecr^`ZMplihwCy\\MfRhsyrqNLT[^WtNZGymrq[CpiYhIowuswvTU}DWAtYlUjTis{jxPumqqtNZGymrqiQcrbALHlb\\Volprg~`YlUjTitZFkzMPxUtNPt^IqtuHkKgYwHtHtTklL}K^HYUjTitYlUiwzUrkN[lak|Xb{ej_eLRTHUDZb{LhtSvXZAtYlUjTivctTzG|c|FxU\\bS{jdMKHKZSRWuswvTU}L`kJTitYlUjZNG{tTp|amrFY{l`wZSHqcuDoZ{JXuLlTYr_UjTitYlUl\\c[|XxIzJVc]uIwxLLSoqf?uilLw~Cxk]p_UjTitYlUzBtdVqYp}UpijNPzMCYwiCssjpMptUplYji_W{]NFbpwumqM]k{dYmrFY{l`zAL[TAYYSlp}EsyiZbp~ENFbpw{]K{jxPumqrXY{bupVF[CpiYhIoe~Au\\bZT]VHYpw{]NFbpzBtdVqYpw~IrkYfd\\QSe[WPhM\\TZJR^bFXklbFbpw{]NFFkzMPxUtYflc\\VXxBY`MSeomIisvb{ReurWZENFbpw{]LVFYu\\`zdquLTXyNXRWXOtoRiWuswvTU}EjU[ENFbpw{]MrqNLT[^XkTfjK^ctdMKHKZSR]HuMiuLjRpzEBFbpw{]NFqYi|c]q]NPt^IqtuCstRBI[BUpmjwUwxqlVT?LerXkuZLiwzUrkN[bs\\Vqkl\\chp`HbYaWvwUrkZYjwbp~@kuZLerXmrqNLT[^XFxU\\bS{jobVDOeedTThnFwfLdnJclErXkuZLew|fXqNIuimrFY{l`weeiWXR_ZbZRb\\TZwZUZJWLerXkuZLl\\c[|XxI}UpijNPzJ_eLRTHUDkZi}DmM[ZuZBWLerXkuZL{einXFkfjJVc]uIw|QSe[WPhNpMptUplZMYlXoErXkuZLe|`yqjxLWzS|kbizNHL`dBV@Mglp}EsyiZpfbuK@kuZLerXk{jxPumqrkTfjK^ctEtA[hL`[RijXYZ{WyilVT?itYlUjTipzMrc]TlW~IrkYfdZ_eLRTHUFpMptUplZw{Pw{]jTitYlUjqYi|c]q]xZEik|FkbY`MSeomDmNoufTRYtZqx[dUjTitYlUrqNLT[^XXY{bupVFRWXOtoRiLb\\VolprerYrXkdUjTitYlVW]ki}RUNkTfjK^ctHhieESwEe~Au\\bZTRXnXkuAjTitYlUituPrtfcjYflc\\VXxQfECeLiHhtTklL}K[y[tYlOitYlUjTifd^IMtuURs\\Vqkl\\eCYwiCssjEufEyivpbpfbpwDUjTitYlTVFYu\\`zcjkpunJW]iQcrbALHtThnFwfLilTUjT_]NFbpw{]L`yqjxLW|djqNZD[[ZSHqcuDpbZRb\\TZw{P~C^pF{]NFbpw{IwzUrkN[ehzXFTu]PLLSoqf?vpMptUplYlxJ]Qvc{]NFbpw{Fd^IMtuU]UpijNPzKhp`HbYaYilLw~CxkukljJYq]NFbpw{]JNG{tTp|`yMjxUUmqhIRMKGselp}EsyiZLzB]ovkFbpw{]NFaNXu[bqljkTfjK^ctobVDOeedLb\\VolprhrU[tfLO{]NFbpw{[einXFkfd\\eMtxZBr_eLRTHUE\\TZJR^bFbNWruK{Bpw{]NFbotuPrtfcjb{jMpi]ThkKgYwHtB^`ZMplilTVTTtTW@pbccs_yijbUeuva\\~?^oF{??EcxTRAwRLerXkuZLcovBIiMAW[wiWxISdlwLtXqvE?~_?F~}?HtKIXoLdLerXkuZLhPLp`RBY`TcMSeKcNwirkYtkZ?^~~{???QkHLpSRBUrXkuZLeouTSHmCuCh@xHpTcWrdlTlbL}Nw?@~?^oDPKwdBQ]DkuZLerXl`iBVCgeeCdSFqFELHYup}B[yi???N~{@~omI_tLIHlerXkuZLa]DLSEqf?KXLHSFMXB[zoliwuo?@~??N~|oLRCxUEguZLerXkuiMHQWf`E_qSeG]QiMWrZY\\wij^~{????NyYSLocyb`kuZLerXkwRCpmEhI?WqYQgM[qWrZY\\wij^wB}?~_?@Mh`RM@ki\\MfRhsy[LdTAZ`L`bfEMQRQBinDU\\bUlbWB}??^~wAge[Q`hNBMfRhsy\\MHwStOZI[[eQcpBqTPqjbUeuva[?~~~w???omI_tLIHrhsy\\MfRhPLp`RBYdcBfDRFHQcjUuNoZfT^w?@~?^oAYSLocyba\\MfRhsy\\S[QcpNALu@TcMSeKcMu{EykxZb???F~}?~m@iWfIotHsy\\MfRhuEgL[QaYXiCdSFqFELI[lilkXno??^o?B~~EcxTRAwRRhsy\\MfRfAWeLotHPwDGNHMIkbCvM{JYmLl~~_???@~dWQZageErhsy\\MfRcovBIiMAYkBHQW`xIgwlZW~@m\\T~_NwB}??QkHLpSRBTitYlUjTmEgL[QaYYNwTXBdHbHBexv`ZTpl_F{??~~oEDpSEhhPLYlUjTitYwRCpmEhIxJPpbccs_yi[lilkXno?~~~w???HtKIXoLdJTitYlUjYbaSeHwPldkQTO^G[WsimLYZZ]Hv{??~_Nw@oLRCxUEglUjTitYlEqi`LoeozBWBfDRFHQcwrZY\\wijO??@~~_N|PKwdBQ]DYlUjTitYeEwXTPoRYr_h@xHpTcW}IkzElZEo?B}??^~yYSLocyb`YlUjTitZIHmKIWZSNWoKXLHSFMXEv_vTfJ[^~}????F{YRdTKJ`KlUjTitYlHwStOZI[IygCdSFqFELGvM{JYmLl~?^oF{??iHfCgYRow{]NFbpwxPLp`RBYc]NwWqYQgM[qT[Ysuu{R_F{??~~oAYSLocybbFbpw{]NF`iBVCgeex[dicFcfDUPbbLlhvail?^~~{???M@iWfIotK]NFbpw{XNAeiBXRarXZ@pbccs_yhlwLtXqvF~??NwB}?dWQZageEw{]NFbpwvAWeLotHUrWZEQcpBqTPrpTfWtjWu???N~{@~EcxTRAwRW{]NFbpwybaSeHwPjTjM@TcMSeKcMlZW~@m\\T??Nw?@~~cyeDKwEqk]NFbpw{YWZ`dTF@K{]p_BfDRFHQcrdlTlbL}N~{????N}DpSEhhPNFbpw{]NELdTAZ`L`TiygDGNHMIkbDlwLtXqvF~?^oF{??omI_tLIHerXkuZLeybaSeHwPnaNF{XIRCNHTFHquiupe~?B}??^~w@oLRCxUEgZLerXkuZRB[KigwHj]VHYWqYQgM[qJUuNoZfTOF~~~???DPKwdBQ]CuZLerXkuwRCpmEhIZUZJWTXBdHbHBwrZY\\wij^w?@~?^o?sfIiWVAWuZLerXkvIHmKIWZSLzL`kFEMQRQBib[zoliwuo???~~oF|LIEwQ\\PoZLerXkuZEqi`LoeorejU[?[wiWxISejbUeuva[??^o?B~~dWQZageEerXkuZLeq]DLSEqfEK{]p_ci_}Owph]IkzElZE~~{????NxMh`RM@kguZLerXkv`iBVCgeeiit\\S?M[TK[dIRwirkYtkZ~_NwB}??M@iWfIotIlUjTitYj`KREwYcjpwbpw|GNHMIkbDYup}B[yi?~_?F~}?EcxTRAwRTYlUjTitPkigR[HkItZqx[cdSFqFELHlwLtXqvE?~~~w???RQ`mCfS[TYlUjTitSovBIiMAZXlXkuRHQW`xIgwZf]DlVEu~_?F{@~?CyeDKwEqilUjTitYhNAeiBXR_uZuZL_WqYQgM[qRdlTlbL}???@~~_N{jAR[TCoujTitYlUjIHmKIWZSfRejTi@pbccs_yjEZZRnDTY??^o?B~~omI_tLIHtYlUjTit[LOYwdCsuNE]NF_Ik`qcpc`ymLYZZ]Hv~}????F}ge[Q`hNBTitYlUjTiMHQWf`EtYilUj?TXBdHbHBrdlTlbL}NwB}?~_?AYSLocybbpw{]NFboRohi_uSw{P~C^pFci_}OwphWrZY\\wijOF{??~~oCjAR[TCovpw{]NFbpS[QcpNALU{dnHZq@rahbchQR[zoliwuoB~~~_???YRdTKJ`Lw{]NFbpwot@jaSRRLjJYqukbERQT@reRpTfWtjWv~??NwB}?omI_tLIH}NFbpw{]CovBIiMAXnWZuE|_h@xHpTcWt[Ysuu{R_??@~~_NxMh`RM@kjpw{]NFbowRCpmEhIfLXrU[tBHQW`xIgwu{EykxZb??Nw?@~~tCraSLHw^Fbpw{]N?uTSHmCuFE]pfkXw@pbccs_yhYup}B[yj~~_???@~[BSpMT`i]NFbpw{]HPLp`RBYdTVTTtTW?B}?~_N~{wpqQYO\\SiMSkccMpk{brTVFu[lbTU]buXKeRHcqXKyiuUe~EN}?~~o?B}FMIeMQdHc`{ahbQML\\c[|XxI|ak|Xb{ekeRHcqXKfEufEyivo~_??B~~~ik`qcpc`oyha[hQ[fHijuPzHxi]uPt\\fdHcqXKeRHL}DkzEui_B~~?^oF}cFcfDUPaphIhHrGFNI}S\\jkkizK\\jquFhKeRHcqXNa\\bilbYs^~~{??~_HIgNcMKYTIQ[BxEIjW]ki}RUM]bi}TdjkcqXKeRHctThnFwfL_~~oF~}??KXLHSFMXKbCNQTFHImMtkzBvINqkzEhxVHcqXKeRHZEyn`Zbf???N~~~~?XIRCNHTFBeQQpBiiS]rkxFdZUqtxFlamNHcqXKeRHUw~BY\\TL_?NwB}?~~uKeciBfK`rHHW`tTJctTzG|c|kTfjK^ctWkUJDapWtThnFwfLg~{@~~_?F{wpqQYO\\SFTKRdIRcuFjInctbizK\\jquFeJDapWkUJWvT{J[[zc~_??B~~~xIRCNHTFDPqdcc`uJVXFNU]Qk|FT{jJVWpWkUJDap{Rk\\TkZUuO@~~_NwB}FMIeMQdHhQR_^GpTIwzUrkN[jJVc]uIwzDapWkUJE\\TZJR^bFkF~~~??Nw@TcMSeKcNHBxDREc[NI}S\\jkkp}TfWtNIuJDapWkUIvFwZRihliF~}?~~o?AQiBxBbEcphIhHrGFbu\\fG{jY{lbTU]buUJDapWkUHnolfWutS{???~~~~{@QBqRajGpqKO|HS[cu]PxijbzEhzXFTu]RDapWkUJFEufEyivoj??^oF{@~~xIRCNHTFIScwFqKTPxVqbl\\ddi]uPt\\fdQhSiTIdQZEyn`ZbfP~F{@~~_?F|TcMSeKcNcW`yQgxHbu\\fG{jYfgyndXYzITIdQhSiSyiuUe~ENcl^o??@~~~rbFHHh@tREcicfK_\\VFYu\\`zdkTfjK^cthSiTIdQhJ[^`lMiezJW?^~wB}?~qTO^G[WsdPqdcc`uNHijuPzHyNqkzEhxVQhSiTIdQplhpmil{ZBW~~~w?@~?@rahbchQReQQpBiiTfc]Yiw}pVXbl]Uo|QhSiTIdQL}DkzEuilXo^~wB~~??IO]Q[TXEG\\SpMShMPjkbfjNHVXY{bupVFhSiTIdQhTThnFwfLbuK??@~~~~w@bHhI_xrHHBxDREc[uFjInctb{lbTU]buYTIdQhSiVa\\bilbYtVT??^oF{@~~qTO^G[WskbCNQTFHJVXFNU]QlVXbl]Uo{[MFB`ow[Uw~BY\\TLpw~b}?~~o?B}pcsdO[xcTFIUQQFWfd^IMtuUZJVc]uIwxow[MFB`ovwUrkZYjqxJV{???^~~}cFcfDUPa[qQUG\\TQuFjInctbp}TfWtNIr`ow[MFBcyiuUe~EMrXZ?B~~?^oF{wpqQYO\\THBxDREc[bu\\fG{jYlRuqMjk{b`ow[MFBdTYZp}HrZXkLb~~~_?F{@chKO{dS[BieHqdHqIwzUrkN[mUpijNPzHow[MFB`rEufEyivotYr_~~oF~}??Ik`qcpc`yScwFqKTTfc]Yiw}rWjNUW~Hi[MFB`ow[{Rk\\TkZUfbuK??@~~~~w?M[TK[dIQphIhHrGFxLT]qNXNFgyndXYzB`ow[MFBbWvT{J[[xUji_?NwB}?~~yO]Q[TXEKcNcTKYPpVFYu\\`zc]bi}TdjkqXKeRHcqE~Au\\bZT^C]Nw~_N~{??~xIRCNHTFELHTHMX?|fc]Yiw}qNqkzEhxVcqXKeRHcijR]NpMZJ]VHY~_??B~~~kXLHSFMXIScwFqKTS]rkxFdZTVXbl]Uo|cqXKeRHcplhpmil{LjLdk?N~{@~?^tUOxQWqOxrHHW`tTHjkbfjNHVquLTXyNXqXKeRHcqLb\\Volprb]rWZF~~~??Nw?wpqQYO\\TcW`yQgxHxLT]qNXNUUnG|kTp{eRHcqXKfa\\bilbYu[tYr_~~oF~}??@rahbchQTPqdcc`uMo|XT{ek\\i]uPt\\fdcqXKeRHcUw~BY\\TLwrpzE???~~~~{@HT@{`pbQBieHqdHqFd^IMtuU\\ak|Xb{emRHcqXKeQ\\TZJR^bFTTiyg?B}?~_N~{M[TK[dIQFTKRdIRcbu\\fG{jYp}TfWtNItQhSiTIdVa\\bilbYvpwbpw~{@~~_?F}cFcfDUPbQcf?}PaixLT]qNXN[lbTU]buTQhSiTIdQvFwZRihlYlx[mR}???N~~~HT@{`pbQc`{ahbQMU]PxijbzJJVc]uIwyhSiTIdQhkZi}DmM[uZUZLc?^~wB}?~xIRCNHTFKbCNQTFHMo|XT{ek^WjNUW~HiiTIdQhSiL}DkzEuier]rXkF~~~??Nw@bHhI_xrGphIhHrGFYzGxyrqTlRuqMjk{dQhSiTIdSyiuUe~EM\\MYlUg^~wB~~??BbFHHh@tPrHHW`tTG{jxPumqq]bi}TdjkTIdQhSiTWuswvTU}K]K{]N???N~~~~?Ik`qcpc`tPqdcc`uImMtkzBvHVXbl]Uo{iTIdQhSiijR]NpMZTYilUj??^oF{@~~ik`qcpc`uLHTHMX?}o|XT{ek]qtxFlamMFB`ow[MFplhpmil{]G~aNwb~oF~}??^xIgNcMKYPrHHW`tTHVFYu\\`zctNZGymrqB`ow[MFB}HuMiuLjTnHZqU{f{???^~~{M[TK[dIRcW`yQgxHNI}S\\jkk{lbTU]buOw[MFB`o|TYZp}HrXlXZUUtc?^~wB}?~kXLHSFMX?yha[hQ[dfc]Yiw}o|FT{jJVWFB`ow[MFUw~BY\\TLe|`nWZuB~~~_?F{@QBqRajGpTFIUQQFWpzMrc]Tl\\ak|Xb{eg[MFB`ow\\kZi}DmM\\MYrekxiF~}?~~o?BHQW`xIgxHBxDREc[xLT]qNXNIzK\\jquF_w[MFB`o{yiuUe~ENE]pfkXw??@~~~~w?wpqQYO\\TQcf?}PaiYzGxyrqTp}TfWtNIow[MFB`oxnolfWutUijiiyik@S[hXHG\\a?~_NwB~~prbZXZwilerXkuZLcovBIiMAWsfIiWVAZXXTfek^cpTQYUOM[c`{ahbQM^oF~}??^~EMjMLjUrXkuZLerYSR[WSougRiWSr_ZITlZK[|quFHJFGih@o\\SpMShMR}???N~~~TLwtkxlwZLerXkuZBXTOewRWXUCewiH`hzdFTzJJVGFhKRcdSKYQiQ[q@oF~}?~_NyvouptR[xkuZLerXl`iBVCgeeiHfCgYRouRrVdFuIozCwicxIOhQR_^GpT^~~{??~_EtVoZprdjXkuZLerWf`RT@khp`[T@iYSRbzMTdUtNIiUOwFWqOqKO|HS[c~~wB~~??HrXZT{WrZXkuZLerYgwdHa]CYwEha[jBSxI|bUq]bq[agNQMKOFKcdaFTS_?B~~~~o@lZM{LimLkuZLerXkwRCpmEhIRQ`mCfS[LWxzXqTuYPoNHWik_@rHHW`tTG@~?^oF~~MZJYnbEZfRhsy\\MfBXTOewRWQ\\RAe[BXTc{txP|alTQqF?zERFBieHqdHq^oF~}??^{[wuuU}Iky\\MfRhswf`RT@khpSRMHOsf`Yprurcjkq[agNQMK]PS[hXHG\\b~???F~~~LjXv`lTprhsy\\MfRhPLp`RBYeDpSEhhPNcjuLZHyMFWfDSfHQkdIQ[BxEIg@~~_NwB~wptXplYufRhsy\\MfTFChKRobSsgZ`HtF@zdFTzJJTaicsk_[xkCcNcTKYPr~~~_?F{@TLwtkxlwfRhsy\\MfWY_tpIHhf?tKRdWYeqqjNLW~Ic[BqUIjGt@bQTQReON~~_N~{??ZT^@nFMUrhsy\\MfRfAWeLotHOsfIiWVAXUtkprvJXcBseHqQiN?qKO|HS[c_?F~~~~_Dn`lbiexsy\\MfRhsxKLoqib_fIocvDPKLbzMTdUtNFHJFGih@tWDIQ[BxEIg@~?^oF~}ZUrnBYjbUjTitYlUwY_tpIHhhUCewiH`iljXbfmUqRcT@yPpbF{XEG]ciMQ^wB~~??N|SvbUrev`YlUjTitYwRCpmEhIomI_tLIHuRrVdFuIuIiRQq@rfHYWsdScxcB~o??@~~~{[wuuU}IitYlUjTiugwdHa]CYRiWSr_ZIbzMTdUtNSb_]QpTXJJWTFIUQQFW_N~{@~?^utVoZprditYlUjTisZIiCvAZAwEha[jBSYprurcjkfHJFGih@|`kFKcdaFTSn~~}??^oFbFTfEtjXYlUjTitYeEwXTPoRiHfCgYRo{d]pjXNP{_]cpMQTRU[?\\SpMShMR~~?^~w??l{Lk\\SvMUjTitYlUqaZbAeEtCsgZ`HtFEqqjNLW~HTQqF?zEQ]p_c`{ahbQM??F~~~~_HrXZT{WrYtYlUjTisf`RT@khoLHqieDoeN[gynXXY`uHpTHqSd\\SBGpBsdPqQ?~_NwB~~ZT^@nFMUw{]NFbpwxPLp`RBYdPKwdBQ]C|qbi|ddjQM@xJDTcbp~AgxQqQOzF}?~~o?B~MZJYnbEZpw{]NFbpwY_tpIHhcsgZ`HtFC^XqkiuhzGFhKRcdTqxJPrHHW`tTJ}???N~~}l{Lk\\SvMpw{]NFbpc{IYgLdMF?tKRdWYaljXbfmUpaicsk_[xXklaQFqIeLGw?~~oF{@~prbZXZwiw{]NFbpwvAWeLotHSjAR[TCovcjuLZHyMihXB_\\bHuZBWBieHqdHq^~~{??~_BYu\\wZT[]NFbpw{]MgwdHa]CYLHqieDoekfenINkTfHJFGih@ujU[DIQ[BxEIj~~?^~w?@TLwtkxlwpw{]NFbph`mETS[Cq\\RAe[BXRUM]u[d\\cMpMIhMQc]NWoKYQiQ[q@o?B~~~~oFbFTfEtjZFbpw{]NELdTAZ`L`omI_tLIHzJIk{tb{hMPSFhFEIlVT?c`{ahbQM?NwB}?~~tn`lbiexpkuZLerXmgwdHa]CZ`[T@iYSRYprurcjkx?|Ha[cinC]NwWsdScxcB~oF~}??^rYu\\wZT[XkuZLerXlKLoqib_ewEha[jBSN[gynXXYiiUOwFWqTnJclShHoNcWinw???~~~{xkli}KXkuZLerXkuwRCpmEhIiHfCgYRozJIk{tb{bcdbcTS_zYrXZ@rHHW`tTG@~~_NwB~TLwtkxlwLerXkuZLqaZbAeEt@hMTSomCs^XqkiuhyRcT@yPpaZuZBWqKO|HS[c~~~{??~_K[wuuU}IhkuZLerXkZIiCvAZAedB[HMgwTlZK[|qu@uHpTHqShrTjM@S[hXHG\\b~~_N~{??{WykwulZErXkuZLeq]DLSEqfCjAR[TCouq]Y{g}pVQM@xJDTcpfbuK?\\SpMShMO??~~~~{?ui}B]M[lLerXkuZLwY_tpIHha\\RAe[BXVHVkYuRs\\aicsk_[xTTiyg?\\SpMShMO@~?^oF~~wptXplYuitYlUjTimCpKZ`iQf?tKRdWYc^XqkiuhwMpMIhMQdw{Pw{]dHM@{bDT~?^~w?@~U}EuMiZfTYlUjTitPkigR[HkGsfIiWVAZcjuLZHyNQM@xJDTcUj]VJcc`{ahbQM^o??@~~~utVoZprdlUjTitYlTKLoqib_eedB[HMgwkfenINkTq[agNQMKUrYrXkePaFhIbcc@~~_NwB}ZUrnBYjbitYlUjTic{IYgLdMA\\RAe[BXUqqjNLW~JGFhKRcdSZLzLeoKYQiQ[q@~~~}??^oCxkli}KXmjTitYlUjIHmKIWZSdWQZageElWxzXqTuUIiRQq@rcy[tYlOMXHJCMih^~wB~~??K[wuuU}IlUjTitYlVBSEmHPLL`[T@iYSRN[gynXXYfHJFGih@{]K{]N?TFIUQQFW_?F~~~~_IhnElfLnDUjTitYlUgwdHa]CZSRMHOsf`TlZK[|quIiUOwFWqYlTUjT_KYQiQ[q@oF{@~?^~|SvbUrevbpw{]NFboRohi_uSwRQ`mCfS[[d]pjXNPrcdbcTS_~aNwb}GxrHHW`tTJ}?~~o?B}ui}B]M[l{]NFbpw{TFChKRobXUCewiH`mqqjNLW~GMpMIhMQclxJ]QvcqKO|HS[c~o??@~~~~EMjMLjUvbpw{]NFbBSEmHPLKLHqieDoeYprurcjkiiUOwFWqUtdlXZUOMiWfISfG?~~oF{@~fLdlVpbL}NFbpw{]CovBIiMA]DpSEhhPLUtkprvJXQM@xJDTcLzB]ovkAgxQqQOzF~~~_?F{?l{Lk\\SvM{]NFbpw{MCpKZ`iQa\\RAe[BXPzdFTzJJURcT@yPpbMYrekxiCcNcTKYPr~~?^~w??ZUrnBYjb{]NFbpw{BXTOewRWYaXpIEc{K^Xqkiuhxaicsk_[xbNWruK{AdHM@{bDS??^~~~}?prbZXZwi}NFbpw{]HPLp`RBYb_YeHqkLQq]Y{g}pVcBseHqQiiiyimij?'
py3 with this patch and canonical labeling
'~?ExUARQHGKPKjGqIKmOkor_UXECpKN[G~SPBGl|?WcQucoQyisantYloNegE@bLW?uRs[SNnO{EXODSRx~?tWZSYCSJEkhHQKKkyB\\^oGqJCwYSG?la~^bW``tv`UOlUpCashl`^{AhVqPhy@Jireh@xmWSjTs\\IqczNOk_OdF\\J[Zhlm[DbF@A]jbKRUR`Z@mh{@gJ{p{udc`A@KQ{]EQ|XnE{M@gF[eVY]HHlqcAzoN^glTtI`valzLbu[@IgFyOsNgDkCuypRvL`yRRUEy|wJSYwyldAavwBFcrvtDh@|VrgE~QPcwFrxgoV|H]}sm?ai]Hx|[HMPIYQv|eYKY^UNxiLhGBoVYYhIibGutrN@dqebaHJ]At~~HorapD\\DttX`fRcD@kFJYHyk^k}CM\\bONVRS?Oxk~|Grk~XulbGK@UIchLM_vdmnA~CCVzUcr?qu`LPx}tp?C~@qvrQ[GtBVe@qLxbOx|FeJ@veOmJc]GrDtiWWluOn}^zeVChH\\nIRBA[wH{IRIZB{cwgmGjhtuDrVAnoCkLGiednimR@drrfnTZBWW_Icu^EdsFID}]ZA@ITV~EUwYkvtfS{PwhS`}eh}FYqGjDIs~tAgUTzXk[LK}P}c@PtmeRkiE\\}r|ZOAa}K~F}TMfwuJ_PleruMN}fWTeOBmSsNwsTifJaWvakhx?yNex|eUXK{Hs@|tFZRqY\\ZbGD{dgOSvYtDQYzRokMznVogGy{}SMo}PVvtEv~cGxT~FsBMrD@pyaRZzodKd~iPl}Q[XXUxE@oHJid}}v}oRjtuzFERkNt_TY{nyR`s]EyNLE^toYj`\\XR}dgC|NqiIjrYRZQtSbEN}rd{I[odywVMyBH|iJYxJrxQlisNqwm`bP|EPmfVbmj~pcsyFWcp^y`lT~|Kje|OumqKRS\\JDyaWr|llrxC}fWN|B|ow{K{b~mEqKgjFllg~owli[j\\K~znLTIeOvn~[uIpa|V@QykugHAa{QO?^Nfr@PdJOcVm{?WtQxd`Sq_mgQqcFIlzcBoUo~EeATXfpL?zXeWEGgqyraTl_S?YumM^wCD?M~dtMeF?NF[ANl?T_}A^KvgGIy_x\\F[`UuxJL?wSUENEsJuWp{uBbaUDZh?qTWjYLdLssc?THE[dNmmRWcBnrErJOrkAijwWxAZDwaC}XEZ`aBqxv@aqNdov?kwV~m\\DKsOnEw^S{TkBIpCVdPDdYvGnuMglPZhGQZCNnb_wwmRQvOo{RkTdUFIj^a@`m^DE}BojK}@L]YsQErbaotL[RqYuzDyKqsPAJ~hQPLPAJtizGvFxtSJHF{osfHi||p?GqO{utBSNBTt@YRqfmOkaIlHmCf{tKm?`jdYs}ILnQiNIKEEoK[YeFbnZEzaCCYDEzlo\\u@MUY}V^[{lPqqk@IVI}\\hGfkCr\\qh}~gPedYmRHSRGeCy@ZmKUUoz}gAuJAvZUpXgO_VD|jl_ShwfZJX?^aMnkU?gku|vqJjHindxyu_FKQLuUSIDXjeh\\^JbIKDPBgsYICx]vxX\\urYNqHLzFh`HfIw]zDPeOGzcWQr@NeYYAJBE_y?vvxJy^lRpJhvTb\\kiwBkcaeZAcyQzVSIYmiQe~gsbPcwp_Q|uQehj]LJwu^wcTfn?u?eicYpOY}AAKnyM^lKBQeWssU|gdA^KQN?{VLR]oNvoRTQGZ`\\vJ`HDhOYcygpIVkRzXZcfK_Df|TsF`DqOstMIgfUCuscxrcpa]`rdq_F|V]iZS`Ca]H|ZHnEW`x\\[kYkiReCK^FEN\\{l}dTi_GYkn|HJaMYekekxzfnjG{aUGAaTXMq_HT|hUTf|D}bDnoE?OtcZT|o}YWRSeL[QxMcb]smdbZJwAZmppKJdJcxzrLjorQpiCD\\Lm`@Ntm^dypHBRtFb^]nK`tqdYCjA{?j{bax]nyquB_ByrQHLBGKj|p}Al\\QEZQ^Loi`RfkrJeVL[H?gUefJbqEQxrOqET`|PRxiTDtdUUdT?D~wrf}xYrACzwrMMEoj?sGUxx{oWj{f}@{HPjglQsOJVKj`vPf^dOG]@vqP?ah~Rj]wV?zRn_DLJZuNHLmDI\\@ss\\h]_l`xib}dfgchm]S^tHs}SWcq|PbzQYjBvDaKxjTeS@B``Y^kNo[fMorxf`@OndYt\\pXIVdkLyXZpyUvQBXcSpWgucoyEzo`xwiyNZ\\GIxjuAHDEfLvYPqlptvbwevCJENa]byYm[MFb^ABA[VGRHNZUMYA~BkHFJg|zmG`DXuJZzswmEmdklliToM~WeWZOFTbSq}IZeZZOFHXJ\\]lerBCrqJRKXbsUpq~OT{bm|a@lX@@lavbAkyXJft\\]d{XuJv@wj{|WVtsJeHwIEDozsTW|UThikKeCVtyOSbiUCNqqkztevW|?xzkBrT\\wG?dfpNQF]{~NkBbLVCCE@tzCpMdkAV~dcy_fwQh]fUlWgfL@z~kwq[G^eMRlljiuON~[C@LTFm_Sp}QSmbZrAXXd`QfthjaCRZF|[|eoq_SzZWoA~rAnP^SjkjWy^[EdbGEhTox]DwhLykTpimysyM[DoqY^xnae\\b@Bofamn@asANB|n[k_L\\aV]dlWfm?BBfR}L]i?_UWIs{{x@r|fdTIAliLvGESdz^qPmQlgGNjkNVAHFYh^td{LEaoDx_t[^hURYcxVRbhmNidhM@Dezy@PzA^VkCI~\\xH_Th~pNK[{|ySa`{Ok_jgafOwfRCWmm}[z`}_\\xOTGVLWN[rX[ej~dcc|BEfowSEvH[]QzSfRXqYwAFqj^~GopRUe?MDexzd^YE]KFvflC]pod?VInFRcIoaGaVNj\\|YPAIzPHEyEKwzfUvCg~~T[SpSljQtItaH~ty_it\\oO{Tg\\@jb@sV}MlGZTOSW|O}RKxwyXtPl_}jMUn}cSlglSA~hNLW_fTp{HNuLDUj|wDPoU^n_EJ^kcNG`|C}K|slaplzePEUIcpVdXRFIc^]QakoIngNYsy~r_dWwKPZKtUphEQZs\\VsbPvs[n@}{dJ`c\\p{SJpWZTRW`ukevSEXVYALwXNnsFZP@~ApLWJO}[XewfOT|}kQsZgn|naA}tVXI]CmaEFJOKsdbk]r|SJJDXPS}rfX]msHXEY`eiYDM|YVQpga@KEyppzkvsDlDt]hB[g}Z]Bc[hKdEX\\yUJF^ARsJJiaM~UL|iJDOjYZnCJreCnHYTLQxRDEHwrrY`{VkdcUjC^kBnBX^WH?FdeRPo}yRAM_Ht}ndwYUIQO~xxSVQoXDt`QxSXnMlpuI^cm}SMVaFQXMP|Mbi{BxH]taUgW?rxwk~gUsjAI[P}suCu^Xz@OqRRK}sMuQ_U}I^jwja~]fAaGqdQhlfCn[SHTc}NL]f{OQjRetht_mY|slAdR^DgQ{xcddBN]BWiy[sQVOojgJzzHR}Uloj}[tO?]PNwvoGXgf[ehTEwL\\jmxV?tlosuddBzAlOYYCyBuwJRaOV\\rUtQnp~kYI}H]RQmIBBYH@f~A^OrHo]J}E?kKhNJfF_SbyE~Q[\\}hLbhjcJyue_?Ece}gz`vw\\kmbstgDxTCOD~uBfmHDK}tAdhXalXE}ExRSyUeEnUgq@]Na}oZIAsaYZr}iHJaCitJ[xFVYoCH~lD[B~JbGxbAi^ELg^Pg]Asp[\\{j[\\MNBFB]Km~XD[ACeviqMxsn_beoGsSf~oEltZwhDLbtZrKWgQFcaDvTJWr[jShpoVVuVzQpN`vgjNl\\IJ?eGBy^L?Js{`jyD_OJVw\\Zvzh`MilTsELbQ{]WwFVdznC?EGo@xqGvToaJTS^~~zXCYQsQvKwtbWfPe\\{TrP^KC_h`UTNHDvkyKX~XynQyoqCkSbvRPh`sa|oMWY_d\\cqXI?iuE}VyzZZUw{eoj`R|IVvwgX?OT_Pewgmfh}lMVmPTFxaPjMo\\x\\J}c?J[`oIgARuJ}PA\\~@UNtGf}{DQq|NGJNkmdUOCg]NKZsMKGaYEVtWbf~xmiF]\\{cJvVH\\EaceWESZ_C~@gp_?????????????????B~~~~~~~~~~~~~~~~~~U^QKUv?NOWTDFW\\@SbZu}{`cU]~hYjeWJh\\_xqcX_IBVbLXpzF|A?lOLVU}m]X^HXPGTVzYBfnjCfHIJqe[iPbG`XcwdXz@bhuJfb{F~KqHmlJGlYuOf]ULB[{XB@d?mNo|fQmzsgp|MFTsPKslH]{Juw_JuFKa_CFEVwwPxq}~dsryhLFARwNWdEFRnsEjo[[BowsSkDcFmhLfRW|hqGPsUzZ{wZRtoT_w?QnL\\lqkjYOqa\\h~Zd~UGLEVlSs{eYCiJdbNmDADJhl@Bwlnzo@MJzNYua`hUpMV\\AWTzpRkcC\\W\\gO^vHiCu^@Tczqngi]|E}qj?Y~AzO@qvQNLBPlCLoF`RrmyOjD~FS`kOZnppZl]iN\\SaJyEGoByIQyefyDIeK}hjd[e|vvJnkvcA?sKInq`qtFHEaJTlcf\\GHxKN{RbaXwEm[bVMDy[vVBRYMVZ`IwXJhkbRZY~?`K]SewsTK\\vbHI`YR^TnfXKZQe\\MN{UWkcKKm?^\\{OEpXhtLhGxyNpxkS\\EdNeMa?L@Iqayx^cPzIO{ljXSqKzNqlkrpz?[fo[iTqJzHPhE?N{^\\xDVRbuHeCdSp]EPk^AzHzhKia{W~^hgP]iTzR[InQ]e_[\\@xDr\\CWGfsk^uDKnB^zRGJXwOpfJMOfzCyTcq]D[lI}uhXzIC~`nKtJMxAoAWqMKYbbpoDBlbbwy]UipoN~dW_y?~Yqgcy_~GmzW[macRe?vNmft_|_BOvDq}LamtAisZSNh[jK[yFRXyMhLgrP}xYUtNBUF@{KIQGjzUPYCp}txkDoJmWMzoZirqHzrtTvD]d]SI?Qog\\MjLExKL{i]WBsrGYqy[fFEEVy^VEma?{L_aUxQtdBry|TsSYiczkdVXAu_FzJPRlRZdOw@L~s\\Z_z?RaXuWgRiiHP]G~BF~Vn@DkSJSa|M|W]moDSofbT}P@YW|[hLhWFzDKaXj^a{Rv}vAiRPJUkmDiwuyc_WQzeq`ezbogZQ~pLvkvaIWMdj@^@{j\\mK_P~k`|SOm`_SwYkX^hTIzD\\HQqkVuMZafwpBbTvbOEK[j|Bv[EXcZHRUm[Tt^V|eUiq@_`e[Qs{lnYpvTTaaADdMDeHFRn[qJjB}X|wScsdNg[RXNwev_pT|CRFQA`U^jDcksfRs{A}nhoopwnx`lVqa@gwZwnyZklaQjijkOTLGuqBFvMZ^zfpYsrOdCTLcehaKDsN[oUiru{KvK|cmeJlGOG_iz@DSY]ru}ElAn[fDlub[@t~LzzAxB??h@AF|jkp\\zO`|ft|b_B}MrphGLJ@YWelxHDT|lwJbxqH\\qUMPo`tnhWD`Ji[QBapyrVx\\`\\][Ry{{@dU\\abEWP]]w\\rbSRBMtWxDqljiEVJTKmwg]Ta\\d}|]UyuFT?eRR}OREX?wSqI{ZfsVWX}gsqBWl\\YUQvaZZJDjy{oHW`mVv?FaXk|]KLGJttx{kPLJG{@NgnyYrLlYJXzJw}wIaaTqHltIAftq}PBo\\bRe~c|CXgOh]aOzVBqY[Q^xAflz?f@~_UHIseHJK~xbidnSCsSxm`ToMJfsIBzXFLTdrC|xq]_v?Gxe@tfeki|fWyFo_IsmVJKi\\p|mtMydFsYFAp_o~bjgwFrp^LYHGqYDG\\UPDNr~NZ~?ziS\\PaElvjVSEVRSzAdLKLta|\\\\OTUqM`\\EFetU?MUeQnQyK|qnWmWsrKHf{dO`eYmG`|S}^A}leS{SHiSMCMDjInmNxOo?U|Pilopm|Bl_tdvbIvgYYJiODcjU^fKLpgjSxyoccmIum\\PTGwJ^@tqdZU|wJDaFzKIq?qtF{qXyzaucEijEtwokAEEKZy}yNOJvs\\M}VUNUEzSa?[NBPO}YYKThlyUuRRAotaN]owWRnAZ^Wb~_K^y}J@bfxIJqDClC[]b`aF?dB|jyxuoDPZ]?QqCXR]^zSjZmB`cVFpL_Y`Yd[Carw^b}r}ob]{~HeEUOdCA\\WxLMdzZdpF@YUyS~E_WdqrhRe_tcMyhUxfr?YIJ_j`kEbuyyeNGtgpm^HJpPc_T}ygT^odFfZtPzQGZGfru}x`EO}?]rTvr]WTTrKE}sEMdaooXUN\\SDSunEfITyx|C]UrVAFb_OzWg{{ghh{kbCFwm`HJ}WLLHDlfjFnQirSxFeLKBrnKigsDpEdYoYiw_qu|h`\\ZtC_klmcdtYY\\]N?bqlQZT`uqL`DFmpijoAu~i`n{XeLQ?y{AEV{`vmDoMOWR|VHLDHCganh}^ur|i]xb[VbOsdV`iraQ?IPVZax~Pc}zU^fPYr{??EcnXFoeSmHViBEWrrvr?VZov@Wnwj?JCmCby{X`fbXiWKu_JVmRXeUjKbdhODmhlufk?If}OEG^pZrXQhaPqiL^sNY{onQdRtgWSlo|yul?aCLHrecP^Mw`JjZu~`Yi]JgcBDNxRTVYVUnOjEKXpNtdVqiWOqjleBeoo[iDIXfUShELilITQZRZ?Eqpebj|rFAQ\\bhNyUqZDDSjZeE[}V}HSDHrtU~GkLk_YQxYU{E[lLXp[vIfqBUI|h{x`q_fBOMVbm~OfYO~{zGHsKZCpkpsb}[EiUFtp[dnVme`\\hPAhFMQAQw}PxJVtFUIcChWnLvNeyK^h?tdfP|i[ZVwzbIwF?z[@WDYIEvktGMO]Envw|qc@jp`DKzAEqYcYTYsdyFBWiM\\esp`|TY`xFwbKoeKxnk?JdMlsbrR}Jcth@FbT^lx{aARLBmFx`u@_`iLO_gLnbB^A\\^[uJiSzuO_{fGfXpLffPD}CTJXUnX?xWyKrXrLT\\BK|OG}wfACLn]duIyRdYksPVqVtXqMRHyziKd?rRDPUduGfwgvPlNI?s~zwkZPD^yQaycEqRA}QYrgt@pzrczqHJeDC|xISpouMst{iZmoVrCfE[FPdEsxoyhEsDy^icl@XcNsngBZ}cZ\\CKT`]woZoZvjpkP~[{O?EJhRbCzW}A\\ER@UxdEt~IBhXfsIhilqvdQ[WodvQeY]`yutdnX?XdN^FsMeJRjaR_\\_qt_Uowla}L@dos\\HMMQhRwUNFlqWz{iXMA`pOq]t^WAzvNyEDISic]O{gpnw]{lG|Zpz`xFfdoROvaPXipiFfYia[zXPtR_|pT_xB`zR|aOeWKZ\\EUkhdmXIW?|sTSWzrmdVLNrvTrHro_SlmLqI``AsfqRdmOqkfrc{Gm@Cd|VaerQ{[vOr]^YAFv]|}Ta[eP[OV__XhY_jIeX]xbpmZ|O{dKVum}kqTeDSC@~hIP?sKP_PtpTjfvfuFj|QgjIH[`rjah[}Cfp^Syf{EedOseHZGBvDoNBttSYTsLUhlGnmoOpr]XUIQTJKjhlrzuEhOxsOqtRLJ}org_wUlmaTERHNqSh[?pfoENQdY{otY[Wqd^Tqi`sMl^GUrQK][ZelXtRtIo{EC_TZHmjdY@\\TacNc^A|}MwIFUHbqNeY`EreuZosgWryBuYtPKK[bnDrnMe_RTTcvVSfdJj\\WLjQ\\EimnIRIojU\\{tneg`SGIp]PYLjRBCin@ncahZraUKnrKyyVS{VtLaE??JnkwgsV`gJdFB_al{~e~@IJc@rRUVW~AHVivzj^zbcZDG[dqUlW@HA`u_jf[zX^ZIsKp@v_GG^D@`REBVrwlFqlgxdKz`Ktm|BAB^ZbaImuef^t]JW`_T@maBTWFxEeRW@ZMVNlTMA[{VFBxNevVr_jaaclSpAy@SxjRr[jNDnJ?XUzDvTwjT?rOg{ZR`GMNRxsttqEonKwdMUQ}wwEejdnGYchEUvQMKahfMhht[o{lBFdVjkpJJWe`{^BDrbR?X^eNOqXlMDOY~bAeoxEYzjppEC]XEqEfNv^MDWs[~SsW?oKJ|a[~vWddHoqW]biQRP{KJ@W^NtPpDXq|lH`][oXHvRNmcU|VvWafM?Pdj\\Adfi?AVrlGy{sZHBVRjw_arc}tR^M]H{VgNXsIIq\\RRhX^qX_Yo|RnPD[}NXsaI_pb~NAR[GdHxGhP[mCuut^fMf\\h]\\Sd`?WTE]LPFkAbWN}G[wZhS`{RoNFw]J|NP]KWBeQzHTcFvi}`ogvbqzVA@OPR\\EXRsskT\\mqwpiX~Zt[kwGX?[\\XWAeOn^w]FkVytVXLYoGYWGgLB~oy`HFkZQBE~`igdwlOR[^M_cf`GO~u}vVD]qb[hHTOtiH]B]aN?ufHPjEFGM`{szkINqfsg?qWBXD}NDat[[y~oyy`CA~qpQrMHOepeiX\\`X\\TqLCsms{PtEmwRWxtj?KbQhO]{BlVsUX}Ak[lUPZDXrXV\\r^{r`aGYw@LiGAkPtDPhqdA~p`QNmOvL\\Qv@qT]pIJgygt~ha|ZtKQQZOKvvkJBKE@fbsADTgFmWWCbgn|NTir^ThEDzYIhonfq\\L`^IIo_BGePb\\gdzNF\\wKupFrNKCo\\KXihJeKXim}Zny]Spu[RHHoarjbeCOOfsqe_|sDf\\ciDSh{aM]o]Ii[]saLAnO{ttaCZQv^pF[MUUqKKd}OiMdgtDMmYHViH^L_Ve_XvPFc?RwZbeUrLJnNBEnOrP~VdATozboL`VTDy_iz[jhC@KhnSqM@AT|~WA_a~@T~ICmtQYQVVOwz_^Nazd|DtaBERWB^Q~hhaCqBhSGIiD[vfxmw_AqaI}flp^PlE|gdxC]@JfWxNrCXAFeLPZbje^_CgADKz]__EiP}LYXAk}mdrugd^Eu{tvKWY@uIt`RmmscGg}zQyOxSgHCNeto?OmaUI^fI^AUbmZ{PAl{RS{E|xwybr`YJeM?lLIX_U|`[LjqX@oJCel|SYmIIj@K@ziNuZhv?]inGMAzmM{kwJOZWZSHcvAyWAq}TUHiCbYY|b^Blx]GaHDQSkXqYGt^TB{]{NDRZXmZhWSN|J|TO`PEkNCCuGxyt]EagjsyO_mSo?[bVm^bZpcYyBYz`k}g?mzXZWDrTG_WA}_xuouSFNKpWITVQTB_wvoJTXK{}pwSFLuZuba~~A[HCwTiTzMlWGM|^l?_MG?|o@VRLfeljXms@CG?iKF\\iGqkuByVir}ft}TZ{kXmWJIqp_Q`I]?JHc\\TDZXY|HOCDwLqZ_Ohs]jwQOYlcse@b?IQJ[kAB~{p^piaqBXF^zi~jB}\\kYI]P|Z[rtaY]v?bOER\\QXNu?_g}Pf{Pgl|vu[ZKP}nGPzII~PSl_fYXHT|eJ~Ngd}JPtZDFBkZwoBGUPqHTiZrGJqhedLfenvMTygwsXxQm{SqLW~BrbyBpMrlleDb|JLSHqgWa_Q}af{KAXVfGBiDwxvBhzUmfn\\ofLhhl~~CDcTZuOivdUH`JaeSLKrwHTDEwP^xd~s?f~GOHEk{ixun`^iwgzHWEYO~zh^mWsVuc~RIs@LNKOQgtZ@FJtiIVEtWVpljX\\ogBJuD~earaOzH{]a|SzbrmyO{tV[VVCcKYMSgoFtDxKWl`bK[JmkXbfDtd^xWb}d`TF{wXqO~QvazmiXJjC`dywVIDgw^GpDyMZ`pjaJZOft|INUjRMI|GuUfyh_AoVI}\\ydPHwN~cJi@\\oaKeL}HFzE?z_mfxbqOw_UVc\\rN~tJpQFPLsQNMGs`XcbY{tzr}_qoPWJmaHy`@fXOFyz}`O_ZX}]rOcunv[BWTNjaN^QyK_t\\^Ou|uxeGxFeM?hbgHouzQEl\\WM^@VDsXHr\\}i{zahc\\kODrkFz`[s{XO\\nT~\\Fw_ETcV}[`bdJsMOLXAPNeArSnws@PXyFepciEqT~\\}RCZJ~Y^GlAMPnvvG\\`_yCDSqVW{kFalvAPvd?mRQ{]kD?mtu[PyEX[Zyxd@VIy_~Jg~QJ^j_lTmMUEW?BpD\\ov\\BrkFkOs]XRC~UXzpqkSB@[Fze|UpV@l{PmhNkK\\wYP@^x|FLlq@Th`iKmpEHQFzhegYfUXKVZ}KsBZGMjND]rs]tomI{EYQB\\?}ult^cJwSJyWfP]IZB?oBQ|e^_dS[}KUXNIua[jKjm~NQ^^}C@c~mEONAs|JOuNYM~h?QP|@u|]hpIClYQAiYI@hHGmFxkPH^\\ZZ~tSEcolTu~{?dSdzuEfW\\OYD`HUJ{P`bPJPN]L|@}hGdFtXxWt^IIMPzvEFt_Q{Q__N{^|]hzfKaeC@sakgadEqRDCHlGx|{ZltLXhSk|dUptoNHjC^a]yn~FxLPB_OGbyWL|UxMKNyXssTBrNZ@CQlPYWeweZFtEAfTHiEdb}vECz~CY_\\SyFTrYreVXCti}DxLssqwJzwQHCw}RRBhWJcGV^@HFANreJ]MzYUjmywyJ]XpSuek_oe[{nSdFbC@AtiULw{tVdp{kSWDjwFGEpkqRtrnBcXy|oh`VhDJtZjAhvqNDgVjQZ_pn{ChKI`EinYqjAQyGx^kll\\Oa_~I[{Xky`zJgszPsvkUZwrgDOa\\DvNs_LhikRhcDdOfhQAdwlYT~hd_[B}e\\ETSdTnxbFtB|bBiABjJ}`vkD|}WwWMWhl_tfAzcOdSJ|jYe?wvBqVgnVHpYug{vdgOZDVWpBrBBMCkoZ|zVjfJmIQgqQODR^kyMbPD]UEzcRU@M?m~RVIM^f_@ugc{~SMpIt|a`o\\viHk{h@sry[xAF`BtccoXXMQosr]MjMI[oE~cjPt}P^jXaPBllGq\\MAdTxUl{^gtLbW[InBDqCHf@QyiQqsKYjd|PTWdwBVQ~SdOhHrtnNqkUXcj\\T\\]|E^K[Vw?dJeh`QKzGfSgVdRVWhiHUXscPVOsqEZjmR`OmbLduyNQuhlFpSVnSaOSmlD}[mQiwP}tLRCoutY_VbgmWlNUbFKeLGG^YL_~d`~}Wqm@I^JaS?Tvn]hBoMfcMtx\\Ps\\_EM}FBG`[seYDrITRwmFsIeHeuoekXNuBU^dDt\\VixDFIlhxpsYoU_NzP][A?|pGfLNMbNZA|_@JWrbpxCTXo^RanyGvyUTISNefH\\?XcsqExHwqyr^VbS|A^hOKYSEonMBWY`s~uTmqaqNYtNIeGZzKpWxTPJnurR]kGFDfX`cqztmWaQHHleBgqGShaHNjZetkpRiiUGTKqrS`UxivK}AzYzobNc}oWf\\GpTJ\\`PdmtqxJugL[ZgP_sy]@vjCcrsyClaiXZKjVQe\\xgZ~kWbOc@xHzqwmTrwrBbAPs~wqMEQ\\idDkZHSVHy}?ce|`motcoAbll`mIdFU|NiSJ]tthJj{l?yY_cpwD`vs}RsPKpfnApZcH?X|NYYI{DgZaExEwoxPQuH~bzFLqPMjx\\IEm{PHUbwRG]sxphYEOJCkEZuAFM@IKV`EY\\Y~Rs{VacjV]_LKbN[RirUs_skoVx~KrsQyQIthrUeqUY}\\IDJwQXHRPmgoMyNvxYpJuO\\zkBXTfhsASPpszPx_EapTdslORUr}NNakZhImg{afrOYAh~Q^xHyGEglddXarFFdGn\\aIvhtNOkLShIuiUZy|ZF?BF]doJSC{uN@RCICHOcYNzNgudBgN~}Zm[YE?OXL\\xWOrZxzklmXxpbW_NmgQroE|QbsVeZqlzRBvoosT{joAJ?Nh|kN[?uqL_nfmBwvwHSsRfZ[YcNbY?KZh~ACwfE]^bZV@L_wNzXKTMLDBwqDe}PM[auGGbcLtokAbyLbyyS~~tTweVU@TVQiH?^fYMegCILowNtSr?xmkWgaLnHKeN\\ZBMpPAVU{JoElf~onjAFHCqFN~I^hcgurSrQQBGAl_Rime@xKWrIHkPFrj{xJEvixn]@c[@hfCv??~c~Umgg`bB{NMo]|w\\hWvXo?wcfpYxyW@_DjXvZ_vB|ff`wbq`VpvCAUbZQsfPR_q^nmuFQAbmkMvi_XLyXcZOgnnEyDmABrczbUjNCYQdtZOFNr[_BL^Jlot{AKo[bxU|FLFS]|Ut?IjwVXl`j_YMchVSxqhMYWkFXMV[a^WYX\\ROpDjATVJue^srDgHDVm[uhUU[VHAkRsaQ@~i{xTKJ@jSVG\\A][X^wA@nzBlU?NjTsugsW|noDl]xbgiBgEgb}dOzHd[^[`HQYvee`ROGDU_}XIvstTwL?GZIntaLR^Fcp`P^h`U~Q`J]TEwrHgGncnBFk\\[euWnLDTLPFgGqVydkf|fAODsPTAs}J|kkwemwFReFDk~WrRCdTFOfwIeX}oNhA|UOZwzkMEXlXscSQsBBheeUBLffnPu@WLD~IPiM}H`uQmPrhyssT|_CeAEMDgF^uekkflkba|qVAMI@mkVg\\CyILJdObXvBMnNPIgPB{U_mgEwJ~vZ}APegBB{hUi\\J`~nl?]aJMRMAvO[JhkQmQU\\XXMEfOi`LLFb}Zt``Sqed{AEJuyaMsR}C^PaZrvDmSNEc\\MeAy{WmTWvd]rYl{IjZI|T?dCw}?[`~QOcSMry_qExftf@dzlutMOlgYKE}]RmyLo`^@TWRerkNJWMouCoyxqKzVNocgs}oB]hd|XgkEgPAwk|dLju`Wb`XCEy|\\IXXY|XD|fEiGTRPwWOX`taeDopmkmQoZmJ}lqsW^SEOnkRYU^CxO|IIRBuZtuL\\ah}rLgJo?_aCx}ox{hMl@tlJ{d@HqpjpjgCtc_XUzqlRxSku_]LXlJgc]AXuIH}Qo~MAqa]td|`O~tse@FQQce^P?f[g`qmLrHzZuxi_q@txKvH]?FbKunp[pekymdN`s\\OK]OVRjIUr`YgYBvy]bg{jCan|\\HypDWJ?zjWsYWdH|_tLMsWyjekBoxaQRcnaKa}|GJxEtFtINR}PIRDvj{NHWnC{Q?w~D[kdHVwkD_G|OZ^s_f\\D{FziLyu@Az`YWbAd~GeFj[jiMigdkh]tMbEsuwrFhAfqzgcZJClqAAK_}jGj}?p}hWbu]vdqZw[D?]hnVz[[TQgWcB\\\\`fbhgnEO[YSXo}KRX^ubidYdY{dYVP}\\?@wd?ZSmk~eWwnlNAg~uaW_u?FiNeWFnPRIEbGx^uWyuaHLbhtjqtA|@gsg`?LHhsCtVB|iJt@}}|RurDYVe`pdN\\qkQ?Yd{{CtPMQQ{ohUGn{{cthE|RPuKwh[G?dRwwMTHrRZYttdd@}p?R|yhn@Y|c@B\\|b`KuhEww~oSXusCwS{N^IlFz|Yau?PKpd_C~EZR}KW~JxPE_rTFzESgX`?Ikcqr^RJA}^_k?dTzKkF^YI{SRCTjFfAgtZ_zclzw^s`j{oVZfpAoTou?ycOdzsN\\MKKjHbUvGSHzHZ]J_w@]eaNaORDyKXzsSb|hWUjfLcskqTGjCj~W[Pf}YPkVxSnHTHhE]Pt[m_?~KwwreHQM`m@NlaGANyVygfYjLTCtYys~[KBz\\{GYArUYHWx`sVq?lLczyQIMYbTMTSY{t@apsvpQrYhPoInklSee`oZNmvJGZFfIN`D_L`XLJ]s}\\BQpkT|V?[eBFM_{dinGQtz_WMmacTbxXxooXPExM~WlBjRsDcfxtUPvDmopp]WKLp]VDTEetS\\`CMJBiZSHsVH}VBSZbWQkNyrhu_yhL{xcZRwWHxUkk]EsZbojkjz[wLECcO_\\nvq?o`NCEzAWgHmn^[v\\krUrGfj]ImSaHZu|SrROCIdjKutefTEVVIxKXp_J_|QaU^VdrQB~WU|JADWtQv}gL?gsariepQkZmLqJhta`T}sGkf]Z@fnGSFfxOrf\\YWf@wnZ@?qfbdQUadE~zWxCP?sV\\fj`dIWNyGENFi~S^E?rmrdmJoAvMfRca_lNa]CRmWJ{{hsERVKrF`v?uXqXxDtazGB{HzkATTWyfOR]r?ywmabKAnm{jIFM[dsE?JSPOvFzSkTJP|N|t_LVLeZb`TKWPUadZw]PuDNYFTYuecK`t_xu`K~gMfyJpISSw]pi_s}ojen_Svd?xtkUeSjWZHCVBYzOK@jzjxAZjNkF_hGPKwMI~HiV?q[zgxzSeQ@i[zdvhbH{J[?|Dx\\u?PreEmCtN\\XsXjcsT`rfRgFAhqY?XJz~FrTqIbyPLp\\riLHhlxTpd_FXjXMnR_n@JaBPKByDn[MUDVouscxUwOndlQvA?o{MGEMhvpD~[GDDfvpA]`|IF{RbnmQYXkpoMkb\\`]PJNf@xWLbdouXKICQ~ymLea\\TBawdkJBv[sOSAzgF?pJZfE[j|RnKLM~PBgqaLf\\Dp[AfWisnT_nzHgpHIzWE_^EuKwi\\FLAXJudp`@LmVnQxW@NbAkfVBMPs~f_^\\|hQb`lwJMLPAyqcL{QhVEe_BgsukQdF[bH~iuHJoYfIl}behXqHWzNR{wBgPtUYJ`Lrt`PUJxi^MYWzcE[dQcR[d{`^GKzKMRfoaH~?hun?`qqwlk~GyAi]?leY?UvOjDZ^}MLsR{LO~gAXTbCyFHfx}PcivhWHEmAuYqprIgw~WoqqvKit]pu_hz@PHHitGxsDt|weNGZ|Q`][\\@{cJ}CErPPhkYKtZq?YZ@z|DHnaqGkClmxid^]FpJhFRtsOhl^?hr{bfnMC{F`TN?S{UuLDITAIS@~^m@UNvchVA^HaowLC[sg{G^uV^ktwoIDLXTy?eix`_x|eTnfA~jMiP[[HHMokTbPeSicjAHrXxyUxdtAAbHqztAeeNKYezP^WdO{qpQXhT?EbZE]Eq}vcsZb[pPep[CaKRHuESvYQiijp[piJ]cCk?iVH|qrZi]gXmmAHvefMLbI[gR]eIlto[fj@rCPEygxV{km^S{PXtBQgWAALsNNug|xXO`^rcG_GmWVCzeE~ZyLVhu^iBAa{aToM_[[NyTqveCyMnrPBhQRAoZeSZqXwozCME\\]fU?`xrNqr[KFMSeDhseBD?~{x~xu`D_WXbXeBYl`?TTrV}JNMmyg{xpHS@sWplpV[kWUM`t@jfG_qhCvAJ{\\kz{i_HoeonR[|DQdxfnqWtBhU|_ot`eVU{ss{Vgn}E{FDOd]CRrWn?ZeFK_GMWoYBDOJ|UzTFJ~[bFbwU~VtC}m?P]ZO@wf?e}kd}h\\th^gQsl\\OgrQzLA_cnuOUw\\fSJY@H_zWDBXXltTS^wg~clyP|gfdttd?NgmlYHgzsK{`Be|P|NHyYp_rjO@PQPj\\XmpDk|w\\t?WEXnEtUma_@^jiSwNFJ^wAzrHP}FUCdtZ~XOQe]iJqXw\\Rl_@oV`gwtyXC[oOy|ch}SRG\\a]}hqbWuBD?~GK^A_vfkksJDfvdIjWsVHrAfIjtZuIV{UsBnHcSTuoxWmWoyGPLxLYZPaJPlMUpHpUV\\KaiUMhE}{eILygK_hljXlbK~`kKMxIq]wJxnbROSeAUQDpc~YUZfGvRThOopaW{|tfCa_EiKwqmZjridQfSGT_kfI^fL}tpEY^_jCWaL~]nHuoKUwpiz_qfAtaIbD`mqfajpUPl[AQzOGnUTKsx[]}?aJSfNdyDN{nYpRE_jG~hgb}h?ez|\\uY|vQ_G?_I}\\vlYF]OTBXgxoC@zMXKlJVS}S]COfKjjcuqbj[`a|PkmayLKHQCeu^MEsxNnxxjySFM@|deTKdiSByGlFg\\IpehxOHhOoPg}~AMhWCMtWfVxw[xz\\MRnxyabGomQJFnmgwihT~saBAKj@lfb_zVSxgHYu_LV?RJPoxSV}_WrEylp]wkCZeQtJMlFRF{Nd]nAZ`mA[KdVUHX^z?jk?S_FS@NsMZmrxwjZVoNk]T_[OrFRKm?]Q[Y[siSRqjwqTyEvdp`wRSr}KrcQnSaZ^UDffeavMxbWhOBmHB@ieWysplY`{aqBRFkOs[YDVagLGg^_XuGL^}~z|kJE^o[nh^IR~gb`AhWztsAiawuetSn@mCmINgBTW_BAgrPmFxUmIpwBfRGQn\\~}cExUY[UpVsiIjcG|GIIdr`{{}FxZnx[tgog`RBxBnMJOcDB}ZaQR|oWeUExDBYBI[Z]ndyOGvXsOzNVNv?{_wekeC\\ckzu\\?Z}vmmcQpPkQXLhnrEoWOFvuGyUXhRX?ocZpmxkYOJDS\\JM[z?fKNmrBeFn}CcA}YvzqVrymqQtTk@NBCAGawjN`WdZ{mYNOwTc]sY?PIOatg^?{MvO^ybMS~}HXuPBeJLnC\\qwS{^rqgHuFUD]cc~zy`SwzJQMEZAJwAtWeFOs_E^uiXOQIhOzEg\\_ydm\\Ed}`YDm[t}sy{K{Xf|o`{M]FBoBxwyMv^lPFN[H?{EFo{NwAFAKfowGFoG~o[?^@~EM{PBKhFF{pe@@~`}N}\\kEzo^{N_B}@~?N~wFx}Oz\\?N?{F?B}?N{?F}?}FmsEW?Nw?N{??~~@}Br?uc~?Bo]?~~_@~}Bb~zs????????????????????????????????????N~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
OK, I checked these 4 graphs, and it appears that the 1st two are not isomorphic to the 2nd two (assuming we trust our py2 implementations of automorphism computations - the 1st two have groups of order 27, teh 2nd two of order 3). Quite unexpectedly to me, the 2nd two are strongly regular with the same parameters as the 1st two (this explains why it takes forever to try to compute isomorphisms).
So this invalidates my claim that the automorphism computation broke, it's the construction of this particular graph that broke (a bit).
I can not help for checking the validity of MathonPseudocyclicStronglyRegularGraph
...
The fact is that this doctest the latter produces different results in py2 and py3.
I understand that there is a way to skip a test for py3, so this can be done here, and another py3-specific ticket opened to deal with the discrepancy.
You mean that we should hide the py3 failing doctest ? Is it really useful ?
Currently, this ticket align the behaviors of the 2 methods ('sage' and 'bliss'), do some cleaning and fix 1 doctest for py3. The other issues for which further work is needed are not touched.
Replying to @dcoudert:
I tried to investigate further on the possible cause of the issues with
automorphism_group
and the Python3 failing doctests insrc/sage/graphs/generators/families.py
.The good news is that we have the same result with
'bliss'
and'sage'
sage: G = graphs.PaleyGraph(9) sage: a = G.automorphism_group(partition=[sorted(G)]) sage: it = (x for x in a.normal_subgroups() if x.order() == 9) sage: subg = next(iter(it)) sage: r = [matrix(libgap.PermutationMat(libgap(z), 9).sage()) ....: for z in subg] sage: ff = list(map(lambda y: (y[0]-1,y[1]-1), ....: Permutation(map(lambda x: 1+r.index(x^-1), r)).cycle_tuples()[1:])) sage: L = sum(i*(r[a]-r[b]) for i,(a,b) in zip(range(1,len(ff)+1), ff)) sage: G.relabel() sage: G3x3=graphs.MathonPseudocyclicStronglyRegularGraph(2,G=G,L=L) sage: G3x3.is_strongly_regular(parameters=True) (441, 220, 109, 110) sage: G3x3.automorphism_group(algorithm="bliss").order() # optional - bliss 3 # <-- expect 27 in Python 2 sage: G3x3.automorphism_group(algorithm="sage").order() # long time 3 # <-- expect 27 in Python 2
The issue may come from
PermutationGroup
that is used in both case...
I'm checking this example in Py3, comparing with Py2, and I see that G.relabel()
is the place where the first discrepancy occurs.
Namely, the order of the new vertices in Py3 differs from the one in Py2, where the order is the same as in the output of G.vertices()
before relabeling.
In Py2 the edge (0,1), where 0,1 are elements of the finite field GF(9), and they also come the 1st in G.vertices()
, is mapped by relabeling to (0,1), but in Py3 this edge is gone.
Is there a way to force G.relabel()
to keep the order of G.vertices()
?
In fact, this looks like a Py3-bug to me.
sage: G = graphs.PaleyGraph(9); G.relabel()
sage: graphs.PaleyGraph(9).adjacency_matrix()==G.adjacency_matrix() # Py3 -in Py2 it's True
False
It is really totally unexpected that G.relabel()
breaks the ordering. Imagine G
being in the canonical form, and then G.relabel()
breaking it.
I think G.relabel()
must leave the adjacency matrix of G
intact.
I disagree with that. The only way to preserve the ordering is to sort vertex labels, and we want to avoid sorting as much as possible in py3.
If a user wants a specific ordering, it is possible to use G.relabel(perm=G.vertices())
.
Similarly for the adjacency matrix, we can now specify the ordering of the vertices.
Now, for the canonical labeling, the labeling is not unique. It depends on the algorithm used ('sage' and 'bliss' can give different answers), and also on vertex labels.
So we need to find another solution.
Branch pushed to git repo; I updated commit sha1. New commits:
ad9b46f | relabel with an identity perm |
This ticket fix py3 failing doctest in
graphs.MathonPseudocyclicStronglyRegularGraph
:and
in this ticket, we do
'sage'
and'bliss'
is the same inautomorphism_group
andcanonical_label
/canonical_form
MathonPseudocyclicStronglyRegularGraph
to make the doctest stable with py2 and py3PermutationGroup
inbliss.pyx
CC: @tscrim @dimpase @stumpc5
Component: graph theory
Author: David Coudert
Branch/Commit:
2136e19
Reviewer: Dima Pasechnik
Issue created by migration from https://trac.sagemath.org/ticket/27571