[Biojava-l] Parsing of Chromatogram files

Brian Gilman gilmanb@genome.wi.mit.edu
Tue, 14 Aug 2001 09:57:40 -0400 (EDT)


  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

--0-2115330227-997797460=:27042
Content-Type: TEXT/PLAIN; charset=US-ASCII

Hello,

	Here are a bunch of src I used for the TSC SNP project to parse
chromatogram files. Thomas, Matthew I'm not really sure where these
should go so I'm leaving the source in your capable hands. 

				Happy Hacking!


					-B

-----------------------
Brian Gilman <gilmanb@genome.wi.mit.edu>
Sr. Software Engineer MIT/Whitehead Inst. Center for Genome Research
One Kendall Square, Bldg. 300 / Cambridge, MA 02139-1561 USA
phone +1 617  252 1069 / fax +1 617 252 1902


On Tue, 14 Aug 2001, Matthew Pocock wrote:

> ss ss wrote:
> 
> Afternoon,
> 
> There isn't anything at the moment (as you may have guessed by now). It 
> would be great to have, though. I guess I have never had the need, so 
> haven't written it.
> 
> Good luck,
> 
> Matthew
> 
> > hi,
> > 
> > is there  any code available with biojava to trace the
> > SCF (Standerd Chromatogram Files) chromatograms.
> > can  any body  help me in this regard.
> > 
> > Sridhar.
> > 
> > 
> > __________________________________________________
> > Do You Yahoo!?
> > Make international calls for as low as $.04/minute with Yahoo! Messenger
> > http://phonecard.yahoo.com/
> > _______________________________________________
> > Biojava-l mailing list  -  Biojava-l@biojava.org
> > http://biojava.org/mailman/listinfo/biojava-l
> 
> 
> _______________________________________________
> Biojava-l mailing list  -  Biojava-l@biojava.org
> http://biojava.org/mailman/listinfo/biojava-l
> 

--0-2115330227-997797460=:27042
Content-Type: APPLICATION/octet-stream; name="chromat.tar.gz"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.OSF.4.10.10108140957400.27042@darwin.wi.mit.edu>
Content-Description: 
Content-Disposition: attachment; filename="chromat.tar.gz"

Z2VuZXJhbC8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAACA0MDc3NSAAICA0MjAzIAAgICAxMzcgACAgICAgICAgICAw
ICA3MzM2MjI2NjIzICAxMTA3NwAgNQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGdpbG1h
bmIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAc25wAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAABnZW5lcmFsL0NWUy8AAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIDQwNzc1IAAgIDQyMDMgACAg
IDEzNyAAICAgICAgICAgIDAgIDcwMDUzMjIzNDYgIDExNTIyACA1AAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAHVzdGFyICAAZ2lsbWFuYgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABz
bnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGdlbmVyYWwvQ1ZT
L1Jvb3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx
MDA2NjQgACAgNDIwMyAAICAgMTM3IAAgICAgICAgICA0NCAgNzAwMTQwMjMy
NyAgMTI0MTUAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABnaWxtYW5iAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAHNucAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAZm9ybWFnZ2lvOi91c3IvbG9jYWwvY3ZzX3JlcG9zaXRvcnkKAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABnZW5lcmFsL0NWUy9SZXBvc2l0b3J5
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTAwNjY0IAAgIDQy
MDMgACAgIDEzNyAAICAgICAgICAgNjIgIDcwMDE0MDIzMjcgIDEzNjUxACAw
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAHVzdGFyICAAZ2lsbWFuYgAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAABzbnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC91c3Iv
bG9jYWwvY3ZzX3JlcG9zaXRvcnkvcmF2aVNOUC9BcHBsZXRzL2dlbmVyYWwK
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAZ2VuZXJhbC9DVlMvRW50cmllcwAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAADEwMDY2NCAAICA0MjAzIAAgICAxMzcg
ACAgICAgICAxMDA0ICA3MDA1MzIyMzQ2ICAxMzE0NgAgMAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1
c3RhciAgAGdpbG1hbmIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAc25wAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvVGFnZ2VkUmVjb3JkLmph
dmEvMS4xLjEuMS9XZWQgT2N0ICA2IDIwOjI0OjEzIDE5OTkvLwovVHJhY2VS
ZXF1ZXN0TGlzdGVuZXIuamF2YS8xLjEuMS4xL1dlZCBPY3QgIDYgMjA6MjQ6
MTQgMTk5OS8vCi9Vc2VyQ29tbXMuamF2YS8xLjEuMS4xL01vbiBTZXAgMjcg
MTQ6MjI6NTQgMTk5OS8vCi9UcmFjZVV0aWxzLmphdmEvMS4zL1R1ZSBPY3Qg
MTIgMTM6MjA6NTQgMTk5OS8vCi9teVRpbWVyLmphdmEvMS4xL1R1ZSBPY3Qg
MTIgMTM6MzE6MzAgMTk5OS8vCi9BQklDaHJvbWF0b2dyYW0uamF2YS8xLjMv
TW9uIE9jdCAyNSAxNTo1MDozNCAxOTk5Ly8KL0Nocm9tYXRvZ3JhbS5qYXZh
LzEuNC9Nb24gT2N0IDI1IDE1OjUxOjIzIDE5OTkvLwovU0NGQ2hyb21hdG9n
cmFtLmphdmEvMS40L01vbiBPY3QgMjUgMTU6NTA6NDkgMTk5OS8vCi9UcmFj
ZVJlcXVlc3RFdmVudC5qYXZhLzEuMi9Nb24gT2N0IDI1IDE2OjI3OjM5IDE5
OTkvLwovV1NfRlRQLkxPRy8xLjQvVGh1IE9jdCAxNCAxNjoyOToxMSAxOTk5
Ly8KRAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAZ2VuZXJhbC9DVlMvV1NfRlRQLkxPRwAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEwMDY0NCAAICA0MjAzIAAg
ICAxMzcgACAgICAgICAyMDI3ICA3MDAxNDAyMzI3ICAxMzIxNQAgMAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAB1c3RhciAgAGdpbG1hbmIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
c25wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5OS4xMC4xMiAx
NzoxOSBCIEM6XGphdmFcdHJhY2VcZ2VuZXJhbFxDVlNcRW50cmllcyA8LS0g
Y2hldnJlIC9leHBvcnQvc2hhcmUvc25wL3JhdmlTTlAvQXBwbGV0cy9nZW5l
cmFsL0NWUyBFbnRyaWVzDQo5OS4xMC4xMiAxNzoxOSBCIEM6XGphdmFcdHJh
Y2VcZ2VuZXJhbFxDVlNcUmVwb3NpdG9yeSA8LS0gY2hldnJlIC9leHBvcnQv
c2hhcmUvc25wL3JhdmlTTlAvQXBwbGV0cy9nZW5lcmFsL0NWUyBSZXBvc2l0
b3J5DQo5OS4xMC4xMiAxNzoxOSBCIEM6XGphdmFcdHJhY2VcZ2VuZXJhbFxD
VlNcUm9vdCA8LS0gY2hldnJlIC9leHBvcnQvc2hhcmUvc25wL3JhdmlTTlAv
QXBwbGV0cy9nZW5lcmFsL0NWUyBSb290DQo5OS4xMC4xMiAxNzoxOSBCIEM6
XGphdmFcdHJhY2VcZ2VuZXJhbFxDVlNcRW50cmllcyA8LS0gY2hldnJlIC9l
eHBvcnQvc2hhcmUvc25wL3JhdmlTTlAvQXBwbGV0cy9nZW5lcmFsL0NWUyBF
bnRyaWVzDQo5OS4xMC4xMiAxNzoxOSBCIEM6XGphdmFcdHJhY2VcZ2VuZXJh
bFxDVlNcUmVwb3NpdG9yeSA8LS0gY2hldnJlIC9leHBvcnQvc2hhcmUvc25w
L3JhdmlTTlAvQXBwbGV0cy9nZW5lcmFsL0NWUyBSZXBvc2l0b3J5DQo5OS4x
MC4xMiAxNzoxOSBCIEM6XGphdmFcdHJhY2VcZ2VuZXJhbFxDVlNcUm9vdCA8
LS0gY2hldnJlIC9leHBvcnQvc2hhcmUvc25wL3JhdmlTTlAvQXBwbGV0cy9n
ZW5lcmFsL0NWUyBSb290DQo5OS4xMC4xMyAxMzowNSBCIEM6XGphdmFcdHJh
Y2VcZ2VuZXJhbFxDVlNcRW50cmllcyAtLT4gcm9tYW5vIC9hL2NoZXZyZS9o
b21lL3JhdmkvcHVibGljX2h0bWwvZ2VuZXJhbC9DVlMgRW50cmllcw0KOTku
MTAuMTMgMTM6MDUgQiBDOlxqYXZhXHRyYWNlXGdlbmVyYWxcQ1ZTXFJlcG9z
aXRvcnkgLS0+IHJvbWFubyAvYS9jaGV2cmUvaG9tZS9yYXZpL3B1YmxpY19o
dG1sL2dlbmVyYWwvQ1ZTIFJlcG9zaXRvcnkNCjk5LjEwLjEzIDEzOjA1IEIg
QzpcamF2YVx0cmFjZVxnZW5lcmFsXENWU1xSb290IC0tPiByb21hbm8gL2Ev
Y2hldnJlL2hvbWUvcmF2aS9wdWJsaWNfaHRtbC9nZW5lcmFsL0NWUyBSb290
DQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABnZW5l
cmFsL1RyYWNlUmVxdWVzdExpc3RlbmVyLmphdmEAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAMTAwNjY0IAAgIDQyMDMgACAgIDEzNyAAICAgICAgICA1NjIgIDcw
MDE0MDIzMjcgIDE2MTIxACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAZ2lsbWFuYgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABzbnAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAHBhY2thZ2UgY3NobDsNDQoNDQppbXBvcnQgamF2YS51
dGlsLkV2ZW50TGlzdGVuZXI7DQ0KLyoqDQ0KQW4gaW50ZXJmYWNlIHRoYXQg
aXMgdXNlZnVsIGluIHBhc3NpbmcgdHJhY2UgcmVxdWVzdHMgYXJvdW5kDQ0K
YmV0d2VlbiBncmFwaGljYWwgY29tcG9uZW50cyBhbmQgdGhlIGFjdHVhbCBy
b3V0aW5lcw0NCmNhcGFibGUgb2YgZG9pbmcgdGhlIHJlYWwgd29yay4NDQpA
c2VlIFRyYWNlUmVxdWVzdEV2ZW50DQ0KKi8NDQoNDQpwdWJsaWMgaW50ZXJm
YWNlIFRyYWNlUmVxdWVzdExpc3RlbmVyIGV4dGVuZHMgRXZlbnRMaXN0ZW5l
ciB7DQ0KCXB1YmxpYyB2b2lkIHRyYWNlUmVxdWVzdGVkKFRyYWNlUmVxdWVz
dEV2ZW50IHJlcUUpOw0NCn0NDQoNDQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZ2VuZXJhbC9BQklDaHJv
bWF0b2dyYW0uamF2YQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEwMDY2
NCAAICA0MjAzIAAgICAxMzcgACAgICAgIDEwMDA0ICA3MTIwMjM3Mzc1ICAx
NTAwNgAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGdpbG1hbmIAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAc25wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AABwYWNrYWdlIGNzaGw7CgppbXBvcnQgamF2YS5pby4qOwppbXBvcnQgamF2
YS51dGlsLio7CmltcG9ydCBjc2hsLlRhZ2dlZFJlY29yZDsKaW1wb3J0IGNz
aGwuQ2hyb21hdG9ncmFtOwoKLyoqClRoZSBBQkkgcGFyc2luZyBjYW4gYmUg
dHJpY2t5IHNvIGl0cyBkb25lIGhlcmUgaW4gdGhlIHN1YmNsYXNzCnRvIGNv
cGUgd2l0aCBhbnkgY2hhbmdlcy4KQUJJIGZvcm1hdCBkb2VzIG5vdCBjdXJy
ZW50bHkgaW5jbHVkZSBxdWFsaXR5IGluZm9ybWF0aW9uCiovCnB1YmxpYyBj
bGFzcyBBQklDaHJvbWF0b2dyYW0gZXh0ZW5kcyBDaHJvbWF0b2dyYW0gewoK
CS8vIEludGVybmFsIHBhcnNpbmcgaGVscGVycwoJcHJpdmF0ZQkJCWludCB0
cmFjZUxlbmd0aDsKCXB1YmxpYyBzdGF0aWMgZmluYWwJaW50IE1hZ2ljTnVt
ID0gKCgoKChpbnQpJ0EnPDw4KSsoaW50KSdCJzw8OCkrKGludCknSSc8PDgp
KyhpbnQpJ0YnKTsKCiAgICBwdWJsaWMgQUJJQ2hyb21hdG9ncmFtKElucHV0
U3RyZWFtIElOKSB0aHJvd3MgSU9FeGNlcHRpb24gewoJc3VwZXIoKTsKCXF1
YWxpdHkgPSBuZXcgYnl0ZVsxXTsKCXJlYWQoSU4pOwoJLy9TeXN0ZW0uZXJy
LnByaW50bG4oIkp1c3QgcGFyc2VkIGFuIEFCSSBmb3JtYXQgdHJhY2UgZmls
ZSBvZiBsZW5ndGg9ICIgKyB0cmFjZUxlbmd0aCk7CglpZihDaHJvbWF0b2dy
YW0uc3RhcnRDb21wKXsKCSAgICBjb21wbGVtZW50KCk7Cgl9IAogICAgfQog
ICAgCglwdWJsaWMgdm9pZCByZWFkKElucHV0U3RyZWFtIElOKSAgdGhyb3dz
IElPRXhjZXB0aW9uewoJCURhdGFJbnB1dFN0cmVhbSBkYXRhSU4gPSBuZXcg
RGF0YUlucHV0U3RyZWFtKElOKTsKCQlieXRlW10gZmlsZUhlYWRlciA9IG5l
dyBieXRlWzMwXTsKCQlkYXRhSU4ucmVhZEZ1bGx5KGZpbGVIZWFkZXIpOwoJ
CUJ5dGVBcnJheUlucHV0U3RyZWFtIGhJTiA9IG5ldyBCeXRlQXJyYXlJbnB1
dFN0cmVhbShmaWxlSGVhZGVyKTsKCQlEYXRhSW5wdXRTdHJlYW0gaGVhZGVy
SU4gPSBuZXcgRGF0YUlucHV0U3RyZWFtKGhJTik7CgkJaGVhZGVySU4uc2tp
cCgxOCk7CgkJaW50IHJlY29yZE51bSA9IGhlYWRlcklOLnJlYWRJbnQoKTsK
CQloZWFkZXJJTi5za2lwKDQpOwoJCWludCByZWNvcmRPZmZzZXQgPSBoZWFk
ZXJJTi5yZWFkSW50KCk7CgkJaGVhZGVySU4ucmVzZXQoKTsKCQlieXRlW10g
ZmlsZUJ5dGVzID0gbmV3IGJ5dGVbcmVjb3JkT2Zmc2V0ICsgcmVjb3JkTnVt
ICogMjhdOwoJCWhlYWRlcklOLnJlYWRGdWxseShmaWxlQnl0ZXMsMCwzMCk7
CgkJZGF0YUlOLnJlYWRGdWxseShmaWxlQnl0ZXMsMzAsZmlsZUJ5dGVzLmxl
bmd0aCAtIDMwKTsKCQlCeXRlQXJyYXlJbnB1dFN0cmVhbSBwbGFpbmJ5dGVJ
TiA9IG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShmaWxlQnl0ZXMpOwoJCURh
dGFJbnB1dFN0cmVhbSBieXRlSU4gPSBuZXcgRGF0YUlucHV0U3RyZWFtKHBs
YWluYnl0ZUlOKTsKCQlieXRlSU4uc2tpcChyZWNvcmRPZmZzZXQpOwoJCS8v
IHJlYWQgdGFnZ2VkIHJlY29yZHMgaW50byBoYXNoIHRhYmxlCgkJVGFnZ2Vk
UmVjb3JkW10gcmVjb3JkcyA9IG5ldyBUYWdnZWRSZWNvcmRbcmVjb3JkTnVt
XTsKCQlIYXNodGFibGUgckhhc2ggPSBuZXcgSGFzaHRhYmxlKHJlY29yZE51
bSk7CgkJaW50IGk7CgkJZm9yIChpPTA7aTxyZWNvcmROdW07aSsrKSB7CgkJ
CXJlY29yZHNbaV0gPSBuZXcgVGFnZ2VkUmVjb3JkKGJ5dGVJTik7CgkJCXJI
YXNoLnB1dChyZWNvcmRzW2ldLmdldFRhZ05hbWUoKSArIHJlY29yZHNbaV0u
Z2V0VGFnTnVtKCkscmVjb3Jkc1tpXSk7CgkJCX0KCQkvLyBnZXQgYmFzZSBj
YWxscwoJCVRhZ2dlZFJlY29yZCBQQkFTMSA9IChUYWdnZWRSZWNvcmQpIChy
SGFzaC5nZXQoIlBCQVMxIikpOwoJCWludCBPZmZzZXQgPSBQQkFTMS5nZXRE
YXRhUmVjb3JkKCk7CgkJaW50IGVsZW1lbnROdW0gPSBQQkFTMS5nZXRFbGVt
ZW50TnVtYmVyKCk7CgkJYnl0ZUlOLnJlc2V0KCk7CgkJYnl0ZUlOLnNraXAo
T2Zmc2V0KTsKCQliYXNlID0gbmV3IGNoYXJbZWxlbWVudE51bV07CgkJZm9y
IChpPTA7aTxlbGVtZW50TnVtO2krKykgewoJCQliYXNlW2ldID0gKGNoYXIp
IGJ5dGVJTi5yZWFkVW5zaWduZWRCeXRlKCk7CgkJCX0KCQkvLyBnZXQgYmFz
ZSBsb2NhdGlvbnMKCQlUYWdnZWRSZWNvcmQgUExPQzEgPSAoVGFnZ2VkUmVj
b3JkKSAockhhc2guZ2V0KCJQTE9DMSIpKTsKCQlPZmZzZXQgPSBQTE9DMS5n
ZXREYXRhUmVjb3JkKCk7CgkJZWxlbWVudE51bSA9IFBMT0MxLmdldEVsZW1l
bnROdW1iZXIoKTsKCQlieXRlSU4ucmVzZXQoKTsKCQlieXRlSU4uc2tpcChP
ZmZzZXQpOwoJCWJhc2VQb3NpdGlvbiA9IG5ldyBpbnRbZWxlbWVudE51bV07
CgkJZm9yIChpPTA7aTxlbGVtZW50TnVtO2krKykgewoJCQliYXNlUG9zaXRp
b25baV0gPSAoY2hhcikgYnl0ZUlOLnJlYWRVbnNpZ25lZFNob3J0KCk7CgkJ
CX0KCQkvLyBnZXQgRldPICh0ZWxscyB3aGljaCB0cmFjZSBpcyB3aGljaCkK
CQlUYWdnZWRSZWNvcmQgRldPMSA9IChUYWdnZWRSZWNvcmQpIChySGFzaC5n
ZXQoIkZXT18xIikpOwoJCWludCBwYWNrZWRDaGFyID0gRldPMS5nZXREYXRh
UmVjb3JkKCk7CgkJY2hhcltdIGJhc2VPcmRlciA9IG5ldyBjaGFyWzRdOwoJ
CWJhc2VPcmRlclswXSA9IChjaGFyKSAoKGJ5dGUpKHBhY2tlZENoYXIgPj4g
MjQpKTsKCQliYXNlT3JkZXJbMV0gPSAoY2hhcikgKChieXRlKShwYWNrZWRD
aGFyID4+IDE2KSk7CgkJYmFzZU9yZGVyWzJdID0gKGNoYXIpICgoYnl0ZSko
cGFja2VkQ2hhciA+PiA4KSk7CgkJYmFzZU9yZGVyWzNdID0gKGNoYXIpICgo
Ynl0ZSkocGFja2VkQ2hhcikpOwoJCS8vIGdldCBkYXRhIHJlY29yZHMgZm9y
IHRyYWNlcwoJCVRhZ2dlZFJlY29yZFtdIFRyYWNlID0gbmV3IFRhZ2dlZFJl
Y29yZFs0XTsKCQl0cmFjZUxlbmd0aCA9IDEwMDAwMDA7CgkJaW50IGRhdGFO
dW07CgkJZm9yIChpPTA7aTw0O2krKykgewoJCQlkYXRhTnVtID0gOSArIGk7
CgkJCVRyYWNlW2ldID0gKFRhZ2dlZFJlY29yZCkgKHJIYXNoLmdldCgiREFU
QSIgKyBkYXRhTnVtKSk7CgkJCWlmIChUcmFjZVtpXS5nZXRFbGVtZW50TnVt
YmVyKCkgPCB0cmFjZUxlbmd0aCkKCQkJCXRyYWNlTGVuZ3RoID0gVHJhY2Vb
aV0uZ2V0RWxlbWVudE51bWJlcigpOwoJCX0KCQkvLyB1c2luZyBGV08gcmVj
b3JkIGRhdGEgYXMgZ3VpZGUsIGlucHV0IFRyYWNlIGRhdGEKCQlBID0gbmV3
IGludFt0cmFjZUxlbmd0aF07CgkJQyA9IG5ldyBpbnRbdHJhY2VMZW5ndGhd
OwoJCUcgPSBuZXcgaW50W3RyYWNlTGVuZ3RoXTsKCQlUID0gbmV3IGludFt0
cmFjZUxlbmd0aF07CgkJZm9yIChpPTA7aTw0O2krKykgewoJCQlieXRlSU4u
cmVzZXQoKTsKCQkJYnl0ZUlOLnNraXAoVHJhY2VbaV0uZ2V0RGF0YVJlY29y
ZCgpKTsKCQkJc3dpdGNoIChiYXNlT3JkZXJbaV0pIHsKCQkJCWNhc2UgJ0En
OgoJCQkJcmVhZFVTQXJyYXkoQSxieXRlSU4pOwoJCQkJYnJlYWs7CgkJCQlj
YXNlICdDJzoKCQkJCXJlYWRVU0FycmF5KEMsYnl0ZUlOKTsKCQkJCWJyZWFr
OwoJCQkJY2FzZSAnRyc6CgkJCQlyZWFkVVNBcnJheShHLGJ5dGVJTik7CgkJ
CQlicmVhazsKCQkJCWNhc2UgJ1QnOgoJCQkJcmVhZFVTQXJyYXkoVCxieXRl
SU4pOwoJCQkJYnJlYWs7CgkJCX0KCQl9CgoJfQoKCXByaXZhdGUgc3RhdGlj
IHZvaWQgcmVhZFVTQXJyYXkoaW50W10gaW50QXJyYXksRGF0YUlucHV0U3Ry
ZWFtIElOKSB0aHJvd3MgSU9FeGNlcHRpb24gewoJCWludCBpOwoJCWZvciAo
aT0wO2k8aW50QXJyYXkubGVuZ3RoO2krKykgewoJCQlpbnRBcnJheVtpXSA9
IElOLnJlYWRVbnNpZ25lZFNob3J0KCk7CgkJfQoJfQoKCXB1YmxpYyB2b2lk
IHdyaXRlKE91dHB1dFN0cmVhbSBPVVQpIHsKCQkvLyB3cml0aW5nIEFCSSBm
aWxlcyBtb3JlIHRyb3VibGUgdGhhbiBpdHMgd29ydGg/CgkJfTsKCglwdWJs
aWMgaW50IGdldFRyYWNlTGVuZ3RoKCkgewoJCXJldHVybiB0cmFjZUxlbmd0
aDsKCX0KCglwdWJsaWMgU3RyaW5nIGdldENvbW1lbnRzKCkgewoJCS8vIHdv
cmsgb24gdGhpcyBsYXRlcgoJCXJldHVybiAiIjsKCX0KCglwdWJsaWMgaW50
IGdldEJhc2VOdW1iZXIoKSB7CgkJcmV0dXJuIChpbnQpIGJhc2UubGVuZ3Ro
OwoJfQp9CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAABnZW5lcmFsL0Nocm9tYXRvZ3JhbS5qYXZh
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTAwNjY0IAAgIDQyMDMg
ACAgIDEzNyAAICAgICAgMTQ3MzEgIDcxMjAyMzE2NjQgIDE0NTAwACAwAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAHVzdGFyICAAZ2lsbWFuYgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AABzbnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBhY2thZ2Ug
Y3NobDsKaW1wb3J0IGphdmEuaW8uKjsKCi8qKgpBIHN1cGVyY2xhc3MgdG8g
ZGVmaW5lIGFsbCB0aGUgbWV0aG9kcyBjb21tb24gdG8gYm90aCBvZgp0aGUg
Y3VycmVudGx5IGtub3duIHRyYWNlIGZvcm1hdHMuIFBhcnNpbmcgaXMgZG9u
ZSBpbiB0aGUKc3ViY2xhc3NlcyBhbmQgYWxsIGRpc3BsYXkgY29kZSBpcyBs
ZWZ0IHRvIGEgdmlld2VyIGNsYXNzLgpAc2VlIEFCSUNocm9tYXRvZ3JhbQpA
c2VlIFNDRkNocm9tYXRvZ3JhbQoqLwoKcHVibGljIGFic3RyYWN0IGNsYXNz
IENocm9tYXRvZ3JhbSB7CgoJLy8gU29tZSBoYW5keSBjb25zdGFudHMKCXB1
YmxpYyBzdGF0aWMgZmluYWwgaW50CU1BWF9BU0NJSSA9IDEyNzsKCXByaXZh
dGUgc3RhdGljIGNoYXJbXQljb21wbGVtZW50Q2hhcnMgPSBuZXcgY2hhcltN
QVhfQVNDSUkgKyAxXTsKCXB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFCSU1h
Z2ljTnVtID0gKCgoKChpbnQpJ0EnPDw4KSsoaW50KSdCJzw8OCkrKGludCkn
SSc8PDgpKyhpbnQpJ0YnKTsKIAlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBT
Q0ZNYWdpY051bSA9CiAJICgoKCgoaW50KScuJzw8OCkrKGludCkncyc8PDgp
KyhpbnQpJ2MnPDw4KSsoaW50KSdmJyk7CgoKCS8vIFJlYWwgY2hyb21hdG9n
cmFtIGRhdGEKCWludFtdCQlBLCBDLCBHLCBULCBiYXNlUG9zaXRpb24sYmFz
ZU51bWxpc3Q7CglieXRlW10JCXF1YWxpdHk7CgljaGFyCQliYXNlW107CglT
dHJpbmcJCWNvbW1lbnRzOwogIC8vIFRoaXMgb2Zmc2V0IGlzIGluIGJhc2Ug
bnVtYmVycywgYWN0dWFsbHkgdGhlIGJhc2UgbnVtYmVyIGF0IHRoZQogIC8v
IGNlbnRlciBvZiB0aGUgc2NyZWVuLgoJaW50IAkJT2ZmU2V0OwoJU3RyaW5n
CQlhY2Nlc3Npb247Cglib29sZWFuCQlvcmlnaW5hbE9yaWVudGF0aW9uID0g
dHJ1ZTsKCglwdWJsaWMgc3RhdGljIGJvb2xlYW4gc3RhcnRDb21wID0gZmFs
c2U7CgoJcHVibGljIENocm9tYXRvZ3JhbSAoKSB7CgkJc3VwZXIoKTsKCX0K
CglwdWJsaWMgYWJzdHJhY3Qgdm9pZCByZWFkKElucHV0U3RyZWFtIElOKSB0
aHJvd3MgSU9FeGNlcHRpb247CglwdWJsaWMgYWJzdHJhY3Qgdm9pZCB3cml0
ZShPdXRwdXRTdHJlYW0gT1VUKTsKCXB1YmxpYyBhYnN0cmFjdCBpbnQgZ2V0
VHJhY2VMZW5ndGgoKTsKCXB1YmxpYyBhYnN0cmFjdCBpbnQgZ2V0QmFzZU51
bWJlcigpOwoJcHVibGljIGFic3RyYWN0IFN0cmluZyBnZXRDb21tZW50cygp
OwogICAgLy8gVGhpcyBpcyBkYW5nZXJvdXMsIGNhdXNlcyBldmVydGhpbmcg
dG8gYnJlYWsKICAgIC8vIHB1YmxpYyBhYnN0cmFjdCB2b2lkIGZpbGxCYXNl
TnVtYmVyKCk7CgoKCS8vcHVibGljIHZvaWQgc2V0QWNjZXNzaW9uKFN0cmlu
ZyBzZXF1ZW5jZU5hbWUpIHsKCQkvL3RoaXMuYWNjZXNzaW9uID0gc2VxdWVu
Y2VOYW1lOwoJCS8vfQoKICAgIHB1YmxpYyB2b2lkIHNldEZpbGUoU3RyaW5n
IGZpbGVuYW1lKSB7CgkJdGhpcy5hY2Nlc3Npb24gPSBmaWxlbmFtZTsKCX0K
CgoJLy9wdWJsaWMgU3RyaW5nIGdldEFjY2Vzc2lvbigpIHsKCQkvL3JldHVy
biAoYWNjZXNzaW9uKTsKCQkvL30KCXB1YmxpYyBTdHJpbmcgZ2V0RmlsZSgp
IHsKIAogCQlyZXR1cm4gKGFjY2Vzc2lvbik7CiAKCX0KCXB1YmxpYyB2b2lk
IHNldE9mZlNldChpbnQgT2ZmU2V0KSB7CgkJdGhpcy5PZmZTZXQgPSBPZmZT
ZXQ7CgkJfQoKCXB1YmxpYyBTdHJpbmcgZ2V0T2ZmU2V0KCkgewoJCXJldHVy
biAoIiIrT2ZmU2V0KTsKCQl9CnB1YmxpYyBpbnQgZ2V0T2ZmU2V0aW50KCkg
ewoJCXJldHVybiAoT2ZmU2V0KTsKCQl9CglwdWJsaWMgU3RyaW5nIGdldFNl
cXVlbmNlKCkgewoJCXJldHVybiAobmV3IFN0cmluZyhiYXNlKSk7CgkJfQoK
CXB1YmxpYyBjaGFyIGdldEJhc2UoaW50IHgpIHsKCQlyZXR1cm4gYmFzZVt4
XTsKCQl9CgkJLy8gc2ltaWxhciB0byBwcmVleGlzdGluZyBndXkgYnV0IGRv
ZXMgc29tZXRoaW5nIGRpZmZlcmVudAoJCXB1YmxpYyBpbnQgZ2V0QmFzZU51
bWJlcihpbnQgeCl7CgkJCXJldHVybiBiYXNlTnVtbGlzdFt4XTsKCgkJfQoJ
CS8vIG15b3duIGZ1bmN0aW9uLCBpbnZlcnNlIG9mIHRoZSBnZXRCYXNlUG9z
aXRpb24KCQkvLyBnaXZlIG91dHMgdGhlIGJhc2UgbnVtYmVyLCBnaXZlbiB0
aGUgcG9zaXRpb24KCQlwdWJsaWMgaW50IGludmVydEJhc2VQb3NpdGlvbihp
bnQgeCkgewoJCQkgLy9SQVZJIEkgcHV0IGluIHRoZXNlIHNhZmV0eSBmZWF0
dXJlcy4KCQkJaWYoeCA8IGJhc2VQb3NpdGlvblswXSkgcmV0dXJuIDA7CgkJ
CWlmKHg+IGJhc2VQb3NpdGlvbltiYXNlUG9zaXRpb24ubGVuZ3RoLTFdKSBy
ZXR1cm4gYmFzZVBvc2l0aW9uLmxlbmd0aC0xOwoJCQlmb3IoaW50IGk9MDtp
IDwgKGJhc2VQb3NpdGlvbi5sZW5ndGgtMSk7aSsrKXsKCQkJICBpZih4ID49
IGJhc2VQb3NpdGlvbltpXSAmJiB4IDwgYmFzZVBvc2l0aW9uW2krMV0pCgkJ
CSAgewoJCQkgICAgaWYoeD4oYmFzZVBvc2l0aW9uW2ldK2Jhc2VQb3NpdGlv
bltpKzFdKS8yKSByZXR1cm4gKGkrMSk7CgkJCQllbHNlIHJldHVybiBpOwoJ
CQkgICB9CgkJICAgICAgfQoJCQlyZXR1cm4gMTIzNDsKICAgICAgIAl9Cgog
ICAgcHVibGljIGludCBnZXRCYXNlQ291bnQoKXsKCXJldHVybiBiYXNlUG9z
aXRpb24ubGVuZ3RoOwogICAgfQoKCglwdWJsaWMgaW50IGdldEJhc2VQb3Np
dGlvbihpbnQgeCkgewoJICAgICAvL1JBVkkgSSBwdXQgaW4gdGhlc2Ugc2Fm
ZXR5IGZlYXR1cmVzLgoJCWlmKHg+IChiYXNlUG9zaXRpb24ubGVuZ3RoLTEp
KSByZXR1cm4gYmFzZVBvc2l0aW9uWyhiYXNlUG9zaXRpb24ubGVuZ3RoLTEp
XTsKCQlpZih4PCAwKSByZXR1cm4gYmFzZVBvc2l0aW9uWzBdOwoKCQlyZXR1
cm4gYmFzZVBvc2l0aW9uW3hdOwoJCX0KCglwdWJsaWMgaW50IGdldEFUcmFj
ZShpbnQgeCkgewoJCXJldHVybiBBW3hdOwoJCX0KCglwdWJsaWMgaW50IGdl
dENUcmFjZShpbnQgeCkgewoJCXJldHVybiBDW3hdOwoJCX0KCglwdWJsaWMg
aW50IGdldEdUcmFjZShpbnQgeCkgewoJCXJldHVybiBHW3hdOwoJCX0KCglw
dWJsaWMgaW50IGdldFRUcmFjZShpbnQgeCkgewoJCXJldHVybiBUW3hdOwoJ
CX0KCglwdWJsaWMgaW50W10gZ2V0QVRyYWNlKCkgewoJCXJldHVybiBBOwoJ
CX0KCglwdWJsaWMgaW50W10gZ2V0Q1RyYWNlKCkgewoJCXJldHVybiBDOwoJ
CX0KCglwdWJsaWMgaW50W10gZ2V0R1RyYWNlKCkgewoJCXJldHVybiBHOwoJ
CX0KCglwdWJsaWMgaW50W10gZ2V0VFRyYWNlKCkgewoJCXJldHVybiBUOwoJ
CX0KCglwdWJsaWMgYnl0ZVtdIGdldFF1YWxpdHkoKSB7CgkJcmV0dXJuIHF1
YWxpdHk7Cgl9CgoJcHVibGljIGJvb2xlYW4gZ2V0T3JpZ2luYWxPcmllbnRh
dGlvbigpewoJCXJldHVybiAob3JpZ2luYWxPcmllbnRhdGlvbik7Cgl9CgoJ
cHVibGljIHZvaWQgc2V0T3JpZ2luYWxPcmllbnRhdGlvbihib29sZWFuIG9y
aWdPcmllbil7CgkJdGhpcy5vcmlnaW5hbE9yaWVudGF0aW9uID0gb3JpZ09y
aWVuOwoJfQoKICAgICBwdWJsaWMgdm9pZCBjb21wbGVtZW50KCkgewoJLy8g
Q29udmVydCB0aGUgc2VxdWVuY2UgaW50byBpdHMgcmV2ZXJzZSBhbmQgY29t
cGxlbWVudCAob3Bwb3NpdGUgc3RyYW5kKQoJLy8gTXVzdCBkbyB0aGlzIGZv
ciB0aGUgYmFzZSBjYWxscywgYW5kIHRoZSB0cmFjZXMKCWludFtdCXRlbXA7
CgoJLy8gRWFzaWVzdCB0byBzd2l0Y2ggaXMgdGhlIHF1YWxpdHkgdmFsdWVz
CglyZXZlcnNlX2J5dGVBcnJheShxdWFsaXR5KTsKCgkvLyBSZXZlcnNlIHRo
ZSB0cmFjZXMgYW5kIGNvbXBsZW1lbnQKCXJldmVyc2VfaW50QXJyYXkoQSk7
CglyZXZlcnNlX2ludEFycmF5KEMpOwoJcmV2ZXJzZV9pbnRBcnJheShHKTsK
CXJldmVyc2VfaW50QXJyYXkoVCk7Cgl0ZW1wID0gQTsKCUEgPSBUOwoJVCA9
IHRlbXA7Cgl0ZW1wID0gQzsKCUMgPSBHOwoJRyA9IHRlbXA7Cgl0ZW1wID0g
bnVsbDsKCgkvLyBSZXZlcnNlIGJhc2UgY2FsbCBwb3NpdGlvbiBpbmZvcm1h
dGlvbgoJcmV2ZXJzZV9pbnRBcnJheShiYXNlUG9zaXRpb24pOwoJaW50IGxh
c3RTYW1wbGUgPSAgZ2V0VHJhY2VMZW5ndGgoKSAtIDE7Cglmb3IgKGludCBp
ID0gMDsgaSA8IGJhc2VQb3NpdGlvbi5sZW5ndGg7IGkrKykgewoJCWJhc2VQ
b3NpdGlvbltpXSA9IGxhc3RTYW1wbGUgLSBiYXNlUG9zaXRpb25baV07Cgl9
CgoJLy8gTm93IHRoZSBiYXNlIGNoYXJhY3RlcnMgdGhlbXNlbHZlcwoJcmV2
ZXJzZV9jaGFyQXJyYXkoYmFzZSk7Cglmb3IgKGludCBpID0gMDsgaSA8IGJh
c2UubGVuZ3RoOyBpKyspIHsKCQliYXNlW2ldID0gIGNvbXBsZW1lbnQoYmFz
ZVtpXSk7Cgl9CgoJb3JpZ2luYWxPcmllbnRhdGlvbiA9ICEgb3JpZ2luYWxP
cmllbnRhdGlvbjsKCglyZXR1cm47CiAgfQoKCXB1YmxpYyBzdGF0aWMgZmlu
YWwgdm9pZCByZXZlcnNlX2J5dGVBcnJheSAoYnl0ZVtdIGFycil7CgkJYnl0
ZQl0ZW1wOwoJCWludAlhcnJMYXN0ID0gYXJyLmxlbmd0aCAtIDE7CgkJaW50
CW1pZHdheSA9IChhcnIubGVuZ3RoKSAvIDI7CgoJCWZvciAoaW50IGkgPSAw
OyBpIDwgbWlkd2F5OyBpKyspewoJCQl0ZW1wID0gYXJyW2ldOwoJCQlhcnJb
aV0gPSBhcnJbYXJyTGFzdCAtIGldOwoJCQlhcnJbYXJyTGFzdCAtIGldID0g
dGVtcDsKCQkJfQoJCXJldHVybjsKCQl9CgoJcHVibGljIHN0YXRpYyBmaW5h
bCB2b2lkIHJldmVyc2VfY2hhckFycmF5IChjaGFyW10gYXJyKXsKCQljaGFy
CXRlbXA7CgkJaW50CWFyckxhc3QgPSBhcnIubGVuZ3RoIC0gMTsKCQlpbnQJ
bWlkd2F5ID0gKGFyci5sZW5ndGgpIC8gMjsKCgkJZm9yIChpbnQgaSA9IDA7
IGkgPCBtaWR3YXk7IGkrKyl7CgkJCXRlbXAgPSBhcnJbaV07CgkJCWFycltp
XSA9IGFyclthcnJMYXN0IC0gaV07CgkJCWFyclthcnJMYXN0IC0gaV0gPSB0
ZW1wOwoJCQl9CgkJcmV0dXJuOwoJCX0KCglwdWJsaWMgc3RhdGljIGZpbmFs
IHZvaWQgcmV2ZXJzZV9pbnRBcnJheSAoaW50W10gYXJyKXsKCQlpbnQJdGVt
cDsKCQlpbnQJYXJyTGFzdCA9IGFyci5sZW5ndGggLSAxOwoJCWludAltaWR3
YXkgPSAoYXJyLmxlbmd0aCkgLyAyOwoKCQlmb3IgKGludCBpID0gMDsgaSA8
IG1pZHdheTsgaSsrKXsKCQkJdGVtcCA9IGFycltpXTsKCQkJYXJyW2ldID0g
YXJyW2Fyckxhc3QgLSBpXTsKCQkJYXJyW2Fyckxhc3QgLSBpXSA9IHRlbXA7
CgkJCX0KCQlyZXR1cm47CgkJfQoKCXB1YmxpYyBzdGF0aWMgZmluYWwgY2hh
ciBjb21wbGVtZW50IChjaGFyIGxldHRlcikgewoJCXJldHVybiAoY29tcGxl
bWVudENoYXJzWyhpbnQpbGV0dGVyXSk7CgkJfQoKCXN0YXRpYyB7CgkJLy8g
SW5pdGlhbGlzZSB0aGUgY29tcGxlbWVudCBjaGFycyB0YWJsZQoJCWZvciAo
aW50IGkgPSAwOyBpIDw9IENocm9tYXRvZ3JhbS5NQVhfQVNDSUk7IGkrKyl7
CgkJCWNvbXBsZW1lbnRDaGFyc1tpXSA9ICdOJzsKCQkJfQoJCWNvbXBsZW1l
bnRDaGFyc1snYSddID0gJ3QnOwoJCWNvbXBsZW1lbnRDaGFyc1snQSddID0g
J1QnOwoJCWNvbXBsZW1lbnRDaGFyc1sndCddID0gJ2EnOwoJCWNvbXBsZW1l
bnRDaGFyc1snVCddID0gJ0EnOwoJCWNvbXBsZW1lbnRDaGFyc1sndSddID0g
J2EnOwoJCWNvbXBsZW1lbnRDaGFyc1snVSddID0gJ0EnOwoJCWNvbXBsZW1l
bnRDaGFyc1snYyddID0gJ2cnOwoJCWNvbXBsZW1lbnRDaGFyc1snQyddID0g
J0cnOwoJCWNvbXBsZW1lbnRDaGFyc1snZyddID0gJ2MnOwoJCWNvbXBsZW1l
bnRDaGFyc1snRyddID0gJ0MnOwoJCX0KCgogIHB1YmxpYyBzdGF0aWMgQ2hy
b21hdG9ncmFtIGNyZWF0ZUNocm9tYXRvZ3JhbVN1YlR5cGUoSW5wdXRTdHJl
YW0gc3RyZWFtSW4sYm9vbGVhbiBzdGFydENvbXApCiAgICB0aHJvd3MgSU9F
eGNlcHRpb24gewoJQ2hyb21hdG9ncmFtLnN0YXJ0Q29tcCA9IHN0YXJ0Q29t
cDsKCXJldHVybiBjcmVhdGVDaHJvbWF0b2dyYW1TdWJUeXBlKHN0cmVhbUlu
KTsKfSAKCgkvKioKCURlcGVuZGluZyBvbiBjaHJvbWF0b2dyYW0gdHlwZSAo
QUJJIG9yIFNDRiksIG5lZWQgdG8gaW5zdGFudGlhdGUKCWEgZGlmZmVyZW50
IHN1YiBjbGFzcyBvZiBjaHJvbWF0b2dyYW0uIFRoaXMgbWV0aG9kIGFjdHMg
YXMgYQoJY2hyb21hdG9ncmFtIGZhY3RvcnkuCgkqLwogIHB1YmxpYyBzdGF0
aWMgQ2hyb21hdG9ncmFtIGNyZWF0ZUNocm9tYXRvZ3JhbVN1YlR5cGUoSW5w
dXRTdHJlYW0gc3RyZWFtSW4pCiAgICB0aHJvd3MgSU9FeGNlcHRpb24gewog
ICAgICBDaHJvbWF0b2dyYW0JY2hyb21EYXRhID0gbnVsbDsKCiAgICAgIERh
dGFJbnB1dFN0cmVhbSBtYWdpY0RJTiA9IG5ldyBEYXRhSW5wdXRTdHJlYW0o
c3RyZWFtSW4pOwogICAgICBpbnQgbWFnaWNOdW0gPSBtYWdpY0RJTi5yZWFk
SW50KCk7CiAgICAgIG1hZ2ljRElOLnJlc2V0KCk7CiAgICAgIHN3aXRjaCht
YWdpY051bSl7CiAgICAgIGNhc2UgQUJJTWFnaWNOdW06CgljaHJvbURhdGEg
PSBuZXcgQUJJQ2hyb21hdG9ncmFtKHN0cmVhbUluKTsKCWJyZWFrOwogICAg
ICBjYXNlIFNDRk1hZ2ljTnVtOgoJY2hyb21EYXRhID0gbmV3IFNDRkNocm9t
YXRvZ3JhbShzdHJlYW1Jbik7CglicmVhazsKICAgICAgZGVmYXVsdDoKCXRo
cm93IG5ldyBJT0V4Y2VwdGlvbigiVW5rbm93biBmaWxlIHR5cGUiKTsKICAg
ICAgfQogICAgICByZXR1cm4oY2hyb21EYXRhKTsKICB9Cn0KCgoKAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZ2VuZXJhbC9TQ0ZD
aHJvbWF0b2dyYW0uamF2YQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEw
MDY2NCAAICA0MjAzIAAgICAxMzcgACAgICAgIDIxNTIyICA3MTIwMjM3Mzc2
ICAxNTAzNgAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGdpbG1hbmIAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAc25wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAABwYWNrYWdlIGNzaGw7CgppbXBvcnQgamF2YS5hd3QuKjsKaW1wb3J0
IGphdmEuaW8uKjsKLyoqCkEgc3ViY2xhc3MgZm9yIGhhbmRsaW5nIFNDRiBm
b3JtYXQgRE5BIHNlcXVlbmNlIHRyYWNlIGZpbGUgcGFyc2luZy4KQHNlZSBD
aHJvbWF0b2dyYW0KQHNlZSBBQklDaHJvbWF0b2dyYW0KKi8KCnB1YmxpYyBj
bGFzcyBTQ0ZDaHJvbWF0b2dyYW0gZXh0ZW5kcyBDaHJvbWF0b2dyYW0gewoK
CS8vIHB1YmxpYyB2YXJpYWJsZXMKICBwdWJsaWMgc3RhdGljIGZpbmFsIGlu
dCBNYWdpY051bSA9CiAgKCgoKChpbnQpJy4nPDw4KSsoaW50KSdzJzw8OCkr
KGludCknYyc8PDgpKyhpbnQpJ2YnKTsKCiAgLy8gSW50ZXJuYWwgdGVtcG9y
YXJ5IHBhcnNpbmcgdmFyaWFibGVzCiAgcHJpdmF0ZSBpbnQgY29tbWVudHNP
ZmZzZXQsIGNvbW1lbnRzU2l6ZSwgc2FtcGxlU2l6ZTsKICBwcml2YXRlIGlu
dCBzYW1wbGVPZmZzZXQsYmFzZXNPZmZzZXQ7CiAgcHJpdmF0ZSBpbnQgYnl0
ZXNSZWFkLCBiYXNlTnVtLCBjb2RlU2V0LCBzYW1wbGVOdW07CiAgcHJpdmF0
ZSBTdHJpbmcgdmVyc2lvblN0cmluZzsKICBwcml2YXRlIGZsb2F0IHZlcnNp
b25OdW07CiAgcHJpdmF0ZSBEYXRhSW5wdXRTdHJlYW0gZmlsdGVySU47Cgog
ICAgLy9CcmlhbiBOZWVkIHByb2JhYmlsaXRpZXMgZm9yIEFDR1QKICAgIHBy
aXZhdGUgaW50W10gcHJvYl9BOwogICAgcHJpdmF0ZSBpbnRbXSBwcm9iX0M7
CiAgICBwcml2YXRlIGludFtdIHByb2JfRzsKICAgIHByaXZhdGUgaW50W10g
cHJvYl9UOwogICAgCiAgcHVibGljIFNDRkNocm9tYXRvZ3JhbShJbnB1dFN0
cmVhbSBpbikgdGhyb3dzIElPRXhjZXB0aW9uIHsKICAgIHN1cGVyKCk7CiAg
ICByZWFkKGluKTsKICAgIGZpbGxiYXNlTnVtYmVyKCk7CiAgICBpZihDaHJv
bWF0b2dyYW0uc3RhcnRDb21wKXsKCWNvbXBsZW1lbnQoKTsKICAgIH0gCiAg
fQoKCiAgcHVibGljIHZvaWQgZmlsbGJhc2VOdW1iZXIyKCkgewoJICAvLyBi
YXNlcG9zaXRpb24gaG9sZHMgdGhlIHBvc2l0aW9uIG9mIHRoZSBiYXNlIGlu
IHBpeGVscwoJICAvLyBiYXNlTnVtbGlzdCBob2xkcyB0aGUgbmVhcmVzdCBi
YXNlIGZvciBlYWNoCgkgIC8vICBwaXhlbCBwb3NpdGlvbiwgdGhpcyBpcyB1
c2VmdWwgd2hlbiBtb3ZpbmcgYmFzZWQgb24gcGl4ZWwuCgliYXNlTnVtbGlz
dCA9IG5ldyBpbnRbYmFzZVBvc2l0aW9uW2Jhc2VQb3NpdGlvbi5sZW5ndGgt
MV1dOwoJZm9yKGludCBpPTA7aTxiYXNlTnVtbGlzdC5sZW5ndGg7aSsrKXsK
CQliYXNlTnVtbGlzdFtpXSA9IGludmVydEJhc2VQb3NpdGlvbihpKTsKICAg
IH0KCiAgfQoKIHB1YmxpYyB2b2lkIGZpbGxiYXNlTnVtYmVyKCkgewoJICAv
LyBiYXNlcG9zaXRpb24gaG9sZHMgdGhlIHBvc2l0aW9uIG9mIHRoZSBiYXNl
IGluIHBpeGVscwoJICAvLyBiYXNlTnVtbGlzdCBob2xkcyB0aGUgbmVhcmVz
dCBiYXNlIGZvciBlYWNoCgkgIC8vICBwaXhlbCBwb3NpdGlvbiwgdGhpcyBp
cyB1c2VmdWwgd2hlbiBtb3ZpbmcgYmFzZWQgb24gcGl4ZWwuCgliYXNlTnVt
bGlzdCA9IG5ldyBpbnRbYmFzZVBvc2l0aW9uW2Jhc2VQb3NpdGlvbi5sZW5n
dGgtMV0rMV07CgkvL1N5c3RlbS5vdXQucHJpbnRsbigiYmFzZVBvc2l0aW9u
IGxlbmd0aCBpcyAiICsgYmFzZVBvc2l0aW9uWyhiYXNlUG9zaXRpb24ubGVu
Z3RoIC0xKV0pOwoKCglmb3IoaW50IHggPTA7eDw9KGJhc2VQb3NpdGlvblsw
XStiYXNlUG9zaXRpb25bMV0pLzI7eCsrKXsKCQkvL1N5c3RlbS5vdXQucHJp
bnRsbigieCBpcyAiK3gpOwoJCWJhc2VOdW1saXN0W3hdPTA7Cgl9Cglmb3Io
aW50IHggPShpbnQpIE1hdGgucm91bmQoKGJhc2VQb3NpdGlvbltiYXNlUG9z
aXRpb24ubGVuZ3RoLTJdICsKCSAgYmFzZVBvc2l0aW9uW2Jhc2VQb3NpdGlv
bi5sZW5ndGgtMV0pLzIpOwoJeDw9YmFzZVBvc2l0aW9uW2Jhc2VQb3NpdGlv
bi5sZW5ndGgtMV07eCsrKXsKCQkvL1N5c3RlbS5vdXQucHJpbnRsbigieCBp
cyAiK3gpOwoJCQliYXNlTnVtbGlzdFt4XT1iYXNlUG9zaXRpb24ubGVuZ3Ro
LTE7Cgl9CiAgICBmb3IoaW50IGk9MTtpPChiYXNlUG9zaXRpb24ubGVuZ3Ro
LTIpOyBpKyspewoJCWZvcihpbnQgeCA9KGludCkgTWF0aC5yb3VuZCgoYmFz
ZVBvc2l0aW9uW2ktMV0gK2Jhc2VQb3NpdGlvbltpXSkvMik7CgkgIHg8PShi
YXNlUG9zaXRpb25baV0rYmFzZVBvc2l0aW9uW2krMV0pLzI7eCsrKXsKCQkg
IC8vU3lzdGVtLm91dC5wcmludGxuKCJ4IGlzICIreCk7CgkJYmFzZU51bWxp
c3RbeF09aTsKCX0KCiAgfQp9CgogICAgLy9CcmlhbiBXcml0dGVuIHRvIHN1
aXQgbmVlZHMgb2YgV0lDR1IuLi4KICAgIAogIHB1YmxpYyB2b2lkIHdyaXRl
KE91dHB1dFN0cmVhbSBPVVQpIHsKICAgICAgRGF0YU91dHB1dFN0cmVhbSBm
T3V0ID0gbmV3IERhdGFPdXRwdXRTdHJlYW0oT1VUKTsKICAgICAgCiAgfQoK
ICBwdWJsaWMgdm9pZCByZWFkKElucHV0U3RyZWFtIGluKSB0aHJvd3MgSU9F
eGNlcHRpb257CiAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigicmVhZCBvZiBT
Q0ZDaCBjYWxsZWQsIG1hZ2ljIE51bWJlciBpcyAiKyBNYWdpY051bSk7CiAg
ICBmaWx0ZXJJTiA9IG5ldyBEYXRhSW5wdXRTdHJlYW0oaW4pOwogICAgYnl0
ZXNSZWFkID0gMDsKICAgIGZpbHRlcklOLnNraXBCeXRlcyg0KTsKICAgIHNh
bXBsZU51bSA9IGZpbHRlcklOLnJlYWRJbnQoKTsKICAgIHNhbXBsZU9mZnNl
dCA9IGZpbHRlcklOLnJlYWRJbnQoKTsKICAgIGJhc2VOdW0gPSBmaWx0ZXJJ
Ti5yZWFkSW50KCk7CiAgICBmaWx0ZXJJTi5za2lwKDgpOwogICAgYmFzZXNP
ZmZzZXQgPSBmaWx0ZXJJTi5yZWFkSW50KCk7CiAgICBjb21tZW50c1NpemUg
PSBmaWx0ZXJJTi5yZWFkSW50KCk7CiAgICBjb21tZW50c09mZnNldCA9IGZp
bHRlcklOLnJlYWRJbnQoKTsKICAgIGludCBpOwogICAgdmVyc2lvblN0cmlu
ZyA9ICIiOwogICAgZm9yIChpPTA7aTw0O2krKykgewogICAgICB2ZXJzaW9u
U3RyaW5nICs9IChjaGFyKSBmaWx0ZXJJTi5yZWFkVW5zaWduZWRCeXRlKCk7
CiAgICB9CiAgICB2ZXJzaW9uTnVtID0gRmxvYXQudmFsdWVPZih2ZXJzaW9u
U3RyaW5nKS5mbG9hdFZhbHVlKCk7CiAgICBzYW1wbGVTaXplID0gZmlsdGVy
SU4ucmVhZEludCgpOwogICAgY29kZVNldCA9IGZpbHRlcklOLnJlYWRJbnQo
KTsKICAgIGJ5dGVzUmVhZCA9IDQ4OwoKICAgIC8vIGRldGVybWluZSBvcmRl
ciBvZiBmaWxlIGNvbXBvbmVudHMgYW5kIHRoZW4gcmVhZCB0aGVtCiAgICBp
ZiAoKGJhc2VzT2Zmc2V0IDwgc2FtcGxlT2Zmc2V0KSAmJiAoYmFzZXNPZmZz
ZXQgPCBjb21tZW50c09mZnNldCkpIHsKICAgICAgcmVhZEJhc2VzKCk7CiAg
ICAgIGlmIChzYW1wbGVPZmZzZXQgPCBjb21tZW50c09mZnNldCkgewoJcmVh
ZFNhbXBsZSgpOwoJcmVhZENvbW1lbnRzKCk7CiAgICAgIH0KICAgICAgZWxz
ZSB7CglyZWFkQ29tbWVudHMoKTsKCXJlYWRTYW1wbGUoKTsKICAgICAgfQog
ICAgfQogICAgZWxzZSBpZiAoc2FtcGxlT2Zmc2V0IDwgY29tbWVudHNPZmZz
ZXQpIHsKICAgICAgcmVhZFNhbXBsZSgpOwogICAgICBpZiAoYmFzZXNPZmZz
ZXQgPCBjb21tZW50c09mZnNldCkgewoJcmVhZEJhc2VzKCk7CglyZWFkQ29t
bWVudHMoKTsKICAgICAgfQogICAgICBlbHNlIHsKCXJlYWRDb21tZW50cygp
OwoJcmVhZEJhc2VzKCk7CiAgICAgIH0KICAgIH0KICAgIGVsc2UgewogICAg
ICByZWFkQ29tbWVudHMoKTsKICAgICAgaWYgKHNhbXBsZU9mZnNldCA8IGJh
c2VzT2Zmc2V0KSB7CglyZWFkU2FtcGxlKCk7CglyZWFkQmFzZXMoKTsKICAg
ICAgfQogICAgICBlbHNlIHsKCXJlYWRCYXNlcygpOwoJcmVhZFNhbXBsZSgp
OwogICAgICB9CiAgICB9CiAgfQoKICBwcml2YXRlIHZvaWQgcmVhZEJhc2Vz
KCkgdGhyb3dzIElPRXhjZXB0aW9uewogICAgZmlsdGVySU4uc2tpcEJ5dGVz
KGJhc2VzT2Zmc2V0IC0gYnl0ZXNSZWFkKTsKICAgIGludCBpOwogICAgYmFz
ZVBvc2l0aW9uID0gbmV3IGludFtiYXNlTnVtXTsKICAgIHByb2JfQSA9IG5l
dyBpbnRbYmFzZU51bV07CiAgICBwcm9iX0MgPSBuZXcgaW50W2Jhc2VOdW1d
OwogICAgcHJvYl9HID0gbmV3IGludFtiYXNlTnVtXTsKICAgIHByb2JfVCA9
IG5ldyBpbnRbYmFzZU51bV07CiAgICBiYXNlID0gbmV3IGNoYXJbYmFzZU51
bV07CiAgICBpZiAodmVyc2lvbk51bSA8IDMuMCkgewogICAgICBmb3IgKGk9
MDtpPGJhc2VOdW07aSsrKSB7CgliYXNlUG9zaXRpb25baV0gPSBmaWx0ZXJJ
Ti5yZWFkSW50KCk7CgkvL2ZpbHRlcklOLnNraXBCeXRlcyg0KTsKCS8vQnJp
YW4gRmlsbCBwcm9iYWJpbGl0eSBtYXRyaWNlcyBmb3IgbGF0ZXIgcGFyc2lu
Zy4uLgoJcHJvYl9BW2ldID0gZmlsdGVySU4ucmVhZFVuc2lnbmVkQnl0ZSgp
OwoJcHJvYl9DW2ldID0gZmlsdGVySU4ucmVhZFVuc2lnbmVkQnl0ZSgpOwoJ
cHJvYl9HW2ldID0gZmlsdGVySU4ucmVhZFVuc2lnbmVkQnl0ZSgpOwoJcHJv
Yl9UW2ldID0gZmlsdGVySU4ucmVhZFVuc2lnbmVkQnl0ZSgpOwoJLy9fRW5k
IEJyaWFuCgliYXNlW2ldID0gKGNoYXIpIGZpbHRlcklOLnJlYWRVbnNpZ25l
ZEJ5dGUoKTsKCWZpbHRlcklOLnNraXBCeXRlcygzKTsKICAgICAgfQogICAg
fQogICAgZWxzZSB7CiAgICAgIGZvciAoaT0wO2k8YmFzZU51bTtpKyspIHsK
CWJhc2VQb3NpdGlvbltpXSA9IGZpbHRlcklOLnJlYWRJbnQoKTsKICAgICAg
fQogICAgICBmaWx0ZXJJTi5za2lwQnl0ZXMoNCAqIGJhc2VOdW0pOwogICAg
ICBmb3IgKGk9MDtpPGJhc2VOdW07aSsrKSB7CgliYXNlW2ldID0gKGNoYXIp
IGZpbHRlcklOLnJlYWRVbnNpZ25lZEJ5dGUoKTsKICAgICAgfQogICAgICBm
aWx0ZXJJTi5za2lwQnl0ZXMoMyAqIGJhc2VOdW0pOwogICAgfQogICAgYnl0
ZXNSZWFkID0gYmFzZXNPZmZzZXQgKyBiYXNlTnVtICogMTI7CiAgfQoKICBw
cml2YXRlIHZvaWQgcmVhZFNhbXBsZSgpIHRocm93cyBJT0V4Y2VwdGlvbiB7
CgogICAgZmlsdGVySU4uc2tpcEJ5dGVzKHNhbXBsZU9mZnNldCAtIGJ5dGVz
UmVhZCk7CiAgICBBID0gbmV3IGludFtzYW1wbGVOdW1dOwogICAgQyA9IG5l
dyBpbnRbc2FtcGxlTnVtXTsKICAgIEcgPSBuZXcgaW50W3NhbXBsZU51bV07
CiAgICBUID0gbmV3IGludFtzYW1wbGVOdW1dOwogICAgaW50IGk7CiAgICBp
ZiAoKHNhbXBsZVNpemUgPT0gMikgJiYgKHZlcnNpb25OdW0gPCAzLjApKSB7
CiAgICAgIGZvciAoaT0wO2k8c2FtcGxlTnVtO2krKykgewoJQVtpXSA9IGZp
bHRlcklOLnJlYWRVbnNpZ25lZFNob3J0KCk7CglDW2ldID0gZmlsdGVySU4u
cmVhZFVuc2lnbmVkU2hvcnQoKTsKCUdbaV0gPSBmaWx0ZXJJTi5yZWFkVW5z
aWduZWRTaG9ydCgpOwoJVFtpXSA9IGZpbHRlcklOLnJlYWRVbnNpZ25lZFNo
b3J0KCk7CiAgICAgIH0KICAgIH0KICAgIGVsc2UgaWYgKChzYW1wbGVTaXpl
ID09IDEpICYmICh2ZXJzaW9uTnVtIDwgMy4wKSkgewogICAgICBmb3IgKGk9
MDtpPHNhbXBsZU51bTtpKyspIHsKCUFbaV0gPSBmaWx0ZXJJTi5yZWFkVW5z
aWduZWRCeXRlKCk7CglDW2ldID0gZmlsdGVySU4ucmVhZFVuc2lnbmVkQnl0
ZSgpOwoJR1tpXSA9IGZpbHRlcklOLnJlYWRVbnNpZ25lZEJ5dGUoKTsKCVRb
aV0gPSBmaWx0ZXJJTi5yZWFkVW5zaWduZWRCeXRlKCk7CiAgICAgIH0KICAg
IH0KICAgIGVsc2UgaWYgKChzYW1wbGVTaXplID09IDIpICYmICh2ZXJzaW9u
TnVtID49IDMuMCkpIHsKICAgICAgZm9yIChpPTA7aTxzYW1wbGVOdW07aSsr
KSB7CglBW2ldID0gZmlsdGVySU4ucmVhZFNob3J0KCk7CiAgICAgIH0KICAg
ICAgQSA9IGRlbHRhRGVsdGEoQSk7CiAgICAgIGZvciAoaT0wO2k8c2FtcGxl
TnVtO2krKykgewoJQ1tpXSA9IGZpbHRlcklOLnJlYWRTaG9ydCgpOwogICAg
ICB9CiAgICAgIEMgPSBkZWx0YURlbHRhKEMpOwogICAgICBmb3IgKGk9MDtp
PHNhbXBsZU51bTtpKyspIHsKCUdbaV0gPSBmaWx0ZXJJTi5yZWFkU2hvcnQo
KTsKICAgICAgfQogICAgICBHID0gZGVsdGFEZWx0YShHKTsKICAgICAgZm9y
IChpPTA7aTxzYW1wbGVOdW07aSsrKSB7CglUW2ldID0gZmlsdGVySU4ucmVh
ZFNob3J0KCk7CiAgICAgIH0KICAgICAgVCA9IGRlbHRhRGVsdGEoVCk7Cgog
ICAgfQogICAgZWxzZSBpZiAoKHNhbXBsZVNpemUgPT0gMSkgJiYgKHZlcnNp
b25OdW0gPj0gMy4wKSkgewogICAgICBmb3IgKGk9MDtpPHNhbXBsZU51bTtp
KyspIHsKCUFbaV0gPSBmaWx0ZXJJTi5yZWFkQnl0ZSgpOwogICAgICB9CiAg
ICAgIEEgPSBkZWx0YURlbHRhKEEpOwogICAgICBmb3IgKGk9MDtpPHNhbXBs
ZU51bTtpKyspIHsKCUNbaV0gPSBmaWx0ZXJJTi5yZWFkQnl0ZSgpOwogICAg
ICB9CiAgICAgIEMgPSBkZWx0YURlbHRhKEMpOwogICAgICBmb3IgKGk9MDtp
PHNhbXBsZU51bTtpKyspIHsKCUdbaV0gPSBmaWx0ZXJJTi5yZWFkQnl0ZSgp
OwogICAgICB9CiAgICAgIEcgPSBkZWx0YURlbHRhKEcpOwogICAgICBmb3Ig
KGk9MDtpPHNhbXBsZU51bTtpKyspIHsKCVRbaV0gPSBmaWx0ZXJJTi5yZWFk
Qnl0ZSgpOwogICAgICB9CiAgICAgIFQgPSBkZWx0YURlbHRhKFQpOwogICAg
fQogICAgYnl0ZXNSZWFkID0gc2FtcGxlT2Zmc2V0ICsgKHNhbXBsZU51bSAq
IHNhbXBsZVNpemUgKiA0KTsKICB9CgogIHByaXZhdGUgdm9pZCByZWFkQ29t
bWVudHMoKSB0aHJvd3MgSU9FeGNlcHRpb24gewogICAgaW50IGk7CiAgICBj
aGFyW10gY0FycmF5ID0gbmV3IGNoYXJbY29tbWVudHNTaXplXTsKICAgIGZp
bHRlcklOLnNraXBCeXRlcyhjb21tZW50c09mZnNldCAtIGJ5dGVzUmVhZCk7
CiAgICBmb3IgKGk9MDtpPGNvbW1lbnRzU2l6ZTtpKyspIHsKICAgICAgY0Fy
cmF5W2ldID0gKGNoYXIpIGZpbHRlcklOLnJlYWRVbnNpZ25lZEJ5dGUoKTsK
ICAgIH0KICAgIGNvbW1lbnRzID0gU3RyaW5nLnZhbHVlT2YoY0FycmF5KTsK
ICAgIGJ5dGVzUmVhZCA9IGNvbW1lbnRzT2Zmc2V0ICsgY29tbWVudHNTaXpl
OwogIH0KCiAgcHJpdmF0ZSBpbnRbXSBkZWx0YURlbHRhKGludFtdIHRoZUFy
cmF5KQl7CiAgICBpbnQJaTsKICAgIGludAltYXNrOwogICAgaW50CXBTYW1w
bGU7CgogICAgLyoqCiAgICAgIFRoZSBkZWx0YXMgYXJlIGNhbGN1bGF0ZWQg
YXNzdW1pbmcgYXBwcm9wcmlhdGUgb3ZlcmZsb3cgYXJpdGhtYXRpYwogICAg
ICBmb3IgdGhlIHNhbXBsZSBzaXplLiBJIGZha2UgdGhlIG92ZXIvdW5kZXJm
bG93cyBoZXJlIHRvIGdldCBvbmUKICAgICAgcm91dGluZSB0aGF0IHdvcmtz
IGZvciBib3RoIG9uZSBhbmQgdHdvIGJ5dGUgc21hcGxlcy4KICAgICAgKi8K
ICAgIGlmIChzYW1wbGVTaXplID09IDEpewogICAgICAvLyBtYXNrID0gQnl0
ZS5NQVhfVkFMVUU7CiAgICAgIG1hc2sgPSAyNTU7CiAgICB9CiAgICBlbHNl
CXsKICAgICAgLy8gbWFzayA9IFNob3J0Lk1BWF9WQUxVRTsKICAgICAgbWFz
ayA9IDY1NTM1OwogICAgfQogICAgcFNhbXBsZSA9IDA7CiAgICBmb3IgKGk9
MDtpPHRoZUFycmF5Lmxlbmd0aC0xO2krKykgewogICAgICB0aGVBcnJheVtp
XSA9ICh0aGVBcnJheVtpXSArIHBTYW1wbGUpICYgbWFzazsKICAgICAgcFNh
bXBsZSA9IHRoZUFycmF5W2ldOwogICAgfQogICAgcFNhbXBsZSA9IDA7CiAg
ICBmb3IgKGk9MDtpPHRoZUFycmF5Lmxlbmd0aC0xO2krKykgewogICAgICB0
aGVBcnJheVtpXSA9ICh0aGVBcnJheVtpXSArIHBTYW1wbGUpICYgbWFzazsK
ICAgICAgcFNhbXBsZSA9IHRoZUFycmF5W2ldOwogICAgfQogICAgcmV0dXJu
IHRoZUFycmF5OwogIH0KCiAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzU0NG
KEZpbGUgYUZpbGUpIHRocm93cyBGaWxlTm90Rm91bmRFeGNlcHRpb24sIElP
RXhjZXB0aW9uewogICAgRmlsZUlucHV0U3RyZWFtIGZpbGVJTiA9IG5ldyBG
aWxlSW5wdXRTdHJlYW0oYUZpbGUpOwogICAgRGF0YUlucHV0U3RyZWFtIGZp
bHRJTiA9IG5ldyBEYXRhSW5wdXRTdHJlYW0oZmlsZUlOKTsKICAgIGlmIChm
aWx0SU4ucmVhZEludCgpID09IE1hZ2ljTnVtKSByZXR1cm4gdHJ1ZTsKICAg
IGVsc2UgcmV0dXJuIGZhbHNlOwogIH0KCiAgICBwdWJsaWMgaW50IGdldENv
ZGVTZXQoKSB7CglyZXR1cm4gY29kZVNldDsKICAgIH0KICAgIAogICAgcHVi
bGljIGludCBnZXRCYXNlTnVtYmVyKCkgewoJcmV0dXJuIChpbnQpIGJhc2Uu
bGVuZ3RoOwogICAgfQogICAgCiAgICBwdWJsaWMgaW50IGdldFRyYWNlTGVu
Z3RoKCkgewoJcmV0dXJuIHNhbXBsZU51bTsKICAgIH0KICAgIAogICAgcHVi
bGljIFN0cmluZyBnZXRDb21tZW50cygpIHsKCXJldHVybiBjb21tZW50czsK
ICAgIH0KICAgIAogICAgcHVibGljIFN0cmluZyBnZXRWZXJzaW9uKCkgewoJ
cmV0dXJuIHZlcnNpb25TdHJpbmc7CiAgICB9CiAgICAKICAgIHB1YmxpYyBp
bnQgZ2V0U2FtcGxlT2Zmc2V0KCl7CglyZXR1cm4gc2FtcGxlT2Zmc2V0Owog
ICAgfQogICAgCiAgICBwdWJsaWMgaW50IGdldENvbW1lbnRTaXplKCl7Cgly
ZXR1cm4gY29tbWVudHNTaXplOwogICAgfQogICAgCiAgICBwdWJsaWMgaW50
IGdldFNhbXBsZVNpemUoKXsKCXJldHVybiBzYW1wbGVTaXplOwogICAgfQoK
ICAgIHB1YmxpYyBpbnQgZ2V0QmFzZXNPZmZzZXQoKXsKCXJldHVybiBiYXNl
c09mZnNldDsKICAgIH0KCiAgICBwdWJsaWMgaW50IGdldENvbW1lbnRPZmZz
ZXQoKXsKCXJldHVybiBjb21tZW50c09mZnNldDsKICAgIH0KICAgIAogICAg
cHVibGljIGludFtdIGdldFByb2JhYmlsaXR5KFN0cmluZyB3aGljaFByb2Ip
ewoKCWludFtdIHdoaWNoQnl0ZUFyciA9IG51bGw7CgkKCWlmKHdoaWNoUHJv
Yi5lcXVhbHNJZ25vcmVDYXNlKCJBIikpewoJICAgIHdoaWNoQnl0ZUFyciA9
ICBwcm9iX0E7Cgl9ZWxzZSBpZih3aGljaFByb2IuZXF1YWxzSWdub3JlQ2Fz
ZSgiQyIpKXsKCSAgICB3aGljaEJ5dGVBcnIgPSAgcHJvYl9DOwoJfWVsc2Ug
aWYod2hpY2hQcm9iLmVxdWFsc0lnbm9yZUNhc2UoIkciKSl7CgkgICAgd2hp
Y2hCeXRlQXJyID0gIHByb2JfRzsKCX1lbHNlIGlmKHdoaWNoUHJvYi5lcXVh
bHNJZ25vcmVDYXNlKCJUIikpewoJICAgIHdoaWNoQnl0ZUFyciA9IHByb2Jf
VDsKCX0KICAgIAoJcmV0dXJuIHdoaWNoQnl0ZUFycjsKICAgIH0KfQoJICAg
IAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABnZW5l
cmFsL1RhZ2dlZFJlY29yZC5qYXZhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAMTAwNjY0IAAgIDQyMDMgACAgIDEzNyAAICAgICAgIDI1NDEgIDcw
MDA2MzQwNjIgIDE0MzU3ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAZ2lsbWFuYgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABzbnAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAHBhY2thZ2UgY3NobDsNDQoNDQppbXBvcnQgamF2YS5p
by4qOw0NCi8qKg0NCkEgdXNlZnVsIHNldCBvZiByb3V0aW5lcyBmb3IgaGFu
ZGxpbmcgdGFnZ2VkIHJlY29yZHMgYXMgZm91bmQgaW4NDQpBQkkgZm9ybWF0
IEROQSBzZXF1ZW5jZSB0cmFjZSBmaWxlcy4NDQpAc2VlIEFCSUNocm9tYXRv
Z3JhbQ0NCiovDQ0KDQ0KcHVibGljIGNsYXNzIFRhZ2dlZFJlY29yZCB7DQ0K
CQ0NCglwcml2YXRlIFN0cmluZyB0YWdOYW1lOw0NCglwcml2YXRlIGludCB0
YWdOdW0sIGVOdW0sIGFycmF5TGVuZ3RoLCBkYXRhUmVjb3JkLCBjcnlwdGlj
Ow0NCglwcml2YXRlIHNob3J0IGRhdGFUeXBlLCBlTGVuZ3RoOw0NCglwcml2
YXRlIGNoYXJbXSB0YWdBcnJheTsNDQoJDQ0KCXB1YmxpYyBUYWdnZWRSZWNv
cmQoKSB7fQ0NCglwdWJsaWMgVGFnZ2VkUmVjb3JkKERhdGFJbnB1dCBJTikg
dGhyb3dzIElPRXhjZXB0aW9uIHsNDQoJCXJlYWQoSU4pOw0NCn0NDQoJcHVi
bGljIHZvaWQgcmVhZChEYXRhSW5wdXQgZmlsdGVySU4pIHRocm93cyBJT0V4
Y2VwdGlvbiB7DQ0KCQlpbnQgaTsNDQoJCWNoYXJbXSB0YWdBcnJheSA9IG5l
dyBjaGFyWzRdOw0NCgkJZm9yIChpPTA7aTw0O2krKykgew0NCgkJdGFnQXJy
YXlbaV0gKz0gKGNoYXIpIChmaWx0ZXJJTi5yZWFkVW5zaWduZWRCeXRlKCkp
Ow0NCgl9DQ0KCQl0YWdOYW1lID0gbmV3IFN0cmluZyh0YWdBcnJheSk7DQ0K
CQl0YWdOdW0gPSBmaWx0ZXJJTi5yZWFkSW50KCk7DQ0KCQlkYXRhVHlwZSA9
IGZpbHRlcklOLnJlYWRTaG9ydCgpOw0NCgkJZUxlbmd0aCA9IGZpbHRlcklO
LnJlYWRTaG9ydCgpOw0NCgkJZU51bSA9IGZpbHRlcklOLnJlYWRJbnQoKTsN
DQoJCWFycmF5TGVuZ3RoID0gZmlsdGVySU4ucmVhZEludCgpOw0NCgkJZGF0
YVJlY29yZCA9IGZpbHRlcklOLnJlYWRJbnQoKTsNDQoJCWNyeXB0aWMgPSBm
aWx0ZXJJTi5yZWFkSW50KCk7DQ0KCQkNDQoJfQ0NCglwdWJsaWMgU3RyaW5n
IGdldFRhZ05hbWUoKSB7DQ0KCQlyZXR1cm4gdGFnTmFtZTsNDQoJfQ0NCglw
dWJsaWMgaW50IGdldFRhZ051bSgpIHsNDQoJCXJldHVybiB0YWdOdW07DQ0K
CX0NDQoJcHVibGljIHNob3J0IGdldERhdGFUeXBlKCkgew0NCgkJcmV0dXJu
IGRhdGFUeXBlOw0NCgl9DQ0KCXB1YmxpYyBpbnQgZ2V0RWxlbWVudExlbmd0
aCgpIHsNDQoJCXJldHVybiBlTGVuZ3RoOw0NCgl9DQ0KCXB1YmxpYyBpbnQg
Z2V0RWxlbWVudE51bWJlcigpIHsNDQoJCXJldHVybiBlTnVtOw0NCgl9DQ0K
CXB1YmxpYyBpbnQgZ2V0QXJyYXlMZW5ndGgoKSB7DQ0KCQlyZXR1cm4gYXJy
YXlMZW5ndGg7DQ0KCX0NDQoJcHVibGljIGludCBnZXREYXRhUmVjb3JkKCkg
ew0NCgkJcmV0dXJuIGRhdGFSZWNvcmQ7DQ0KCX0NDQogDQ0KfQ0NCgAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAGdlbmVyYWwvVHJhY2VSZXF1ZXN0RXZlbnQu
amF2YQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxMDA2NjQgACAgNDIwMyAA
ICAgMTM3IAAgICAgICAgMTYyNiAgNzAwNTEwMjM3MyAgMTU0NDEAIDAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAdXN0YXIgIABnaWxtYW5iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AHNucAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcGFja2FnZSBj
c2hsOwppbXBvcnQgamF2YS51dGlsLkV2ZW50T2JqZWN0OwovKiogCkEgY2xh
c3MgdXNlZCB0byBub3RpZnkgcGFyZW50cyB0aGF0IHRoZSBjaGlsZCB3YW50
cyBhIG5ldyBzZXF1ZW5jZS4KYW5kIGFuIGludGVyZmFjZSB0aGF0IHRoZSBw
YXJlbnQgbXVzdCBpbXBsZW1lbnQuCkBzZWUgVHJhY2VSZXF1ZXN0TGlzdGVu
ZXIKKi8KcHVibGljIGNsYXNzIFRyYWNlUmVxdWVzdEV2ZW50IGV4dGVuZHMg
RXZlbnRPYmplY3QgewoJcHVibGljIFN0cmluZwlzdG9yZTsKCXB1YmxpYyBT
dHJpbmcJYWNjZXNzaW9uOwoJcHVibGljIFN0cmluZyBmaWxlbmFtZTsKCXB1
YmxpYyBpbnQgb2Zmc2V0OwoJCglwdWJsaWMgVHJhY2VSZXF1ZXN0RXZlbnQo
T2JqZWN0IHNvdXJjZSwgU3RyaW5nIHN0b3JlLCBTdHJpbmcgYWNjZXNzaW9u
KXsKCQlzdXBlcihzb3VyY2UpOwoJCXRoaXMuc3RvcmUgPSBzdG9yZTsKCQl0
aGlzLmFjY2Vzc2lvbiA9IGFjY2Vzc2lvbjsKCQl9CglwdWJsaWMgVHJhY2VS
ZXF1ZXN0RXZlbnQoT2JqZWN0IHNvdXJjZSwgU3RyaW5nIGZpbGVuYW1lLCBp
bnQgb2Zmc2V0KXsKCQkJc3VwZXIoc291cmNlKTsKCQkJdGhpcy5maWxlbmFt
ZSA9IGZpbGVuYW1lOwoJCQl0aGlzLm9mZnNldCA9IG9mZnNldDsKCQkgICAg
ICAgIC8vU3lzdGVtLm91dC5wcmludGxuKCJyZWNlaXZlZCBvZmZzZXQgaW4g
VFJFICIgKyBvZmZzZXQpOwoJCX0KCXB1YmxpYyBTdHJpbmcgZ2V0U3RvcmUo
KXsKCQlyZXR1cm4oc3RvcmUpOwoJCX0KCglwdWJsaWMgU3RyaW5nIGdldEFj
Y2Vzc2lvbigpewoJCXJldHVybihhY2Nlc3Npb24pOwoJCX0KCQkKICAgICBw
dWJsaWMgU3RyaW5nIGdldEZpbGUoKXsKCQlyZXR1cm4oZmlsZW5hbWUpOwoJ
fQoJCglwdWJsaWMgaW50IGdldE9mZnNldCgpewoJCQlyZXR1cm4ob2Zmc2V0
KTsKCX0KCn0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGdlbmVyYWwvVHJhY2VVdGlscy5q
YXZhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxMDA2NjQgACAg
NDIwMyAAICAgMTM3IAAgICAgICAgMjU1MCAgNzAwMTQwMjMyNyAgMTQxMDIA
IDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAdXN0YXIgIABnaWxtYW5iAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAHNucAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcGFj
a2FnZSBjc2hsOwppbXBvcnQgamF2YS5pby4qOwppbXBvcnQgamF2YS51dGls
LnppcC4qOwoKcHVibGljIGFic3RyYWN0IGNsYXNzIFRyYWNlVXRpbHMgewog
IHB1YmxpYyBzdGF0aWMgYnl0ZVtdIGd6aXBTdHJlYW0yYnl0ZXMoSW5wdXRT
dHJlYW0gaW5TdHJlYW0pIAogICAgdGhyb3dzIElPRXhjZXB0aW9uIAogIHsK
ICAgIC8vIFJlYWQgYW5kIGd1bnppcCB0aGVuIGludG8gYXJyYXkKICAgIGJ5
dGVbXSAJCQljb250ZW50czsKICAgIGJ5dGVbXSAJCQlidWZmZXI7CiAgICBi
eXRlW10gICAgICAgICAgICAgIGZpcnN0VHdvOwogICAgaW50CQkJYnl0ZXNS
ZWFkOwogICAgCiAgICBJbnB1dFN0cmVhbSAJc3RyZWFtSW47CiAgICBQdXNo
YmFja0lucHV0U3RyZWFtIHB1c2hCYWNrSW47CiAgICBCeXRlQXJyYXlPdXRw
dXRTdHJlYW0JYnl0ZVN0cmVhbU91dDsKCiAgICBmaW5hbCBpbnQJCUJVRkZF
Ul9TSVpFID0gODE5MjsKCQogICAgYnVmZmVyID0gbmV3IGJ5dGVbQlVGRkVS
X1NJWkVdOwogICAgYnl0ZVN0cmVhbU91dCA9IG5ldyBCeXRlQXJyYXlPdXRw
dXRTdHJlYW0oKTsKICAgIHB1c2hCYWNrSW4gPSBuZXcgUHVzaGJhY2tJbnB1
dFN0cmVhbShpblN0cmVhbSwyKTsKCiAgICBmaXJzdFR3byA9IG5ldyBieXRl
WzJdOwogICAgcHVzaEJhY2tJbi5yZWFkKGZpcnN0VHdvLDAsMik7CiAgICBw
dXNoQmFja0luLnVucmVhZChmaXJzdFR3byk7CgogICAgdHJ5IHsKCXN0cmVh
bUluID0gbmV3IEdaSVBJbnB1dFN0cmVhbShwdXNoQmFja0luKTsKCXdoaWxl
KChieXRlc1JlYWQgPSBzdHJlYW1Jbi5yZWFkKGJ1ZmZlciwgMCwgQlVGRkVS
X1NJWkUpKSA+PSAwKXsKCSAgICBieXRlU3RyZWFtT3V0LndyaXRlKGJ1ZmZl
ciwgMCwgYnl0ZXNSZWFkKTsKCX0KCWNvbnRlbnRzID0gYnl0ZVN0cmVhbU91
dC50b0J5dGVBcnJheSgpOwkKCWJ5dGVTdHJlYW1PdXQuY2xvc2UoKTsKCXN0
cmVhbUluLmNsb3NlKCk7CglyZXR1cm4oY29udGVudHMpOwogICAgfQogICAg
Y2F0Y2ggKElPRXhjZXB0aW9uIGV4KSB7CglpZiAoZXguZ2V0TWVzc2FnZSgp
LmVxdWFscygiTm90IGluIEdaSVAgZm9ybWF0IikpIHsKCSAgICBwdXNoQmFj
a0luLnVucmVhZChmaXJzdFR3byk7CgkgICAgd2hpbGUoKGJ5dGVzUmVhZCA9
IHB1c2hCYWNrSW4ucmVhZChidWZmZXIsIDAsIEJVRkZFUl9TSVpFKSkgPj0g
MCl7CgkJYnl0ZVN0cmVhbU91dC53cml0ZShidWZmZXIsIDAsIGJ5dGVzUmVh
ZCk7CgkgICAgfQoJICAgIGNvbnRlbnRzID0gYnl0ZVN0cmVhbU91dC50b0J5
dGVBcnJheSgpOwoJICAgIGJ5dGVTdHJlYW1PdXQuY2xvc2UoKTsKCSAgICBw
dXNoQmFja0luLmNsb3NlKCk7CgkgICAgcmV0dXJuKGNvbnRlbnRzKTsKCX0K
ICAgIH0KICAgIHJldHVybihudWxsKTsKICB9Cn0KCgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAZ2VuZXJhbC9Vc2VyQ29tbXMuamF2YQAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAADEwMDY2NCAAICA0MjAzIAAgICAxMzcgACAgICAgICAz
MDE0ICA2NzczNjc2Njc2ICAxMzc3NwAgMAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGdp
bG1hbmIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAc25wAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAABwYWNrYWdlIGNzaGw7DQ0KDQ0KaW1wb3J0
IGphdmEuYXBwbGV0Lio7DQ0KaW1wb3J0IGphdmEuYXd0Lio7DQ0KaW1wb3J0
IGphdmEuYXd0LmV2ZW50Lio7DQ0KDQ0KLyoqDQ0KQSBjbGFzcyBkZWZpbmlu
ZyBzdGF0aWMgdmFyaWFibGVzIGFuZCBtZXRob2RzIHRvIHVzZSB3aGVuDQ0K
Z2l2aW5nIGZlZWRiYWNrIHRvIGEgdXNlci4gVGhlc2UgbWV0aG9kcyBjYW4g
YWxsIGJlIHVwZ3JhZGVkDQ0KY2VudHJhbGx5IHdoZW4gbmV3IGludGVyZmFj
ZSBjb21wb25lbnRzIGFyZSBkZWZpbmVkLCBvciBhdA0NCnJ1bnRpbWUgdG8g
YWxsb3cgc2ltcGxlIHN3aXRjaGluZyBmcm9tIGFwcGxldCB0byBhcHBsaWNh
dGlvbg0NCmZlZWRiYWNrLiBJZiB1c2VkIHdpdGggSkZDLCBpdCB3b3VsZCBt
YWtlIHNlbnNlIHRvIHVzZSBPcHRpb25QYW5lDQ0KZm9yIHRoZSB3YXJuKCkg
bWV0aG9kLiBUaGVyZSBhcmUgbWFueSBwb3NzaWJsZSBleHRlbnNpb25zIHRv
DQ0KdGhpcyBjbGFzcyB0byBoYW5kbGUgbXVsdGktbGV2ZWwgZGVidWdnaW5n
LCBmZWVkYmFjayBldGMuDQ0KKi8NDQoNDQpwdWJsaWMgY2xhc3MgVXNlckNv
bW1zIHsNDQoJcHVibGljIHN0YXRpYyBBcHBsZXQJYXBwbGV0ID0gbnVsbDsN
DQoJDQ0KCXB1YmxpYyBVc2VyQ29tbXMoKXsNDQoJCS8vIEltcGxpY2l0IGNh
bGwgdG8gc3VwZXINDQoJCX0NDQoNDQoJLy8gUHJpbnQgbWVzc2FnZSBhbmQg
Y2Fycnkgb24NDQoJcHVibGljIHN0YXRpYyB2b2lkIGluZm9ybSAoU3RyaW5n
IG1lc3NhZ2UpIHsNDQoJCVN5c3RlbS5vdXQucHJpbnRsbihtZXNzYWdlKTsN
DQoJCWlmIChhcHBsZXQgIT0gbnVsbCkgew0NCgkJCWFwcGxldC5zaG93U3Rh
dHVzKG1lc3NhZ2UpOw0NCgkJCX0NDQoJCX0NDQoNDQoJLy8gY3JlYXRlIGEg
d2FybmluZyB3aW5kb3cgd2hpY2ggc2hvdWxkIGRpc3RyYWN0IHRoZSB1c2Vy
IHVudGlsIGNsaWNrZWQgYXdheQ0NCglwdWJsaWMgc3RhdGljIHZvaWQgd2Fy
biAoU3RyaW5nIG1lc3NhZ2UpIHsNDQoJCVN5c3RlbS5lcnIucHJpbnRsbiht
ZXNzYWdlKTsNDQoJCWlmIChhcHBsZXQgIT0gbnVsbCkgew0NCgkJCWFwcGxl
dC5zaG93U3RhdHVzKG1lc3NhZ2UpOw0NCgkJCX0NDQoJCUZyYW1lIHdhcm5G
cmFtZSA9IG5ldyBGcmFtZSgiV2FybmluZyIpOw0NCgkJd2FybkZyYW1lLmFk
ZCgiQ2VudGVyIiwgbmV3IExhYmVsKG1lc3NhZ2UsIExhYmVsLkNFTlRFUikp
Ow0NCgkJQnV0dG9uCW9rQnV0dG9uID0gbmV3IEJ1dHRvbigiT0siKTsNDQoJ
CW9rQnV0dG9uLmFkZEFjdGlvbkxpc3RlbmVyKG5ldyBBY3Rpb25MaXN0ZW5l
cigpIHsNDQoJCQlwdWJsaWMgdm9pZCBhY3Rpb25QZXJmb3JtZWQoQWN0aW9u
RXZlbnQgYWN0aW9uKXsNDQoJCQkJKChGcmFtZSkoKChDb21wb25lbnQpKGFj
dGlvbi5nZXRTb3VyY2UoKSkpLmdldFBhcmVudCgpKSkuZGlzcG9zZSgpOw0N
CgkJCQlyZXR1cm47DQ0KCQkJCX0NDQoJCQl9KTsNDQoJCXdhcm5GcmFtZS5h
ZGQoIlNvdXRoIiwgb2tCdXR0b24pOw0NCgkJd2FybkZyYW1lLnBhY2soKTsN
DQoJCXdhcm5GcmFtZS5zaG93KCk7DQ0KCQl9DQ0KfQ0NCgkNDQoAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGdl
bmVyYWwvV1NfRlRQLkxPRwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAxMDA2NjQgACAgNDIwMyAAICAgMTM3IAAgICAgICAxMDM0MyAg
NzAwMTQwMjMyNyAgMTI2MDQAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABnaWxtYW5i
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHNucAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAOTkuMDkuMjcgMTA6MjggQiBDOlxqYXZhXHRyYWNl
XGdlbmVyYWxcQUJJQ2hyb21hdG9ncmFtLmphdmEgLS0+IGNoZXZyZSAvZXhw
b3J0L3NoYXJlL3NucC9yYXZpU05QL0FwcGxldHMvZ2VuZXJhbCBBQklDaHJv
bWF0b2dyYW0uamF2YQ0KOTkuMDkuMjcgMTA6MjggQiBDOlxqYXZhXHRyYWNl
XGdlbmVyYWxcQ2hyb21hdG9ncmFtLmphdmEgLS0+IGNoZXZyZSAvZXhwb3J0
L3NoYXJlL3NucC9yYXZpU05QL0FwcGxldHMvZ2VuZXJhbCBDaHJvbWF0b2dy
YW0uamF2YQ0KOTkuMDkuMjcgMTA6MjggQiBDOlxqYXZhXHRyYWNlXGdlbmVy
YWxcU0NGQ2hyb21hdG9ncmFtLmphdmEgLS0+IGNoZXZyZSAvZXhwb3J0L3No
YXJlL3NucC9yYXZpU05QL0FwcGxldHMvZ2VuZXJhbCBTQ0ZDaHJvbWF0b2dy
YW0uamF2YQ0KOTkuMDkuMjcgMTA6MjggQiBDOlxqYXZhXHRyYWNlXGdlbmVy
YWxcVGFnZ2VkUmVjb3JkLmphdmEgLS0+IGNoZXZyZSAvZXhwb3J0L3NoYXJl
L3NucC9yYXZpU05QL0FwcGxldHMvZ2VuZXJhbCBUYWdnZWRSZWNvcmQuamF2
YQ0KOTkuMDkuMjcgMTA6MjggQiBDOlxqYXZhXHRyYWNlXGdlbmVyYWxcVHJh
Y2VSZXF1ZXN0RXZlbnQuamF2YSAtLT4gY2hldnJlIC9leHBvcnQvc2hhcmUv
c25wL3JhdmlTTlAvQXBwbGV0cy9nZW5lcmFsIFRyYWNlUmVxdWVzdEV2ZW50
LmphdmENCjk5LjA5LjI3IDEwOjI4IEIgQzpcamF2YVx0cmFjZVxnZW5lcmFs
XFRyYWNlUmVxdWVzdExpc3RlbmVyLmphdmEgLS0+IGNoZXZyZSAvZXhwb3J0
L3NoYXJlL3NucC9yYXZpU05QL0FwcGxldHMvZ2VuZXJhbCBUcmFjZVJlcXVl
c3RMaXN0ZW5lci5qYXZhDQo5OS4wOS4yNyAxMDoyOCBCIEM6XGphdmFcdHJh
Y2VcZ2VuZXJhbFxUcmFjZVV0aWxzLmphdmEgLS0+IGNoZXZyZSAvZXhwb3J0
L3NoYXJlL3NucC9yYXZpU05QL0FwcGxldHMvZ2VuZXJhbCBUcmFjZVV0aWxz
LmphdmENCjk5LjA5LjI3IDEwOjI4IEIgQzpcamF2YVx0cmFjZVxnZW5lcmFs
XFVzZXJDb21tcy5qYXZhIC0tPiBjaGV2cmUgL2V4cG9ydC9zaGFyZS9zbnAv
cmF2aVNOUC9BcHBsZXRzL2dlbmVyYWwgVXNlckNvbW1zLmphdmENCjk5LjEw
LjA2IDE2OjMwIEIgQzpcamF2YVx0cmFjZVxnZW5lcmFsXEFCSUNocm9tYXRv
Z3JhbS5qYXZhIC0tPiBjaGV2cmUgL2V4cG9ydC9zaGFyZS9zbnAvcmF2aVNO
UC9BcHBsZXRzL2dlbmVyYWwgQUJJQ2hyb21hdG9ncmFtLmphdmENCjk5LjEw
LjA2IDE2OjMwIEIgQzpcamF2YVx0cmFjZVxnZW5lcmFsXENocm9tYXRvZ3Jh
bS5qYXZhIC0tPiBjaGV2cmUgL2V4cG9ydC9zaGFyZS9zbnAvcmF2aVNOUC9B
cHBsZXRzL2dlbmVyYWwgQ2hyb21hdG9ncmFtLmphdmENCjk5LjEwLjA2IDE2
OjMwIEIgQzpcamF2YVx0cmFjZVxnZW5lcmFsXFNDRkNocm9tYXRvZ3JhbS5q
YXZhIC0tPiBjaGV2cmUgL2V4cG9ydC9zaGFyZS9zbnAvcmF2aVNOUC9BcHBs
ZXRzL2dlbmVyYWwgU0NGQ2hyb21hdG9ncmFtLmphdmENCjk5LjEwLjA2IDE2
OjMwIEIgQzpcamF2YVx0cmFjZVxnZW5lcmFsXFRhZ2dlZFJlY29yZC5qYXZh
IC0tPiBjaGV2cmUgL2V4cG9ydC9zaGFyZS9zbnAvcmF2aVNOUC9BcHBsZXRz
L2dlbmVyYWwgVGFnZ2VkUmVjb3JkLmphdmENCjk5LjEwLjA2IDE2OjMwIEIg
QzpcamF2YVx0cmFjZVxnZW5lcmFsXFRyYWNlUmVxdWVzdEV2ZW50LmphdmEg
LS0+IGNoZXZyZSAvZXhwb3J0L3NoYXJlL3NucC9yYXZpU05QL0FwcGxldHMv
Z2VuZXJhbCBUcmFjZVJlcXVlc3RFdmVudC5qYXZhDQo5OS4xMC4wNiAxNjoz
MCBCIEM6XGphdmFcdHJhY2VcZ2VuZXJhbFxUcmFjZVJlcXVlc3RMaXN0ZW5l
ci5qYXZhIC0tPiBjaGV2cmUgL2V4cG9ydC9zaGFyZS9zbnAvcmF2aVNOUC9B
cHBsZXRzL2dlbmVyYWwgVHJhY2VSZXF1ZXN0TGlzdGVuZXIuamF2YQ0KOTku
MTAuMDYgMTY6MzAgQiBDOlxqYXZhXHRyYWNlXGdlbmVyYWxcVHJhY2VVdGls
cy5qYXZhIC0tPiBjaGV2cmUgL2V4cG9ydC9zaGFyZS9zbnAvcmF2aVNOUC9B
cHBsZXRzL2dlbmVyYWwgVHJhY2VVdGlscy5qYXZhDQo5OS4xMC4wNiAxNjoz
MCBCIEM6XGphdmFcdHJhY2VcZ2VuZXJhbFxXU19GVFAuTE9HIC0tPiBjaGV2
cmUgL2V4cG9ydC9zaGFyZS9zbnAvcmF2aVNOUC9BcHBsZXRzL2dlbmVyYWwg
V1NfRlRQLkxPRw0KOTkuMTAuMTIgMDk6MzggQiBDOlxqYXZhXHRyYWNlXGdl
bmVyYWxcQUJJQ2hyb21hdG9ncmFtLmphdmEgLS0+IGNoZXZyZSAvZXhwb3J0
L3NoYXJlL3NucC9yYXZpU05QL0FwcGxldHMvZ2VuZXJhbCBBQklDaHJvbWF0
b2dyYW0uamF2YQ0KOTkuMTAuMTIgMDk6MzggQiBDOlxqYXZhXHRyYWNlXGdl
bmVyYWxcQ2hyb21hdG9ncmFtLmphdmEgLS0+IGNoZXZyZSAvZXhwb3J0L3No
YXJlL3NucC9yYXZpU05QL0FwcGxldHMvZ2VuZXJhbCBDaHJvbWF0b2dyYW0u
amF2YQ0KOTkuMTAuMTIgMDk6MzggQiBDOlxqYXZhXHRyYWNlXGdlbmVyYWxc
bXlUaW1lci5qYXZhIC0tPiBjaGV2cmUgL2V4cG9ydC9zaGFyZS9zbnAvcmF2
aVNOUC9BcHBsZXRzL2dlbmVyYWwgbXlUaW1lci5qYXZhDQo5OS4xMC4xMiAw
OTozOCBCIEM6XGphdmFcdHJhY2VcZ2VuZXJhbFxTQ0ZDaHJvbWF0b2dyYW0u
amF2YSAtLT4gY2hldnJlIC9leHBvcnQvc2hhcmUvc25wL3JhdmlTTlAvQXBw
bGV0cy9nZW5lcmFsIFNDRkNocm9tYXRvZ3JhbS5qYXZhDQo5OS4xMC4xMiAw
OTozOCBCIEM6XGphdmFcdHJhY2VcZ2VuZXJhbFxUYWdnZWRSZWNvcmQuamF2
YSAtLT4gY2hldnJlIC9leHBvcnQvc2hhcmUvc25wL3JhdmlTTlAvQXBwbGV0
cy9nZW5lcmFsIFRhZ2dlZFJlY29yZC5qYXZhDQo5OS4xMC4xMiAwOTozOCBC
IEM6XGphdmFcdHJhY2VcZ2VuZXJhbFxUcmFjZVJlcXVlc3RFdmVudC5qYXZh
IC0tPiBjaGV2cmUgL2V4cG9ydC9zaGFyZS9zbnAvcmF2aVNOUC9BcHBsZXRz
L2dlbmVyYWwgVHJhY2VSZXF1ZXN0RXZlbnQuamF2YQ0KOTkuMTAuMTIgMDk6
MzggQiBDOlxqYXZhXHRyYWNlXGdlbmVyYWxcVHJhY2VSZXF1ZXN0TGlzdGVu
ZXIuamF2YSAtLT4gY2hldnJlIC9leHBvcnQvc2hhcmUvc25wL3JhdmlTTlAv
QXBwbGV0cy9nZW5lcmFsIFRyYWNlUmVxdWVzdExpc3RlbmVyLmphdmENCjk5
LjEwLjEyIDA5OjM4IEIgQzpcamF2YVx0cmFjZVxnZW5lcmFsXFRyYWNlVXRp
bHMuamF2YSAtLT4gY2hldnJlIC9leHBvcnQvc2hhcmUvc25wL3JhdmlTTlAv
QXBwbGV0cy9nZW5lcmFsIFRyYWNlVXRpbHMuamF2YQ0KOTkuMTAuMTIgMTc6
MjAgQiBDOlxqYXZhXHRyYWNlXGdlbmVyYWxcV1NfRlRQLkxPRyA8LS0gY2hl
dnJlIC9leHBvcnQvc2hhcmUvc25wL3JhdmlTTlAvQXBwbGV0cy9nZW5lcmFs
IFdTX0ZUUC5MT0cNCjk5LjEwLjEzIDEzOjA1IEIgQzpcamF2YVx0cmFjZVxn
ZW5lcmFsXEFCSUNocm9tYXRvZ3JhbS5qYXZhIC0tPiByb21hbm8gL2EvY2hl
dnJlL2hvbWUvcmF2aS9wdWJsaWNfaHRtbC9nZW5lcmFsIEFCSUNocm9tYXRv
Z3JhbS5qYXZhDQo5OS4xMC4xMyAxMzowNSBCIEM6XGphdmFcdHJhY2VcZ2Vu
ZXJhbFxDaHJvbWF0b2dyYW0uamF2YSAtLT4gcm9tYW5vIC9hL2NoZXZyZS9o
b21lL3JhdmkvcHVibGljX2h0bWwvZ2VuZXJhbCBDaHJvbWF0b2dyYW0uamF2
YQ0KOTkuMTAuMTMgMTM6MDUgQiBDOlxqYXZhXHRyYWNlXGdlbmVyYWxcbXlU
aW1lci5qYXZhIC0tPiByb21hbm8gL2EvY2hldnJlL2hvbWUvcmF2aS9wdWJs
aWNfaHRtbC9nZW5lcmFsIG15VGltZXIuamF2YQ0KOTkuMTAuMTMgMTM6MDUg
QiBDOlxqYXZhXHRyYWNlXGdlbmVyYWxcU0NGQ2hyb21hdG9ncmFtLmphdmEg
LS0+IHJvbWFubyAvYS9jaGV2cmUvaG9tZS9yYXZpL3B1YmxpY19odG1sL2dl
bmVyYWwgU0NGQ2hyb21hdG9ncmFtLmphdmENCjk5LjEwLjEzIDEzOjA1IEIg
QzpcamF2YVx0cmFjZVxnZW5lcmFsXFRhZ2dlZFJlY29yZC5qYXZhIC0tPiBy
b21hbm8gL2EvY2hldnJlL2hvbWUvcmF2aS9wdWJsaWNfaHRtbC9nZW5lcmFs
IFRhZ2dlZFJlY29yZC5qYXZhDQo5OS4xMC4xMyAxMzowNSBCIEM6XGphdmFc
dHJhY2VcZ2VuZXJhbFxUcmFjZVJlcXVlc3RFdmVudC5qYXZhIC0tPiByb21h
bm8gL2EvY2hldnJlL2hvbWUvcmF2aS9wdWJsaWNfaHRtbC9nZW5lcmFsIFRy
YWNlUmVxdWVzdEV2ZW50LmphdmENCjk5LjEwLjEzIDEzOjA1IEIgQzpcamF2
YVx0cmFjZVxnZW5lcmFsXFRyYWNlUmVxdWVzdExpc3RlbmVyLmphdmEgLS0+
IHJvbWFubyAvYS9jaGV2cmUvaG9tZS9yYXZpL3B1YmxpY19odG1sL2dlbmVy
YWwgVHJhY2VSZXF1ZXN0TGlzdGVuZXIuamF2YQ0KOTkuMTAuMTMgMTM6MDUg
QiBDOlxqYXZhXHRyYWNlXGdlbmVyYWxcVHJhY2VVdGlscy5qYXZhIC0tPiBy
b21hbm8gL2EvY2hldnJlL2hvbWUvcmF2aS9wdWJsaWNfaHRtbC9nZW5lcmFs
IFRyYWNlVXRpbHMuamF2YQ0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZ2VuZXJhbC9teVRp
bWVyLmphdmEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEw
MDY0NCAAICA0MjAzIAAgICAxMzcgACAgICAgICAxNTYzICA3MDAxNDAyMzI3
ICAxMzQ1MgAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGdpbG1hbmIAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAc25wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAABwYWNrYWdlIGNzaGw7DQppbXBvcnQgamF2YS51dGlsLio7DQoNCmlt
cG9ydCBqYXZhLmlvLio7DQoNCnB1YmxpYyBjbGFzcyBteVRpbWVyIHsNCg0K
ICBwcml2YXRlIERhdGUgZHRTdGFydDsNCiAgcHJpdmF0ZSBEYXRlIGR0Rmlu
aXNoOw0KICBwcml2YXRlIGxvbmcgdGltZXRha2VuOw0KDQpwdWJsaWMgbXlU
aW1lcigpIHt9DQoNCnB1YmxpYyB2b2lkIHN0YXJ0KCl7DQoJZHRTdGFydCA9
IG5ldyBEYXRlKCk7DQp9DQoNCiAgcHVibGljIHZvaWQgZmluaXNoKCl7DQoJ
ICBkdEZpbmlzaCA9IG5ldyBEYXRlKCk7DQoJICB0aW1ldGFrZW4gPSBkdEZp
bmlzaC5nZXRUaW1lKCktZHRTdGFydC5nZXRUaW1lKCk7DQoJICBkdFN0YXJ0
ID0gbmV3IERhdGUoKTsNCiAgfQ0KcHVibGljIHZvaWQgZmluaXNoKFN0cmlu
ZyB0aXRsZSl7DQoJdGhpcy5maW5pc2goKTsNCglTeXN0ZW0ub3V0LnByaW50
bG4odGl0bGUgKyAiOjoiICsgdGltZXRha2VuKTsNCg0KfQ0KcHVibGljIGxv
bmcgdGltZVRha2VuKCl7DQoNCglyZXR1cm4gdGltZXRha2VuOw0KfQ0KcHVi
bGljIHZvaWQgc2hvd1RpbWVUYWtlbihTdHJpbmcgdGl0bGUpew0KDQoJU3lz
dGVtLm91dC5wcmludGxuKHRpdGxlICsgIjo6IiArIHRpbWV0YWtlbik7DQp9
DQogcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncyl7DQoN
CgkgbXlUaW1lciBtVCA9IG5ldyBteVRpbWVyKCk7DQoJIG1ULnN0YXJ0KCk7
DQoNCgkgZm9yKGludCBpPTA7aTw1MDA7aSsrKXsNCgkJIFN5c3RlbS5vdXQu
cHJpbnRsbigiSGkiKTsNCgkJIH0NCg0KCSBtVC5maW5pc2goKTsNCgkgU3lz
dGVtLm91dC5wcmludGxuKG1ULnRpbWVUYWtlbigpKTsNCgkgbVQuc2hvd1Rp
bWVUYWtlbigiTWFpbiIpOw0KDQogfQ0KDQoNCg0KDQp9AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
--0-2115330227-997797460=:27042--