UP////////8mCkRFRklOSVRJT05TIElNUExJQ0lUIFRBR1MgOjo9CkJFR0lOCmlkLWNlIE9CSkVDVCBJREVOVElGSUVSICA6Oj0gIHtqb2ludC1pc28tY2NpdHQoMikgZHMoNSkgewogICAgICBrZmluZWRBdHRyaWJ1dGUgOjo9IFNFUVVFTkNFIHsKICAgdHlwZSBQcmludGFibGVTdHJpbmcgKFNJWkUKICAgICAgICAgICAgICAgICAgICAgKDEgIC4gLnViLWRvbWFpbi1kZWZpbmVkLWF0dHJpYnV0ZS10eXBlLWxlbmd0aCkpLAogICB2YWx1ZSBQcmludGFibGVTdHJpbmcgKFNJWkUKICAgICAgICAgICAgICAgICAgICAgICAgKDEuLnViLWRvbWFpbi1kZWZpbmVkLWF0dHJpYnV0ZS12YWx1ZS1sZW5ndGgpKX0KRXh0ZW5zaW9uQXR0cmlidXRlcyA6Oj0gU0VUIFNJWkUgKDEuLnViLWV4dGVuc2lvbi1hdHRyaWJ1dGVzKSBPRgogICAgICAgICAgICAgICAgICAgICAgICBFeHRlbnNpb25BdHRyaWJ1dGUKRXh0ZW5zaW9uQXR0cmlidXRlIDo6PSAgU0VRVUVOQ0UgewogICBleHRlbnNpb24tYXR0cmlidXRlLXR5cGUgWzBdIEVYUExJQ0lUIElOVEVHRVIgKDAuLnViLWV4dGVuc2lvbi1hdHRyaWJ1dGVzKSwKICAgZXh0ZW5zaW9uLWF0dHJpYnV0ZS12YWx1ZSBbMV0gRVhQTElDSVQKICAgICAgICAgICAgICAgICAgICAgICAgQU5ZIERFRklORUQgQlkgZXh0ZW5zaW9uLWF0dHJpYnV0ZS10eXBlIH0KY29tbW9uLW5hbWUgSU5URUdFUiA6Oj0gMQpDb21tb25OYW1lIDo6PSBQcmludGFibGVTdHJpbmcgKFNJWkUgKDEuLnViLWNvbW1vbi1uYW1lLWxlbmd0aCkpCnRlbGV0ZXgtY29tbW9uLW5hbWUgSU5URUdFUiA6Oj0gMgpUZWxldGV4Q29tbW9uTmFtZSA6Oj0gVGVsZXRleFN0cmluZyAoU0laRSAoMS4udWItb21jbW9uLW5hbWUtbGVuZ3RoKSkKdGVsZXRleC1vcmdhbml6YXRpb24tbmFtZSBJTlRFR0VSIDo6PSAzClRlbGV0ZXhPcmdhbml6YXRpb25OYW1lIDo6PQogICAgICAgICAgICAgICAgVGVsZXRleFN0cmluZyAoU0laRSAoMS4udWItb3JnYW5pemF0aW9uLW5hbWUtbGVuZ3RoKSkKdGVsZXRleC1wZXJzb25hbC1uYW1lIElOVEVHRVIgOjo9IDQKVGVsZXRleFBlcnNvbmFsTmFtZSA6Oj0gU0VUIHsKICAgc3VybmFtZSBbMF0gRVhQTElDSVQgVGVsZXRleFN0cmluZyAoU0laRSAoMS4udWItc3VybmFtZS1sZW5ndGgpKSwKICAgZ2l2ZW4tbmFtZSBbMV0gRVhQTElDSVQgVGVsZXRleFN0cmluZwogICAgICAgICAgICAgICAgKFNJWkUgKDEuLnViLWdpdmVuLW5hbWUtbGVuZ3RoKSkgT1BUSU9OQUwsCiAgIGluaXRpYWxzIFsyXSBFWFBMSUNJVCBUZWxldGV4U3RyaW5nIChTSVpFICgxLi51Yi1pbml0aWFscy1sZW5ndGgpKSBPUFRJT05BTCwKICAgZ2VuZXJhdGlvbi1xdWFsaWZpZXIgWzNdIEVYUExJQ0lUIFRlbGV0ZXhTdHJpbmcgKFNJWkUKICAgICAgICAgICAgICAgICgxLi51Yi1nZW5lcmF0aW9uLXF1YWxpZmllci1sZW5ndGgpKSBPUFRJT05BTCB9CnRlbGV0ZXgtb3JnYW5pemF0aW9uYWwtdW5pdC1uYW1lcyBJTlRFR0VSIDo6PSA1ClRlbGV0ZXhPcmdhbml6YXRpb25hbFVuaXROYW1lcyA6Oj0gU0VRVUVOQ0UgU0laRQogICAgICAgICgxLi51Yi1vcmdhbml6YXRpb25hbC11bml0cykgNDApIHg5YWxnb3JpdGhtKDQpIDMgfQpEc3MtU2lnLVZhbHVlIDo6PSBTRVFVRU5DRSB7CiAgICAgciAgICAgICBJTlRFR0VSLAogICAgIHMgICAgICAgSU5URUdFUgp9CmRocHVibGljbnVtYmVyIE9CSkVDVCBJREVOVElGSUVSIDo6PSB7CiAgICAgaXNvKDEpIG1lbWJlci1ib2R5KDIpIHVzKDg0MCkgYW5zaS14OTQyKDEwMDQ2KSBudW1iZXItdHlwZSgyKSAxIH0KRG9tYWluUGFyYW1ldGVycyA6Oj0gU0VRVUVOQ0UgewogICAgIHAgICAgICAgSU5URUdFUiwgLS0gb2RkIHByaW1lLCBwPWpxICsxCiAgICAgZyAgICAgICBJTlRFR0VSLCAtLSBnZW5lcmF0b3IsIGcKICAgICBxICAgICAgIElOVEVHRVIsIC0tIGZhY3RvciBvZiBwLTEKICAgICBqICAgICAgIElOVEVHRVIgT1BUSU9OQUwsIC0tIHN1Ymdyb3VwIGZhY3Rvciwgaj49IDIKICAgICB2YWxpZGEgICAgICAgICAgICAgICAgICBCdWlsdEluRG9tYWluRGVmaW5lZEF0dHJpYnV0ZXMgT1BUSU9OQUwsCiAgIC0tIHNlZSBhbHNvIHRlbGV0ZXgtZG9tYWluLWRlZmluZWQtYXR0cmlidXRlcwogICBleHRlbnNpb24tYXR0cmlidXRlcyBFeHRlbnNpb25BdHRyaWJ1dGVzIE9QVElPTkFMIH0KQnVpbHRJblN0YW5kYXJkQXR0cmlidXRlcyA6Oj0gU0VRVUVOQ0UgewogICBjb3VudHJ5LW5hbWUgQ291bnRyeU5hbWUgT1BUSU9OQUwsCiAgIGFkbWluaXN0cmF0aW9uLWRvbWFpbi1uYW1lIEFkbWluaXN0cmF0aW9uRG9tYWluTmFtZSBPUFRJT05BTCwKICAgbmV0d29yay1hZGRyZXNzICAgICAgWzBdIEVYUExJQ0lUIE5ldHdvcmtBZGRyZXNzIE9QVElPTkFMLAogICAtLSBzZWUgYWxzbyBleHRlbmRlZC1uZXR3b3JrLWFkZHJlc3MKICAgdGVybWluYWwtaWRlbnRpZmllciAgWzFdIEVYUExJQ0lUIFRlcm1pbmFsSWRlbnRpZmllciBPUFRJT05BTCwKICAgcHJpdmF0ZS1kb21haW4tbmFtZSAgWzJdIEVYUExJQ0lUIFByaXZhdGVEb21haW5OYW1lIE9QVElPTkFMLAogICBvcmdhbml6YXRpb24tbmFtZSAgICBbM10gRVhQTElDSVQgT3JnYW5pemF0aW9uTmFtZSBPUFRJT05BTCwKICAgLS0gc2VlIGFsc28gdGVsZXRleC1vcmdhbml6YXRpb24tbmFtZQogICBudW1lcmljLXVzZXItaWRlbnRpZmllciAgICAgIFs0XSBFWFBMSUNJVCBOdW1lcmljVXNlcklkZW50aWZpZXIgT1BUSU9OQUwsCiAgIHBlcnNvbmFsLW5hbWUgICAgICAgIFs1XSBFWFBMSUNJVCBQZXJzb25hbE5hbWUgT1BUSU9OQUwsCiAgIC0tIHNlZSBhbHNvIHRlbGV0ZXgtcGVyc29uYWwtbmFtZQogICBvcmdhbml6YXRpb25hbC11bml0LW5hbWVzICAgIFs2XSBFWFBMSUNJVCBPcmdhbml6YXRpb25hbFVuaXROYW1lcyBPUFRJT05BTAogICAtLSBzZWUgYWxzbyB0ZWxldGV4LXJpbnRhYmxlU3RyaW5nIChTSVpFICgxLi51Yi1jb21tb24tbmFtZS1sZW5ndGgpKQp0ZWxldGV4LWNvbW1vbi1uYW1lIElOVEVHRVIgOjo9IDIKVGVsZXRleENvbW1vbk5hbWUgOjo9IFRlbGV0ZXhTdHJpbmcgKFNJWkUgKDEuLnViLWNvbW1vbi1uYW1lLWxlbmd0aCkpCnRlbGV0ZXgtb3JnYW5pemF0aW9uLW5hbWUgSU5URUdFUiA6Oj0gMwpUZWxldGV4T3JnYW5pemF0aW9uTmFtZSA6Oj0KICAgICAgICAgICAgICAgIFRlbGV0ZXhTdHJpbmcgKFNJWkUgKDEuLnViLW9yZ2FuaXphdGlvbi1uYW1lLWxlbmd0aCkpCnRlbGV0ZXgtcGVyc29uYWwtbmFtZSBJTlRFR0VSIDo6PSA0ClRlbGV0ZXhQZXJzb25hbE5hbWUgOjo9IFNFVCB7CiAgIHN1cm5hbWUgWzBdIEVYUExJQ0lUIFRlbGV0ZXhTdHJpbmcgKFNJWkUgKDEuLnViLXN1cm5hbWUtbGVuZ3RoKSksCiAgIGdpdmVuLW5hbWUgWzFdIEVYUExJQ0lUIFRlbGV0ZXhTdHJpbmcKICAgICAgICAgICAgICAgIChTSVpFICgxLi51Yi1naXZlbi1uYW1lLWxlbmd0aCkpIE9QVElPTkFMLAogICBpbml0aWFscyBbMl0gRVhQTElDSVQgVGVsZXRleFN0cmluZyAoU0laRSAoMS4udWItaW5pdGlhbHMtbGVuZ3RoKSkgT1BUSU9OQUwsCiAgIGdlbmVyYXRpb24tcXVhbGlmaWVyIFszXSBFWFBMSUNJVCBUZWxldGV4U3RyaW5nIChTSVpFCiAgICAgICAgICAgICAgUVVFTkNFIHsKICAgYnVpbHQtaW4tc3RhbmRhcmQtYXR0cmlidXRlcyBCdWlsdEluU3RhbmRhcmRBdHRyaWJ1dGVzLAogICBidWlsdC1pbi1kb21haW4tZGVmaW5lZC1hdHRyaWJ1dGVzCiAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWx0SW5Eb21haW5EZWZpbmVkQXR0cmlidXRlcyBPUFRJT05BTCwKICAgLS0gc2VlIGFsc28gdGVsZXRleC1kb21haW4tZGVmaW5lZC1hdHRyaWJ1dGVzCiAgIGV4dGVuc2lvbi1hdHRyaWJ1dGVzIEV4dGVuc2lvbkF0dHJpYnV0ZXMgT1BUSU9OQUwgfQpCdWlsdEluU3RhbmRhcmRBdHRyaWJ1dGVzIDo6PSBTRVFVRU5DRSB7CiAgIGNvdW50cnktbmFtZSBDb3VudHJ5TmFtZSBPUFRJT05BTCwKICAgYWRtaW5pc3RyYXRpb24tZG9tYWluLW5hbWUgQWRtaW5pc3RyYXRpb25Eb21haW5OYW1lIE9QVElPTkFMLAogICBuZXR3b3JrLWFkZHJlc3MgICAgICBbMF0gRVhQTElDSVQgTmV0d29ya0FkZHJlc3MgT1BUSU9OQUwsCiAgIC0tIHNlZSBhbHNvIGV4dGVuZGVkLW5ldHdvcmstYWRkcmVzcwogICB0ZXJtaW5hbC1pZGVudGlmaWVyICBbMV0gRVhQTElDSVQgVGVybWluYWxJZGVudGlmaWVyIE9QVElPTkFMLAogICBwcml2YXRlLWRvbWFpbi1uYW1lICBbMl0gRVhQTElDSVQgUHJpdmF0ZURvbWFpbk5hbWUgT1BUSU9OQUwsCiAgIG9yZ2FuaXphdGlvbi1uYW1lICAgIFszXSBFWFBMSUNJVCBPcmdhbml6YXRpb25OYW1lIE9QVElPTkFMLAogICAtLSBzZWUgYWxzbyB0ZWxldGV4LW9yZ2FuaXphdGlvbi1uYW1lCiAgIG51bWVyaWMtdXNlci1pZGVudGlmaWVyICAgICAgWzRdIEVYUExJQ0lUIE51bWVyaWNVc2VySWRlbnRpZmllciBPUFRJT05BTCwKICAgcGVyc29uYWwtbmFtZSAgICAgICAgWzVdIEVYUExJQ0lUIFBlcnNvbmFsTmFtZSBPUFRJT05BTCwKICAgLS0gc2VlIGFsc28gdGVsZXRleC1wZXJzb25hbC1uYW1lCiAgIG9yZ2FuaXphdGlvbmFsLXVuaXQtbmFtZXMgICAgWzZdIEVYUExJQ0lUIE9yZ2FuaXphdGlvbmFsVW5pdE5hbWVzIE9QVElPTkFMCiAgIC0tIHNlZSBhbHNvIHRlbGV0ZXgtb3JnYW5pemF0aW9uYWwtdW5pdC1uYW1lcyAtLQp9CkNvdW50cnlOYW1lIDo6PSBbQVBQTElDQVRJT04gMV0gQ0hPSUNFIHsKICAgeDEyMS1kY2MtY29kZSBOdW1lQXR0cmlidXRlcyBPUFRJT05BTCwKICAgLS0gc2VlIGFsc28gdGVsZXRleC1kb21haW4tZGVmaW5lZC1hdHRyaWJ1dGVzCiAgIGV4dGVuc2lvbi1hdHRyaWJ1dGVzIEV4dGVuc2lvbkF0dHJpYnV0ZXMgT1BUSU9OQUwgfQpCdWlsdEluU3RhbmRhcmRBdHRyaWJ1dGVzIDo6PSBTRVFVRU5DRSB7CiAgIGNvdW50cnktbmFtZSBDb3VudHJ5TmFtZSBPUFRJT05BTCwKICAgYWRtaW5pc3RyYXRpb24tZG9tYWluLW5hbWUgQWRtaW5pc3RyYXRpb25Eb21haW5OYW1lIE9QVElPTkFMLAogICBuZXR3b3JrLWFkZHJlc3MgICAgICBbMF0gRVhQTElDSVQgTmV0d29ya0FkZHJlc3MgT1BUSU9OQUwsCiAgIC0tIHNlZSBhbHNvIGV4dGVuZGVkLW5ldHdvcmstYWRkcmVzcwogICB0ZXJtaW5hbC1pZGVudGlmaWVyICBbMV0gRVhQTElDSVQgVGVybWluYWxJZGVudGlmaWVyIE9QVElPTkFMLAogICBwcml2YXRlLWRvbWFpbi1uYW1lICBbMl0gRVhQTElDSVQgUHJpdmF0ZURvbWFpbk5hbWUgT1BUSU9OQUwsCiAgIG9yZ2FuaXphdGlvbi1uYW1lICAgIFszXSBFWFBMSUNJVCBPcmdhbml6YXRpb25OYW1lIE9QVElPTkFMLAogICAtLSBzZWUgYWxzbyB0ZWxldGV4LW9yZ2FuaXphdGlvbi1uYW1lCiAgIG51bWVyaWMtdXNlci1pZGVudGlmaWVyICAgICAgWzRdIEVYUExJQ0lUIE51bWVyaWNVc2VySWRlbnRpZmllciBPUFRJT05BTCwKICAgcGVyc29uYWwtbmFtZSAgICAgICAgWzVdIEVYUExJQ0lUIFBlcnNvbmFsTmFtZSBPUFRJT05BTCwKICAgLS0gc2VlIGFsc28gdGVsZXRleC1wZXJzb25hbC1uYW1lCiAgIG9yZ2FuaXphdGlvbmFsLXVuaXQtbmFtZXMgICAgWzZdIEVYUExJQ0lUIE9yZ2FuaXphdGlvbmFsVW5pdE5hbWVzIE9QVElPTkFMCiAgIC0tIHNlZSBhbHNvIHRlbGV0ZXgtb3JnYW5pemF0aW9uYWwtdW5pdC1uYW1lcyAtLQp9CkNvdW50cnlOYW1lIDo6PSBbQVBQTElDQVRJT04gMV0gQ0hPSUNFIHsKICAgeDEyMS1kY2MtY29kZSBOdW1lcmljU3RyaW5nCiAgICAgICAgICAgICAgICAoU0laRSAodWItY291bnRyeS1uYW1lLW51bWVyaWMtbGVuZ3RoKSksCiAgIGlzby0zMTY2LWFscGhhMi1jb2RlIFByaW50YWJsZVN0cmluZwogICAgICAgICAgICAgICAgKFNJWkUgKHViLWNvdW50cnktbmFtZS1hbDQwKSB4OWFsZ29yaXRobSg0KSAxIH0KRHNzLVBhcm1zICA6Oj0gIFNFUVVFTkNFICB7CiAgICAgcCAgICAgICAgICAgICBJTlRFR0VSLAogICAgIHEgICAgICAgICAgICAgSU5URUdFUiwKICAgICBnICAgICAgICAgICAgIElOVEVHRVIgIH0KT1JBZGRyZXNzIDo6PSBTRVFVRU5DRSB7CiAgIGJ1aWx0LWluLXN0YW5kYXJkLWF0dHJpYnV0ZXMgQnVpbHRJblN0YW5kYXJkQXR0cmlidXRlcywKICAgYnVpbHQtaW4tZG9tYWluLWRlZmluZWQtYXR0cmlidXRlcwogICAgICAgICAgICAgICAgICAgICAgICBCdWlsdEluRG9tYWluRGVmaW5lZEF0dHJpYnV0ZXMgT1BUSU9OQUwsCiAgIC0tIHNlZSBhbHNvIHRlbGV0ZXgtZG9tYWluLWRlZmluZWQtYXR0cmlidXRlcwogICBleHRlbnNpb24tYXR0cmlidXRlcyBFeHRlbnNpb25BdHRyaWJ1dGVzIE9QVElPTkFMIH0KQnVpbHRJblN0YW5kYXJkQXR0cmlidXRlcyA6Oj0gU0VRVUVOQ0UgewogICBjb3VudHJ5LW5hbWUgQ291bnRyeU5hbWUgT1BUSU9OQUwsCiAgIGFkbWluaXN0cmF0aW9uLWRvbWFpbi1uYW1lIEFkbWluaXN0cmF0aW9uRG9tYWluTmFtZSBPUFRJT05BTCwKICAgbmV0d29yay1hZGRyZXNzICAgICAgWzBdIEVYUExJQ0lUIE5ldHdvcmtBZGRyZXNzIE9QVElPTkFMLAogICAtLSBzZWUgYWxzbyBleHRlbmRlZC1uZXR3b3JrLWFkZHJlc3MKICAgdGVybWluYWwtaWRlbnRpZmllciAgWzFdIEVYUExJQ0lUIFRlcm1pbmFsSWRlbnRpZmllciBPUFRJT05BTCwKICAgcHJpdmF0ZS1kb21haW4tbmFtZSAgWzJdIEVYUExJQ0lUIFByaXZhdGVEb21haW5OYW1lIE9QVElPTkFMLAogICBvcmdhbml6YXRpb24tbmFtZSAgICBbM10gRVhQTElDSVQgT3JnYW5pemF0aW9uTmFtZSBPUFRJT05BTCwKICAgLS0gc2VlIGFsc28gdGVsZXRleC1vcmdhbml6YXRpb24tbmFtZQogICBudW1lcmljLXVzZXItUFRJT05BTCwKICAgLS0gc2VlIGFsc28gdGVsZXRleC1kb21haW4tZGVmaW5lZC1hdHRyaWJ1dGVzCiAgIGV4dGVuc2lvbi1hdHRyaWJ1dGVzIEV4dGVuc2lvbkF0dHJpYnV0ZXMgT1BUSU9OQUwgfQpCdWlsdEluU3RhbmRhcmRBdHRyaWJ1dGVzIDo6PSBTRVFVRU5DRSB7CiAgIGNvdW50cnktbmFtZSBDb3VudHJ5TmFtZSBPUFRJT05BTCwKICAgYWRtaW5pc3RyYXRpb24tZG9tYWluLW5hbWUgQWRtaW5pc3RyYXRpb25Eb21haW5OYW1lIE9QVElPTkFMLAogICBuZXR3b3JrLWFkZHJlc3MgICAgICBbMF0gRVhQTElDSVQgTmV0d29ya0FkZHJlc3MgT1BUSU9OQUwsCiAgIC0tIHNlZSBhbHNvIGV4dGVuZGVkLW5ldHdvcmstYWRkcmVzcwogICB0ZXJtaW5hbC1pZGVudGlmaWVyICBbMV0gRVhQTElDSVQgVGVybWluYWxJZGVudGlmaWVyIE9QVElPTkFMLAogICBwcml2YXRlLWRvbWFpbi1uYW1lICBbMl0gRVhQTElDSVQgUHJpdmF0ZURvbWFpbk5hbWUgT1BUSU9OQUwsCiAgIG9yZ2FuaXphdGlvbi1uYW1lICAgIFszXSBFWFBMSUNJVCBPcmdhbml6YXRpb25OYW1lIE9QVElPTkFMLAogICAtLSBzZWUgYWxzbyB0ZWxldGV4LW9yZ2FuaXphdGlvbi1uYW1lCiAgIG51bWVyaWMtdXNlci1pZGVudGlmaWVyICAgICAgWzRdIEVYUExJQ0lUIE51bWVyaWNVc2VySWRlbnRpZmllciBPUFRJT05BTCwKICAgcGVyc29uYWwtbmFtZSAgICAgICAgWzVdIEVYUExJQ0lUIFBlcnNvbmFsTmFtZSBPUFRzIDo6PSBTRVFVRU5DRSBTSVpFCiAgICAgICAgKDEuLnViLW9yZ2FuaXphdGlvbmFsLXVuaXRzKSBPRiBUZWxldGV4T3JnYW5pemF0aW9uYWxVbml0TmFtZQpUZWxldGV4Tw==