Re: SQL Server 2019: CHAR(N) using UTF-8 is seen as SQL_NVARCHAR by SQLDescribeCol()

Frediano Ziglio <[email protected]> Thu, 28 Feb 2019 18:03:35 +0000
Newsgroups gmane.comp.db.tds.freetds
Message-ID <CAHt6W4fmFoOzEfLj5q4ZF=eSSnpRFkBaRgco7bOiX3XFPhuEYw@mail.gmail.com>
RmluZSwgaXQncyB0aGUgbm90IHN0aWxsIGRvY3VtZW50ZWQgZXh0ZW5zaW9uIDEwLiBJZiBzZXQg
dG8gMSAoMSBieXRlKQpkYXRhIGFyZSByZXR1cm5lZCBhcyBVVEYtOC4KSSBkb24ndCBrbm93IHdo
YXQgZXh0ZW5zaW9uIDkgaXMgYnV0IDEwIGlzIGVub3VnaC4KVGhlIGNvbGxhdGlvbiBoYXMgYSB3
ZWlyZCBiaXQgc2V0IGlmIHRoZSBlbmNvZGluZyBpcyBVVEYtOC4KCkZyZWRpYW5vCgpJbCBnaW9y
bm8gZ2lvIDI4IGZlYiAyMDE5IGFsbGUgb3JlIDE0OjIyIEZyZWRpYW5vIFppZ2xpbwo8ZnJlZGR5
NzdAZ21haWwuY29tPiBoYSBzY3JpdHRvOgo+Cj4gSGksCj4gICAgdGhlcmUgc2VlbXMgdG8gYmUg
MiBuZXcgImZlYXR1cmUiIChpdCdzIGxpa2UgY2FwYWJpbGl0aWVzIGZvciBURFMKPiA3LjQpLCA5
IGFuZCAxMCwgdGhlIHJlbGF0aXZlIGFjayB2YWx1ZXMgYXJlIDB4MDEwMSBhbmQgMHgwMSwgY2xp
ZW50IGlzCj4gc2VuZGluZyAweDAxIGZvciBib3RoLgo+IEN1cnJlbnRseSBub3QgZG9jdW1lbnRl
ZCBpbiBURFMgcHJvdG9jb2wgc3BlY2lmaWNhdGlvbgo+IChodHRwczovL2RvY3MubWljcm9zb2Z0
LmNvbS9lbi11cy9vcGVuc3BlY3Mvd2luZG93c19wcm90b2NvbHMvbXMtdGRzL2I0NmE1ODFhLTM5
ZGUtNDc0NS1iMDc2LWVjNGRiYjdkMTNlYykuCj4gVGhlIHByb3RvY29sIHZlcnNpb24gaXMgc3Rp
bGwgNy40Lgo+IEkgc3VwcG9zZSBJIGNhbiB0cnkgdG8gc2VuZCB0aGVzZSBmZWF0dXJlIGV4dGVu
c2lvbnMgYW5kIHNlZSB3aGF0Cj4gaGFwcGVucywgaWYgc2VydmVyIGNoYW5nZXMgdGhlIGVuY29k
aW5nLgo+Cj4gRnJlZGlhbm8KPgo+IElsIGdpb3JubyBnaW8gMjggZmViIDIwMTkgYWxsZSBvcmUg
MTA6NTYgRnJlZGlhbm8gWmlnbGlvCj4gPGZyZWRkeTc3QGdtYWlsLmNvbT4gaGEgc2NyaXR0bzoK
PiA+Cj4gPiBIaSwKPiA+ICAgc28sIGluc3RhbGxlZCBhIHNxbCAyMDE5IGFuZCB0cmllZCBzb21l
IHF1ZXJpZXMuCj4gPiBVc2luZyB0aGUgZHJpdmVyIHByb3ZpZGVkIGluc2lkZSB0aGUgZG9ja2Vy
IGltYWdlIHRoZSAiYWJjIiBpcwo+ID4gcmV0dXJuZWQgYXMgImFiYyAgICAgICAiLCBzbwo+ID4g
dGhlIENIQVIoMTApIGFyZSByZXR1cm5lZCBlbmNvZGVkIGluIFVURi04IGFuZCB0aGUgIjEwIiBp
cyBqdXN0IHRoZQo+ID4gbnVtYmVyIG9mIGJ5dGVzLgo+ID4gTm93LCB3aHkgdGhlIHNlcnZlciBk
ZWNpZGVkIHRvIHJldHVybiBVVEYtOCBhbmQgbm90IGNvbnZlcnQgdG8gTlZBUkNIQVIgKHdoaWNo
Cj4gPiBtYWtlIHNlbnNlIHRvIG1lIGZvciBvbGQgY2xpZW50cykgaXQncyB0aGUgaXNzdWUuIE1h
eWJlIHRoZXkgYnVtcCB0aGUKPiA+IHByb3RvY29sIHZlcnNpb24sCj4gPiBtYXliZSB0aGV5IGFy
ZSB1c2luZyBzb21lIG90aGVyIGZsYWdzL3ZlcnNpb24gKGxpa2UgY2xpZW50IHZlcnNpb24KPiA+
IHBhc3NlcyB0aHJvdWdoCj4gPiB0aGUgcHJlLWxvZ2luKS4gVW5mb3J0dW5hdGVseSB0aGUgbG9n
aW4gaXMgZW5jcnlwdGVkIHNvIEknbGwgaGF2ZSB0bwo+ID4gZGlnIGEgYml0IG1vcmUgKHdlbGws
Cj4gPiBqdXN0IHF1ZXN0aW9uIG9mIHNldHVwIGFuZCB1c2UgdGhlIGJvdW5jZSB1dGlsaXR5LCBu
b3Qgc3VyZSBpZiBpdAo+ID4gc3VwcG9ydHMgcHJlLWxvZ2luKS4KPiA+Cj4gPiBGcmVkaWFubwo+
ID4KPiA+IElsIGdpb3JubyBnaW8gMjggZmViIDIwMTkgYWxsZSBvcmUgMTA6NTAgU2ViYXN0aWVu
IEZMQUVTQ0gKPiA+IDxzZkA0anMuY29tPiBoYSBzY3JpdHRvOgo+ID4gPgo+ID4gPiBIZWxsbyBD
cmFpZywKPiA+ID4KPiA+ID4gSSBkb24ndCB0aGluayBzbzogQW4gT0RCQyBwcm9ncmFtIHNob3Vs
ZCBiZSBhYmxlIHRvIHByb3Blcmx5IGlkZW50aWZ5Cj4gPiA+IChhcyBtdWNoIGFzIHBvc3NpYmxl
KSB0aGUgb3JpZ2luYWwgZGF0YWJhc2UgdHlwZSB1c2VkIGZvciBhIGNvbHVtbi4KPiA+ID4KPiA+
ID4gV2UgbXVzdCBhbHNvIGRpc3Rpbmd1aXNoIHRoZSBjb25jZXB0IG9mICJ2YXJpYWJsZSBsZW5n
dGgiIHJlZ2FyZGluZyB0aGUKPiA+ID4gbnVtYmVyIG9mIGJ5dGVzIHVzZWQgdG8gZW5jb2RlIGNo
YXJhY3RlcnMsIHZlcnN1cyB0aGUgYWN0dWFsIGxlbmd0aCBvZgo+ID4gPiB0aGUgc3RyaW5nIGlu
IGNoYXJhY3RlciB1bml0cy4KPiA+ID4KPiA+ID4gUGx1cyB0aGUgZmFjdCB0aGF0IFtOXUNIQVIg
Y29sdW1ucyBjYW4gYmUgYmxhbmstcGFkZGVkLCB3aGlsZSBbTl1WQVJDSEFSCj4gPiA+IGNvbHVt
bnMgYXJlIG5vdCBhbmQgc3RvcmUgdGhlIGFjdHVhbCBudW1iZXIgb2YgdHJhaWxpbmcgd2hpdGUg
c3BhY2VzIG9mCj4gPiA+IHRoZSBzdHJpbmcsIHRyeSBmb3IgZXg6Cj4gPiA+Cj4gPiA+IGNyZWF0
ZSB0YWJsZSB0YWIxICggYzEgY2hhcigxMCksIGMyIHZhcmNoYXIoMTApICkKPiA+ID4gaW5zZXJ0
IGludG8gdGFiMSB2YWx1ZXMgKCAnYWJjJywgJ2FiYyAgJyApCj4gPiA+IHNlbGVjdCAnWycrYzEr
J10nLCAnWycrYzIrJ10nIGZyb20gdGFiMQo+ID4gPgo+ID4gPiBZb3Ugd2lsbCBzZWU6Cj4gPiA+
Cj4gPiA+IFthYmMgICAgICAgXSBbYWJjICBdCj4gPiA+Cj4gPiA+IChjaGVjayBTRVQgQU5TSV9Q
QURESU5HIE9OL09GRikKPiA+ID4KPiA+ID4gLi4uCj4gPiA+Cj4gPiA+IFVURi04IGlzIGEgdmFy
aWFibGUtd2lkdGggZW5jb2Rpbmc6Cj4gPiA+Cj4gPiA+IGEgID0+IG5lZWRzIDEgYnl0ZQo+ID4g
PiDDqSAgPT4gbmVlZHMgMiBieXRlcwo+ID4gPiDmnKggPT4gbmVlZHMgMyBieXRlcwo+ID4gPiAu
Li4gZXRjICh0aGVyZSBjYW4gYmUgbW9yZSB0aGFuIDMgYnl0ZXMpCj4gPiA+Cj4gPiA+IEluIHRo
YXQgY29udGV4dCwgb25lIGNhbiBzZWUgYSAidmFyaWFibGUgbGVuZ3RoIiBpbiBieXRlIHVuaXRz
Li4uCj4gPiA+Cj4gPiA+IEJ1dCB3aGVuIGNvdW50aW5nIGluIGNoYXJhY3RlcnMsICdhw6nmnKgn
IGlzIDMgY2hhcmFjdGVycywgbm8gbWF0dGVyIHRoZQo+ID4gPiBlbmNvZGluZyB1c2VkIHRvIHN0
b3JlIHRoaXMgc3RyaW5nLgo+ID4gPgo+ID4gPiBZb3UgaGF2ZSBhbHNvIHRoZSBjb25jZXB0IG9m
IGJ5dGUtbGVuZ3RoIHNlbWFudGljcyB2ZXJzdXMgY2hhci1sZW5ndGgKPiA+ID4gc2VtYW50aWNz
OiBXaGVuIGNyZWF0aW5nIGEgQ0hBUigxMCkgaXMgdGhpcyAxMCBieXRlcyBvciAxMCBjaGFyYWN0
ZXJzPwo+ID4gPiBEZXBlbmRpbmcgb24gdGhlIGRhdGFiYXNlIGJyYW5kLCBpdCdzIGJ5dGVzIChT
UUwgU2VydmVyKSwgY2hhcmFjdGVycwo+ID4gPiAoUG9zdGdyZVNRTCksIG9yIGl0IGNhbiBldmVu
IGJlIGEgbWl4IGFuZCBzcGVjaWZpZWQgZXhwbGljaXRseSAobGlrZQo+ID4gPiBpbiBPcmFjbGUg
REIpLgo+ID4gPgo+ID4gPiBOb3RlOiBZb3UgaGF2ZSB0aGVuIGFsc28gdGhlIGNvbmNlcHQgb2Yg
IndpZHRoIiBvciAibnVtYmVyIG9mIGNvbHVtbnMiOgo+ID4gPiBBIGxhdGluIGNoYXJhY3RlciB0
YWtlcyBvbmUgY29sdW1uLCB3aGlsZSBhbiBBc2lhbiBsb2dvZ3JhbSB0YWtlcyAyLgo+ID4gPiBT
ZWUgd2N3aWR0aCgpIGZvciBtb3JlIGRldGFpbHMuCj4gPiA+Cj4gPiA+IC4uLgo+ID4gPgo+ID4g
PiBJbiBTUUwgU2VydmVyLCBOQ0hBUiBhbmQgTlZBUkNIQVIgY2FuIHN0b3JlIFVURi0xNiB3aGVu
IHRoZSBTQyBtb2RpZmllcgo+ID4gPiBpcyB1c2VkIGluIHRoZSBkYXRhYmFzZSBjb2xsYXRpb24g
KHRoZXkgc3RvcmUgVUNTLTIgd2hlbiBubyBTQyBpcyB1c2VkKQo+ID4gPgo+ID4gPiBJbiBVVEYt
MTYsIGEgZmlyc3QgcmFuZ2Ugb2YgY2hhcmFjdGVycyBhcmUgZW5jb2RlZCBvbiAyIGJ5dGVzLCBi
dXQgeW91Cj4gPiA+IGNhbiBoYXZlICJzdXJyb2dhdGUgcGFpcnMiIGVuY29kZWQgb24gNCBieXRl
cyAodHdvIDE2LWJpdCBjb2RlIHVuaXRzKS4KPiA+ID4KPiA+ID4gSW4geW91ciBsb2dpYywgdGhl
IE5DSEFSL1VURi0xNiB0eXBlIGNvdWxkIGFsc28gYmUgY29uc2lkZXJlZCBhcyBhCj4gPiA+ICJ2
YXJpYWJsZSBsZW5ndGgiIHR5cGUgYW5kIFNRTERlY3JpYmVDb2woKSBjb3VsZCByZXR1cm4gU1FM
X1dWQVJDSEFSCj4gPiA+IGluc3RlYWQgb2YgU1FMX1dDSEFSLi4uIEl0IG11c3Qgbm90IGFuZCBk
b2VzIG5vdC4KPiA+ID4KPiA+ID4gQ2hlZXJzLAo+ID4gPiBTZWIKPiA+ID4KPiA+ID4KPiA+ID4g
T24gMi8yNy8xOSA0OjMyIFBNLCBDcmFpZyBKYWNrc29uIHdyb3RlOgo+ID4gPiA+IEkgZG9uJ3Qg
a25vdyBhbnl0aGluZyBhYm91dCBTUUwgU2VydmVyIDIwMTksIGJ1dCBpZiB0aGV5IGFkZGVkIHRo
ZSBvcHRpb24KPiA+ID4gPiB0byBhbGxvdyBVVEYtOCBlbmNvZGluZyBvZiBjaGFyYWN0ZXIgc3Ry
aW5ncywgaXQgd291bGQgc2VlbSBuYXR1cmFsIHRoYXQKPiA+ID4gPiBzYWlkIHN0cmluZ3Mgd291
bGQgYmUgdmFyaWFibGUtbGVuZ3RoLCBldmVuIGlmIGRlY2xhcmVkIENIQVIobikuIFN0cmluZ3MK
PiA+ID4gPiBlbmNvZGVkIGluIFVURi04IGFyZSBpbmhlcmVudGx5IHZhcmlhYmxlIGxlbmd0aC4K
PiA+ID4gPgo+ID4gPiA+IENyYWlnIEphY2tzb24KPiA+ID4gPgo+ID4gPiA+IE9uIFdlZCwgRmVi
IDI3LCAyMDE5IGF0IDEwOjI3IEFNIFNlYmFzdGllbiBGTEFFU0NIIDxzZkA0anMuY29tPiB3cm90
ZToKPiA+ID4gPgo+ID4gPiA+PiBIaSwKPiA+ID4gPj4KPiA+ID4gPj4gSnVzdCB0cmllZCB3aXRo
IFREUyA3LjQsIGl0IGRpZCBub3QgaGVscC4KPiA+ID4gPj4KPiA+ID4gPj4gSSBoYXZlIHRlc3Rl
ZCB0aGUgTVMgT0RCQyBkcml2ZXIgMTcuMy4xLjEsIGl0IHdvcmtzIGFzIGV4cGVjdGVkCj4gPiA+
ID4+ICggSSBnZXQgMS9TUUxfQ0hBUiBmcm9tIFNRTERlc2NyaWJlQ29sKCkgKQo+ID4gPiA+Pgo+
ID4gPiA+PiBZb3UgbWF5IGtub3cgdGhhdCBpdCdzIHZlcnkgZWFzeSB0byBzZXR1cCBhbiBTUUwg
U2VydmVyIDIwMTkgd2l0aAo+ID4gPiA+PiBkb2NrZXIsIGRvIHlvdT8KPiA+ID4gPj4KPiA+ID4g
Pj4gQ2hlZXJzLAo+ID4gPiA+PiBTZWIKPiA+ID4gPj4KPiA+ID4gPj4gT24gMi8yNy8xOSAzOjA4
IFBNLCBGcmVkaWFubyBaaWdsaW8gd3JvdGU6Cj4gPiA+ID4+PiBIaSwKPiA+ID4gPj4+ICAgICBJ
IHdvdWxkIHRyeSB0byB1c2UgVERTIDcuNCwgbm90IDcuMy4KPiA+ID4gPj4+IEFsc28gSSB3b3Vs
ZCB0cnkgdG8gdXNlIE1pY3Jvc29mdCBPREJDIGRyaXZlciBhbmQgYSBuZXR3b3JrIGFuYWx5emVy
Cj4gPiA+ID4+PiAobGlrZSB3aXJlc2hhcmspLgo+ID4gPiA+Pj4KPiA+ID4gPj4+IFJlZ2FyZHMs
Cj4gPiA+ID4+PiAgICAgRnJlZGlhbm8KPiA+ID4gPj4+Cj4gPiA+ID4+PiBJbCBnaW9ybm8gbWFy
IDI2IGZlYiAyMDE5IGFsbGUgb3JlIDExOjI2IFNlYmFzdGllbiBGTEFFU0NICj4gPiA+ID4+PiA8
c2ZANGpzLmNvbT4gaGEgc2NyaXR0bzoKPiA+ID4gPj4+Pgo+ID4gPiA+Pj4+IFRlc3RpbmcgRnJl
ZVREUyAxLjFyYzMgd2l0aCBTUUwgU2VydmVyIDIwMTk6Cj4gPiA+ID4+Pj4KPiA+ID4gPj4+PiBJ
IGdldCBhbiB1bmV4cGVjdGVkIFNRTCB0eXBlIGNvZGUgd2l0aCBhIENIQVIoMTApIGNvbHVtbiwg
d2hlbiB0aGUKPiA+ID4gPj4+PiBkYXRhYmFzZSBjb2xsYXRpb24gaXMgdXNpbmcgVVRGLTguCj4g
PiA+ID4+Pj4KPiA+ID4gPj4+PiBJbnN0ZWFkIG9mIFNRTF9DSEFSIChvciBTUUxfV0NIQVIpLCBJ
IGdldCBTUUxfV1ZBUkNIQVIuCj4gPiA+ID4+Pj4KPiA+ID4gPj4+PiBJIGhhdmUgY3JlYXRlZCBh
IGRhdGFiYXNlIHdpdGggdGhpcyBjb2xsYXRpb246Cj4gPiA+ID4+Pj4KPiA+ID4gPj4+PiAgICAg
IExhdGluMV9HZW5lcmFsXzEwMF9DSV9BU19TQ19VVEY4Cj4gPiA+ID4+Pj4KPiA+ID4gPj4+PiBU
aGVuIGNyZWF0ZWQgYSB0YWJsZSBsaWtlIHRoaXM6Cj4gPiA+ID4+Pj4KPiA+ID4gPj4+PiAgICAg
IENSRUFURSBUQUJMRSBteXRhYjEgKCBjb2wxIENIQVIoMTApICkKPiA+ID4gPj4+Pgo+ID4gPiA+
Pj4+IGFuZCBpbnNlcnRlZCBhIHJvdzoKPiA+ID4gPj4+Pgo+ID4gPiA+Pj4+ICAgICAgSU5TRVJU
IElOVE8gbXl0YWIxIFZBTFVFUyAoICdhYmMnICkKPiA+ID4gPj4+Pgo+ID4gPiA+Pj4+IFRoZW4g
aW4gdGhlIE9EQkMgcHJvZ3JhbToKPiA+ID4gPj4+Pgo+ID4gPiA+Pj4+ICAgICAgU1FMRXhlY0Rp
cmVjdCguLiJTRUxFQ1QgKiBGUk9NIG15dGFiMSIuLikKPiA+ID4gPj4+PiAgICAgIFNRTERlc2Ny
aWJDb2woLi4uKQo+ID4gPiA+Pj4+Cj4gPiA+ID4+Pj4gQ2hlY2sgdGhlIFREU0RVTVAgdHJhY2Ug
aW4gYXR0YWNobWVudCAoZnJlZXRkcy0yMDE5LTEubG9nKQo+ID4gPiA+Pj4+Cj4gPiA+ID4+Pj4g
dG9rZW4uYzoxNTQxOnRkczdfZ2V0X2RhdGFfaW5mbzoKPiA+ID4gPj4+PiAgICAgICAgICAgIGNv
bG5hbWUgPSBjb2wxCj4gPiA+ID4+Pj4gICAgICAgICAgICB0eXBlID0gMzkgKHZhcmNoYXIpCj4g
PiA+ID4+Pj4gICAgICAgICAgICBzZXJ2ZXIncyB0eXBlID0gMjMxICh4IFVDUy0yIHZhcmNoYXIp
ICAgICAgICAgICA8LS0gMjMxID8KPiA+ID4gPj4+PiAgICAgICAgICAgIGNvbHVtbl92YXJpbnRf
c2l6ZSA9IDIKPiA+ID4gPj4+PiAgICAgICAgICAgIGNvbHVtbl9zaXplID0gMjAgKDIwIG9uIHNl
cnZlcikKPiA+ID4gPj4+Pgo+ID4gPiA+Pj4+Cj4gPiA+ID4+Pj4gVGhlIHNhbWUgcHJvZ3JhbSwg
Y29ubmVjdGluZyB0byBTUUwgU2VydmVyIDIwMTcgKHdlcmUgREIgY29sbGF0aW9uIGlzCj4gPiA+
ID4+IExhdGluMQo+ID4gPiA+Pj4+IHdpdGhvdXQgVVRGLTgpOgo+ID4gPiA+Pj4+Cj4gPiA+ID4+
Pj4KPiA+ID4gPj4+PiB0b2tlbi5jOjE1NDE6dGRzN19nZXRfZGF0YV9pbmZvOgo+ID4gPiA+Pj4+
ICAgICAgICAgICAgY29sbmFtZSA9IGNvbDEKPiA+ID4gPj4+PiAgICAgICAgICAgIHR5cGUgPSA0
NyAoY2hhcikKPiA+ID4gPj4+PiAgICAgICAgICAgIHNlcnZlcidzIHR5cGUgPSAxNzUgKHhjaGFy
KSAgICAgICAgICA8LS0gMTc1Cj4gPiA+ID4+Pj4gICAgICAgICAgICBjb2x1bW5fdmFyaW50X3Np
emUgPSAyCj4gPiA+ID4+Pj4gICAgICAgICAgICBjb2x1bW5fc2l6ZSA9IDEwICgxMCBvbiBzZXJ2
ZXIpCj4gPiA+ID4+Pj4KPiA+ID4gPj4+PiBXaXRoIFNRTCBTZXJ2ZXIgMjAxOSwgd2hlbiB1c2lu
ZyBhbm90aGVyIGNvbGxhdGlvbiAobm9uLVVURi04KQo+ID4gPiA+Pj4+Cj4gPiA+ID4+Pj4gICAg
ICAgQ1JFQVRFIFRBQkxFIG15dGFiMiAoIGNvbDEgQ0hBUigxMCkgQ09MTEFURSBMYXRpbjFfR2Vu
ZXJhbF9DSV9BUyApCj4gPiA+ID4+Pj4KPiA+ID4gPj4+PiBJIGdldCB0aGUgZXhwZWN0ZWQgdGRz
IHR5cGUgY29kZS4uLgo+ID4gPiA+Pj4+Cj4gPiA+ID4+Pj4gU2ViCj4gPiA+ID4+Pj4gX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiA+ID4gPj4+PiBGcmVl
VERTIG1haWxpbmcgbGlzdAo+ID4gPiA+Pj4+IEZyZWVURFNAbGlzdHMuaWJpYmxpby5vcmcKPiA+
ID4gPj4+PiBodHRwczovL2xpc3RzLmliaWJsaW8ub3JnL21haWxtYW4vbGlzdGluZm8vZnJlZXRk
cwo+ID4gPiA+Pj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KPiA+ID4gPj4+IEZyZWVURFMgbWFpbGluZyBsaXN0Cj4gPiA+ID4+PiBGcmVlVERTQGxpc3Rz
LmliaWJsaW8ub3JnCj4gPiA+ID4+PiBodHRwczovL2xpc3RzLmliaWJsaW8ub3JnL21haWxtYW4v
bGlzdGluZm8vZnJlZXRkcwo+ID4gPiA+Pj4KPiA+ID4gPj4KPiA+ID4gPj4gX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiA+ID4gPj4gRnJlZVREUyBtYWls
aW5nIGxpc3QKPiA+ID4gPj4gRnJlZVREU0BsaXN0cy5pYmlibGlvLm9yZwo+ID4gPiA+PiBodHRw
czovL2xpc3RzLmliaWJsaW8ub3JnL21haWxtYW4vbGlzdGluZm8vZnJlZXRkcwo+ID4gPiA+Pgo+
ID4gPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4g
PiA+ID4gRnJlZVREUyBtYWlsaW5nIGxpc3QKPiA+ID4gPiBGcmVlVERTQGxpc3RzLmliaWJsaW8u
b3JnCj4gPiA+ID4gaHR0cHM6Ly9saXN0cy5pYmlibGlvLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Zy
ZWV0ZHMKPiA+ID4gPgo+ID4gPgo+ID4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwo+ID4gPiBGcmVlVERTIG1haWxpbmcgbGlzdAo+ID4gPiBGcmVlVERT
QGxpc3RzLmliaWJsaW8ub3JnCj4gPiA+IGh0dHBzOi8vbGlzdHMuaWJpYmxpby5vcmcvbWFpbG1h
bi9saXN0aW5mby9mcmVldGRzCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCkZyZWVURFMgbWFpbGluZyBsaXN0CkZyZWVURFNAbGlzdHMuaWJpYmxpby5vcmcK
aHR0cHM6Ly9saXN0cy5pYmlibGlvLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZyZWV0ZHMK