<div dir="ltr"><div class="markdown-here-wrapper" style=""><p style="margin:0px 0px 1.2em!important">I’m not sure, but I think that in this case the specific type of these values is determined at runtime.<br>Then a safe approach would be separate <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">string: String?</code>, <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">bool: Bool?</code>, <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">int: Int?</code> computed properties, as it’s done in JSON parsers.</p>
<pre style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;font-size:1em;line-height:1.2em;margin:1.2em 0px"><code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline;white-space:pre;overflow:auto;border-radius:3px;border:1px solid rgb(204,204,204);padding:0.5em 0.7em;display:block!important">if let bookCount = row.value(named: "bookCount").int {
...
}
if let bookCount = row["bookCount"].int {
...
}
let bookCount = <a href="http://row.int">row.int</a>("bookCount")! // crash if database is corrupt
</code></pre><p style="margin:0px 0px 1.2em!important">Additionally, this is an overall bad example of generics. Fields of database tables can only map to a limited set of static types in Swift, which are supported by database adapter.</p>
<p style="margin:0px 0px 1.2em!important">2017-01-14 16:50 GMT+03:00 Gwendal Roué via swift-evolution <<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>>:</p>
<p style="margin:0px 0px 1.2em!important"></p><div class="markdown-here-exclude"><p></p><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">This is a consequence of your vision of subscript. If interesting, it is also limiting for no real purpose.<div><br></div><div>As the developer of a Swift database library, I'd like to offer a better API than the following:<div><br></div><div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,132,0)"><span style="font-variant-ligatures:no-common-ligatures"><span style="color:rgb(186,45,162)"> </span><span style="color:rgb(186,45,162)"> </span>// Current state of affairs</span></div></div><div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures;color:#ba2da2"> let</span><span style="font-variant-ligatures:no-common-ligatures"> name: </span><span style="font-variant-ligatures:no-common-ligatures;color:#703daa">String</span><span style="font-variant-ligatures:no-common-ligatures"> = row.</span><span style="font-variant-ligatures:no-common-ligatures;color:#31595d">value</span><span style="font-variant-ligatures:no-common-ligatures">(named: </span><span style="font-variant-ligatures:no-common-ligatures;color:#d12f1b">"name"</span><span style="font-variant-ligatures:no-common-ligatures">)</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(186,45,162)"> let</span><span style="font-variant-ligatures:no-common-ligatures"> bookCount: </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(112,61,170)">Int</span><span style="font-variant-ligatures:no-common-ligatures"> = row.</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(49,89,93)">value</span><span style="font-variant-ligatures:no-common-ligatures">(named: </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(209,47,27)">"bookCount"</span><span style="font-variant-ligatures:no-common-ligatures">)</span></div></div><div><span style="font-variant-ligatures:no-common-ligatures"><div><span style="font-variant-ligatures:no-common-ligatures"><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(186,45,162)"> let</span><span style="font-variant-ligatures:no-common-ligatures"> hasBooks: </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(112,61,170)">Bool</span><span style="font-variant-ligatures:no-common-ligatures"> = row.</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(49,89,93)">value</span><span style="font-variant-ligatures:no-common-ligatures">(named: </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(209,47,27)">"bookCount"</span><span style="font-variant-ligatures:no-common-ligatures">)</span></div><div><span style="font-variant-ligatures:no-common-ligatures"><br></span></div></span></div></span></div><div>Instead, I wish I could offer GRDB.swift would let its users write:</div></div><div><br></div><div><div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,132,0)"><span style="font-variant-ligatures:no-common-ligatures"><span style="color:rgb(186,45,162)"> </span><span style="color:rgb(186,45,162)"> </span>// With improved subscripts</span></div></div><div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><div><div style="margin:0px;line-height:normal"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(186,45,162)"> let</span><span style="font-variant-ligatures:no-common-ligatures"> name: </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(112,61,170)">String</span><span style="font-variant-ligatures:no-common-ligatures"> = row</span><span style="font-variant-ligatures:no-common-ligatures">[</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(209,47,27)">"name"</span>]</div><div style="margin:0px;line-height:normal"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(186,45,162)"> let</span><span style="font-variant-ligatures:no-common-ligatures"> bookCount: </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(112,61,170)">Int</span><span style="font-variant-ligatures:no-common-ligatures"> = row</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(209,47,27)"><span style="color:rgb(0,0,0)">[</span>"bookCount"</span><span style="font-variant-ligatures:no-common-ligatures">]</span></div></div><div><span style="font-variant-ligatures:no-common-ligatures"><div><span style="font-variant-ligatures:no-common-ligatures"><div style="margin:0px;line-height:normal"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(186,45,162)"> let</span><span style="font-variant-ligatures:no-common-ligatures"> hasBooks: </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(112,61,170)">Bool</span><span style="font-variant-ligatures:no-common-ligatures"> = row</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(209,47,27)"><span style="color:rgb(0,0,0)">[</span>"bookCount"</span><span style="font-variant-ligatures:no-common-ligatures">]</span></div><div><br></div><div><div style="font-family:Helvetica;font-size:12px">And this requires genericity on return type.</div><div style="font-family:Helvetica;font-size:12px"><br></div><div style="font-family:Helvetica;font-size:12px">Gwendal</div><div style="font-family:Helvetica;font-size:12px"><br></div><div style="font-family:Helvetica;font-size:12px"><div></div></div></div></span></div></span></div></div></div></div></div><br>______________________________<wbr>_________________<br>
swift-evolution mailing list<br>
<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/<wbr>mailman/listinfo/swift-<wbr>evolution</a><br>
<br></blockquote><p></p></div><p style="margin:0px 0px 1.2em!important"></p>
<div title="MDH:SSdtIG5vdCBzdXJlLCBidXQgSSB0aGluayB0aGF0IGluIHRoaXMgY2FzZSB0aGUgc3BlY2lmaWMg
dHlwZSBvZiB0aGVzZSB2YWx1ZXMgaXMgZGV0ZXJtaW5lZCBhdCBydW50aW1lLjxkaXY+VGhlbiBh
IHNhZmUgYXBwcm9hY2ggd291bGQgYmUgc2VwYXJhdGUgYHN0cmluZzogU3RyaW5nP2AsIGBib29s
OiBCb29sP2AsIGBpbnQ6IEludD9gIGNvbXB1dGVkIHByb3BlcnRpZXMsIGFzIGl0J3MgZG9uZSBp
biBKU09OIHBhcnNlcnMuPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2Pmlm
IGxldCBib29rQ291bnQgPSByb3cudmFsdWUobmFtZWQ6ICJib29rQ291bnQiKS5pbnQgezwvZGl2
PjxkaXY+Jm5ic3A7ICZuYnNwOyAuLi48L2Rpdj48ZGl2Pn08L2Rpdj48ZGl2PmlmIGxldCBib29r
Q291bnQgPSByb3dbImJvb2tDb3VudCJdLmludCB7PC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7IC4u
LjwvZGl2PjxkaXY+fTwvZGl2PjxkaXY+bGV0IGJvb2tDb3VudCA9IHJvdy5pbnQoImJvb2tDb3Vu
dCIpISAmbmJzcDsgLy8gY3Jhc2ggaWYgZGF0YWJhc2UgaXMgY29ycnVwdDwvZGl2PjxkaXY+YGBg
PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5BZGRpdGlvbmFsbHksIHRoaXMgaXMgYW4gb3ZlcmFs
bCBiYWQgZXhhbXBsZSBvZiBnZW5lcmljcy4gRmllbGRzIG9mIGRhdGFiYXNlIHRhYmxlcyBjYW4g
b25seSBtYXAgdG8gYSBsaW1pdGVkIHNldCBvZiBzdGF0aWMgdHlwZXMgaW4gU3dpZnQsIHdoaWNo
IGFyZSBzdXBwb3J0ZWQgYnkgZGF0YWJhc2UgYWRhcHRlci48YnI+PGRpdiBjbGFzcz0iZ21haWxf
ZXh0cmEiPjxicj48ZGl2IGNsYXNzPSJnbWFpbF9xdW90ZSI+MjAxNy0wMS0xNCAxNjo1MCBHTVQr
MDM6MDAgR3dlbmRhbCBSb3XDqSB2aWEgc3dpZnQtZXZvbHV0aW9uIDxzcGFuIGRpcj0ibHRyIj4m
bHQ7PGEgaHJlZj0ibWFpbHRvOnN3aWZ0LWV2b2x1dGlvbkBzd2lmdC5vcmciIHRhcmdldD0iX2Js
YW5rIj5zd2lmdC1ldm9sdXRpb25Ac3dpZnQub3JnPC9hPiZndDs8L3NwYW4+OjxibG9ja3F1b3Rl
IGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9Im1hcmdpbjowIDAgMCAuOGV4O2JvcmRlci1sZWZ0
OjFweCAjY2NjIHNvbGlkO3BhZGRpbmctbGVmdDoxZXgiPjxkaXYgc3R5bGU9IndvcmQtd3JhcDpi
cmVhay13b3JkIj5UaGlzIGlzIGEgY29uc2VxdWVuY2Ugb2YgeW91ciB2aXNpb24gb2Ygc3Vic2Ny
aXB0LiBJZiBpbnRlcmVzdGluZywgaXQgaXMgYWxzbyBsaW1pdGluZyBmb3Igbm8gcmVhbCBwdXJw
b3NlLjxkaXY+PGJyPjwvZGl2PjxkaXY+QXMgdGhlIGRldmVsb3BlciBvZiBhIFN3aWZ0IGRhdGFi
YXNlIGxpYnJhcnksIEknZCBsaWtlIHRvIG9mZmVyIGEgYmV0dGVyIEFQSSB0aGFuIHRoZSBmb2xs
b3dpbmc6PGRpdj48YnI+PC9kaXY+PGRpdj48ZGl2IHN0eWxlPSJtYXJnaW46MHB4O2ZvbnQtc2l6
ZToxMXB4O2xpbmUtaGVpZ2h0Om5vcm1hbDtmb250LWZhbWlseTpNZW5sbztjb2xvcjpyZ2IoMCwx
MzIsMCkiPjxzcGFuIHN0eWxlPSJmb250LXZhcmlhbnQtbGlnYXR1cmVzOm5vLWNvbW1vbi1saWdh
dHVyZXMiPjxzcGFuIHN0eWxlPSJjb2xvcjpyZ2IoMTg2LDQ1LDE2MikiPiZuYnNwOyAmbmJzcDs8
L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOnJnYigxODYsNDUsMTYyKSI+Jm5ic3A7PC9zcGFuPi8v
IEN1cnJlbnQgc3RhdGUgb2YgYWZmYWlyczwvc3Bhbj48L2Rpdj48L2Rpdj48ZGl2PjxkaXYgc3R5
bGU9Im1hcmdpbjowcHg7Zm9udC1zaXplOjExcHg7bGluZS1oZWlnaHQ6bm9ybWFsO2ZvbnQtZmFt
aWx5Ok1lbmxvIj48c3BhbiBzdHlsZT0iZm9udC12YXJpYW50LWxpZ2F0dXJlczpuby1jb21tb24t
bGlnYXR1cmVzO2NvbG9yOiNiYTJkYTIiPiZuYnNwOyAmbmJzcDsgbGV0PC9zcGFuPjxzcGFuIHN0
eWxlPSJmb250LXZhcmlhbnQtbGlnYXR1cmVzOm5vLWNvbW1vbi1saWdhdHVyZXMiPiBuYW1lOiA8
L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtdmFyaWFudC1saWdhdHVyZXM6bm8tY29tbW9uLWxpZ2F0
dXJlcztjb2xvcjojNzAzZGFhIj5TdHJpbmc8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtdmFyaWFu
dC1saWdhdHVyZXM6bm8tY29tbW9uLWxpZ2F0dXJlcyI+ID0gcm93Ljwvc3Bhbj48c3BhbiBzdHls
ZT0iZm9udC12YXJpYW50LWxpZ2F0dXJlczpuby1jb21tb24tbGlnYXR1cmVzO2NvbG9yOiMzMTU5
NWQiPnZhbHVlPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXZhcmlhbnQtbGlnYXR1cmVzOm5vLWNv
bW1vbi1saWdhdHVyZXMiPihuYW1lZDogPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXZhcmlhbnQt
bGlnYXR1cmVzOm5vLWNvbW1vbi1saWdhdHVyZXM7Y29sb3I6I2QxMmYxYiI+Im5hbWUiPC9zcGFu
PjxzcGFuIHN0eWxlPSJmb250LXZhcmlhbnQtbGlnYXR1cmVzOm5vLWNvbW1vbi1saWdhdHVyZXMi
Pik8L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOjBweDtmb250LXNpemU6MTFweDtsaW5l
LWhlaWdodDpub3JtYWw7Zm9udC1mYW1pbHk6TWVubG8iPjxzcGFuIHN0eWxlPSJmb250LXZhcmlh
bnQtbGlnYXR1cmVzOm5vLWNvbW1vbi1saWdhdHVyZXM7Y29sb3I6cmdiKDE4Niw0NSwxNjIpIj4m
bmJzcDsgJm5ic3A7IGxldDwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC12YXJpYW50LWxpZ2F0dXJl
czpuby1jb21tb24tbGlnYXR1cmVzIj4mbmJzcDtib29rQ291bnQ6Jm5ic3A7PC9zcGFuPjxzcGFu
IHN0eWxlPSJmb250LXZhcmlhbnQtbGlnYXR1cmVzOm5vLWNvbW1vbi1saWdhdHVyZXM7Y29sb3I6
cmdiKDExMiw2MSwxNzApIj5JbnQ8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtdmFyaWFudC1saWdh
dHVyZXM6bm8tY29tbW9uLWxpZ2F0dXJlcyI+Jm5ic3A7PSByb3cuPC9zcGFuPjxzcGFuIHN0eWxl
PSJmb250LXZhcmlhbnQtbGlnYXR1cmVzOm5vLWNvbW1vbi1saWdhdHVyZXM7Y29sb3I6cmdiKDQ5
LDg5LDkzKSI+dmFsdWU8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtdmFyaWFudC1saWdhdHVyZXM6
bm8tY29tbW9uLWxpZ2F0dXJlcyI+KG5hbWVkOiZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iZm9u
dC12YXJpYW50LWxpZ2F0dXJlczpuby1jb21tb24tbGlnYXR1cmVzO2NvbG9yOnJnYigyMDksNDcs
MjcpIj4iYm9va0NvdW50Ijwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC12YXJpYW50LWxpZ2F0dXJl
czpuby1jb21tb24tbGlnYXR1cmVzIj4pPC9zcGFuPjwvZGl2PjwvZGl2PjxkaXY+PHNwYW4gc3R5
bGU9ImZvbnQtdmFyaWFudC1saWdhdHVyZXM6bm8tY29tbW9uLWxpZ2F0dXJlcyI+PGRpdj48c3Bh
biBzdHlsZT0iZm9udC12YXJpYW50LWxpZ2F0dXJlczpuby1jb21tb24tbGlnYXR1cmVzIj48ZGl2
IHN0eWxlPSJtYXJnaW46MHB4O2ZvbnQtc2l6ZToxMXB4O2xpbmUtaGVpZ2h0Om5vcm1hbDtmb250
LWZhbWlseTpNZW5sbyI+PHNwYW4gc3R5bGU9ImZvbnQtdmFyaWFudC1saWdhdHVyZXM6bm8tY29t
bW9uLWxpZ2F0dXJlcztjb2xvcjpyZ2IoMTg2LDQ1LDE2MikiPiZuYnNwOyAmbmJzcDsgbGV0PC9z
cGFuPjxzcGFuIHN0eWxlPSJmb250LXZhcmlhbnQtbGlnYXR1cmVzOm5vLWNvbW1vbi1saWdhdHVy
ZXMiPiZuYnNwO2hhc0Jvb2tzOiZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC12YXJpYW50
LWxpZ2F0dXJlczpuby1jb21tb24tbGlnYXR1cmVzO2NvbG9yOnJnYigxMTIsNjEsMTcwKSI+Qm9v
bDwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC12YXJpYW50LWxpZ2F0dXJlczpuby1jb21tb24tbGln
YXR1cmVzIj4mbmJzcDs9IHJvdy48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtdmFyaWFudC1saWdh
dHVyZXM6bm8tY29tbW9uLWxpZ2F0dXJlcztjb2xvcjpyZ2IoNDksODksOTMpIj52YWx1ZTwvc3Bh
bj48c3BhbiBzdHlsZT0iZm9udC12YXJpYW50LWxpZ2F0dXJlczpuby1jb21tb24tbGlnYXR1cmVz
Ij4obmFtZWQ6Jm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXZhcmlhbnQtbGlnYXR1cmVz
Om5vLWNvbW1vbi1saWdhdHVyZXM7Y29sb3I6cmdiKDIwOSw0NywyNykiPiJib29rQ291bnQiPC9z
cGFuPjxzcGFuIHN0eWxlPSJmb250LXZhcmlhbnQtbGlnYXR1cmVzOm5vLWNvbW1vbi1saWdhdHVy
ZXMiPik8L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iZm9udC12YXJpYW50LWxpZ2F0dXJl
czpuby1jb21tb24tbGlnYXR1cmVzIj48YnI+PC9zcGFuPjwvZGl2Pjwvc3Bhbj48L2Rpdj48L3Nw
YW4+PC9kaXY+PGRpdj5JbnN0ZWFkLCBJIHdpc2ggSSBjb3VsZCBvZmZlciBHUkRCLnN3aWZ0IHdv
dWxkIGxldCBpdHMgdXNlcnMgd3JpdGU6PC9kaXY+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj48
ZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjowcHg7Zm9udC1zaXplOjExcHg7bGluZS1oZWlnaHQ6bm9y
bWFsO2ZvbnQtZmFtaWx5Ok1lbmxvO2NvbG9yOnJnYigwLDEzMiwwKSI+PHNwYW4gc3R5bGU9ImZv
bnQtdmFyaWFudC1saWdhdHVyZXM6bm8tY29tbW9uLWxpZ2F0dXJlcyI+PHNwYW4gc3R5bGU9ImNv
bG9yOnJnYigxODYsNDUsMTYyKSI+Jm5ic3A7ICZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iY29s
b3I6cmdiKDE4Niw0NSwxNjIpIj4mbmJzcDs8L3NwYW4+Ly8gV2l0aCBpbXByb3ZlZCBzdWJzY3Jp
cHRzPC9zcGFuPjwvZGl2PjwvZGl2PjxkaXY+PGRpdiBzdHlsZT0ibWFyZ2luOjBweDtmb250LXNp
emU6MTFweDtsaW5lLWhlaWdodDpub3JtYWw7Zm9udC1mYW1pbHk6TWVubG8iPjxkaXY+PGRpdiBz
dHlsZT0ibWFyZ2luOjBweDtsaW5lLWhlaWdodDpub3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXZh
cmlhbnQtbGlnYXR1cmVzOm5vLWNvbW1vbi1saWdhdHVyZXM7Y29sb3I6cmdiKDE4Niw0NSwxNjIp
Ij4mbmJzcDsgJm5ic3A7IGxldDwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC12YXJpYW50LWxpZ2F0
dXJlczpuby1jb21tb24tbGlnYXR1cmVzIj4mbmJzcDtuYW1lOiZuYnNwOzwvc3Bhbj48c3BhbiBz
dHlsZT0iZm9udC12YXJpYW50LWxpZ2F0dXJlczpuby1jb21tb24tbGlnYXR1cmVzO2NvbG9yOnJn
YigxMTIsNjEsMTcwKSI+U3RyaW5nPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXZhcmlhbnQtbGln
YXR1cmVzOm5vLWNvbW1vbi1saWdhdHVyZXMiPiZuYnNwOz0gcm93PC9zcGFuPjxzcGFuIHN0eWxl
PSJmb250LXZhcmlhbnQtbGlnYXR1cmVzOm5vLWNvbW1vbi1saWdhdHVyZXMiPls8L3NwYW4+PHNw
YW4gc3R5bGU9ImZvbnQtdmFyaWFudC1saWdhdHVyZXM6bm8tY29tbW9uLWxpZ2F0dXJlcztjb2xv
cjpyZ2IoMjA5LDQ3LDI3KSI+Im5hbWUiPC9zcGFuPl08L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46
MHB4O2xpbmUtaGVpZ2h0Om5vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtdmFyaWFudC1saWdhdHVy
ZXM6bm8tY29tbW9uLWxpZ2F0dXJlcztjb2xvcjpyZ2IoMTg2LDQ1LDE2MikiPiZuYnNwOyAmbmJz
cDsgbGV0PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXZhcmlhbnQtbGlnYXR1cmVzOm5vLWNvbW1v
bi1saWdhdHVyZXMiPiZuYnNwO2Jvb2tDb3VudDombmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9ImZv
bnQtdmFyaWFudC1saWdhdHVyZXM6bm8tY29tbW9uLWxpZ2F0dXJlcztjb2xvcjpyZ2IoMTEyLDYx
LDE3MCkiPkludDwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC12YXJpYW50LWxpZ2F0dXJlczpuby1j
b21tb24tbGlnYXR1cmVzIj4mbmJzcDs9IHJvdzwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC12YXJp
YW50LWxpZ2F0dXJlczpuby1jb21tb24tbGlnYXR1cmVzO2NvbG9yOnJnYigyMDksNDcsMjcpIj48
c3BhbiBzdHlsZT0iY29sb3I6cmdiKDAsMCwwKSI+Wzwvc3Bhbj4iYm9va0NvdW50Ijwvc3Bhbj48
c3BhbiBzdHlsZT0iZm9udC12YXJpYW50LWxpZ2F0dXJlczpuby1jb21tb24tbGlnYXR1cmVzIj5d
PC9zcGFuPjwvZGl2PjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImZvbnQtdmFyaWFudC1saWdhdHVy
ZXM6bm8tY29tbW9uLWxpZ2F0dXJlcyI+PGRpdj48c3BhbiBzdHlsZT0iZm9udC12YXJpYW50LWxp
Z2F0dXJlczpuby1jb21tb24tbGlnYXR1cmVzIj48ZGl2IHN0eWxlPSJtYXJnaW46MHB4O2xpbmUt
aGVpZ2h0Om5vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtdmFyaWFudC1saWdhdHVyZXM6bm8tY29t
bW9uLWxpZ2F0dXJlcztjb2xvcjpyZ2IoMTg2LDQ1LDE2MikiPiZuYnNwOyAmbmJzcDsgbGV0PC9z
cGFuPjxzcGFuIHN0eWxlPSJmb250LXZhcmlhbnQtbGlnYXR1cmVzOm5vLWNvbW1vbi1saWdhdHVy
ZXMiPiZuYnNwO2hhc0Jvb2tzOiZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC12YXJpYW50
LWxpZ2F0dXJlczpuby1jb21tb24tbGlnYXR1cmVzO2NvbG9yOnJnYigxMTIsNjEsMTcwKSI+Qm9v
bDwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC12YXJpYW50LWxpZ2F0dXJlczpuby1jb21tb24tbGln
YXR1cmVzIj4mbmJzcDs9IHJvdzwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC12YXJpYW50LWxpZ2F0
dXJlczpuby1jb21tb24tbGlnYXR1cmVzO2NvbG9yOnJnYigyMDksNDcsMjcpIj48c3BhbiBzdHls
ZT0iY29sb3I6cmdiKDAsMCwwKSI+Wzwvc3Bhbj4iYm9va0NvdW50Ijwvc3Bhbj48c3BhbiBzdHls
ZT0iZm9udC12YXJpYW50LWxpZ2F0dXJlczpuby1jb21tb24tbGlnYXR1cmVzIj5dPC9zcGFuPjwv
ZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6SGVsdmV0aWNh
O2ZvbnQtc2l6ZToxMnB4Ij5BbmQgdGhpcyByZXF1aXJlcyBnZW5lcmljaXR5IG9uIHJldHVybiB0
eXBlLjwvZGl2PjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OkhlbHZldGljYTtmb250LXNpemU6MTJw
eCI+PGJyPjwvZGl2PjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OkhlbHZldGljYTtmb250LXNpemU6
MTJweCI+R3dlbmRhbDwvZGl2PjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OkhlbHZldGljYTtmb250
LXNpemU6MTJweCI+PGJyPjwvZGl2PjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OkhlbHZldGljYTtm
b250LXNpemU6MTJweCI+PGRpdj48L2Rpdj48L2Rpdj48L2Rpdj48L3NwYW4+PC9kaXY+PC9zcGFu
PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2Pjxicj5fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX188d2JyPl9fX19fX19fX19fX19fX19fPGJyPgpzd2lmdC1ldm9sdXRpb24gbWFpbGlu
ZyBsaXN0PGJyPgo8YSBocmVmPSJtYWlsdG86c3dpZnQtZXZvbHV0aW9uQHN3aWZ0Lm9yZyI+c3dp
ZnQtZXZvbHV0aW9uQHN3aWZ0Lm9yZzwvYT48YnI+CjxhIGhyZWY9Imh0dHBzOi8vbGlzdHMuc3dp
ZnQub3JnL21haWxtYW4vbGlzdGluZm8vc3dpZnQtZXZvbHV0aW9uIiBkYXRhLXNhZmVyZWRpcmVj
dHVybD0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS91cmw/aGw9cnUmYW1wO3E9aHR0cHM6Ly9saXN0
cy5zd2lmdC5vcmcvbWFpbG1hbi9saXN0aW5mby9zd2lmdC1ldm9sdXRpb24mYW1wO3NvdXJjZT1n
bWFpbCZhbXA7dXN0PTE0ODQ1MDA2MzE5NjcwMDAmYW1wO3VzZz1BRlFqQ05FRmpFOXY5RWQtSmY1
X0lxbGx1UERQcXA4QlVnIiByZWw9Im5vcmVmZXJyZXIiIHRhcmdldD0iX2JsYW5rIj5odHRwczov
L2xpc3RzLnN3aWZ0Lm9yZy88d2JyPm1haWxtYW4vbGlzdGluZm8vc3dpZnQtPHdicj5ldm9sdXRp
b248L2E+PGJyPgo8YnI+PC9ibG9ja3F1b3RlPjwvZGl2Pjxicj48L2Rpdj48L2Rpdj4=" style="height:0;width:0;max-height:0;max-width:0;overflow:hidden;font-size:0em;padding:0;margin:0"></div></div></div>