REDROOM
PHP 8.2.30
Path:
Logout
Edit File
Size: 197.28 KB
Close
/opt/cloudlinux/venv/lib64/python3.11/site-packages/sqlalchemy/sql/__pycache__/elements.cpython-311.pyc
Text
Base64
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eHByZXNzaW9uLkNvbHVtbkVsZW1lbnRgIHN1YmNsYXNzLgogICAgRm9yIGV4YW1wbGUsCiAgICB0aHJlZSBmaXhlZCB2YWx1ZXMgY2FuIGJlIGNvbXBhcmVkIGFzIGluOjoKCiAgICAgICAgcHJpbnQoYmV0d2Vlbig1LCAzLCA3KSkKCiAgICBXaGljaCB3b3VsZCBwcm9kdWNlOjoKCiAgICAgICAgOnBhcmFtXzEgQkVUV0VFTiA6cGFyYW1fMiBBTkQgOnBhcmFtXzMKCiAgICA6cGFyYW0gZXhwcjogYSBjb2x1bW4gZXhwcmVzc2lvbiwgdHlwaWNhbGx5IGEKICAgICA6Y2xhc3M6YF9leHByZXNzaW9uLkNvbHVtbkVsZW1lbnRgCiAgICAgaW5zdGFuY2Ugb3IgYWx0ZXJuYXRpdmVseSBhIFB5dGhvbiBzY2FsYXIgZXhwcmVzc2lvbiB0byBiZSBjb2VyY2VkCiAgICAgaW50byBhIGNvbHVtbiBleHByZXNzaW9uLCBzZXJ2aW5nIGFzIHRoZSBsZWZ0IHNpZGUgb2YgdGhlIGBgQkVUV0VFTmBgCiAgICAgZXhwcmVzc2lvbi4KCiAgICA6cGFyYW0gbG93ZXJfYm91bmQ6IGEgY29sdW1uIG9yIFB5dGhvbiBzY2FsYXIgZXhwcmVzc2lvbiBzZXJ2aW5nIGFzIHRoZQogICAgIGxvd2VyIGJvdW5kIG9mIHRoZSByaWdodCBzaWRlIG9mIHRoZSBgYEJFVFdFRU5gYCBleHByZXNzaW9uLgoKICAgIDpwYXJhbSB1cHBlcl9ib3VuZDogYSBjb2x1bW4gb3IgUHl0aG9uIHNjYWxhciBleHByZXNzaW9uIHNlcnZpbmcgYXMgdGhlCiAgICAgdXBwZXIgYm91bmQgb2YgdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIGBgQkVUV0VFTmBgIGV4cHJlc3Npb24uCgogICAgOnBhcmFtIHN5bW1ldHJpYzogaWYgVHJ1ZSwgd2lsbCByZW5kZXIgIiBCRVRXRUVOIFNZTU1FVFJJQyAiLiBOb3RlCiAgICAgdGhhdCBub3QgYWxsIGRhdGFiYXNlcyBzdXBwb3J0IHRoaXMgc3ludGF4LgoKICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAwLjkuNQoKICAgIC4uIHNlZWFsc286OgoKICAgICAgICA6bWV0aDpgX2V4cHJlc3Npb24uQ29sdW1uRWxlbWVudC5iZXR3ZWVuYAoKICAgICkB2glzeW1tZXRyaWMpAnImAAAA2gdiZXR3ZWVuKQRyLQAAANoLbG93ZXJfYm91bmTaC3VwcGVyX2JvdW5kci8AAABzBAAAACAgICByGwAAAHIwAAAAcjAAAABPAAAAcyoAAACAAPVoAQAMHZhU0Qsi1AsigETYCw+PPIo8mAugW7hJiDzRC0bUC0bQBEZyHAAAAGMCAAAAAAAAAAAAAAAGAAAAAwAAAPMoAAAAlwB0AQAAAAAAAAAAAABkAXwAfAFkAqwDpgQAAKsEAAAAAAAAAABTACkEYR0DAABSZXR1cm4gYSBsaXRlcmFsIGNsYXVzZSwgYm91bmQgdG8gYSBiaW5kIHBhcmFtZXRlci4KCiAgICBMaXRlcmFsIGNsYXVzZXMgYXJlIGNyZWF0ZWQgYXV0b21hdGljYWxseSB3aGVuIG5vbi0KICAgIDpjbGFzczpgX2V4cHJlc3Npb24uQ2xhdXNlRWxlbWVudGAgb2JqZWN0cyAoc3VjaCBhcyBzdHJpbmdzLCBpbnRzLCBkYXRlcywKICAgIGV0Yy4pIGFyZQogICAgdXNlZCBpbiBhIGNvbXBhcmlzb24gb3BlcmF0aW9uIHdpdGggYSA6Y2xhc3M6YF9leHByZXNzaW9uLkNvbHVtbkVsZW1lbnRgCiAgICBzdWJjbGFzcywKICAgIHN1Y2ggYXMgYSA6Y2xhc3M6YH5zcWxhbGNoZW15LnNjaGVtYS5Db2x1bW5gIG9iamVjdC4gIFVzZSB0aGlzIGZ1bmN0aW9uCiAgICB0byBmb3JjZSB0aGUgZ2VuZXJhdGlvbiBvZiBhIGxpdGVyYWwgY2xhdXNlLCB3aGljaCB3aWxsIGJlIGNyZWF0ZWQgYXMgYQogICAgOmNsYXNzOmBCaW5kUGFyYW1ldGVyYCB3aXRoIGEgYm91bmQgdmFsdWUuCgogICAgOnBhcmFtIHZhbHVlOiB0aGUgdmFsdWUgdG8gYmUgYm91bmQuIENhbiBiZSBhbnkgUHl0aG9uIG9iamVjdCBzdXBwb3J0ZWQgYnkKICAgICAgICB0aGUgdW5kZXJseWluZyBEQi1BUEksIG9yIGlz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IGNsb25lIGZ1bmN0aW9uIHNob3VsZCBiZSB1c2VkLCB3aGljaCBtYXkgYmUgYXBwbHlpbmcKICAgICAgICBhZGRpdGlvbmFsIHRyYW5zZm9ybWF0aW9ucyB0byB0aGUgZWxlbWVudCAoaS5lLiByZXBsYWNlbWVudAogICAgICAgIHRyYXZlcnNhbCwgY2xvbmVkIHRyYXZlcnNhbCwgYW5ub3RhdGlvbnMpLgoKICAgICAgICBOcoUAAACpA3JQAAAAcmcAAAByGgAAAHMDAAAAICAgchsAAADaD19jb3B5X2ludGVybmFsc3odQ2xhdXNlRWxlbWVudC5fY29weV9pbnRlcm5hbHNqAQAAcwkAAACAAPAWAAkNiARyHAAAAGMBAAAAAAAAAAAAAAABAAAACwAAAPMGAAAAlwBnAFMAKQFhuwEAAFJldHVybiBpbW1lZGlhdGUgY2hpbGQgZWxlbWVudHMgb2YgdGhpcwogICAgICAgIDpjbGFzczpgX2V4cHJlc3Npb24uQ2xhdXNlRWxlbWVudGAuCgogICAgICAgIFRoaXMgaXMgdXNlZCBmb3IgdmlzaXQgdHJhdmVyc2FsLgoKICAgICAgICBcKiprd2FyZ3MgbWF5IGNvbnRhaW4gZmxhZ3MgdGhhdCBjaGFuZ2UgdGhlIGNvbGxlY3Rpb24gdGhhdCBpcwogICAgICAgIHJldHVybmVkLCBmb3IgZXhhbXBsZSB0byByZXR1cm4gYSBzdWJzZXQgb2YgaXRlbXMgaW4gb3JkZXIgdG8KICAgICAgICBjdXQgZG93biBvbiBsYXJnZXIgdHJhdmVyc2Fscywgb3IgdG8gcmV0dXJuIGNoaWxkIGl0ZW1zIGZyb20gYQogICAgICAgIGRpZmZlcmVudCBjb250ZXh0IChzdWNoIGFzIHNjaGVtYS1sZXZlbCBjb2xsZWN0aW9ucyBpbnN0ZWFkIG9mCiAgICAgICAgY2xhdXNlLWxldmVsKS4KCiAgICAgICAgcoUAAACpAnJQAAAAcnYAAABzAgAAACAgchsAAADaDGdldF9jaGlsZHJlbnoaQ2xhdXNlRWxlbWVudC5nZXRfY2hpbGRyZW53AQAAcwkAAACAAPAaABASiAlyHAAAAGMCAAAAAAAAAAAAAAABAAAAAwAAAPMGAAAAlwB8AFMAKQFhoAQAAEFwcGx5IGEgJ2dyb3VwaW5nJyB0byB0aGlzIDpjbGFzczpgX2V4cHJlc3Npb24uQ2xhdXNlRWxlbWVudGAuCgogICAgICAgIFRoaXMgbWV0aG9kIGlzIG92ZXJyaWRkZW4gYnkgc3ViY2xhc3NlcyB0byByZXR1cm4gYSAiZ3JvdXBpbmciCiAgICAgICAgY29uc3RydWN0LCBpLmUuIHBhcmVudGhlc2lzLiAgIEluIHBhcnRpY3VsYXIgaXQncyB1c2VkIGJ5ICJiaW5hcnkiCiAgICAgICAgZXhwcmVzc2lvbnMgdG8gcHJvdmlkZSBhIGdyb3VwaW5nIGFyb3VuZCB0aGVtc2VsdmVzIHdoZW4gcGxhY2VkIGludG8gYQogICAgICAgIGxhcmdlciBleHByZXNzaW9uLCBhcyB3ZWxsIGFzIGJ5IDpmdW5jOmBfZXhwcmVzc2lvbi5zZWxlY3RgCiAgICAgICAgY29uc3RydWN0cyB3aGVuIHBsYWNlZCBpbnRvIHRoZSBGUk9NIGNsYXVzZSBvZiBhbm90aGVyCiAgICAgICAgOmZ1bmM6YF9leHByZXNzaW9uLnNlbGVjdGAuICAoTm90ZSB0aGF0IHN1YnF1ZXJpZXMgc2hvdWxkIGJlCiAgICAgICAgbm9ybWFsbHkgY3JlYXRlZCB1c2luZyB0aGUgOm1ldGg6YF9leHByZXNzaW9uLlNlbGVjdC5hbGlhc2AgbWV0aG9kLAogICAgICAgIGFzIG1hbnkKICAgICAgICBwbGF0Zm9ybXMgcmVxdWlyZSBuZXN0ZWQgU0VMRUNUIHN0YXRlbWVudHMgdG8gYmUgbmFtZWQpLgoKICAgICAgICBBcyBleHByZXNzaW9ucyBhcmUgY29tcG9zZWQgdG9nZXRoZXIsIHRoZSBhcHBsaWNhdGlvbiBvZgogICAgICAgIDptZXRoOmBzZWxmX2dyb3VwYCBpcyBhdXRvbWF0aWMgLSBlbmQtdXNlciBjb2RlIHNob3VsZCBuZXZlcgogICAgICAgIG5lZWQgdG8gdXNlIHRoaXMgbWV0aG9kIGRpcmVjdGx5LiAgTm90ZSB0aGF0IFNRTEFsY2hlbXkncwogICAgICAgIGNsYXVzZSBjb25zdHJ1Y3RzIHRha2Ugb3BlcmF0b3IgcHJlY2VkZW5jZSBpbnRvIGFjY291bnQgLQogICAgICAgIHNvIHBhcmVudGhlc2lzIG1pZ2h0IG5vdCBiZSBuZWVkZWQsIGZvciBleGFtcGxlLCBpbgogICAgICAgIGFuIGV4cHJlc3Npb24gbGlrZSBgYHggT1IgKHkgQU5EIHopYGAgLSBBTkQgdGFrZXMgcHJlY2VkZW5jZQogICAgICAgIG92ZXIgT1IuCgogICAgICAgIFRoZSBiYXNlIDptZXRoOmBzZWxmX2dyb3VwYCBtZXRob2Qgb2YKICAgICAgICA6Y2xhc3M6YF9leHByZXNzaW9uLkNsYXVzZUVsZW1lbnRgCiAgICAgICAganVzdCByZXR1cm5zIHNlbGYuCiAgICAgICAgcoUAAACpAnJQAAAA2gdhZ2FpbnN0cwIAAAAgIHIbAAAA2gpzZWxmX2dyb3VwehhDbGF1c2VFbGVtZW50LnNlbGZfZ3JvdXCGAQAAcwkAAACAAPAyABAUiAtyHAAAAHoZc3FsYWxjaGVteS5lbmdpbmUuZGVmYXVsdGMEAAAAAAAAAAAAAAAFAAAACwAAAPOYAAAAlwB8A3M5fAJyCHwCagAAAAAAAAAAAH0Dbi98AGoBAAAAAAAAAAByFHwAagEAAAAAAAAAAGoAAAAAAAAAAAB9A3wAagEAAAAAAAAAAH0CbhR8AaACAAAAAAAAAAAAAAAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAH0DAgB8AGoDAAAAAAAAAAB8A2YBZAF8AmkBfASkAY4BUwApAmErCQAAQ29tcGlsZSB0aGlzIFNRTCBleHByZXNzaW9uLgoKICAgICAgICBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgOmNsYXNzOmB+LkNvbXBpbGVkYCBvYmplY3QuCiAgICAgICAgQ2FsbGluZyBgYHN0cigpYGAgb3IgYGB1bmljb2RlKClgYCBvbiB0aGUgcmV0dXJuZWQgdmFsdWUgd2lsbCB5aWVsZCBhCiAgICAgICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSByZXN1bHQuIFRoZQogICAgICAgIDpjbGFzczpgfi5Db21waWxlZGAgb2JqZWN0IGFsc28gY2FuIHJldHVybiBhCiAgICAgICAgZGljdGlvbmFyeSBvZiBiaW5kIHBhcmFtZXRlciBuYW1lcyBhbmQgdmFsdWVzCiAgICAgICAgdXNpbmcgdGhlIGBgcGFyYW1zYGAgYWNjZXNzb3IuCgogICAgICAgIDpwYXJhbSBiaW5kOiBBbiBgYEVuZ2luZWBgIG9yIGBgQ29ubmVjdGlvbmBgIGZyb20gd2hpY2ggYQogICAgICAgICAgICBgYENvbXBpbGVkYGAgd2lsbCBiZSBhY3F1aXJlZC4gVGhpcyBhcmd1bWVudCB0YWtlcyBwcmVjZWRlbmNlIG92ZXIKICAgICAgICAgICAgdGhpcyA6Y2xhc3M6YF9leHByZXNzaW9uLkNsYXVzZUVsZW1lbnRgJ3MgYm91bmQgZW5naW5lLCBpZiBhbnkuCgogICAgICAgIDpwYXJhbSBjb2x1bW5fa2V5czogVXNlZCBmb3IgSU5TRVJUIGFuZCBVUERBVEUgc3RhdGVtZW50cywgYSBsaXN0IG9mCiAgICAgICAgICAgIGNvbHVtbiBuYW1lcyB3aGljaCBzaG91bGQgYmUgcHJlc2VudCBpbiB0aGUgVkFMVUVTIGNsYXVzZSBvZiB0aGUKICAgICAgICAgICAgY29tcGlsZWQgc3RhdGVtZW50LiBJZiBgYE5vbmVgYCwgYWxsIGNvbHVtbnMgZnJvbSB0aGUgdGFyZ2V0IHRhYmxlCiAgICAgICAgICAgIG9iamVjdCBhcmUgcmVuZGVyZWQuCgogICAgICAgIDpwYXJhbSBkaWFsZWN0OiBBIGBgRGlhbGVjdGBgIGluc3RhbmNlIGZyb20gd2hpY2ggYSBgYENvbXBpbGVkYGAKICAgICAgICAgICAgd2lsbCBiZSBhY3F1aXJlZC4gVGhpcyBhcmd1bWVudCB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdGhlIGBiaW5kYAogICAgICAgICAgICBhcmd1bWVudCBhcyB3ZWxsIGFzIHRoaXMgOmNsYXNzOmBfZXhwcmVzc2lvbi5DbGF1c2VFbGVtZW50YAogICAgICAgICAgICAncyBib3VuZCBlbmdpbmUsCiAgICAgICAgICAgIGlmIGFueS4KCiAgICAgICAgOnBhcmFtIGlubGluZTogVXNlZCBmb3IgSU5TRVJUIHN0YXRlbWVudHMsIGZvciBhIGRpYWxlY3Qgd2hpY2ggZG9lcwogICAgICAgICAgICBub3Qgc3VwcG9ydCBpbmxpbmUgcmV0cmlldmFsIG9mIG5ld2x5IGdlbmVyYXRlZCBwcmltYXJ5IGtleQogICAgICAgICAgICBjb2x1bW5zLCB3aWxsIGZvcmNlIHRoZSBleHByZXNzaW9uIHVzZWQgdG8gY3JlYXRlIHRoZSBuZXcgcHJpbWFyeQogICAgICAgICAgICBrZXkgdmFsdWUgdG8gYmUgcmVuZGVyZWQgaW5saW5lIHdpdGhpbiB0aGUgSU5TRVJUIHN0YXRlbWVudCdzCiAgICAgICAgICAgIFZBTFVFUyBjbGF1c2UuIFRoaXMgdHlwaWNhbGx5IHJlZmVycyB0byBTZXF1ZW5jZSBleGVjdXRpb24gYnV0IG1heQogICAgICAgICAgICBhbHNvIHJlZmVyIHRvIGFueSBzZXJ2ZXItc2lkZSBkZWZhdWx0IGdlbmVyYXRpb24gZnVuY3Rpb24KICAgICAgICAgICAgYXNzb2NpYXRlZCB3aXRoIGEgcHJpbWFyeSBrZXkgYENvbHVtbmAuCgogICAgICAgIDpwYXJhbSBjb21waWxlX2t3YXJnczogb3B0aW9uYWwgZGljdGlvbmFyeSBvZiBhZGRpdGlvbmFsIHBhcmFtZXRlcnMKICAgICAgICAgICAgdGhhdCB3aWxsIGJlIHBhc3NlZCB0aHJvdWdoIHRvIHRoZSBjb21waWxlciB3aXRoaW4gYWxsICJ2aXNpdCIKICAgICAgICAgICAgbWV0aG9kcy4gIFRoaXMgYWxsb3dzIGFueSBjdXN0b20gZmxhZyB0byBiZSBwYXNzZWQgdGhyb3VnaCB0bwogICAgICAgICAgICBhIGN1c3RvbSBjb21waWxhdGlvbiBjb25zdHJ1Y3QsIGZvciBleGFtcGxlLiAgSXQgaXMgYWxzbyB1c2VkCiAgICAgICAgICAgIGZvciB0aGUgY2FzZSBvZiBwYXNzaW5nIHRoZSBgYGxpdGVyYWxfYmluZHNgYCBmbGFnIHRocm91Z2g6OgoKICAgICAgICAgICAgICAgIGZyb20gc3FsYWxjaGVteS5zcWwgaW1wb3J0IHRhYmxlLCBjb2x1bW4sIHNlbGVjdAoKICAgICAgICAgICAgICAgIHQgPSB0YWJsZSgndCcsIGNvbHVtbigneCcp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ZCBhcmUgaW50ZW5kZWQgdG8gYWNjZXB0IGluc3RhbmNlcyBvZgogICAgOmNsYXNzOmBfZXhwcmVzc2lvbi5Db2x1bW5FbGVtZW50YCBhcwogICAgYXJndW1lbnRzLiAgVGhlc2UgZnVuY3Rpb25zIHdpbGwgdHlwaWNhbGx5IGRvY3VtZW50IHRoYXQgdGhleSBhY2NlcHQgYQogICAgIlNRTCBleHByZXNzaW9uIiBhcyBhbiBhcmd1bWVudC4gIFdoYXQgdGhpcyBtZWFucyBpbiB0ZXJtcyBvZiBTUUxBbGNoZW15CiAgICB1c3VhbGx5IHJlZmVycyB0byBhbiBpbnB1dCB3aGljaCBpcyBlaXRoZXIgYWxyZWFkeSBpbiB0aGUgZm9ybSBvZiBhCiAgICA6Y2xhc3M6YF9leHByZXNzaW9uLkNvbHVtbkVsZW1lbnRgIG9iamVjdCwKICAgIG9yIGEgdmFsdWUgd2hpY2ggY2FuIGJlICoqY29lcmNlZCoqIGludG8KICAgIG9uZS4gIFRoZSBjb2VyY2lvbiBydWxlcyBmb2xsb3dlZCBieSBtb3N0LCBidXQgbm90IGFsbCwgU1FMQWxjaGVteSBDb3JlCiAgICBmdW5jdGlvbnMgd2l0aCByZWdhcmRzIHRvIFNRTCBleHByZXNzaW9ucyBhcmUgYXMgZm9sbG93czoKCiAgICAgICAgKiBhIGxpdGVyYWwgUHl0aG9uIHZhbHVlLCBzdWNoIGFzIGEgc3RyaW5nLCBpbnRlZ2VyIG9yIGZsb2F0aW5nCiAgICAgICAgICBwb2ludCB2YWx1ZSwgYm9vbGVhbiwgZGF0ZXRpbWUsIGBgRGVjaW1hbGBgIG9iamVjdCwgb3IgdmlydHVhbGx5CiAgICAgICAgICBhbnkgb3RoZXIgUHl0aG9uIG9iamVjdCwgd2lsbCBiZSBjb2VyY2VkIGludG8gYSAibGl0ZXJhbCBib3VuZAogICAgICAgICAgdmFsdWUiLiAgVGhpcyBnZW5lcmFsbHkgbWVhbnMgdGhhdCBhIDpmdW5jOmAuYmluZHBhcmFtYCB3aWxsIGJlCiAgICAgICAgICBwcm9kdWNlZCBmZWF0dXJpbmcgdGhlIGdpdmVuIHZhbHVlIGVtYmVkZGVkIGludG8gdGhlIGNvbnN0cnVjdDsgdGhlCiAgICAgICAgICByZXN1bHRpbmcgOmNsYXNzOmAuQmluZFBhcmFtZXRlcmAgb2JqZWN0IGlzIGFuIGluc3RhbmNlIG9mCiAgICAgICAgICA6Y2xhc3M6YF9leHByZXNzaW9uLkNvbHVtbkVsZW1lbnRgLgogICAgICAgICAgVGhlIFB5dGhvbiB2YWx1ZSB3aWxsIHVsdGltYXRlbHkgYmUgc2VudAogICAgICAgICAgdG8gdGhlIERCQVBJIGF0IGV4ZWN1dGlvbiB0aW1lIGFzIGEgcGFyYW1ldGVyaXplZCBhcmd1bWVudCB0byB0aGUKICAgICAgICAgIGBgZXhlY3V0ZSgpYGAgb3IgYGBleGVjdXRlbWFueSgpYGAgbWV0aG9kcywgYWZ0ZXIgU1FMQWxjaGVteQogICAgICAgICAgdHlwZS1zcGVjaWZpYyBjb252ZXJ0ZXJzIChlLmcuIHRob3NlIHByb3ZpZGVkIGJ5IGFueSBhc3NvY2lhdGVkCiAgICAgICAgICA6Y2xhc3M6YC5UeXBlRW5naW5lYCBvYmplY3RzKSBhcmUgYXBwbGllZCB0byB0aGUgdmFsdWUuCgogICAgICAgICogYW55IHNwZWNpYWwgb2JqZWN0IHZhbHVlLCB0eXBpY2FsbHkgT1JNLWxldmVsIGNvbnN0cnVjdHMsIHdoaWNoCiAgICAgICAgICBmZWF0dXJlIGEgbWV0aG9kIGNhbGxlZCBgYF9fY2xhdXNlX2VsZW1lbnRfXygpYGAuICBUaGUgQ29yZQogICAgICAgICAgZXhwcmVzc2lvbiBzeXN0ZW0gbG9va3MgZm9yIHRoaXMgbWV0aG9kIHdoZW4gYW4gb2JqZWN0IG9mIG90aGVyd2lzZQogICAgICAgICAgdW5rbm93biB0eXBlIGlzIHBhc3NlZCB0byBhIGZ1bmN0aW9uIHRoYXQgaXMgbG9va2luZyB0byBjb2VyY2UgdGhlCiAgICAgICAgICBhcmd1bWVudCBpbnRvIGEgOmNsYXNzOmBfZXhwcmVzc2lvbi5Db2x1bW5FbGVtZW50YCBleHByZXNzaW9uLiAgVGhlCiAgICAgICAgICBgYF9fY2xhdXNlX2VsZW1lbnRfXygpYGAgbWV0aG9kLCBpZiBwcmVzZW50LCBzaG91bGQgcmV0dXJuIGEKICAgICAgICAgIDpjbGFzczpgX2V4cHJlc3Npb24uQ29sdW1uRWxlbWVudGAgaW5zdGFuY2UuICBUaGUgcHJpbWFyeSB1c2Ugb2YKICAgICAgICAgIGBgX19jbGF1c2VfZWxlbWVudF9fKClgYCB3aXRoaW4gU1FMQWxjaGVteSBpcyB0aGF0IG9mIGNsYXNzLWJvdW5kCiAgICAgICAgICBhdHRyaWJ1dGVzIG9uIE9STS1tYXBwZWQgY2xhc3NlczsgYSBgYFVzZXJgYCBjbGFzcyB3aGljaCBjb250YWlucyBhCiAgICAgICAgICBtYXBwZWQgYXR0cmlidXRlIG5hbWVkIGBgLm5hbWVgYCB3aWxsIGhhdmUgYSBtZXRob2QKICAgICAgICAgIGBgVXNlci5uYW1lLl9fY2xhdXNlX2VsZW1lbnRfXygpYGAgd2hpY2ggd2hlbiBpbnZva2VkIHJldHVybnMgdGhlCiAgICAgICAgICA6Y2xhc3M6YF9zY2hlbWEuQ29sdW1uYAogICAgICAgICAgY2FsbGVkIGBgbmFtZWBgIGFzc29jaWF0ZWQgd2l0aCB0aGUgbWFwcGVkIHRhYmxlLgoKICAgICAgICAqIFRoZSBQeXRob24gYGBOb25lYGAgdmFsdWUgaXMgdHlwaWNhbGx5IGludGVycHJldGVkIGFzIGBgTlVMTGBgLAogICAgICAgICAgd2hpY2ggaW4gU1FMQWxjaGVteSBDb3JlIHByb2R1Y2VzIGFuIGluc3RhbmNlIG9mIDpmdW5jOmAubnVsbGAuCgogICAgQSA6Y2xhc3M6YF9leHByZXNzaW9uLkNvbHVtbkVsZW1lbnRgIHByb3ZpZGVzIHRoZSBhYmlsaXR5IHRvIGdlbmVyYXRlIG5ldwogICAgOmNsYXNzOmBfZXhwcmVzc2lvbi5Db2x1bW5FbGVtZW50YAogICAgb2JqZWN0cyB1c2luZyBQeXRob24gZXhwcmVzc2lvbnMuICBUaGlzIG1lYW5zIHRoYXQgUHl0aG9uIG9wZXJhdG9ycwogICAgc3VjaCBhcyBgYD09YGAsIGBgIT1gYCBhbmQgYGA8YGAgYXJlIG92ZXJsb2FkZWQgdG8gbWltaWMgU1FMIG9wZXJhdGlvbnMsCiAgICBhbmQgYWxsb3cgdGhlIGluc3RhbnRpYXRpb24gb2YgZnVydGhlciA6Y2xhc3M6YF9leHByZXNzaW9uLkNvbHVtbkVsZW1lbnRgCiAgICBpbnN0YW5jZXMKICAgIHdoaWNoIGFyZSBjb21wb3NlZCBmcm9tIG90aGVyLCBtb3JlIGZ1bmRhbWVudGFsCiAgICA6Y2xhc3M6YF9leHByZXNzaW9uLkNvbHVtbkVsZW1lbnRgCiAgICBvYmplY3RzLiAgRm9yIGV4YW1wbGUsIHR3byA6Y2xhc3M6YC5Db2x1bW5DbGF1c2VgIG9iamVjdHMgY2FuIGJlIGFkZGVkCiAgICB0b2dldGhlciB3aXRoIHRoZSBhZGRpdGlvbiBvcGVyYXRvciBgYCtgYCB0byBwcm9kdWNlCiAgICBhIDpjbGFzczpgLkJpbmFyeUV4cHJlc3Npb25gLgogICAgQm90aCA6Y2xhc3M6YC5Db2x1bW5DbGF1c2VgIGFuZCA6Y2xhc3M6YC5CaW5hcnlFeHByZXNzaW9uYCBhcmUgc3ViY2xhc3NlcwogICAgb2YgOmNsYXNzOmBfZXhwcmVzc2lvbi5Db2x1bW5FbGVtZW50YDo6CgogICAgICAgID4+PiBmcm9tIHNxbGFsY2hlbXkuc3FsIGltcG9ydCBjb2x1bW4KICAgICAgICA+Pj4gY29sdW1uKCdhJykgKyBjb2x1bW4oJ2InKQogICAgICAgIDxzcWxhbGNoZW15LnNxbC5leHByZXNzaW9uLkJpbmFyeUV4cHJlc3Npb24gb2JqZWN0IGF0IDB4MTAxMDI5ZGQwPgogICAgICAgID4+PiBwcmludChjb2x1bW4oJ2EnKSArIGNvbHVtbignYicpKQogICAgICAgIGEgKyBiCgogICAgLi4gc2VlYWxzbzo6CgogICAgICAgIDpjbGFzczpgX3NjaGVtYS5Db2x1bW5gCgogICAgICAgIDpmdW5jOmBfZXhwcmVzc2lvbi5jb2x1bW5gCgogICAg2g5jb2x1bW5fZWxlbWVudEZyhQAAAE5UYwIAAAAAAAAAAAAAAAUAAAADAAAA8yYBAACXAHwBdAAAAAAAAAAAAAAAagEAAAAAAAAAAHQAAAAAAAAAAAAAAGoCAAAAAAAAAAB0AAAAAAAAAAAAAABqAwAAAAAAAAAAZgN2AHJCfABqBAAA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YnV0IGFsc28gYXMgYSBtZWFucyBvZgogICAgICAgIHJlcHJlc2VudGluZyBzby1jYWxsZWQgInVuc2FmZSIgdmFsdWVzIHdoaWNoIHNob3VsZCBub3QgYmUgcmVuZGVyZWQKICAgICAgICBkaXJlY3RseSBpbiBhIFNRTCBzdGF0ZW1lbnQsIGJ1dCByYXRoZXIgc2hvdWxkIGJlIHBhc3NlZCBhbG9uZwogICAgICAgIHRvIHRoZSA6dGVybTpgREJBUElgIGFzIHZhbHVlcyB3aGljaCBuZWVkIHRvIGJlIGNvcnJlY3RseSBlc2NhcGVkCiAgICAgICAgYW5kIHBvdGVudGlhbGx5IGhhbmRsZWQgZm9yIHR5cGUtc2FmZXR5LgoKICAgICAgICBXaGVuIHVzaW5nIDpmdW5jOmAuYmluZHBhcmFtYCBleHBsaWNpdGx5LCB0aGUgdXNlIGNhc2UgaXMgdHlwaWNhbGx5CiAgICAgICAgb25lIG9mIHRyYWRpdGlvbmFsIGRlZmVybWVudCBvZiBwYXJhbWV0ZXJzOyB0aGUgOmZ1bmM6YC5iaW5kcGFyYW1gCiAgICAgICAgY29uc3RydWN0IGFjY2VwdHMgYSBuYW1lIHdoaWNoIGNhbiB0aGVuIGJlIHJlZmVycmVkIHRvIGF0IGV4ZWN1dGlvbgogICAgICAgIHRpbWU6OgoKICAgICAgICAgICAgZnJvbSBzcWxhbGNoZW15IGltcG9ydCBiaW5kcGFyYW0KCiAgICAgICAgICAgIHN0bXQgPSBzZWxlY3QoW3VzZXJzX3RhYmxlXSkuXAogICAgICAgICAgICAgICAgICAgICAgICB3aGVyZSh1c2Vyc190YWJsZS5jLm5hbWUgPT0gYmluZHBhcmFtKCd1c2VybmFtZScpKQoKICAgICAgICBUaGUgYWJvdmUgc3RhdGVtZW50LCB3aGVuIHJlbmRlcmVkLCB3aWxsIHByb2R1Y2UgU1FMIHNpbWlsYXIgdG86OgoKICAgICAgICAgICAgU0VMRUNUIGlkLCBuYW1lIEZST00gdXNlciBXSEVSRSBuYW1lID0gOnVzZXJuYW1lCgogICAgICAgIEluIG9yZGVyIHRvIHBvcHVsYXRlIHRoZSB2YWx1ZSBvZiBgYDp1c2VybmFtZWBgIGFib3ZlLCB0aGUgdmFsdWUKICAgICAgICB3b3VsZCB0eXBpY2FsbHkgYmUgYXBwbGllZCBhdCBleGVjdXRpb24gdGltZSB0byBhIG1ldGhvZAogICAgICAgIGxpa2UgOm1ldGg6YF9lbmdpbmUuQ29ubmVjdGlvbi5leGVjdXRlYDo6CgogICAgICAgICAgICByZXN1bHQgPSBjb25uZWN0aW9uLmV4ZWN1dGUoc3RtdCwgdXNlcm5hbWU9J3dlbmR5JykKCiAgICAgICAgRXhwbGljaXQgdXNlIG9mIDpmdW5jOmAuYmluZHBhcmFtYCBpcyBhbHNvIGNvbW1vbiB3aGVuIHByb2R1Y2luZwogICAgICAgIFVQREFURSBvciBERUxFVEUgc3RhdGVtZW50cyB0aGF0IGFyZSB0byBiZSBpbnZva2VkIG11bHRpcGxlIHRpbWVzLAogICAgICAgIHdoZXJlIHRoZSBXSEVSRSBjcml0ZXJpb24gb2YgdGhlIHN0YXRlbWVudCBpcyB0byBjaGFuZ2Ugb24gZWFjaAogICAgICAgIGludm9jYXRpb24sIHN1Y2ggYXM6OgoKICAgICAgICAgICAgc3RtdCA9ICh1c2Vyc190YWJsZS51cGRhdGUoKS4KICAgICAgICAgICAgICAgICAgICB3aGVyZSh1c2VyX3RhYmxlLmMubmFtZSA9PSBiaW5kcGFyYW0oJ3VzZXJuYW1lJykpLgogICAgICAgICAgICAgICAgICAgIHZhbHVlcyhmdWxsbmFtZT1iaW5kcGFyYW0oJ2Z1bGxuYW1lJykpCiAgICAgICAgICAgICAgICAgICAgKQoKICAgICAgICAgICAgY29ubmVjdGlvbi5leGVjdXRlKAogICAgICAgICAgICAgICAgc3RtdCwgW3sidXNlcm5hbWUiOiAid2VuZHkiLCAiZnVsbG5hbWUiOiAiV2VuZHkgU21pdGgifSwKICAgICAgICAgICAgICAgICAgICAgICB7InVzZXJuYW1lIjogImphY2siLCAiZnVsbG5hbWUiOiAiSmFjayBKb25lcyJ9LAogICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgKQoKICAgICAgICBTUUxBbGNoZW15J3MgQ29yZSBleHByZXNzaW9uIHN5c3RlbSBtYWtlcyB3aWRlIHVzZSBvZgogICAgICAgIDpmdW5jOmAuYmluZHBhcmFtYCBpbiBhbiBpbXBsaWNpdCBzZW5zZS4gICBJdCBpcyB0eXBpY2FsIHRoYXQgUHl0aG9uCiAgICAgICAgbGl0ZXJhbCB2YWx1ZXMgcGFzc2VkIHRvIHZpcnR1YWxseSBhbGwgU1FMIGV4cHJlc3Npb24gZnVuY3Rpb25zIGFyZQogICAgICAgIGNvZXJjZWQgaW50byBmaXhlZCA6ZnVuYzpgLmJpbmRwYXJhbWAgY29uc3RydWN0cy4gIEZvciBleGFtcGxlLCBnaXZlbgogICAgICAgIGEgY29tcGFyaXNvbiBvcGVyYXRpb24gc3VjaCBhczo6CgogICAgICAgICAgICBleHByID0gdXNlcnNfdGFibGUuYy5uYW1lID09ICdXZW5keScKCiAgICAgICAgVGhlIGFib3ZlIGV4cHJlc3Npb24gd2lsbCBwcm9kdWNlIGEgOmNsYXNzOmAuQmluYXJ5RXhwcmVzc2lvbmAKICAgICAgICBjb25zdHJ1Y3QsIHdoZXJlIHRoZSBsZWZ0IHNpZGUgaXMgdGhlIDpjbGFzczpgX3NjaGVtYS5Db2x1bW5gIG9iamVjdAogICAgICAgIHJlcHJlc2VudGluZyB0aGUgYGBuYW1lYGAgY29sdW1uLCBhbmQgdGhlIHJpZ2h0IHNpZGUgaXMgYQogICAgICAgIDpjbGFzczpgLkJpbmRQYXJhbWV0ZXJgIHJlcHJlc2VudGluZyB0aGUgbGl0ZXJhbCB2YWx1ZTo6CgogICAgICAgICAgICBwcmludChyZXByKGV4cHIucmlnaHQpKQogICAgICAgICAgICBCaW5kUGFyYW1ldGVyKCclKDQzMjc3NzEwODggbmFtZSlzJywgJ1dlbmR5JywgdHlwZV89U3RyaW5nKCkpCgogICAgICAgIFRoZSBleHByZXNzaW9uIGFib3ZlIHdpbGwgcmVuZGVyIFNRTCBzdWNoIGFzOjoKCiAgICAgICAgICAgIHVzZXIubmFtZSA9IDpuYW1lXzEKCiAgICAgICAgV2hlcmUgdGhlIGBgOm5hbWVfMWBgIHBhcmFtZXRlciBuYW1lIGlzIGFuIGFub255bW91cyBuYW1lLiAgVGhlCiAgICAgICAgYWN0dWFsIHN0cmluZyBgYFdlbmR5YGAgaXMgbm90IGluIHRoZSByZW5kZXJlZCBzdHJpbmcsIGJ1dCBpcyBjYXJyaWVkCiAgICAgICAgYWxvbmcgd2hlcmUgaXQgaXMgbGF0ZXIgdXNlZCB3aXRoaW4gc3RhdGVtZW50IGV4ZWN1dGlvbi4gIElmIHdlCiAgICAgICAgaW52b2tlIGEgc3RhdGVtZW50IGxpa2UgdGhlIGZvbGxvd2luZzo6CgogICAgICAgICAgICBzdG10ID0gc2VsZWN0KFt1c2Vyc190YWJsZV0pLndoZXJlKHVzZXJzX3RhYmxlLmMubmFtZSA9PSAnV2VuZHknKQogICAgICAgICAgICByZXN1bHQgPSBjb25uZWN0aW9uLmV4ZWN1dGUoc3RtdCkKCiAgICAgICAgV2Ugd291bGQgc2VlIFNRTCBsb2dnaW5nIG91dHB1dCBhczo6CgogICAgICAgICAgICBTRUxFQ1QgInVzZXIiLmlkLCAidXNlciIubmFtZQogICAgICAgICAgICBGUk9NICJ1c2VyIgogICAgICAgICAgICBXSEVSRSAidXNlciIubmFtZSA9ICUobmFtZV8xKXMKICAgICAgICAgICAgeyduYW1lXzEnOiAnV2VuZHknfQoKICAgICAgICBBYm92ZSwgd2Ugc2VlIHRoYXQgYGBXZW5keWBgIGlzIHBhc3NlZCBhcyBhIHBhcmFtZXRlciB0byB0aGUgZGF0YWJhc2UsCiAgICAgICAgd2hpbGUgdGhlIHBsYWNlaG9sZGVyIGBgOm5hbWVfMWBgIGlzIHJlbmRlcmVkIGluIHRoZSBhcHByb3ByaWF0ZSBmb3JtCiAgICAgICAgZm9yIHRoZSB0YXJnZXQgZGF0YWJhc2UsIGluIHRoaXMgY2FzZSB0aGUgUG9zdGdyZVNRTCBkYXRhYmFzZS4KCiAgICAgICAgU2ltaWxhcmx5LCA6ZnVuYzpgLmJpbmRwYXJhbWAgaXMgaW52b2tlZCBhdXRvbWF0aWNhbGx5IHdoZW4gd29ya2luZwogICAgICAgIHdpdGggOnRlcm06YENSVURgIHN0YXRlbWVudHMgYXMgZmFyIGFzIHRoZSAiVkFMVUVTIiBwb3J0aW9uIGlzCiAgICAgICAgY29uY2VybmVkLiAgIFRoZSA6ZnVuYzpgX2V4cHJlc3Npb24uaW5zZXJ0YCBjb25zdHJ1Y3QgcHJvZHVjZXMgYW4KICAgICAgICBgYElOU0VSVGBgIGV4cHJlc3Npb24gd2hpY2ggd2lsbCwgYXQgc3RhdGVtZW50IGV4ZWN1dGlvbiB0aW1lLCBnZW5lcmF0ZQogICAgICAgIGJvdW5kIHBsYWNlaG9sZGVycyBiYXNlZCBvbiB0aGUgYXJndW1lbnRzIHBhc3NlZCwgYXMgaW46OgoKICAgICAgICAgICAgc3RtdCA9IHVzZXJzX3RhYmxlLmluc2VydCgpCiAgICAgICAgICAgIHJlc3VsdCA9IGNvbm5lY3Rpb24uZXhlY3V0ZShzdG10LCBuYW1lPSdXZW5keScpCgogICAgICAgIFRoZSBhYm92ZSB3aWxsIHByb2R1Y2UgU1FMIG91dHB1dCBhczo6CgogICAgICAgICAgICBJTlNFUlQgSU5UTyAidXNlciIgKG5hbWUpIFZBTFVFUyAoJShuYW1lKXMpCiAgICAgICAgICAgIHsnbmFtZSc6ICdXZW5keSd9CgogICAgICAgIFRoZSA6Y2xhc3M6YF9leHByZXNzaW9uLkluc2VydGAgY29uc3RydWN0LCBhdAogICAgICAgIGNvbXBpbGF0aW9uL2V4ZWN1dGlvbiB0aW1lLCByZW5kZXJlZCBhIHNpbmdsZSA6ZnVuYzpgLmJpbmRwYXJhbWAKICAgICAgICBtaXJyb3JpbmcgdGhlIGNvbHVtbiBuYW1lIGBgbmFtZWBgIGFzIGEgcmVzdWx0IG9mIHRoZSBzaW5nbGUgYGBuYW1lYGAKICAgICAgICBwYXJhbWV0ZXIgd2UgcGFzc2VkIHRvIHRoZSA6bWV0aDpgX2VuZ2luZS5Db25uZWN0aW9uLmV4ZWN1dGVgIG1ldGhvZC4KCiAgICAgICAgOnBhcmFtIGtleToKICAgICAgICAgIHRoZSBrZXkgKGUuZy4gdGhlIG5hbWUpIGZvciB0aGlzIGJpbmQgcGFyYW0uCiAgICAgICAgICBXaWxsIGJlIHVzZWQgaW4gdGhlIGdlbmVyYXRlZAogICAgICAgICAgU1FMIHN0YXRlbWVudCBmb3IgZGlhbGVjdHMgdGhhdCB1c2UgbmFtZWQgcGFyYW1ldGVycy4gIFRoaXMKICAgICAgICAgIHZhbHVlIG1heSBiZSBtb2RpZmllZCB3aGVuIHBhcnQgb2YgYSBjb21waWxhdGlvbiBvcGVyYXRpb24sCiAgICAgICAgICBpZiBvdGhlciA6Y2xhc3M6YEJpbmRQYXJhbWV0ZXJgIG9iamVjdHMgZXhpc3Qgd2l0aCB0aGUgc2FtZQogICAgICAgICAga2V5LCBvciBpZiBpdHMgbGVuZ3RoIGlzIHRvbyBsb25nIGFuZCB0cnVuY2F0aW9uIGlzCiAgICAgICAgICByZXF1aXJlZC4KCiAgICAgICAgOnBhcmFtIHZhbHVlOgogICAgICAgICAgSW5pdGlhbCB2YWx1ZSBmb3IgdGhpcyBiaW5kIHBhcmFtLiAgV2lsbCBiZSB1c2VkIGF0IHN0YXRlbWVudAogICAgICAgICAgZXhlY3V0aW9uIHRpbWUgYXMgdGhlIHZhbHVlIGZvciB0aGlzIHBhcmFtZXRlciBwYXNzZWQgdG8gdGhlCiAgICAgICAgICBEQkFQSSwgaWYgbm8gb3RoZXIgdmFsdWUgaXMgaW5kaWNhdGVkIHRvIHRoZSBzdGF0ZW1lbnQgZXhlY3V0aW9uCiAgICAgICAgICBtZXRob2QgZm9yIHRoaXMgcGFydGljdWxhciBwYXJhbWV0ZXIgbmFtZS4gIERlZmF1bHRzIHRvIGBgTm9uZWBgLgoKICAgICAgICA6cGFyYW0gY2FsbGFibGVcXzoKICAgICAgICAgIEEgY2FsbGFibGUgZnVuY3Rpb24gdGhhdCB0YWtlcyB0aGUgcGxhY2Ugb2YgInZhbHVlIi4gIFRoZSBmdW5jdGlvbgogICAgICAgICAgd2lsbCBiZSBjYWxsZWQgYXQgc3RhdGVtZW50IGV4ZWN1dGlvbiB0aW1lIHRvIGRldGVybWluZSB0aGUKICAgICAgICAgIHVsdGltYXRlIHZhbHVlLiAgIFVzZWQgZm9yIHNjZW5hcmlvcyB3aGVyZSB0aGUgYWN0dWFsIGJpbmQKICAgICAgICAgIHZhbHVlIGNhbm5vdCBiZSBkZXRlcm1pbmVkIGF0IHRoZSBwb2ludCBhdCB3aGljaCB0aGUgY2xhdXNlCiAgICAgICAgICBjb25zdHJ1Y3QgaXMgY3JlYXRlZCwgYnV0IGVtYmVkZGVkIGJpbmQgdmFsdWVzIGFyZSBzdGlsbCBkZXNpcmFibGUuCgogICAgICAgIDpwYXJhbSB0eXBlXF86CiAgICAgICAgICBBIDpjbGFzczpgLlR5cGVFbmdpbmVgIGNsYXNzIG9yIGluc3RhbmNlIHJlcHJlc2VudGluZyBhbiBvcHRpb25hbAogICAgICAgICAgZGF0YXR5cGUgZm9yIHRoaXMgOmZ1bmM6YC5iaW5kcGFyYW1gLiAgSWYgbm90IHBhc3NlZCwgYSB0eXBlCiAgICAgICAgICBtYXkgYmUgZGV0ZXJtaW5lZCBhdXRvbWF0aWNhbGx5IGZvciB0aGUgYmluZCwgYmFzZWQgb24gdGhlIGdpdmVuCiAgICAgICAgICB2YWx1ZTsgZm9yIGV4YW1wbGUsIHRyaXZpYWwgUHl0aG9uIHR5cGVzIHN1Y2ggYXMgYGBzdHJgYCwKICAgICAgICAgIGBgaW50YGAsIGBgYm9vbGBgCiAgICAgICAgICBtYXkgcmVzdWx0IGluIHRoZSA6Y2xhc3M6YC5TdHJpbmdgLCA6Y2xhc3M6YC5JbnRlZ2VyYCBvcgogICAgICAgICAgOmNsYXNzOmAuQm9vbGVhbmAgdHlwZXMgYmVpbmcgYXV0b21hdGljYWxseSBzZWxlY3RlZC4KCiAgICAgICAgICBUaGUgdHlwZSBvZiBhIDpmdW5jOmAuYmluZHBhcmFtYCBpcyBzaWduaWZpY2FudCBlc3BlY2lhbGx5IGluIHRoYXQKICAgICAgICAgIHRoZSB0eXBlIHdpbGwgYXBwbHkgcHJlLXByb2Nlc3NpbmcgdG8gdGhlIHZhbHVlIGJlZm9yZSBpdCBpcwogICAgICAgICAgcGFzc2VkIHRvIHRoZSBkYXRhYmFzZS4gIEZvciBleGFtcGxlLCBhIDpmdW5jOmAuYmluZHBhcmFtYCB3aGljaAogICAgICAgICAgcmVmZXJzIHRvIGEgZGF0ZXRpbWUgdmFsdWUsIGFuZCBpcyBzcGVjaWZpZWQgYXMgaG9sZGluZyB0aGUKICAgICAgICAgIDpjbGFzczpgLkRhdGVUaW1lYCB0eXBlLCBtYXkgYXBwbHkgY29udmVyc2lvbiBuZWVkZWQgdG8gdGhlCiAgICAgICAgICB2YWx1ZSAoc3VjaCBhcyBzdHJpbmdpZmljYXRpb24gb24gU1FMaXRlKSBiZWZvcmUgcGFzc2luZyB0aGUgdmFsdWUKICAgICAgICAgIHRvIHRoZSBkYXRhYmFzZS4KCiAgICAgICAgOnBhcmFtIHVuaXF1ZToKICAgICAgICAgIGlmIFRydWUsIHRoZSBrZXkgbmFtZSBvZiB0aGlzIDpjbGFzczpgLkJpbmRQYXJhbWV0ZXJgIHdpbGwgYmUKICAgICAgICAgIG1vZGlmaWVkIGlmIGFub3RoZXIgOmNsYXNzOmAuQmluZFBhcmFtZXRlcmAgb2YgdGhlIHNhbWUgbmFtZQogICAgICAgICAgYWxyZWFkeSBoYXMgYmVlbiBsb2NhdGVkIHdpdGhpbiB0aGUgY29udGFpbmluZwogICAgICAgICAgZXhwcmVzc2lvbi4gIFRoaXMgZmxhZyBpcyB1c2VkIGdlbmVyYWxseSBieSB0aGUgaW50ZXJuYWxzCiAgICAgICAgICB3aGVuIHByb2R1Y2luZyBzby1jYWxsZWQgImFub255bW91cyIgYm91bmQgZXhwcmVzc2lvbnMsIGl0CiAgICAgICAgICBpc24ndCBnZW5lcmFsbHkgYXBwbGljYWJsZSB0byBleHBsaWNpdGx5LW5hbWVkIDpmdW5jOmAuYmluZHBhcmFtYAogICAgICAgICAgY29uc3RydWN0cy4KCiAgICAgICAgOnBhcmFtIHJlcXVpcmVkOgogICAgICAgICAgSWYgYGBUcnVlYGAsIGEgdmFsdWUgaXMgcmVxdWlyZWQgYXQgZXhlY3V0aW9uIHRpbWUuICBJZiBub3QgcGFzc2VkLAogICAgICAgICAgaXQgZGVmYXVsdHMgdG8gYGBUcnVlYGAgaWYgbmVpdGhlciA6cGFyYW1yZWY6YC5iaW5kcGFyYW0udmFsdWVgCiAgICAgICAgICBvciA6cGFyYW1yZWY6YC5iaW5kcGFyYW0uY2FsbGFibGVgIHdlcmUgcGFzc2VkLiAgSWYgZWl0aGVyIG9mIHRoZXNlCiAgICAgICAgICBwYXJhbWV0ZXJzIGFyZSBwcmVzZW50LCB0aGVuIDpwYXJhbXJlZjpgLmJpbmRwYXJhbS5yZXF1aXJlZGAKICAgICAgICAgIGRlZmF1bHRzIHRvIGBgRmFsc2VgYC4KCiAgICAgICAgOnBhcmFtIHF1b3RlOgogICAgICAgICAgVHJ1ZSBpZiB0aGlzIHBhcmFtZXRlciBuYW1lIHJlcXVpcmVzIHF1b3RpbmcgYW5kIGlzIG5vdAogICAgICAgICAgY3VycmVudGx5IGtub3duIGFzIGEgU1FMQWxjaGVteSByZXNlcnZlZCB3b3JkOyB0aGlzIGN1cnJlbnRseQogICAgICAgICAgb25seSBhcHBsaWVzIHRvIHRoZSBPcmFjbGUgYmFja2VuZCwgd2hlcmUgYm91bmQgbmFtZXMgbXVzdAogICAgICAgICAgc29tZXRpbWVzIGJlIHF1b3RlZC4KCiAgICAgICAgOnBhcmFtIGlzb3V0cGFyYW06CiAgICAgICAgICBpZiBUcnVlLCB0aGUgcGFyYW1ldGVyIHNob3VsZCBiZSB0cmVhdGVkIGxpa2UgYSBzdG9yZWQgcHJvY2VkdXJlCiAgICAgICAgICAiT1VUIiBwYXJhbWV0ZXIuICBUaGlzIGFwcGxpZXMgdG8gYmFja2VuZHMgc3VjaCBhcyBPcmFjbGUgd2hpY2gKICAgICAgICAgIHN1cHBvcnQgT1VUIHBhcmFtZXRlcnMuCgogICAgICAgIDpwYXJhbSBleHBhbmRpbmc6CiAgICAgICAgICBpZiBUcnVlLCB0aGlzIHBhcmFtZXRlciB3aWxsIGJlIHRyZWF0ZWQgYXMgYW4gImV4cGFuZGluZyIgcGFyYW1ldGVyCiAgICAgICAgICBhdCBleGVjdXRpb24gdGltZTsgdGhlIHBhcmFtZXRlciB2YWx1ZSBpcyBleHBlY3RlZCB0byBiZSBhIHNlcXVlbmNlLAogICAgICAgICAgcmF0aGVyIHRoYW4gYSBzY2FsYXIgdmFsdWUsIGFuZCB0aGUgc3RyaW5nIFNRTCBzdGF0ZW1lbnQgd2lsbAogICAgICAgICAgYmUgdHJhbnNmb3JtZWQgb24gYSBwZXItZXhlY3V0aW9uIGJhc2lzIHRvIGFjY29tbW9kYXRlIHRoZSBzZXF1ZW5jZQogICAgICAgICAgd2l0aCBhIHZhcmlhYmxlIG51bWJlciBvZiBwYXJhbWV0ZXIgc2xvdHMgcGFzc2VkIHRvIHRoZSBEQkFQSS4KICAgICAgICAgIFRoaXMgaXMgdG8gYWxsb3cgc3RhdGVtZW50IGNhY2hpbmcgdG8gYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoCiAgICAgICAgICBhbiBJTiBjbGF1c2UuCgogICAgICAgICAgLi4gc2VlYWxzbzo6CgogICAgICAgICAgICA6bWV0aDpgLkNvbHVtbk9wZXJhdG9ycy5pbl9gCgogICAgICAgICAgICA6cmVmOmBiYWtlZF9pbmAgLSB3aXRoIGJha2VkIHF1ZXJpZXMKCiAgICAgICAgICAuLiBub3RlOjogVGhlICJleHBhbmRpbmciIGZlYXR1cmUgZG9lcyBub3Qgc3VwcG9ydCAiZXhlY3V0ZW1hbnkiLQogICAgICAgICAgICAgc3R5bGUgcGFyYW1ldGVyIHNldHMuCgogICAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMS4yCgogICAgICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAxLjMgdGhlICJleHBhbmRpbmciIGJvdW5kIHBhcmFtZXRlciBmZWF0dXJlIG5vdwogICAgICAgICAgICAgc3VwcG9ydHMgZW1wdHkgbGlzdHMuCgoKICAgICAgICAuLiBzZWVhbHNvOjoKCiAgICAgICAgICAgIDpyZWY6YGNvcmV0dXRvcmlhbF9iaW5kX3BhcmFtYAoKICAgICAgICAgICAgOnJlZjpgY29yZXR1dG9yaWFsX2luc2VydF9leHByZXNzaW9uc2AKCiAgICAgICAgICAgIDpmdW5jOmAub3V0cGFyYW1gCgogICAgICAgIE5yMAEAAHoLWyVcKFwpIFwkXSvaAV/aBXBhcmFteg0lJSglZCBwYXJhbSlzKRbaCmlzaW5zdGFuY2VyGAEAAHIqAAAAcjwAAAByDAAAANoLcXVvdGVkX25hbWVyMgEAAHLBAAAA2gJyZdoDc3Vi2gVzdHJpcNoQX2lkZW50aWZ5aW5nX2tledoJX29yaWdfa2V5cjUAAAByOAAAANoIY2FsbGFibGVyOwAAAHJ8AAAA2glleHBhbmRpbmfaFWNvZXJjZV9jb21wYXJlZF92YWx1ZXIGAAAA2hZfcmVzb2x2ZV92YWx1ZV90b190eXBlKQxyUAAAAHI8AAAAcjgAAAByJQAAAHI1AAAAcnwAAADaBXF1b3Rl2gljYWxsYWJsZV9ySQEAAHI7AAAAcvcAAABy+AAAAHMMAAAAICAgICAgICAgICAgchsAAADaCF9faW5pdF9fehZCaW5kUGFyYW1ldGVyLl9faW5pdF9fxQMAAHOaAQAAgAD1RAcADBaQY5080Qso1Aso8AACCRrYFBeUSIhF2BIVlCeIQ9gLE5V20Asd0Asd2BccpQaQf9AXPKg5uATQKzyISNgLEJVGiD+IP9gUGIhF4AsQ0Asc3RIdmGOgNdESKdQSKYhD4AsR8AALCUsB3Rcn2BAc5RQWkHSRSJRI4BcakH/1AwAVF5RGmD6oM7AD0RQ01BQ01xQ60hQ6uDPRFD/UFD/QFD/gGSDwCQUTEvEDBhES8QMIGA70AAgYDohEjEiISPAUABgb0BdK1R4uqH/FEsBEwRjEGNEvSdEeStQeSohEjEjwCgAhJaQIiATUCB3wCAAaHZgeoAeIBIwO4BYciASMC9gVGogEjArYGCGIBIwN2BokiASMD9gYIIgEjA3YGSKIBIwO4AsQiD3YDyDQDyzYHC3XHEPSHEPYFCmoNfEDAh0S9AACHRKQBJQJkAmQCfUIAB0l1Bw7uEXRHELUHEKQBJQJkAmQCd0NF5gFnXTRDSTUDSTwAAMJHtgYHZgFmQecB4hEjEmISYhJ4BgdiESMSYhJiElyHAAAAGMCAAAAAAAAAAAAAAACAAAAAwAAAPM8AAAAlwB8AKAAAAAAAAAAAAAAAAAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAH0CfAF8Al8BAAAAAAAAAAB8AlMAKQF6clJldHVybiBhIGNvcHkgb2YgdGhpcyA6Y2xhc3M6YC5CaW5kUGFyYW1ldGVyYCBpbgogICAgICAgIHRoZSBjb250ZXh0IG9mIGFuIGV4cGFuZGluZyBJTiBhZ2FpbnN0IGEgdHVwbGUuCgogICAgICAgICkCchgAAADaE19leHBhbmRpbmdfaW5fdHlwZXMpA3JQAAAA2gV0eXBlc9oGY2xvbmVkcwMAAAAgICByGwAAANoYX3dpdGhfZXhwYW5kaW5nX2luX3R5cGVzeiZCaW5kUGFyYW1ldGVyLl93aXRoX2V4cGFuZGluZ19pbl90eXBlc9sEAABzHgAAAIAA8AoAEhaXG5IbkR2UHYgG2CUqiAbUCCLYDxWIDXIcAAAAYwIAAAAAAAAAAAAAAAMAAAADAAAA87AAAACXAHwAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAKYAAACrAAAAAAAAAAAAfQJ8AXwCXwEAAAAAAAAAAGQBfAJfAgAAAAAAAAAAZAJ8Al8DAAAAAAAAAAB8AmoEAAAAAAAAAAB0CgAAAAAAAAAAAABqBgAAAAAAAAAAdQByGXQLAAAAAAAAAAAAAGoHAAAAAAAAAAB8AaYBAACrAQAAAAAAAAAAfAJfBAAAAAAAAAAAfAJTACkDellSZXR1cm4gYSBjb3B5IG9mIHRoaXMgOmNsYXNzOmAuQmluZFBhcmFtZXRlcmAgd2l0aCB0aGUgZ2l2ZW4gdmFsdWUKICAgICAgICBzZXQuCgogICAgICAgIE5GKQhyGAAAAHI4AAAAckgBAAByfAAAAHIqAAAAcgYAAABy4wAAAHJLAQAAKQNyUAAAAHI4AAAAclIBAABzAwAAACAgIHIbAAAA2gtfd2l0aF92YWx1ZXoZQmluZFBhcmFtZXRlci5fd2l0aF92YWx1ZeQEAABzTQAAAIAA8AoAEhaXG5IbkR2UHYgG2BcciAaMDNgaHogGjA/YGh+IBowP2AsRjDudKNQaK9ALK9ALK90aItQaObgl0RpA1BpAiEaMS9gPFYgNchwAAABjAQAAAAAAAAAAAAAAAgAAAAMAAADzRgAAAJcAfABqAAAAAAAAAAAAchR8AKAAAAAAAAAAAAAAAAAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAFMAfABqAQAAAAAAAAAAUwApAXrhUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGlzIGJvdW5kIHBhcmFtZXRlciwKICAgICAgICB0YWtpbmcgaW50byBhY2NvdW50IGlmIHRoZSBgYGNhbGxhYmxlYGAgcGFyYW1ldGVyCiAgICAgICAgd2FzIHNldC4KCiAgICAgICAgVGhlIGBgY2FsbGFibGVgYCB2YWx1ZSB3aWxsIGJlIGV2YWx1YXRlZAogICAgICAgIGFuZCByZXR1cm5lZCBpZiBwcmVzZW50LCBlbHNlIGBgdmFsdWVgYC4KCiAgICAgICAgKQJySAEAAHI4AAAAclQAAABzAQAAACByGwAAANoPZWZmZWN0aXZlX3ZhbHVleh1CaW5kUGFyYW1ldGVyLmVmZmVjdGl2ZV92YWx1ZfEEAABzJAAAAIAA8BQADBCMPfAAAwke2BMXlz2SPZE/lD/QDCLgExeUOtAMHXIcAAAAYwEAAAAAAAAAAAAAAAYAAAADAAAA86IAAACXAHQAAAAAAAAAAAAAAKABAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfQF8AGoCAAAAAAAAAAByLXQHAAAAAAAAAAAAAGQBdAkAAAAAAAAAAAAAfAGmAQAAqwEAAAAAAAAAAHwBagUAAAAAAAAAAHABZAJmAnoGAACmAQAAqwEAAAAAAAAAAHwBXwYAAAAAAAAAAHwBUwApA05yMAEAAHJAAQAAKQdyRAAAAHIYAAAAcjUAAAByMgEAAHLBAAAAckcBAAByPAAAAHJPAAAAcwIAAAAgIHIbAAAAchgAAAB6FEJpbmRQYXJhbWV0ZXIuX2Nsb25lAAUAAHNRAAAAgADdDBnXDCDSDCCgFNEMJtQMJogB2AsPjDvwAAMJDt0UJNgQHKUCoDGhBaQFoHGke9AnPbBn0B8+0RA+8QMCFQ70AAIVDohBjEXwBgAQEYgIchwAAABjAQAAAAAAAAAAAAAABgAAAAMAAADzgAAAAJcAfABqAAAAAAAAAAAAczZkAXwAXwAAAAAAAAAAAHQDAAAAAAAAAAAAAGQCdAUAAAAAAAAAAAAAfACmAQAAqwEAAAAAAAAAAHwAagMAAAAAAAAAAHABZANmAnoGAACmAQAAqwEAAAAAAAAAAHwAXwQAAAAAAAAAAGQAUwBkAFMAKQROVHIwAQAAckABAAApBXI1AAAAcjIBAABywQAAAHJHAQAAcjwAAAByVAAAAHMBAAAAIHIbAAAAcn0AAAB6IEJpbmRQYXJhbWV0ZXIuX2NvbnZlcnRfdG9fdW5pcXVlCAUAAHNMAAAAgADYDxOMe/AABAkO2BoeiESMS90XJ9gQHKUCoDShCKQIqCSsLtAqQ7hH0B9E0RBE8QMCGA70AAIYDohEjEiISIhI8AUECQ7wAAQJDnIcAAAAYwIAAAAAAAAAAAAAAAQAAAALAAAA86oAAACXAHQBAAAAAAAAAAAAAHwBdAIAAAAAAAAAAAAApgIAAKsCAAAAAAAAAABvPnwAagIAAAAAAAAAAKADAAAAAAAAAAAAAAAAAAAAAAAAAAB8AWoCAAAAAAAAAACmAQAAqwEAAAAAAAAAAG8ffABqBAAAAAAAAAAAfAFqBAAAAAAAAAAAawIAAAAAbw98AGoFAAAAAAAAAAB8AWoFAAAAAAAAAABrAgAAAABTACkBekpDb21wYXJlIHRoaXMgOmNsYXNzOmBCaW5kUGFyYW1ldGVyYCB0byB0aGUgZ2l2ZW4KICAgICAgICBjbGF1c2UuCgogICAgICAgICkGckEBAAByNwAAAHIqAAAA2hZfY29tcGFyZV90eXBlX2FmZmluaXR5cjgAAABySAEAAHKGAAAAcwMAAAAgICByGwAAAHKIAAAAehVCaW5kUGFyYW1ldGVyLmNvbXBhcmUPBQAAc1QAAACAAPUOAA0XkHWdbdEMLNQMLPAAAw0w2BAUlAnXEDDSEDCwFbQa0RA81BA88AMDDTDgEBSUCphlnGvSECnwBQMNMPAGABEVlA2gFaQe0hAv8AkFCQpyHAAAAGMBAAAAAAAAAAAAAAADAAAAAwAAAPOQAAAAlwB8AGoAAAAAAAAAAACgAQAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAKsAAAAAAAAAAAB9AXwAagIAAAAAAAAAAH0CfABqAwAAAAAAAAAAchl8AKADAAAAAAAAAAAAAAAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAH0CZAF8AWQCPAAAAHwCfAFkAzwAAAB8AVMAKQR6NEV4ZWN1dGUgYSBkZWZlcnJlZCB2YWx1ZSBmb3Igc2VyaWFsaXphdGlvbiBwdXJwb3Nlcy5OckgBAAByOAAAACkEckgAAABySQAAAHI4AAAAckgBAAApA3JQAAAAcl0AAADaAXZzAwAAACAgIHIbAAAAcl4AAAB6GkJpbmRQYXJhbWV0ZXIuX19nZXRzdGF0ZV9fHAUAAHNMAAAAgADwBgANEYxN1wwe0gwe0Qwg1AwgiAHYDBCMSogB2AsPjD3wAAIJIdgQFJcNkg2RD5QPiEHYHCCIQYhqiU3YFRaIAYgniQrYDxCICHIcAAAAYwIAAAAAAAAAAAAAAAgAAAADAAAA89YAAACXAHwBoAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQBZAKmAgAAqwIAAAAAAAAAAHI4dAMAAAAAAAAAAAAAZAN0BQAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAfAGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAZARkBaYCAACrAgAAAAAAAAAAZgJ6BgAApgEAAKsBAAAAAAAAAAB8AWQGPAAAAHwAagMAAAAAAAAAAKAEAAAAAAAAAAAAAAAAAAAAAAAAAAB8AaYBAACrAQAAAAAAAAAAAQBkAFMAKQdOcjUAAABGcjABAAByRwEAAHJAAQAAcjwAAAApBXIbAQAAcjIBAABywQAAAHJIAAAAcoIAAACpAnJQAAAA2gVzdGF0ZXMCAAAAICByGwAAANoMX19zZXRzdGF0ZV9fehpCaW5kUGFyYW1ldGVyLl9fc2V0c3RhdGVfXycFAABzagAAAIAA2AsQjzmKOZBYmHXRCyXUCyXwAAMJDt0bK9gQHKUCoDShCKQIqCWvKaopsEvAF9EqSdQqSdAfStEQSvEDAhwO9AACHA6IRZAliUzwBgAJDYwN1wgc0ggcmFXRCCPUCCPQCCPQCCPQCCNyHAAAAGMBAAAAAAAAAAAAAAAHAAAAAwAAAPM4AAAAlwBkAXwAagAAAAAAAAAAAJsCZAJ8AGoBAAAAAAAAAACbAmQDfABqAgAAAAAAAAAAmwJkBJ0HUwApBU56DkJpbmRQYXJhbWV0ZXIoegIsIHoILCB0eXBlXz36ASkpA3I8AAAAcjgAAAByKgAAAHJUAAAAcwEAAAAgchsAAAByvgAAAHoWQmluZFBhcmFtZXRlci5fX3JlcHJfXy4FAABzKQAAAIAAgADgDBCMSIhIiEjYDBCMSohKiErYDBCMSYhJiEnwBwQQCvAABAkKchwAAAApE3LAAAAAcr8AAAByxAAAAHLFAAAAcsYAAADaCF9pc19jcnVkclABAAByDAAAAHJOAQAAclMBAAByVQEAAHLNAAAAclcBAAByGAAAAHJ9AAAAcogAAAByXgAAAHJhAQAAcr4AAAByhQAAAHIcAAAAchsAAAByNwAAAHI3AAAArAMAAHP8AAAAgACAAIAAgACAAPACEQUI8AARBQjwJgAWIYBO4A8UgEjYGhzQBBfwCgAPFdgOEtgPFNgRF9gOEtgSFtgSF9gTGNgeItgaHvAZVAQFHvAAVAQFHvAAVAQFHvAAVAQFHvBsCAcFFvAABwUW8AAHBRbwEgsFFvAACwUW8AALBRbwGgAGDvACDAUe8AAMBR7xAwAGDoRY8AIMBR7wHAYFEfAABgUR8AAGBRHwEAUFDvAABQUO8AAFBQ7wDgsFCvAACwUK8AALBQrwGgkFEfAACQUR8AAJBRHwFgUFJPAABQUk8AAFBSTwDgUFCvAABQUK8AAFBQrwAAUFCvAABQUKchwAAAByNwAAAGMAAAAAAAAAAAAAAAABAAAAAAAAAPMcAAAAlwBlAFoBZABaAmQBWgNkAloEZAOEAFoFZARTACkF2gpUeXBlQ2xhdXNlelRIYW5kbGUgYSB0eXBlIGtleXdvcmQgaW4gYSBTUUwgc3RhdGVtZW50LgoKICAgIFVzZWQgYnkgdGhlIGBgQ2FzZWBgIHN0YXRlbWVudC4KCiAgICDaCnR5cGVjbGF1c2VjAgAAAAAAAAAAAAAAAgAAAAMAAADzFAAAAJcAfAF8AF8AAAAAAAAAAABkAFMAchYAAACpAXIqAAAAcioBAABzAgAAACAgchsAAAByTgEAAHoTVHlwZUNsYXVzZS5fX2luaXRfXz8FAABzDQAAAIAA2BQZiASMCYgJiAlyHAAAAE4pBnLAAAAAcr8AAAByxAAAAHLFAAAAcsYAAAByTgEAAHKFAAAAchwAAAByGwAAAHJmAQAAcmYBAAA2BQAAczQAAACAAIAAgACAAIAA8AIEBQjwAAQFCPAMABYigE7wBAEFGvAAAQUa8AABBRrwAAEFGvAAAQUachwAAAByZgEAAGMAAAAAAAAAAAAAAAAHAAAAAAAAAPPQAQAAlwBlAFoBZABaAmQBWgNkAloEAgBlBWoGAAAAAAAAAABkA2UFagcAAAAAAAAAAKYCAACrAgAAAAAAAAAAWghlCWoKAAAAAAAAAACgCwAAAAAAAAAAAAAAAAAAAAAAAAAAZARlDGkBpgEAAKsBAAAAAAAAAABaCmQFWg1kBoQAWg5lD2QHhACmAAAAqwAAAAAAAAAAAFoQZQ9kCIQApgAAAKsAAAAAAAAAAABaEWcAWhJkCXgBWhN4AVoUWhVkBVoWZBxkCoQBWhdlGAIAZRlqGgAAAAAAAAAAZAtkDGQNrA6mAwAAqwMAAAAAAAAAAAIAZRtkD2QQZBGmAwAAqwMAAAAAAAAAAAkAZB1kEoQBpgAAAKsAAAAAAAAAAACmAAAAqwAAAAAAAAAAAKYAAACrAAAAAAAAAAAAWhxlHWQThACmAAAAqwAAAAAAAAAAAFoeAgBlGWofAAAAAAAAAABkFKYBAACrAQAAAAAAAAAAZBWEAKYAAACrAAAAAAAAAAAAWiBlD2QWhACmAAAAqwAAAAAAAAAAAFohZQ9kF4QApgAAAKsAAAAAAAAAAABaImQcZBiEAVojZSRmAWQZhAFaJWQahABaJmQbhABaJ2QJUwApHtoKVGV4dENsYXVzZWGAAQAAUmVwcmVzZW50IGEgbGl0ZXJhbCBTUUwgdGV4dCBmcmFnbWVudC4KCiAgICBFLmcuOjoKCiAgICAgICAgZnJvbSBzcWxhbGNoZW15IGltcG9ydCB0ZXh0CgogICAgICAgIHQgPSB0ZXh0KCJTRUxFQ1QgKiBGUk9NIHVzZXJzIikKICAgICAgICByZXN1bHQgPSBjb25uZWN0aW9uLmV4ZWN1dGUodCkKCgogICAgVGhlIDpjbGFzczpgX2V4cHJlc3Npb24uVGV4dENsYXVzZWAgY29uc3RydWN0IGlzIHByb2R1Y2VkIHVzaW5nIHRoZQogICAgOmZ1bmM6YF9leHByZXNzaW9uLnRleHRgCiAgICBmdW5jdGlvbjsgc2VlIHRoYXQgZnVuY3Rpb24gZm9yIGZ1bGwgZG9jdW1lbnRhdGlvbi4KCiAgICAuLiBzZWVhbHNvOjoKCiAgICAgICAgOmZ1bmM6YF9leHByZXNzaW9uLnRleHRgCgogICAg2gp0ZXh0Y2xhdXNlehkoPzwhWzpcd1x4NWNdKTooXHcrKSg/ITop2gphdXRvY29tbWl0RmMCAAAAAAAAAAAAAAAEAAAAAwAAAPMiAAAAlwB0AQAAAAAAAAAAAAB8AHwBpgIAAKsCAAAAAAAAAABTAHIWAAAAcqYAAAByqAAAAHMCAAAAICByGwAAAHKpAAAAehJUZXh0Q2xhdXNlLl9fYW5kX19gBQAAcxIAAACAAOUPE5BEmCXRDyDUDyDQCCByHAAAAGMBAAAAAAAAAAAAAAABAAAAAwAAAPMIAAAAlwB8AGYBUwByFgAAAHKFAAAAclQAAABzAQAAACByGwAAAHL+AAAAehtUZXh0Q2xhdXNlLl9zZWxlY3RfaXRlcmFibGVkBQAAcv8AAAByHAAAAGMBAAAAAAAAAAAAAAABAAAAAwAAAPMGAAAAlwB8AFMAchYAAAByhQAAAHJUAAAAcwEAAAAgchsAAAByHQEAAHoVVGV4dENsYXVzZS5zZWxlY3RhYmxlaAUAAHMJAAAAgADwCAAQFIgLchwAAABOYwMAAAAAAAAAAAAAAAQAAAADAAAA824AAACHAJcAfAKJAF8AAAAAAAAAAABpAIkAXwEAAAAAAAAAAIgAZgFkAYQIfQOJAGoCAAAAAAAAAACgAwAAAAAAAAAAAAAAAAAAAAAAAAAAfAN8AaYCAACrAgAAAAAAAAAAiQBfBAAAAAAAAAAAZABTACkCTmMBAAAAAAAAAAAAAAAFAAAAEwAAAPOuAAAAlQGXAHQBAAAAAAAAAAAAAHwAoAEAAAAAAAAAAAAAAAAAAAAAAAAAAGQBpgEAAKsBAAAAAAAAAACmAQAAqwEAAAAAAAAAAIkBagIAAAAAAAAAAHwAoAEAAAAAAAAAAAAAAAAAAAAAAAAAAGQBpgEAAKsBAAAAAAAAAAA8AAAAZAJ8AKABAAAAAAAAAAAAAAAAAAAAAAAAAABkAaYBAACrAQAAAAAAAAAAegYAAFMAKQNOcgQAAAB6AzolcykDcjcAAADaBWdyb3Vw2gtfYmluZHBhcmFtcykC2gFtclAAAABzAgAAACCAchsAAADaBHJlcGx6IVRleHRDbGF1c2UuX19pbml0X18uPGxvY2Fscz4ucmVwbHoFAABzQQAAAPiAAN0rOLgRvxe6F8ARuRq8GtErRNQrRIhE1AwcmFGfV5pXoFGZWpxa0Qwo2BMYmDGfN5o3oDGZOpw60RMl0AwlchwAAAApBdoFX2JpbmRydAEAANoSX2JpbmRfcGFyYW1zX3JlZ2V4ckQBAADaBHRleHQpBHJQAAAAcnkBAAByfgAAAHJ2AQAAcwQAAABgICAgchsAAAByTgEAAHoTVGV4dENsYXVzZS5fX2luaXRfX3YFAABzSwAAAPiAANgVGYgEjArYGx2IBNQIGPAEAgkm8AACCSbwAAIJJvAAAgkm8AACCSbwDAAVGdQUK9cUL9IUL7AEsGTRFDvUFDuIBIwJiAmICXIcAAAAKQJ6AzAuNmEBAQAAVGhlIDpwYXJhbXJlZjpgX2V4cHJlc3Npb24udGV4dC5hdXRvY29tbWl0YCBwYXJhbWV0ZXIgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuICBQbGVhc2UgdXNlIHRoZSA6cGFyYW1yZWY6YC5Db25uZWN0aW9uLmV4ZWN1dGlvbl9vcHRpb25zLmF1dG9jb21taXRgIHBhcmFtZXRlciBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSA6bWV0aDpgLkV4ZWN1dGFibGUuZXhlY3V0aW9uX29wdGlvbnNgIG1ldGhvZC4pAnKkAAAAerNUaGUgOnBhcmFtcmVmOmBfZXhwcmVzc2lvbi50ZXh0LmJpbmRwYXJhbXNgIHBhcmFtZXRlciBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gIFBsZWFzZSByZWZlciB0byB0aGUgOm1ldGg6YF9leHByZXNzaW9uLlRleHRDbGF1c2UuYmluZHBhcmFtc2AgbWV0aG9kLikCcqQAAAB6rVRoZSA6cGFyYW1yZWY6YF9leHByZXNzaW9uLnRleHQudHlwZW1hcGAgcGFyYW1ldGVyIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiAgUGxlYXNlIHJlZmVyIHRvIHRoZSA6bWV0aDpgX2V4cHJlc3Npb24uVGV4dENsYXVzZS5jb2x1bW5zYCBtZXRob2QuKQNybQEAANoKYmluZHBhcmFtc9oHdHlwZW1hcHJ5AQAAeg06ZnVuYzpgLnRleHRgehY6cGFyYW1yZWY6YC50ZXh0LnRleHRgYwYAAAAAAAAAAAAAAAUAAAADAAAA844AAACXAHQBAAAAAAAAAAAAAHwBfAKsAaYCAACrAgAAAAAAAAAAfQZ8A3IKAgB8BmoBAAAAAAAAAAB8A44AfQZ8BHINAgB8BmoCAAAAAAAAAABkBGkAfASkAY4BfQZ8BYEWfAagAwAAAAAAAAAAAAAAAAAAAAAAAAAAfAWsA6YBAACrAQAAAAAAAAAAfQZ8BlMAKQVh6hEAAENvbnN0cnVjdCBhIG5ldyA6Y2xhc3M6YF9leHByZXNzaW9uLlRleHRDbGF1c2VgIGNsYXVzZSwKICAgICAgICByZXByZXNlbnRpbmcKICAgICAgICBhIHRleHR1YWwgU1FMIHN0cmluZyBkaXJlY3RseS4KCiAgICAgICAgRS5nLjo6CgogICAgICAgICAgICBmcm9tIHNxbGFsY2hlbXkgaW1wb3J0IHRleHQKCiAgICAgICAgICAgIHQgPSB0ZXh0KCJTRUxFQ1QgKiBGUk9NIHVzZXJzIikKICAgICAgICAgICAgcmVzdWx0ID0gY29ubmVjdGlvbi5leGVjdXRlKHQpCgogICAgICAgIFRoZSBhZHZhbnRhZ2VzIDpmdW5jOmBfZXhwcmVzc2lvbi50ZXh0YAogICAgICAgIHByb3ZpZGVzIG92ZXIgYSBwbGFpbiBzdHJpbmcgYXJlCiAgICAgICAgYmFja2VuZC1uZXV0cmFsIHN1cHBvcnQgZm9yIGJpbmQgcGFyYW1ldGVycywgcGVyLXN0YXRlbWVudAogICAgICAgIGV4ZWN1dGlvbiBvcHRpb25zLCBhcyB3ZWxsIGFzCiAgICAgICAgYmluZCBwYXJhbWV0ZXIgYW5kIHJlc3VsdC1jb2x1bW4gdHlwaW5nIGJlaGF2aW9yLCBhbGxvd2luZwogICAgICAgIFNRTEFsY2hlbXkgdHlwZSBjb25zdHJ1Y3RzIHRvIHBsYXkgYSByb2xlIHdoZW4gZXhlY3V0aW5nCiAgICAgICAgYSBzdGF0ZW1lbnQgdGhhdCBpcyBzcGVjaWZpZWQgbGl0ZXJhbGx5LiAgVGhlIGNvbnN0cnVjdCBjYW4gYWxzbwogICAgICAgIGJlIHByb3ZpZGVkIHdpdGggYSBgYC5jYGAgY29sbGVjdGlvbiBvZiBjb2x1bW4gZWxlbWVudHMsIGFsbG93aW5nCiAgICAgICAgaXQgdG8gYmUgZW1iZWRkZWQgaW4gb3RoZXIgU1FMIGV4cHJlc3Npb24gY29uc3RydWN0cyBhcyBhIHN1YnF1ZXJ5LgoKICAgICAgICBCaW5kIHBhcmFtZXRlcnMgYXJlIHNwZWNpZmllZCBieSBuYW1lLCB1c2luZyB0aGUgZm9ybWF0IGBgOm5hbWVgYC4KICAgICAgICBFLmcuOjoKCiAgICAgICAgICAgIHQgPSB0ZXh0KCJTRUxFQ1QgKiBGUk9NIHVzZXJzIFdIRVJFIGlkPTp1c2VyX2lkIikKICAgICAgICAgICAgcmVzdWx0ID0gY29ubmVjdGlvbi5leGVjdXRlKHQsIHVzZXJfaWQ9MTIpCgogICAgICAgIEZvciBTUUwgc3RhdGVtZW50cyB3aGVyZSBhIGNvbG9uIGlzIHJlcXVpcmVkIHZlcmJhdGltLCBhcyB3aXRoaW4KICAgICAgICBhbiBpbmxpbmUgc3RyaW5nLCB1c2UgYSBiYWNrc2xhc2ggdG8gZXNjYXBlOjoKCiAgICAgICAgICAgIHQgPSB0ZXh0KCJTRUxFQ1QgKiBGUk9NIHVzZXJzIFdIRVJFIG5hbWU9J1w6dXNlcm5hbWUnIikKCiAgICAgICAgVGhlIDpjbGFzczpgX2V4cHJlc3Npb24uVGV4dENsYXVzZWAKICAgICAgICBjb25zdHJ1Y3QgaW5jbHVkZXMgbWV0aG9kcyB3aGljaCBjYW4KICAgICAgICBwcm92aWRlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBib3VuZCBwYXJhbWV0ZXJzIGFzIHdlbGwgYXMgdGhlIGNvbHVtbgogICAgICAgIHZhbHVlcyB3aGljaCB3b3VsZCBiZSByZXR1cm5lZCBmcm9tIHRoZSB0ZXh0dWFsIHN0YXRlbWVudCwgYXNzdW1pbmcKICAgICAgICBpdCdzIGFuIGV4ZWN1dGFibGUgU0VMRUNUIHR5cGUgb2Ygc3RhdGVtZW50LiAgVGhlCiAgICAgICAgOm1ldGg6YF9leHByZXNzaW9uLlRleHRDbGF1c2UuYmluZHBhcmFtc2AKICAgICAgICBtZXRob2QgaXMgdXNlZCB0byBwcm92aWRlIGJvdW5kCiAgICAgICAgcGFyYW1ldGVyIGRldGFpbCwgYW5kIDptZXRoOmBfZXhwcmVzc2lvbi5UZXh0Q2xhdXNlLmNvbHVtbnNgCiAgICAgICAgbWV0aG9kIGFsbG93cwogICAgICAgIHNwZWNpZmljYXRpb24gb2YgcmV0dXJuIGNvbHVtbnMgaW5jbHVkaW5nIG5hbWVzIGFuZCB0eXBlczo6CgogICAgICAgICAgICB0ID0gdGV4dCgiU0VMRUNUICogRlJPTSB1c2VycyBXSEVSRSBpZD06dXNlcl9pZCIpLlwKICAgICAgICAgICAgICAgICAgICBiaW5kcGFyYW1zKHVzZXJfaWQ9NykuXAogICAgICAgICAgICAgICAgICAgIGNvbHVtbnMoaWQ9SW50ZWdlciwgbmFtZT1TdHJpbmcpCgogICAgICAgICAgICBmb3IgaWQsIG5hbWUgaW4gY29ubmVjdGlvbi5leGVjdXRlKHQpOgogICAgICAgICAgICAgICAgcHJpbnQoaWQsIG5hbWUpCgogICAgICAgIFRoZSA6ZnVuYzpgX2V4cHJlc3Npb24udGV4dGAgY29uc3RydWN0IGlzIHVzZWQgaW4gY2FzZXMgd2hlbgogICAgICAgIGEgbGl0ZXJhbCBzdHJpbmcgU1FMIGZyYWdtZW50IGlzIHNwZWNpZmllZCBhcyBwYXJ0IG9mIGEgbGFyZ2VyIHF1ZXJ5LAogICAgICAgIHN1Y2ggYXMgZm9yIHRoZSBXSEVSRSBjbGF1c2Ugb2YgYSBTRUxFQ1Qgc3RhdGVtZW50OjoKCiAgICAgICAgICAgIHMgPSBzZWxlY3QoW3VzZXJzLmMuaWQsIHVzZXJzLmMubmFtZV0pLndoZXJlKHRleHQoImlkPTp1c2VyX2lkIikpCiAgICAgICAgICAgIHJlc3VsdCA9IGNvbm5lY3Rpb24uZXhlY3V0ZShzLCB1c2VyX2lkPTEyKQoKICAgICAgICA6ZnVuYzpgX2V4cHJlc3Npb24udGV4dGAgaXMgYWxzbyB1c2VkIGZvciB0aGUgY29uc3RydWN0aW9uCiAgICAgICAgb2YgYSBmdWxsLCBzdGFuZGFsb25lIHN0YXRlbWVudCB1c2luZyBwbGFpbiB0ZXh0LgogICAgICAgIEFzIHN1Y2gsIFNRTEFsY2hlbXkgcmVmZXJzCiAgICAgICAgdG8gaXQgYXMgYW4gOmNsYXNzOmAuRXhlY3V0YWJsZWAgb2JqZWN0LCBhbmQgaXQgc3VwcG9ydHMKICAgICAgICB0aGUgOm1ldGg6YEV4ZWN1dGFibGUuZXhlY3V0aW9uX29wdGlvbnNgIG1ldGhvZC4gIEZvciBleGFtcGxlLAogICAgICAgIGEgOmZ1bmM6YF9leHByZXNzaW9uLnRleHRgCiAgICAgICAgY29uc3RydWN0IHRoYXQgc2hvdWxkIGJlIHN1YmplY3QgdG8gImF1dG9jb21taXQiCiAgICAgICAgY2FuIGJlIHNldCBleHBsaWNpdGx5IHNvIHVzaW5nIHRoZQogICAgICAgIDpwYXJhbXJlZjpgLkNvbm5lY3Rpb24uZXhlY3V0aW9uX29wdGlvbnMuYXV0b2NvbW1pdGAgb3B0aW9uOjoKCiAgICAgICAgICAgIHQgPSB0ZXh0KCJFWEVDIG15X3Byb2NlZHVyYWxfdGhpbmcoKSIpLlwKICAgICAgICAgICAgICAgICAgICBleGVjdXRpb25fb3B0aW9ucyhhdXRvY29tbWl0PVRydWUpCgogICAgICAgIE5vdGUgdGhhdCBTUUxBbGNoZW15J3MgdXN1YWwgImF1dG9jb21taXQiIGJlaGF2aW9yIGFwcGxpZXMgdG8KICAgICAgICA6ZnVuYzpgX2V4cHJlc3Npb24udGV4dGAgY29uc3RydWN0cyBpbXBsaWNpdGx5IC0gdGhhdCBpcywKICAgICAgICBzdGF0ZW1lbnRzIHdoaWNoIGJlZ2luCiAgICAgICAgd2l0aCBhIHBocmFzZSBzdWNoIGFzIGBgSU5TRVJUYGAsIGBgVVBEQVRFYGAsIGBgREVMRVRFYGAsCiAgICAgICAgb3IgYSB2YXJpZXR5IG9mIG90aGVyIHBocmFzZXMgc3BlY2lmaWMgdG8gY2VydGFpbiBiYWNrZW5kcywgd2lsbAogICAgICAgIGJlIGVsaWdpYmxlIGZvciBhdXRvY29tbWl0IGlmIG5vIHRyYW5zYWN0aW9uIGlzIGluIHByb2dyZXNzLgoKICAgICAgICA6cGFyYW0gdGV4dDoKICAgICAgICAgIHRoZSB0ZXh0IG9mIHRoZSBTUUwgc3RhdGVtZW50IHRvIGJlIGNyZWF0ZWQuICBVc2UgYGA6PHBhcmFtPmBgCiAgICAgICAgICB0byBzcGVjaWZ5IGJpbmQgcGFyYW1ldGVyczsgdGhleSB3aWxsIGJlIGNvbXBpbGVkIHRvIHRoZWlyCiAgICAgICAgICBlbmdpbmUtc3BlY2lmaWMgZm9ybWF0LgoKICAgICAgICA6cGFyYW0gYXV0b2NvbW1pdDogd2hldGhlciBvciBub3QgdG8gc2V0IHRoZSAiYXV0b2NvbW1pdCIgZXhlY3V0aW9uCiAgICAgICAgICBvcHRpb24gZm9yIHRoaXMgOmNsYXNzOmBfZXhwcmVzc2lvbi5UZXh0Q2xhdXNlYCBvYmplY3QuCgogICAgICAgIDpwYXJhbSBiaW5kOgogICAgICAgICAgYW4gb3B0aW9uYWwgY29ubmVjdGlvbiBvciBlbmdpbmUgdG8gYmUgdXNlZCBmb3IgdGhpcyB0ZXh0IHF1ZXJ5LgoKICAgICAgICA6cGFyYW0gYmluZHBhcmFtczoKICAgICAgICAgIEEgbGlzdCBv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dCA9IHRleHQoIlNFTEVDVCBpZCwgbmFtZSBGUk9NIHVzZXIgV0hFUkUgbmFtZT06bmFtZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICJBTkQgdGltZXN0YW1wPTp0aW1lc3RhbXAiKQoKICAgICAgICB0aGUgOm1ldGg6YF9leHByZXNzaW9uLlRleHRDbGF1c2UuYmluZHBhcmFtc2AKICAgICAgICBtZXRob2QgY2FuIGJlIHVzZWQgdG8gZXN0YWJsaXNoCiAgICAgICAgdGhlIGluaXRpYWwgdmFsdWUgb2YgYGA6bmFtZWBgIGFuZCBgYDp0aW1lc3RhbXBgYCwKICAgICAgICB1c2luZyBzaW1wbGUga2V5d29yZCBhcmd1bWVudHM6OgoKICAgICAgICAgICAgc3RtdCA9IHN0bXQuYmluZHBhcmFtcyhuYW1lPSdqYWNrJywKICAgICAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wPWRhdGV0aW1lLmRhdGV0aW1lKDIwMTIsIDEwLCA4LCAxNSwgMTIsIDUpKQoKICAgICAgICBXaGVyZSBhYm92ZSwgbmV3IDpjbGFzczpgLkJpbmRQYXJhbWV0ZXJgIG9iamVjdHMKICAgICAgICB3aWxsIGJlIGdlbmVyYXRlZCB3aXRoIHRoZSBuYW1lcyBgYG5hbWVgYCBhbmQgYGB0aW1lc3RhbXBgYCwgYW5kCiAgICAgICAgdmFsdWVzIG9mIGBgamFja2BgIGFuZCBgYGRhdGV0aW1lLmRhdGV0aW1lKDIwMTIsIDEwLCA4LCAxNSwgMTIsIDUpYGAsCiAgICAgICAgcmVzcGVjdGl2ZWx5LiAgVGhlIHR5cGVzIHdpbGwgYmUKICAgICAgICBpbmZlcnJlZCBmcm9tIHRoZSB2YWx1ZXMgZ2l2ZW4sIGluIHRoaXMgY2FzZSA6Y2xhc3M6YC5TdHJpbmdgIGFuZAogICAgICAgIDpjbGFzczpgLkRhdGVUaW1lYC4KCiAgICAgICAgV2hlbiBzcGVjaWZpYyB0eXBpbmcgYmVoYXZpb3IgaXMgbmVlZGVkLCB0aGUgcG9zaXRpb25hbCBgYCpiaW5kc2BgCiAgICAgICAgYXJndW1lbnQgY2FuIGJlIHVzZWQgaW4gd2hpY2ggdG8gc3BlY2lmeSA6ZnVuYzpgLmJpbmRwYXJhbWAgY29uc3RydWN0cwogICAgICAgIGRpcmVjdGx5LiAgVGhlc2UgY29uc3RydWN0cyBtdXN0IGluY2x1ZGUgYXQgbGVhc3QgdGhlIGBga2V5YGAKICAgICAgICBhcmd1bWVudCwgdGhlbiBhbiBvcHRpb25hbCB2YWx1ZSBhbmQgdHlwZTo6CgogICAgICAgICAgICBmcm9tIHNxbGFsY2hlbXkgaW1wb3J0IGJpbmRwYXJhbQogICAgICAgICAgICBzdG10ID0gc3RtdC5iaW5kcGFyYW1zKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZHBhcmFtKCduYW1lJywgdmFsdWU9J2phY2snLCB0eXBlXz1TdHJpbmcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZHBhcmFtKCd0aW1lc3RhbXAnLCB0eXBlXz1EYXRlVGltZSkKICAgICAgICAgICAgICAgICAgICAgICAgKQoKICAgICAgICBBYm92ZSwgd2Ugc3BlY2lmaWVkIHRoZSB0eXBlIG9mIDpjbGFzczpgLkRhdGVUaW1lYCBmb3IgdGhlCiAgICAgICAgYGB0aW1lc3RhbXBgYCBiaW5kLCBhbmQgdGhlIHR5cGUgb2YgOmNsYXNzOmAuU3RyaW5nYCBmb3IgdGhlIGBgbmFtZWBgCiAgICAgICAgYmluZC4gIEluIHRoZSBjYXNlIG9mIGBgbmFtZWBgIHdlIGFsc28gc2V0IHRoZSBkZWZhdWx0IHZhbHVlIG9mCiAgICAgICAgYGAiamFjayJgYC4KCiAgICAgICAgQWRkaXRpb25hbCBib3VuZCBwYXJhbWV0ZXJzIGNhbiBiZSBzdXBwbGllZCBhdCBzdGF0ZW1lbnQgZXhlY3V0aW9uCiAgICAgICAgdGltZSwgZS5nLjo6CgogICAgICAgICAgICByZXN1bHQgPSBjb25uZWN0aW9uLmV4ZWN1dGUoc3RtdCwKICAgICAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wPWRhdGV0aW1lLmRhdGV0aW1lKDIwMTIsIDEwLCA4LCAxNSwgMTIsIDUpKQoKICAgICAgICBUaGUgOm1ldGg6YF9leHByZXNzaW9uLlRleHRDbGF1c2UuYmluZHBhcmFtc2AKICAgICAgICBtZXRob2QgY2FuIGJlIGNhbGxlZCByZXBlYXRlZGx5LAogICAgICAgIHdoZXJlIGl0IHdpbGwgcmUtdXNlIGV4aXN0aW5nIDpjbGFzczpgLkJpbmRQYXJhbWV0ZXJgIG9iamVjdHMgdG8gYWRkCiAgICAgICAgbmV3IGluZm9ybWF0aW9uLiAgRm9yIGV4YW1wbGUsIHdlIGNhbiBjYWxsCiAgICAgICAgOm1ldGg6YF9leHByZXNzaW9uLlRleHRDbGF1c2UuYmluZHBhcmFtc2AKICAgICAgICBmaXJzdCB3aXRoIHR5cGluZyBpbmZvcm1hdGlvbiwgYW5kIGEKICAgICAgICBzZWNvbmQgdGltZSB3aXRoIHZhbHVlIGluZm9ybWF0aW9uLCBhbmQgaXQgd2lsbCBiZSBjb21iaW5lZDo6CgogICAgICAgICAgICBzdG10ID0gdGV4dCgiU0VMRUNUIGlkLCBuYW1lIEZST00gdXNlciBXSEVSRSBuYW1lPTpuYW1lICIKICAgICAgICAgICAgICAgICAgICAgICAgIkFORCB0aW1lc3RhbXA9OnRpbWVzdGFtcCIpCiAgICAgICAgICAgIHN0bXQgPSBzdG10LmJpbmRwYXJhbXMoCiAgICAgICAgICAgICAgICBiaW5kcGFyYW0oJ25hbWUnLCB0eXBlXz1TdHJpbmcpLAogICAgICAgICAgICAgICAgYmluZHBhcmFtKCd0aW1lc3RhbXAnLCB0eXBlXz1EYXRlVGltZSkKICAgICAgICAgICAgKQogICAgICAgICAgICBzdG10ID0gc3RtdC5iaW5kcGFyYW1zKAogICAgICAgICAgICAgICAgbmFtZT0namFjaycsCiAgICAgICAgICAgICAgICB0aW1lc3RhbXA9ZGF0ZXRpbWUuZGF0ZXRpbWUoMjAxMiwgMTAsIDgsIDE1LCAxMiwgNSkKICAgICAgICAgICAgKQoKICAgICAgICBUaGUgOm1ldGg6YF9leHByZXNzaW9uLlRleHRDbGF1c2UuYmluZHBhcmFtc2AKICAgICAgICBtZXRob2QgYWxzbyBzdXBwb3J0cyB0aGUgY29uY2VwdCBvZgogICAgICAgICoqdW5pcXVlKiogYm91bmQgcGFyYW1ldGVycy4gIFRoZXNlIGFyZSBwYXJhbWV0ZXJzIHRoYXQgYXJlCiAgICAgICAgInVuaXF1aWZpZWQiIG9uIG5hbWUgYXQgc3RhdGVtZW50IGNvbXBpbGF0aW9uIHRpbWUsIHNvIHRoYXQgIG11bHRpcGxlCiAgICAgICAgOmZ1bmM6YF9leHByZXNzaW9uLnRleHRgCiAgICAgICAgY29uc3RydWN0cyBtYXkgYmUgY29tYmluZWQgdG9nZXRoZXIgd2l0aG91dCB0aGUgbmFtZXMKICAgICAgICBjb25mbGljdGluZy4gIFRvIHVzZSB0aGlzIGZlYXR1cmUsIHNwZWNpZnkgdGhlCiAgICAgICAgOnBhcmFtcmVmOmAuQmluZFBhcmFtZXRlci51bmlxdWVgIGZsYWcgb24gZWFjaCA6ZnVuYzpgLmJpbmRwYXJhbWAKICAgICAgICBvYmplY3Q6OgoKICAgICAgICAgICAgc3RtdDEgPSB0ZXh0KCJzZWxlY3QgaWQgZnJvbSB0YWJsZSB3aGVyZSBuYW1lPTpuYW1lIikuYmluZHBhcmFtcygKICAgICAgICAgICAgICAgIGJpbmRwYXJhbSgibmFtZSIsIHZhbHVlPSduYW1lMScsIHVuaXF1ZT1UcnVlKQogICAgICAgICAgICApCiAgICAgICAgICAgIHN0bXQyID0gdGV4dCgic2VsZWN0IGlkIGZyb20gdGFibGUgd2hlcmUgbmFtZT06bmFtZSIpLmJpbmRwYXJhbXMoCiAgICAgICAgICAgICAgICBiaW5kcGFyYW0oIm5hbWUiLCB2YWx1ZT0nbmFtZTInLCB1bmlxdWU9VHJ1ZSkKICAgICAgICAgICAgKQoKICAgICAgICAgICAgdW5pb24gPSB1bmlvbl9hbGwoCiAgICAgICAgICAgICAgICBzdG10MS5jb2x1bW5zKGNvbHVtbigiaWQiKSksCiAgICAgICAgICAgICAgICBzdG10Mi5jb2x1bW5zKGNvbHVtbigiaWQiKSkKICAgICAgICAgICAgKQoKICAgICAgICBUaGUgYWJvdmUgc3RhdGVtZW50IHdpbGwgcmVuZGVyIGFzOjoKCiAgICAgICAgICAgIHNlbGVjdCBpZCBmcm9tIHRhYmxlIHdoZXJlIG5hbWU9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ICAgICAgICAgICAgbXl0YWJsZS5qb2luKHN0bXQsIG15dGFibGUuYy5uYW1lID09IHN0bXQuYy5uYW1lKQogICAgICAgICAgICAgICAgICAgICkud2hlcmUoc3RtdC5jLmlkID4gNSkKCiAgICAgICAgQWJvdmUsIHdlIHBhc3MgYSBzZXJpZXMgb2YgOmZ1bmM6YF9leHByZXNzaW9uLmNvbHVtbmAgZWxlbWVudHMgdG8gdGhlCiAgICAgICAgOm1ldGg6YF9leHByZXNzaW9uLlRleHRDbGF1c2UuY29sdW1uc2AgbWV0aG9kIHBvc2l0aW9uYWxseS4gIFRoZXNlCiAgICAgICAgOmZ1bmM6YF9leHByZXNzaW9uLmNvbHVtbmAKICAgICAgICBlbGVtZW50cyBub3cgYmVjb21lIGZpcnN0IGNsYXNzIGVsZW1lbnRzIHVwb24gdGhlIDphdHRyOmAuVGV4dEFzRnJvbS5jYAogICAgICAgIGNvbHVtbiBjb2xsZWN0aW9uLCBqdXN0IGxpa2UgYW55IG90aGVyIHNlbGVjdGFibGUuCgogICAgICAgIFRoZSBjb2x1bW4gZXhwcmVzc2lvbnMgd2UgcGFzcyB0bwogICAgICAgIDptZXRoOmBfZXhwcmVzc2lvbi5UZXh0Q2xhdXNlLmNvbHVtbnNgIG1heQogICAgICAgIGFsc28gYmUgdHlwZWQ7IHdoZW4gd2UgZG8gc28sIHRoZXNlIDpjbGFzczpgLlR5cGVFbmdpbmVgIG9iamVjdHMgYmVjb21lCiAgICAgICAgdGhlIGVmZmVjdGl2ZSByZXR1cm4gdHlwZSBvZiB0aGUgY29sdW1uLCBzbyB0aGF0IFNRTEFsY2hlbXkncwogICAgICAgIHJlc3VsdC1zZXQtcHJvY2Vzc2luZyBzeXN0ZW1zIG1heSBiZSB1c2VkIG9uIHRoZSByZXR1cm4gdmFsdWVzLgogICAgICAgIFRoaXMgaXMgb2Z0ZW4gbmVlZGVkIGZvciB0eXBlcyBzdWNoIGFzIGRhdGUgb3IgYm9vbGVhbiB0eXBlcywgYXMgd2VsbAogICAgICAgIGFzIGZvciB1bmljb2RlIHByb2Nlc3Npbmcgb24gc29tZSBkaWFsZWN0IGNvbmZpZ3VyYXRpb25zOjoKCiAgICAgICAgICAgIHN0bXQgPSB0ZXh0KCJTRUxFQ1QgaWQsIG5hbWUsIHRpbWVzdGFtcCBGUk9NIHNvbWVfdGFibGUiKQogICAgICAgICAgICBzdG10ID0gc3RtdC5jb2x1bW5zKAogICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4oJ2lkJywgSW50ZWdlciksCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbignbmFtZScsIFVuaWNvZGUpLAogICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4oJ3RpbWVzdGFtcCcsIERhdGVUaW1lKQogICAgICAgICAgICAgICAgICAgICkKCiAgICAgICAgICAgIGZvciBpZCwgbmFtZSwgdGltZXN0YW1wIGluIGNvbm5lY3Rpb24uZXhlY3V0ZShzdG10KToKICAgICAgICAgICAgICAgIHByaW50KGlkLCBuYW1lLCB0aW1lc3RhbXApCgogICAgICAgIEFzIGEgc2hvcnRjdXQgdG8gdGhlIGFib3ZlIHN5bnRheCwga2V5d29yZCBhcmd1bWVudHMgcmVmZXJyaW5nIHRvCiAgICAgICAgdHlwZXMgYWxvbmUgbWF5IGJlIHVzZWQsIGlmIG9ubHkgdHlwZSBjb252ZXJzaW9uIGlzIG5lZWRlZDo6CgogICAgICAgICAgICBzdG10ID0gdGV4dCgiU0VMRUNUIGlkLCBuYW1lLCB0aW1lc3RhbXAgRlJPTSBzb21lX3RhYmxlIikKICAgICAgICAgICAgc3RtdCA9IHN0bXQuY29sdW1ucygKICAgICAgICAgICAgICAgICAgICAgICAgaWQ9SW50ZWdlciwKICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1Vbmljb2RlLAogICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA9RGF0ZVRpbWUKICAgICAgICAgICAgICAgICAgICApCgogICAgICAgICAgICBmb3IgaWQsIG5hbWUsIHRpbWVzdGFtcCBpbiBjb25uZWN0aW9uLmV4ZWN1dGUoc3RtdCk6CiAgICAgICAgICAgICAgICBwcmludChpZCwgbmFtZSwgdGltZXN0YW1wKQoKICAgICAgICBUaGUgcG9zaXRpb25hbCBmb3JtIG9mIDptZXRoOmBfZXhwcmVzc2lvbi5UZXh0Q2xhdXNlLmNvbHVtbnNgCiAgICAgICAgYWxzbyBwcm92aWRlcyB0aGUKICAgICAgICB1bmlxdWUgZmVhdHVyZSBvZiAqKnBvc2l0aW9uYWwgY29sdW1uIHRhcmdldGluZyoqLCB3aGljaCBpcwogICAgICAgIHBhcnRpY3VsYXJseSB1c2VmdWwgd2hlbiB1c2luZyB0aGUgT1JNIHdpdGggY29tcGxleCB0ZXh0dWFsIHF1ZXJpZXMuIElmCiAgICAgICAgd2Ugc3BlY2lmeSB0aGUgY29sdW1ucyBmcm9tIG91ciBtb2RlbCB0bwogICAgICAgIDptZXRoOmBfZXhwcmVzc2lvbi5UZXh0Q2xhdXNlLmNvbHVtbnNgLAogICAgICAgIHRoZSByZXN1bHQgc2V0IHdpbGwgbWF0Y2ggdG8gdGhvc2UgY29sdW1ucyBwb3NpdGlvbmFsbHksIG1lYW5pbmcgdGhlCiAgICAgICAgbmFtZSBvciBvcmlnaW4gb2YgdGhlIGNvbHVtbiBpbiB0aGUgdGV4dHVhbCBTUUwgZG9lc24ndCBtYXR0ZXI6OgoKICAgICAgICAgICAgc3RtdCA9IHRleHQoIlNFTEVDVCB1c2Vycy5pZCwgYWRkcmVzc2VzLmlkLCB1c2Vycy5pZCwgIgogICAgICAgICAgICAgICAgICJ1c2Vycy5uYW1lLCBhZGRyZXNzZXMuZW1haWxfYWRkcmVzcyBBUyBlbWFpbCAiCiAgICAgICAgICAgICAgICAgIkZST00gdXNlcnMgSk9JTiBhZGRyZXNzZXMgT04gdXNlcnMuaWQ9YWRkcmVzc2VzLnVzZXJfaWQgIgogICAgICAgICAgICAgICAgICJXSEVSRSB1c2Vycy5pZCA9IDEiKS5jb2x1bW5zKAogICAgICAgICAgICAgICAgICAgIFVzZXIuaWQsCiAgICAgICAgICAgICAgICAgICAgQWRkcmVzcy5pZCwKICAgICAgICAgICAgICAgICAgICBBZGRyZXNzLnVzZXJfaWQsCiAgICAgICAgICAgICAgICAgICAgVXNlci5uYW1lLAogICAgICAgICAgICAgICAgICAgIEFkZHJlc3MuZW1haWxfYWRkcmVzcwogICAgICAgICAgICAgICAgICkKCiAgICAgICAgICAgIHF1ZXJ5ID0gc2Vzc2lvbi5xdWVyeShVc2VyKS5mcm9tX3N0YXRlbWVudChzdG10KS5vcHRpb25zKAogICAgICAgICAgICAgICAgY29udGFpbnNfZWFnZXIoVXNlci5hZGRyZXNzZXMpKQoKICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAxLjEgdGhlIDptZXRoOmBfZXhwcmVzc2lvbi5UZXh0Q2xhdXNlLmNvbHVtbnNgCiAgICAgICAgICAgbWV0aG9kIG5vdwogICAgICAgICAgIG9mZmVycyBwb3NpdGlvbmFsIGNvbHVtbiB0YXJnZXRpbmcgaW4gdGhlIHJlc3VsdCBzZXQgd2hlbgogICAgICAgICAgIHRoZSBjb2x1bW4gZXhwcmVzc2lvbnMgYXJlIHBhc3NlZCBwdXJlbHkgcG9zaXRpb25hbGx5LgoKICAgICAgICBUaGUgOm1ldGg6YF9leHByZXNzaW9uLlRleHRDbGF1c2UuY29sdW1uc2AgbWV0aG9kIHByb3ZpZGVzIGEgZGlyZWN0CiAgICAgICAgcm91dGUgdG8gY2FsbGluZyA6bWV0aDpgX2V4cHJlc3Npb24uRnJvbUNsYXVzZS5hbGlhc2AgYXMgd2VsbCBhcwogICAgICAgIDptZXRoOmBfZXhwcmVzc2lvbi5TZWxlY3RCYXNlLmN0ZWAKICAgICAgICBhZ2FpbnN0IGEgdGV4dHVhbCBTRUxFQ1Qgc3RhdGVtZW50OjoKCiAgICAgICAgICAgIHN0bXQgPSBzdG10LmNvbHVtbnMoaWQ9SW50ZWdlciwgbmFtZT1TdHJpbmcpLmN0ZSgnc3QnKQoKICAgICAgICAgICAgc3RtdCA9IHNlbGVjdChbc29tZXRhYmxlXSkud2hlcmUoc29tZXRhYmxlLmMuaWQgPT0gc3RtdC5jLmlkKQoKICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAwLjkuMCA6ZnVuYzpgX2V4cHJlc3Npb24udGV4dGAKICAgICAgICAgICBjYW4gbm93IGJlIGNvbnZlcnRlZCBpbnRvIGEKICAgICAgICAgICBmdWxseSBmZWF0dXJlZCAic2VsZWN0YWJsZSIgY29uc3RydWN0IHVzaW5nIHRo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dWN0LgoKICAgICAgICBFLmcuOjoKCiAgICAgICAgICAgID4+PiBmcm9tIHNxbGFsY2hlbXkgaW1wb3J0IHRydWUKICAgICAgICAgICAgPj4+IHByaW50KHNlbGVjdChbdC5jLnhdKS53aGVyZSh0cnVlKCkpKQogICAgICAgICAgICBTRUxFQ1QgeCBGUk9NIHQgV0hFUkUgdHJ1ZQoKICAgICAgICBBIGJhY2tlbmQgd2hpY2ggZG9lcyBub3Qgc3VwcG9ydCB0cnVlL2ZhbHNlIGNvbnN0YW50cyB3aWxsIHJlbmRlciBhcwogICAgICAgIGFuIGV4cHJlc3Npb24gYWdhaW5zdCAxIG9yIDA6OgoKICAgICAgICAgICAgPj4+IHByaW50KHNlbGVjdChbdC5jLnhdKS53aGVyZSh0cnVlKCkpKQogICAgICAgICAgICBTRUxFQ1QgeCBGUk9NIHQgV0hFUkUgMSA9IDEKCiAgICAgICAgVGhlIDpmdW5jOmAudHJ1ZWAgYW5kIDpmdW5jOmAuZmFsc2VgIGNvbnN0YW50cyBhbHNvIGZlYXR1cmUKICAgICAgICAic2hvcnQgY2lyY3VpdCIgb3BlcmF0aW9uIHdpdGhpbiBhbiA6ZnVuYzpgLmFuZF9gIG9yIDpmdW5jOmAub3JfYAogICAgICAgIGNvbmp1bmN0aW9uOjoKCiAgICAgICAgICAgID4+PiBwcmludChzZWxlY3QoW3QuYy54XSkud2hlcmUob3JfKHQuYy54ID4gNSwgdHJ1ZSgpKSkpCiAgICAgICAgICAgIFNFTEVDVCB4IEZST00gdCBXSEVSRSB0cnVlCgogICAgICAgICAgICA+Pj4gcHJpbnQoc2VsZWN0KFt0LmMueF0pLndoZXJlKGFuZF8odC5jLnggPiA1LCBmYWxzZSgpKSkpCiAgICAgICAgICAgIFNFTEVDVCB4IEZST00gdCBXSEVSRSBmYWxzZQoKICAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDAuOSA6ZnVuYzpgLnRydWVgIGFuZCA6ZnVuYzpgLmZhbHNlYCBmZWF0dXJlCiAgICAgICAgICAgYmV0dGVyIGludGVncmF0ZWQgYmVoYXZpb3Igd2l0aGluIGNvbmp1bmN0aW9ucyBhbmQgb24gZGlhbGVj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bmRfKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJzX3RhYmxlLmMubmFtZSA9PSAnd2VuZHknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJzX3RhYmxlLmMuZW5yb2xsZWQgPT0gVHJ1ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICApCgogICAgICAgIFRoZSA6ZnVuYzpgLmFuZF9gIGNvbmp1bmN0aW9uIGlzIGFsc28gYXZhaWxhYmxlIHVzaW5nIHRoZQogICAgICAgIFB5dGhvbiBgYCZgYCBvcGVyYXRvciAodGhvdWdoIG5vdGUgdGhhdCBjb21wb3VuZCBleHByZXNzaW9ucwogICAgICAgIG5lZWQgdG8gYmUgcGFyZW50aGVzaXplZCBpbiBvcmRlciB0byBmdW5jdGlvbiB3aXRoIFB5dGhvbgogICAgICAgIG9wZXJhdG9yIHByZWNlZGVuY2UgYmVoYXZpb3IpOjoKCiAgICAgICAgICAgIHN0bXQgPSBzZWxlY3QoW3VzZXJzX3RhYmxlXSkud2hlcmUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodXNlcnNfdGFibGUuYy5uYW1lID09ICd3ZW5keScpICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1c2Vyc190YWJsZS5jLmVucm9sbGVkID09IFRydWUpCiAgICAgICAgICAgICAgICAgICAgICAgICkKCiAgICAgICAgVGhlIDpmdW5jOmAuYW5kX2Agb3BlcmF0aW9uIGlzIGFsc28gaW1wbGljaXQgaW4gc29tZSBjYXNlczsKICAgICAgICB0aGUgOm1ldGg6YF9leHByZXNzaW9uLlNlbGVjdC53aGVyZWAKICAgICAgICBtZXRob2QgZm9yIGV4YW1wbGUgY2FuIGJlIGludm9rZWQgbXVsdGlwbGUKICAgICAgICB0aW1lcyBhZ2FpbnN0IGEgc3RhdGVtZW50LCB3aGljaCB3aWxsIGhhdmUgdGhlIGVmZmVjdCBvZiBlYWNoCiAgICAgICAgY2xhdXNlIGJlaW5nIGNvbWJpbmVkIHVzaW5nIDpmdW5jOmAuYW5kX2A6OgoKICAgICAgICAgICAgc3RtdCA9IHNlbGVjdChbdXNlcnNfdGFibGVdKS5cCiAgICAgICAgICAgICAgICAgICAgd2hlcmUodXNlcnNfdGFibGUuYy5uYW1lID09ICd3ZW5keScpLlwKICAgICAgICAgICAgICAgICAgICB3aGVyZSh1c2Vyc190YWJsZS5jLmVucm9sbGVkID09IFRydWUpCgogICAgICAgIC4uIHNlZWFsc286OgoKICAgICAgICAgICAgOmZ1bmM6YC5vcl9gCgogICAgICAgICkFcvYBAAByBQAAAHKnAAAAcrQBAAByrQEAAKkCcqkBAAByzQEAAHMCAAAAICByGwAAAHKnAAAAehZCb29sZWFuQ2xhdXNlTGlzdC5hbmRfTggAAHMlAAAAgADwUAEAEB6Ic4x+nWmcbq1ltVbQD0a4Z9APRtAPRtAPRtAIRnIcAAAAYwEAAAAAAAAAAAAAAAUAAAAHAAAA80oAAACXAAIAfABqAAAAAAAAAAAAdAIAAAAAAAAAAAAAagIAAAAAAAAAAHQGAAAAAAAAAAAAAHQIAAAAAAAAAAAAAGcDfAGiAVIAjgBTACkBYWQDAABQcm9kdWNlIGEgY29uanVuY3Rpb24gb2YgZXhwcmVzc2lvbnMgam9pbmVkIGJ5IGBgT1JgYC4KCiAgICAgICAgRS5nLjo6CgogICAgICAgICAgICBmcm9tIHNxbGFsY2hlbXkgaW1wb3J0IG9yXwoKICAgICAgICAgICAgc3RtdCA9IHNlbGVjdChbdXNlcnNfdGFibGVdKS53aGVyZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yXygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vyc190YWJsZS5jLm5hbWUgPT0gJ3dlbmR5JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vyc190YWJsZS5jLm5hbWUgPT0gJ2phY2snCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgICkKCiAgICAgICAgVGhlIDpmdW5jOmAub3JfYCBjb25qdW5jdGlvbiBpcyBhbHNvIGF2YWlsYWJsZSB1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YXQKICAgICAgICBhY3RzIHNvbWV3aGF0IGFuYWxvZ291c2x5IHRvIGFuICJpZi90aGVuIiBjb25zdHJ1Y3QgaW4gb3RoZXIKICAgICAgICBsYW5ndWFnZXMuICBJdCByZXR1cm5zIGFuIGluc3RhbmNlIG9mIDpjbGFzczpgLkNhc2VgLgoKICAgICAgICA6ZnVuYzpgLmNhc2VgIGluIGl0cyB1c3VhbCBmb3JtIGlzIHBhc3NlZCBhIGxpc3Qgb2YgIndoZW4iCiAgICAgICAgY29uc3RydWN0cywgdGhhdCBpcywgYSBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHJlc3VsdHMgYXMgdHVwbGVzOjoKCiAgICAgICAgICAgIGZyb20gc3FsYWxjaGVteSBpbXBvcnQgY2FzZQoKICAgICAgICAgICAgc3RtdCA9IHNlbGVjdChbdXNlcnNfdGFibGVdKS5cCiAgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1c2Vyc190YWJsZS5jLm5hbWUgPT0gJ3dlbmR5JywgJ1cnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVzZXJzX3RhYmxlLmMubmFtZSA9PSAnamFjaycsICdKJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VfPSdFJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICApCgogICAgICAgIFRoZSBhYm92ZSBzdGF0ZW1lbnQgd2lsbCBwcm9kdWNlIFNRTCByZXNlbWJsaW5nOjoKCiAgICAgICAgICAgIFNFTEVDVCBpZCwgbmFtZSBGUk9NIHVzZXIKICAgICAgICAgICAgV0hFUkUgQ0FTRQogICAgICAgICAgICAgICAgV0hFTiAobmFtZSA9IDpuYW1lXzEpIFRIRU4gOnBhcmFtXzEKICAgICAgICAgICAgICAgIFdIRU4gKG5hbWUgPSA6bmFtZV8yKSBUSEVOIDpwYXJhbV8yCiAgICAgICAgICAgICAgICBFTFNFIDpwYXJhbV8zCiAgICAgICAgICAgIEVORAoKICAgICAgICBXaGVuIHNpbXBsZSBlcXVhbGl0eSBleHByZXNzaW9ucyBvZiBzZXZlcmFsIHZhbHVlcyBhZ2FpbnN0IGEgc2luZ2xlCiAgICAgICAgcGFyZW50IGNvbHVtbiBhcmUgbmVlZGVkLCA6ZnVuYzpgLmNhc2VgIGFsc28gaGFzIGEgInNob3J0aGFuZCIgZm9ybWF0CiAgICAgICAgdXNlZCB2aWEgdGhlCiAgICAgICAgOnBhcmFtcmVmOmAuY2FzZS52YWx1ZWAgcGFyYW1ldGVyLCB3aGljaCBpcyBwYXNzZWQgYSBjb2x1bW4KICAgICAgICBleHByZXNzaW9uIHRvIGJlIGNvbXBhcmVkLiAgSW4gdGhpcyBmb3JtLCB0aGUgOnBhcmFtcmVmOmAuY2FzZS53aGVuc2AKICAgICAgICBwYXJhbWV0ZXIgaXMgcGFzc2VkIGFzIGEgZGljdGlvbmFyeSBjb250YWluaW5nIGV4cHJlc3Npb25zIHRvIGJlCiAgICAgICAgY29tcGFyZWQgYWdhaW5zdCBrZXllZCB0byByZXN1bHQgZXhwcmVzc2lvbnMuICBUaGUgc3RhdGVtZW50IGJlbG93IGlzCiAgICAgICAgZXF1aXZhbGVudCB0byB0aGUgcHJlY2VkaW5nIHN0YXRlbWVudDo6CgogICAgICAgICAgICBzdG10ID0gc2VsZWN0KFt1c2Vyc190YWJsZV0pLlwKICAgICAgICAgICAgICAgICAgICAgICAgd2hlcmUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsid2VuZHkiOiAiVyIsICJqYWNrIjogIkoifSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT11c2Vyc190YWJsZS5jLm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZV89J0UnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgICkKCiAgICAgICAgVGhlIHZhbHVlcyB3aGljaCBhcmUgYWNjZXB0ZWQgYXMgcmVzdWx0IHZhbHVlcyBpbgogICAgICAgIDpwYXJhbXJlZjpgLmNhc2Uud2hlbnNgIGFzIHdlbGwgYXMgd2l0aCA6cGFyYW1yZWY6YC5jYXNlLmVsc2VfYCBhcmUKICAgICAgICBjb2VyY2VkIGZyb20gUHl0aG9uIGxpdGVyYWxzIGludG8gOmZ1bmM6YC5iaW5kcGFyYW1gIGNvbnN0cnVjdHMuCiAgICAgICAgU1FMIGV4cHJlc3Npb25zLCBlLmcuIDpjbGFzczpgX2V4cHJlc3Npb24uQ29sdW1uRWxlbWVudGAgY29uc3RydWN0cywKICAgICAgICBhcmUgYWNjZXB0ZWQKICAgICAgICBhcyB3ZWxsLiAgVG8gY29lcmNlIGEgbGl0ZXJhbCBzdHJpbmcgZXhwcmVzc2lvbiBpbnRvIGEgY29uc3RhbnQKICAgICAgICBleHByZXNzaW9uIHJlbmRlcmVkIGlubGluZSwgdXNlIHRoZSA6ZnVuYzpgX2V4cHJlc3Npb24ubGl0ZXJhbF9jb2x1bW5gCiAgICAgICAgY29uc3RydWN0LAogICAgICAgIGFzIGluOjoKCiAgICAgICAgICAgIGZyb20gc3FsYWxjaGVteSBpbXBvcnQgY2FzZSwgbGl0ZXJhbF9jb2x1bW4KCiAgICAgICAgICAgIGNhc2UoCiAgICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgICAgICAgICBvcmRlcmxpbmUuYy5xdHkgPiAxMDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGxpdGVyYWxfY29sdW1uKCInZ3JlYXRlcnRoYW4xMDAnIikKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgICgKICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXJsaW5lLmMucXR5ID4gMTAsCiAgICAgICAgICAgICAgICAgICAgICAgIGxpdGVyYWxfY29sdW1uKCInZ3JlYXRlcnRoYW4xMCciKQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBlbHNlXz1saXRlcmFsX2NvbHVtbigiJ2xlc3N0aGFuMTAnIikKICAgICAgICAgICAgKQoKICAgICAgICBUaGUgYWJvdmUgd2lsbCByZW5kZXIgdGhlIGdpdmVuIGNvbnN0YW50cyB3aXRob3V0IHVzaW5nIGJvdW5kCiAgICAgICAgcGFyYW1ldGVycyBmb3IgdGhlIHJlc3VsdCB2YWx1ZXMgKGJ1dCBzdGlsbCBmb3IgdGhlIGNvbXBhcmlzb24KICAgICAgICB2YWx1ZXMpLCBhcyBpbjo6CgogICAgICAgICAgICBDQVNFCiAgICAgICAgICAgICAgICBXSEVOIChvcmRlcmxpbmUucXR5ID4gOnF0eV8xKSBUSEVOICdncmVhdGVydGhhbjEwMCcKICAgICAgICAgICAgICAgIFdIRU4gKG9yZGVybGluZS5xdHkgPiA6cXR5XzIpIFRIRU4gJ2dyZWF0ZXJ0aGFuMTAnCiAgICAgICAgICAgICAgICBFTFNFICdsZXNzdGhhbjEwJwogICAgICAgICAgICBFTkQKCiAgICAgICAgOnBhcmFtIHdoZW5zOiBUaGUgY3JpdGVyaWEgdG8gYmUgY29tcGFyZWQgYWdhaW5zdCwKICAgICAgICAgOnBhcmFtcmVmOmAuY2FzZS53aGVuc2AgYWNjZXB0cyB0d28gZGlmZmVyZW50IGZvcm1zLCBiYXNlZCBvbgogICAgICAgICB3aGV0aGVyIG9yIG5vdCA6cGFyYW1yZWY6YC5jYXNlLnZhbHVlYCBpcyB1c2VkLgoKICAgICAgICAgSW4gdGhlIGZpcnN0IGZvcm0sIGl0IGFjY2VwdHMgYSBsaXN0IG9mIDItdHVwbGVzOyBlYWNoIDItdHVwbGUKICAgICAgICAgY29uc2lzdHMgb2YgYGAoPHNxbCBleHByZXNzaW9uPiwgPHZhbHVlPilgYCwgd2hlcmUgdGhlIFNRTAogICAgICAgICBleHByZXNzaW9uIGlzIGEgYm9vbGVhbiBleHByZXNzaW9uIGFuZCAidmFsdWUiIGlzIGEgcmVzdWx0aW5nIHZhbHVlLAogICAgICAgICBlLmcuOjoKCiAgICAgICAgICAgIGNhc2UoWwogICAgICAgICAgICAgICAgKHVzZXJzX3RhYmxlLmMubmFtZSA9PSAnd2VuZHknLCAnVycpLAogICAgICAgICAgICAgICAgKHVzZXJzX3RhYmxlLmMubmFtZSA9PSAnamFjaycsICdKJykKICAgICAgICAgICAgXSkKCiAgICAgICAgIEluIHRoZSBzZWNvbmQgZm9ybSwgaXQgYWNjZXB0cyBhIFB5dGhvbiBkaWN0aW9uYXJ5IG9mIGNvbXBhcmlzb24KICAgICAgICAgdmFsdWVzIG1hcHBlZCB0byBhIHJlc3VsdGluZyB2YWx1ZTsgdGhpcyBmb3JtIHJlcXVpcmVzCiAgICAgICAgIDpwYXJhbXJlZjpgLmNhc2UudmFsdWVgIHRvIGJlIHByZXNlbnQsIGFuZCB2YWx1ZXMgd2lsbCBiZSBjb21wYXJlZAogICAgICAgICB1c2luZyB0aGUgYGA9PWBgIG9wZXJhdG9yLCBlLmcuOjoKCiAgICAgICAgICAgIGNhc2UoCiAgICAgICAgICAgICAgICB7IndlbmR5IjogIlciLCAiamFjayI6ICJKIn0sCiAgICAgICAgICAgICAgICB2YWx1ZT11c2Vyc190YWJsZS5jLm5hbWUKICAgICAgICAgICAgKQoKICAgICAgICA6cGFyYW0gdmFsdWU6IEFuIG9wdGlvbmFsIFNRTCBleHByZXNzaW9uIHdoaWNoIHdpbGwgYmUgdXNlZCBhcyBhCiAgICAgICAgICBmaXhlZCAiY29tcGFyaXNvbiBwb2ludCIgZm9yIGNhbmRpZGF0ZSB2YWx1ZXMgd2l0aGluIGEgZGljdGlvbmFyeQogICAgICAgICAgcGFzc2VkIHRvIDpwYXJhbXJlZjpgLmNhc2Uud2hlbnNgLgoKICAgICAgICA6cGFyYW0gZWxzZVxfOiBBbiBvcHRpb25hbCBTUUwgZXhwcmVzc2lvbiB3aGljaCB3aWxsIGJlIHRoZSBldmFsdWF0ZWQKICAgICAgICAgIHJlc3VsdCBvZiB0aGUgYGBDQVNFYGAgY29uc3RydWN0IGlmIGFsbCBleHByZXNzaW9ucyB3aXRoaW4KICAgICAgICAgIDpwYXJhbXJl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LmMudW5pdF9wcmljZSwgTnVtZXJpYygxMCwgNCkpCiAgICAgICAgICAgICAgICAgICAgXSkKCiAgICAgICAgVGhlIGFib3ZlIHN0YXRlbWVudCB3aWxsIHByb2R1Y2UgU1FMIHJlc2VtYmxpbmc6OgoKICAgICAgICAgICAgU0VMRUNUIENBU1QodW5pdF9wcmljZSBBUyBOVU1FUklDKDEwLCA0KSkgRlJPTSBwcm9kdWN0CgogICAgICAgIFRoZSA6ZnVuYzpgLmNhc3RgIGZ1bmN0aW9uIHBlcmZvcm1zIHR3byBkaXN0aW5jdCBmdW5jdGlvbnMgd2hlbgogICAgICAgIHVzZWQuICBUaGUgZmlyc3QgaXMgdGhhdCBpdCByZW5kZXJzIHRoZSBgYENBU1RgYCBleHByZXNzaW9uIHdpdGhpbgogICAgICAgIHRoZSByZXN1bHRpbmcgU1FMIHN0cmluZy4gIFRoZSBzZWNvbmQgaXMgdGhhdCBpdCBhc3NvY2lhdGVzIHRoZSBnaXZlbgogICAgICAgIHR5cGUgKGUuZy4gOmNsYXNzOmAuVHlwZUVuZ2luZWAgY2xhc3Mgb3IgaW5zdGFuY2UpIHdpdGggdGhlIGNvbHVtbgogICAgICAgIGV4cHJlc3Npb24gb24gdGhlIFB5dGhvbiBzaWRlLCB3aGljaCBtZWFucyB0aGUgZXhwcmVzc2lvbiB3aWxsIHRha2UKICAgICAgICBvbiB0aGUgZXhwcmVzc2lvbiBvcGVyYXRvciBiZWhhdmlvciBhc3NvY2lhdGVkIHdpdGggdGhhdCB0eXBlLAogICAgICAgIGFzIHdlbGwgYXMgdGhlIGJvdW5kLXZhbHVlIGhhbmRsaW5nIGFuZCByZXN1bHQtcm93LWhhbmRsaW5nIGJlaGF2aW9yCiAgICAgICAgb2YgdGhlIHR5cGUuCgogICAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMC45LjAgOmZ1bmM6YC5jYXN0YCBub3cgYXBwbGllcyB0aGUgZ2l2ZW4gdHlwZQogICAgICAgICAgIHRvIHRoZSBleHByZXNzaW9uIHN1Y2ggdGhhdCBpdCB0YWtlcyBlZmZlY3Qgb24gdGhlIGJvdW5kLXZhbHVlLAogICAgICAgICAgIGUuZy4gdGhlIFB5dGhvbi10by1kYXRhYmFzZSBkaXJlY3Rpb24sIGluIGFkZGl0aW9uIHRvIHRoZQogICAgICAgICAgIHJlc3VsdCBoYW5kbGluZywgZS5nLiBkYXRhYmFzZS10by1QeXRob24sIGRpcmVjdGlvbi4KCiAgICAgICAgQW4gYWx0ZXJuYXRpdmUgdG8gOmZ1bmM6YC5jYXN0YCBpcyB0aGUgOmZ1bmM6YC50eXBlX2NvZXJjZWAgZnVuY3Rpb24uCiAgICAgICAgVGhpcyBmdW5jdGlvbiBwZXJmb3JtcyB0aGUgc2Vjb25kIHRhc2sgb2YgYXNzb2NpYXRpbmcgYW4gZXhwcmVzc2lvbgogICAgICAgIHdpdGggYSBzcGVjaWZpYyB0eXBlLCBidXQgZG9lcyBub3QgcmVuZGVyIHRoZSBgYENBU1RgYCBleHByZXNzaW9uCiAgICAgICAgaW4gU1FMLgoKICAgICAgICA6cGFyYW0gZXhwcmVzc2lvbjogQSBTUUwgZXhwcmVzc2lvbiwgc3VjaCBhcyBhCiAgICAgICAgIDpjbGFzczpgX2V4cHJlc3Npb24uQ29sdW1uRWxlbWVudGAKICAgICAgICAgZXhwcmVzc2lvbiBvciBhIFB5dGhvbiBzdHJpbmcgd2hpY2ggd2lsbCBiZSBjb2VyY2VkIGludG8gYSBib3VuZAogICAgICAgICBsaXRlcmFsIHZhbHVlLgoKICAgICAgICA6cGFyYW0gdHlwZVxfOiBBIDpjbGFzczpgLlR5cGVFbmdpbmVgIGNsYXNzIG9yIGluc3RhbmNlIGluZGljYXRpbmcKICAgICAgICAgdGhlIHR5cGUgdG8gd2hpY2ggdGhlIGBgQ0FTVGBgIHNob3VsZCBhcHBseS4KCiAgICAgICAgLi4gc2VlYWxzbzo6CgogICAgICAgICAgICA6cmVmOmBjb3JldHV0b3JpYWxfY2FzdHNgCgogICAgICAgICAgICA6ZnVuYzpgLnR5cGVfY29lcmNlYCAtIGFuIGFsdGVybmF0aXZlIHRvIENBU1QgdGhhdCBjb2VyY2VzIHRoZSB0eXBlCiAgICAgICAgICAgIG9uIHRoZSBQeXRob24gc2lkZSBvbmx5LCB3aGljaCBpcyBvZnRlbiBzdWZmaWNpZW50IHRvIGdlbmVyYXRl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bSBzcWxhbGNoZW15IGltcG9ydCB0eXBlX2NvZXJjZQoKICAgICAgICAgICAgc3RtdCA9IHNlbGVjdChbdHlwZV9jb2VyY2UobG9nX3RhYmxlLmRhdGVfc3RyaW5nLCBTdHJpbmdEYXRlVGltZSgpKV0pCgogICAgICAgIFRoZSBhYm92ZSBjb25zdHJ1Y3Qgd2lsbCBwcm9kdWNlIGEgOmNsYXNzOmAuVHlwZUNvZXJjZWAgb2JqZWN0LCB3aGljaAogICAgICAgIGRvZXMgbm90IG1vZGlmeSB0aGUgcmVuZGVyaW5nIGluIGFueSB3YXkgb24gdGhlIFNRTCBzaWRlLCB3aXRoIHRoZQogICAgICAgIHBvc3NpYmxlIGV4Y2VwdGlvbiBvZiBhIGdlbmVyYXRlZCBsYWJlbCBpZiB1c2VkIGluIGEgY29sdW1ucyBjbGF1c2UKICAgICAgICBjb250ZXh0OjoKCiAgICAgICAgICAgIFNFTEVDVCBkYXRlX3N0cmluZyBBUyBhbm9uXzEgRlJPTSBsb2cKCiAgICAgICAgV2hlbiByZXN1bHQgcm93cyBhcmUgZmV0Y2hlZCwgdGhlIGBgU3RyaW5nRGF0ZVRpbWVgYCB0eXBlIHByb2Nlc3NvcgogICAgICAgIHdpbGwgYmUgYXBwbGllZCB0byByZXN1bHQgcm93cyBvbiBiZWhhbGYgb2YgdGhlIGBgZGF0ZV9zdHJpbmdgYCBjb2x1bW4uCgogICAgICAgIC4uIG5vdGU6OiB0aGUgOmZ1bmM6YC50eXBlX2NvZXJjZWAgY29uc3RydWN0IGRvZXMgbm90IHJlbmRlciBhbnkKICAgICAgICAgICBTUUwgc3ludGF4IG9mIGl0cyBvd24sIGluY2x1ZGluZyB0aGF0IGl0IGRvZXMgbm90IGltcGx5CiAgICAgICAgICAgcGFyZW50aGVzaXphdGlvbi4gICBQbGVhc2UgdXNlIDptZXRoOmAuVHlwZUNvZXJjZS5zZWxmX2dyb3VwYAogICAgICAgICAgIGlmIGV4cGxpY2l0IHBhcmVudGhlc2l6YXRpb24gaXMgcmVxdWlyZWQuCgogICAgICAgIEluIG9yZGVyIHRvIHByb3ZpZGUgYSBuYW1lZCBsYWJlbCBmb3IgdGhlIGV4cHJlc3Npb24sIHVzZQogICAgICAgIDptZXRoOmBfZXhwcmVzc2lvbi5Db2x1bW5FbGVtZW50LmxhYmVsYDo6CgogICAgICAgICAgICBzdG10ID0gc2VsZWN0KFsKICAgICAgICAgICAgICAgIHR5cGVfY29lcmNlKGxvZ190YWJsZS5kYXRlX3N0cmluZywgU3RyaW5nRGF0ZVRpbWUoKSkubGFiZWwoJ2RhdGUnKQogICAgICAgICAgICBdKQoKCiAgICAgICAgQSB0eXBlIHRoYXQgZmVhdHVyZXMgYm91bmQtdmFsdWUgaGFuZGxpbmcgd2lsbCBhbHNvIGhhdmUgdGhhdCBiZWhhdmlvcgogICAgICAgIHRha2UgZWZmZWN0IHdoZW4gbGl0ZXJhbCB2YWx1ZXMgb3IgOmZ1bmM6YC5iaW5kcGFyYW1gIGNvbnN0cnVjdHMgYXJlCiAgICAgICAgcGFzc2VkIHRvIDpmdW5jOmAudHlwZV9jb2VyY2VgIGFzIHRhcmdldHMuCiAgICAgICAgRm9yIGV4YW1wbGUsIGlmIGEgdHlwZSBpbXBsZW1lbnRzIHRoZQogICAgICAgIDptZXRoOmAuVHlwZUVuZ2luZS5iaW5kX2V4cHJlc3Npb25gCiAgICAgICAgbWV0aG9kIG9yIDptZXRoOmAuVHlwZUVuZ2luZS5iaW5kX3Byb2Nlc3NvcmAgbWV0aG9kIG9yIGVxdWl2YWxlbnQsCiAgICAgICAgdGhlc2UgZnVuY3Rpb25zIHdpbGwgdGFrZSBlZmZlY3QgYXQgc3RhdGVtZW50IGNvbXBpbGF0aW9uL2V4ZWN1dGlvbgogICAgICAgIHRpbWUgd2hlbiBhIGxpdGVyYWwgdmFsdWUgaXMgcGFzc2VkLCBhcyBpbjo6CgogICAgICAgICAgICAjIGJvdW5kLXZhbHVlIGhhbmRsaW5nIG9mIE15U3RyaW5nVHlwZSB3aWxsIGJlIGFwcGxpZWQgdG8gdGhlCiAgICAgICAgICAgICMgbGl0ZXJhbCB2YWx1ZSAic29tZSBzdHJpbmciCiAgICAgICAgICAgIHN0bXQgPSBzZWxlY3QoW3R5cGVfY29lcmNlKCJzb21lIHN0cmluZyIsIE15U3RyaW5nVHlwZSldKQoKICAgICAgICBXaGVuIHVzaW5nIDpmdW5jOmAudHlwZV9jb2VyY2VgIHdpdGggY29tcG9zZWQgZXhwcmVzc2lvbnMsIG5vdGUgdGhhdAogICAgICAgICoqcGFyZW50aGVzaXMgYXJlIG5vdCBhcHBsaWVkKiouICAgSWYgOmZ1bmM6YC50eXBlX2NvZXJjZWAgaXMgYmVpbmcKICAgICAgICB1c2VkIGluIGFuIG9wZXJhdG9yIGNvbnRleHQgd2hlcmUgdGhlIHBhcmVudGhlc2lzIG5vcm1hbGx5IHByZXNlbnQgZnJvbQogICAgICAgIENBU1QgYXJlIG5lY2Vzc2FyeSwgdXNlIHRoZSA6bWV0aDpgLlR5cGVDb2VyY2Uuc2VsZl9ncm91cGAgbWV0aG9kOjoKCiAgICAgICAgICAgID4+PiBzb21lX2ludGVnZXIgPSBjb2x1bW4oInNvbWVpbnQiLCBJbnRlZ2VyKQogICAgICAgICAgICA+Pj4gc29tZV9zdHJpbmcgPSBjb2x1bW4oInNvbWVzdHIiLCBTdHJpbmcpCiAgICAgICAgICAgID4+PiBleHByID0gdHlwZV9jb2VyY2Uoc29tZV9pbnRlZ2VyICsgNSwgU3RyaW5nKSArIHNvbWVfc3RyaW5nCiAgICAgICAgICAgID4+PiBwcmludChleHByKQogICAgICAgICAgICBzb21laW50ICsgOnNvbWVpbnRfMSB8fCBzb21lc3RyCiAgICAgICAgICAgID4+PiBleHByID0gdHlwZV9jb2VyY2Uoc29tZV9pbnRlZ2VyICsgNSwgU3RyaW5nKS5zZWxmX2dyb3VwKCkgKyBzb21lX3N0cmluZwogICAgICAgICAgICA+Pj4gcHJpbnQoZXhwcikKICAgICAgICAgICAgKHNvbWVpbnQgKyA6c29tZWludF8xKSB8fCBzb21lc3RyCgogICAgICAgIDpwYXJhbSBleHByZXNzaW9uOiBBIFNRTCBleHByZXNzaW9uLCBzdWNoIGFzIGEKICAgICAgICAgOmNsYXNzOmBfZXhwcmVzc2lvbi5Db2x1bW5FbGVtZW50YAogICAgICAgICBleHByZXNzaW9uIG9yIGEgUHl0aG9uIHN0cmluZyB3aGljaCB3aWxsIGJlIGNvZXJjZWQgaW50byBhIGJvdW5kCiAgICAgICAgIGxpdGVyYWwgdmFs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qwMAAAAAAAAAAFMAKQNhVgQAAFByb2R1Y2UgdGhlIGBgTlVMTFMgRklSU1RgYCBtb2RpZmllciBmb3IgYW4gYGBPUkRFUiBCWWBgIGV4cHJlc3Npb24uCgogICAgICAgIDpmdW5jOmAubnVsbHNmaXJzdGAgaXMgaW50ZW5kZWQgdG8gbW9kaWZ5IHRoZSBleHByZXNzaW9uIHByb2R1Y2VkCiAgICAgICAgYnkgOmZ1bmM6YC5hc2NgIG9yIDpmdW5jOmAuZGVzY2AsIGFuZCBpbmRpY2F0ZXMgaG93IE5VTEwgdmFsdWVzCiAgICAgICAgc2hvdWxkIGJlIGhhbmRsZWQgd2hlbiB0aGV5IGFyZSBlbmNvdW50ZXJlZCBkdXJpbmcgb3JkZXJpbmc6OgoKCiAgICAgICAgICAgIGZyb20gc3FsYWxjaGVteSBpbXBvcnQgZGVzYywgbnVsbHNmaXJzdAoKICAgICAgICAgICAgc3RtdCA9IHNlbGVjdChbdXNlcnNfdGFibGVdKS5vcmRlcl9ieSgKICAgICAgICAgICAgICAgIG51bGxzZmlyc3QoZGVzYyh1c2Vyc190YWJsZS5jLm5hbWUpKSkKCiAgICAgICAgVGhlIFNRTCBleHByZXNzaW9uIGZyb20gdGhlIGFib3ZlIHdvdWxkIHJlc2VtYmxlOjoKCiAgICAgICAgICAgIFNFTEVDVCBpZCwgbmFtZSBGUk9NIHVzZXIgT1JERVIgQlkgbmFtZSBERVNDIE5VTExTIEZJUlNUCgogICAgICAgIExpa2UgOmZ1bmM6YC5hc2NgIGFuZCA6ZnVuYzpgLmRlc2NgLCA6ZnVuYzpgLm51bGxzZmlyc3RgIGlzIHR5cGljYWxseQogICAgICAgIGludm9rZWQgZnJvbSB0aGUgY29sdW1uIGV4cHJlc3Npb24gaXRzZWxmIHVzaW5nCiAgICAgICAgOm1ldGg6YF9leHByZXNzaW9uLkNvbHVtbkVsZW1lbnQubnVsbHNmaXJzdGAsCiAgICAgICAgcmF0aGVyIHRoYW4gYXMgaXRzIHN0YW5kYWxvbmUKICAgICAgICBmdW5jdGlvbiB2ZXJzaW9uLCBhcyBpbjo6CgogICAgICAgICAgICBzdG10ID0gc2VsZWN0KFt1c2Vyc190YWJsZV0pLm9yZGVyX2J5KAogICAgICAgICAgICAgICAgdXNlcnNfdGFibGUuYy5uYW1lLmRlc2MoKS5udWxsc2ZpcnN0KCkpCgogICAgICAgIC4uIHNlZWFsc286OgoKICAgICAgICAgICAgOmZ1bmM6YC5hc2NgCgogICAgICAgICAgICA6ZnVuYzpgLmRlc2NgCgogICAgICAgICAgICA6ZnVuYzpgLm51bGxzbGFzdGAKCiAgICAgICAgICAgIDptZXRoOmBfZXhwcmVzc2lvbi5TZWxlY3Qub3JkZXJfYnlgCgogICAgICAgIEapAnJXAgAAclgCAAApBHK2AAAA2htfbGl0ZXJhbF9hc19sYWJlbF9yZWZlcmVuY2VyBQAAANoNbnVsbHNmaXJzdF9vcKkCcqkBAADaBmNvbHVtbnMCAAAAICByGwAAANoSX2NyZWF0ZV9udWxsc2ZpcnN0eiJVbmFyeUV4cHJlc3Npb24uX2NyZWF0ZV9udWxsc2ZpcnN0GQsAAHMwAAAAgAD1TAEAEB/dDCeoBtEML9QML90VHtQVLNgkKfAHBBAK8QAEEAr0AAQQCvAABAkKchwAAABjAgAAAAAAAAAAAAAABQAAAAMAAADzVAAAAJcAdAEAAAAAAAAAAAAAdAMAAAAAAAAAAAAAfAGmAQAAqwEAAAAAAAAAAHQEAAAAAAAAAAAAAGoDAAAAAAAAAABkAawCpgMAAKsDAAAAAAAAAABTACkDYU8EAABQcm9kdWNlIHRoZSBgYE5VTExTIExBU1RgYCBtb2RpZmllciBmb3IgYW4gYGBPUkRFUiBCWWBgIGV4cHJlc3Npb24uCgogICAgICAgIDpmdW5jOmAubnVsbHNsYXN0YCBpcyBpbnRlbmRlZCB0byBtb2RpZnkgdGhlIGV4cHJlc3Npb24gcHJvZHVjZWQKICAgICAgICBieSA6ZnVuYzpgLmFzY2Agb3IgOmZ1bmM6YC5kZXNjYCwgYW5kIGluZGljYXRlcyBob3cgTlVMTCB2YWx1ZXMKICAgICAgICBzaG91bGQgYmUgaGFuZGxlZCB3aGVuIHRoZXkgYXJlIGVuY291bnRlcmVkIGR1cmluZyBvcmRlcmluZzo6CgoKICAgICAgICAgICAgZnJvbSBzcWxhbGNoZW15IGltcG9ydCBkZXNjLCBudWxsc2xhc3QKCiAgICAgICAgICAgIHN0bXQgPSBzZWxlY3QoW3VzZXJzX3RhYmxlXSkub3JkZXJfYnkoCiAgICAgICAgICAgICAgICBudWxsc2xhc3QoZGVzYyh1c2Vyc190YWJsZS5jLm5hbWUpKSkKCiAgICAgICAgVGhlIFNRTCBleHByZXNzaW9uIGZyb20gdGhlIGFib3ZlIHdvdWxkIHJlc2VtYmxlOjoKCiAgICAgICAgICAgIFNFTEVDVCBpZCwgbmFtZSBGUk9NIHVzZXIgT1JERVIgQlkgbmFtZSBERVNDIE5VTExTIExBU1QKCiAgICAgICAgTGlrZSA6ZnVuYzpgLmFzY2AgYW5kIDpmdW5jOmAuZGVzY2AsIDpmdW5jOmAubnVsbHNsYXN0YCBpcyB0eXBpY2FsbHkKICAgICAgICBpbnZva2VkIGZyb20gdGhlIGNvbHVtbiBleHByZXNzaW9uIGl0c2VsZiB1c2luZwogICAgICAgIDptZXRoOmBfZXhwcmVzc2lvbi5Db2x1bW5FbGVtZW50Lm51bGxzbGFzdGAsCiAgICAgICAgcmF0aGVyIHRoYW4gYXMgaXRzIHN0YW5kYWxvbmUKICAgICAgICBmdW5jdGlvbiB2ZXJzaW9uLCBhcyBpbjo6CgogICAgICAgICAgICBzdG10ID0gc2VsZWN0KFt1c2Vyc190YWJsZV0pLm9yZGVyX2J5KAogICAgICAgICAgICAgICAgdXNlcnNfdGFibGUuYy5uYW1lLmRlc2MoKS5udWxsc2xhc3QoKSkKCiAgICAgICAgLi4gc2VlYWxzbzo6CgogICAgICAgICAgICA6ZnVuYzpgLmFzY2AKCiAgICAgICAgICAgIDpmdW5jOmAuZGVzY2AKCiAgICAgICAgICAgIDpmdW5jOmAubnVsbHNmaXJzdGAKCiAgICAgICAgICAgIDptZXRoOmBfZXhwcmVzc2lvbi5TZWxlY3Qub3JkZXJfYnlgCgogICAgICAgIEZyWgIAACkEcrYAAAByWwIAAHIFAAAA2gxudWxsc2xhc3Rfb3ByXQIAAHMCAAAAICByGwAAANoRX2NyZWF0ZV9udWxsc2xhc3R6IVVuYXJ5RXhwcmVzc2lvbi5fY3JlYXRlX251bGxzbGFzdEULAABzMAAAAIAA9UwBABAf3QwnqAbRDC/UDC/d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ICAgICBzdG10ID0gc2VsZWN0KFtmdW5jLmNvdW50KGRpc3RpbmN0KHVzZXJzX3RhYmxlLmMubmFtZSkpXSkKCiAgICAgICAgVGhlIGFib3ZlIHdvdWxkIHByb2R1Y2UgYW4gZXhwcmVzc2lvbiByZXNlbWJsaW5nOjoKCiAgICAgICAgICAgIFNFTEVDVCBDT1VOVChESVNUSU5DVCBuYW1lKSBGUk9NIHVzZXIKCiAgICAgICAgVGhlIDpmdW5jOmAuZGlzdGluY3RgIGZ1bmN0aW9uIGlzIGFsc28gYXZhaWxhYmxlIGFzIGEgY29sdW1uLWxldmVsCiAgICAgICAgbWV0aG9kLCBlLmcuIDptZXRoOmBfZXhwcmVzc2lvbi5Db2x1bW5FbGVtZW50LmRpc3RpbmN0YCwgYXMgaW46OgoKICAgICAgICAgICAgc3RtdCA9IHNlbGVjdChbZnVuYy5jb3VudCh1c2Vyc190YWJsZS5jLm5hbWUuZGlzdGluY3QoKSldKQoKICAgICAgICBUaGUgOmZ1bmM6YC5kaXN0aW5jdGAgb3BlcmF0b3IgaXMgZGlmZmVyZW50IGZyb20gdGhlCiAgICAgICAgOm1ldGg6YF9leHByZXNzaW9uLlNlbGVjdC5kaXN0aW5jdGAgbWV0aG9kIG9mCiAgICAgICAgOmNsYXNzOmBfZXhwcmVzc2lvbi5TZWxlY3RgLAogICAgICAgIHdoaWNoIHByb2R1Y2VzIGEgYGBTRUxFQ1RgYCBzdGF0ZW1lbnQKICAgICAgICB3aXRoIGBgRElTVElOQ1RgYCBhcHBsaWVkIHRvIHRoZSByZXN1bHQgc2V0IGFzIGEgd2hvbGUsCiAgICAgICAgZS5nLiBhIGBgU0VMRUNUIERJU1RJTkNUYGAgZXhwcmVzc2lvbi4gIFNlZSB0aGF0IG1ldGhvZCBmb3IgZnVydGhlcgogICAgICAgIGluZm9ybWF0aW9uLgoKICAgICAgICAuLiBzZWVhbHNvOjoKCiAgICAgICAgICAgIDptZXRoOmBfZXhwcmVzc2lvbi5Db2x1bW5FbGVtZW50LmRpc3RpbmN0YAoKICAgICAgICAgICAgOm1ldGg6YF9leHByZXNzaW9uLlNlbGVjdC5kaXN0aW5jdGAKCiAgICAgICAgICAgIDpkYXRh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YWxsZWQgdXNpbmcKICAgICAgICB0aGUgOm1ldGg6YC5GdW5jdGlvbkVsZW1lbnQub3ZlcmAgbWV0aG9kLCBlLmcuOjoKCiAgICAgICAgICAgIGZ1bmMucm93X251bWJlcigpLm92ZXIob3JkZXJfYnk9bXl0YWJsZS5jLnNvbWVfY29sdW1uKQoKICAgICAgICBXb3VsZCBwcm9kdWNlOjoKCiAgICAgICAgICAgIFJPV19OVU1CRVIoKSBPVkVSKE9SREVSIEJZIHNvbWVfY29sdW1uKQoKICAgICAgICBSYW5nZXMgYXJlIGFsc28gcG9zc2libGUgdXNpbmcgdGhlIDpwYXJhbXJlZjpgLmV4cHJlc3Npb24ub3Zlci5yYW5nZV9gCiAgICAgICAgYW5kIDpwYXJhbXJlZjpgLmV4cHJlc3Npb24ub3Zlci5yb3dzYCBwYXJhbWV0ZXJzLiAgVGhlc2UKICAgICAgICBtdXR1YWxseS1leGNsdXNpdmUgcGFyYW1ldGVycyBlYWNoIGFjY2VwdCBhIDItdHVwbGUsIHdoaWNoIGNvbnRhaW5zCiAgICAgICAgYSBjb21iaW5hdGlvbiBvZiBpbnRlZ2VycyBhbmQgTm9uZTo6CgogICAgICAgICAgICBmdW5jLnJvd19udW1iZXIoKS5vdmVyKAogICAgICAgICAgICAgICAgb3JkZXJfYnk9bXlfdGFibGUuYy5zb21lX2NvbHVtbiwgcmFuZ2VfPShOb25lLCAwKSkKCiAgICAgICAgVGhlIGFib3ZlIHdvdWxkIHByb2R1Y2U6OgoKICAgICAgICAgICAgUk9XX05VTUJFUigpIE9WRVIoT1JERVIgQlkgc29tZV9jb2x1bW4KICAgICAgICAgICAgUkFOR0UgQkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VESU5HIEFORCBDVVJSRU5UIFJPVykKCiAgICAgICAgQSB2YWx1ZSBvZiBgYE5vbmVgYCBpbmRpY2F0ZXMgInVuYm91bmRlZCIsIGEKICAgICAgICB2YWx1ZSBvZiB6ZXJvIGluZGljYXRlcyAiY3VycmVudCByb3ciLCBhbmQgbmVnYXRpdmUgLyBwb3NpdGl2ZQogICAgICAgIGludGVnZXJzIGluZGljYXRlICJwcmVjZWRpbmciIGFuZCAiZm9sbG93aW5nIjoKCiAgICAgICAgKiBSQU5HRSBCRVRXRUVOIDUgUFJFQ0VESU5HIEFORCAxMCBGT0xMT1dJTkc6OgoKICAgICAgICAgICAgZnVuYy5yb3dfbnVtYmVyKCkub3ZlcihvcmRlcl9ieT0neCcsIHJhbmdlXz0oLTUsIDEwKSkKCiAgICAgICAgKiBST1dTIEJFVFdFRU4gVU5CT1VOREVEIFBSRUNFRElORyBBTkQgQ1VSUkVOVCBST1c6OgoKICAgICAgICAgICAgZnVuYy5yb3dfbnVtYmVyKCkub3ZlcihvcmRlcl9ieT0neCcsIHJvd3M9KE5vbmUsIDApKQoKICAgICAgICAqIFJBTkdFIEJFVFdFRU4gMiBQUkVDRURJTkcgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkc6OgoKICAgICAgICAgICAgZnVuYy5yb3dfbnVtYmVyKCkub3ZlcihvcmRlcl9ieT0neCcsIHJhbmdlXz0oLTIsIE5vbmUpKQoKICAgICAgICAqIFJBTkdFIEJFVFdFRU4gMSBGT0xMT1dJTkcgQU5EIDMgRk9MTE9XSU5HOjoKCiAgICAgICAgICAgIGZ1bmMucm93X251bWJlcigpLm92ZXIob3JkZXJfYnk9J3gnLCByYW5nZV89KDEsIDMpKQoKICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAxLjEgc3VwcG9ydCBmb3IgUkFOR0UgLyBST1dTIHdpdGhpbiBhIHdpbmRvdwoKCiAgICAgICAgOnBhcmFtIGVsZW1lbnQ6IGEgOmNsYXNzOmAuRnVuY3Rpb25FbGVtZW50YCwgOmNsYXNzOmAuV2l0aGluR3JvdXBgLAogICAgICAgICBvciBvdGhlciBjb21wYXRpYmxlIGNvbnN0cnVjdC4KICAgICAgICA6cGFyYW0gcGFydGl0aW9uX2J5OiBhIGNvbHVtbiBlbGVtZW50IG9yIHN0cmluZywgb3IgYSBsaXN0CiAgICAgICAgIG9mIHN1Y2gsIHRoYXQgd2lsbCBiZSB1c2VkIGFzIHRoZSBQQVJUSVRJT04gQlkgY2xhdXNlCiAgICAgICAgIG9mIHRoZSBPVkVSIGNvbnN0cnVjdC4KICAgICAgICA6cGFyYW0gb3JkZXJfYnk6IGEgY29sdW1uIGVsZW1lbnQgb3Igc3RyaW5nLCBvciBhIGxpc3QKICAgICAgICAgb2Ygc3VjaCwgdGhhdCB3aWxsIGJlIHVzZWQgYXMgdGhlIE9SREVSIEJZIGNsYXVzZQogICAgICAgICBvZiB0aGUgT1ZFUiBjb25zdHJ1Y3QuCiAgICAgICAgOnBhcmFtIHJhbmdlXF86IG9wdGlvbmFsIHJhbmdlIGNsYXVzZSBmb3IgdGhlIHdpbmRvdy4gIFRoaXMgaXMgYQogICAgICAgICB0dXBsZSB2YWx1ZSB3aGljaCBjYW4gY29udGFpbiBpbnRlZ2VyIHZhbHVlcyBvciBgYE5vbmVgYCwKICAgICAgICAgYW5kIHdpbGwgcmVuZGVyIGEgUkFOR0UgQkVUV0VFTiBQUkVDRURJTkcgLyBGT0xMT1dJTkcgY2xhdXNlLgoKICAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMS4xCgogICAgICAgIDpwYXJhbSByb3dzOiBvcHRpb25hbCByb3dzIGNsYXVzZSBmb3IgdGhlIHdpbmRvdy4gIFRoaXMgaXMgYSB0dXBsZQogICAgICAgICB2YWx1ZSB3aGljaCBjYW4gY29udGFpbiBpbnRlZ2VyIHZhbHVlcyBvciBOb25lLCBhbmQgd2lsbCByZW5kZXIKICAgICAgICAgYSBST1dTIEJFVFdFRU4gUFJFQ0VESU5HIC8gRk9MTE9XSU5HIGNsYXVzZS4KCiAgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDEuMQoKICAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIGFsc28gYXZhaWxhYmxlIGZyb20gdGhlIDpkYXRhOmB+LmV4cHJlc3Npb24uZnVuY2AKICAgICAgICBjb25zdHJ1Y3QgaXRzZWxmIHZpYSB0aGUgOm1ldGg6YC5GdW5jdGlvbkVsZW1lbnQub3ZlcmAgbWV0aG9kLgoKICAgICAgICAuLiBzZWVhbHNvOjoKCiAgICAgICAgICAgIDpkYXRhOmAuZXhwcmVzc2lvbi5mdW5jYAoKICAgICAgICAgICAgOmZ1bmM6YF9leHByZXNzaW9uLndpdGhpbl9ncm91cGAKCiAgICAgICAgTnLGAQAAeioncmFuZ2VfJyBhbmQgJ3Jvd3MnIGFyZSBtdXR1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IGBgZGVuc2VfcmFuaygpYGAsIGV0Yy4KCiAgICBJdCdzIHN1cHBvcnRlZCBvbmx5IGJ5IGNlcnRhaW4gZGF0YWJhc2UgYmFja2VuZHMsIHN1Y2ggYXMgUG9zdGdyZVNRTCwKICAgIE9yYWNsZSBhbmQgTVMgU1FMIFNlcnZlci4KCiAgICBUaGUgOmNsYXNzOmAuV2l0aGluR3JvdXBgIGNvbnN0cnVjdCBleHRyYWN0cyBpdHMgdHlwZSBmcm9tIHRoZQogICAgbWV0aG9kIDptZXRoOmAuRnVuY3Rpb25FbGVtZW50LndpdGhpbl9ncm91cF90eXBlYC4gIElmIHRoaXMgcmV0dXJucwogICAgYGBOb25lYGAsIHRoZSBmdW5jdGlvbidzIGBgLnR5cGVgYCBpcyB1c2VkLgoKICAgINoLd2l0aGluZ3JvdXBOYwIAAAAAAAAAAAAAAAUAAAAHAAAA82wAAACXAHwBfABfAAAAAAAAAAAAfAKBKnQDAAAAAAAAAAAAAHQFAAAAAAAAAAAAAGoDAAAAAAAAAAB8AqYBAACrAQAAAAAAAAAAZAJ0CAAAAAAAAAAAAABpAY4BfABfBQAAAAAAAAAAZAFTAGQBUwApA2GuBAAAUHJvZHVjZSBhIDpjbGFzczpgLldpdGhpbkdyb3VwYCBvYmplY3QgYWdhaW5zdCBhIGZ1bmN0aW9uLgoKICAgICAgICBVc2VkIGFnYWluc3Qgc28tY2FsbGVkICJvcmRlcmVkIHNldCBhZ2dyZWdhdGUiIGFuZCAiaHlwb3RoZXRpY2FsCiAgICAgICAgc2V0IGFnZ3JlZ2F0ZSIgZnVuY3Rpb25zLCBpbmNsdWRpbmcgOmNsYXNzOmAucGVyY2VudGlsZV9jb250YCwKICAgICAgICA6Y2xhc3M6YC5yYW5rYCwgOmNsYXNzOmAuZGVuc2VfcmFua2AsIGV0Yy4KCiAgICAgICAgOmZ1bmM6YF9leHByZXNzaW9uLndpdGhpbl9ncm91cGAgaXMgdXN1YWxseSBjYWxsZWQgdXNpbmcKICAgICAgICB0aGUgOm1ldGg6YC5GdW5jdGlvbkVsZW1lbnQud2l0aGluX2dyb3VwYCBtZXRob2QsIGUuZy46OgoKICAgICAgICAgICAgZnJvbSBzcWxhbGNoZW15IGltcG9ydCB3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bGF1c2VgLCB0aGUgOmNsYXNzOmAuQ29sdW1uQ2xhdXNlYAogICAgY2xhc3MgaXMgdXNhYmxlIGJ5IGl0c2VsZiBpbiB0aG9zZSBjYXNlcyB3aGVyZSBiZWhhdmlvcmFsIHJlcXVpcmVtZW50cwogICAgYXJlIGxpbWl0ZWQgdG8gc2ltcGxlIFNRTCBleHByZXNzaW9uIGdlbmVyYXRpb24uICBUaGUgb2JqZWN0IGhhcyBub25lIG9mCiAgICB0aGUgYXNzb2NpYXRpb25zIHdpdGggc2NoZW1hLWxldmVsIG1ldGFkYXRhIG9yIHdpdGggZXhlY3V0aW9uLXRpbWUKICAgIGJlaGF2aW9yIHRoYXQgOmNsYXNzOmBfc2NoZW1hLkNvbHVtbmAgZG9lcywKICAgIHNvIGluIHRoYXQgc2Vuc2UgaXMgYSAibGlnaHR3ZWlnaHQiCiAgICB2ZXJzaW9uIG9mIDpjbGFzczpgX3NjaGVtYS5Db2x1bW5gLgoKICAgIEZ1bGwgZGV0YWlscyBvbiA6Y2xhc3M6YC5Db2x1bW5DbGF1c2VgIHVzYWdlIGlzIGF0CiAgICA6ZnVuYzpgX2V4cHJlc3Npb24uY29sdW1uYC4KCiAgICAuLiBzZWVhbHNvOjoKCiAgICAgICAgOmZ1bmM6YF9leHByZXNzaW9uLmNvbHVtbmAKCiAgICAgICAgOmNsYXNzOmBfc2NoZW1hLkNvbHVtbmAKCiAgICByXgIAAE5GYwUAAAAAAAAAAAAAAAMAAAADAAAA83AAAACXAHwBeAF8AF8AAAAAAAAAAAB8AF8BAAAAAAAAAAB8BHwAXwIAAAAAAAAAAHQHAAAAAAAAAAAAAGoEAAAAAAAAAAB8AqYBAACrAQAAAAAAAAAAfABfBQAAAAAAAAAAfAN8AF8GAAAAAAAAAABkAVMAKQJhNw0AAFByb2R1Y2UgYSA6Y2xhc3M6YC5Db2x1bW5DbGF1c2VgIG9iamVjdC4KCiAgICAgICAgVGhlIDpjbGFzczpgLkNvbHVtbkNsYXVzZWAgaXMgYSBsaWdodHdlaWdodCBhbmFsb2d1ZSB0byB0aGUKICAgICAgICA6Y2xhc3M6YF9zY2hlbWEuQ29sdW1uYCBjbGFzcy4gIFRoZSA6ZnVuYzpgX2V4cHJlc3Npb24uY29sdW1uYAogICAgICAgIGZ1bmN0aW9uIGNhbgogICAgICAgIGJlIGludm9rZWQgd2l0aCBqdXN0IGEgbmFtZSBhbG9uZSwgYXMgaW46OgoKICAgICAgICAgICAgZnJvbSBzcWxhbGNoZW15IGltcG9ydCBjb2x1bW4KCiAgICAgICAgICAgIGlkLCBuYW1lID0gY29sdW1uKCJpZCIpLCBjb2x1bW4oIm5hbWUiKQogICAgICAgICAgICBzdG10ID0gc2VsZWN0KFtpZCwgbmFtZV0pLnNlbGVjdF9mcm9tKCJ1c2VyIikKCiAgICAgICAgVGhlIGFib3ZlIHN0YXRlbWVudCB3b3VsZCBwcm9kdWNlIFNRTCBsaWtlOjoKCiAgICAgICAgICAgIFNFTEVDVCBpZCwgbmFtZSBGUk9NIHVzZXIKCiAgICAgICAgT25jZSBjb25zdHJ1Y3RlZCwgOmZ1bmM6YF9leHByZXNzaW9uLmNvbHVtbmAKICAgICAgICBtYXkgYmUgdXNlZCBsaWtlIGFueSBvdGhlciBTUUwKICAgICAgICBleHByZXNzaW9uIGVsZW1lbnQgc3VjaCBhcyB3aXRoaW4gOmZ1bmM6YF9leHByZXNzaW9uLnNlbGVjdGAKICAgICAgICBjb25zdHJ1Y3RzOjoKCiAgICAgICAgICAgIGZyb20gc3FsYWxjaGVteS5zcWwgaW1wb3J0IGNvbHVtbgoKICAgICAgICAgICAgaWQsIG5hbWUgPSBjb2x1bW4oImlkIiksIGNvbHVtbigibmFtZSIpCiAgICAgICAgICAgIHN0bXQgPSBzZWxlY3QoW2lkLCBuYW1lXSkuc2VsZWN0X2Zyb20oInVzZXIiKQoKICAgICAgICBUaGUgdGV4dCBoYW5kbGVkIGJ5IDpmdW5jOmBfZXhwcmVzc2lvbi5jb2x1bW5gCiAgICAgICAgaXMgYXNzdW1lZCB0byBiZSBoYW5kbGVkCiAgICAgICAgbGlrZSB0aGUgbmFtZSBvZiBhIGRhdGFiYXNlIGNvbHVtbjsgaWYgdGhlIHN0cmluZyBjb250YWlucyBtaXhlZCBjYXNlLAogICAgICAgIHNwZWNpYWwgY2hhcmFjdGVycywgb3IgbWF0Y2hlcyBhIGtub3duIHJlc2VydmVkIHdvcmQgb24gdGhlIHRhcmdldAogICAgICAgIGJhY2tlbmQsIHRoZSBjb2x1bW4gZXhwcmVzc2lvbiB3aWxsIHJlbmRlciB1c2luZyB0aGUgcXVvdGluZwogICAgICAgIGJlaGF2aW9yIGRldGVybWluZWQgYnkgdGhlIGJhY2tlbmQuICBUbyBwcm9kdWNlIGEgdGV4dHVhbCBTUUwKICAgICAgICBleHByZXNzaW9uIHRoYXQgaXMgcmVuZGVyZWQgZXhhY3RseSB3aXRob3V0IGFueSBxdW90aW5nLAogICAgICAgIHVzZSA6ZnVuYzpgX2V4cHJlc3Npb24ubGl0ZXJhbF9jb2x1bW5gIGluc3RlYWQsCiAgICAgICAgb3IgcGFzcyBgYFRydWVgYCBhcyB0aGUKICAgICAgICB2YWx1ZSBvZiA6cGFyYW1yZWY6YF9leHByZXNzaW9uLmNvbHVtbi5pc19saXRlcmFsYC4gICBBZGRpdGlvbmFsbHksCiAgICAgICAgZnVsbCBTUUwKICAgICAgICBzdGF0ZW1lbnRzIGFyZSBiZXN0IGhhbmRsZWQgdXNpbmcgdGhlIDpmdW5jOmBfZXhwcmVzc2lvbi50ZXh0YAogICAgICAgIGNvbnN0cnVjdC4KCiAgICAgICAgOmZ1bmM6YF9leHByZXNzaW9uLmNvbHVtbmAgY2FuIGJlIHVzZWQgaW4gYSB0YWJsZS1saWtlCiAgICAgICAgZmFzaGlvbiBieSBjb21iaW5pbmcgaXQgd2l0aCB0aGUgOmZ1bmM6YC50YWJsZWAgZnVuY3Rpb24KICAgICAgICAod2hpY2ggaXMgdGhlIGxpZ2h0d2VpZ2h0IGFuYWxvZ3VlIHRvIDpjbGFzczpgX3NjaGVtYS5UYWJsZWAKICAgICAgICApIHRvIHByb2R1Y2UKICAgICAgICBhIHdvcmtpbmcgdGFibGUgY29uc3RydWN0IHdpdGggbWluaW1hbCBib2lsZXJwbGF0ZTo6CgogICAgICAgICAgICBmcm9tIHNxbGFsY2hlbXkgaW1wb3J0IHRhYmxlLCBjb2x1bW4sIHNlbGVjdAoKICAgICAgICAgICAgdXNlciA9IHRhYmxlKCJ1c2VyIiwKICAgICAgICAgICAgICAgICAgICBjb2x1bW4oImlkIiksCiAgICAgICAgICAgICAgICAgICAgY29sdW1uKCJuYW1lIiksCiAgICAgICAgICAgICAgICAgICAgY29sdW1uKCJkZXNjcmlwdGlvbiIpLAogICAgICAgICAgICApCgogICAgICAgICAgICBzdG10ID0gc2VsZWN0KFt1c2VyLmMuZGVzY3JpcHRpb25dKS53aGVyZSh1c2VyLmMubmFtZSA9PSAnd2VuZHknKQoKICAgICAgICBBIDpmdW5jOmBfZXhwcmVzc2lvbi5jb2x1bW5gIC8gOmZ1bmM6YC50YWJsZWAKICAgICAgICBjb25zdHJ1Y3QgbGlrZSB0aGF0IGlsbHVzdHJhdGVkCiAgICAgICAgYWJvdmUgY2FuIGJlIGNyZWF0ZWQgaW4gYW4KICAgICAgICBhZC1ob2MgZmFzaGlvbiBhbmQgaXMgbm90IGFzc29jaWF0ZWQgd2l0aCBhbnkKICAgICAgICA6Y2xhc3M6YF9zY2hlbWEuTWV0YURhdGFgLCBEREwsIG9yIGV2ZW50cywgdW5saWtlIGl0cwogICAgICAgIDpjbGFzczpgX3NjaGVtYS5UYWJsZWAgY291bnRlcnBhcnQuCgogICAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMS4wLjAgOmZ1bmM6YF9leHByZXNzaW9uLmNvbHVtbmAgY2FuIG5vdwogICAgICAgICAgIGJlIGltcG9ydGVkIGZyb20gdGhlIHBsYWluIGBgc3FsYWxjaGVteWBgIG5hbWVzcGFjZSBsaWtlIGFueQogICAgICAgICAgIG90aGVyIFNRTCBlbGVtZW50LgoKICAgICAgICA6cGFyYW0gdGV4dDogdGhlIHRleHQgb2YgdGhlIGVsZW1lbnQuCgogICAgICAgIDpwYXJhbSB0eXBlOiA6Y2xhc3M6YF90eXBlcy5UeXBlRW5naW5lYCBvYmplY3Qgd2hpY2ggY2FuIGFzc29jaWF0ZQogICAgICAgICAgdGhpcyA6Y2xhc3M6YC5Db2x1bW5DbGF1c2VgIHdpdGggYSB0eXBlLgoKICAgICAgICA6cGFyYW0gaXNfbGl0ZXJhbDogaWYgVHJ1ZSwgdGhlIDpjbGFzczpgLkNvbHVtbkNsYXVzZWAgaXMgYXNzdW1lZCB0bwogICAgICAgICAgYmUgYW4gZXhhY3QgZXhwcmVzc2lv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dmVwb2ludENsYXVzZdoRcmVsZWFzZV9zYXZlcG9pbnROckgDAAByhQAAAHIcAAAAchsAAAByTQMAAHJNAwAA8RAAAHMTAAAAgACAAIAAgACAANgVKIBOgE6ATnIcAAAAck0DAABjAAAAAAAAAAAAAAAAAgAAAAAAAADzPgAAAIcAlwBlAFoBZABaAmQBWgNkAloEiABmAWQDhAhaBWQEhABaBmQFhABaB2QGhABaCGQHhABaCYgAeAFaClMAKQhyQgEAAGGnCAAAUmVwcmVzZW50IGEgU1FMIGlkZW50aWZpZXIgY29tYmluZWQgd2l0aCBxdW90aW5nIHByZWZlcmVuY2VzLgoKICAgIDpjbGFzczpgLnF1b3RlZF9uYW1lYCBpcyBhIFB5dGhvbiB1bmljb2RlL3N0ciBzdWJjbGFzcyB3aGljaAogICAgcmVwcmVzZW50cyBhIHBhcnRpY3VsYXIgaWRlbnRpZmllciBuYW1lIGFsb25nIHdpdGggYQogICAgYGBxdW90ZWBgIGZsYWcuICBUaGlzIGBgcXVvdGVgYCBmbGFnLCB3aGVuIHNldCB0bwogICAgYGBUcnVlYGAgb3IgYGBGYWxzZWBgLCBvdmVycmlkZXMgYXV0b21hdGljIHF1b3RpbmcgYmVoYXZpb3IKICAgIGZvciB0aGlzIGlkZW50aWZpZXIgaW4gb3JkZXIgdG8gZWl0aGVyIHVuY29uZGl0aW9uYWxseSBxdW90ZQogICAgb3IgdG8gbm90IHF1b3RlIHRoZSBuYW1lLiAgSWYgbGVmdCBhdCBpdHMgZGVmYXVsdCBvZiBgYE5vbmVgYCwKICAgIHF1b3RpbmcgYmVoYXZpb3IgaXMgYXBwbGllZCB0byB0aGUgaWRlbnRpZmllciBvbiBhIHBlci1iYWNrZW5kIGJhc2lzCiAgICBiYXNlZCBvbiBhbiBleGFtaW5hdGlvbiBvZiB0aGUgdG9rZW4gaXRzZWxmLgoKICAgIEEgOmNsYXNzOmAucXVvdGVkX25hbWVgIG9iamVjdCB3aXRoIGBgcXVvdGU9VHJ1ZWBgIGlzIGFsc28KICAgIHByZXZlbnRlZCBmcm9tIGJlaW5nIG1vZGlmaWVkIGluIHRoZSBjYXNlIG9mIGEgc28tY2FsbGVkCiAgICAibmFtZSBub3JtYWxpemUiIG9wdGlvbi4gIENlcnRhaW4gZGF0YWJhc2UgYmFja2VuZHMsIHN1Y2ggYXMKICAgIE9yYWNsZSwgRmlyZWJpcmQsIGFuZCBEQjIgIm5vcm1hbGl6ZSIgY2FzZS1pbnNlbnNpdGl2ZSBuYW1lcwogICAgYXMgdXBwZXJjYXNlLiAgVGhlIFNRTEFsY2hlbXkgZGlhbGVjdHMgZm9yIHRoZXNlIGJhY2tlbmRzCiAgICBjb252ZXJ0IGZyb20gU1FMQWxjaGVteSdzIGxvd2VyLWNhc2UtbWVhbnMtaW5zZW5zaXRpdmUgY29udmVudGlvbgogICAgdG8gdGhlIHVwcGVyLWNhc2UtbWVhbnMtaW5zZW5zaXRpdmUgY29udmVudGlvbnMgb2YgdGhvc2UgYmFja2VuZHMuCiAgICBUaGUgYGBxdW90ZT1UcnVlYGAgZmxhZyBoZXJlIHdpbGwgcHJldmVudCB0aGlzIGNvbnZlcnNpb24gZnJvbSBvY2N1cnJpbmcKICAgIHRvIHN1cHBvcnQgYW4gaWRlbnRpZmllciB0aGF0J3MgcXVvdGVkIGFzIGFsbCBsb3dlciBjYXNlIGFnYWluc3QKICAgIHN1Y2ggYSBiYWNrZW5kLgoKICAgIFRoZSA6Y2xhc3M6YC5xdW90ZWRfbmFtZWAgb2JqZWN0IGlzIG5vcm1hbGx5IGNyZWF0ZWQgYXV0b21hdGljYWxseQogICAgd2hlbiBzcGVjaWZ5aW5nIHRoZSBuYW1lIGZvciBrZXkgc2NoZW1hIGNvbnN0cnVjdHMgc3VjaCBhcwogICAgOmNsYXNzOmBfc2NoZW1hLlRhYmxlYCwgOmNsYXNzOmBfc2NoZW1hLkNvbHVtbmAsIGFuZCBvdGhlcnMuCiAgICBUaGUgY2xhc3MgY2FuIGFsc28gYmUKICAgIHBhc3NlZCBleHBsaWNpdGx5IGFzIHRoZSBuYW1lIHRvIGFueSBmdW5jdGlvbiB0aGF0IHJlY2VpdmVzIGEgbmFtZSB3aGljaAogICAgY2FuIGJlIHF1b3RlZC4gIFN1Y2ggYXMgdG8gdXNlIHRoZSA6bWV0aDpgX2VuZ2luZS5FbmdpbmUuaGFzX3RhYmxlYAogICAgbWV0aG9kIHdpdGgKICAgIGFuIHVuY29uZGl0aW9uYWxseSBxdW90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aW5nIGluZGljYXRpbmcgdGhhdCBhIG5hbWUgaGFzIGFscmVhZHkgYmVlbiBjb252ZXJ0ZWQKICAgIGJ5IGEgbmFtaW5nIGNvbnZlbnRpb24uCgogICAgVGhpcyBpcyBhIHN0cmluZyBzdWJjbGFzcyB0aGF0IGluZGljYXRlcyBhIG5hbWUgdGhhdCBzaG91bGQgbm90IGJlCiAgICBzdWJqZWN0IHRvIGFueSBmdXJ0aGVyIG5hbWluZyBjb252ZW50aW9ucy4KCiAgICBFLmcuIHdoZW4gd2UgY3JlYXRlIGEgOmNsYXNzOmAuQ29uc3RyYWludGAgdXNpbmcgYSBuYW1pbmcgY29udmVudGlvbgogICAgYXMgZm9sbG93czo6CgogICAgICAgIG0gPSBNZXRhRGF0YShuYW1pbmdfY29udmVudGlvbj17CiAgICAgICAgICAgICJjayI6ICJja18lKHRhYmxlX25hbWUpc18lKGNvbnN0cmFpbnRfbmFtZSlzIgogICAgICAgIH0pCiAgICAgICAgdCA9IFRhYmxlKCd0JywgbSwgQ29sdW1uKCd4JywgSW50ZWdlciksCiAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrQ29uc3RyYWludCgneCA+IDUnLCBuYW1lPSd4NScpKQoKICAgIFRoZSBuYW1lIG9mIHRoZSBhYm92ZSBjb25zdHJhaW50IHdpbGwgYmUgcmVuZGVyZWQgYXMgYGAiY2tfdF94NSJgYC4KICAgIFRoYXQgaXMsIHRoZSBleGlzdGluZyBuYW1lIGBgeDVgYCBpcyB1c2VkIGluIHRoZSBuYW1pbmcgY29udmVudGlvbiBhcyB0aGUKICAgIGBgY29uc3RyYWludF9uYW1lYGAgdG9rZW4uCgogICAgSW4gc29tZSBzaXR1YXRpb25zLCBzdWNoIGFzIGluIG1pZ3JhdGlvbiBzY3JpcHRzLCB3ZSBtYXkgYmUgcmVuZGVyaW5nCiAgICB0aGUgYWJvdmUgOmNsYXNzOmAuQ2hlY2tDb25zdHJhaW50YCB3aXRoIGEgbmFtZSB0aGF0J3MgYWxyZWFkeSBiZWVuCiAgICBjb252ZXJ0ZWQuICBJbiBvcmRlciB0byBtYWtlIHN1cmUgdGhlIG5hbWUgaXNuJ3QgZG91Ymxl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
Base64 mode: content will be decoded on save.
Save
Close
Exit & Reset
Directory Contents
Dirs: 0 × Files: 19
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
annotation.cpython-311.pyc
8.78 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
base.cpython-311.pyc
33.95 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
compiler.cpython-311.pyc
156.80 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
crud.cpython-311.pyc
28.82 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
ddl.cpython-311.pyc
53.22 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
default_comparator.cpython-311.pyc
13.43 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
dml.cpython-311.pyc
39.22 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
elements.cpython-311.pyc
197.28 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
expression.cpython-311.pyc
9.42 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
functions.cpython-311.pyc
48.73 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
naming.cpython-311.pyc
8.92 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
operators.cpython-311.pyc
55.27 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
schema.cpython-311.pyc
210.17 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
selectable.cpython-311.pyc
171.80 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
sqltypes.cpython-311.pyc
124.29 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
type_api.cpython-311.pyc
59.47 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
util.cpython-311.pyc
41.21 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
visitors.cpython-311.pyc
20.17 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-311.pyc
4.79 KB
lrw-r--r--
2026-02-06 08:01:45
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Zip Selected
If ZipArchive is unavailable, a
.tar
will be created (no compression).