Re: [pgAdmin][RM5038] Select2 enhancement - Load items on demand (scroll)

Aditya Toshniwal <[email protected]> Fri, 3 Jan 2020 15:13:04 +0530
Newsgroups gmane.comp.db.postgresql.pgadmin.devel
Message-ID <CAM9w-_nU8m_LbFaCvLzYnrepM+Y1RGbAT8xQaMucWxm=3cuaNg@mail.gmail.com>
--00000000000008ec29059b3925d2
Content-Type: multipart/alternative; boundary="00000000000008ec26059b3925d0"

--00000000000008ec26059b3925d0
Content-Type: text/plain; charset="UTF-8"

Hi Hackers,

The previous patch broke the tags and tokenizer options of select2. Turned
out, with the change of data adapter we also need to configure adapters for
tags, tokenizer and others.
Attached is the patch to set those to the default available in select2.
I've also renamed onDemandLoad to showOnScroll to avoid confusion as we are
showing the already present data on scroll and not loading the data on
demand from ajax.

Kindly review.

On Wed, Jan 1, 2020 at 11:25 AM Akshay Joshi <[email protected]>
wrote:

> Thanks, patch applied.
>
> On Tue, Dec 24, 2019 at 1:01 PM Aditya Toshniwal <
> [email protected]> wrote:
>
>> Hi Hackers,
>>
>> Attached is the patch to enhance select2 used in pgAdmin. The select2
>> dropdown will show only a few items when opened initially. On scrolling it
>> will show others. Searching will work as before. This will reduce the
>> number of DOM nodes on page.
>> Note that, individual controls can disable the behaviour if desired by
>> passing onDemandLoad:false for select2 options. It is enabled by default.
>>
>> Kindly review.
>>
>> --
>> Thanks and Regards,
>> Aditya Toshniwal
>> pgAdmin Hacker | Sr. Software Engineer | EnterpriseDB India | Pune
>> "Don't Complain about Heat, Plant a TREE"
>>
>
>
> --
> *Thanks & Regards*
> *Akshay Joshi*
>
> *Sr. Software Architect*
> *EnterpriseDB Software India Private Limited*
> *Mobile: +91 976-788-8246*
>


-- 
Thanks and Regards,
Aditya Toshniwal
pgAdmin Hacker | Sr. Software Engineer | EnterpriseDB India | Pune
"Don't Complain about Heat, Plant a TREE"

--00000000000008ec26059b3925d0
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div class=3D"gmail_default" style=3D"font-family:verdana,=
sans-serif">Hi Hackers,</div><div class=3D"gmail_default" style=3D"font-fam=
ily:verdana,sans-serif"><br></div><div class=3D"gmail_default" style=3D"fon=
t-family:verdana,sans-serif">The previous patch broke the tags and tokenize=
r options of select2. Turned out, with the change of data adapter we also n=
eed to configure adapters for tags, tokenizer and others.</div><div class=
=3D"gmail_default" style=3D"font-family:verdana,sans-serif">Attached is the=
 patch to set those to the default available in select2.</div><div class=3D=
"gmail_default" style=3D"font-family:verdana,sans-serif">I&#39;ve also rena=
med onDemandLoad to showOnScroll to avoid=C2=A0confusion as we are showing =
the already present data on scroll and not loading the data on demand from =
ajax.</div><div class=3D"gmail_default" style=3D"font-family:verdana,sans-s=
erif"><br></div><div class=3D"gmail_default" style=3D"font-family:verdana,s=
ans-serif">Kindly review.</div></div><br><div class=3D"gmail_quote"><div di=
r=3D"ltr" class=3D"gmail_attr">On Wed, Jan 1, 2020 at 11:25 AM Akshay Joshi=
 &lt;<a href=3D"mailto:[email protected]">akshay.joshi@enterpri=
sedb.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D=
"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-le=
ft:1ex"><div dir=3D"ltr">Thanks, patch applied.</div><br><div class=3D"gmai=
l_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Tue, Dec 24, 2019 at 1:01=
 PM Aditya Toshniwal &lt;<a href=3D"mailto:[email protected]=
m" target=3D"_blank">[email protected]</a>&gt; wrote:<br></=
div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;bor=
der-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div=
 class=3D"gmail_default" style=3D"font-family:verdana,sans-serif">Hi Hacker=
s,</div><div class=3D"gmail_default" style=3D"font-family:verdana,sans-seri=
f"><br></div><div class=3D"gmail_default" style=3D"font-family:verdana,sans=
-serif">Attached is the patch to enhance=C2=A0select2 used in pgAdmin. The =
select2 dropdown will show only a few items when opened initially. On scrol=
ling it will show others. Searching will work as before. This will reduce t=
he number of DOM nodes on page.</div><div class=3D"gmail_default" style=3D"=
font-family:verdana,sans-serif">Note that, individual controls can disable =
the behaviour if desired by passing onDemandLoad:false for select2 options.=
 It is enabled by default.</div><div class=3D"gmail_default" style=3D"font-=
family:verdana,sans-serif"><br></div><div class=3D"gmail_default" style=3D"=
font-family:verdana,sans-serif">Kindly review.</div><div><br></div>-- <br><=
div dir=3D"ltr"><div dir=3D"ltr"><div><div dir=3D"ltr"><div><div dir=3D"ltr=
"><div><div dir=3D"ltr"><div><div dir=3D"ltr"><font size=3D"2" color=3D"#00=
0000" face=3D"verdana, sans-serif">Thanks and Regards,</font><div><span sty=
le=3D"background-color:rgb(255,255,255)"><font size=3D"2" color=3D"#000000"=
 face=3D"verdana, sans-serif">Aditya Toshniwal</font></span></div><div><fon=
t face=3D"verdana, sans-serif"><span style=3D"background-color:rgb(255,255,=
255)"><font size=3D"2" color=3D"#000000">pgAdmin Hacker | Sr. Software Engi=
neer |=C2=A0EnterpriseDB India |=C2=A0</font></span><span style=3D"color:rg=
b(0,0,0)">Pune</span></font></div><div><font color=3D"#38761d" face=3D"verd=
ana, sans-serif" size=3D"1">&quot;Don&#39;t Complain about Heat, Plant a TR=
EE&quot;</font></div></div></div></div></div></div></div></div></div></div>=
</div></div>
</blockquote></div><br clear=3D"all"><div><br></div>-- <br><div dir=3D"ltr"=
><div dir=3D"ltr"><div><div dir=3D"ltr"><div><div dir=3D"ltr"><div dir=3D"l=
tr"><div dir=3D"ltr"><div><font color=3D"#3333FF"><b><span style=3D"color:r=
gb(0,0,0);font-family:arial,sans-serif;font-size:13px;border-collapse:colla=
pse">Thanks &amp; Regards</span></b></font></div><div><font color=3D"#3333F=
F"><b><span style=3D"color:rgb(0,0,0);font-family:arial,sans-serif;font-siz=
e:13px;border-collapse:collapse">Akshay Joshi</span></b></font></div><div><=
font color=3D"#3333FF"><b><span style=3D"color:rgb(0,0,0);font-family:arial=
,sans-serif;font-size:13px;border-collapse:collapse">Sr. Software Architect=
<br></span></b></font></div><div><span style=3D"border-collapse:collapse"><=
font color=3D"#000000" face=3D"arial, sans-serif"><b>EnterpriseDB Software =
India Private Limited</b></font><br></span></div><div><b style=3D"color:rgb=
(51,51,255)"><span style=3D"color:rgb(0,0,0);font-family:arial,sans-serif;f=
ont-size:13px;border-collapse:collapse">Mobile: +91 976-788-8246</span></b>=
<br></div></div></div></div></div></div></div></div></div>
</blockquote></div><br clear=3D"all"><div><br></div>-- <br><div dir=3D"ltr"=
 class=3D"gmail_signature"><div dir=3D"ltr"><div><div dir=3D"ltr"><div><div=
 dir=3D"ltr"><div><div dir=3D"ltr"><div><div dir=3D"ltr"><font size=3D"2" c=
olor=3D"#000000" face=3D"verdana, sans-serif">Thanks and Regards,</font><di=
v><span style=3D"background-color:rgb(255,255,255)"><font size=3D"2" color=
=3D"#000000" face=3D"verdana, sans-serif">Aditya Toshniwal</font></span></d=
iv><div><font face=3D"verdana, sans-serif"><span style=3D"background-color:=
rgb(255,255,255)"><font size=3D"2" color=3D"#000000">pgAdmin Hacker | Sr. S=
oftware Engineer |=C2=A0EnterpriseDB India |=C2=A0</font></span><span style=
=3D"color:rgb(0,0,0)">Pune</span></font></div><div><font color=3D"#38761d" =
face=3D"verdana, sans-serif" size=3D"1">&quot;Don&#39;t Complain about Heat=
, Plant a TREE&quot;</font></div></div></div></div></div></div></div></div>=
</div></div></div>

--00000000000008ec26059b3925d0--
--00000000000008ec29059b3925d2
Content-Type: application/octet-stream; name="RM5038.part2.patch"
Content-Disposition: attachment; filename="RM5038.part2.patch"
Content-Transfer-Encoding: base64
Content-ID: <f_k4xyyz2j0>
X-Attachment-Id: f_k4xyyz2j0

ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL25vZGUudWkuanMgYi93
ZWIvcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9ub2RlLnVpLmpzCmluZGV4IDZlNTA2MDc5MS4u
MjNjMGQ5MTk1IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9ub2Rl
LnVpLmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL25vZGUudWkuanMKQEAg
LTkzLDU3ICs5Myw2IEBAIGRlZmluZShbCiAgICAgKTsKICAgfSk7CiAKLSAgLyogRGVmaW5lIG9u
IGRlbWFuZCBsb2FkaW5nIG9mIGRyb3Bkb3duIGl0ZW1zLgotICAgKiBUaGlzIGFsc28gcmVxdWly
ZXMgYWpheCBvcHRpb24gb2Ygc2VsZWN0MiB0byBiZSBzZXQuCi0gICAqIFRoZSB0cmljayBpcywg
YWpheDoge30gd2lsbCBhbHNvIHdvcmsgZXZlbiBpZiB5b3UncmUgYWN0dWFsbHkgbm90Ci0gICAq
IHVzaW5nIGFqYXguCi0gICAqLwotICAkLmZuLnNlbGVjdDIuYW1kLmRlZmluZSgnc2VsZWN0Mi9v
bkRlbWFuZERhdGFBZGFwdGVyJywgWwotICAgICdzZWxlY3QyL3V0aWxzJywKLSAgICAnc2VsZWN0
Mi9kYXRhL3NlbGVjdCcsCi0gIF0sIGZ1bmN0aW9uIChVdGlscywgU2VsZWN0QWRhcHRlcikgewot
Ci0gICAgZnVuY3Rpb24gb25EZW1hbmREYXRhQWRhcHRlciAoJGVsZW1lbnQsIG9wdGlvbnMpIHsK
LSAgICAgIHRoaXMuJGVsZW1lbnQgPSAkZWxlbWVudDsKLSAgICAgIHRoaXMub3B0aW9ucyA9IG9w
dGlvbnM7Ci0gICAgfQotICAgIFV0aWxzLkV4dGVuZChvbkRlbWFuZERhdGFBZGFwdGVyLCBTZWxl
Y3RBZGFwdGVyKTsKLSAgICBvbkRlbWFuZERhdGFBZGFwdGVyLnByb3RvdHlwZS5xdWVyeSA9IGZ1
bmN0aW9uIChwYXJhbXMsIGNhbGxiYWNrKSB7Ci0gICAgICB2YXIgZGF0YSA9IFtdOwotICAgICAg
dmFyIHNlbGYgPSB0aGlzOwotICAgICAgaWYgKCFwYXJhbXMucGFnZSkgewotICAgICAgICBwYXJh
bXMucGFnZSA9IDE7Ci0gICAgICB9Ci0gICAgICB2YXIgcGFnZVNpemUgPSAyMDsKLQotICAgICAg
dmFyICRvcHRpb25zID0gdGhpcy4kZWxlbWVudC5jaGlsZHJlbigpOwotICAgICAgJG9wdGlvbnMu
ZWFjaChmdW5jdGlvbiAoKSB7Ci0gICAgICAgIHZhciAkb3B0aW9uID0gJCh0aGlzKTsKLQotICAg
ICAgICBpZiAoISRvcHRpb24uaXMoJ29wdGlvbicpICYmICEkb3B0aW9uLmlzKCdvcHRncm91cCcp
KSB7Ci0gICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIG9wdGlvbiA9
IHNlbGYuaXRlbSgkb3B0aW9uKTsKLQotICAgICAgICB2YXIgbWF0Y2hlcyA9IHNlbGYubWF0Y2hl
cyhwYXJhbXMsIG9wdGlvbik7Ci0KLSAgICAgICAgaWYgKG1hdGNoZXMgIT09IG51bGwpIHsKLSAg
ICAgICAgICBkYXRhLnB1c2gobWF0Y2hlcyk7Ci0gICAgICAgIH0KLSAgICAgIH0pOwotCi0gICAg
ICBjYWxsYmFjayh7Ci0gICAgICAgIHJlc3VsdHM6IGRhdGEuc2xpY2UoKHBhcmFtcy5wYWdlIC0g
MSkgKiBwYWdlU2l6ZSwgcGFyYW1zLnBhZ2UgKiBwYWdlU2l6ZSksCi0gICAgICAgIHBhZ2luYXRp
b246IHsKLSAgICAgICAgICBtb3JlOiBkYXRhLmxlbmd0aCA+PSBwYXJhbXMucGFnZSAqIHBhZ2VT
aXplLAotICAgICAgICB9LAotICAgICAgfSk7Ci0gICAgfTsKLQotICAgIHJldHVybiBvbkRlbWFu
ZERhdGFBZGFwdGVyOwotICB9KTsKLQogICAvKgogICAgKiBOb2RlQWpheE9wdGlvbnNDb250cm9s
CiAgICAqICAgVGhpcyBjb250cm9sIHdpbGwgZmV0Y2ggdGhlIG9wdGlvbnMgcmVxdWlyZWQgdG8g
cmVuZGVyIHRoZSBzZWxlY3QKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9iYWNr
Zm9ybS5wZ2FkbWluLmpzIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2JhY2tmb3JtLnBnYWRtaW4u
anMKaW5kZXggYzUzYmU4MzJjLi44NjdkMGE2ODEgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3N0
YXRpYy9qcy9iYWNrZm9ybS5wZ2FkbWluLmpzCisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9i
YWNrZm9ybS5wZ2FkbWluLmpzCkBAIC0xMCwxMCArMTAsMTAgQEAKIGRlZmluZShbCiAgICdzb3Vy
Y2VzL2dldHRleHQnLCAndW5kZXJzY29yZScsICdqcXVlcnknLAogICAnYmFja2JvbmUnLCAnYmFj
a2Zvcm0nLCAnYmFja2dyaWQnLCAnY29kZW1pcnJvcicsICdzb3VyY2VzL3NxbGVkaXRvcl91dGls
cycsCi0gICdzb3VyY2VzL2tleWJvYXJkX3Nob3J0Y3V0cycsICdzb3VyY2VzL3dpbmRvdycsCisg
ICdzb3VyY2VzL2tleWJvYXJkX3Nob3J0Y3V0cycsICdzb3VyY2VzL3dpbmRvdycsICdzb3VyY2Vz
L3NlbGVjdDIvY29uZmlndXJlX3Nob3dfb25fc2Nyb2xsJywKICAgJ3NwZWN0cnVtJywgJ3BnYWRt
aW4uYmFja2dyaWQnLCAnc2VsZWN0MicsICdib290c3RyYXAudG9nZ2xlJywKIF0sIGZ1bmN0aW9u
KGdldHRleHQsIF8sICQsIEJhY2tib25lLCBCYWNrZm9ybSwgQmFja2dyaWQsIENvZGVNaXJyb3Is
Ci0gIFNxbEVkaXRvclV0aWxzLCBrZXlib2FyZFNob3J0Y3V0cywgcGdXaW5kb3cpIHsKKyAgU3Fs
RWRpdG9yVXRpbHMsIGtleWJvYXJkU2hvcnRjdXRzLCBwZ1dpbmRvdywgY29uZmlndXJlX3Nob3df
b25fc2Nyb2xsKSB7CiAKICAgdmFyIHBnQWRtaW4gPSAod2luZG93LnBnQWRtaW4gPSB3aW5kb3cu
cGdBZG1pbiB8fCB7fSksCiAgICAgcGdCcm93c2VyID0gcGdBZG1pbi5Ccm93c2VyOwpAQCAtMjE5
MCw3ICsyMTkwLDcgQEAgZGVmaW5lKFsKICAgICAgICAgZW1wdHlPcHRpb25zOiBmYWxzZSwKICAg
ICAgICAgcHJlc2VydmVTZWxlY3Rpb25PcmRlcjogZmFsc2UsCiAgICAgICAgIGlzRHJvcGRvd25Q
YXJlbnQ6IGZhbHNlLAotICAgICAgICBvbkRlbWFuZExvYWQ6IHRydWUsCisgICAgICAgIHNob3dP
blNjcm9sbDogdHJ1ZSwKICAgICAgIH0pOwogCiAgICAgICAvLyBFdmFsdWF0ZSB0aGUgZGlzYWJs
ZWQsIHZpc2libGUsIGFuZCByZXF1aXJlZCBvcHRpb24KQEAgLTIyNDksMTUgKzIyNDksOCBAQCBk
ZWZpbmUoWwogICAgICAgICBzZWxlY3QyT3B0cy5kYXRhID0gZGF0YS5yYXdWYWx1ZTsKICAgICAg
IH0KIAotICAgICAgLyogU2V0IHRoZSBwZ2FkbWluIGFkYXB0ZXIgZm9yIG9uIGRlbWFuZCBsb2Fk
LgotICAgICAgICogU2V0dGluZyBlbXB0eSBhamF4IG9wdGlvbiB3aWxsIGVuYWJsZSBpbmZpbml0
ZSBzY3JvbGxpbmcuCi0gICAgICAgKi8KLSAgICAgIGlmKHNlbGVjdDJPcHRzLm9uRGVtYW5kTG9h
ZCkgewotICAgICAgICBzZWxlY3QyT3B0cy5kYXRhQWRhcHRlciA9ICQuZm4uc2VsZWN0Mi5hbWQu
cmVxdWlyZSgnc2VsZWN0Mi9vbkRlbWFuZERhdGFBZGFwdGVyJyk7Ci0gICAgICAgIGlmKF8uaXNV
bmRlZmluZWQoc2VsZWN0Mk9wdHMuYWpheCkpIHsKLSAgICAgICAgICBzZWxlY3QyT3B0cy5hamF4
ID0ge307Ci0gICAgICAgIH0KLSAgICAgIH0KKyAgICAgIC8qIENvbmZpZ3VyZSBzaG93IG9uIHNj
cm9sbCBpZiByZXF1aXJlZCAqLworICAgICAgc2VsZWN0Mk9wdHMgPSBjb25maWd1cmVfc2hvd19v
bl9zY3JvbGwuZGVmYXVsdChzZWxlY3QyT3B0cyk7CiAKICAgICAgIHRoaXMuJHNlbCA9IHRoaXMu
JGVsLmZpbmQoJ3NlbGVjdCcpLnNlbGVjdDIoc2VsZWN0Mk9wdHMpOwogCmRpZmYgLS1naXQgYS93
ZWIvcGdhZG1pbi9zdGF0aWMvanMvYmFja2dyaWQucGdhZG1pbi5qcyBiL3dlYi9wZ2FkbWluL3N0
YXRpYy9qcy9iYWNrZ3JpZC5wZ2FkbWluLmpzCmluZGV4IDJmMGE4YTAxOC4uN2U4Zjk2NDhmIDEw
MDY0NAotLS0gYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvYmFja2dyaWQucGdhZG1pbi5qcworKysg
Yi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvYmFja2dyaWQucGdhZG1pbi5qcwpAQCAtOSwxMSArOSwx
MSBAQAogCiBkZWZpbmUoWwogICAnc291cmNlcy9nZXR0ZXh0JywgJ3VuZGVyc2NvcmUnLCAnanF1
ZXJ5JywgJ2JhY2tib25lJywgJ2JhY2tmb3JtJywgJ2JhY2tncmlkJywgJ2FsZXJ0aWZ5JywKLSAg
J21vbWVudCcsICdiaWdudW1iZXInLCAnc291cmNlcy91dGlscycsICdzb3VyY2VzL2tleWJvYXJk
X3Nob3J0Y3V0cycsCisgICdtb21lbnQnLCAnYmlnbnVtYmVyJywgJ3NvdXJjZXMvdXRpbHMnLCAn
c291cmNlcy9rZXlib2FyZF9zaG9ydGN1dHMnLCAnc291cmNlcy9zZWxlY3QyL2NvbmZpZ3VyZV9z
aG93X29uX3Njcm9sbCcsCiAgICdib290c3RyYXAuZGF0ZXRpbWVwaWNrZXInLCAnYmFja2dyaWQu
ZmlsdGVyJywgJ2Jvb3RzdHJhcC50b2dnbGUnLAogXSwgZnVuY3Rpb24oCiAgIGdldHRleHQsIF8s
ICQsIEJhY2tib25lLCBCYWNrZm9ybSwgQmFja2dyaWQsIEFsZXJ0aWZ5LCBtb21lbnQsIEJpZ051
bWJlciwKLSAgY29tbW9uVXRpbHMsIGtleWJvYXJkU2hvcnRjdXRzCisgIGNvbW1vblV0aWxzLCBr
ZXlib2FyZFNob3J0Y3V0cywgY29uZmlndXJlX3Nob3dfb25fc2Nyb2xsCiApIHsKICAgLyoKICAg
ICogQWRkIG1lY2hhbmlzbSBpbiBiYWNrZ3JpZCB0byByZW5kZXIgZGlmZmVyZW50IHR5cGVzIG9m
IGNlbGxzIGluCkBAIC04ODMsNyArODgzLDcgQEAgZGVmaW5lKFsKICAgICAgICAgc2VsZWN0Ml9v
cHRzID0gXy5leHRlbmQoewogICAgICAgICAgIG9wZW5PbkVudGVyOiBmYWxzZSwKICAgICAgICAg
ICBtdWx0aXBsZTogZmFsc2UsCi0gICAgICAgICAgb25EZW1hbmRMb2FkOiB0cnVlLAorICAgICAg
ICAgIHNob3dPblNjcm9sbDogdHJ1ZSwKICAgICAgICAgfSwgc2VsZi5kZWZhdWx0cy5zZWxlY3Qy
LAogICAgICAgICAoY29sLnNlbGVjdDIgfHwge30pCiAgICAgICAgICksCkBAIC05NDQsMTIgKzk0
NCw5IEBAIGRlZmluZShbCiAgICAgICAgIHNlbGVjdDJfb3B0c1sncGxhY2Vob2xkZXInXSA9ICcn
OwogICAgICAgfQogCi0gICAgICBpZihzZWxlY3QyX29wdHMub25EZW1hbmRMb2FkKSB7Ci0gICAg
ICAgIHNlbGVjdDJfb3B0cy5kYXRhQWRhcHRlciA9ICQuZm4uc2VsZWN0Mi5hbWQucmVxdWlyZSgn
c2VsZWN0Mi9vbkRlbWFuZERhdGFBZGFwdGVyJyk7Ci0gICAgICAgIGlmKF8uaXNVbmRlZmluZWQo
c2VsZWN0Ml9vcHRzLmFqYXgpKSB7Ci0gICAgICAgICAgc2VsZWN0Ml9vcHRzLmFqYXggPSB7fTsK
LSAgICAgICAgfQotICAgICAgfQorICAgICAgLyogQ29uZmlndXJlIHNob3cgb24gc2Nyb2xsIGlm
IHJlcXVpcmVkICovCisgICAgICBzZWxlY3QyX29wdHMgPSBjb25maWd1cmVfc2hvd19vbl9zY3Jv
bGwuZGVmYXVsdChzZWxlY3QyX29wdHMpOworCiAgICAgICAvLyBJbml0aWFsaXplIHNlbGVjdDIg
Y29udHJvbC4KICAgICAgIHRoaXMuJHNlbCA9IHRoaXMuJHNlbGVjdC5zZWxlY3QyKHNlbGVjdDJf
b3B0cyk7CiAKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zZWxlY3QyL2NvbmZp
Z3VyZV9zaG93X29uX3Njcm9sbC5qcyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zZWxlY3QyL2Nv
bmZpZ3VyZV9zaG93X29uX3Njcm9sbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAuLmNhMmU4MTM5ZgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9q
cy9zZWxlY3QyL2NvbmZpZ3VyZV9zaG93X29uX3Njcm9sbC5qcwpAQCAtMCwwICsxLDk3IEBACitp
bXBvcnQgJ3NlbGVjdDInOworaW1wb3J0ICQgZnJvbSAnanF1ZXJ5JzsKK2ltcG9ydCBfIGZyb20g
J3VuZGVyc2NvcmUnOworCitleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAob3B0aW9ucykgeworICBp
ZihvcHRpb25zLnNob3dPblNjcm9sbCkgeworICAgIGxldCBVdGlscyA9ICQuZm4uc2VsZWN0Mi5h
bWQucmVxdWlyZSgnc2VsZWN0Mi91dGlscycpOworCisgICAgLyogRGVmaW5lIG9uIHNjcm9sbCBz
aG93aW5nIG9mIGRyb3Bkb3duIGl0ZW1zLgorICAgICAqIFRoaXMgYWxzbyByZXF1aXJlcyBhamF4
IG9wdGlvbiBvZiBzZWxlY3QyIHRvIGJlIHNldC4KKyAgICAgKiBUaGUgdHJpY2sgaXMsIGFqYXg6
IHt9IHdpbGwgYWxzbyB3b3JrIGV2ZW4gaWYgeW91J3JlIGFjdHVhbGx5IG5vdAorICAgICAqIHVz
aW5nIGFqYXguCisgICAgICovCisgICAgbGV0IFNjcm9sbERhdGFBZGFwdGVyID0gZnVuY3Rpb24g
KCRlbGVtZW50LCBvcHRpb25zKSB7CisgICAgICBTY3JvbGxEYXRhQWRhcHRlci5fX3N1cGVyX18u
Y29uc3RydWN0b3IuY2FsbCh0aGlzLCAkZWxlbWVudCwgb3B0aW9ucyk7CisgICAgfTsKKworICAg
IGlmKG9wdGlvbnMuZGF0YSkgeworICAgICAgVXRpbHMuRXh0ZW5kKFNjcm9sbERhdGFBZGFwdGVy
LCAkLmZuLnNlbGVjdDIuYW1kLnJlcXVpcmUoJ3NlbGVjdDIvZGF0YS9hcnJheScpKTsKKyAgICB9
IGVsc2UgeworICAgICAgVXRpbHMuRXh0ZW5kKFNjcm9sbERhdGFBZGFwdGVyLCAkLmZuLnNlbGVj
dDIuYW1kLnJlcXVpcmUoJ3NlbGVjdDIvZGF0YS9zZWxlY3QnKSk7CisgICAgfQorCisgICAgU2Ny
b2xsRGF0YUFkYXB0ZXIucHJvdG90eXBlLnF1ZXJ5ID0gZnVuY3Rpb24gKHBhcmFtcywgY2FsbGJh
Y2spIHsKKyAgICAgIHZhciBkYXRhID0gW107CisgICAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAg
ICBpZiAoIXBhcmFtcy5wYWdlKSB7CisgICAgICAgIHBhcmFtcy5wYWdlID0gMTsKKyAgICAgIH0K
KyAgICAgIHZhciBwYWdlU2l6ZSA9IDIwOworCisgICAgICB2YXIgJG9wdGlvbnMgPSB0aGlzLiRl
bGVtZW50LmNoaWxkcmVuKCk7CisgICAgICAkb3B0aW9ucy5lYWNoKGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgdmFyICRvcHRpb24gPSAkKHRoaXMpOworCisgICAgICAgIGlmICghJG9wdGlvbi5pcygn
b3B0aW9uJykgJiYgISRvcHRpb24uaXMoJ29wdGdyb3VwJykpIHsKKyAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICB2YXIgb3B0aW9uID0gc2VsZi5pdGVtKCRvcHRpb24pOwor
CisgICAgICAgIHZhciBtYXRjaGVzID0gc2VsZi5tYXRjaGVzKHBhcmFtcywgb3B0aW9uKTsKKwor
ICAgICAgICBpZiAobWF0Y2hlcyAhPT0gbnVsbCkgeworICAgICAgICAgIGRhdGEucHVzaChtYXRj
aGVzKTsKKyAgICAgICAgfQorICAgICAgfSk7CisKKyAgICAgIGNhbGxiYWNrKHsKKyAgICAgICAg
cmVzdWx0czogZGF0YS5zbGljZSgocGFyYW1zLnBhZ2UgLSAxKSAqIHBhZ2VTaXplLCBwYXJhbXMu
cGFnZSAqIHBhZ2VTaXplKSwKKyAgICAgICAgcGFnaW5hdGlvbjogeworICAgICAgICAgIG1vcmU6
IGRhdGEubGVuZ3RoID49IHBhcmFtcy5wYWdlICogcGFnZVNpemUsCisgICAgICAgIH0sCisgICAg
ICB9KTsKKyAgICB9OworCisgICAgaWYgKG9wdGlvbnMubWluaW11bUlucHV0TGVuZ3RoID4gMCkg
eworICAgICAgU2Nyb2xsRGF0YUFkYXB0ZXIgPSBVdGlscy5EZWNvcmF0ZSgKKyAgICAgICAgU2Ny
b2xsRGF0YUFkYXB0ZXIsCisgICAgICAgICQuZm4uc2VsZWN0Mi5hbWQucmVxdWlyZSgnc2VsZWN0
Mi9kYXRhL21pbmltdW1JbnB1dExlbmd0aCcpCisgICAgICApOworICAgIH0KKworICAgIGlmIChv
cHRpb25zLm1heGltdW1JbnB1dExlbmd0aCA+IDApIHsKKyAgICAgIFNjcm9sbERhdGFBZGFwdGVy
ID0gVXRpbHMuRGVjb3JhdGUoCisgICAgICAgIFNjcm9sbERhdGFBZGFwdGVyLAorICAgICAgICAk
LmZuLnNlbGVjdDIuYW1kLnJlcXVpcmUoJ3NlbGVjdDIvZGF0YS9tYXhpbXVtSW5wdXRMZW5ndGgn
KQorICAgICAgKTsKKyAgICB9CisKKyAgICBpZiAob3B0aW9ucy5tYXhpbXVtU2VsZWN0aW9uTGVu
Z3RoID4gMCkgeworICAgICAgU2Nyb2xsRGF0YUFkYXB0ZXIgPSBVdGlscy5EZWNvcmF0ZSgKKyAg
ICAgICAgU2Nyb2xsRGF0YUFkYXB0ZXIsCisgICAgICAgICQuZm4uc2VsZWN0Mi5hbWQucmVxdWly
ZSgnc2VsZWN0Mi9kYXRhL21heGltdW1TZWxlY3Rpb25MZW5ndGgnKQorICAgICAgKTsKKyAgICB9
CisKKyAgICBpZiAob3B0aW9ucy50YWdzKSB7CisgICAgICBTY3JvbGxEYXRhQWRhcHRlciA9IFV0
aWxzLkRlY29yYXRlKFNjcm9sbERhdGFBZGFwdGVyLCAkLmZuLnNlbGVjdDIuYW1kLnJlcXVpcmUo
J3NlbGVjdDIvZGF0YS90YWdzJykpOworICAgIH0KKworICAgIGlmIChvcHRpb25zLnRva2VuU2Vw
YXJhdG9ycyAhPSBudWxsIHx8IG9wdGlvbnMudG9rZW5pemVyICE9IG51bGwpIHsKKyAgICAgIFNj
cm9sbERhdGFBZGFwdGVyID0gVXRpbHMuRGVjb3JhdGUoCisgICAgICAgIFNjcm9sbERhdGFBZGFw
dGVyLAorICAgICAgICAkLmZuLnNlbGVjdDIuYW1kLnJlcXVpcmUoJ3NlbGVjdDIvZGF0YS90b2tl
bml6ZXInKQorICAgICAgKTsKKyAgICB9CisKKyAgICBvcHRpb25zLmRhdGFBZGFwdGVyID0gU2Ny
b2xsRGF0YUFkYXB0ZXI7CisKKyAgICAvKiBTZXR0aW5nIGVtcHR5IGFqYXggb3B0aW9uIHdpbGwg
ZW5hYmxlIGluZmluaXRlIHNjcm9sbGluZy4gKi8KKyAgICBpZihfLmlzVW5kZWZpbmVkKG9wdGlv
bnMuYWpheCkpIHsKKyAgICAgIG9wdGlvbnMuYWpheCA9IHt9OworICAgIH0KKyAgfQorICByZXR1
cm4gb3B0aW9uczsKK30K
--00000000000008ec29059b3925d2--