REDROOM
PHP 8.2.30
Path:
Logout
Edit File
Size: 40.42 KB
Close
/opt/cloudlinux/venv/lib/python3.11/site-packages/sqlalchemy/ext/__pycache__/automap.cpython-311.pyc
Text
Base64
pw0NCgAAAACjfG9praQAAOMAAAAAAAAAAAAAAAAFAAAAAAAAAPPQAAAAlwBkAFoAZAFkAmwBbQJaAwEAZAFkA2wEbQVaBQEAZARkBWwGbQdaBwEAZARkBmwIbQlaCQEAZARkB2wIbQpaCwEAZARkCGwIbQxaDAEAZARkCWwIbQ1aDQEAZARkCmwObQ9aDwEAZARkC2wQbRFaEQEAZARkDGwSbRNaEwEAZA2EAFoUZA6EAFoVZA+EAFoWZBCEAFoXAgBHAGQRhABkEmUYpgMAAKsDAAAAAAAAAABaGWQYZBSEAVoaZBWEAFobZBaEAFocZBeEAFodZBNTACkZYTpRAABEZWZpbmUgYW4gZXh0ZW5zaW9uIHRvIHRoZSA6bW9kOmBzcWxhbGNoZW15LmV4dC5kZWNsYXJhdGl2ZWAgc3lzdGVtCndoaWNoIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVzIG1hcHBlZCBjbGFzc2VzIGFuZCByZWxhdGlvbnNoaXBzIGZyb20gYSBkYXRhYmFzZQpzY2hlbWEsIHR5cGljYWxseSB0aG91Z2ggbm90IG5lY2Vzc2FyaWx5IG9uZSB3aGljaCBpcyByZWZsZWN0ZWQuCgouLiB2ZXJzaW9uYWRkZWQ6OiAwLjkuMSBBZGRlZCA6bW9kOmBzcWxhbGNoZW15LmV4dC5hdXRvbWFwYC4KCkl0IGlzIGhvcGVkIHRoYXQgdGhlIDpjbGFzczpgLkF1dG9tYXBCYXNlYCBzeXN0ZW0gcHJvdmlkZXMgYSBxdWljawphbmQgbW9kZXJuaXplZCBzb2x1dGlvbiB0byB0aGUgcHJvYmxlbSB0aGF0IHRoZSB2ZXJ5IGZhbW91cwpgU1FMU291cCA8aHR0cHM6Ly9zcWxzb3VwLnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC8+YF8KYWxzbyB0cmllcyB0byBzb2x2ZSwgdGhhdCBvZiBnZW5lcmF0aW5nIGEgcXVpY2sgYW5kIHJ1ZGltZW50YXJ5IG9iamVjdAptb2RlbCBmcm9tIGFuIGV4aXN0aW5nIGRhdGFiYXNlIG9uIHRoZSBmbHkuICBCeSBhZGRyZXNzaW5nIHRoZSBpc3N1ZSBzdHJpY3RseQphdCB0aGUgbWFwcGVyIGNvbmZpZ3VyYXRpb24gbGV2ZWwsIGFuZCBpbnRlZ3JhdGluZyBmdWxseSB3aXRoIGV4aXN0aW5nCkRlY2xhcmF0aXZlIGNsYXNzIHRlY2huaXF1ZXMsIDpjbGFzczpgLkF1dG9tYXBCYXNlYCBzZWVrcyB0byBwcm92aWRlCmEgd2VsbC1pbnRlZ3JhdGVkIGFwcHJvYWNoIHRvIHRoZSBpc3N1ZSBvZiBleHBlZGllbnRseSBhdXRvLWdlbmVyYXRpbmcgYWQtaG9jCm1hcHBpbmdzLgoKCkJhc2ljIFVzZQo9PT09PT09PT0KClRoZSBzaW1wbGVzdCB1c2FnZSBpcyB0byByZWZsZWN0IGFuIGV4aXN0aW5nIGRhdGFiYXNlIGludG8gYSBuZXcgbW9kZWwuCldlIGNyZWF0ZSBhIG5ldyA6Y2xhc3M6YC5BdXRvbWFwQmFzZWAgY2xhc3MgaW4gYSBzaW1pbGFyIG1hbm5lciBhcyB0byBob3cKd2UgY3JlYXRlIGEgZGVjbGFyYXRpdmUgYmFzZSBjbGFzcywgdXNpbmcgOmZ1bmM6YC5hdXRvbWFwX2Jhc2VgLgpXZSB0aGVuIGNhbGwgOm1ldGg6YC5BdXRvbWFwQmFzZS5wcmVwYXJlYCBvbiB0aGUgcmVzdWx0aW5nIGJhc2UgY2xhc3MsCmFza2luZyBpdCB0byByZWZsZWN0IHRoZSBzY2hlbWEgYW5kIHByb2R1Y2UgbWFwcGluZ3M6OgoKICAgIGZyb20gc3FsYWxjaGVteS5leHQuYXV0b21hcCBpbXBvcnQgYXV0b21hcF9iYXNlCiAgICBmcm9tIHNxbGFsY2hlbXkub3JtIGltcG9ydCBTZXNzaW9uCiAgICBmcm9tIHNxbGFsY2hlbXkgaW1wb3J0IGNyZWF0ZV9lbmdpbmUKCiAgICBCYXNlID0gYXV0b21hcF9iYXNlKCkKCiAgICAjIGVuZ2luZSwgc3VwcG9zZSBpdCBoYXMgdHdvIHRhYmxlcyAndXNlcicgYW5kICdhZGRyZXNzJyBzZXQgdXAKICAgIGVuZ2luZSA9IGNyZWF0ZV9lbmdpbmUoInNxbGl0ZTovLy9teWRhdGFiYXNlLmRiIikKCiAgICAjIHJlZmxlY3QgdGhlIHRhYmxlcwogICAgQmFzZS5wcmVwYXJlKGVuZ2luZSwgcmVmbGVjdD1UcnVlKQoKICAgICMgbWFwcGVkIGNsYXNzZXMgYXJlIG5vdyBjcmVhdGVkIHdpdGggbmFtZXMgYnkgZGVmYXVsdAogICAgIyBtYXRjaGluZyB0aGF0IG9mIHRoZSB0YWJsZSBuYW1lLgogICAgVXNlciA9IEJhc2UuY2xhc3Nlcy51c2VyCiAgICBBZGRyZXNzID0gQmFzZS5jbGFzc2VzLmFkZHJlc3MKCiAgICBzZXNzaW9uID0gU2Vzc2lvbihlbmdpbmUpCgogICAgIyBydWRpbWVudGFyeSByZWxhdGlvbnNoaXBzIGFyZSBwcm9kdWNlZAogICAgc2Vzc2lvbi5hZGQoQWRkcmVzcyhlbWFpbF9hZGRyZXNzPSJmb29AYmFyLmNvbSIsIHVzZXI9VXNlcihuYW1lPSJmb28iKSkpCiAgICBzZXNzaW9uLmNvbW1pdCgpCgogICAgIyBjb2xsZWN0aW9uLWJhc2VkIHJlbGF0aW9uc2hpcHMgYXJlIGJ5IGRlZmF1bHQgbmFtZWQKICAgICMgIjxjbGFzc25hbWU+X2NvbGxlY3Rpb24iCiAgICBwcmludCAodTEuYWRkcmVzc19jb2xsZWN0aW9uKQoKQWJvdmUsIGNhbGxpbmcgOm1ldGg6YC5BdXRvbWFwQmFzZS5wcmVwYXJlYCB3aGlsZSBwYXNzaW5nIGFsb25nIHRoZQo6cGFyYW1yZWY6YC5BdXRvbWFwQmFzZS5wcmVwYXJlLnJlZmxlY3RgIHBhcmFtZXRlciBpbmRpY2F0ZXMgdGhhdCB0aGUKOm1ldGg6YF9zY2hlbWEuTWV0YURhdGEucmVmbGVjdGAKbWV0aG9kIHdpbGwgYmUgY2FsbGVkIG9uIHRoaXMgZGVjbGFyYXRpdmUgYmFzZQpjbGFzc2VzJyA6Y2xhc3M6YF9zY2hlbWEuTWV0YURhdGFgIGNvbGxlY3Rpb247IHRoZW4sIGVhY2ggKip2aWFibGUqKgo6Y2xhc3M6YF9zY2hlbWEuVGFibGVgIHdpdGhpbiB0aGUgOmNsYXNzOmBfc2NoZW1hLk1ldGFEYXRhYAp3aWxsIGdldCBhIG5ldyBtYXBwZWQgY2xhc3MKZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkuICBUaGUgOmNsYXNzOmBfc2NoZW1hLkZvcmVpZ25LZXlDb25zdHJhaW50YApvYmplY3RzIHdoaWNoCmxpbmsgdGhlIHZhcmlvdXMgdGFibGVzIHRvZ2V0aGVyIHdpbGwgYmUgdXNlZCB0byBwcm9kdWNlIG5ldywgYmlkaXJlY3Rpb25hbAo6ZnVuYzpgX29ybS5yZWxhdGlvbnNoaXBgIG9iamVjdHMgYmV0d2VlbiBjbGFzc2VzLgpUaGUgY2xhc3NlcyBhbmQgcmVsYXRpb25zaGlwcwpmb2xsb3cgYWxvbmcgYSBkZWZhdWx0IG5hbWluZyBzY2hlbWUgdGhhdCB3ZSBjYW4gY3VzdG9taXplLiAgQXQgdGhpcyBwb2ludCwKb3VyIGJhc2ljIG1hcHBpbmcgY29uc2lzdGluZyBvZiByZWxhdGVkIGBgVXNlcmBgIGFuZCBgYEFkZHJlc3NgYCBjbGFzc2VzIGlzCnJlYWR5IHRvIHVzZSBpbiB0aGUgdHJhZGl0aW9uYWwgd2F5LgoKLi4gbm90ZTo6IEJ5ICoqdmlhYmxlKiosIHdlIG1lYW4gdGhhdCBmb3IgYSB0YWJsZSB0byBiZSBtYXBwZWQsIGl0IG11c3QKICAgc3BlY2lmeSBhIHByaW1hcnkga2V5LiAgQWRkaXRpb25hbGx5LCBpZiB0aGUgdGFibGUgaXMgZGV0ZWN0ZWQgYXMgYmVpbmcKICAgYSBwdXJlIGFzc29jaWF0aW9uIHRhYmxlIGJldHdlZW4gdHdvIG90aGVyIHRhYmxlcywgaXQgd2lsbCBub3QgYmUgZGlyZWN0bHkKICAgbWFwcGVkIGFuZCB3aWxsIGluc3RlYWQgYmUgY29uZmlndXJlZCBhcyBhIG1hbnktdG8tbWFueSB0YWJsZSBiZXR3ZWVuCiAgIHRoZSBtYXBwaW5ncyBmb3IgdGhlIHR3byByZWZlcnJpbmcgdGFibGVzLgoKR2VuZXJhdGluZyBNYXBwaW5ncyBmcm9tIGFuIEV4aXN0aW5nIE1ldGFEYXRhCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKV2UgY2FuIHBhc3MgYSBwcmUtZGVjbGFyZWQgOmNsYXNzOmBfc2NoZW1hLk1ldGFEYXRhYCBvYmplY3QgdG8KOmZ1bmM6YC5hdXRvbWFwX2Jhc2VgLgpUaGlzIG9iamVjdCBjYW4gYmUgY29uc3RydWN0ZWQgaW4gYW55IHdheSwgaW5jbHVkaW5nIHByb2dyYW1tYXRpY2FsbHksIGZyb20KYSBzZXJpYWxpemVkIGZpbGUsIG9yIGZyb20gaXRzZWxmIGJlaW5nIHJlZmxlY3RlZCB1c2luZwo6bWV0aDpgX3NjaGVtYS5NZXRhRGF0YS5yZWZsZWN0YC4KQmVsb3cgd2UgaWxsdXN0cmF0ZSBhIGNvbWJpbmF0aW9uIG9mIHJlZmxlY3Rpb24gYW5kCmV4cGxpY2l0IHRhYmxlIGRlY2xhcmF0aW9uOjoKCiAgICBmcm9tIHNxbGFsY2hlbXkgaW1wb3J0IGNyZWF0ZV9lbmdpbmUsIE1ldGFEYXRhLCBUYWJsZSwgQ29sdW1uLCBGb3JlaWduS2V5CiAgICBmcm9tIHNxbGFsY2hlbXkuZXh0LmF1dG9tYXAgaW1wb3J0IGF1dG9tYXBfYmFzZQogICAgZW5naW5lID0gY3JlYXRlX2VuZ2luZSgic3FsaXRlOi8vL215ZGF0YWJhc2UuZGIiKQoKICAgICMgcHJvZHVjZSBvdXIgb3duIE1ldGFEYXRhIG9iamVjdAogICAgbWV0YWRhdGEgPSBNZXRhRGF0YSgpCgogICAgIyB3ZSBjYW4gcmVmbGVjdCBpdCBvdXJzZWx2ZXMgZnJvbSBhIGRhdGFiYXNlLCB1c2luZyBvcHRpb25zCiAgICAjIHN1Y2ggYXMgJ29ubHknIHRvIGxpbWl0IHdoYXQgdGFibGVzIHdlIGxvb2sgYXQuLi4KICAgIG1ldGFkYXRhLnJlZmxlY3QoZW5naW5lLCBvbmx5PVsndXNlcicsICdhZGRyZXNzJ10pCgogICAgIyAuLi4gb3IganVzdCBkZWZpbmUgb3VyIG93biBUYWJsZSBvYmplY3RzIHdpdGggaXQgKG9yIGNvbWJpbmUgYm90aCkKICAgIFRhYmxlKCd1c2VyX29yZGVyJywgbWV0YWRhdGEsCiAgICAgICAgICAgICAgICAgICAgQ29sdW1uKCdpZCcsIEludGVnZXIsIHByaW1hcnlfa2V5PVRydWUpLAogICAgICAgICAgICAgICAgICAgIENvbHVtbigndXNlcl9pZCcsIEZvcmVpZ25LZXkoJ3VzZXIuaWQnKSkKICAgICAgICAgICAgICAgICkKCiAgICAjIHdlIGNhbiB0aGVuIHByb2R1Y2UgYSBzZXQgb2YgbWFwcGluZ3MgZnJvbSB0aGlzIE1ldGFEYXRhLgogICAgQmFzZSA9IGF1dG9tYXBfYmFzZShtZXRhZGF0YT1tZXRhZGF0YSkKCiAgICAjIGNhbGxpbmcgcHJlcGFyZSgpIGp1c3Qgc2V0cyB1cCBtYXBwZWQgY2xhc3NlcyBhbmQgcmVsYXRpb25zaGlwcy4KICAgIEJhc2UucHJlcGFyZSgpCgogICAgIyBtYXBwZWQgY2xhc3NlcyBhcmUgcmVhZHkKICAgIFVzZXIsIEFkZHJlc3MsIE9yZGVyID0gQmFzZS5jbGFzc2VzLnVzZXIsIEJhc2UuY2xhc3Nlcy5hZGRyZXNzLFwKICAgICAgICBCYXNlLmNsYXNzZXMudXNlcl9vcmRlcgoKU3BlY2lmeWluZyBDbGFzc2VzIEV4cGxpY2l0bHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KClRoZSA6bW9kOmAuc3FsYWxjaGVteS5leHQuYXV0b21hcGAgZXh0ZW5zaW9uIGFsbG93cyBjbGFzc2VzIHRvIGJlIGRlZmluZWQKZXhwbGljaXRseSwgaW4gYSB3YXkgc2ltaWxhciB0byB0aGF0IG9mIHRoZSA6Y2xhc3M6YC5EZWZlcnJlZFJlZmxlY3Rpb25gIGNsYXNzLgpDbGFzc2VzIHRoYXQgZXh0ZW5kIGZyb20gOmNsYXNzOmAuQXV0b21hcEJhc2VgIGFjdCBsaWtlIHJlZ3VsYXIgZGVjbGFyYXRpdmUKY2xhc3NlcywgYnV0IGFyZSBub3QgaW1tZWRpYXRlbHkgbWFwcGVkIGFmdGVyIHRoZWlyIGNvbnN0cnVjdGlvbiwgYW5kIGFyZQppbnN0ZWFkIG1hcHBlZCB3aGVuIHdlIGNhbGwgOm1ldGg6YC5BdXRvbWFwQmFzZS5wcmVwYXJlYC4gIFRoZQo6bWV0aDpgLkF1dG9tYXBCYXNlLnByZXBhcmVgIG1ldGhvZCB3aWxsIG1ha2UgdXNlIG9mIHRoZSBjbGFzc2VzIHdlJ3ZlCmVzdGFibGlzaGVkIGJhc2VkIG9uIHRoZSB0YWJsZSBuYW1lIHdlIHVzZS4gIElmIG91ciBzY2hlbWEgY29udGFpbnMgdGFibGVzCmBgdXNlcmBgIGFuZCBgYGFkZHJlc3NgYCwgd2UgY2FuIGRlZmluZSBvbmUgb3IgYm90aCBvZiB0aGUgY2xhc3NlcyB0byBiZSB1c2VkOjoKCiAgICBmcm9tIHNxbGFsY2hlbXkuZXh0LmF1dG9tYXAgaW1wb3J0IGF1dG9tYXBfYmFzZQogICAgZnJvbSBzcWxhbGNoZW15IGltcG9ydCBjcmVhdGVfZW5naW5lCgogICAgIyBhdXRvbWFwIGJhc2UKICAgIEJhc2UgPSBhdXRvbWFwX2Jhc2UoKQoKICAgICMgcHJlLWRlY2xhcmUgVXNlciBmb3IgdGhlICd1c2VyJyB0YWJsZQogICAgY2xhc3MgVXNlcihCYXNlKToKICAgICAgICBfX3RhYmxlbmFtZV9fID0gJ3VzZXInCgogICAgICAgICMgb3ZlcnJpZGUgc2NoZW1hIGVsZW1lbnRzIGxpa2UgQ29sdW1ucwogICAgICAgIHVzZXJfbmFtZSA9IENvbHVtbignbmFtZScsIFN0cmluZykKCiAgICAgICAgIyBvdmVycmlkZSByZWxhdGlvbnNoaXBzIHRvbywgaWYgZGVzaXJlZC4KICAgICAgICAjIHdlIG11c3QgdXNlIHRoZSBzYW1lIG5hbWUgdGhhdCBhdXRvbWFwIHdvdWxkIHVzZSBmb3IgdGhlCiAgICAgICAgIyByZWxhdGlvbnNoaXAsIGFuZCBhbHNvIG11c3QgcmVmZXIgdG8gdGhlIGNsYXNzIG5hbWUgdGhhdCBhdXRvbWFwIHdpbGwKICAgICAgICAjIGdlbmVyYXRlIGZvciAiYWRkcmVzcyIKICAgICAgICBhZGRyZXNzX2NvbGxlY3Rpb24gPSByZWxhdGlvbnNoaXAoImFkZHJlc3MiLCBjb2xsZWN0aW9uX2NsYXNzPXNldCkKCiAgICAjIHJlZmxlY3QKICAgIGVuZ2luZSA9IGNyZWF0ZV9lbmdpbmUoInNxbGl0ZTovLy9teWRhdGFiYXNlLmRiIikKICAgIEJhc2UucHJlcGFyZShlbmdpbmUsIHJlZmxlY3Q9VHJ1ZSkKCiAgICAjIHdlIHN0aWxsIGhhdmUgQWRkcmVzcyBnZW5lcmF0ZWQgZnJvbSB0aGUgdGFibGVuYW1lICJhZGRyZXNzIiwKICAgICMgYnV0IFVzZXIgaXMgdGhlIHNhbWUgYXMgQmFzZS5jbGFzc2VzLlVzZXIgbm93CgogICAgQWRkcmVzcyA9IEJhc2UuY2xhc3Nlcy5hZGRyZXNzCgogICAgdTEgPSBzZXNzaW9uLnF1ZXJ5KFVzZXIpLmZpcnN0KCkKICAgIHByaW50ICh1MS5hZGRyZXNzX2NvbGxlY3Rpb24pCgogICAgIyB0aGUgYmFja3JlZiBpcyBzdGlsbCB0aGVyZToKICAgIGExID0gc2Vzc2lvbi5xdWVyeShBZGRyZXNzKS5maXJzdCgpCiAgICBwcmludCAoYTEudXNlcikKCkFib3ZlLCBvbmUgb2YgdGhlIG1vcmUgaW50cmljYXRlIGRldGFpbHMgaXMgdGhhdCB3ZSBpbGx1c3RyYXRlZCBvdmVycmlkaW5nCm9uZSBvZiB0aGUgOmZ1bmM6YF9vcm0ucmVsYXRpb25zaGlwYCBvYmplY3RzIHRoYXQgYXV0b21hcCB3b3VsZCBoYXZlIGNyZWF0ZWQuClRvIGRvIHRoaXMsIHdlIG5lZWRlZCB0byBtYWtlIHN1cmUgdGhlIG5hbWVzIG1hdGNoIHVwIHdpdGggd2hhdCBhdXRvbWFwCndvdWxkIG5vcm1hbGx5IGdlbmVyYXRlLCBpbiB0aGF0IHRoZSByZWxhdGlvbnNoaXAgbmFtZSB3b3VsZCBiZQpgYFVzZXIuYWRkcmVzc19jb2xsZWN0aW9uYGAgYW5kIHRoZSBuYW1lIG9mIHRoZSBjbGFzcyByZWZlcnJlZCB0bywgZnJvbQphdXRvbWFwJ3MgcGVyc3BlY3RpdmUsIGlzIGNhbGxlZCBgYGFkZHJlc3NgYCwgZXZlbiB0aG91Z2ggd2UgYXJlIHJlZmVycmluZyB0bwppdCBhcyBgYEFkZHJlc3NgYCB3aXRoaW4gb3VyIHVzYWdlIG9mIHRoaXMgY2xhc3MuCgpPdmVycmlkaW5nIE5hbWluZyBTY2hlbWVzCj09PT09PT09PT09PT09PT09PT09PT09PT0KCjptb2Q6YC5zcWxhbGNoZW15LmV4dC5hdXRvbWFwYCBpcyB0YXNrZWQgd2l0aCBwcm9kdWNpbmcgbWFwcGVkIGNsYXNzZXMgYW5kCnJlbGF0aW9uc2hpcCBuYW1lcyBiYXNlZCBvbiBhIHNjaGVtYSwgd2hpY2ggbWVhbnMgaXQgaGFzIGRlY2lzaW9uIHBvaW50cyBpbiBob3cKdGhlc2UgbmFtZXMgYXJlIGRldGVybWluZWQuICBUaGVzZSB0aHJlZSBkZWNpc2lvbiBwb2ludHMgYXJlIHByb3ZpZGVkIHVzaW5nCmZ1bmN0aW9ucyB3aGljaCBjYW4gYmUgcGFzc2VkIHRvIHRoZSA6bWV0aDpgLkF1dG9tYXBCYXNlLnByZXBhcmVgIG1ldGhvZCwgYW5kCmFyZSBrbm93biBhcyA6ZnVuYzpgLmNsYXNzbmFtZV9mb3JfdGFibGVgLAo6ZnVuYzpgLm5hbWVfZm9yX3NjYWxhcl9yZWxhdGlvbnNoaXBgLAphbmQgOmZ1bmM6YC5uYW1lX2Zvcl9jb2xsZWN0aW9uX3JlbGF0aW9uc2hpcGAuICBBbnkgb3IgYWxsIG9mIHRoZXNlCmZ1bmN0aW9ucyBhcmUgcHJvdmlkZWQgYXMgaW4gdGhlIGV4YW1wbGUgYmVsb3csIHdoZXJlIHdlIHVzZSBhICJjYW1lbCBjYXNlIgpzY2hlbWUgZm9yIGNsYXNzIG5hbWVzIGFuZCBhICJwbHVyYWxpemVyIiBmb3IgY29sbGVjdGlvbiBuYW1lcyB1c2luZyB0aGUKYEluZmxlY3QgPGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvaW5mbGVjdD5gXyBwYWNrYWdlOjoKCiAgICBpbXBvcnQgcmUKICAgIGltcG9ydCBpbmZsZWN0CgogICAgZGVmIGNhbWVsaXplX2NsYXNzbmFtZShiYXNlLCB0YWJsZW5hbWUsIHRhYmxlKToKICAgICAgICAiUHJvZHVjZSBhICdjYW1lbGl6ZWQnIGNsYXNzIG5hbWUsIGUuZy4gIgogICAgICAgICInd29yZHNfYW5kX3VuZGVyc2NvcmVzJyAtPiAnV29yZHNBbmRVbmRlcnNjb3JlcyciCgogICAgICAgIHJldHVybiBzdHIodGFibGVuYW1lWzBdLnVwcGVyKCkgKyBcCiAgICAgICAgICAgICAgICByZS5zdWIocidfKFthLXpdKScsIGxhbWJkYSBtOiBtLmdyb3VwKDEpLnVwcGVyKCksIHRhYmxlbmFtZVsxOl0pKQoKICAgIF9wbHVyYWxpemVyID0gaW5mbGVjdC5lbmdpbmUoKQogICAgZGVmIHBsdXJhbGl6ZV9jb2xsZWN0aW9uKGJhc2UsIGxvY2FsX2NscywgcmVmZXJyZWRfY2xzLCBjb25zdHJhaW50KToKICAgICAgICAiUHJvZHVjZSBhbiAndW5jYW1lbGl6ZWQnLCAncGx1cmFsaXplZCcgY2xhc3MgbmFtZSwgZS5nLiAiCiAgICAgICAgIidTb21lVGVybScgLT4gJ3NvbWVfdGVybXMnIgoKICAgICAgICByZWZlcnJlZF9uYW1lID0gcmVmZXJyZWRfY2xzLl9fbmFtZV9fCiAgICAgICAgdW5jYW1lbGl6ZWQgPSByZS5zdWIocidbQS1aXScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIG06ICJfJXMiICUgbS5ncm91cCgwKS5sb3dlcigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVycmVkX25hbWUpWzE6XQogICAgICAgIHBsdXJhbGl6ZWQgPSBfcGx1cmFsaXplci5wbHVyYWwodW5jYW1lbGl6ZWQpCiAgICAgICAgcmV0dXJuIHBsdXJhbGl6ZWQKCiAgICBmcm9tIHNxbGFsY2hlbXkuZXh0LmF1dG9tYXAgaW1wb3J0IGF1dG9tYXBfYmFzZQoKICAgIEJhc2UgPSBhdXRvbWFwX2Jhc2UoKQoKICAgIGVuZ2luZSA9IGNyZWF0ZV9lbmdpbmUoInNxbGl0ZTovLy9teWRhdGFiYXNlLmRiIikKCiAgICBCYXNlLnByZXBhcmUoZW5naW5lLCByZWZsZWN0PVRydWUsCiAgICAgICAgICAgICAgICBjbGFzc25hbWVfZm9yX3RhYmxlPWNhbWVsaXplX2NsYXNzbmFtZSwKICAgICAgICAgICAgICAgIG5hbWVfZm9yX2NvbGxlY3Rpb25fcmVsYXRpb25zaGlwPXBsdXJhbGl6ZV9jb2xsZWN0aW9uCiAgICAgICAgKQoKRnJvbSB0aGUgYWJvdmUgbWFwcGluZywgd2Ugd291bGQgbm93IGhhdmUgY2xhc3NlcyBgYFVzZXJgYCBhbmQgYGBBZGRyZXNzYGAsCndoZXJlIHRoZSBjb2xsZWN0aW9uIGZyb20gYGBVc2VyYGAgdG8gYGBBZGRyZXNzYGAgaXMgY2FsbGVkCmBgVXNlci5hZGRyZXNzZXNgYDo6CgogICAgVXNlciwgQWRkcmVzcyA9IEJhc2UuY2xhc3Nlcy5Vc2VyLCBCYXNlLmNsYXNzZXMuQWRkcmVzcwoKICAgIHUxID0gVXNlcihhZGRyZXNzZXM9W0FkZHJlc3MoZW1haWw9ImZvb0BiYXIuY29tIildKQoKUmVsYXRpb25zaGlwIERldGVjdGlvbgo9PT09PT09PT09PT09PT09PT09PT09CgpUaGUgdmFzdCBtYWpvcml0eSBvZiB3aGF0IGF1dG9tYXAgYWNjb21wbGlzaGVzIGlzIHRoZSBnZW5lcmF0aW9uIG9mCjpmdW5jOmBfb3JtLnJlbGF0aW9uc2hpcGAgc3RydWN0dXJlcyBiYXNlZCBvbiBmb3JlaWduIGtleXMuICBUaGUgbWVjaGFuaXNtCmJ5IHdoaWNoIHRoaXMgd29ya3MgZm9yIG1hbnktdG8tb25lIGFuZCBvbmUtdG8tbWFueSByZWxhdGlvbnNoaXBzIGlzIGFzCmZvbGxvd3M6CgoxLiBBIGdpdmVuIDpjbGFzczpgX3NjaGVtYS5UYWJsZWAsIGtub3duIHRvIGJlIG1hcHBlZCB0byBhIHBhcnRpY3VsYXIgY2xhc3MsCiAgIGlzIGV4YW1pbmVkIGZvciA6Y2xhc3M6YF9zY2hlbWEuRm9yZWlnbktleUNvbnN0cmFpbnRgIG9iamVjdHMuCgoyLiBGcm9tIGVhY2ggOmNsYXNzOmBfc2NoZW1hLkZvcmVpZ25LZXlDb25zdHJhaW50YCwgdGhlIHJlbW90ZQogICA6Y2xhc3M6YF9zY2hlbWEuVGFibGVgCiAgIG9iamVjdCBwcmVzZW50IGlzIG1hdGNoZWQgdXAgdG8gdGhlIGNsYXNzIHRvIHdoaWNoIGl0IGlzIHRvIGJlIG1hcHBlZCwKICAgaWYgYW55LCBlbHNlIGl0IGlzIHNraXBwZWQuCgozLiBBcyB0aGUgOmNsYXNzOmBfc2NoZW1hLkZvcmVpZ25LZXlDb25zdHJhaW50YAogICB3ZSBhcmUgZXhhbWluaW5nIGNvcnJlc3BvbmRzIHRvIGEKICAgcmVmZXJlbmNlIGZyb20gdGhlIGltbWVkaWF0ZSBtYXBwZWQgY2xhc3MsICB0aGUgcmVsYXRpb25zaGlwIHdpbGwgYmUgc2V0IHVwCiAgIGFzIGEgbWFueS10by1vbmUgcmVmZXJyaW5nIHRvIHRoZSByZWZlcnJlZCBjbGFzczsgYSBjb3JyZXNwb25kaW5nCiAgIG9uZS10by1tYW55IGJhY2tyZWYgd2lsbCBiZSBjcmVhdGVkIG9uIHRoZSByZWZlcnJlZCBjbGFzcyByZWZlcnJpbmcKICAgdG8gdGhpcyBjbGFzcy4KCjQuIElmIGFueSBvZiB0aGUgY29sdW1ucyB0aGF0IGFyZSBwYXJ0IG9mIHRoZQogICA6Y2xhc3M6YF9zY2hlbWEuRm9yZWlnbktleUNvbnN0cmFpbnRgCiAgIGFyZSBub3QgbnVsbGFibGUgKGUuZy4gYGBudWxsYWJsZT1GYWxzZWBgKSwgYQogICA6cGFyYW1yZWY6YF9vcm0ucmVsYXRpb25zaGlwLmNhc2NhZGVgIGtleXdvcmQgYXJndW1lbnQKICAgb2YgYGBhbGwsIGRlbGV0ZS1vcnBoYW5gYCB3aWxsIGJlIGFkZGVkIHRvIHRoZSBrZXl3b3JkIGFyZ3VtZW50cyB0bwogICBiZSBwYXNzZWQgdG8gdGhlIHJlbGF0aW9uc2hpcCBvciBiYWNrcmVmLiAgSWYgdGhlCiAgIDpjbGFzczpgX3NjaGVtYS5Gb3JlaWduS2V5Q29uc3RyYWludGAgcmVwb3J0cyB0aGF0CiAgIDpwYXJhbXJlZjpgX3NjaGVtYS5Gb3JlaWduS2V5Q29uc3RyYWludC5vbmRlbGV0ZWAKICAgaXMgc2V0IHRvIGBgQ0FTQ0FERWBgIGZvciBhIG5vdCBudWxsIG9yIGBgU0VUIE5VTExgYCBmb3IgYSBudWxsYWJsZQogICBzZXQgb2YgY29sdW1ucywgdGhlIG9wdGlvbiA6cGFyYW1yZWY6YF9vcm0ucmVsYXRpb25zaGlwLnBhc3NpdmVfZGVsZXRlc2AKICAgZmxhZyBpcyBzZXQgdG8gYGBUcnVlYGAgaW4gdGhlIHNldCBvZiByZWxhdGlvbnNoaXAga2V5d29yZCBhcmd1bWVudHMuCiAgIE5vdGUgdGhhdCBub3QgYWxsIGJhY2tlbmRzIHN1cHBvcnQgcmVmbGVjdGlvbiBvZiBPTiBERUxFVEUuCgogICAuLiB2ZXJzaW9uYWRkZWQ6OiAxLjAuMCAtIGF1dG9tYXAgd2lsbCBkZXRlY3Qgbm9uLW51bGxhYmxlIGZvcmVpZ24ga2V5CiAgICAgIGNvbnN0cmFpbnRzIHdoZW4gcHJvZHVjaW5nIGEgb25lLXRvLW1hbnkgcmVsYXRpb25zaGlwIGFuZCBlc3RhYmxpc2gKICAgICAgYSBkZWZhdWx0IGNhc2NhZGUgb2YgYGBhbGwsIGRlbGV0ZS1vcnBoYW5gYCBpZiBzbzsgYWRkaXRpb25hbGx5LAogICAgICBpZiB0aGUgY29uc3RyYWludCBzcGVjaWZpZXMKICAgICAgOnBhcmFtcmVmOmBfc2NoZW1hLkZvcmVpZ25LZXlDb25zdHJhaW50Lm9uZGVsZXRlYAogICAgICBvZiBgYENBU0NBREVgYCBmb3Igbm9uLW51bGxhYmxlIG9yIGBgU0VUIE5VTExgYCBmb3IgbnVsbGFibGUgY29sdW1ucywKICAgICAgdGhlIGBgcGFzc2l2ZV9kZWxldGVzPVRydWVgYCBvcHRpb24gaXMgYWxzbyBhZGRlZC4KCjUuIFRoZSBuYW1lcyBvZiB0aGUgcmVsYXRpb25zaGlwcyBhcmUgZGV0ZXJtaW5lZCB1c2luZyB0aGUKICAgOnBhcmFtcmVmOmAuQXV0b21hcEJhc2UucHJlcGFyZS5uYW1lX2Zvcl9zY2FsYXJfcmVsYXRpb25zaGlwYCBhbmQKICAgOnBhcmFtcmVmOmAuQXV0b21hcEJhc2UucHJlcGFyZS5uYW1lX2Zvcl9jb2xsZWN0aW9uX3JlbGF0aW9uc2hpcGAKICAgY2FsbGFibGUgZnVuY3Rpb25zLiAgSXQgaXMgaW1wb3J0YW50IHRvIG5vdGUgdGhhdCB0aGUgZGVmYXVsdCByZWxhdGlvbnNoaXAKICAgbmFtaW5nIGRlcml2ZXMgdGhlIG5hbWUgZnJvbSB0aGUgKip0aGUgYWN0dWFsIGNsYXNzIG5hbWUqKi4gIElmIHlvdSd2ZQogICBnaXZlbiBhIHBhcnRpY3VsYXIgY2xhc3MgYW4gZXhwbGljaXQgbmFtZSBieSBkZWNsYXJpbmcgaXQsIG9yIHNwZWNpZmllZCBhbgogICBhbHRlcm5hdGUgY2xhc3MgbmFtaW5nIHNjaGVtZSwgdGhhdCdzIHRoZSBuYW1lIGZyb20gd2hpY2ggdGhlIHJlbGF0aW9uc2hpcAogICBuYW1lIHdpbGwgYmUgZGVyaXZlZC4KCjYuIFRoZSBjbGFzc2VzIGFyZSBpbnNwZWN0ZWQgZm9yIGFuIGV4aXN0aW5nIG1hcHBlZCBwcm9wZXJ0eSBtYXRjaGluZyB0aGVzZQogICBuYW1lcy4gIElmIG9uZSBpcyBkZXRlY3RlZCBvbiBvbmUgc2lkZSwgYnV0IG5vbmUgb24gdGhlIG90aGVyIHNpZGUsCiAgIDpjbGFzczpgLkF1dG9tYXBCYXNlYCBhdHRlbXB0cyB0byBjcmVhdGUgYSByZWxhdGlvbnNoaXAgb24gdGhlIG1pc3Npbmcgc2lkZSwKICAgdGhlbiB1c2VzIHRoZSA6cGFyYW1yZWY6YF9vcm0ucmVsYXRpb25zaGlwLmJhY2tfcG9wdWxhdGVzYAogICBwYXJhbWV0ZXIgaW4gb3JkZXIgdG8KICAgcG9pbnQgdGhlIG5ldyByZWxhdGlvbnNoaXAgdG8gdGhlIG90aGVyIHNpZGUuCgo3LiBJbiB0aGUgdXN1YWwgY2FzZSB3aGVyZSBubyByZWxhdGlvbnNoaXAgaXMgb24gZWl0aGVyIHNpZGUsCiAgIDptZXRoOmAuQXV0b21hcEJhc2UucHJlcGFyZWAgcHJvZHVjZXMgYSA6ZnVuYzpgX29ybS5yZWxhdGlvbnNoaXBgIG9uIHRoZQogICAibWFueS10by1vbmUiIHNpZGUgYW5kIG1hdGNoZXMgaXQgdG8gdGhlIG90aGVyIHVzaW5nIHRoZQogICA6cGFyYW1yZWY6YF9vcm0ucmVsYXRpb25zaGlwLmJhY2tyZWZgIHBhcmFtZXRlci4KCjguIFByb2R1Y3Rpb24gb2YgdGhlIDpmdW5jOmBfb3JtLnJlbGF0aW9uc2hpcGAgYW5kIG9wdGlvbmFsbHkgdGhlCiAgIDpmdW5jOmAuYmFja3JlZmAKICAgaXMgaGFuZGVkIG9mZiB0byB0aGUgOnBhcmFtcmVmOmAuQXV0b21hcEJhc2UucHJlcGFyZS5nZW5lcmF0ZV9yZWxhdGlvbnNoaXBgCiAgIGZ1bmN0aW9uLCB3aGljaCBjYW4gYmUgc3VwcGxpZWQgYnkgdGhlIGVuZC11c2VyIGluIG9yZGVyIHRvIGF1Z21lbnQKICAgdGhlIGFyZ3VtZW50cyBwYXNzZWQgdG8gOmZ1bmM6YF9vcm0ucmVsYXRpb25zaGlwYCBvciA6ZnVuYzpgLmJhY2tyZWZgIG9yIHRvCiAgIG1ha2UgdXNlIG9mIGN1c3RvbSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlc2UgZnVuY3Rpb25zLgoKQ3VzdG9tIFJlbGF0aW9uc2hpcCBBcmd1bWVudHMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KClRoZSA6cGFyYW1yZWY6YC5BdXRvbWFwQmFzZS5wcmVwYXJlLmdlbmVyYXRlX3JlbGF0aW9uc2hpcGAgaG9vayBjYW4gYmUgdXNlZAp0byBhZGQgcGFyYW1ldGVycyB0byByZWxhdGlvbnNoaXBzLiAgRm9yIG1vc3QgY2FzZXMsIHdlIGNhbiBtYWtlIHVzZSBvZiB0aGUKZXhpc3RpbmcgOmZ1bmM6YC5hdXRvbWFwLmdlbmVyYXRlX3JlbGF0aW9uc2hpcGAgZnVuY3Rpb24gdG8gcmV0dXJuCnRoZSBvYmplY3QsIGFmdGVyIGF1Z21lbnRpbmcgdGhlIGdpdmVuIGtleXdvcmQgZGljdGlvbmFyeSB3aXRoIG91ciBvd24KYXJndW1lbnRzLgoKQmVsb3cgaXMgYW4gaWxsdXN0cmF0aW9uIG9mIGhvdyB0byBzZW5kCjpwYXJhbXJlZjpgX29ybS5yZWxhdGlvbnNoaXAuY2FzY2FkZWAgYW5kCjpwYXJhbXJlZjpgX29ybS5yZWxhdGlvbnNoaXAucGFzc2l2ZV9kZWxldGVzYApvcHRpb25zIGFsb25nIHRvIGFsbCBvbmUtdG8tbWFueSByZWxhdGlvbnNoaXBzOjoKCiAgICBmcm9tIHNxbGFsY2hlbXkuZXh0LmF1dG9tYXAgaW1wb3J0IGdlbmVyYXRlX3JlbGF0aW9uc2hpcAoKICAgIGRlZiBfZ2VuX3JlbGF0aW9uc2hpcChiYXNlLCBkaXJlY3Rpb24sIHJldHVybl9mbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cm5hbWUsIGxvY2FsX2NscywgcmVmZXJyZWRfY2xzLCAqKmt3KToKICAgICAgICBpZiBkaXJlY3Rpb24gaXMgaW50ZXJmYWNlcy5PTkVUT01BTlk6CiAgICAgICAgICAgIGt3WydjYXNjYWRlJ10gPSAnYWxsLCBkZWxldGUtb3JwaGFuJwogICAgICAgICAgICBrd1sncGFzc2l2ZV9kZWxldGVzJ10gPSBUcnVlCiAgICAgICAgIyBtYWtlIHVzZSBvZiB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gdG8gYWN0dWFsbHkgcmV0dXJuCiAgICAgICAgIyB0aGUgcmVzdWx0LgogICAgICAgIHJldHVybiBnZW5lcmF0ZV9yZWxhdGlvbnNoaXAoYmFzZSwgZGlyZWN0aW9uLCByZXR1cm5fZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRybmFtZSwgbG9jYWxfY2xzLCByZWZlcnJlZF9jbHMsICoqa3cpCgogICAgZnJvbSBzcWxhbGNoZW15LmV4dC5hdXRvbWFwIGltcG9ydCBhdXRvbWFwX2Jhc2UKICAgIGZyb20gc3FsYWxjaGVteSBpbXBvcnQgY3JlYXRlX2VuZ2luZQoKICAgICMgYXV0b21hcCBiYXNlCiAgICBCYXNlID0gYXV0b21hcF9iYXNlKCkKCiAgICBlbmdpbmUgPSBjcmVhdGVfZW5naW5lKCJzcWxpdGU6Ly8vbXlkYXRhYmFzZS5kYiIpCiAgICBCYXNlLnByZXBhcmUoZW5naW5lLCByZWZsZWN0PVRydWUsCiAgICAgICAgICAgICAgICBnZW5lcmF0ZV9yZWxhdGlvbnNoaXA9X2dlbl9yZWxhdGlvbnNoaXApCgpNYW55LXRvLU1hbnkgcmVsYXRpb25zaGlwcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKOm1vZDpgLnNxbGFsY2hlbXkuZXh0LmF1dG9tYXBgIHdpbGwgZ2VuZXJhdGUgbWFueS10by1tYW55IHJlbGF0aW9uc2hpcHMsIGUuZy4KdGhvc2Ugd2hpY2ggY29udGFpbiBhIGBgc2Vjb25kYXJ5YGAgYXJndW1lbnQuICBUaGUgcHJvY2VzcyBmb3IgcHJvZHVjaW5nIHRoZXNlCmlzIGFzIGZvbGxvd3M6CgoxLiBBIGdpdmVuIDpjbGFzczpgX3NjaGVtYS5UYWJsZWAgaXMgZXhhbWluZWQgZm9yCiAgIDpjbGFzczpgX3NjaGVtYS5Gb3JlaWduS2V5Q29uc3RyYWludGAKICAgb2JqZWN0cywgYmVmb3JlIGFueSBtYXBwZWQgY2xhc3MgaGFzIGJlZW4gYXNzaWduZWQgdG8gaXQuCgoyLiBJZiB0aGUgdGFibGUgY29udGFpbnMgdHdvIGFuZCBleGFjdGx5IHR3bwogICA6Y2xhc3M6YF9zY2hlbWEuRm9yZWlnbktleUNvbnN0cmFpbnRgCiAgIG9iamVjdHMsIGFuZCBhbGwgY29sdW1ucyB3aXRoaW4gdGhpcyB0YWJsZSBhcmUgbWVtYmVycyBvZiB0aGVzZSB0d28KICAgOmNsYXNzOmBfc2NoZW1hLkZvcmVpZ25LZXlDb25zdHJhaW50YCBvYmplY3RzLCB0aGUgdGFibGUgaXMgYXNzdW1lZCB0byBiZSBhCiAgICJzZWNvbmRhcnkiIHRhYmxlLCBhbmQgd2lsbCAqKm5vdCBiZSBtYXBwZWQgZGlyZWN0bHkqKi4KCjMuIFRoZSB0d28gKG9yIG9uZSwgZm9yIHNlbGYtcmVmZXJlbnRpYWwpIGV4dGVybmFsIHRhYmxlcyB0byB3aGljaCB0aGUKICAgOmNsYXNzOmBfc2NoZW1hLlRhYmxlYAogICByZWZlcnMgdG8gYXJlIG1hdGNoZWQgdG8gdGhlIGNsYXNzZXMgdG8gd2hpY2ggdGhleSB3aWxsIGJlCiAgIG1hcHBlZCwgaWYgYW55LgoKNC4gSWYgbWFwcGVkIGNsYXNzZXMgZm9yIGJvdGggc2lkZXMgYXJlIGxvY2F0ZWQsIGEgbWFueS10by1tYW55IGJpLWRpcmVjdGlvbmFsCiAgIDpmdW5jOmBfb3JtLnJlbGF0aW9uc2hpcGAgLyA6ZnVuYzpgLmJhY2tyZWZgCiAgIHBhaXIgaXMgY3JlYXRlZCBiZXR3ZWVuIHRoZSB0d28KICAgY2xhc3Nlcy4KCjUuIFRoZSBvdmVycmlkZSBsb2dpYyBmb3IgbWFueS10by1tYW55IHdvcmtzIHRoZSBzYW1lIGFzIHRoYXQgb2Ygb25lLXRvLW1hbnkvCiAgIG1hbnktdG8tb25lOyB0aGUgOmZ1bmM6YC5nZW5lcmF0ZV9yZWxhdGlvbnNoaXBgIGZ1bmN0aW9uIGlzIGNhbGxlZCB1cG9uCiAgIHRvIGdlbmVyYXRlIHRoZSBzdHJ1Y3R1cmVzIGFuZCBleGlzdGluZyBhdHRyaWJ1dGVzIHdpbGwgYmUgbWFpbnRhaW5lZC4KClJlbGF0aW9uc2hpcHMgd2l0aCBJbmhlcml0YW5jZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCjptb2Q6YC5zcWxhbGNoZW15LmV4dC5hdXRvbWFwYCB3aWxsIG5vdCBnZW5lcmF0ZSBhbnkgcmVsYXRpb25zaGlwcyBiZXR3ZWVuCnR3byBjbGFzc2VzIHRoYXQgYXJlIGluIGFuIGluaGVyaXRhbmNlIHJlbGF0aW9uc2hpcC4gICBUaGF0IGlzLCB3aXRoIHR3bwpjbGFzc2VzIGdpdmVuIGFzIGZvbGxvd3M6OgoKICAgIGNsYXNzIEVtcGxveWVlKEJhc2UpOgogICAgICAgIF9fdGFibGVuYW1lX18gPSAnZW1wbG95ZWUnCiAgICAgICAgaWQgPSBDb2x1bW4oSW50ZWdlciwgcHJpbWFyeV9rZXk9VHJ1ZSkKICAgICAgICB0eXBlID0gQ29sdW1uKFN0cmluZyg1MCkpCiAgICAgICAgX19tYXBwZXJfYXJnc19fID0gewogICAgICAgICAgICAgJ3BvbHltb3JwaGljX2lkZW50aXR5JzonZW1wbG95ZWUnLCAncG9seW1vcnBoaWNfb24nOiB0eXBlCiAgICAgICAgfQoKICAgIGNsYXNzIEVuZ2luZWVyKEVtcGxveWVlKToKICAgICAgICBfX3RhYmxlbmFtZV9fID0gJ2VuZ2luZWVyJwogICAgICAgIGlkID0gQ29sdW1uKEludGVnZXIsIEZvcmVpZ25LZXkoJ2VtcGxveWVlLmlkJyksIHByaW1hcnlfa2V5PVRydWUpCiAgICAgICAgX19tYXBwZXJfYXJnc19fID0gewogICAgICAgICAgICAncG9seW1vcnBoaWNfaWRlbnRpdHknOidlbmdpbmVlcicsCiAgICAgICAgfQoKVGhlIGZvcmVpZ24ga2V5IGZyb20gYGBFbmdpbmVlcmBgIHRvIGBgRW1wbG95ZWVgYCBpcyB1c2VkIG5vdCBmb3IgYQpyZWxhdGlvbnNoaXAsIGJ1dCB0byBlc3RhYmxpc2ggam9pbmVkIGluaGVyaXRhbmNlIGJldHdlZW4gdGhlIHR3byBjbGFzc2VzLgoKTm90ZSB0aGF0IHRoaXMgbWVhbnMgYXV0b21hcCB3aWxsIG5vdCBnZW5lcmF0ZSAqYW55KiByZWxhdGlvbnNoaXBzCmZvciBmb3JlaWduIGtleXMgdGhhdCBsaW5rIGZyb20gYSBzdWJjbGFzcyB0byBhIHN1cGVyY2xhc3MuICBJZiBhIG1hcHBpbmcKaGFzIGFjdHVhbCByZWxhdGlvbnNoaXBzIGZyb20gc3ViY2xhc3MgdG8gc3VwZXJjbGFzcyBhcyB3ZWxsLCB0aG9zZQpuZWVkIHRvIGJlIGV4cGxpY2l0LiAgQmVsb3csIGFzIHdlIGhhdmUgdHdvIHNlcGFyYXRlIGZvcmVpZ24ga2V5cwpmcm9tIGBgRW5naW5lZXJgYCB0byBgYEVtcGxveWVlYGAsIHdlIG5lZWQgdG8gc2V0IHVwIGJvdGggdGhlIHJlbGF0aW9uc2hpcAp3ZSB3YW50IGFzIHdlbGwgYXMgdGhlIGBgaW5oZXJpdF9jb25kaXRpb25gYCwgYXMgdGhlc2UgYXJlIG5vdCB0aGluZ3MKU1FMQWxjaGVteSBjYW4gZ3Vlc3M6OgoKICAgIGNsYXNzIEVtcGxveWVlKEJhc2UpOgogICAgICAgIF9fdGFibGVuYW1lX18gPSAnZW1wbG95ZWUnCiAgICAgICAgaWQgPSBDb2x1bW4oSW50ZWdlciwgcHJpbWFyeV9rZXk9VHJ1ZSkKICAgICAgICB0eXBlID0gQ29sdW1uKFN0cmluZyg1MCkpCgogICAgICAgIF9fbWFwcGVyX2FyZ3NfXyA9IHsKICAgICAgICAgICAgJ3BvbHltb3JwaGljX2lkZW50aXR5JzonZW1wbG95ZWUnLCAncG9seW1vcnBoaWNfb24nOnR5cGUKICAgICAgICB9CgogICAgY2xhc3MgRW5naW5lZXIoRW1wbG95ZWUpOgogICAgICAgIF9fdGFibGVuYW1lX18gPSAnZW5naW5lZXInCiAgICAgICAgaWQgPSBDb2x1bW4oSW50ZWdlciwgRm9yZWlnbktleSgnZW1wbG95ZWUuaWQnKSwgcHJpbWFyeV9rZXk9VHJ1ZSkKICAgICAgICBmYXZvcml0ZV9lbXBsb3llZV9pZCA9IENvbHVtbihJbnRlZ2VyLCBGb3JlaWduS2V5KCdlbXBsb3llZS5pZCcpKQoKICAgICAgICBmYXZvcml0ZV9lbXBsb3llZSA9IHJlbGF0aW9uc2hpcChFbXBsb3llZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlaWduX2tleXM9ZmF2b3JpdGVfZW1wbG95ZWVfaWQpCgogICAgICAgIF9fbWFwcGVyX2FyZ3NfXyA9IHsKICAgICAgICAgICAgJ3BvbHltb3JwaGljX2lkZW50aXR5JzonZW5naW5lZXInLAogICAgICAgICAgICAnaW5oZXJpdF9jb25kaXRpb24nOiBpZCA9PSBFbXBsb3llZS5pZAogICAgICAgIH0KCkhhbmRsaW5nIFNpbXBsZSBOYW1pbmcgQ29uZmxpY3RzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpJbiB0aGUgY2FzZSBvZiBuYW1pbmcgY29uZmxpY3RzIGR1cmluZyBtYXBwaW5nLCBvdmVycmlkZSBhbnkgb2YKOmZ1bmM6YC5jbGFzc25hbWVfZm9yX3RhYmxlYCwgOmZ1bmM6YC5uYW1lX2Zvcl9zY2FsYXJfcmVsYXRpb25zaGlwYCwKYW5kIDpmdW5jOmAubmFtZV9mb3JfY29sbGVjdGlvbl9yZWxhdGlvbnNoaXBgIGFzIG5lZWRlZC4gIEZvciBleGFtcGxlLCBpZgphdXRvbWFwIGlzIGF0dGVtcHRpbmcgdG8gbmFtZSBhIG1hbnktdG8tb25lIHJlbGF0aW9uc2hpcCB0aGUgc2FtZSBhcyBhbgpleGlzdGluZyBjb2x1bW4sIGFuIGFsdGVybmF0ZSBjb252ZW50aW9uIGNhbiBiZSBjb25kaXRpb25hbGx5IHNlbGVjdGVkLiAgR2l2ZW4KYSBzY2hlbWE6CgouLiBzb3VyY2Vjb2RlOjogc3FsCgogICAgQ1JFQVRFIFRBQkxFIHRhYmxlX2EgKAogICAgICAgIGlkIElOVEVHRVIgUFJJTUFSWSBLRVkKICAgICk7CgogICAgQ1JFQVRFIFRBQkxFIHRhYmxlX2IgKAogICAgICAgIGlkIElOVEVHRVIgUFJJTUFSWSBLRVksCiAgICAgICAgdGFibGVfYSBJTlRFR0VSLAogICAgICAgIEZPUkVJR04gS0VZKHRhYmxlX2EpIFJFRkVSRU5DRVMgdGFibGVfYShpZCkKICAgICk7CgpUaGUgYWJvdmUgc2NoZW1hIHdpbGwgZmlyc3QgYXV0b21hcCB0aGUgYGB0YWJsZV9hYGAgdGFibGUgYXMgYSBjbGFzcyBuYW1lZApgYHRhYmxlX2FgYDsgaXQgd2lsbCB0aGVuIGF1dG9tYXAgYSByZWxhdGlvbnNoaXAgb250byB0aGUgY2xhc3MgZm9yIGBgdGFibGVfYmBgCndpdGggdGhlIHNhbWUgbmFtZSBhcyB0aGlzIHJlbGF0ZWQgY2xhc3MsIGUuZy4gYGB0YWJsZV9hYGAuICBUaGlzCnJlbGF0aW9uc2hpcCBuYW1lIGNvbmZsaWN0cyB3aXRoIHRoZSBtYXBwaW5nIGNvbHVtbiBgYHRhYmxlX2IudGFibGVfYWBgLAphbmQgd2lsbCBlbWl0IGFuIGVycm9yIG9uIG1hcHBpbmcuCgpXZSBjYW4gcmVzb2x2ZSB0aGlzIGNvbmZsaWN0IGJ5IHVzaW5nIGFuIHVuZGVyc2NvcmUgYXMgZm9sbG93czo6CgogICAgZGVmIG5hbWVfZm9yX3NjYWxhcl9yZWxhdGlvbnNoaXAoYmFzZSwgbG9jYWxfY2xzLCByZWZlcnJlZF9jbHMsIGNvbnN0cmFpbnQpOgogICAgICAgIG5hbWUgPSByZWZlcnJlZF9jbHMuX19uYW1lX18ubG93ZXIoKQogICAgICAgIGxvY2FsX3RhYmxlID0gbG9jYWxfY2xzLl9fdGFibGVfXwogICAgICAgIGlmIG5hbWUgaW4gbG9jYWxfdGFibGUuY29sdW1uczoKICAgICAgICAgICAgbmV3bmFtZSA9IG5hbWUgKyAiXyIKICAgICAgICAgICAgd2FybmluZ3Mud2FybigKICAgICAgICAgICAgICAgICJBbHJlYWR5IGRldGVjdGVkIG5hbWUgJXMgcHJlc2VudC4gIHVzaW5nICVzIiAlCiAgICAgICAgICAgICAgICAobmFtZSwgbmV3bmFtZSkpCiAgICAgICAgICAgIHJldHVybiBuZXduYW1lCiAgICAgICAgcmV0dXJuIG5hbWUKCgogICAgQmFzZS5wcmVwYXJlKGVuZ2luZSwgcmVmbGVjdD1UcnVlLAogICAgICAgIG5hbWVfZm9yX3NjYWxhcl9yZWxhdGlvbnNoaXA9bmFtZV9mb3Jfc2NhbGFyX3JlbGF0aW9uc2hpcCkKCkFsdGVybmF0aXZlbHksIHdlIGNhbiBjaGFuZ2UgdGhlIG5hbWUgb24gdGhlIGNvbHVtbiBzaWRlLiAgIFRoZSBjb2x1bW5zCnRoYXQgYXJlIG1hcHBlZCBjYW4gYmUgbW9kaWZpZWQgdXNpbmcgdGhlIHRlY2huaXF1ZSBkZXNjcmliZWQgYXQKOnJlZjpgbWFwcGVyX2NvbHVtbl9kaXN0aW5jdF9uYW1lc2AsIGJ5IGFzc2lnbmluZyB0aGUgY29sdW1uIGV4cGxpY2l0bHkKdG8gYSBuZXcgbmFtZTo6CgogICAgQmFzZSA9IGF1dG9tYXBfYmFzZSgpCgogICAgY2xhc3MgVGFibGVCKEJhc2UpOgogICAgICAgIF9fdGFibGVuYW1lX18gPSAndGFibGVfYicKICAgICAgICBfdGFibGVfYSA9IENvbHVtbigndGFibGVfYScsIEZvcmVpZ25LZXkoJ3RhYmxlX2EuaWQnKSkKCiAgICBCYXNlLnByZXBhcmUoZW5naW5lLCByZWZsZWN0PVRydWUpCgoKVXNpbmcgQXV0b21hcCB3aXRoIEV4cGxpY2l0IERlY2xhcmF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpBcyBub3RlZCBwcmV2aW91c2x5LCBhdXRvbWFwIGhhcyBubyBkZXBlbmRlbmN5IG9uIHJlZmxlY3Rpb24sIGFuZCBjYW4gbWFrZQp1c2Ugb2YgYW55IGNvbGxlY3Rpb24gb2YgOmNsYXNzOmBfc2NoZW1hLlRhYmxlYCBvYmplY3RzIHdpdGhpbiBhCjpjbGFzczpgX3NjaGVtYS5NZXRhRGF0YWAKY29sbGVjdGlvbi4gIEZyb20gdGhpcywgaXQgZm9sbG93cyB0aGF0IGF1dG9tYXAgY2FuIGFsc28gYmUgdXNlZApnZW5lcmF0ZSBtaXNzaW5nIHJlbGF0aW9uc2hpcHMgZ2l2ZW4gYW4gb3RoZXJ3aXNlIGNvbXBsZXRlIG1vZGVsIHRoYXQgZnVsbHkKZGVmaW5lcyB0YWJsZSBtZXRhZGF0YTo6CgogICAgZnJvbSBzcWxhbGNoZW15LmV4dC5hdXRvbWFwIGltcG9ydCBhdXRvbWFwX2Jhc2UKICAgIGZyb20gc3FsYWxjaGVteSBpbXBvcnQgQ29sdW1uLCBJbnRlZ2VyLCBTdHJpbmcsIEZvcmVpZ25LZXkKCiAgICBCYXNlID0gYXV0b21hcF9iYXNlKCkKCiAgICBjbGFzcyBVc2VyKEJhc2UpOgogICAgICAgIF9fdGFibGVuYW1lX18gPSAndXNlcicKCiAgICAgICAgaWQgPSBDb2x1bW4oSW50ZWdlciwgcHJpbWFyeV9rZXk9VHJ1ZSkKICAgICAgICBuYW1lID0gQ29sdW1uKFN0cmluZykKCiAgICBjbGFzcyBBZGRyZXNzKEJhc2UpOgogICAgICAgIF9fdGFibGVuYW1lX18gPSAnYWRkcmVzcycKCiAgICAgICAgaWQgPSBDb2x1bW4oSW50ZWdlciwgcHJpbWFyeV9rZXk9VHJ1ZSkKICAgICAgICBlbWFpbCA9IENvbHVtbihTdHJpbmcpCiAgICAgICAgdXNlcl9pZCA9IENvbHVtbihGb3JlaWduS2V5KCd1c2VyLmlkJykpCgogICAgIyBwcm9kdWNlIHJlbGF0aW9uc2hpcHMKICAgIEJhc2UucHJlcGFyZSgpCgogICAgIyBtYXBwaW5nIGlzIGNvbXBsZXRlLCB3aXRoICJhZGRyZXNzX2NvbGxlY3Rpb24iIGFuZAogICAgIyAidXNlciIgcmVsYXRpb25zaGlwcwogICAgYTEgPSBBZGRyZXNzKGVtYWlsPSd1MScpCiAgICBhMiA9IEFkZHJlc3MoZW1haWw9J3UyJykKICAgIHUxID0gVXNlcihhZGRyZXNzX2NvbGxlY3Rpb249W2ExLCBhMl0pCiAgICBhc3NlcnQgYTEudXNlciBpcyB1MQoKQWJvdmUsIGdpdmVuIG1vc3RseSBjb21wbGV0ZSBgYFVzZXJgYCBhbmQgYGBBZGRyZXNzYGAgbWFwcGluZ3MsIHRoZQo6Y2xhc3M6YF9zY2hlbWEuRm9yZWlnbktleWAgd2hpY2ggd2UgZGVmaW5lZCBvbiBgYEFkZHJlc3MudXNlcl9pZGBgIGFsbG93ZWQgYQpiaWRpcmVjdGlvbmFsIHJlbGF0aW9uc2hpcCBwYWlyIGBgQWRkcmVzcy51c2VyYGAgYW5kCmBgVXNlci5hZGRyZXNzX2NvbGxlY3Rpb25gYCB0byBiZSBnZW5lcmF0ZWQgb24gdGhlIG1hcHBlZCBjbGFzc2VzLgoKTm90ZSB0aGF0IHdoZW4gc3ViY2xhc3NpbmcgOmNsYXNzOmAuQXV0b21hcEJhc2VgLAp0aGUgOm1ldGg6YC5BdXRvbWFwQmFzZS5wcmVwYXJlYCBtZXRob2QgaXMgcmVxdWlyZWQ7IGlmIG5vdCBjYWxsZWQsIHRoZSBjbGFzc2VzCndlJ3ZlIGRlY2xhcmVkIGFyZSBpbiBhbiB1bi1tYXBwZWQgc3RhdGUuCgoK6QEAAAApAdoQZGVjbGFyYXRpdmVfYmFzZSkB2hVfRGVmZXJyZWRNYXBwZXJDb25maWfpAgAAACkB2gR1dGlsKQHaB2JhY2tyZWYpAdoDZXhjKQHaCmludGVyZmFjZXMpAdoMcmVsYXRpb25zaGlwKQHaEF9DT05GSUdVUkVfTVVURVgpAdoURm9yZWlnbktleUNvbnN0cmFpbnQpAdoEYW5kX2MDAAAAAAAAAAAAAAADAAAAAwAAAPMgAAAAlwB0AQAAAAAAAAAAAAB8AaYBAACrAQAAAAAAAAAAUwApAWFsAwAAUmV0dXJuIHRoZSBjbGFzcyBuYW1lIHRoYXQgc2hvdWxkIGJlIHVzZWQsIGdpdmVuIHRoZSBuYW1lCiAgICBvZiBhIHRhYmxlLgoKICAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGlzOjoKCiAgICAgICAgcmV0dXJuIHN0cih0YWJsZW5hbWUpCgogICAgQWx0ZXJuYXRlIGltcGxlbWVudGF0aW9ucyBjYW4gYmUgc3BlY2lmaWVkIHVzaW5nIHRoZQogICAgOnBhcmFtcmVmOmAuQXV0b21hcEJhc2UucHJlcGFyZS5jbGFzc25hbWVfZm9yX3RhYmxlYAogICAgcGFyYW1ldGVyLgoKICAgIDpwYXJhbSBiYXNlOiB0aGUgOmNsYXNzOmAuQXV0b21hcEJhc2VgIGNsYXNzIGRvaW5nIHRoZSBwcmVwYXJlLgoKICAgIDpwYXJhbSB0YWJsZW5hbWU6IHN0cmluZyBuYW1lIG9mIHRoZSA6Y2xhc3M6YF9zY2hlbWEuVGFibGVgLgoKICAgIDpwYXJhbSB0YWJsZTogdGhlIDpjbGFzczpgX3NjaGVtYS5UYWJsZWAgb2JqZWN0IGl0c2VsZi4KCiAgICA6cmV0dXJuOiBhIHN0cmluZyBjbGFzcyBuYW1lLgoKICAgICAuLiBub3RlOjoKCiAgICAgICAgSW4gUHl0aG9uIDIsIHRoZSBzdHJpbmcgdXNlZCBmb3IgdGhlIGNsYXNzIG5hbWUgKiptdXN0KiogYmUgYQogICAgICAgIG5vbi1Vbmljb2RlIG9iamVjdCwgZS5nLiBhIGBgc3RyKClgYCBvYmplY3QuICBUaGUgYGAubmFtZWBgIGF0dHJpYnV0ZQogICAgICAgIG9mIDpjbGFzczpgX3NjaGVtYS5UYWJsZWAgaXMgdHlwaWNhbGx5IGEgUHl0aG9uIHVuaWNvZGUgc3ViY2xhc3MsCiAgICAgICAgc28gdGhlCiAgICAgICAgYGBzdHIoKWBgIGZ1bmN0aW9uIHNob3VsZCBiZSBhcHBsaWVkIHRvIHRoaXMgbmFtZSwgYWZ0ZXIgYWNjb3VudGluZyBmb3IKICAgICAgICBhbnkgbm9uLUFTQ0lJIGNoYXJhY3RlcnMuCgogICAgKQHaA3N0cikD2gRiYXNl2gl0YWJsZW5hbWXaBXRhYmxlcwMAAAAgICD6ai9idWlsZGRpci9idWlsZC9CVUlMRC9jbG91ZGxpbnV4LXZlbnYtMS4wLjEwL3ZlbnYvbGliNjQvcHl0aG9uMy4xMS9zaXRlLXBhY2thZ2VzL3NxbGFsY2hlbXkvZXh0L2F1dG9tYXAucHnaE2NsYXNzbmFtZV9mb3JfdGFibGVyFAAAACECAABzEAAAAIAA9TwADA+IeYk+jD7QBBnzAAAAAGMEAAAAAAAAAAAAAAACAAAAAwAAAPM0AAAAlwB8AmoAAAAAAAAAAACgAQAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAKsAAAAAAAAAAABTACkBYaMCAABSZXR1cm4gdGhlIGF0dHJpYnV0ZSBuYW1lIHRoYXQgc2hvdWxkIGJlIHVzZWQgdG8gcmVmZXIgZnJvbSBvbmUKICAgIGNsYXNzIHRvIGFub3RoZXIsIGZvciBhIHNjYWxhciBvYmplY3QgcmVmZXJlbmNlLgoKICAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGlzOjoKCiAgICAgICAgcmV0dXJuIHJlZmVycmVkX2Nscy5fX25hbWVfXy5sb3dlcigpCgogICAgQWx0ZXJuYXRlIGltcGxlbWVudGF0aW9ucyBjYW4gYmUgc3BlY2lmaWVkIHVzaW5nIHRoZQogICAgOnBhcmFtcmVmOmAuQXV0b21hcEJhc2UucHJlcGFyZS5uYW1lX2Zvcl9zY2FsYXJfcmVsYXRpb25zaGlwYAogICAgcGFyYW1ldGVyLgoKICAgIDpwYXJhbSBiYXNlOiB0aGUgOmNsYXNzOmAuQXV0b21hcEJhc2VgIGNsYXNzIGRvaW5nIHRoZSBwcmVwYXJlLgoKICAgIDpwYXJhbSBsb2NhbF9jbHM6IHRoZSBjbGFzcyB0byBiZSBtYXBwZWQgb24gdGhlIGxvY2FsIHNpZGUuCgogICAgOnBhcmFtIHJlZmVycmVkX2NsczogdGhlIGNsYXNzIHRvIGJlIG1hcHBlZCBvbiB0aGUgcmVmZXJyaW5nIHNpZGUuCgogICAgOnBhcmFtIGNvbnN0cmFpbnQ6IHRoZSA6Y2xhc3M6YF9zY2hlbWEuRm9yZWlnbktleUNvbnN0cmFpbnRgIHRoYXQgaXMgYmVpbmcKICAgICBpbnNwZWN0ZWQgdG8gcHJvZHVjZSB0aGlzIHJlbGF0aW9uc2hpcC4KCiAgICCpAtoIX19uYW1lX1/aBWxvd2VyqQRyEAAAANoJbG9jYWxfY2xz2gxyZWZlcnJlZF9jbHPaCmNvbnN0cmFpbnRzBAAAACAgICByEwAAANocbmFtZV9mb3Jfc2NhbGFyX3JlbGF0aW9uc2hpcHIeAAAAQgIAAHMZAAAAgADwLAAMGNQLINcLJtILJtELKNQLKNAEKHIVAAAAYwQAAAAAAAAAAAAAAAIAAAADAAAA8zoAAACXAHwCagAAAAAAAAAAAKABAAAAAAAAAAAAAAAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAGQBegAAAFMAKQJhuAIAAFJldHVybiB0aGUgYXR0cmlidXRlIG5hbWUgdGhhdCBzaG91bGQgYmUgdXNlZCB0byByZWZlciBmcm9tIG9uZQogICAgY2xhc3MgdG8gYW5vdGhlciwgZm9yIGEgY29sbGVjdGlvbiByZWZlcmVuY2UuCgogICAgVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gaXM6OgoKICAgICAgICByZXR1cm4gcmVmZXJyZWRfY2xzLl9fbmFtZV9fLmxvd2VyKCkgKyAiX2NvbGxlY3Rpb24iCgogICAgQWx0ZXJuYXRlIGltcGxlbWVudGF0aW9ucwogICAgY2FuIGJlIHNwZWNpZmllZCB1c2luZyB0aGUKICAgIDpwYXJhbXJlZjpgLkF1dG9tYXBCYXNlLnByZXBhcmUubmFtZV9mb3JfY29sbGVjdGlvbl9yZWxhdGlvbnNoaXBgCiAgICBwYXJhbWV0ZXIuCgogICAgOnBhcmFtIGJhc2U6IHRoZSA6Y2xhc3M6YC5BdXRvbWFwQmFzZWAgY2xhc3MgZG9pbmcgdGhlIHByZXBhcmUuCgogICAgOnBhcmFtIGxvY2FsX2NsczogdGhlIGNsYXNzIHRvIGJlIG1hcHBlZCBvbiB0aGUgbG9jYWwgc2lkZS4KCiAgICA6cGFyYW0gcmVmZXJyZWRfY2xzOiB0aGUgY2xhc3MgdG8gYmUgbWFwcGVkIG9uIHRoZSByZWZlcnJpbmcgc2lkZS4KCiAgICA6cGFyYW0gY29uc3RyYWludDogdGhlIDpjbGFzczpgX3NjaGVtYS5Gb3JlaWduS2V5Q29uc3RyYWludGAgdGhhdCBpcyBiZWluZwogICAgIGluc3BlY3RlZCB0byBwcm9kdWNlIHRoaXMgcmVsYXRpb25zaGlwLgoKICAgINoLX2NvbGxlY3Rpb25yFwAAAHIaAAAAcwQAAAAgICAgchMAAADaIG5hbWVfZm9yX2NvbGxlY3Rpb25fcmVsYXRpb25zaGlwciEAAABbAgAAcx4AAACAAPAyAAwY1Asg1wsm0gsm0Qso1AsoqD3RCzjQBDhyFQAAAGMGAAAAAAAAAAAAAAAFAAAACwAAAPNuAAAAlwB8AnQAAAAAAAAAAAAAAHUAcgkCAHwCfANmAWkAfAakAY4BUwB8AnQCAAAAAAAAAAAAAHUAcgkCAHwCfAVmAWkAfAakAY4BUwB0BQAAAAAAAAAAAABkAXwCegYAAKYBAACrAQAAAAAAAAAAggEpAmGzBwAAR2VuZXJhdGUgYSA6ZnVuYzpgX29ybS5yZWxhdGlvbnNoaXBgIG9yIDpmdW5jOmAuYmFja3JlZmAKICAgIG9uIGJlaGFsZiBvZiB0d28KICAgIG1hcHBlZCBjbGFzc2VzLgoKICAgIEFuIGFsdGVybmF0ZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uIGNhbiBiZSBzcGVjaWZpZWQgdXNpbmcgdGhlCiAgICA6cGFyYW1yZWY6YC5BdXRvbWFwQmFzZS5wcmVwYXJlLmdlbmVyYXRlX3JlbGF0aW9uc2hpcGAgcGFyYW1ldGVyLgoKICAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24gaXMgYXMgZm9sbG93czo6CgogICAgICAgIGlmIHJldHVybl9mbiBpcyBiYWNrcmVmOgogICAgICAgICAgICByZXR1cm4gcmV0dXJuX2ZuKGF0dHJuYW1lLCAqKmt3KQogICAgICAgIGVsaWYgcmV0dXJuX2ZuIGlzIHJlbGF0aW9uc2hpcDoKICAgICAgICAgICAgcmV0dXJuIHJldHVybl9mbihyZWZlcnJlZF9jbHMsICoqa3cpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJVbmtub3duIHJlbGF0aW9uc2hpcCBmdW5jdGlvbjogJXMiICUgcmV0dXJuX2ZuKQoKICAgIDpwYXJhbSBiYXNlOiB0aGUgOmNsYXNzOmAuQXV0b21hcEJhc2VgIGNsYXNzIGRvaW5nIHRoZSBwcmVwYXJlLgoKICAgIDpwYXJhbSBkaXJlY3Rpb246IGluZGljYXRlIHRoZSAiZGlyZWN0aW9uIiBvZiB0aGUgcmVsYXRpb25zaGlwOyB0aGlzIHdpbGwKICAgICBiZSBvbmUgb2YgOmRhdGE6YC5PTkVUT01BTllgLCA6ZGF0YTpgLk1BTllUT09ORWAsIDpkYXRhOmAuTUFOWVRPTUFOWWAuCgogICAgOnBhcmFtIHJldHVybl9mbjogdGhlIGZ1bmN0aW9uIHRoYXQgaXMgdXNlZCBieSBkZWZhdWx0IHRvIGNyZWF0ZSB0aGUKICAgICByZWxhdGlvbnNoaXAuICBUaGlzIHdpbGwgYmUgZWl0aGVyIDpmdW5jOmBfb3JtLnJlbGF0aW9uc2hpcGAgb3IKICAgICA6ZnVuYzpgLmJhY2tyZWZgLiAgVGhlIDpmdW5jOmAuYmFja3JlZmAgZnVuY3Rpb24ncyByZXN1bHQgd2lsbCBiZSB1c2VkIHRvCiAgICAgcHJvZHVjZSBhIG5ldyA6ZnVuYzpgX29ybS5yZWxhdGlvbnNoaXBgIGluIGEgc2Vjb25kIHN0ZXAsCiAgICAgc28gaXQgaXMgY3JpdGljYWwKICAgICB0aGF0IHVzZXItZGVmaW5lZCBpbXBsZW1lbnRhdGlvbnMgY29ycmVjdGx5IGRpZmZlcmVudGlhdGUgYmV0d2VlbiB0aGUgdHdvCiAgICAgZnVuY3Rpb25zLCBpZiBhIGN1c3RvbSByZWxhdGlvbnNoaXAgZnVuY3Rpb24gaXMgYmVpbmcgdXNlZC4KCiAgICA6cGFyYW0gYXR0cm5hbWU6IHRoZSBhdHRyaWJ1dGUgbmFtZSB0byB3aGljaCB0aGlzIHJlbGF0aW9uc2hpcCBpcyBiZWluZwogICAgIGFzc2lnbmVkLiBJZiB0aGUgdmFsdWUgb2YgOnBhcmFtcmVmOmAuZ2VuZXJhdGVfcmVsYXRpb25zaGlwLnJldHVybl9mbmAgaXMKICAgICB0aGUgOmZ1bmM6YC5iYWNrcmVmYCBmdW5jdGlvbiwgdGhlbiB0aGlzIG5hbWUgaXMgdGhlIG5hbWUgdGhhdCBpcyBiZWluZwogICAgIGFzc2lnbmVkIHRvIHRoZSBiYWNrcmVmLgoKICAgIDpwYXJhbSBsb2NhbF9jbHM6IHRoZSAibG9jYWwiIGNsYXNzIHRvIHdoaWNoIHRoaXMgcmVsYXRpb25zaGlwIG9yIGJhY2tyZWYKICAgICB3aWxsIGJlIGxvY2FsbHkgcHJlc2VudC4KCiAgICA6cGFyYW0gcmVmZXJyZWRfY2xzOiB0aGUgInJlZmVycmVkIiBjbGFzcyB0byB3aGljaCB0aGUgcmVsYXRpb25zaGlwIG9yCiAgICAgYmFja3JlZiByZWZlcnMgdG8uCgogICAgOnBhcmFtIFwqKmt3OiBhbGwgYWRkaXRpb25hbCBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgcGFzc2Vk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aGUKICAgICAgICAgcmVmbGVjdGlvbiBpZiBwcmVzZW50OyBlbHNlLCB0aGUgOmNsYXNzOmBfc2NoZW1hLk1ldGFEYXRhYAogICAgICAgICBzaG91bGQgYWxyZWFkeSBiZQogICAgICAgICBib3VuZCB0byBzb21lIGVuZ2luZSBlbHNlIHRoZSBvcGVyYXRpb24gd2lsbCBmYWlsLgoKICAgICAgICA6cGFyYW0gY2xhc3NuYW1lX2Zvcl90YWJsZTogY2FsbGFibGUgZnVuY3Rpb24gd2hpY2ggd2lsbCBiZSB1c2VkIHRvCiAgICAgICAgIHByb2R1Y2UgbmV3IGNsYXNzIG5hbWVzLCBnaXZlbiBhIHRhYmxlIG5hbWUuICBEZWZhdWx0cyB0bwogICAgICAgICA6ZnVuYzpgLmNsYXNzbmFtZV9mb3JfdGFibGVgLgoKICAgICAgICA6cGFyYW0gbmFtZV9mb3Jfc2NhbGFyX3JlbGF0aW9uc2hpcDogY2FsbGFibGUgZnVuY3Rpb24gd2hpY2ggd2lsbCBiZQogICAgICAgICB1c2VkIHRvIHByb2R1Y2UgcmVsYXRpb25zaGlwIG5hbWVzIGZvciBzY2FsYXIgcmVsYXRpb25zaGlwcy4gIERlZmF1bHRzCiAgICAgICAgIHRvIDpmdW5jOmAubmFtZV9mb3Jfc2NhbGFyX3JlbGF0aW9uc2hpcGAuCgogICAgICAgIDpwYXJhbSBuYW1lX2Zvcl9jb2xsZWN0aW9uX3JlbGF0aW9uc2hpcDogY2FsbGFibGUgZnVuY3Rpb24gd2hpY2ggd2lsbAogICAgICAgICBiZSB1c2VkIHRvIHByb2R1Y2UgcmVsYXRpb25zaGlwIG5hbWVzIGZvciBjb2xsZWN0aW9uLW9yaWVudGVkCiAgICAgICAgIHJlbGF0aW9uc2hpcHMuICBEZWZhdWx0cyB0byA6ZnVuYzpgLm5hbWVfZm9yX2NvbGxlY3Rpb25fcmVsYXRpb25zaGlwYC4KCiAgICAgICAgOnBhcmFtIGdlbmVyYXRlX3JlbGF0aW9uc2hpcDogY2FsbGFibGUgZnVuY3Rpb24gd2hpY2ggd2lsbCBiZSB1c2VkIHRvCiAgICAgICAgIGFjdHVhbGx5IGdlbmVyYXRlIDpmdW5jOmBfb3JtLnJlbGF0aW9uc2hpcGAgYW5kIDpmdW5jOmAuYmFja3JlZmAKICAgICAgICAgY29uc3RydWN0cy4gIERlZmF1bHRzIHRvIDpmdW5jOmAuZ2VuZXJhdGVfcmVsYXRpb25zaGlwYC4KCiAgICAgICAgOnBhcmFtIGNvbGxlY3Rpb25fY2xhc3M6IHRoZSBQeXRob24gY29sbGVjdGlvbiBjbGFzcyB0aGF0IHdpbGwgYmUgdXNlZAogICAgICAgICB3aGVuIGEgbmV3IDpmdW5jOmBfb3JtLnJlbGF0aW9uc2hpcGAKICAgICAgICAgb2JqZWN0IGlzIGNyZWF0ZWQgdGhhdCByZXByZXNlbnRzIGEKICAgICAgICAgY29sbGVjdGlvbi4gIERlZmF1bHRzIHRvIGBgbGlzdGBgLgoKICAgICAgICA6cGFyYW0gc2NoZW1hOiBXaGVuIHByZXNlbnQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUKICAgICAgICAgOnBhcmFtcmVmOmAuQXV0b21hcEJhc2UucHJlcGFyZS5yZWZsZWN0YCBmbGFnLCBpcyBwYXNzZWQgdG8KICAgICAgICAgOm1ldGg6YF9zY2hlbWEuTWV0YURhdGEucmVmbGVjdGAKICAgICAgICAgdG8gaW5kaWNhdGUgdGhlIHByaW1hcnkgc2NoZW1hIHdoZXJlIHRhYmxlcwogICAgICAgICBzaG91bGQgYmUgcmVmbGVjdGVkIGZyb20uICBXaGVuIG9taXR0ZWQsIHRoZSBkZWZhdWx0IHNjaGVtYSBpbiB1c2UKICAgICAgICAgYnkgdGhlIGRhdGFiYXNlIGNvbm5lY3Rpb24gaXMgdXNlZC4KCiAgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDEuMQoKICAgICAgICBURikD2gZzY2hlbWHaD2V4dGVuZF9leGlzdGluZ9oQYXV0b2xvYWRfcmVwbGFjZWMBAAAAAAAAAAAAAAADAAAAMwAAAPMoAAAASwABAJcAfABdDX0BfAFqAAAAAAAAAAAAfAFmAlYAlwEBAIwOZABTAKkBTikB2gtsb2NhbF90YWJsZSkC2gIuMNoBbXMCAAAAICByEwAAAPoJPGdlbmV4cHI+eiZBdXRvbWFwQmFzZS5wcmVwYXJlLjxsb2NhbHM+LjxnZW5l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
Base64 mode: content will be decoded on save.
Save
Close
Exit & Reset
Directory Contents
Dirs: 0 × Files: 12
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
associationproxy.cpython-311.pyc
73.70 KB
lrw-r--r--
2026-01-20 13:01:47
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
automap.cpython-311.pyc
40.42 KB
lrw-r--r--
2026-01-20 13:01:47
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
baked.cpython-311.pyc
30.16 KB
lrw-r--r--
2026-02-06 08:01:46
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
compiler.cpython-311.pyc
17.69 KB
lrw-r--r--
2026-02-06 08:01:46
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
horizontal_shard.cpython-311.pyc
10.96 KB
lrw-r--r--
2026-01-20 13:01:47
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
hybrid.cpython-311.pyc
43.92 KB
lrw-r--r--
2026-01-20 13:01:47
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
indexable.cpython-311.pyc
12.78 KB
lrw-r--r--
2026-01-20 13:01:47
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
instrumentation.cpython-311.pyc
20.14 KB
lrw-r--r--
2026-01-20 13:01:47
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
mutable.cpython-311.pyc
42.24 KB
lrw-r--r--
2026-01-20 13:01:47
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
orderinglist.cpython-311.pyc
17.78 KB
lrw-r--r--
2026-01-20 13:01:47
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
serializer.cpython-311.pyc
7.73 KB
lrw-r--r--
2026-01-20 13:01:47
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-311.pyc
363 B
lrw-r--r--
2026-02-06 08:01:46
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).