IyEgL2Jpbi9zaAouICIke3NyY2Rpcj0ufS9pbml0LnNoIjsgcGF0aF9wcmVwZW5kXyAuIC4uL3NyYwoKIyBUZXN0IC0tY29tbWVudCBvcHRpb24uCgpjYXQgPDxcRU9GID4gbWctdGVzdDUucG8KIyBHZXJtYW4gdHJhbnNsYXRpb25zIGZvciBHTlUgZ2V0dGV4dCBwYWNrYWdlLgojIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NiwgMTk5NywgMjAwMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KbXNnaWQgIiIKbXNnc3RyICIiCiJQcm9qZWN0LUlkLVZlcnNpb246IEdOVSBnZXR0ZXh0IDAuMTEtcHJlMVxuIgoiUE9ULUNyZWF0aW9uLURhdGU6IDIwMDEtMTItMDggMjA6MzMrMDEwMFxuIgoiUE8tUmV2aXNpb24tRGF0ZTogMjAwMS0xMS0wNCAxMjoyNSswMTAwXG4iCiJMYXN0LVRyYW5zbGF0b3I6IEthcmwgRWljaHdhbGRlciA8a2VAc3VzZS5kZT5cbiIKIkxhbmd1YWdlLVRlYW06IEdlcm1hbiA8ZGVAbGkub3JnPlxuIgoiTUlNRS1WZXJzaW9uOiAxLjBcbiIKIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xXG4iCiJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG4iCiJQbHVyYWwtRm9ybXM6IG5wbHVyYWxzPTI7IHBsdXJhbD0obiAhPSAxKTtcbiIKCiM6IGFyZ21hdGNoLmM6MTQxCiMsIGMtZm9ybWF0Cm1zZ2lkICJpbnZhbGlkIGFyZ3VtZW50IGAlcycgZm9yIGAlcyciCm1zZ3N0ciAidW5n/Gx0aWdlcyBBcmd1bWVudCC7JXOrIGb8ciC7JXOrIgoKIzogYXJnbWF0Y2guYzoxNDIKIywgYy1mb3JtYXQKbXNnaWQgImFtYmlndW91cyBhcmd1bWVudCBgJXMnIGZvciBgJXMnIgptc2dzdHIgIm1laHJkZXV0aWdlcyBBcmd1bWVudCC7JXOrIGb8ciC7JXOrIgoKIzogYXJnbWF0Y2guYzoxNjIKbXNnaWQgIlZhbGlkIGFyZ3VtZW50cyBhcmU6Igptc2dzdHIgIkf8bHRpZ2UgQXJndW1lbnRlIHNpbmQ6IgoKIyBAcHJvb2ZyZWFkCiM6IGNvcHktZmlsZS5jOjYwCiMsIGMtZm9ybWF0Cm1zZ2lkICJlcnJvciB3aGlsZSBvcGVuaW5nIFwiJXNcIiBmb3IgcmVhZGluZyIKbXNnc3RyICLWZmZuZW4gZGVyIERhdGVpILslc6sgenVtIExlc2VuIGZlaGxnZXNjaGxhZ2VuIgoKIyBAcHJvb2ZyZWFkCiM6IGNvcHktZmlsZS5jOjY3CiMsIGMtZm9ybWF0Cm1zZ2lkICJjYW5ub3Qgb3BlbiBiYWNrdXAgZmlsZSBcIiVzXCIgZm9yIHdyaXRpbmciCm1zZ3N0ciAi1mZmbmVuIGRlciBTaWNoZXJ1bmdzZGF0ZWkguyVzqyB6dW0gU2NocmVpYmVuIGZlaGxnZXNjaGxhZ2VuIgoKIzogY29weS1maWxlLmM6ODAKIywgYy1mb3JtYXQKbXNnaWQgImVycm9yIHJlYWRpbmcgXCIlc1wiIgptc2dzdHIgIkZlaGxlciBiZWltIExlc2VuIHZvbiC7JXOrIgoKIzogY29weS1maWxlLmM6ODYgY29weS1maWxlLmM6OTAKIywgYy1mb3JtYXQKbXNnaWQgImVycm9yIHdyaXRpbmcgXCIlc1wiIgptc2dzdHIgIkZlaGxlciBiZWltIFNjaHJlaWJlbiB2b24guyVzqyIKCiM6IGNvcHktZmlsZS5jOjkyCiMsIGMtZm9ybWF0Cm1zZ2lkICJlcnJvciBhZnRlciByZWFkaW5nIFwiJXNcIiIKbXNnc3RyICJGZWhsZXIgbmFjaCBkZW0gTGVzZW4gdm9uILslc6siCgojOiBlcnJvci5jOjExNQptc2dpZCAiVW5rbm93biBzeXN0ZW0gZXJyb3IiCm1zZ3N0ciAiVW5iZWthbm50ZXIgU3lzdGVtZmVobGVyIgoKIyBAcHJvb2ZyZWFkCiM6IGV4ZWN1dGUuYzoxNzAgZXhlY3V0ZS5jOjIwNSBwaXBlLWJpZGkuYzoxNTYgcGlwZS1iaWRpLmM6MTkxIHBpcGUtaW4uYzoxNjkKIzogcGlwZS1pbi5jOjIwNSBwaXBlLW91dC5jOjE2OSBwaXBlLW91dC5jOjIwNSB3YWl0LXByb2Nlc3MuYzoxMzYKIywgYy1mb3JtYXQKbXNnaWQgIiVzIHN1YnByb2Nlc3MgZmFpbGVkIgptc2dzdHIgIlN1YnByb3plc3MgJXMgZmVobGdlc2NobGFnZW4iCgojOiBnZXRvcHQuYzo2OTEKIywgYy1mb3JtYXQKbXNnaWQgIiVzOiBvcHRpb24gYCVzJyBpcyBhbWJpZ3VvdXNcbiIKbXNnc3RyICIlczogT3B0aW9uILslc6sgaXN0IG1laHJkZXV0aWdcbiIKCiM6IGdldG9wdC5jOjcxNgojLCBjLWZvcm1hdAptc2dpZCAiJXM6IG9wdGlvbiBgLS0lcycgZG9lc24ndCBhbGxvdyBhbiBhcmd1bWVudFxuIgptc2dzdHIgIiVzOiBPcHRpb24guy0tJXOrIGVyd2FydGV0IGtlaW4gQXJndW1lbnRcbiIKCiM6IGdldG9wdC5jOjcyMQojLCBjLWZvcm1hdAptc2dpZCAiJXM6IG9wdGlvbiBgJWMlcycgZG9lc24ndCBhbGxvdyBhbiBhcmd1bWVudFxuIgptc2dzdHIgIiVzOiBPcHRpb24guyVjJXOrIGVyd2FydGV0IGtlaW4gQXJndW1lbnRcbiIKCiM6IGdldG9wdC5jOjczOSBnZXRvcHQuYzo5MTIKIywgYy1mb3JtYXQKbXNnaWQgIiVzOiBvcHRpb24gYCVzJyByZXF1aXJlcyBhbiBhcmd1bWVudFxuIgptc2dzdHIgIiVzOiBPcHRpb24guyVzqyBlcndhcnRldCBlaW4gQXJndW1lbnRcbiIKCiM6IGdldG9wdC5jOjc2OAojLCBjLWZvcm1hdAptc2dpZCAiJXM6IHVucmVjb2duaXplZCBvcHRpb24gYC0tJXMnXG4iCm1zZ3N0ciAiJXM6IHVuYmVrYW5udGUgT3B0aW9uILstLSVzq1xuIgoKIzogZ2V0b3B0LmM6NzcyCiMsIGMtZm9ybWF0Cm1zZ2lkICIlczogdW5yZWNvZ25pemVkIG9wdGlvbiBgJWMlcydcbiIKbXNnc3RyICIlczogdW5iZWthbm50ZSBPcHRpb24guyVjJXOrXG4iCgojIE32Y2h0ZSBtYWwgZ2VybmUgd2lzc2VuLCB3YXMgZGVyIFVudGVyc2NoaWVkIHp3aXNjaGVuCiMgInVuenVs5HNzaWciIHVuZCAidW5n/Gx0aWciIGlzdC4KIyDcYnJpZ2VucyBpc3QgaW0gRW5nbGlzY2hlbiAiaWxsZWdhbCIgZmFsc2NoLgojIEBwcm9vZnJlYWQKIzogZ2V0b3B0LmM6Nzk4CiMsIGMtZm9ybWF0Cm1zZ2lkICIlczogaWxsZWdhbCBvcHRpb24gLS0gJWNcbiIKbXNnc3RyICIlczogdW56dWzkc3NpZ2UgT3B0aW9uIC0tICVjXG4iCgojOiBnZXRvcHQuYzo4MDEKIywgYy1mb3JtYXQKbXNnaWQgIiVzOiBpbnZhbGlkIG9wdGlvbiAtLSAlY1xuIgptc2dzdHIgIiVzOiB1bmf8bHRpZ2UgT3B0aW9uIC0tICVjXG4iCgojOiBnZXRvcHQuYzo4MzEgZ2V0b3B0LmM6OTYxCiMsIGMtZm9ybWF0Cm1zZ2lkICIlczogb3B0aW9uIHJlcXVpcmVzIGFuIGFyZ3VtZW50IC0tICVjXG4iCm1zZ3N0ciAiJXM6IE9wdGlvbiBlcndhcnRldCBlaW4gQXJndW1lbnQgLS0gJWNcbiIKCiM6IGdldG9wdC5jOjg3OAojLCBjLWZvcm1hdAptc2dpZCAiJXM6IG9wdGlvbiBgLVcgJXMnIGlzIGFtYmlndW91c1xuIgptc2dzdHIgIiVzOiBPcHRpb24guy1XICVzqyBpc3QgbWVocmRldXRpZ1xuIgoKIzogZ2V0b3B0LmM6ODk2CiMsIGMtZm9ybWF0Cm1zZ2lkICIlczogb3B0aW9uIGAtVyAlcycgZG9lc24ndCBhbGxvdyBhbiBhcmd1bWVudFxuIgptc2dzdHIgIiVzOiBPcHRpb24guy1XICVzqyBlcndhcnRldCBrZWluIEFyZ3VtZW50XG4iCgojOiBqYXZhY29tcC5jOjQ2NQptc2dpZCAiSmF2YSBjb21waWxlciBub3QgZm91bmQsIHRyeSBpbnN0YWxsaW5nIGdjaiBvciBzZXQgJEpBVkFDIgptc2dzdHIgIiIKIkphdmEtQ29tcGlsZXIgbmljaHQgZ2VmdW5kZW47IGJpdHRlILtnY2qrIGluc3RhbGxpZXJlbiBvZGVyICRKQVZBQyBzZXR6ZW4iCgojOiBqYXZhZXhlYy5jOjQwNAptc2dpZCAiSmF2YSB2aXJ0dWFsIG1hY2hpbmUgbm90IGZvdW5kLCB0cnkgaW5zdGFsbGluZyBnaWogb3Igc2V0ICRKQVZBIgptc2dzdHIgIiIKIlZpcnR1ZWxsZSBKYXZhLU1hc2NoaW5lIG5pY2h0IGdlZnVuZGVuOyBiaXR0ZSC7Z2NqqyBpbnN0YWxsaWVyZW4gb2RlclxuIgoiJEpBVkEgc2V0emVuIgoKIzogb2JzdGFjay5jOjQ3NCB4ZXJyb3IuYzo3NSB4bWFsbG9jLmM6NTYKbXNnaWQgIm1lbW9yeSBleGhhdXN0ZWQiCm1zZ3N0ciAidmlydHVlbGxlciBTcGVpY2hlciBlcnNjaPZwZnQiCgojIEF1Y2ggIlBpcGUiIGVpbmRldXRzY2hlbi4gQHByb29mcmVhZAojOiBwaXBlLWJpZGkuYzoxMTkgcGlwZS1iaWRpLmM6MTIxIHBpcGUtaW4uYzoxMzYgcGlwZS1vdXQuYzoxMzYKbXNnaWQgImNhbm5vdCBjcmVhdGUgcGlwZSIKbXNnc3RyICJFcyBpc3QgbmljaHQgbfZnbGljaCwgZWluZSBQaXBlIHp1IGVyemV1Z2VuIgoKIzogd2FpdC1wcm9jZXNzLmM6MTE3CiMsIGMtZm9ybWF0Cm1zZ2lkICIlcyBzdWJwcm9jZXNzIgptc2dzdHIgIlN1YnByb3plc3MgJXMiCgojOiB3YWl0LXByb2Nlc3MuYzoxMjkKIywgYy1mb3JtYXQKbXNnaWQgIiVzIHN1YnByb2Nlc3MgZ290IGZhdGFsIHNpZ25hbCIKbXNnc3RyICJTdWJwcm96ZXNzICVzIGhhdCBlaW4gZmF0YWxlcyBTaWduYWwgZXJoYWx0ZW4iCgojIEEgcGF0dGVybiBzcGVjaWZpZWQgZm9yIHRoZSBtc2dpZCBvbmx5IG11c3Qgbm90IGJlIG1hdGNoZWQgd2l0aCB0aGUgbXNnc3RyLgptc2dpZCAiR1NHLTkiCm1zZ3N0ciAiQW50aXRlcnJvci1FaW5oZWl0IgpFT0YKCjogJHtNU0dHUkVQPW1zZ2dyZXB9CkxDX01FU1NBR0VTPUMgTENfQUxMPSBcCiR7TVNHR1JFUH0gLUMgLWUgQHByb29mcmVhZCAtbyBtZy10ZXN0NS50bXAgbWctdGVzdDUucG8gPm1nLXRlc3Q1LmVyciAyPiYxCnJlc3VsdD0kPwpjYXQgbWctdGVzdDUuZXJyIHwgZ3JlcCAtdiAnd2FybmluZzogTG9jYWxlIGNoYXJzZXQnIHwgZ3JlcCAtdiAnXiAnCnRlc3QgJHJlc3VsdCA9IDAgfHwgeyBFeGl0IDE7IH0KTENfQUxMPUMgdHIgLWQgJ1xyJyA8IG1nLXRlc3Q1LnRtcCA+IG1nLXRlc3Q1Lm91dCB8fCBFeGl0IDEKCmNhdCA8PFxFT0YgPiBtZy10ZXN0NS5vawojIEdlcm1hbiB0cmFuc2xhdGlvbnMgZm9yIEdOVSBnZXR0ZXh0IHBhY2thZ2UuCiMgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk2LCAxOTk3LCAyMDAxIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgptc2dpZCAiIgptc2dzdHIgIiIKIlByb2plY3QtSWQtVmVyc2lvbjogR05VIGdldHRleHQgMC4xMS1wcmUxXG4iCiJQT1QtQ3JlYXRpb24tRGF0ZTogMjAwMS0xMi0wOCAyMDozMyswMTAwXG4iCiJQTy1SZXZpc2lvbi1EYXRlOiAyMDAxLTExLTA0IDEyOjI1KzAxMDBcbiIKIkxhc3QtVHJhbnNsYXRvcjogS2FybCBFaWNod2FsZGVyIDxrZUBzdXNlLmRlPlxuIgoiTGFuZ3VhZ2UtVGVhbTogR2VybWFuIDxkZUBsaS5vcmc+XG4iCiJNSU1FLVZlcnNpb246IDEuMFxuIgoiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTFcbiIKIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRcbiIKIlBsdXJhbC1Gb3JtczogbnBsdXJhbHM9MjsgcGx1cmFsPShuICE9IDEpO1xuIgoKIyBAcHJvb2ZyZWFkCiM6IGNvcHktZmlsZS5jOjYwCiMsIGMtZm9ybWF0Cm1zZ2lkICJlcnJvciB3aGlsZSBvcGVuaW5nIFwiJXNcIiBmb3IgcmVhZGluZyIKbXNnc3RyICLWZmZuZW4gZGVyIERhdGVpILslc6sgenVtIExlc2VuIGZlaGxnZXNjaGxhZ2VuIgoKIyBAcHJvb2ZyZWFkCiM6IGNvcHktZmlsZS5jOjY3CiMsIGMtZm9ybWF0Cm1zZ2lkICJjYW5ub3Qgb3BlbiBiYWNrdXAgZmlsZSBcIiVzXCIgZm9yIHdyaXRpbmciCm1zZ3N0ciAi1mZmbmVuIGRlciBTaWNoZXJ1bmdzZGF0ZWkguyVzqyB6dW0gU2NocmVpYmVuIGZlaGxnZXNjaGxhZ2VuIgoKIyBAcHJvb2ZyZWFkCiM6IGV4ZWN1dGUuYzoxNzAgZXhlY3V0ZS5jOjIwNSBwaXBlLWJpZGkuYzoxNTYgcGlwZS1iaWRpLmM6MTkxIHBpcGUtaW4uYzoxNjkKIzogcGlwZS1pbi5jOjIwNSBwaXBlLW91dC5jOjE2OSBwaXBlLW91dC5jOjIwNSB3YWl0LXByb2Nlc3MuYzoxMzYKIywgYy1mb3JtYXQKbXNnaWQgIiVzIHN1YnByb2Nlc3MgZmFpbGVkIgptc2dzdHIgIlN1YnByb3plc3MgJXMgZmVobGdlc2NobGFnZW4iCgojIE32Y2h0ZSBtYWwgZ2VybmUgd2lzc2VuLCB3YXMgZGVyIFVudGVyc2NoaWVkIHp3aXNjaGVuCiMgInVuenVs5HNzaWciIHVuZCAidW5n/Gx0aWciIGlzdC4KIyDcYnJpZ2VucyBpc3QgaW0gRW5nbGlzY2hlbiAiaWxsZWdhbCIgZmFsc2NoLgojIEBwcm9vZnJlYWQKIzogZ2V0b3B0LmM6Nzk4CiMsIGMtZm9ybWF0Cm1zZ2lkICIlczogaWxsZWdhbCBvcHRpb24gLS0gJWNcbiIKbXNnc3RyICIlczogdW56dWzkc3NpZ2UgT3B0aW9uIC0tICVjXG4iCgojIEF1Y2ggIlBpcGUiIGVpbmRldXRzY2hlbi4gQHByb29mcmVhZAojOiBwaXBlLWJpZGkuYzoxMTkgcGlwZS1iaWRpLmM6MTIxIHBpcGUtaW4uYzoxMzYgcGlwZS1vdXQuYzoxMzYKbXNnaWQgImNhbm5vdCBjcmVhdGUgcGlwZSIKbXNnc3RyICJFcyBpc3QgbmljaHQgbfZnbGljaCwgZWluZSBQaXBlIHp1IGVyemV1Z2VuIgpFT0YKCjogJHtESUZGPWRpZmZ9CiR7RElGRn0gbWctdGVzdDUub2sgbWctdGVzdDUub3V0CnJlc3VsdD0kPwoKZXhpdCAkcmVzdWx0Cg==