LS0tIFJlbGV2YW50IHBvcnRpb25zIG9mIFJGQzI2MTYgLS0tCgpPQ1RFVCAgICAgICAgICAgICAgID0gPGFueSA4LWJpdCBzZXF1ZW5jZSBvZiBkYXRhPgpDSEFSICAgICAgICAgICAgICAgID0gPGFueSBVUy1BU0NJSSBjaGFyYWN0ZXIgKG9jdGV0cyAwIC0gMTI3KT4KVVBBTFBIQSAgICAgICAgICAgICA9IDxhbnkgVVMtQVNDSUkgdXBwZXJjYXNlIGxldHRlciAiQSIuLiJaIj4KTE9BTFBIQSAgICAgICAgICAgICA9IDxhbnkgVVMtQVNDSUkgbG93ZXJjYXNlIGxldHRlciAiYSIuLiJ6Ij4KQUxQSEEgICAgICAgICAgICAgICA9IFVQQUxQSEEgfCBMT0FMUEhBCkRJR0lUICAgICAgICAgICAgICAgPSA8YW55IFVTLUFTQ0lJIGRpZ2l0ICIwIi4uIjkiPgpDVEwgICAgICAgICAgICAgICAgID0gPGFueSBVUy1BU0NJSSBjb250cm9sIGNoYXJhY3RlciAob2N0ZXRzIDAgLSAzMSkgYW5kIERFTCAoMTI3KT4KQ1IgICAgICAgICAgICAgICAgICA9IDxVUy1BU0NJSSBDUiwgY2FycmlhZ2UgcmV0dXJuICgxMyk+CkxGICAgICAgICAgICAgICAgICAgPSA8VVMtQVNDSUkgTEYsIGxpbmVmZWVkICgxMCk+ClNQICAgICAgICAgICAgICAgICAgPSA8VVMtQVNDSUkgU1AsIHNwYWNlICgzMik+CkhUICAgICAgICAgICAgICAgICAgPSA8VVMtQVNDSUkgSFQsIGhvcml6b250YWwtdGFiICg5KT4KPCI+ICAgICAgICAgICAgICAgICA9IDxVUy1BU0NJSSBkb3VibGUtcXVvdGUgbWFyayAoMzQpPgpDUkxGICAgICAgICAgICAgICAgID0gQ1IgTEYKTFdTICAgICAgICAgICAgICAgICA9IFtDUkxGXSAxKiggU1AgfCBIVCApClRFWFQgICAgICAgICAgICAgICAgPSA8YW55IE9DVEVUIGV4Y2VwdCBDVExzLCBidXQgaW5jbHVkaW5nIExXUz4KSEVYICAgICAgICAgICAgICAgICA9ICJBIiB8ICJCIiB8ICJDIiB8ICJEIiB8ICJFIiB8ICJGIgogICAgICAgICAgICAgICAgICAgICAgfCAiYSIgfCAiYiIgfCAiYyIgfCAiZCIgfCAiZSIgfCAiZiIgfCBESUdJVApzZXBhcmF0b3JzICAgICAgICAgID0gIigiIHwgIikiIHwgIjwiIHwgIj4iIHwgIkAiCiAgICAgICAgICAgICAgICAgICAgfCAiLCIgfCAiOyIgfCAiOiIgfCAiXCIgfCA8Ij4KICAgICAgICAgICAgICAgICAgICB8ICIvIiB8ICJbIiB8ICJdIiB8ICI/IiB8ICI9IgogICAgICAgICAgICAgICAgICAgIHwgInsiIHwgIn0iIHwgU1AgfCBIVAp0b2tlbiAgICAgICAgICAgICAgID0gMSo8YW55IENIQVIgZXhjZXB0IENUTHMgb3Igc2VwYXJhdG9ycz4KCnF1b3RlZC1wYWlyICAgICAgICAgPSAiXCIgQ0hBUgpjdGV4dCAgICAgICAgICAgICAgID0gPGFueSBURVhUIGV4Y2x1ZGluZyAiKCIgYW5kICIpIj4KcWR0ZXh0ICAgICAgICAgICAgICA9IDxhbnkgVEVYVCBleGNlcHQgPCI+PgpxdW90ZWQtc3RyaW5nICAgICAgID0gKCA8Ij4gKihxZHRleHQgfCBxdW90ZWQtcGFpciApIDwiPiApCmNvbW1lbnQgICAgICAgICAgICAgPSAiKCIgKiggY3RleHQgfCBxdW90ZWQtcGFpciB8IGNvbW1lbnQgKSAiKSIKCgoKCgo0IEhUVFAgTWVzc2FnZQo0LjEgTWVzc2FnZSBUeXBlcwoKSFRUUCBtZXNzYWdlcyBjb25zaXN0IG9mIHJlcXVlc3RzIGZyb20gY2xpZW50IHRvIHNlcnZlciBhbmQgcmVzcG9uc2VzIGZyb20Kc2VydmVyIHRvIGNsaWVudC4gUmVxdWVzdCAoc2VjdGlvbiA1KSBhbmQgUmVzcG9uc2UgKHNlY3Rpb24gNikgbWVzc2FnZXMgdXNlIHRoZQpnZW5lcmljIG1lc3NhZ2UgZm9ybWF0IG9mIFJGQyA4MjIgWzldIGZvciB0cmFuc2ZlcnJpbmcgZW50aXRpZXMgKHRoZSBwYXlsb2FkIG9mCnRoZSBtZXNzYWdlKS4gQm90aCB0eXBlcyBvZiBtZXNzYWdlIGNvbnNpc3Qgb2YgOgoKICAtIGEgc3RhcnQtbGluZQogIC0gemVybyBvciBtb3JlIGhlYWRlciBmaWVsZHMgKGFsc28ga25vd24gYXMgImhlYWRlcnMiKQogIC0gYW4gZW1wdHkgbGluZSAoaS5lLiwgYSBsaW5lIHdpdGggbm90aGluZyBwcmVjZWRpbmcgdGhlIENSTEYpIGluZGljYXRpbmcgdGhlCiAgICBlbmQgb2YgdGhlIGhlYWRlciBmaWVsZHMKICAtIGFuZCBwb3NzaWJseSBhIG1lc3NhZ2UtYm9keS4KCgpIVFRQLW1lc3NhZ2UgICAgICAgID0gUmVxdWVzdCB8IFJlc3BvbnNlCgpzdGFydC1saW5lICAgICAgICAgID0gUmVxdWVzdC1MaW5lIHwgU3RhdHVzLUxpbmUKZ2VuZXJpYy1tZXNzYWdlICAgICA9IHN0YXJ0LWxpbmUKICAgICAgICAgICAgICAgICAgICAgICoobWVzc2FnZS1oZWFkZXIgQ1JMRikKICAgICAgICAgICAgICAgICAgICAgIENSTEYKICAgICAgICAgICAgICAgICAgICAgIFsgbWVzc2FnZS1ib2R5IF0KCkluIHRoZSBpbnRlcmVzdCBvZiByb2J1c3RuZXNzLCBzZXJ2ZXJzIFNIT1VMRCBpZ25vcmUgYW55IGVtcHR5IGxpbmUocykgcmVjZWl2ZWQKd2hlcmUgYSBSZXF1ZXN0LUxpbmUgaXMgZXhwZWN0ZWQuIEluIG90aGVyIHdvcmRzLCBpZiB0aGUgc2VydmVyIGlzIHJlYWRpbmcgdGhlCnByb3RvY29sIHN0cmVhbSBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgbWVzc2FnZSBhbmQgcmVjZWl2ZXMgYSBDUkxGIGZpcnN0LCBpdApzaG91bGQgaWdub3JlIHRoZSBDUkxGLgoKCjQuMiBNZXNzYWdlIGhlYWRlcnMKCi0gRWFjaCBoZWFkZXIgZmllbGQgY29uc2lzdHMgb2YgYSBuYW1lIGZvbGxvd2VkIGJ5IGEgY29sb24gKCI6IikgYW5kIHRoZSBmaWVsZAogIHZhbHVlLgotIEZpZWxkIG5hbWVzIGFyZSBjYXNlLWluc2Vuc2l0aXZlLgotIFRoZSBmaWVsZCB2YWx1ZSBNQVkgYmUgcHJlY2VkZWQgYnkgYW55IGFtb3VudCBvZiBMV1MsIHRob3VnaCBhIHNpbmdsZSBTUCBpcwogIHByZWZlcnJlZC4KLSBIZWFkZXIgZmllbGRzIGNhbiBiZSBleHRlbmRlZCBvdmVyIG11bHRpcGxlIGxpbmVzIGJ5IHByZWNlZGluZyBlYWNoIGV4dHJhCiAgbGluZSB3aXRoIGF0IGxlYXN0IG9uZSBTUCBvciBIVC4KCgptZXNzYWdlLWhlYWRlciAgICAgID0gZmllbGQtbmFtZSAiOiIgWyBmaWVsZC12YWx1ZSBdCmZpZWxkLW5hbWUgICAgICAgICAgPSB0b2tlbgpmaWVsZC12YWx1ZSAgICAgICAgID0gKiggZmllbGQtY29udGVudCB8IExXUyApCmZpZWxkLWNvbnRlbnQgICAgICAgPSA8dGhlIE9DVEVUcyBtYWtpbmcgdXAgdGhlIGZpZWxkLXZhbHVlIGFuZCBjb25zaXN0aW5nIG9mCiAgICAgICAgICAgICAgICAgICAgICAgZWl0aGVyICpURVhUIG9yIGNvbWJpbmF0aW9ucyBvZiB0b2tlbiwgc2VwYXJhdG9ycywgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgcXVvdGVkLXN0cmluZz4KCgpUaGUgZmllbGQtY29udGVudCBkb2VzIG5vdCBpbmNsdWRlIGFueSBsZWFkaW5nIG9yIHRyYWlsaW5nIExXUyBvY2N1cnJpbmcgYmVmb3JlCnRoZSBmaXJzdCBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXIgb2YgdGhlIGZpZWxkLXZhbHVlIG9yIGFmdGVyIHRoZSBsYXN0Cm5vbi13aGl0ZXNwYWNlIGNoYXJhY3RlciBvZiB0aGUgZmllbGQtdmFsdWUuIFN1Y2ggbGVhZGluZyBvciB0cmFpbGluZyBMV1MgTUFZCmJlIHJlbW92ZWQgd2l0aG91dCBjaGFuZ2luZyB0aGUgc2VtYW50aWNzIG9mIHRoZSBmaWVsZCB2YWx1ZS4gQW55IExXUyB0aGF0Cm9jY3VycyBiZXR3ZWVuIGZpZWxkLWNvbnRlbnQgTUFZIGJlIHJlcGxhY2VkIHdpdGggYSBzaW5nbGUgU1AgYmVmb3JlCmludGVycHJldGluZyB0aGUgZmllbGQgdmFsdWUgb3IgZm9yd2FyZGluZyB0aGUgbWVzc2FnZSBkb3duc3RyZWFtLgoKCj0+IGZvcm1hdCBkZXMgaGVhZGVycyA9IDEqKENIQVIgJiAhY3RsICYgIXNlcCkgIjoiICooT0NURVQgJiAoIWN0bCB8IExXUykpCj0+IGxlcyByZWdleCBkZSBtYXRjaGluZyBkZSBoZWFkZXJzIHMnYXBwbGlxdWVudCBzdXIgZmllbGQtY29udGVudCwgZXQgcGV1dmVudAogICB1dGlsaXNlciBmaWVsZC12YWx1ZSBjb21tZSBlc3BhY2UgZGUgdHJhdmFpbCAobWFpcyBkZSBwculm6XJlbmNlIGFwcuhzIGxlCiAgIHByZW1pZXIgU1ApLgoKKDE5LjMpIFRoZSBsaW5lIHRlcm1pbmF0b3IgZm9yIG1lc3NhZ2UtaGVhZGVyIGZpZWxkcyBpcyB0aGUgc2VxdWVuY2UgQ1JMRi4KSG93ZXZlciwgd2UgcmVjb21tZW5kIHRoYXQgYXBwbGljYXRpb25zLCB3aGVuIHBhcnNpbmcgc3VjaCBoZWFkZXJzLCByZWNvZ25pemUKYSBzaW5nbGUgTEYgYXMgYSBsaW5lIHRlcm1pbmF0b3IgYW5kIGlnbm9yZSB0aGUgbGVhZGluZyBDUi4KCgoKCgptZXNzYWdlLWJvZHkgICAgPSBlbnRpdHktYm9keQogICAgICAgICAgICAgICAgfCA8ZW50aXR5LWJvZHkgZW5jb2RlZCBhcyBwZXIgVHJhbnNmZXItRW5jb2Rpbmc+CgoKCjUgUmVxdWVzdAoKUmVxdWVzdCAgICAgICAgID0gUmVxdWVzdC1MaW5lCiAgICAgICAgICAgICAgICAgICooKCBnZW5lcmFsLWhlYWRlcgogICAgICAgICAgICAgICAgICAgIHwgcmVxdWVzdC1oZWFkZXIKICAgICAgICAgICAgICAgICAgICB8IGVudGl0eS1oZWFkZXIgKSBDUkxGKQogICAgICAgICAgICAgICAgICBDUkxGCiAgICAgICAgICAgICAgICAgIFsgbWVzc2FnZS1ib2R5IF0KCgoKNS4xIFJlcXVlc3QgbGluZQoKVGhlIGVsZW1lbnRzIGFyZSBzZXBhcmF0ZWQgYnkgU1AgY2hhcmFjdGVycy4gTm8gQ1Igb3IgTEYgaXMgYWxsb3dlZCBleGNlcHQgaW4KdGhlIGZpbmFsIENSTEYgc2VxdWVuY2UuCgpSZXF1ZXN0LUxpbmUgPSBNZXRob2QgU1AgUmVxdWVzdC1VUkkgU1AgSFRUUC1WZXJzaW9uIENSTEYKCigxOS4zKSBDbGllbnRzIFNIT1VMRCBiZSB0b2xlcmFudCBpbiBwYXJzaW5nIHRoZSBTdGF0dXMtTGluZSBhbmQgc2VydmVycwp0b2xlcmFudCB3aGVuIHBhcnNpbmcgdGhlIFJlcXVlc3QtTGluZS4gSW4gcGFydGljdWxhciwgdGhleSBTSE9VTEQgYWNjZXB0IGFueQphbW91bnQgb2YgU1Agb3IgSFQgY2hhcmFjdGVycyBiZXR3ZWVuIGZpZWxkcywgZXZlbiB0aG91Z2ggb25seSBhIHNpbmdsZSBTUCBpcwpyZXF1aXJlZC4KCjQuNSBHZW5lcmFsIGhlYWRlcnMKQXBwbHkgdG8gTUVTU0FHRS4KCmdlbmVyYWwtaGVhZGVyICA9IENhY2hlLUNvbnRyb2wKICAgICAgICAgICAgICAgIHwgQ29ubmVjdGlvbgogICAgICAgICAgICAgICAgfCBEYXRlCiAgICAgICAgICAgICAgICB8IFByYWdtYQogICAgICAgICAgICAgICAgfCBUcmFpbGVyCiAgICAgICAgICAgICAgICB8IFRyYW5zZmVyLUVuY29kaW5nCiAgICAgICAgICAgICAgICB8IFVwZ3JhZGUKICAgICAgICAgICAgICAgIHwgVmlhCiAgICAgICAgICAgICAgICB8IFdhcm5pbmcKCkdlbmVyYWwtaGVhZGVyIGZpZWxkIG5hbWVzIGNhbiBiZSBleHRlbmRlZCByZWxpYWJseSBvbmx5IGluIGNvbWJpbmF0aW9uIHdpdGggYQpjaGFuZ2UgaW4gdGhlIHByb3RvY29sIHZlcnNpb24uIEhvd2V2ZXIsIG5ldyBvciBleHBlcmltZW50YWwgaGVhZGVyIGZpZWxkcyBtYXkKYmUgZ2l2ZW4gdGhlIHNlbWFudGljcyBvZiBnZW5lcmFsIGhlYWRlciBmaWVsZHMgaWYgYWxsIHBhcnRpZXMgaW4gdGhlCmNvbW11bmljYXRpb24gcmVjb2duaXplIHRoZW0gdG8gYmUgZ2VuZXJhbC1oZWFkZXIgZmllbGRzLiBVbnJlY29nbml6ZWQgaGVhZGVyCmZpZWxkcyBhcmUgdHJlYXRlZCBhcyBlbnRpdHktaGVhZGVyIGZpZWxkcy4KCgoKCjUuMyBSZXF1ZXN0IEhlYWRlciBGaWVsZHMKClRoZSByZXF1ZXN0LWhlYWRlciBmaWVsZHMgYWxsb3cgdGhlIGNsaWVudCB0byBwYXNzIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQKdGhlIHJlcXVlc3QsIGFuZCBhYm91dCB0aGUgY2xpZW50IGl0c2VsZiwgdG8gdGhlIHNlcnZlci4gVGhlc2UgZmllbGRzIGFjdCBhcwpyZXF1ZXN0IG1vZGlmaWVycywgd2l0aCBzZW1hbnRpY3MgZXF1aXZhbGVudCB0byB0aGUgcGFyYW1ldGVycyBvbiBhIHByb2dyYW1taW5nCmxhbmd1YWdlIG1ldGhvZCBpbnZvY2F0aW9uLgoKcmVxdWVzdC1oZWFkZXIgID0gQWNjZXB0CiAgICAgICAgICAgICAgICB8IEFjY2VwdC1DaGFyc2V0CiAgICAgICAgICAgICAgICB8IEFjY2VwdC1FbmNvZGluZwogICAgICAgICAgICAgICAgfCBBY2NlcHQtTGFuZ3VhZ2UKICAgICAgICAgICAgICAgIHwgQXV0aG9yaXphdGlvbgogICAgICAgICAgICAgICAgfCBFeHBlY3QKICAgICAgICAgICAgICAgIHwgRnJvbQogICAgICAgICAgICAgICAgfCBIb3N0CiAgICAgICAgICAgICAgICB8IElmLU1hdGNoCiAgICAgICAgICAgICAgICB8IElmLU1vZGlmaWVkLVNpbmNlCiAgICAgICAgICAgICAgICB8IElmLU5vbmUtTWF0Y2gKICAgICAgICAgICAgICAgIHwgSWYtUmFuZ2UKICAgICAgICAgICAgICAgIHwgSWYtVW5tb2RpZmllZC1TaW5jZQogICAgICAgICAgICAgICAgfCBNYXgtRm9yd2FyZHMKICAgICAgICAgICAgICAgIHwgUHJveHktQXV0aG9yaXphdGlvbgogICAgICAgICAgICAgICAgfCBSYW5nZQogICAgICAgICAgICAgICAgfCBSZWZlcmVyCiAgICAgICAgICAgICAgICB8IFRFCiAgICAgICAgICAgICAgICB8IFVzZXItQWdlbnQKClJlcXVlc3QtaGVhZGVyIGZpZWxkIG5hbWVzIGNhbiBiZSBleHRlbmRlZCByZWxpYWJseSBvbmx5IGluIGNvbWJpbmF0aW9uIHdpdGggYQpjaGFuZ2UgaW4gdGhlIHByb3RvY29sIHZlcnNpb24uIEhvd2V2ZXIsIG5ldyBvciBleHBlcmltZW50YWwgaGVhZGVyIGZpZWxkcyBNQVkKYmUgZ2l2ZW4gdGhlIHNlbWFudGljcyBvZiByZXF1ZXN0LWhlYWRlciBmaWVsZHMgaWYgYWxsIHBhcnRpZXMgaW4gdGhlCmNvbW11bmljYXRpb24gcmVjb2duaXplIHRoZW0gdG8gYmUgcmVxdWVzdC1oZWFkZXIgZmllbGRzLiBVbnJlY29nbml6ZWQgaGVhZGVyCmZpZWxkcyBhcmUgdHJlYXRlZCBhcyBlbnRpdHktaGVhZGVyIGZpZWxkcy4KCgoKNy4xIEVudGl0eSBoZWFkZXIgZmllbGRzCgpFbnRpdHktaGVhZGVyIGZpZWxkcyBkZWZpbmUgbWV0YWluZm9ybWF0aW9uIGFib3V0IHRoZSBlbnRpdHktYm9keSBvciwgaWYgbm8KYm9keSBpcyBwcmVzZW50LCBhYm91dCB0aGUgcmVzb3VyY2UgaWRlbnRpZmllZCBieSB0aGUgcmVxdWVzdC4gU29tZSBvZiB0aGlzCm1ldGFpbmZvcm1hdGlvbiBpcyBPUFRJT05BTDsgc29tZSBtaWdodCBiZSBSRVFVSVJFRCBieSBwb3J0aW9ucyBvZiB0aGlzCnNwZWNpZmljYXRpb24uCgplbnRpdHktaGVhZGVyICAgPSBBbGxvdwogICAgICAgICAgICAgICAgfCBDb250ZW50LUVuY29kaW5nCiAgICAgICAgICAgICAgICB8IENvbnRlbnQtTGFuZ3VhZ2UKICAgICAgICAgICAgICAgIHwgQ29udGVudC1MZW5ndGgKICAgICAgICAgICAgICAgIHwgQ29udGVudC1Mb2NhdGlvbgogICAgICAgICAgICAgICAgfCBDb250ZW50LU1ENQogICAgICAgICAgICAgICAgfCBDb250ZW50LVJhbmdlCiAgICAgICAgICAgICAgICB8IENvbnRlbnQtVHlwZQogICAgICAgICAgICAgICAgfCBFeHBpcmVzCiAgICAgICAgICAgICAgICB8IExhc3QtTW9kaWZpZWQKICAgICAgICAgICAgICAgIHwgZXh0ZW5zaW9uLWhlYWRlcgpleHRlbnNpb24taGVhZGVyID0gbWVzc2FnZS1oZWFkZXIKClRoZSBleHRlbnNpb24taGVhZGVyIG1lY2hhbmlzbSBhbGxvd3MgYWRkaXRpb25hbCBlbnRpdHktaGVhZGVyIGZpZWxkcyB0byBiZQpkZWZpbmVkIHdpdGhvdXQgY2hhbmdpbmcgdGhlIHByb3RvY29sLCBidXQgdGhlc2UgZmllbGRzIGNhbm5vdCBiZSBhc3N1bWVkIHRvIGJlCnJlY29nbml6YWJsZSBieSB0aGUgcmVjaXBpZW50LiBVbnJlY29nbml6ZWQgaGVhZGVyIGZpZWxkcyBTSE9VTEQgYmUgaWdub3JlZCBieQp0aGUgcmVjaXBpZW50IGFuZCBNVVNUIGJlIGZvcndhcmRlZCBieSB0cmFuc3BhcmVudCBwcm94aWVzLgoK