[wxPython-users] question on viewlistbook

Werner F. Bruhin werner.bruhin at free.fr
Sun Aug 26 03:34:11 PDT 2007


QmVydHJhbmQsCgpCZXJ0cmFuZCBTb24gS2ludGFuYXIgd3JvdGU6Cj4KPgo+IE9uIDgvMjYvMDcs
ICpXZXJuZXIgRi4gQnJ1aGluKiA8d2VybmVyLmJydWhpbkBmcmVlLmZyIAo+IDxtYWlsdG86d2Vy
bmVyLmJydWhpbkBmcmVlLmZyPj4gd3JvdGU6Cj4KPgo+ICAgICBUaGUgd3hsb2Fkcy5weSBpbiB0
aGlzIGxhdGVzdCBwb3N0IGlzIHN0aWxsIG9ubHkgcHJpbnRpbmcgInByaW50Cj4gICAgICdPbkFk
ZERpc3RpcmJ1dG9yJyIsIGNhbiB5b3UgcmVzZW5kIGp1c3QgdGhpcyBvbmUgZmlsZS4KPgo+ICAg
ICBXZXJuZXIKPgo+Cj4gd2VsbCBpIHRoaW5rIGkgaGF2ZSB1cGxvYWRlZCB0aGUgcmlnaHQgZmls
ZS4geW91IGNhbiBhY2Nlc3MgdGhlIAo+IEFkZERpc3RyaWJ1dG9yRGlhbG9nIGluIHRoZSBBZGQg
TWVudS4gYW55d2F5IGkgaGF2ZSB1cGxvYWRlZCB0aGUgZmlsZS4KVGhlIHByb2JsZW0gSSBzZWUg
aXMgdGhhdCB5b3UgcmVjcmVhdGUgdGhlIGxpc3RjdHJsIGFsbCB0aGUgdGltZS4gIEkgCmNoYW5n
ZWQgaXQgdG8gY3JlYXRlIGEgbGlzdGN0cmwgYmFzZWQgb24gdGhlIG9wdGlvbiAoaS5lLiB1c2Ug
c2V0YXR0ciAKYW5kIGdldGF0dHIpIGFuZCBoYXZlIHR3byBmdW5jdGlvbnMgdG8gd29yayB3aXRo
IHRoZSBsaXN0Y3RybCwgb25lIGEgCkxvYWRMaXN0Y3RybCB3aGljaCBpcyB1c2VkIG9uY2UgYXQg
c3RhcnR1cCBhbmQgdGhlbiBhbiBVcGRhdGVMaXN0cmN0cmwgCndoaWNoIGp1c3QgcmVsb2FkcyB0
aGUgZGF0YSBpbnRvIHRoZSBhbHJlYWR5IGV4aXN0aW5nIGxpc3RjdHJsLgoKWW91IGRlZmluZWQg
dGhlIF9faW5pdF9fIGZvciB3eC5BcHAsIEkgZG9uJ3QgdGhpbmsgeW91IHdhbnQgdG8gZG8gdGhp
cywgCm9yIGlmIHlvdSBkbyB0aGVuIHlvdSBzaG91bGQgc3VwcG9ydCBhbGwgdGhlIHBhcmFtZXRl
cnMuICBJIHVzZSBCb2Egc28gSSAKcHJlZmVyIHRoYXQgZXhjZXB0aW9ucyBnZXQgdG8gQm9hIHdo
aWNoIHRoZW4gYWxsb3dzIG1lIHRvIGp1c3QgY2xpY2sgb24gCnRoZSBhcHByb3ByaWF0ZSBsaW5l
IHRvIGp1bXAgaW50byB0aGUgc291cmNlIGxpbmUuCgpXZXJuZXIKLS0tLS0tLS0tLS0tLS0gbmV4
dCBwYXJ0IC0tLS0tLS0tLS0tLS0tCiMhL3Vzci9iaW4vZW52IHB5dGhvbgoKIyAtKi0gY29kaW5n
OiBpc28tODg1OS0xNSAtKi0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTmFtZSAgICAgIDogICB3
eFB5bG9hZHMucHkKIyBQcm9qZWN0ICAgOiAgIGxvYWRzCiMgUHVycG9zZSAgIDogICBmcm9udCBl
bmQgZmlsZSBvZiBweWxvYWRzLnB5CiMKIyBBdXRob3IgICAgOiAgIEJlcnRyYW5kIFNvbiBLaW50
YW5hciA8cHlsb2Fkc0BsaW51eC5iM3J4LmNvbT4KIwojIENvcHlyaWdodCA6ICAgKGMpIDIwMDcg
YnkgYjNyeCBUZWNobm9sb2dpZXMsIEluYy4KIyBMaWNlbmNlICAgOiAgIEdQTAojLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQoKaW1wb3J0IHN5cwoKaW1wb3J0IHd4dmVyc2lvbgp3eHZlcnNpb24uZW5zdXJl
TWluaW1hbCAoICcyLjgnICkKCmltcG9ydCB3eApmcm9tIHd4LmxpYi5taXhpbnMuaW5zcGVjdGlv
biBpbXBvcnQgSW5zcGVjdGlvbk1peGluCmZyb20gd3gubGliLndvcmR3cmFwIGltcG9ydCB3b3Jk
d3JhcAoKaW1wb3J0IHB5bG9hZHMKZnJvbSBfX3ZlcnNpb25fXyBpbXBvcnQgcHJvZ3JhbSwgdmVy
c2lvbiwgY29weXJpZ2h0CmZyb20gZW4gICAgICAgICAgaW1wb3J0IGxpY2Vuc2UsIGRlc2NyaXB0
aW9uCgpsaXN0Ym9va0l0ZW1zID0gWyAnTG9hZHMnLCAnTG9hZCBUeXBlcycsICdMb2FkIFN0YXR1
cycsICdEaXN0cmlidXRvcnMnIF0KCmRlYnVnID0gVHJ1ZQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
CmNsYXNzIEZyYW1lICggd3guRnJhbWUgKToKICAgIAogICAgZGVmIF9faW5pdF9fICggc2VsZiwg
cGFyZW50LCBpZCwgdGl0bGUgKToKICAgICAgICAKICAgICAgICAgICAgd3guRnJhbWUuX19pbml0
X18gKCBzZWxmLCBwYXJlbnQsIGlkLCB0aXRsZSApCiAgICAgICAgICAgIHNlbGYuTWF4aW1pemUo
KQogICAgICAgICAgICAKY2xhc3Mgd3hMb2FkcyAoIHd4LkFwcCwgSW5zcGVjdGlvbk1peGluICk6
CiMjICAgIGRlZiBfX2luaXRfXyAoIHNlbGYgKToKIyMgICAgICAgIAojIyAgICAgICAgd3guQXBw
Ll9faW5pdF9fICggc2VsZiApCiAgICAgICAgCiAgICBkZWYgT25Jbml0ICggc2VsZiApOgogICAg
ICAgIEluc3BlY3Rpb25NaXhpbi5Jbml0ICggc2VsZiApCiAgICAgICAgc2VsZi5mcmFtZSA9IEZy
YW1lICggcGFyZW50ID0gTm9uZSwgaWQgPSAtMSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGl0bGUgPSBwcm9ncmFtICsgJy0nICsgdmVyc2lvbiApCiAgICAgICAgCiAgICAgICAgc2Vs
Zi5jcmVhdGVNZW51QmFyKCkKICAgICAgICBzZWxmLmNyZWF0ZVN0YXR1c0JhcigpCiAgICAgICAg
c2VsZi5jcmVhdGVQYW5lbCgpCiAgICAgICAgc2VsZi5mcmFtZS5TaG93KCkKICAgICAgICAKICAg
ICAgICBzZWxmLlNldFRvcFdpbmRvdyAoIHNlbGYuZnJhbWUgKQogICAgICAgIAogICAgICAgIHJl
dHVybiBUcnVlCiAgICAKICAgIGRlZiBjcmVhdGVQYW5lbCAoIHNlbGYgKToKICAgICAgICAKICAg
ICAgICBzZWxmLnZpZXdMaXN0Ym9vayA9IFZpZXdMaXN0Ym9vayAoIHNlbGYuZnJhbWUsIHd4Lk5l
d0lkKCkgKQogICAgICAgIAogICAgICAgIGJveCA9IHd4LkJveFNpemVyICggd3guSE9SSVpPTlRB
TCApCiAgICAgICAgYm94LkFkZCAoIHNlbGYudmlld0xpc3Rib29rLCAxLCB3eC5FWFBBTkQgKQog
ICAgICAgIAogICAgICAgIHNlbGYuZnJhbWUuU2V0U2l6ZXIgKCBib3ggKQogICAgICAgIAogICAg
IyMgRGF0YSBvZiB0aGUgd3hMb2FkcyBNZW51CiAgICBkZWYgbWVudURhdGEgKCBzZWxmICk6CiAg
ICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgKCcmRmlsZScsICgKICAgICAgICAgICAgICAgICgg
JycsICcnLCAnJywgJycgKSwKICAgICAgICAgICAgICAgICggJyZRdWl0JywgJ1F1aXQnLCBzZWxm
Lk9uUXVpdCwgd3guSURfRVhJVCApICkgKSwKICAgICAgICAgICAgKCAnJkFkZCcsICgKICAgICAg
ICAgICAgICAgICggJyZMb2FkXHRDVFJMLUwnLCAnQWRkIGEgbG9hZCB0byB0aGUgZGF0YWJhc2Un
LAogICAgICAgICAgICAgICAgICBzZWxmLk9uQWRkTG9hZCwgd3guTmV3SWQoKSApLAogICAgICAg
ICAgICAgICAgKCAnTG9hZCAmVHlwZVx0Q1RSTC1UJywgJ0FkZCBhIGxvYWQgdHlwZSB0byB0aGUg
ZGF0YWJhc2UnLAogICAgICAgICAgICAgICAgICBzZWxmLk9uQWRkTG9hZFR5cGUsIHd4Lk5ld0lk
KCkgKSwKICAgICAgICAgICAgICAgICggJ0xvYWQgJlN0YXR1c1x0Q1RSTC1TJywgJ0FkZCBhIGxv
YWQgc3RhdHVzIHRvIHRoZSBkYXRhYmFzZScsCiAgICAgICAgICAgICAgICAgIHNlbGYuT25BZGRM
b2FkU3RhdHVzLCB3eC5OZXdJZCgpICksCiAgICAgICAgICAgICAgICAoICcnLCAnJywgJycsICcn
ICksCiAgICAgICAgICAgICAgICAoICdEaXN0cmlidXRvclx0Q1RSTC1EJywgJ0FkZCBhIGRpc3Ry
aWJ1dG9yIHRvIHRoZSBkYXRhYmFzZScsCiAgICAgICAgICAgICAgICAgIHNlbGYuT25BZGREaXN0
cmlidXRvciwgd3guTmV3SWQoKSApICkgKSAsCiAgICAgICAgICAgICggJyZIZWxwJywgKAogICAg
ICAgICAgICAgICAgKCAnJywgJycsICcnLCAnJyApLAogICAgICAgICAgICAgICAgKCAnJkFib3V0
ICcgKyBwcm9ncmFtLCAnQWJvdXQgJyArIHByb2dyYW0gKyAnLScgKyB2ZXJzaW9uLAogICAgICAg
ICAgICAgICAgICBzZWxmLk9uQWJvdXQsIHd4LklEX0FCT1VUICkgKSApCiAgICAgICAgXQogICAg
CiAgICAjIyBGdW5jdGlvbiB0byBjcmVhdGUgdGhlIG1lbnViYXIKICAgIGRlZiBjcmVhdGVNZW51
QmFyICggc2VsZiApOgogICAgICAgIAogICAgICAgIG1lbnVCYXIgPSB3eC5NZW51QmFyKCkKICAg
ICAgICAKICAgICAgICBmb3IgZWFjaE1lbnVEYXRhIGluIHNlbGYubWVudURhdGEoKToKICAgICAg
ICAgICAgCiAgICAgICAgICAgIG1lbnVMYWJlbCA9IGVhY2hNZW51RGF0YVswXQogICAgICAgICAg
ICBtZW51SXRlbXMgPSBlYWNoTWVudURhdGFbMV0KICAgICAgICAgICAgCiAgICAgICAgICAgIG1l
bnVCYXIuQXBwZW5kICggc2VsZi5jcmVhdGVNZW51ICggbWVudUl0ZW1zICksIG1lbnVMYWJlbCAp
CiAgICAgICAgICAgIAogICAgICAgICAgICBzZWxmLmZyYW1lLlNldE1lbnVCYXIgKCBtZW51QmFy
ICkKICAgICAgICAgICAgCiAgICAjIyBGdW5jdGlvbiB0byBjcmVhdGUgYSBtZW51CiAgICBkZWYg
Y3JlYXRlTWVudSAoIHNlbGYsIG1lbnVEYXRhICk6CiAgICAgICAgCiAgICAgICAgbWVudSA9IHd4
Lk1lbnUoKQogICAgICAgIAogICAgICAgIGZvciBlYWNoSXRlbSBpbiBtZW51RGF0YToKICAgICAg
ICAgICAgCiAgICAgICAgICAgIGlmIGxlbiAoIGVhY2hJdGVtICkgPT0gMjoKICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgbGFiZWwgPSBlYWNoSXRlbVswXQogICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICBzdWJNZW51ID0gc2VsZi5jcmVhdGVNZW51ICggZWFjaEl0ZW1bMV0g
KQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBtZW51LkFwcGVuZE1lbnUgKCB3eC5O
ZXdJZCgpLCBsYWJlbCwgc3ViTWVudSApCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgZWxz
ZToKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgc2VsZi5jcmVhdGVNZW51SXRlbSAo
IG1lbnUsICplYWNoSXRlbSApCiAgICAgICAgICAgICAgICAKICAgICAgICByZXR1cm4gbWVudQog
ICAgCiAgICBkZWYgY3JlYXRlTWVudUl0ZW0gKCBzZWxmLCBtZW51LCBsYWJlbCwgc3RhdHVzLCBo
YW5kbGVyLCAKICAgICAgICAgICAgICAgICAgICAgICAgIGlkLCBraW5kPXd4LklURU1fTk9STUFM
ICk6CiAgICAgICAgCiAgICAgICAgaWYgbm90IGxhYmVsOgogICAgICAgICAgICAKICAgICAgICAg
ICAgbWVudS5BcHBlbmRTZXBhcmF0b3IoKQogICAgICAgICAgICAKICAgICAgICAgICAgcmV0dXJu
CiAgICAgICAgCiAgICAgICAgbWVudUl0ZW0gPSBtZW51LkFwcGVuZCAoIGlkLCBsYWJlbCwgc3Rh
dHVzLCBraW5kICkKICAgICAgICBzZWxmLkJpbmQgKCB3eC5FVlRfTUVOVSwgaGFuZGxlciwgbWVu
dUl0ZW0gKQogICAgICAgIAogICAgZGVmIGNyZWF0ZVN0YXR1c0JhciAoIHNlbGYgKToKICAgICAg
ICAKICAgICAgICBzdGF0dXNiYXIgPSBzZWxmLmZyYW1lLkNyZWF0ZVN0YXR1c0JhciAoIG51bWJl
cj0xICkKICAgICAgICBzdGF0dXNiYXIuU2V0U3RhdHVzVGV4dCAoICdXZWxjb21lIHRvICcgKyBw
cm9ncmFtICsgJy0nICsgdmVyc2lvbiwgMCApCiAgICAgICAgCiAgICAgICAgIyMgU2V0cyB0aGUg
c3RhdHVzIGJhcgogICAgICAgIHNlbGYuZnJhbWUuU2V0U3RhdHVzQmFyICggc3RhdHVzYmFyICkK
ICAgICAgICAKICAgICMjIEV2ZW50TGlzdGVuZXJzCiAgICBkZWYgT25BZGREaXN0cmlidXRvciAo
IHNlbGYsIGV2ZW50ICk6CiAgICAgICAgaWYgZGVidWcgPT0gVHJ1ZToKICAgICAgICAgICAgcHJp
bnQgJ09uQWRkRGlzdHJpYnV0b3InCiAgICAgICAgCiAgICAgICAgZGxnID0gQWRkRGlzdHJpYnV0
b3JEaWFsb2coc2VsZi5mcmFtZSwgLTEsICdBZGQgRGlzdHJpYnV0b3IgRGlhbG9nJywgCiAgICAg
ICAgICAgICAgICBzaXplPSgzNTAsIDIwMCksIHN0eWxlPXd4LkRFRkFVTFRfRElBTE9HX1NUWUxF
LCkKICAgICAgICBkbGcuQ2VudGVyT25TY3JlZW4oKQogICAgICAgIAogICAgICAgIHZhbCA9IGRs
Zy5TaG93TW9kYWwoKQogICAgCiAgICAgICAgaWYgdmFsID09IHd4LklEX09LOgogICAgICAgICAg
ICAKICAgICAgICAgICAgZGlzdCA9IGRsZy5HZXRWYWx1ZSgpCiAgICAgICAgICAgIAogICAgICAg
ICAgICAjIyBJbnNlcnRzIHRvIGRhdGFiYXNlIHJldHVybnMgYSBub24temVybyBkaWdpdCBpZiBp
bnNlcnRpb24gZmFpbHMKICAgICAgICAgICAgc3FsX2Vycm9yX2NvZGUgPSBweWxvYWRzLnNxbC5p
bnNlcnREaXN0cmlidXRvcihweWxvYWRzLmRiLCBkaXN0KQogICAgICAgICAgICAKICAgICAgICAg
ICAgaWYgc3FsX2Vycm9yX2NvZGUgPT0gMDoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgaW5mb0RsZyA9IHd4Lk1lc3NhZ2VEaWFsb2coTm9uZSwgcHlsb2Fkcy5lbi5TVUNDRVNTXzIg
JSAKICAgICAgICAgICAgICAgICAgICAoIGRpc3RbMV0sIGRpc3RbMF0gKSwgJ1N1Y2Nlc3MnLCAK
ICAgICAgICAgICAgICAgICAgICB3eC5ZRVNfREVGQVVMVCB8IHd4LklDT05fSU5GT1JNQVRJT04g
KQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBpbmZvRGxnLlNob3dNb2RhbCgpCiAg
ICAgICAgICAgICAgICBzZWxmLnZpZXdMaXN0Ym9vay52aWV3RGlzdHJpYnV0b3JzUGFuZWwuVXBk
YXRlTGlzdEN0cmwoJ2Rpc3QnKQogICAgICAgICAgICAgICAgaW5mb0RsZy5EZXN0cm95KCkKICAg
ICAgICAgICAgICAgIAogICAgICAgIGRsZy5EZXN0cm95KCkKICAgICAgICAKICAgIGRlZiBPbkFk
ZExvYWRUeXBlICggc2VsZiwgZXZlbnQgKToKICAgICAgICBpZiBkZWJ1ZyA9PSBUcnVlOgogICAg
ICAgICAgICBwcmludCAnT25BZGRMb2FkVHlwZScKICAgIGRlZiBPbkFkZExvYWRTdGF0dXMgKCBz
ZWxmLCBldmVudCApOgogICAgICAgIAogICAgICAgIGlmIGRlYnVnID09IFRydWU6CiAgICAgICAg
ICAgIHByaW50ICdPbkFkZExvYWRTdGF0dXMnCiAgICAgICAgICAgIAogICAgICAgIGRsZyA9IEFk
ZFN0YXR1c0RpYWxvZyhzZWxmLmZyYW1lLCAtMSwgJ0FkZCBMb2FkIFN0YXR1cyBEaWFsb2cnLAog
ICAgICAgICAgICAgICAgc2l6ZT0oMzUwLCAyMDApLCBzdHlsZT13eC5ERUZBVUxUX0RJQUxPR19T
VFlMRSwgKQogICAgICAgIAogICAgICAgIGRsZy5DZW50ZXJPblBhcmVudCgpCiAgICAgICAgCiAg
ICAgICAgdmFsID0gZGxnLlNob3dNb2RhbCgpCiAgICAgICAgCiAgICAgICAgaWYgdmFsID09IHd4
LklEX09LOgogICAgICAgICAgICAKICAgICAgICAgICAgcmVzdWx0ID0gZGxnLkdldFZhbHVlKCkK
ICAgICAgICAgICAgCiAgICAgICAgICAgICMjIEluc2VydHMgdG8gZGF0YWJhc2UgcmV0dXJucyBh
IG5vbi16ZXJvIGRpZ2l0IGlmIGluc2VydGlvbiBmYWlscwogICAgICAgICAgICBzcWxfZXJyb3Jf
Y29kZSA9IHB5bG9hZHMuc3FsLmluc2VydExvYWRTdGF0dXMocHlsb2Fkcy5kYiwgcmVzdWx0KQog
ICAgICAgICAgICAKICAgICAgICAgICAgaWYgc3FsX2Vycm9yX2NvZGUgPT0gMDoKICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgaW5mb0RsZyA9IHd4Lk1lc3NhZ2VEaWFsb2coTm9uZSwg
cHlsb2Fkcy5lbi5TVUNDRVNTXzEgJSAKICAgICAgICAgICAgICAgICAgICByZXN1bHQsICdTdWNj
ZXNzJywgCiAgICAgICAgICAgICAgICAgICAgd3guWUVTX0RFRkFVTFQgfCB3eC5JQ09OX0lORk9S
TUFUSU9OICkKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgaW5mb0RsZy5TaG93TW9k
YWwoKQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAjc2VsZi52aWV3TGlzdGJvb2su
dmlld0xvYWRTdGF0dXNQYW5lbC5VcGRhdGVMaXN0Q3RybCgnc3RhdHVzJykKICAgICAgICAgICAg
ICAgICNzZWxmLnZpZXdMaXN0Ym9vay52aWV3TG9hZFN0YXR1c1BhbmVsLmxpc3RDdHJsLkNsZWFy
QWxsKCkKICAgICAgICAgICAgICAgIHNlbGYudmlld0xpc3Rib29rLnZpZXdMb2FkU3RhdHVzUGFu
ZWwuVXBkYXRlTGlzdEN0cmwoJ3N0YXR1cycpCiAgICAgICAgICAgICAgICBpbmZvRGxnLkRlc3Ry
b3koKQogICAgICAgIGRsZy5EZXN0cm95KCkKICAgICAgICAKICAgIGRlZiBPbkFkZExvYWQgKCBz
ZWxmLCBldmVudCApOgogICAgICAgIAogICAgICAgIGlmIGRlYnVnID09IFRydWU6CiAgICAgICAg
ICAgIHByaW50ICdPbkFkZExvYWQnCiAgICAgICAgICAgIAogICAgZGVmIE9uQWJvdXQgKCBzZWxm
LCBldmVudCApOgogICAgICAgIAogICAgICAgIGlmIGRlYnVnID09IFRydWU6CiAgICAgICAgICAg
IHByaW50ICdPbkFib3V0JwogICAgICAgIAogICAgICAgIGluZm8gPSB3eC5BYm91dERpYWxvZ0lu
Zm8oKQogICAgICAgIGluZm8uTmFtZSA9IHByb2dyYW0KICAgICAgICBpbmZvLlZlcnNpb24gPSB2
ZXJzaW9uCiAgICAgICAgaW5mby5Db3B5cmlnaHQgPSBjb3B5cmlnaHQKICAgICAgICBpbmZvLkRl
c2NyaXB0aW9uID0gd29yZHdyYXAgKCBkZXNjcmlwdGlvbiwgMzUwLCB3eC5DbGllbnREQyAoIHNl
bGYuZnJhbWUgKSApCiAgICAgICAgaW5mby5XZWJTaXRlID0gKCAnaHR0cDovL2xpbnV4LmIzcngu
Y29tLycsIHByb2dyYW0gKyAnIGhvbWUgcGFnZScgKQogICAgICAgIGluZm8uRGV2ZWxvcGVycyA9
IFsgJ0JlcnRyYW5kIFNvbiBLaW50YW5hciA8YWRtaW5AbGludXguYjNyeC5jb20+JyBdCiAgICAg
ICAgaW5mby5Eb2NXcml0ZXJzID0gWyAnQmVydHJhbmQgU29uIEtpbnRhbmFyIDxhZG1pbkBsaW51
eC5iM3J4LmNvbT4nIF0KICAgICAgICBpbmZvLkxpY2Vuc2UgPSB3b3Jkd3JhcCAoIGxpY2Vuc2Us
IDcwMCwgd3guQ2xpZW50REMgKCBzZWxmLmZyYW1lICkgKQogICAgICAgIAogICAgICAgIHd4LkFi
b3V0Qm94KGluZm8pCiAgICAgICAgCiAgICBkZWYgT25RdWl0ICggc2VsZiwgZXZlbnQgKToKICAg
ICAgICAKICAgICAgICBpZiBkZWJ1ZyA9PSBUcnVlOgogICAgICAgICAgICBwcmludCAnT25RdWl0
JwogICAgICAgIApjbGFzcyBBZGRTdGF0dXNEaWFsb2cgKCB3eC5EaWFsb2cgKToKICAgIAogICAg
ZGVmIF9faW5pdF9fICgKICAgICAgICAgICAgc2VsZiwgcGFyZW50LCBJRCwgdGl0bGUsIHNpemU9
d3guRGVmYXVsdFNpemUsIHBvcz13eC5EZWZhdWx0UG9zaXRpb24sCiAgICAgICAgICAgIHN0eWxl
PXd4LkRFRkFVTFRfRElBTE9HX1NUWUxFLAogICAgICAgICAgICB1c2VNZXRhbD1GYWxzZSwKICAg
ICAgICAgICAgKToKICAgICAgICAKICAgICAgICBwcmUgPSB3eC5QcmVEaWFsb2coKQogICAgICAg
IHByZS5TZXRFeHRyYVN0eWxlKHd4LkRJQUxPR19FWF9DT05URVhUSEVMUCkKICAgICAgICBwcmUu
Q3JlYXRlKHBhcmVudCwgSUQsIHRpdGxlLCBwb3MsIHNpemUsIHN0eWxlKQogICAgICAgIAogICAg
ICAgIHNlbGYuUG9zdENyZWF0ZShwcmUpCiAgICAgICAgCiAgICAgICAgc2l6ZXIgPSB3eC5Cb3hT
aXplcih3eC5WRVJUSUNBTCkKICAgICAgICAKICAgICAgICBzZWxmLnRvcExhYmVsID0gd3guU3Rh
dGljVGV4dCAoc2VsZiwgLTEsICdMb2FkIFN0YXR1cyBJbmZvcm1hdGlvbicpCiAgICAgICAgc2Vs
Zi50b3BMYWJlbC5TZXRGb250KHd4LkZvbnQoMTgsIHd4LlNXSVNTLCB3eC5OT1JNQUwsIHd4LkJP
TEQpKQogICAgICAgIAogICAgICAgIHNlbGYuc3RhdHVzTmFtZUxhYmVsID0gd3guU3RhdGljVGV4
dChzZWxmLCAtMSwgJ1N0YXR1cyBOYW1lOicpCiAgICAgICAgc2VsZi5zdGF0dXNOYW1lVGV4dEN0
cmwgPSB3eC5UZXh0Q3RybChzZWxmLCAtMSwgJycsIHNpemU9KDgwLCAtMSkpCiAgICAgICAgc2Vs
Zi5zdGF0dXNOYW1lVGV4dEN0cmwuU2V0SGVscFRleHQoJ1N0YXR1cyBuYW1lIG9mIHRoZSBsb2Fk
IHlvdSB3aXNoIHRvIGFkZC4nKQogICAgICAgIAogICAgICAgIHNpemVyLkFkZChzZWxmLnRvcExh
YmVsLCAwLCB3eC5BTEwsIDUpCiAgICAgICAgc2l6ZXIuQWRkKHd4LlN0YXRpY0xpbmUoc2VsZiks
IDAsIHd4LkVYUEFORHx3eC5UT1B8d3guQk9UVE9NLCA1KQogICAgICAgIAogICAgICAgIHN0YXR1
c05hbWVCb3ggPSB3eC5Cb3hTaXplcih3eC5IT1JJWk9OVEFMKQogICAgICAgIHN0YXR1c05hbWVC
b3guQWRkKHNlbGYuc3RhdHVzTmFtZUxhYmVsLCAwLCB3eC5BTElHTl9DRU5URVJ8IHd4LkFMTCwg
NSkKICAgICAgICBzdGF0dXNOYW1lQm94LkFkZChzZWxmLnN0YXR1c05hbWVUZXh0Q3RybCwgMSwg
d3guQUxJR05fQ0VOVEVSfCB3eC5BTEwsIDUpCiAgICAgICAgCiAgICAgICAgc2l6ZXIuQWRkKHN0
YXR1c05hbWVCb3gsIDAsIHd4LkdST1d8d3guQUxJR05fQ0VOVEVSX1ZFUlRJQ0FMfHd4LkFMTCwg
NSkKICAgICAgICAKICAgICAgICBzaXplci5BZGQod3guU3RhdGljTGluZShzZWxmKSwgMCwgd3gu
RVhQQU5EfHd4LlRPUHx3eC5CT1RUT00sIDUpCiAgICAgICAgCiAgICAgICAgYnRuc2l6ZXIgPSB3
eC5TdGREaWFsb2dCdXR0b25TaXplcigpCiAgICAgICAgCiAgICAgICAgYnRuID0gd3guQnV0dG9u
KHNlbGYsIHd4LklEX09LKQogICAgICAgIGJ0bi5TZXRIZWxwVGV4dCgnVGhlIE9LIGJ1dHRvbiBj
b21wbGV0ZXMgdGhlIGRpYWxvZycpCiAgICAgICAgYnRuLlNldERlZmF1bHQoKQogICAgICAgIGJ0
bnNpemVyLkFkZEJ1dHRvbihidG4pCgogICAgICAgIGJ0biA9IHd4LkJ1dHRvbihzZWxmLCB3eC5J
RF9DQU5DRUwpCiAgICAgICAgYnRuLlNldEhlbHBUZXh0KCdUaGUgQ2FuY2VsIGJ1dHRvbiBjbmFj
ZWxzIHRoZSBkaWFsb2cuJykKICAgICAgICAKICAgICAgICBidG5zaXplci5BZGRCdXR0b24oYnRu
KQogICAgICAgIGJ0bnNpemVyLlJlYWxpemUoKQoKICAgICAgICBzaXplci5BZGQoYnRuc2l6ZXIs
IDAsIHd4LkFMSUdOX1JJR0hUfHd4LkFMTCwgNSkKICAgICAgICAKICAgICAgICBzZWxmLlNldFNp
emVyKHNpemVyKQogICAgICAgIHNpemVyLkZpdChzZWxmKQogICAgICAgIAogICAgICAgIHNlbGYu
c3RhdHVzTmFtZVRleHRDdHJsLlNldEZvY3VzKCkKICAgICAgICAKICAgIGRlZiBHZXRWYWx1ZShz
ZWxmKToKICAgICAgICAKICAgICAgICByZXR1cm4gc2VsZi5zdGF0dXNOYW1lVGV4dEN0cmwuR2V0
VmFsdWUoKQogICAgCmNsYXNzIEFkZERpc3RyaWJ1dG9yRGlhbG9nICggd3guRGlhbG9nICk6CiAg
ICAKICAgIGRlZiBfX2luaXRfXygKICAgICAgICAgICAgc2VsZiwgcGFyZW50LCBJRCwgdGl0bGUs
IHNpemU9d3guRGVmYXVsdFNpemUsIHBvcz13eC5EZWZhdWx0UG9zaXRpb24sIAogICAgICAgICAg
ICBzdHlsZT13eC5ERUZBVUxUX0RJQUxPR19TVFlMRSwKICAgICAgICAgICAgdXNlTWV0YWw9RmFs
c2UsCiAgICAgICAgICAgICk6CiAgICAgICAgCiAgICAgICAgcHJlID0gd3guUHJlRGlhbG9nKCkK
ICAgICAgICBwcmUuU2V0RXh0cmFTdHlsZSh3eC5ESUFMT0dfRVhfQ09OVEVYVEhFTFApCiAgICAg
ICAgcHJlLkNyZWF0ZShwYXJlbnQsIElELCB0aXRsZSwgcG9zLCBzaXplLCBzdHlsZSkKICAgICAg
ICAKICAgICAgICBzZWxmLlBvc3RDcmVhdGUocHJlKQogICAgICAgIAogICAgICAgIHNpemVyID0g
d3guQm94U2l6ZXIod3guVkVSVElDQUwpCiAgICAgICAgCiAgICAgICAgc2VsZi50b3BMYmwgPSB3
eC5TdGF0aWNUZXh0KHNlbGYsIC0xLCAnRGlzdHJpYnV0b3JcJ3MgSW5mb3JtYXRpb24nKQogICAg
ICAgIHNlbGYudG9wTGJsLlNldEZvbnQod3guRm9udCgxOCwgd3guU1dJU1MsIHd4Lk5PUk1BTCwg
d3guQk9MRCkpCiAgICAgICAgCiAgICAgICAgc2VsZi5maXJzdE5hbWVMYWJlbCA9IHd4LlN0YXRp
Y1RleHQoc2VsZiwgLTEsICdGaXJzdCBOYW1lOicpCiAgICAgICAgc2VsZi5maXJzdE5hbWVUZXh0
Q3RybCA9IHd4LlRleHRDdHJsKHNlbGYsIC0xLCAnJywgc2l6ZT0oODAsLTEpKQogICAgICAgIHNl
bGYuZmlyc3ROYW1lVGV4dEN0cmwuU2V0SGVscFRleHQoJ0ZpcnN0IG5hbWUgb2YgdGhlIGRpc3Ry
aWJ1dG9yIHlvdSB3aXNoIHRvIGFkZC4nKQogICAgICAgIAogICAgICAgIHNlbGYubGFzdE5hbWVM
YWJlbCA9IHd4LlN0YXRpY1RleHQoc2VsZiwgLTEsICdMYXN0IE5hbWU6JykKICAgICAgICBzZWxm
Lmxhc3ROYW1lVGV4dEN0cmwgPSB3eC5UZXh0Q3RybChzZWxmLCAtMSwgJycsIHNpemU9KDgwLC0x
KSkKICAgICAgICBzZWxmLmxhc3ROYW1lVGV4dEN0cmwuU2V0SGVscFRleHQoJ0xhc3QgbmFtZSBv
ZiB0aGUgZGlzdHJpYnV0b3IgeW91IHdpc2ggdG8gYWRkLicpCiAgICAgICAgCiAgICAgICAgc2l6
ZXIuQWRkKHNlbGYudG9wTGJsLCAwLCB3eC5BTEwsIDUpCiAgICAgICAgc2l6ZXIuQWRkKHd4LlN0
YXRpY0xpbmUoc2VsZiksIDAsIHd4LkVYUEFORHx3eC5UT1B8d3guQk9UVE9NLCA1KQogICAgICAg
IAogICAgICAgIGZpcnN0TmFtZUJveCA9IHd4LkJveFNpemVyKHd4LkhPUklaT05UQUwpCiAgICAg
ICAgZmlyc3ROYW1lQm94LkFkZChzZWxmLmZpcnN0TmFtZUxhYmVsLCAwLCB3eC5BTElHTl9DRU5U
UkV8d3guQUxMLCA1KQogICAgICAgIGZpcnN0TmFtZUJveC5BZGQoc2VsZi5maXJzdE5hbWVUZXh0
Q3RybCwgMSwgd3guQUxJR05fQ0VOVFJFfHd4LkFMTCwgNSkKICAgICAgICAKICAgICAgICBsYXN0
TmFtZUJveCA9IHd4LkJveFNpemVyKHd4LkhPUklaT05UQUwpCiAgICAgICAgbGFzdE5hbWVCb3gu
QWRkKHNlbGYubGFzdE5hbWVMYWJlbCwgMCwgd3guQUxJR05fQ0VOVFJFfHd4LkFMTCwgNSkKICAg
ICAgICBsYXN0TmFtZUJveC5BZGQoc2VsZi5sYXN0TmFtZVRleHRDdHJsLCAxLCB3eC5BTElHTl9D
RU5UUkV8d3guQUxMLCA1KQogICAgICAgIAogICAgICAgIHNpemVyLkFkZChmaXJzdE5hbWVCb3gs
IDAsIHd4LkdST1d8d3guQUxJR05fQ0VOVEVSX1ZFUlRJQ0FMfHd4LkFMTCwgNSkKICAgICAgICBz
aXplci5BZGQobGFzdE5hbWVCb3gsIDAsIHd4LkdST1d8d3guQUxJR05fQ0VOVEVSX1ZFUlRJQ0FM
fHd4LkFMTCwgNSkKICAgICAgICAKICAgICAgICBzaXplci5BZGQod3guU3RhdGljTGluZShzZWxm
KSwgMCwgd3guRVhQQU5EfHd4LlRPUHx3eC5CT1RUT00sIDUpCiAgICAgICAgCiAgICAgICAgYnRu
c2l6ZXIgPSB3eC5TdGREaWFsb2dCdXR0b25TaXplcigpCiAgICAgICAgCiAgICAgICAgYnRuID0g
d3guQnV0dG9uKHNlbGYsIHd4LklEX09LKQogICAgICAgIGJ0bi5TZXRIZWxwVGV4dCgnVGhlIE9L
IGJ1dHRvbiBjb21wbGV0ZXMgdGhlIGRpYWxvZycpCiAgICAgICAgYnRuLlNldERlZmF1bHQoKQog
ICAgICAgIGJ0bnNpemVyLkFkZEJ1dHRvbihidG4pCgogICAgICAgIGJ0biA9IHd4LkJ1dHRvbihz
ZWxmLCB3eC5JRF9DQU5DRUwpCiAgICAgICAgYnRuLlNldEhlbHBUZXh0KCdUaGUgQ2FuY2VsIGJ1
dHRvbiBjbmFjZWxzIHRoZSBkaWFsb2cuJykKICAgICAgICAKICAgICAgICBidG5zaXplci5BZGRC
dXR0b24oYnRuKQogICAgICAgIGJ0bnNpemVyLlJlYWxpemUoKQoKICAgICAgICBzaXplci5BZGQo
YnRuc2l6ZXIsIDAsIHd4LkFMSUdOX1JJR0hUfHd4LkFMTCwgNSkKICAgICAgICAKICAgICAgICBz
ZWxmLlNldFNpemVyKHNpemVyKQogICAgICAgIHNpemVyLkZpdChzZWxmKQogICAgICAgIAogICAg
ICAgIHNlbGYuZmlyc3ROYW1lVGV4dEN0cmwuU2V0Rm9jdXMoKQogICAgICAgIAogICAgZGVmIEdl
dFZhbHVlKHNlbGYpOgogICAgICAgIAogICAgICAgIGxpc3QgPSBbXQogICAgICAgIAogICAgICAg
IGxpc3QuYXBwZW5kKHNlbGYuZmlyc3ROYW1lVGV4dEN0cmwuR2V0VmFsdWUoKSkKICAgICAgICBs
aXN0LmFwcGVuZChzZWxmLmxhc3ROYW1lVGV4dEN0cmwuR2V0VmFsdWUoKSkKICAgICAgICAKICAg
ICAgICByZXR1cm4gbGlzdAoKY2xhc3MgVmlld0xpc3Rib29rICggd3guTGlzdGJvb2sgKToKICAg
IAogICAgZGVmIF9faW5pdF9fICggc2VsZiwgcGFyZW50LCBpZCApOgogICAgICAgIAogICAgICAg
IHd4Lkxpc3Rib29rLl9faW5pdF9fICggc2VsZiwgcGFyZW50LCBpZCwgc2l6ZT13eC5EZWZhdWx0
U2l6ZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT13eC5CS19ERUZBVUxU
ICkKICAgICAgICAKICAgICAgICBpbUlEID0gMAogICAgICAgIGluZGV4SUQgPSAwCiAgICAgICAg
ICAgIAogICAgICAgIGZvciBpdGVtIGluIGxpc3Rib29rSXRlbXM6CiAgICAgICAgICAgIAogICAg
ICAgICAgICB3aW4gPSB3eC5QYW5lbCAoIHNlbGYsIC0xLCBzaXplID0gd3guRGVmYXVsdFNpemUg
KQogICAgICAgICAgICAKICAgICAgICAgICAgc2l6ZXIgPSB3eC5GbGV4R3JpZFNpemVyICggY29s
cyA9IDEsIGhnYXAgPSA1LCB2Z2FwID0gNSApCiAgICAgICAgICAgIHNpemVyLkFkZEdyb3dhYmxl
Q29sICggMCApCiAgICAgICAgICAgIHNpemVyLkFkZEdyb3dhYmxlUm93ICggMCApCiAgICAgICAg
ICAgIAogICAgICAgICAgICB3aW4uU2V0U2l6ZXJBbmRGaXQgKCBzaXplciApCiAgICAgICAgICAg
IAogICAgICAgICAgICBzZWxmLkFkZFBhZ2UgKCB3aW4sIGl0ZW0gKQogICAgICAgICAgICAKICAg
ICAgICAgICAgaW1JRCArPSAxCiAgICAgICAgICAgIAogICAgICAgICAgICBpZiBpdGVtID09IGxp
c3Rib29rSXRlbXNbaW5kZXhJRF06CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTG9hZHMgc3RhcnQK
Iy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgICAgIGlmIGl0ZW0gPT0gJ0xvYWRzJzoK
ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBzZWxmLnZpZXdMb2FkUGFu
ZWwgPSBWaWV3UGFuZWwgKCB3aW4sIC0xLCAnbG9hZHMnICkKICAgICAgICAgICAgICAgICAgICBz
ZWxmLnZpZXdMb2FkUGFuZWwuTG9hZExpc3RDdHJsKCdsb2FkcycpCiAgICAgICAgICAgICAgICAg
ICAgCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTG9hZHMgZW5kCiMtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiMgTG9hZCBUeXBlcyBzdGFydAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAgICAg
aWYgaXRlbSA9PSAnTG9hZCBUeXBlcyc6CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgICAgc2VsZi52aWV3TG9hZFR5cGVzUGFuZWwgPSBWaWV3UGFuZWwgKCB3aW4sIC0xLCAn
dHlwZScgKQogICAgICAgICAgICAgICAgICAgIHNlbGYudmlld0xvYWRUeXBlc1BhbmVsLkxvYWRM
aXN0Q3RybCgndHlwZScpCiAgICAgICAgICAgICAgICAgICAgCiMtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiMgTG9hZCBUeXBlcyBlbmQKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBMb2FkIFN0YXR1cyBzdGFy
dAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAgICAgaWYgaXRlbSA9PSAnTG9hZCBT
dGF0dXMnOgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIHNlbGYudmll
d0xvYWRTdGF0dXNQYW5lbCA9IFZpZXdQYW5lbCAoIHdpbiwgLTEsICdzdGF0dXMnICkKICAgICAg
ICAgICAgICAgICAgICBzZWxmLnZpZXdMb2FkU3RhdHVzUGFuZWwuTG9hZExpc3RDdHJsKCdzdGF0
dXMnKQogICAgICAgICAgICAgICAgICAgIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIExvYWQgU3Rh
dHVzIGVuZAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIERpc3RyaWJ1dG9ycyBQYWdlIHN0YXJ0CiMt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgICAgICBpZiBpdGVtID09ICdEaXN0cmlidXRv
cnMnOgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIHNlbGYudmlld0Rp
c3RyaWJ1dG9yc1BhbmVsID0gVmlld1BhbmVsICggd2luLCAtMSwgJ2Rpc3QnICkKICAgICAgICAg
ICAgICAgICAgICBzZWxmLnZpZXdEaXN0cmlidXRvcnNQYW5lbC5Mb2FkTGlzdEN0cmwoJ2Rpc3Qn
KQogICAgICAgICAgICAgICAgICAgIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIERpc3RyaWJ1dG9y
cyBQYWdlIGVuZAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICBpbmRleElEICs9IDEK
ICAgICAgICAgICAgCmNsYXNzIFZpZXdQYW5lbCAoIHd4LlBhbmVsICk6CiAgICAKICAgIGRlZiBf
X2luaXRfXyAoIHNlbGYsIHBhcmVudCwgaWQsIG9wdGlvbiApOgogICAgICAgIAogICAgICAgIHd4
LlBhbmVsLl9faW5pdF9fICggc2VsZiwgcGFyZW50LCBpZCApCiAgICAgICAgCiAgICAgICAgcGFy
ZW50U2l6ZXIgPSBwYXJlbnQuR2V0U2l6ZXIoKQogICAgICAgIHBhcmVudFNpemVyLkFkZCAoIHNl
bGYsIDEsIHd4LkVYUEFORCApCiAgICAgICAgCiMjICAgICAgICBzZWxmLmxpc3RDdHJsID0gd3gu
TGlzdEN0cmwoIHNlbGYsIC0xLCBzdHlsZT13eC5MQ19SRVBPUlQpCiAgICAgICAgI3NpemVyID0g
d3guRmxleEdyaWRTaXplciAoIGNvbHMgPSAxLCBoZ2FwID0gNSwgdmdhcCA9IDUgKQogICAgICAg
IAogICAgICAgICMjIGNvbnN1bHQgZGF0YWJhc2UKICAgICAgICAjbGkgPSBweWxvYWRzLnNxbC5n
ZXRUYWJsZURlc2MgKCBweWxvYWRzLmRiLCBvcHRpb24gKQogICAgICAgICNkaSA9IHB5bG9hZHMu
c3FsLmdldFRhYmxlRGF0YSAoIHB5bG9hZHMuZGIsIG9wdGlvbiApCiAgICAgICAgCiAgICAgICAg
I3NlbGYubGlzdEN0cmwgPSBzZWxmLlNldExpc3RDdHJsKGxpLCBkaSkKICAgICAgICAKICAgICAg
ICAjIyBJbnNlcnQgQ29sdW1uIE5hbWVzIHRvIHRoZSBsaXN0Q3RybAogICAgICAgICAgICAKICAg
ICAgICAjc2l6ZXIuQWRkR3Jvd2FibGVDb2wgKCAwICkKICAgICAgICAjc2l6ZXIuQWRkR3Jvd2Fi
bGVSb3cgKCAwICkKICAgICAgICAKICAgICAgICAjc2l6ZXIuQWRkICggc2VsZi5saXN0Q3RybCwg
MSwgd3guRVhQQU5EICkKICAgICAgICAKICAgICAgICAjc2VsZi5TZXRTaXplciAoIHNpemVyICkK
ICAgIAogICAgZGVmIFNldExpc3RDdHJsKHNlbGYsIGxpLCBkaSwgbGlzdEN0cmwpOgogICAgICAg
IAojIyAgICAgICAgbGlzdEN0cmwgPSB3eC5MaXN0Q3RybCAoIHNlbGYsIC0xLCBzdHlsZT13eC5M
Q19SRVBPUlQgKQogICAgICAgIGZvciBpdGVtIGluIGxpOgogICAgICAgICAgICAKICAgICAgICAg
ICAgbGlzdEN0cmwuSW5zZXJ0Q29sdW1uICggbGkuaW5kZXggKCBpdGVtICksIGl0ZW0gKQogICAg
ICAgICAgICAKICAgICAgICBpdGVtcyA9IGRpLml0ZW1zKCkKICAgICAgICAKICAgICAgICBpZHgg
PSAtMQogICAgICAgICMjIEluc2VydCBSb3cgZGF0YSB0byB0aGUgbGlzdEN0cmwKICAgICAgICBm
b3Iga2V5LCBkYXRhIGluIGl0ZW1zOgogICAgICAgICAgICAKICAgICAgICAgICAgaWR4ICs9IDEK
ICAgICAgICAgICAgaW5kZXggPSBsaXN0Q3RybC5JbnNlcnRTdHJpbmdJdGVtICggaWR4LCByZXBy
ICgga2V5ICkgKQogICAgICAgICAgICAKICAgICAgICAgICAgY29sID0gMAogICAgICAgICAgICBm
b3IgaXRlbSBpbiBkYXRhOgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBjb2wgKz0g
MQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBsaXN0Q3RybC5TZXRTdHJpbmdJdGVt
ICggaW5kZXgsIGNvbCwgc3RyICggaXRlbSApICkKICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICBsaXN0Q3RybC5TZXRJdGVtRGF0YSAoIGluZGV4LCBrZXkgKQogICAgICAgICAgICAKICAgICAg
ICBmb3IgaXRlbSBpbiBsaToKICAgICAgICAgICAgCiAgICAgICAgICAgIGxpc3RDdHJsLlNldENv
bHVtbldpZHRoICggbGkuaW5kZXggKCBpdGVtICksIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgd3guTElTVF9BVVRPU0laRV9VU0VIRUFERVIgKQogICAgICAgIAog
ICAgICAgIHJldHVybiBsaXN0Q3RybAogICAgCiAgICBkZWYgTG9hZExpc3RDdHJsIChzZWxmLCBv
cHRpb24pIDoKCiAgICAgICAgc2V0YXR0cihzZWxmLCBvcHRpb24sIHd4Lkxpc3RDdHJsICggc2Vs
ZiwgLTEsIHN0eWxlPXd4LkxDX1JFUE9SVCApKQogICAgICAgIAogICAgICAgIGxpID0gcHlsb2Fk
cy5zcWwuZ2V0VGFibGVEZXNjICggcHlsb2Fkcy5kYiwgb3B0aW9uICkKICAgICAgICBkaSA9IHB5
bG9hZHMuc3FsLmdldFRhYmxlRGF0YSAoIHB5bG9hZHMuZGIsIG9wdGlvbiApCiAgICAgICAgCiAg
ICAgICAgc2l6ZXIgPSB3eC5GbGV4R3JpZFNpemVyICggY29scyA9IDEsIGhnYXAgPSA1LCB2Z2Fw
ID0gNSApCiAgICAgICAgc2VsZi5TZXRMaXN0Q3RybChsaSwgZGksIGdldGF0dHIoc2VsZiwgb3B0
aW9uKSkKICAgICAgICBzaXplci5BZGRHcm93YWJsZUNvbCAoIDAgKQogICAgICAgIHNpemVyLkFk
ZEdyb3dhYmxlUm93ICggMCApCiAgICAgICAgCiAgICAgICAgc2l6ZXIuQWRkICggZ2V0YXR0cihz
ZWxmLCBvcHRpb24pLCAxLCB3eC5FWFBBTkQgKQogICAgICAgIHNlbGYuU2V0U2l6ZXJBbmRGaXQo
c2l6ZXIpCiAgICAgICAgCiAgICBkZWYgVXBkYXRlTGlzdEN0cmwgKHNlbGYsIG9wdGlvbikgOgog
ICAgICAgIAogICAgICAgIGxpc3RDdHJsID0gZ2V0YXR0cihzZWxmLCBvcHRpb24pCiAgICAgICAg
bGlzdEN0cmwuQ2xlYXJBbGwoKQoKICAgICAgICBsaSA9IHB5bG9hZHMuc3FsLmdldFRhYmxlRGVz
YyAoIHB5bG9hZHMuZGIsIG9wdGlvbiApCiAgICAgICAgZGkgPSBweWxvYWRzLnNxbC5nZXRUYWJs
ZURhdGEgKCBweWxvYWRzLmRiLCBvcHRpb24gKQogICAgICAgIAogICAgICAgIHNlbGYuU2V0TGlz
dEN0cmwobGksIGRpLCBsaXN0Q3RybCkKCmlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAK
ICAgIGFwcCA9IHd4TG9hZHMoMCkKICAgIGFwcC5NYWluTG9vcCgpCg==


More information about the wxpython-users mailing list