Ci4uIF9gT3ZlcmxvYWRlZCBuYW1lYDoKCk92ZXJsb2FkZWQgbmFtZQogICAgT3ZlcmxvYWRlZCBuYW1lIGlzIGEgdGVybSB1c2VkIGluIHRoaXMgcmVmZXJlbmNlIGRvY3VtZW50YXRpb24gdG8gZGVzaWduYXRlCiAgICBhIG1ldGFmdW5jdGlvbiBwcm92aWRpbmcgbW9yZSB0aGFuIG9uZSBwdWJsaWMgaW50ZXJmYWNlLiBJbiByZWFsaXR5LCAKICAgIGNsYXNzIHRlbXBsYXRlIG92ZXJsb2FkaW5nIGlzIG5vbmV4aXN0ZW50IGFuZCB0aGUgcmVmZXJlbmNlZCBmdW5jdGlvbmFsaXR5CiAgICBpcyBpbXBsZW1lbnRlZCBieSBvdGhlciwgdW5zcGVjaWZpZWQsIG1lYW5zLgogICAgCgouLiBfYENvbmNlcHQtaWRlbnRpY2FsYDoKCkNvbmNlcHQtaWRlbnRpY2FsICAgIAogICAgQSBzZXF1ZW5jZSBgYHMxYGAgaXMgc2FpZCB0byBiZSBjb25jZXB0LWlkZW50aWNhbCB0byBhIHNlcXVlbmNlIGBgczJgYCBpZiAKICAgIGBgczFgYCBhbmQgYGBzMmBgIG1vZGVsIHRoZSBleGFjdCBzYW1lIHNldCBvZiBjb25jZXB0cy4KCgouLiBfYEJpbmQgZXhwcmVzc2lvbmA6CgpCaW5kIGV4cHJlc3Npb24KICAgIEEgYmluZCBleHByZXNzaW9uIGlzIHNpbXBseSB0aGF0IHwtLXwgYW4gaW5zdGFudGlhdGlvbiBvZiBvbmUgb2YgdGhlIHxiaW5kfCAKICAgIGNsYXNzIHRlbXBsYXRlcy4gRm9yIGluc3RhbmNlLCB0aGVzZSBhcmUgYWxsIGJpbmQgZXhwcmVzc2lvbnM6OgogICAgCiAgICAgICAgYmluZDwgcXVvdGUzPGlmXz4sIF8xLGludCxsb25nID4KICAgICAgICBiaW5kPCBfMSwgYmluZDwgcGx1czw+LCBpbnRfPDU+LCBfMj4gPgogICAgICAgIGJpbmQ8IHRpbWVzPD4sIGludF88Mj4sIGludF88Mj4gPgoKICAgIGFuZCB0aGVzZSBhcmUgbm90OjoKCiAgICAgICAgaWZfPCBfMSwgYmluZDwgcGx1czw+LCBpbnRfPDU+LCBfMj4sIF8yID4gICAgICAgIAogICAgICAgIHByb3RlY3Q8IGJpbmQ8IHF1b3RlMzxpZl8+LCBfMSxpbnQsbG9uZyA+ID4KICAgICAgICBfMgoKCi4uIHxvdmVybG9hZGVkIG5hbWV8IHJlcGxhY2U6OiBgb3ZlcmxvYWRlZCBuYW1lYF8KLi4gfGNvbmNlcHQtaWRlbnRpY2FsfCByZXBsYWNlOjogYGNvbmNlcHQtaWRlbnRpY2FsYF8KLi4gfGJpbmQgZXhwcmVzc2lvbnwgcmVwbGFjZTo6IGBiaW5kIGV4cHJlc3Npb25gXwoKCi4uIGNvcHlyaWdodDo6IENvcHlyaWdodCCpICAyMDAxLTIwMDkgQWxla3NleSBHdXJ0b3ZveSBhbmQgRGF2aWQgQWJyYWhhbXMKICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwogICBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkK