IyBNZXNzYWdlc0J1bmRsZV9kZS5wcm9wZXJ0aWVzIC0tIEdlcm1hbiBsYW5ndWFnZSBtZXNzYWdlcwojIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiMKIyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgQ2xhc3NwYXRoLgojCiMgR05VIENsYXNzcGF0aCBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCiMgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBHTlUgQ2xhc3NwYXRoIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAojIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQojIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIwojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCBHTlUgQ2xhc3NwYXRoOyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhlCiMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BCiMgMDIxMTAtMTMwMSBVU0EuCiMKIyBMaW5raW5nIHRoaXMgbGlicmFyeSBzdGF0aWNhbGx5IG9yIGR5bmFtaWNhbGx5IHdpdGggb3RoZXIgbW9kdWxlcyBpcwojIG1ha2luZyBhIGNvbWJpbmVkIHdvcmsgYmFzZWQgb24gdGhpcyBsaWJyYXJ5LiAgVGh1cywgdGhlIHRlcm1zIGFuZAojIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGNvdmVyIHRoZSB3aG9sZQojIGNvbWJpbmF0aW9uLgojCiMgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgdGhlIGNvcHlyaWdodCBob2xkZXJzIG9mIHRoaXMgbGlicmFyeSBnaXZlIHlvdQojIHBlcm1pc3Npb24gdG8gbGluayB0aGlzIGxpYnJhcnkgd2l0aCBpbmRlcGVuZGVudCBtb2R1bGVzIHRvIHByb2R1Y2UgYW4KIyBleGVjdXRhYmxlLCByZWdhcmRsZXNzIG9mIHRoZSBsaWNlbnNlIHRlcm1zIG9mIHRoZXNlIGluZGVwZW5kZW50CiMgbW9kdWxlcywgYW5kIHRvIGNvcHkgYW5kIGRpc3RyaWJ1dGUgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxlIHVuZGVyCiMgdGVybXMgb2YgeW91ciBjaG9pY2UsIHByb3ZpZGVkIHRoYXQgeW91IGFsc28gbWVldCwgZm9yIGVhY2ggbGlua2VkCiMgaW5kZXBlbmRlbnQgbW9kdWxlLCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIGxpY2Vuc2Ugb2YgdGhhdAojIG1vZHVsZS4gIEFuIGluZGVwZW5kZW50IG1vZHVsZSBpcyBhIG1vZHVsZSB3aGljaCBpcyBub3QgZGVyaXZlZCBmcm9tCiMgb3IgYmFzZWQgb24gdGhpcyBsaWJyYXJ5LiAgSWYgeW91IG1vZGlmeSB0aGlzIGxpYnJhcnksIHlvdSBtYXkgZXh0ZW5kCiMgdGhpcyBleGNlcHRpb24gdG8geW91ciB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCBidXQgeW91IGFyZSBub3QKIyBvYmxpZ2F0ZWQgdG8gZG8gc28uICBJZiB5b3UgZG8gbm90IHdpc2ggdG8gZG8gc28sIGRlbGV0ZSB0aGlzCiMgZXhjZXB0aW9uIHN0YXRlbWVudCBmcm9tIHlvdXIgdmVyc2lvbi4KCiMgRklYTUU6IHJld3JpdGUgdGhpczoKZ2Nqd2VicGx1Z2luLmhlbHAuMD1TeW50YXg6IGFwcGxldHZpZXdlciBbT3B0aW9uZW5dIDxEYXRlaW5hbWU+LmNsYXNzIHwgPERhdGVpbmFtZT4uaHRtbC4uLiB8IFVSTC4uLgpnY2p3ZWJwbHVnaW4uaGVscC4xPU9wdGlvbmVuOgpnY2p3ZWJwbHVnaW4uaGVscC4yPSAgLS1oZWxwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaWVzZSBIaWxmZSBhbnplaWdlbiBhbmQgYmVlbmRlbgpnY2p3ZWJwbHVnaW4uaGVscC4zPSAgLS12ZXJzaW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uIGFuemVpZ2VuIHVuZCBiZWVuZGVuCmdjandlYnBsdWdpbi5oZWxwLjQ9ICAtLWNvZGU9PEtsYXNzZW5uYW1lPlsuY2xhc3NdICAgICAgICAgIEFwcGxldCBtaXQgS2xhc3Nlbi0gb2RlciBEYXRlaW5hbWUgYXVzZvxocmVuCmdjandlYnBsdWdpbi5oZWxwLjU9ICAtLWNvZGViYXNlPTxWZXJ6ZWljaG5pcz4gICAgICAgICAgICAgIEFwcGxldC1Db2RlYmFzaXMgc2V0emVuCmdjandlYnBsdWdpbi5oZWxwLjY9ICAtLWFyY2hpdmU9PERhdGVpbmFtZT4uamFyWywuLi5dICAgICAgIEFyY2hpdmUgenVtIEtsYXNzZW5sYWRlciBoaW56dWb8Z2VuCmdjandlYnBsdWdpbi5oZWxwLjc9ICAtLXBhcmFtPTxOYW1lPiw8V2VydD4gICAgICAgICAgICAgICAgIFBhcmFtZXRlciBhbiBBcHBsZXQg/GJlcmdlYmVuCmdjandlYnBsdWdpbi5oZWxwLjg9ICAtLXdpZHRoPTxCcmVpdGU+ICAgICAgICAgICAgICAgICAgICAgIFNldHplIEJyZWl0ZSBkZXMgQXBwbGV0ZmVuc3RlcnMKZ2Nqd2VicGx1Z2luLmhlbHAuOT0gIC0taGVpZ2h0PTxI9mhlPiAgICAgICAgICAgICAgICAgICAgICAgU2V0emUgSPZoZSBkZXMgQXBwbGV0ZmVuc3RlcnMKZ2Nqd2VicGx1Z2luLmhlbHAuMTA9ICAtLXBsdWdpbj08RWluZ2FiZXBpcGU+LDxBdXNnYWJlcGlwZT4gIFBsdWdpbm1vZHVzIGVpbnNjaGFsdGVuCmdjandlYnBsdWdpbi5oZWxwLjExPSAgLWRlYnVnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFydGVuIGRlcyBBcHBsZXQtVmlld2VycyBpbSBKYXZhLURlYnVnZ2VyIChuaWNodCBpbXBsZW1lbnRpZXJ0KQpnY2p3ZWJwbHVnaW4uaGVscC4xMj0gIC1lbmNvZGluZyA8Q29kaWVydW5nPiAgICAgICAgICAgICAgICAgQW5nYWJlIGRlciB2b24gSFRNTC1EYXRlaWVuIHZlcndlbmRldGVuIFplaWNoZW5jb2RpZXJ1bmcKZ2Nqd2VicGx1Z2luLmhlbHAuMTM9ICAtSjxMYXVmemVpdC1GbGFnPiAgICAgICAgICAgICAgICAgICAgINxiZXJnZWJlbiBkZXMgQXJndW1lbnRzIGFuIGRlbiBKYXZhLUludGVycHJldGVyCgpnY2p3ZWJwbHVnaW4ubm9faW5wdXRfZmlsZXM9YXBwbGV0dmlld2VyOiBrZWluZSBEYXRlaWVuIGFuZ2VnZWJlbgoKZ2Nqd2VicGx1Z2luLm1lbnVfdGl0bGU9QXBwbGV0CmdjandlYnBsdWdpbi5tZW51X3JlbG9hZD1OZXUgbGFkZW4KZ2Nqd2VicGx1Z2luLm1lbnVfcmVzdGFydD1OZXUgc3RhcnRlbgpnY2p3ZWJwbHVnaW4ubWVudV9zdGFydD1TdGFydApnY2p3ZWJwbHVnaW4ubWVudV9zdG9wPVN0b3AKZ2Nqd2VicGx1Z2luLm1lbnVfY2xvbmU9S2xvbmVuIC4uLgpnY2p3ZWJwbHVnaW4ubWVudV9xdWl0PUJlZW5kZW4KZ2Nqd2VicGx1Z2luLm1lbnVfdGFnPVRhZyAuLi4KZ2Nqd2VicGx1Z2luLm1lbnVfaW5mbz1JbmZvcm1hdGlvbmVuIC4uLgpnY2p3ZWJwbHVnaW4ubWVudV9lZGl0PUJlYXJiZWl0ZW4KZ2Nqd2VicGx1Z2luLm1lbnVfZW5jb2Rpbmc9WmVpY2hlbmtvZGllcnVuZwpnY2p3ZWJwbHVnaW4ubWVudV9wcmludD1EcnVja2VuIC4uLgpnY2p3ZWJwbHVnaW4ubWVudV9wcm9wZXJ0aWVzPUVpZ2Vuc2NoYWZ0ZW4gLi4uCmdjandlYnBsdWdpbi5tZW51X2Nsb3NlPVNjaGxpZd9lbgpnY2p3ZWJwbHVnaW4ubWVudV9jYW5jZWw9QWJicmVjaGVuCmdjandlYnBsdWdpbi5tZW51X3NhdmU9U3BlaWNoZXJuIHVudGVyIC4uLgoKZ2Nqd2VicGx1Z2luLmNvbnNvbGVfdGl0bGU9R0NKIHdlYiBwbHVnaW4gS29uc29sZQpnY2p3ZWJwbHVnaW4uY29uc29sZV9jbGVhcj1M9nNjaGVuCmdjandlYnBsdWdpbi5jb25zb2xlX2hpZGU9U2NobGll32VuCg==