LyoKICogQ29weXJpZ2h0IDE5OTggSnVlcmdlbiBTY2htaWVkCiAqIENvcHlyaWdodCAyMDA2IFl1blNvbmcgSHdhbmcKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKTEFOR1VBR0UgTEFOR19LT1JFQU4sIFNVQkxBTkdfTkVVVFJBTAoKTUVOVV8wMDEgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgpNRU5VSVRFTSAixasgvsbAzMTcKCZHKSIsCUZDSURNX1NIVklFV19CSUdJQ09OCk1FTlVJVEVNICLA28C6IL7GwMzE3CgmTSkiLAlGQ0lETV9TSFZJRVdfU01BTExJQ09OCk1FTlVJVEVNICK48bfPKCZMKSIsCQlGQ0lETV9TSFZJRVdfTElTVFZJRVcKTUVOVUlURU0gIsDavLzI9ygmRCkiLAkJRkNJRE1fU0hWSUVXX1JFUE9SVFZJRVcKRU5ECgovKgpzaGVsbHZpZXcgYmFja2dyb3VuZCBtZW51CiovCk1FTlVfMDAyIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KUE9QVVAgIiIKQkVHSU4KUE9QVVAgIrq4seIoJlYpIgpCRUdJTgpNRU5VSVRFTSAixasgvsbAzMTcKCZHKSIsCUZDSURNX1NIVklFV19CSUdJQ09OCk1FTlVJVEVNICLA28C6IL7GwMzE3CgmTSkiLAlGQ0lETV9TSFZJRVdfU01BTExJQ09OCk1FTlVJVEVNICK48bfPKCZMKSIsCQlGQ0lETV9TSFZJRVdfTElTVFZJRVcKTUVOVUlURU0gIsDavLzI9ygmRCkiLAlGQ0lETV9TSFZJRVdfUkVQT1JUVklFVwpFTkQKTUVOVUlURU0gU0VQQVJBVE9SClBPUFVQICK+xsDMxNwgwaS3xCgmSSkiCkJFR0lOCk1FTlVJVEVNICLAzLinwLi3zigmTikiLAkweDMwCS8qIGNvbHVtbiAwICovCk1FTlVJVEVNICLH/L3EwLi3zigmVCkiLAkweDMyCS8qIGNvbHVtbiAyICovCk1FTlVJVEVNICLFqbHit84oJlMpIiwJMHgzMQkvKiAuLi4gKi8KTUVOVUlURU0gIrOvwqW3zigmRCkiLAkweDMzCk1FTlVJVEVNIFNFUEFSQVRPUgpNRU5VSVRFTSAiwNq1vyDBpLfEKCZBKSIsCUZDSURNX1NIVklFV19BVVRPQVJSQU5HRQpFTkQKTUVOVUlURU0gIr7GwMzE3CDBpLfEIiwJRkNJRE1fU0hWSUVXX1NOQVBUT0dSSUQKTUVOVUlURU0gU0VQQVJBVE9SCk1FTlVJVEVNICK79bfOILDtxKciLAkJRkNJRE1fU0hWSUVXX1JFRlJFU0gKTUVOVUlURU0gU0VQQVJBVE9SCk1FTlVJVEVNICK62b+ps9ax4iIsCQlGQ0lETV9TSFZJRVdfSU5TRVJUCk1FTlVJVEVNICK4tcWpt84gutm/qbPWseIiLAlGQ0lETV9TSFZJRVdfSU5TRVJUTElOSwpNRU5VSVRFTSBTRVBBUkFUT1IKUE9QVVAgIrv1IMDbvvciCkJFR0lOCk1FTlVJVEVNICK79SDG+rT1KCZGKSIsCUZDSURNX1NIVklFV19ORVdGT0xERVIKTUVOVUlURU0gIrv1ILi1xakoJkwpIiwJRkNJRE1fU0hWSUVXX05FV0xJTksKTUVOVUlURU0gU0VQQVJBVE9SCkVORApNRU5VSVRFTSBTRVBBUkFUT1IKTUVOVUlURU0gIrzTvLoiLAlGQ0lETV9TSFZJRVdfUFJPUEVSVElFUwpFTkQKRU5ECgovKgpzaGVsbHZpZXcgaXRlbSBtZW51CiovCk1FTlVfU0hWX0ZJTEUgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgpQT1BVUCAiIgpCRUdJTgpNRU5VSVRFTSAixb279igmWCkiLAkJRkNJRE1fU0hWSUVXX0VYUExPUkUKTUVOVUlURU0gIr+tseIoJk8pIiwJCUZDSURNX1NIVklFV19PUEVOCk1FTlVJVEVNIFNFUEFSQVRPUgpNRU5VSVRFTSAiwN+287O7seIoJlUpIiwJCUZDSURNX1NIVklFV19DVVQKTUVOVUlURU0gIrq5u+coJkMpIiwJCUZDSURNX1NIVklFV19DT1BZCk1FTlVJVEVNIFNFUEFSQVRPUgpNRU5VSVRFTSAiuLXFqSC4uLXpseIoJkwpIiwJRkNJRE1fU0hWSUVXX0NSRUFURUxJTksKTUVOVUlURU0gIsH2v+yx4igmRCkiLAkJRkNJRE1fU0hWSUVXX0RFTEVURQpNRU5VSVRFTSAiwMy4pyC52bLZseIoJlIpIiwJCUZDSURNX1NIVklFV19SRU5BTUUKTUVOVUlURU0gU0VQQVJBVE9SCk1FTlVJVEVNICK807y6KCZQKSIsCUZDSURNX1NIVklFV19QUk9QRVJUSUVTCkVORApFTkQKClNIQlJTRk9SRk9MREVSX01TR0JPWCBESUFMT0cgTE9BRE9OQ0FMTCBNT1ZFQUJMRSBESVNDQVJEQUJMRSAxNSwgNDAsIDE4OCwgMTkyClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVSB8IERTX01PREFMRlJBTUUgfCBEU19TRVRGT05UIHwgRFNfM0RMT09LCkNBUFRJT04gIsb6tPUgxb279iIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgp7CkRFRlBVU0hCVVRUT04gIsiuwM4iLCAxLCA4MCwgMTc2LCA1MCwgMTIsIEJTX0RFRlBVU0hCVVRUT04gfCBXU19HUk9VUCB8IFdTX1RBQlNUT1AKUFVTSEJVVFRPTiAiw+u80iIsIDIsIDEzNCwgMTc2LCA1MCwgMTIsIFdTX0dST1VQIHwgV1NfVEFCU1RPUApMVEVYVCAiIiwgSUREX1RJVExFLCA0LCA0LCAxODAsIDEyCkxURVhUICIiLCBJRERfU1RBVFVTLCA0LCAyNSwgMTgwLCAxMgpDT05UUk9MICIiLCBJRERfVFJFRVZJRVcsICJTeXNUcmVlVmlldzMyIiwKVFZTX0hBU0JVVFRPTlMgfCBUVlNfSEFTTElORVMgfCBUVlNfTElORVNBVFJPT1QgfApXU19CT1JERVIgfCBXU19UQUJTVE9QLAo0LCA0MCwgMTgwLCAxMjAKfQoKU0hFTExfQUJPVVRfTVNHQk9YIERJQUxPRyBMT0FET05DQUxMIE1PVkVBQkxFIERJU0NBUkRBQkxFIDE1LCA0MCwgMjEwLCAxNTIKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfVklTSUJMRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIiVzIMGkurgiCkZPTlQgMTAsICJNUyBTaGVsbCBEbGciCnsKREVGUFVTSEJVVFRPTiAiyK7AziIsIElET0ssIDE1MywgMTMzLCA1MCwgMTIsIFdTX1RBQlNUT1AKTElTVEJPWCA5OSwgOCwgNjUsIDEzNywgODIsIExCU19OT1RJRlkgfCBXU19WU0NST0xMIHwgV1NfQk9SREVSCklDT04gIiIsIDEwODgsIDEwLCAxMCwgMTQsIDE2CkxURVhUICIiLCAxMDAsIDMwLCAxMCwgMTM3LCAxMApMVEVYVCAiIiwgMTAxLCAzMCwgMjIsIDEzNywgMTAKTFRFWFQgIldpbmXAuiC0573FwLsgwKfH2CDBprD4tce++r3AtM+02S46IiwgOTgsIDgsIDU1LCAxMzcsIDEwCn0KClNIRUxMX1JVTl9ETEcgRElBTE9HIExPQURPTkNBTEwgTU9WRUFCTEUgRElTQ0FSREFCTEUgMCwgMCwgMjI3LCA5NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19WSVNJQkxFIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCnsKSUNPTiAiIiwgMTIyOTcsIDcsIDExLCAxOCwgMjAsIFdTX1ZJU0lCTEUKTFRFWFQgIseusde4sizG+rT1LLmuvK2zqiDAzsXNs90gwNq/+Cwgsde4rrDtIFdpbmXAzCC/rSDAzLinwLsgwPu+7sHWvLy/5C4iLCAxMjI4OSwgMzYsIDExLCAxODIsIDE4CkxURVhUICK/rbHiKCZPKToiLCAxMjMwNSwgNywgMzksIDI0LCAxMApDT05UUk9MICIiLCAxMjI5OCwgIkNPTUJPQk9YIiwgV1NfVEFCU1RPUCB8IFdTX0dST1VQIHwgV1NfVlNDUk9MTCB8IFdTX1ZJU0lCTEUgfCBDQlNfRElTQUJMRU5PU0NST0xMIHwgQ0JTX0FVVE9IU0NST0xMIHwgQ0JTX0RST1BET1dOLCAzNiwgMzcsIDE4MywgMTAwCkRFRlBVU0hCVVRUT04gIsiuwM4iLCBJRE9LLCA2MiwgNjMsIDUwLCAxNCwgV1NfVEFCU1RPUApQVVNIQlVUVE9OICLD67zSIiwgSURDQU5DRUwsIDExNiwgNjMsIDUwLCAxNCwgV1NfVEFCU1RPUApQVVNIQlVUVE9OICLDo7HiKCZCKS4uLiIsIDEyMjg4LCAxNzAsIDYzLCA1MCwgMTQsIFdTX1RBQlNUT1AKfQoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKewovKiBjb2x1bW5zIGluIHRoZSBzaGVsbHZpZXcgKi8KSURTX1NIVl9DT0xVTU4xCQkixsTAzyIKSURTX1NIVl9DT0xVTU4yCQkixamx4iIKSURTX1NIVl9DT0xVTU4zCQkix/y9xCIKSURTX1NIVl9DT0xVTU40CQkivPbBpLOvwqUiCklEU19TSFZfQ09MVU1ONQkJIrzTvLoiCklEU19TSFZfQ09MVU1ONgkJIsWpseIiCklEU19TSFZfQ09MVU1ONwkJIrChtMnH0SDFqbHiIgpJRFNfU0hWX0NPTFVNTjgJCSLAzLinIgpJRFNfU0hWX0NPTFVNTjkJCSLB1ryuIgpJRFNfU0hWX0NPTFVNTjEwCSK80sCvwNoiCklEU19TSFZfQ09MVU1OMTEJIrHXt+wiCklEU19TSFZfQ09MVU1OX0RFTEZST00JIr/4t6EgwKfEoSIKSURTX1NIVl9DT0xVTU5fREVMREFURQkiwfa/9sH4ILOvwqUiCgovKiBzcGVjaWFsIGZvbGRlcnMgKi8KSURTX0RFU0tUT1AJCSK1pb26xanFviIKSURTX01ZQ09NUFVURVIJCSKzuyDExMe7xc0iCklEU19SRUNZQ0xFQklOX0ZPTERFUl9OQU1FICAgICAgIsjewfbF6yIKCi8qIGNvbnRleHQgbWVudXMgKi8KSURTX1ZJRVdfTEFSR0UJCSLFqyC+xsDMxNwoJkcpIgpJRFNfVklFV19TTUFMTAkJIsDbwLogvsbAzMTcKCZNKSIKSURTX1ZJRVdfTElTVAkJIrjxt88oJkwpIgpJRFNfVklFV19ERVRBSUxTCSLA2ry8yPcoJkQpIgpJRFNfU0VMRUNUCQkivLHFwyIKSURTX09QRU4JCSK/rbHiIgoKSURTX0NSRUFURUZPTERFUl9ERU5JRUQgIrv1IMb6tPW4piC4uLXpILz2IL74vcC0z7TZOiC4uLXpILHHx9HAzCC++L3AtM+02S4iCklEU19DUkVBVEVGT0xERVJfQ0FQVElPTiAiu/Ugxvq09bimILi4teW0wiCw+sGkv6G8rSC/obevud+7/SIKSURTX0RFTEVURUlURU1fQ0FQVElPTiAixsTAzyDB9r/sseIgyK7AziIKSURTX0RFTEVURUZPTERFUl9DQVBUSU9OICLG+rT1IMH2v+yx4iDIrsDOIgpJRFNfREVMRVRFSVRFTV9URVhUICK0573FwLogICclMSfAuyDB9r/sseK4piC52bb4tM+x7j8iCklEU19ERUxFVEVNVUxUSVBMRV9URVhUICK0573FwLogJTEgvsbAzMXbKLXpKcC7IMH2v+yx4rimILnZtvi0z7HuPyIKSURTX0RFTEVURVNFTEVDVEVEX1RFWFQgIrTnvcXAuiC8scXDtcggvsbAzMXbKLXpKcC7IMH2v+yx4rimILnZtvi0z7HuPyIKSURTX1RSQVNISVRFTV9URVhUICK0573FwLogJyUxJyDAuyi4pikgyN7B9sXrwLi3ziC6uLO7seK4piC52bb4tM+x7j8iCklEU19UUkFTSEZPTERFUl9URVhUICK0573FwLogJyUxJyCw+iCx1yC+yMDHILO7v+vAuyDI3sH2xevAuLfOILq4s7ux4rimILnZtvi0z7HuPyIKSURTX1RSQVNITVVMVElQTEVfVEVYVCAitOe9xcC6ICclMScgtenAuyi4pikgyN7B9sXrwLi3ziC6uLO7seK4piC52bb4tM+x7j8iCklEU19DQU5UVFJBU0hfVEVYVCAiVGhlIGl0ZW0gJyUxJyBjYW4ndCBiZSBzZW50IHRvIFRyYXNoLiBEbyB5b3Ugd2FudCB0byBkZWxldGUgaXQgaW5zdGVhZD8iCklEU19PVkVSV1JJVEVGSUxFX1RFWFQgIsbEwM8gJTHAuyC1pL7uvrKw2r3AtM+x7j8iCklEU19PVkVSV1JJVEVGSUxFX0NBUFRJT04gIsbEwM8gtaS+7r6yseIgyK7AziIKCi8qIG1lc3NhZ2UgYm94IHN0cmluZ3MgKi8KSURTX1JFU1RBUlRfVElUTEUgICAgICAgIrTZvcMgvcPA2yIKSURTX1JFU1RBUlRfUFJPTVBUICAgICAgIrTnvcXAuiDAqbW1v+zB7iDA57rOxsPAuyAgwOfH9sfPsNq9wLTPse4/IgpJRFNfU0hVVERPV05fVElUTEUgICAgICAisvSx4iIKSURTX1NIVVRET1dOX1BST01QVCAgICAgIrTnvcXAuiAgV2luZSC8vLzHwLsgsvSw2r3AtM+x7j8iCgovKiBzaGVsbCBmb2xkZXIgcGF0aCBkZWZhdWx0IHZhbHVlcyAqLwpJRFNfUFJPR1JBTVMgICAgICAgICAgICAgICAgIlN0YXJ0IE1lbnVcXFByb2dyYW1zIgpJRFNfUEVSU09OQUwgICAgICAgICAgICAgICAgIk15IERvY3VtZW50cyIKSURTX0ZBVk9SSVRFUyAgICAgICAgICAgICAgICJGYXZvcml0ZXMiCklEU19TVEFSVFVQICAgICAgICAgICAgICAgICAiU3RhcnQgTWVudVxcUHJvZ3JhbXNcXFN0YXJ0VXAiCklEU19SRUNFTlQgICAgICAgICAgICAgICAgICAiUmVjZW50IgpJRFNfU0VORFRPICAgICAgICAgICAgICAgICAgIlNlbmRUbyIKSURTX1NUQVJUTUVOVSAgICAgICAgICAgICAgICJTdGFydCBNZW51IgpJRFNfTVlNVVNJQyAgICAgICAgICAgICAgICAgIk15IE11c2ljIgpJRFNfTVlWSURFTyAgICAgICAgICAgICAgICAgIk15IFZpZGVvIgpJRFNfREVTS1RPUERJUkVDVE9SWSAgICAgICAgIkRlc2t0b3AiCklEU19ORVRIT09EICAgICAgICAgICAgICAgICAiTmV0SG9vZCIKSURTX1RFTVBMQVRFUyAgICAgICAgICAgICAgICJUZW1wbGF0ZXMiCklEU19BUFBEQVRBICAgICAgICAgICAgICAgICAiQXBwbGljYXRpb24gRGF0YSIKSURTX1BSSU5USE9PRCAgICAgICAgICAgICAgICJQcmludEhvb2QiCklEU19MT0NBTF9BUFBEQVRBICAgICAgICAgICAiTG9jYWwgU2V0dGluZ3NcXEFwcGxpY2F0aW9uIERhdGEiCklEU19JTlRFUk5FVF9DQUNIRSAgICAgICAgICAiTG9jYWwgU2V0dGluZ3NcXFRlbXBvcmFyeSBJbnRlcm5ldCBGaWxlcyIKSURTX0NPT0tJRVMgICAgICAgICAgICAgICAgICJDb29raWVzIgpJRFNfSElTVE9SWSAgICAgICAgICAgICAgICAgIkxvY2FsIFNldHRpbmdzXFxIaXN0b3J5IgpJRFNfUFJPR1JBTV9GSUxFUyAgICAgICAgICAgIlByb2dyYW0gRmlsZXMiCklEU19NWVBJQ1RVUkVTICAgICAgICAgICAgICAiTXkgUGljdHVyZXMiCklEU19QUk9HUkFNX0ZJTEVTX0NPTU1PTiAgICAiUHJvZ3JhbSBGaWxlc1xcQ29tbW9uIEZpbGVzIgpJRFNfQ09NTU9OX0RPQ1VNRU5UUyAgICAgICAgIkRvY3VtZW50cyIKSURTX0FETUlOVE9PTFMgICAgICAgICAgICAgICJTdGFydCBNZW51XFxQcm9ncmFtc1xcQWRtaW5pc3RyYXRpdmUgVG9vbHMiCklEU19DT01NT05fTVVTSUMgICAgICAgICAgICAiRG9jdW1lbnRzXFxNeSBNdXNpYyIKSURTX0NPTU1PTl9QSUNUVVJFUyAgICAgICAgICJEb2N1bWVudHNcXE15IFBpY3R1cmVzIgpJRFNfQ09NTU9OX1ZJREVPICAgICAgICAgICAgIkRvY3VtZW50c1xcTXkgVmlkZW8iCklEU19DREJVUk5fQVJFQSAgICAgICAgICAgICAiTG9jYWwgU2V0dGluZ3NcXEFwcGxpY2F0aW9uIERhdGFcXE1pY3Jvc29mdFxcQ0QgQnVybmluZyIKfQo=