IwojIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUgb3IgbW9yZQojIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUgZGlzdHJpYnV0ZWQgd2l0aAojIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4KIyBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZSB0byBZb3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMAojICh0aGUgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoCiMgdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIwojICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiMKIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiMKY29uZGl0aW9uLmJvb2xlYW5Db25kaXRpb24uYW5kPVVORApjb25kaXRpb24uYm9vbGVhbkNvbmRpdGlvbi5kZXNjcmlwdGlvbj1Mb2dpc2NoZXMgVU5EL09ERVIgT3BlcmF0b3IKY29uZGl0aW9uLmJvb2xlYW5Db25kaXRpb24ubmFtZT1VTkQvT0RFUgpjb25kaXRpb24uYm9vbGVhbkNvbmRpdGlvbi5vcj1PREVSCmNvbmRpdGlvbi5ldmVudFByb3BlcnR5Q29uZGl0aW9uLm5hbWU9RXJlaWduaXNlaWdlbnNjaGFmdApjb25kaXRpb24uZXZlbnRUeXBlQ29uZGl0aW9uLmV2ZW50TmFtZWQ9RXJlaWduaXMgbmFtZW5zCmNvbmRpdGlvbi5ldmVudFR5cGVDb25kaXRpb24uaGFzT2NjdXJyZWQ9aXN0IGF1ZmdldHJldGVuLgpjb25kaXRpb24uZXZlbnRUeXBlQ29uZGl0aW9uLm5hbWU9RXJlaWduaXMKY29uZGl0aW9uLmZvcm1FdmVudENvbmRpdGlvbi5uYW1lPUZvcm11bGFyZXJlaWduaXMKY29uZGl0aW9uLmdlb0xvY2F0aW9uQnlQb2ludFNlc3Npb25Db25kaXRpb24ubGF0aXR1ZGU9QnJlaXRlCmNvbmRpdGlvbi5nZW9Mb2NhdGlvbkJ5UG9pbnRTZXNzaW9uQ29uZGl0aW9uLmxvbmdpdHVkZT1M5G5nZQpjb25kaXRpb24uZ2VvTG9jYXRpb25TZXNzaW9uQ29uZGl0aW9uLmNvdW50cnk9TGFuZApjb25kaXRpb24uZ2VvTG9jYXRpb25TZXNzaW9uQ29uZGl0aW9uLm5hbWU9R2VvbG9jYXRpb24gbmFjaCBMYW5kCmNvbmRpdGlvbi5nb2FsTWF0Y2hDb25kaXRpb24ubmFtZT1aaWVsIPxiZXJlaW5zdGltbXVuZwpjb25kaXRpb24ubG9naW5FdmVudENvbmRpdGlvbi5uYW1lPUFubWVsZGVuIEVyZWlnbmlzCmNvbmRpdGlvbi5tYXRjaEFsbENvbmRpdGlvbi5uYW1lPUVyZvxsbGUgYWxsZQpjb25kaXRpb24ubmV3VmlzaXRvckNvbmRpdGlvbi5uYW1lPU5ldWVyIEJlc3VjaGVyCmNvbmRpdGlvbi5uZXdWaXNpdG9yQ29uZGl0aW9uLnNpbmNlPXNlaXQKY29uZGl0aW9uLm5vdENvbmRpdGlvbi5uYW1lPU5pY2h0CmNvbmRpdGlvbi5wcm9maWxlSW50ZXJlc3RDb25kaXRpb24ubmFtZT1Qcm9maWwgSW50ZXJlc3NlCmNvbmRpdGlvbi5wcm9maWxlSW50ZXJlc3RDb25kaXRpb24ucHJvZmlsZUludGVyZXN0SW49UHJvZmlsIEludGVyZXNzZSBhbgpjb25kaXRpb24ucHJvZmlsZVByb3BlcnR5Q29uZGl0aW9uLmRlc2NyaXB0aW9uPUVpbmUgUHJvZmlsZWlnZW5zY2hhZnQtQmVkaW5ndW5nCmNvbmRpdGlvbi5wcm9maWxlUHJvcGVydHlDb25kaXRpb24ubmFtZT1Qcm9maWxlaWdlbnNjaGFmdApjb25kaXRpb24ucHJvZmlsZVNlZ21lbnRDb25kaXRpb24uZGVzY3JpcHRpb249RGFzIFByb2ZpbCBpc3QgaW4gZWluZW0gU2VnbWVudApjb25kaXRpb24ucHJvZmlsZVNlZ21lbnRDb25kaXRpb24ubmFtZT1Qcm9maWwtU2VnbWVudApjb25kaXRpb24ucHJvZmlsZVNlZ21lbnRDb25kaXRpb24ucHJvZmlsZU1hdGNoZXMuYWxsPWFsbCBkaWVzZSBTZWdtZW50ZQpjb25kaXRpb24ucHJvZmlsZVNlZ21lbnRDb25kaXRpb24ucHJvZmlsZU1hdGNoZXMubm9uZT1rZWluZXMgZGllc2VyIFNlZ21lbnRlCmNvbmRpdGlvbi5wcm9maWxlU2VnbWVudENvbmRpdGlvbi5wcm9maWxlTWF0Y2hlcy5zb21lPWVpbmlnZSBkaWVzZXIgU2VnbWVudGUKY29uZGl0aW9uLnByb3BlcnR5Q29uZGl0aW9uLmV2ZW50PUVyZWlnbmlzCmNvbmRpdGlvbi5wcm9wZXJ0eUNvbmRpdGlvbi5pcz1pc3QKY29uZGl0aW9uLnByb3BlcnR5Q29uZGl0aW9uLm90aGVyZGF0ZT1BbmRlcmUgLi4uIChEYXR1bSkKY29uZGl0aW9uLnByb3BlcnR5Q29uZGl0aW9uLm90aGVybnVtZXJpYz1BbmRlcmUgLi4uIChudW1lcmlzY2gpCmNvbmRpdGlvbi5wcm9wZXJ0eUNvbmRpdGlvbi5vdGhlcnRleHQ9QW5kZXJlIC4uLiAoVGV4dCkKY29uZGl0aW9uLnByb3BlcnR5Q29uZGl0aW9uLnByb2ZpbGU9UHJvZmlsCmNvbmRpdGlvbi5wcm9wZXJ0eUNvbmRpdGlvbi5zZXNzaW9uPVNpdHp1bmcKY29uZGl0aW9uLnJldHVybmluZ1Zpc2l0b3JDb25kaXRpb24ubmFtZT1XaWVkZXJrZWhyZW5kZSBCZXN1Y2hlcgpjb25kaXRpb24uc2Vzc2lvbkNyZWF0ZWRFdmVudENvbmRpdGlvbi5kZXNjcmlwdGlvbj1FaW4gUHJvZmlsLVNpdHp1bmcgd3VyZGUgZXJzdGVsbHQKY29uZGl0aW9uLnNlc3Npb25DcmVhdGVkRXZlbnRDb25kaXRpb24ubmFtZT1TaXR6dW5nIGVyc3RlbGx0IEVyZWlnbmlzCmNvbmRpdGlvbi5zZXNzaW9uRHVyYXRpb25Db25kaXRpb24uZGVzY3JpcHRpb249RGllIFNpdHp1bmdzZGF1ZXIKY29uZGl0aW9uLnNlc3Npb25EdXJhdGlvbkNvbmRpdGlvbi5tYXg9TWF4aW1hbGUgU2l0enVuZ3NkYXVlciAoU2VrdW5kZW4pCmNvbmRpdGlvbi5zZXNzaW9uRHVyYXRpb25Db25kaXRpb24ubWluPU1pbmltYWxlIFNpdHp1bmdzZGF1ZXIgKFNla3VuZGVuKQpjb25kaXRpb24uc2Vzc2lvbkR1cmF0aW9uQ29uZGl0aW9uLm5hbWU9U2l0enVuZ3NkYXVlcgpjb25kaXRpb24uc2Vzc2lvblByb3BlcnR5Q29uZGl0aW9uLm5hbWU9U2l0enVuZy1FaWdlbnNjaGFmdApjb25kaXRpb24udmlkZW9WaWV3RXZlbnRDb25kaXRpb24udGV4dD1EYXMgZm9sZ2VuZGUgVmlkZW8gd3VyZGUgYWJnZXNwaWVsdAo=