LyoKICogSGVscCBWaWV3ZXIKICoKICogQ29weXJpZ2h0IDE5OTYgVWxyaWNoIFNjaG1pZAogKiBSdW1hbnRzY2ggTGFkaW4gKFZhbGxhZGVyKSBieSBtYmF1ckBnMjYuZXRoei5jaAogKiBDb3B5cmlnaHQgMjAwMiBTeWx2YWluIFBldHJlb2xsZSA8c3BldHJlb2xsZUB5YWhvby5mcj4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiAqLwoKLyogTWVudSAqLwoKLyoKKiAgbGFuZ3VhZ2UgOiBzd2l0emVybGFuZCByb21hbmNoCiogIG5vdCBzdXBwb3J0ZWQgdG9kYXkKKi8KTUFJTl9NRU5VIE1FTlUgTEFOR1VBR0UgTEFOR18sIFNVQkxBTkdfTkVVVFJBTAp7CiBQT1BVUCAiJkRhdG90ZWNhIiB7CiAgTUVOVUlURU0gIiZSaXZpciIsIDB4MTAxCiAgTUVOVUlURU0gU0VQQVJBVE9SCiAgTUVOVUlURU0gIiZTdGFtcGFyIHRlbWEiLCAweDEwNAogIE1FTlVJVEVNICImSW5zdGFsbGF6aXVuIGRhbCBzdGFtcGFkZXIuLi4iLCAweDEwNgogICBNRU5VSVRFTSBTRVBBUkFUT1IKICBNRU5VSVRFTSAiJkZpbmlyIiwgMHgxMDgKIH0KIFBPUFVQICImTGF2dXJhciIgewogICBNRU5VSVRFTSAiQ2FwY2hhciIsIDB4MTBBCiAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICBNRU5VSVRFTSAiJkFubm90YXppdW4uLi4iLCAweDEwQwogfQogUE9QVVAgIiZNYXJjYSIgewogICBNRU5VSVRFTSAiJkRlZmluaXIuLi4iLCAweDEwRQogfQogUE9QVVAgIiZBZ/xkIiB7CiAgIE1FTlVJVEVNICImRG91dnJhciBsJ2Fn/GQiLCAweDExMAogICBNRU5VSVRFTSAiQWT8bmEgZGEmdmFudCIsIDB4MTExCiAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICBNRU5VSVRFTSAiSSZuZnVvcm1heml1bnMiLCAweDExMwojaWZkZWYgV0lORUxJQgogICBNRU5VSVRFTSAiRGF2YXJ0ICZXSU5FIiwgMHgxMTQKI2VuZGlmCiB9Cn0KCi8qIFN0cmluZ3MgKi8KClNUUklOR1RBQkxFIERJU0NBUkRBQkxFIExBTkdVQUdFIExBTkdfRlJFTkNILCBTVUJMQU5HX05FVVRSQUwKewpXSU5FX0hFTFAsIAkJIldJTkUgYWf8ZCIKV0hFUlJPUiwgCQkiU0JBR0wiCldBUk5JTkcsICAJCSJBVFRFTlpJVU4iCklORk8sICAJCQkiSU5GVU9STUFaSVVOIgpOT1RfSU1QTEVNRU5URUQsIAkiTmEgaW1wbGVtZW50YSIKSExQRklMRV9FUlJPUl9zLCAJIlNiYWdsIGN1biBsZWdlciBsYSBkYXRvdGVjYSBkJ2Fn/GQgYCVzJyIKQ09OVEVOVFMsIAkJIiZDdW50Z278IgpTRUFSQ0gsIAkJIiZUc2NoZXJjaGFyIgpCQUNLLCAJCQkiJkluYXZvIgpISVNUT1JZLCAJCSImRmluIHF1YSIKQUxMX0ZJTEVTLCAJCSJUdW90IGxhcyBkYXRvdGVjYXMgKCouKikiCkhFTFBfRklMRVNfSExQLCAJIkRhdG90ZWNhcyBkJ2Fn/GQgKCouaGxwKSIKfQo=