REDROOM
PHP 8.0.30
Path:
Logout
Edit File
Size: 31.66 KB
Close
/proc/thread-self/root/opt/alt/python37/lib64/python3.7/site-packages/sqlalchemy/sql/__pycache__/dml.cpython-37.pyc
Text
Base64
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b21wPj4AAABzAgAAAAYAejFVcGRhdGVCYXNlLl9wcm9jZXNzX2NvbHBhcmFtcy48bG9jYWxzPi48bGlzdGNvbXA+Rno4VGhpcyBjb25zdHJ1Y3QgZG9lcyBub3Qgc3VwcG9ydCBtdWx0aXBsZSBwYXJhbWV0ZXIgc2V0cy5jAQAAAAAAAAACAAAABAAAABMAAABzFAAAAGcAfABdDH0BiAB8AYMBkQJxBFMAchQAAAByFAAAACkCchYAAAByIAAAACkBciIAAAByFAAAAHIYAAAAciUAAABOAAAAcwIAAAAGAFQpCtoZX3ByZXNlcnZlX3BhcmFtZXRlcl9vcmRlcnIaAAAAchsAAAByHAAAANoKVmFsdWVFcnJvctoTX3BhcmFtZXRlcl9vcmRlcmluZ3IdAAAA2hpfc3VwcG9ydHNfbXVsdGlfcGFyYW1ldGVyc3IRAAAA2hNJbnZhbGlkUmVxdWVzdEVycm9yKQJyIQAAANoKcGFyYW1ldGVyc3IUAAAAKQJyIgAAAHIhAAAAchgAAADaEl9wcm9jZXNzX2NvbHBhcmFtcy8AAABzIAAAAAABDAYOAQoBEgICAQYDEAIMAw4BBAEUAwYBBAEGBBYCeh1VcGRhdGVCYXNlLl9wcm9jZXNzX2NvbHBhcmFtc2MBAAAAAAAAAAMAAAACAAAATwAAAHMMAAAAdABkAYMBggFkAlMAKQN651NldCB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIHN0YXRlbWVudC4KCiAgICAgICAgVGhpcyBtZXRob2QgcmFpc2VzIGBgTm90SW1wbGVtZW50ZWRFcnJvcmBgIG9uIHRoZSBiYXNlIGNsYXNzLAogICAgICAgIGFuZCBpcyBvdmVycmlkZGVuIGJ5IDpjbGFzczpgLlZhbHVlc0Jhc2VgIHRvIHByb3ZpZGUgdGhlCiAgICAgICAgU0VUL1ZBTFVFUyBjbGF1c2Ugb2YgVVBEQVRFIGFuZCBJTlNFUlQuCgogICAgICAgIHqScGFyYW1zKCkgaXMgbm90IHN1cHBvcnRlZCBmb3IgSU5TRVJUL1VQREFURS9ERUxFVEUgc3RhdGVtZW50cy4gVG8gc2V0IHRoZSB2YWx1ZXMgZm9yIGFuIElOU0VSVCBvciBVUERBVEUgc3RhdGVtZW50LCB1c2Ugc3RtdC52YWx1ZXMoKipwYXJhbWV0ZXJzKS5OKQHaE05vdEltcGxlbWVudGVkRXJyb3IpA3IhAAAA2gNhcmfaAmt3chQAAAByFAAAAHIYAAAA2gZwYXJhbXNSAAAAcwQAAAAACAIBehFVcGRhdGVCYXNlLnBhcmFtc2MBAAAAAAAAAAEAAAABAAAAQwAAAHMOAAAAfABqAHAMfABqAWoCUwApAXpuUmV0dXJuIGEgJ2JpbmQnIGxpbmtlZCB0byB0aGlzIDpjbGFzczpgLlVwZGF0ZUJhc2VgCiAgICAgICAgb3IgYSA6Y2xhc3M6YC5UYWJsZWAgYXNzb2NpYXRlZCB3aXRoIGl0LgoKICAgICAgICApA9oFX2JpbmRyHwAAANoEYmluZCkBciEAAAByFAAAAHIUAAAAchgAAAByMgAAAGAAAABzAgAAAAAFeg9VcGRhdGVCYXNlLmJpbmRjAgAAAAAAAAACAAAAAgAAAEMAAABzCgAAAHwBfABfAGQAUwApAU4pAXIxAAAAKQJyIQAAAHIyAAAAchQAAAByFAAAAHIYAAAA2glfc2V0X2JpbmRnAAAAcwIAAAAAAXoUVXBkYXRlQmFzZS5fc2V0X2JpbmRjAQAAAAAAAAACAAAAAgAAAEcAAABzCgAAAHwBfABfAGQBUwApAmHeCAAAQWRkIGEgOnRlcm06YFJFVFVSTklOR2Agb3IgZXF1aXZhbGVudCBjbGF1c2UgdG8gdGhpcyBzdGF0ZW1lbnQuCgogICAgICAgIGUuZy46OgoKICAgICAgICAgICAgc3RtdCA9IHRhYmxlLnVwZGF0ZSgpLlwKICAgICAgICAgICAgICAgICAgICAgIHdoZXJlKHRhYmxlLmMuZGF0YSA9PSAndmFsdWUnKS5cCiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMoc3RhdHVzPSdYJykuXAogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuaW5nKHRhYmxlLmMuc2VydmVyX2ZsYWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUuYy51cGRhdGVkX3RpbWVzdGFtcCkKCiAgICAgICAgICAgIGZvciBzZXJ2ZXJfZmxhZywgdXBkYXRlZF90aW1lc3RhbXAgaW4gY29ubmVjdGlvbi5leGVjdXRlKHN0bXQpOgogICAgICAgICAgICAgICAgcHJpbnQoc2VydmVyX2ZsYWcsIHVwZGF0ZWRfdGltZXN0YW1wKQoKICAgICAgICBUaGUgZ2l2ZW4gY29sbGVjdGlvbiBvZiBjb2x1bW4gZXhwcmVzc2lvbnMgc2hvdWxkIGJlIGRlcml2ZWQgZnJvbQogICAgICAgIHRoZSB0YWJsZSB0aGF0IGlzCiAgICAgICAgdGhlIHRhcmdldCBvZiB0aGUgSU5TRVJULCBVUERBVEUsIG9yIERFTEVURS4gIFdoaWxlIDpjbGFzczpgLkNvbHVtbmAKICAgICAgICBvYmplY3RzIGFyZSB0eXBpY2FsLCB0aGUgZWxlbWVudHMgY2FuIGFsc28gYmUgZXhwcmVzc2lvbnM6OgoKICAgICAgICAgICAgc3RtdCA9IHRhYmxlLmluc2VydCgpLnJldHVybmluZygKICAgICAgICAgICAgICAgICh0YWJsZS5jLmZpcnN0X25hbWUgKyAiICIgKyB0YWJsZS5jLmxhc3RfbmFtZSkuCiAgICAgICAgICAgICAgICBsYWJlbCgnZnVsbG5hbWUnKSkKCiAgICAgICAgVXBvbiBjb21waWxhdGlvbiwgYSBSRVRVUk5JTkcgY2xhdXNlLCBvciBkYXRhYmFzZSBlcXVpdmFsZW50LAogICAgICAgIHdpbGwgYmUgcmVuZGVyZWQgd2l0aGluIHRoZSBzdGF0ZW1lbnQuICAgRm9yIElOU0VSVCBhbmQgVVBEQVRFLAogICAgICAgIHRoZSB2YWx1ZXMgYXJlIHRoZSBuZXdseSBpbnNlcnRlZC91cGRhdGVkIHZhbHVlcy4gIEZvciBERUxFVEUsCiAgICAgICAgdGhlIHZhbHVlcyBhcmUgdGhvc2Ugb2YgdGhlIHJvd3Mgd2hpY2ggd2VyZSBkZWxldGVkLgoKICAgICAgICBVcG9uIGV4ZWN1dGlvbiwgdGhlIHZhbHVlcyBvZiB0aGUgY29sdW1ucyB0byBiZSByZXR1cm5lZCBhcmUgbWFkZQogICAgICAgIGF2YWlsYWJsZSB2aWEgdGhlIHJlc3VsdCBzZXQgYW5kIGNhbiBiZSBpdGVyYXRlZCB1c2luZwogICAgICAgIDptZXRoOmAuUmVzdWx0UHJveHkuZmV0Y2hvbmVgIGFuZCBzaW1pbGFyLiAgIEZvciBEQkFQSXMgd2hpY2ggZG8gbm90CiAgICAgICAgbmF0aXZlbHkgc3VwcG9ydCByZXR1cm5pbmcgdmFsdWVzIChpLmUuIGN4X29yYWNsZSksIFNRTEFsY2hlbXkgd2lsbAogICAgICAgIGFwcHJveGltYXRlIHRoaXMgYmVoYXZpb3IgYXQgdGhlIHJlc3VsdCBsZXZlbCBzbyB0aGF0IGEgcmVhc29uYWJsZQogICAgICAgIGFtb3VudCBvZiBiZWhhdmlvcmFsIG5ldXRyYWxpdHkgaXMgcHJvdmlkZWQuCgogICAgICAgIE5vdGUgdGhhdCBub3QgYWxsIGRhdGFiYXNlcy9EQkFQSXMKICAgICAgICBzdXBwb3J0IFJFVFVSTklORy4gICBGb3IgdGhvc2UgYmFja2VuZHMgd2l0aCBubyBzdXBwb3J0LAogICAgICAgIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQgdXBvbiBjb21waWxhdGlvbiBhbmQvb3IgZXhlY3V0aW9uLgogICAgICAgIEZvciB0aG9zZSB3aG8gZG8gc3VwcG9ydCBpdCwgdGhlIGZ1bmN0aW9uYWxpdHkgYWNyb3NzIGJhY2tlbmRzCiAgICAgICAgdmFyaWVzIGdyZWF0bHksIGluY2x1ZGluZyByZXN0cmljdGlvbnMgb24gZXhlY3V0ZW1hbnkoKQogICAgICAgIGFuZCBvdGhlciBzdGF0ZW1lbnRzIHdoaWNoIHJldHVybiBtdWx0aXBsZSByb3dzLiBQbGVhc2UKICAgICAgICByZWFkIHRoZSBkb2N1bWVudGF0aW9uIG5vdGVzIGZvciB0aGUgZGF0YWJhc2UgaW4gdXNlIGluCiAgICAgICAgb3JkZXIgdG8gZGV0ZXJtaW5lIHRoZSBhdmFpbGFiaWxpdHkgb2YgUkVUVVJOSU5HLgoKICAgICAgICAuLiBzZWVhbHNvOjoKCiAgICAgICAgICA6bWV0aDpgLlZhbHVlc0Jhc2UucmV0dXJuX2RlZmF1bHRzYCAtIGFuIGFsdGVybmF0aXZlIG1ldGhvZCB0YWlsb3JlZAogICAgICAgICAgdG93YXJkcyBlZmZpY2llbnQgZmV0Y2hpbmcgb2Ygc2VydmVyLXNpZGUgZGVmYXVsdHMgYW5kIHRyaWdnZXJzCiAgICAgICAgICBmb3Igc2luZ2xlLXJvdyBJTlNFUlRzIG9yIFVQREFURXMuCgoKICAgICAgICBOKQHaCl9yZXR1cm5pbmcpAnIhAAAA2gRjb2xzchQAAAByFAAAAHIYAAAA2glyZXR1cm5pbmdsAAAAcwIAAAAANXoUVXBkYXRlQmFzZS5yZXR1cm5pbmfaASpjBAAAAAAAAAAEAAAABAAAAEMAAABzKAAAAHwCZAFrCHIOfABqAH0CfABqAaACfAJ8A2YCfAFpAaEBfABfAWQBUwApAmH+BAAAQWRkIGEgdGFibGUgaGludCBmb3IgYSBzaW5nbGUgdGFibGUgdG8gdGhpcwogICAgICAgIElOU0VSVC9VUERBVEUvREVMRVRFIHN0YXRlbWVudC4KCiAgICAgICAgLi4gbm90ZTo6CgogICAgICAgICA6bWV0aDpgLlVwZGF0ZUJhc2Uud2l0aF9oaW50YCBjdXJyZW50bHkgYXBwbGllcyBvbmx5IHRvCiAgICAgICAgIE1pY3Jvc29mdCBTUUwgU2VydmVyLiAgRm9yIE15U1FMIElOU0VSVC9VUERBVEUvREVMRVRFIGhpbnRzLCB1c2UKICAgICAgICAgOm1ldGg6YC5VcGRhdGVCYXNlLnByZWZpeF93aXRoYC4KCiAgICAgICAgVGhlIHRleHQgb2YgdGhlIGhpbnQgaXMgcmVuZGVyZWQgaW4gdGhlIGFwcHJvcHJpYXRlCiAgICAgICAgbG9jYXRpb24gZm9yIHRoZSBkYXRhYmFzZSBiYWNrZW5kIGluIHVzZSwgcmVsYXRpdmUKICAgICAgICB0byB0aGUgOmNsYXNzOmAuVGFibGVgIHRoYXQgaXMgdGhlIHN1YmplY3Qgb2YgdGhpcwogICAgICAgIHN0YXRlbWVudCwgb3Igb3B0aW9uYWxseSB0byB0aGF0IG9mIHRoZSBnaXZlbgogICAgICAgIDpjbGFzczpgLlRhYmxlYCBwYXNzZWQgYXMgdGhlIGBgc2VsZWN0YWJsZWBgIGFyZ3VtZW50LgoKICAgICAgICBUaGUgYGBkaWFsZWN0X25hbWVgYCBvcHRpb24gd2lsbCBsaW1pdCB0aGUgcmVuZGVyaW5nIG9mIGEgcGFydGljdWxhcgogICAgICAgIGhpbnQgdG8gYSBwYXJ0aWN1bGFyIGJhY2tlbmQuIFN1Y2ggYXMsIHRvIGFkZCBhIGhpbnQKICAgICAgICB0aGF0IG9ubHkgdGFrZXMgZWZmZWN0IGZvciBTUUwgU2VydmVyOjoKCiAgICAgICAgICAgIG15dGFibGUuaW5zZXJ0KCkud2l0aF9oaW50KCJXSVRIIChQQUdMT0NLKSIsIGRpYWxlY3RfbmFtZT0ibXNzcWwiKQoKICAgICAgICA6cGFyYW0gdGV4dDogVGV4dCBvZiB0aGUgaGludC4KICAgICAgICA6cGFyYW0gc2VsZWN0YWJsZTogb3B0aW9uYWwgOmNsYXNzOmAuVGFibGVgIHRoYXQgc3BlY2lmaWVzCiAgICAgICAgIGFuIGVsZW1lbnQgb2YgdGhlIEZST00gY2xhdXNlIHdpdGhpbiBhbiBVUERBVEUgb3IgREVMRVRFCiAgICAgICAgIHRvIGJlIHRoZSBzdWJqZWN0IG9mIHRoZSBoaW50IC0gYXBwbGllcyBvbmx5IHRvIGNlcnRhaW4gYmFja2VuZHMuCiAgICAgICAgOnBhcmFtIGRpYWxlY3RfbmFtZTogZGVmYXVsdHMgdG8gYGAqYGAsIGlmIHNwZWNpZmllZCBhcyB0aGUgbmFtZQogICAgICAgICBvZiBhIHBhcnRpY3VsYXIgZGlhbGVjdCwgd2lsbCBhcHBseSB0aGVzZSBoaW50cyBvbmx5IHdoZW4KICAgICAgICAgdGhhdCBkaWFsZWN0IGlzIGluIHVzZS4KICAgICAgICAgTikDch8AAADaBl9oaW50c9oFdW5pb24pBHIhAAAA2gR0ZXh02gpzZWxlY3RhYmxlWgxkaWFsZWN0X25hbWVyFAAAAHIUAAAAchgAAADaCXdpdGhfaGludKMAAABzBgAAAAAfCAEGAnoUVXBkYXRlQmFzZS53aXRoX2hpbnQpAk5yNwAAACkW2ghfX25hbWVfX9oKX19tb2R1bGVfX9oMX19xdWFsbmFtZV9f2gdfX2RvY19f2g5fX3Zpc2l0X25hbWVfX3IFAAAAWhJfZXhlY3V0aW9uX29wdGlvbnNyOQAAAHISAAAAWg1pbW11dGFibGVkaWN0cjgAAAByKAAAAFoJX3ByZWZpeGVzWhFuYW1lZF93aXRoX2NvbHVtbnIsAAAAcjAAAAByMgAAAHIzAAAA2ghwcm9wZXJ0eXIDAAAAcjYAAAByPAAAAHIUAAAAchQAAAByFAAAAHIYAAAAchMAAAAeAAAAcyAAAAAIBQQCBAIGAQoCCAEEAQQBBAIIIwgOCAcIAwoCDDcCAXITAAAAYwAAAAAAAAAAAAAAAAMAAABAAAAAc0gAAABlAFoBZABaAmQBWgNkAloEZANaBWQDWgZkA1oHZARaCGQEWglkBWQGhABaCmULZAdkCIQAgwFaDGULZAlkCoQAgwFaDWQEUwApC9oKVmFsdWVzQmFzZXpUU3VwcGxpZXMgc3VwcG9ydCBmb3IgOm1ldGg6YC5WYWx1ZXNCYXNlLnZhbHVlc2AgdG8KICAgIElOU0VSVCBhbmQgVVBEQVRFIGNvbnN0cnVjdHMuWgt2YWx1ZXNfYmFzZUZOYwQAAAAAAAAABAAAAAMAAABDAAAAcy4AAAB0AHwBgwF8AF8BfACgAnwCoQFcAnwAXwN8AF8EfANyKnwAoAV8A6EBAQBkAFMAKQFOKQZyDAAAAHIfAAAAciwAAAByKwAAANoVX2hhc19tdWx0aV9wYXJhbWV0ZXJz2g9fc2V0dXBfcHJlZml4ZXMpBHIhAAAAch8AAADaBnZhbHVlc9oIcHJlZml4ZXNyFAAAAHIUAAAAchgAAADaCF9faW5pdF9f1AAAAHMKAAAAAAEKAQQBDgIEAXoTVmFsdWVzQmFzZS5fX2luaXRfX2MBAAAAAAAAAAUAAAADAAAATwAAAHMOAQAAfABqAGQBawlyFHQBoAJkAqEBggF8AGoDcih8AnIodAGgAmQDoQGCAXwBckx0BHwBgwFkBGsEckJ0AaAFZAWhAYIBfAFkBhkAfQNuBGkAfQN8AGoGZAFrCHJufACgB3wDoQFcAnwAXwZ8AF8Dbnh8AGoDcq50CHwAagaDAXwAXwZ8AKAHfAOhAVwCfQR8AF8DfABqA3OgdAGgBWQHoQGCAXwAagagCXwEoQEBAG44fABqBqAKoQB8AF8GfACgB3wDoQFcAn0EfABfA3wAagNy2nQBoAVkB6EBggF8AGoGoAt8BKEBAQB8ApABcgp8AGoDcv50AaAFZAihAYIBbgx8AGoGoAt8AqEBAQBkAVMAKQlhZxYAAHNwZWNpZnkgYSBmaXhlZCBWQUxVRVMgY2xhdXNlIGZvciBhbiBJTlNFUlQgc3RhdGVtZW50LCBvciB0aGUgU0VUCiAgICAgICAgY2xhdXNlIGZvciBhbiBVUERBVEUuCgogICAgICAgIE5vdGUgdGhhdCB0aGUgOmNsYXNzOmAuSW5zZXJ0YCBhbmQgOmNsYXNzOmAuVXBkYXRlYCBjb25zdHJ1Y3RzIHN1cHBvcnQKICAgICAgICBwZXItZXhlY3V0aW9uIHRpbWUgZm9ybWF0dGluZyBvZiB0aGUgVkFMVUVTIGFuZC9vciBTRVQgY2xhdXNlcywKICAgICAgICBiYXNlZCBvbiB0aGUgYXJndW1lbnRzIHBhc3NlZCB0byA6bWV0aDpgLkNvbm5lY3Rpb24uZXhlY3V0ZWAuCiAgICAgICAgSG93ZXZlciwgdGhlIDptZXRoOmAuVmFsdWVzQmFzZS52YWx1ZXNgIG1ldGhvZCBjYW4gYmUgdXNlZCB0byAiZml4IiBhCiAgICAgICAgcGFydGljdWxhciBzZXQgb2YgcGFyYW1ldGVycyBpbnRvIHRoZSBzdGF0ZW1lbnQuCgogICAgICAgIE11bHRpcGxlIGNhbGxzIHRvIDptZXRoOmAuVmFsdWVzQmFzZS52YWx1ZXNgIHdpbGwgcHJvZHVjZSBhIG5ldwogICAgICAgIGNvbnN0cnVjdCwgZWFjaCBvbmUgd2l0aCB0aGUgcGFyYW1ldGVyIGxpc3QgbW9kaWZpZWQgdG8gaW5jbHVkZQogICAgICAgIHRoZSBuZXcgcGFyYW1ldGVycyBzZW50LiAgSW4gdGhlIHR5cGljYWwgY2FzZSBvZiBhIHNpbmdsZQogICAgICAgIGRpY3Rpb25hcnkgb2YgcGFyYW1ldGVycywgdGhlIG5ld2x5IHBhc3NlZCBrZXlzIHdpbGwgcmVwbGFjZQogICAgICAgIHRoZSBzYW1lIGtleXMgaW4gdGhlIHByZXZpb3VzIGNvbnN0cnVjdC4gIEluIHRoZSBjYXNlIG9mIGEgbGlzdC1iYXNlZAogICAgICAgICJtdWx0aXBsZSB2YWx1ZXMiIGNvbnN0cnVjdCwgZWFjaCBuZXcgbGlzdCBvZiB2YWx1ZXMgaXMgZXh0ZW5kZWQKICAgICAgICBvbnRvIHRoZSBleGlzdGluZyBsaXN0IG9mIHZhbHVlcy4KCiAgICAgICAgOnBhcmFtIFwqKmt3YXJnczoga2V5IHZhbHVlIHBhaXJzIHJlcHJlc2VudGluZyB0aGUgc3RyaW5nIGtleQogICAgICAgICAgb2YgYSA6Y2xhc3M6YC5Db2x1bW5gIG1hcHBlZCB0byB0aGUgdmFsdWUgdG8gYmUgcmVuZGVyZWQgaW50byB0aGUKICAgICAgICAgIFZBTFVFUyBvciBTRVQgY2xhdXNlOjoKCiAgICAgICAgICAgICAgICB1c2Vycy5pbnNlcnQoKS52YWx1ZXMobmFtZT0ic29tZSBuYW1lIikKCiAgICAgICAgICAgICAgICB1c2Vycy51cGRhdGUoKS53aGVyZSh1c2Vycy5jLmlkPT01KS52YWx1ZXMobmFtZT0ic29tZSBuYW1lIikKCiAgICAgICAgOnBhcmFtIFwqYXJnczogQXMgYW4gYWx0ZXJuYXRpdmUgdG8gcGFzc2luZyBrZXkvdmFsdWUgcGFyYW1ldGVycywKICAgICAgICAgYSBkaWN0aW9uYXJ5LCB0dXBsZSwgb3IgbGlzdCBvZiBkaWN0aW9uYXJpZXMgb3IgdHVwbGVzIGNhbiBiZSBwYXNzZWQKICAgICAgICAgYXMgYSBzaW5nbGUgcG9zaXRpb25hbCBhcmd1bWVudCBpbiBvcmRlciB0byBmb3JtIHRoZSBWQUxVRVMgb3IKICAgICAgICAgU0VUIGNsYXVzZSBvZiB0aGUgc3RhdGVtZW50LiAgVGhlIGZvcm1zIHRoYXQgYXJlIGFjY2VwdGVkIHZhcnkKICAgICAgICAgYmFzZWQgb24gd2hldGhlciB0aGlzIGlzIGFuIDpjbGFzczpgLkluc2VydGAgb3IgYW4gOmNsYXNzOmAuVXBkYXRlYAogICAgICAgICBjb25zdHJ1Y3QuCgogICAgICAgICBGb3IgZWl0aGVyIGFuIDpjbGFzczpgLkluc2VydGAgb3IgOmNsYXNzOmAuVXBkYXRlYCBjb25zdHJ1Y3QsIGEKICAgICAgICAgc2luZ2xlIGRpY3Rpb25hcnkgY2FuIGJlIHBhc3NlZCwgd2hpY2ggd29ya3MgdGhlIHNhbWUgYXMgdGhhdCBvZgogICAgICAgICB0aGUga3dhcmdzIGZvcm06OgoKICAgICAgICAgICAgdXNlcnMuaW5zZXJ0KCkudmFsdWVzKHsibmFtZSI6ICJzb21lIG5hbWUifSkKCiAgICAgICAgICAgIHVzZXJzLnVwZGF0ZSgpLnZhbHVlcyh7Im5hbWUiOiAic29tZSBuZXcgbmFtZSJ9KQoKICAgICAgICAgQWxzbyBmb3IgZWl0aGVyIGZvcm0gYnV0IG1vcmUgdHlwaWNhbGx5IGZvciB0aGUgOmNsYXNzOmAuSW5zZXJ0YAogICAgICAgICBjb25zdHJ1Y3QsIGEgdHVwbGUgdGhhdCBjb250YWlucyBhbiBlbnRyeSBmb3IgZXZlcnkgY29sdW1uIGluIHRoZQogICAgICAgICB0YWJsZSBpcyBhbHNvIGFjY2VwdGVkOjoKCiAgICAgICAgICAgIHVzZXJzLmluc2VydCgpLnZhbHVlcygoNSwgInNvbWUgbmFtZSIpKQoKICAgICAgICAgVGhlIDpjbGFzczpgLkluc2VydGAgY29uc3RydWN0IGFsc28gc3VwcG9ydHMgYmVpbmcgcGFzc2VkIGEgbGlzdAogICAgICAgICBvZiBkaWN0aW9uYXJpZXMgb3IgZnVsbC10YWJsZS10dXBsZXMsIHdoaWNoIG9uIHRoZSBzZXJ2ZXIgd2lsbAogICAgICAgICByZW5kZXIgdGhlIGxlc3MgY29tbW9uIFNRTCBzeW50YXggb2YgIm11bHRpcGxlIHZhbHVlcyIgLSB0aGlzCiAgICAgICAgIHN5bnRheCBpcyBzdXBwb3J0ZWQgb24gYmFja2VuZHMgc3VjaCBhcyBTUUxpdGUsIFBvc3RncmVTUUwsIE15U1FMLAogICAgICAgICBidXQgbm90IG5lY2Vzc2FyaWx5IG90aGVyczo6CgogICAgICAgICAgICB1c2Vycy5pbnNlcnQoKS52YWx1ZXMoWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsibmFtZSI6ICJzb21lIG5hbWUifSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Im5hbWUiOiAic29tZSBvdGhlciBuYW1lIn0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyJuYW1lIjogInlldCBhbm90aGVyIG5hbWUifSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCgogICAgICAgICBUaGUgYWJvdmUgZm9ybSB3b3VsZCByZW5kZXIgYSBtdWx0aXBsZSBWQUxVRVMgc3RhdGVtZW50IHNpbWlsYXIgdG86OgoKICAgICAgICAgICAgICAgIElOU0VSVCBJTlRPIHVzZXJzIChuYW1lKSBWQUxVRVMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoOm5hbWVfMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDpuYW1lXzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg6bmFtZV8zKQoKICAgICAgICAgSXQgaXMgZXNzZW50aWFsIHRvIG5vdGUgdGhhdCAqKnBhc3NpbmcgbXVsdGlwbGUgdmFsdWVzIGlzCiAgICAgICAgIE5PVCB0aGUgc2FtZSBhcyB1c2luZyB0cmFkaXRpb25hbCBleGVjdXRlbWFueSgpIGZvcm0qKi4gIFRoZSBhYm92ZQogICAgICAgICBzeW50YXggaXMgYSAqKnNwZWNpYWwqKiBzeW50YXggbm90IHR5cGljYWxseSB1c2VkLiAgVG8gZW1pdCBhbgogICAgICAgICBJTlNFUlQgc3RhdGVtZW50IGFnYWluc3QgbXVsdGlwbGUgcm93cywgdGhlIG5vcm1hbCBtZXRob2QgaXMKICAgICAgICAgdG8gcGFzcyBhIG11bHRpcGxlIHZhbHVlcyBsaXN0IHRvIHRoZSA6bWV0aDpgLkNvbm5lY3Rpb24uZXhlY3V0ZWAKICAgICAgICAgbWV0aG9kLCB3aGljaCBpcyBzdXBwb3J0ZWQgYnkgYWxsIGRhdGFiYXNlIGJhY2tlbmRzIGFuZCBpcyBnZW5lcmFsbHkKICAgICAgICAgbW9yZSBlZmZpY2llbnQgZm9yIGEgdmVyeSBsYXJnZSBudW1iZXIgb2YgcGFyYW1ldGVycy4KCiAgICAgICAgICAgLi4gc2VlYWxzbzo6CgogICAgICAgICAgICAgICA6cmVmOmBleGVjdXRlX211bHRpcGxlYCAtIGFuIGludHJvZHVjdGlvbiB0bwogICAgICAgICAgICAgICB0aGUgdHJhZGl0aW9uYWwgQ29yZSBtZXRob2Qgb2YgbXVsdGlwbGUgcGFyYW1ldGVyIHNldAogICAgICAgICAgICAgICBpbnZvY2F0aW9uIGZvciBJTlNFUlRzIGFuZCBvdGhlciBzdGF0ZW1lbnRzLgoKICAgICAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDEuMC4wIGFuIElOU0VSVCB0aGF0IHVzZXMgYSBtdWx0aXBsZS1WQUxVRVMKICAgICAgICAgICAgICBjbGF1c2UsIGV2ZW4gYSBsaXN0IG9mIGxlbmd0aCBvbmUsCiAgICAgICAgICAgICAgaW1wbGllcyB0aGF0IHRoZSA6cGFyYW1yZWY6YC5JbnNlcnQuaW5saW5lYCBmbGFnIGlzIHNldCB0bwogICAgICAgICAgICAgIFRydWUsIGluZGljYXRpbmcgdGhhdCB0aGUgc3RhdGVtZW50IHdpbGwgbm90IGF0dGVtcHQgdG8gZmV0Y2gKICAgICAgICAgICAgICB0aGUgImxhc3QgaW5zZXJ0ZWQgcHJpbWFyeSBrZXkiIG9yIG90aGVyIGRlZmF1bHRzLiAgVGhlCiAgICAgICAgICAgICAgc3RhdGVtZW50IGRlYWxzIHdpdGggYW4gYXJiaXRyYXJ5IG51bWJlciBvZiByb3dzLCBzbyB0aGUKICAgICAgICAgICAgICA6YXR0cjpgLlJlc3VsdFByb3h5Lmluc2VydGVkX3ByaW1hcnlfa2V5YCBhY2Nlc3NvciBkb2VzIG5vdAogICAgICAgICAgICAgIGFwcGx5LgoKICAgICAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDEuMC4wIEEgbXVsdGlwbGUtVkFMVUVTIElOU0VSVCBub3cgc3VwcG9ydHMKICAgICAgICAgICAgICBjb2x1bW5zIHdpdGggUHl0aG9uIHNpZGUgZGVmYXVsdCB2YWx1ZXMgYW5kIGNhbGxhYmxlcyBpbiB0aGUKICAgICAgICAgICAgICBzYW1lIHdheSBhcyB0aGF0IG9mIGFuICJleGVjdXRlbWFueSIgc3R5bGUgb2YgaW52b2NhdGlvbjsgdGhlCiAgICAgICAgICAgICAgY2FsbGFibGUgaXMgaW52b2tlZCBmb3IgZWFjaCByb3cuICAgU2VlIDpyZWY6YGJ1Z18zMjg4YAogICAgICAgICAgICAgIGZvciBvdGhlciBkZXRhaWxzLgoKICAgICAgICAgVGhlIDpjbGFzczpgLlVwZGF0ZWAgY29uc3RydWN0IHN1cHBvcnRzIGEgc3BlY2lhbCBmb3JtIHdoaWNoIGlzIGEKICAgICAgICAgbGlzdCBvZiAyLXR1cGxlcywgd2hpY2ggd2hlbiBwcm92aWRlZCBtdXN0IGJlIHBhc3NlZCBpbiBjb25qdW5jdGlvbgogICAgICAgICB3aXRoIHRoZQogICAgICAgICA6cGFyYW1yZWY6YH5zcWxhbGNoZW15LnNxbC5leHByZXNzaW9uLnVwZGF0ZS5wcmVzZXJ2ZV9wYXJhbWV0ZXJfb3JkZXJgCiAgICAgICAgIHBhcmFtZXRlci4KICAgICAgICAgVGhpcyBmb3JtIGNhdXNlcyB0aGUgVVBEQVRFIHN0YXRlbWVudCB0byByZW5kZXIgdGhlIFNFVCBjbGF1c2VzCiAgICAgICAgIHVzaW5nIHRoZSBvcmRlciBvZiBwYXJhbWV0ZXJzIGdpdmVuIHRvIDptZXRoOmAuVXBkYXRlLnZhbHVlc2AsIHJhdGhlcgogICAgICAgICB0aGFuIHRoZSBvcmRlcmluZyBvZiBjb2x1bW5zIGdpdmVuIGluIHRoZSA6Y2xhc3M6YC5UYWJsZWAuCgogICAgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDEuMC4xMCAtIGFkZGVkIHN1cHBvcnQgZm9yIHBhcmFtZXRlci1vcmRlcmVkCiAgICAgICAgICAgICAgVVBEQVRFIHN0YXRlbWVudHMgdmlhIHRoZQogICAgICAgICAgICAgIDpwYXJhbXJlZjpgfnNxbGFsY2hlbXkuc3FsLmV4cHJlc3Npb24udXBkYXRlLnByZXNlcnZlX3BhcmFtZXRlcl9vcmRlcmAKICAgICAgICAgICAgICBmbGFnLgoKICAgICAgICAgICAuLiBzZWVhbHNvOjoKCiAgICAgICAgICAgICAgOnJlZjpgdXBkYXRlc19vcmRlcl9wYXJhbWV0ZXJzYCAtIGZ1bGwgZXhhbXBsZSBvZiB0aGUKICAgICAgICAgICAgICA6cGFyYW1yZWY6YH5zcWxhbGNoZW15LnNxbC5leHByZXNzaW9uLnVwZGF0ZS5wcmVzZXJ2ZV9wYXJhbWV0ZXJfb3JkZXJgCiAgICAgICAgICAgICAgZmxhZwoKICAgICAgICAuLiBzZWVhbHNvOjoKCiAgICAgICAgICAgIDpyZWY6YGluc2VydHNfYW5kX3VwZGF0ZXNgIC0gU1FMIEV4cHJlc3Npb24KICAgICAgICAgICAgTGFuZ3VhZ2UgVHV0b3JpYWwKCiAgICAgICAgICAgIDpmdW5jOmB+LmV4cHJlc3Npb24uaW5zZXJ0YCAtIHByb2R1Y2UgYW4gYGBJTlNFUlRgYCBzdGF0ZW1lbnQKCiAgICAgICAgICAgIDpmdW5jOmB+LmV4cHJlc3Npb24udXBkYXRlYCAtIHByb2R1Y2UgYW4gYGBVUERBVEVgYCBzdGF0ZW1lbnQKCiAgICAgICAgTnosVGhpcyBjb25zdHJ1Y3QgYWxyZWFkeSBpbnNlcnRzIGZyb20gYSBTRUxFQ1R6M1RoaXMgY29uc3RydWN0IGFscmVhZHkgaGFzIG11bHRpcGxlIHBhcmFtZXRlciBzZXRzLnIBAAAAeldPbmx5IGEgc2luZ2xlIGRpY3Rpb25hcnkvdHVwbGUgb3IgbGlzdCBvZiBkaWN0aW9uYXJpZXMvdHVwbGVzIGlzIGFjY2VwdGVkIHBvc2l0aW9uYWxseS5yIwAAAHpEQ2FuJ3QgbWl4IHNpbmdsZS12YWx1ZXMgYW5kIG11bHRpcGxlIHZhbHVlcyBmb3JtYXRzIGluIG9uZSBzdGF0ZW1lbnR6PENhbid0IHBhc3Mga3dhcmdzIGFuZCBtdWx0aXBsZSBwYXJhbWV0ZXIgc2V0cyBzaW11bHRhbmVvdXNseSkM2gZzZWxlY3RyEQAAAHIqAAAAckQAAADaA2xlbtoNQXJndW1lbnRFcnJvcnIrAAAAciwAAAByGwAAANoGZXh0ZW5k2gRjb3B52gZ1cGRhdGUpBXIhAAAA2gRhcmdz2gZrd2FyZ3PaAXZyIAAAAHIUAAAAchQAAAByGAAAAHJGAAAA3AAAAHNAAAAAAH4KAQQBBgIKAQQBBgMEAQwBBAEGAwoCBAIKBBQCBgEMARABBgEEAQYEDgIMARABBgEEAQYDDAIGAQYBBAEIBHoRVmFsdWVzQmFzZS52YWx1ZXNjAQAAAAAAAAACAAAAAgAAAEcAAABzDgAAAHwBcAZkAXwAXwBkAlMAKQNhwQsAAE1ha2UgdXNlIG9mIGEgOnRlcm06YFJFVFVSTklOR2AgY2xhdXNlIGZvciB0aGUgcHVycG9zZQogICAgICAgIG9mIGZldGNoaW5nIHNlcnZlci1zaWRlIGV4cHJlc3Npb25zIGFuZCBkZWZhdWx0cy4KCiAgICAgICAgRS5nLjo6CgogICAgICAgICAgICBzdG10ID0gdGFibGUuaW5zZXJ0KCkudmFsdWVzKGRhdGE9J25ld2RhdGEnKS5yZXR1cm5fZGVmYXVsdHMoKQoKICAgICAgICAgICAgcmVzdWx0ID0gY29ubmVjdGlvbi5leGVjdXRlKHN0bXQpCgogICAgICAgICAgICBzZXJ2ZXJfY3JlYXRlZF9hdCA9IHJlc3VsdC5yZXR1cm5lZF9kZWZhdWx0c1snY3JlYXRlZF9hdCddCgogICAgICAgIFdoZW4gdXNlZCBhZ2FpbnN0IGEgYmFja2VuZCB0aGF0IHN1cHBvcnRzIFJFVFVSTklORywgYWxsIGNvbHVtbgogICAgICAgIHZhbHVlcyBnZW5lcmF0ZWQgYnkgU1FMIGV4cHJlc3Npb24gb3Igc2VydmVyLXNpZGUtZGVmYXVsdCB3aWxsIGJlCiAgICAgICAgYWRkZWQgdG8gYW55IGV4aXN0aW5nIFJFVFVSTklORyBjbGF1c2UsIHByb3ZpZGVkIHRoYXQKICAgICAgICA6bWV0aDpgLlVwZGF0ZUJhc2UucmV0dXJuaW5nYCBpcyBub3QgdXNlZCBzaW11bHRhbmVvdXNseS4gIFRoZSBjb2x1bW4KICAgICAgICB2YWx1ZXMgd2lsbCB0aGVuIGJlIGF2YWlsYWJsZSBvbiB0aGUgcmVzdWx0IHVzaW5nIHRoZQogICAgICAgIDphdHRyOmAuUmVzdWx0UHJveHkucmV0dXJuZWRfZGVmYXVsdHNgIGFjY2Vzc29yIGFzIGEgZGljdGlvbmFyeSwKICAgICAgICByZWZlcnJpbmcgdG8gdmFsdWVzIGtleWVkIHRvIHRoZSA6Y2xhc3M6YC5Db2x1bW5gIG9iamVjdCBhcyB3ZWxsIGFzCiAgICAgICAgaXRzIGBgLmtleWBgLgoKICAgICAgICBUaGlzIG1ldGhvZCBkaWZmZXJzIGZyb20gOm1ldGg6YC5VcGRhdGVCYXNlLnJldHVybmluZ2AgaW4gdGhlc2Ugd2F5czoKCiAgICAgICAgMS4gOm1ldGg6YC5WYWx1ZXNCYXNlLnJldHVybl9kZWZhdWx0c2AgaXMgb25seSBpbnRlbmRlZCBmb3IgdXNlIHdpdGgKICAgICAgICAgICBhbiBJTlNFUlQgb3IgYW4gVVBEQVRFIHN0YXRlbWVudCB0aGF0IG1hdGNoZXMgZXhhY3RseSBvbmUgcm93LgogICAgICAgICAgIFdoaWxlIHRoZSBSRVRVUk5JTkcgY29uc3RydWN0IGluIHRoZSBnZW5lcmFsIHNlbnNlIHN1cHBvcnRzCiAgICAgICAgICAgbXVsdGlwbGUgcm93cyBmb3IgYSBtdWx0aS1yb3cgVVBEQVRFIG9yIERFTEVURSBzdGF0ZW1lbnQsIG9yIGZvcgogICAgICAgICAgIHNwZWNpYWwgY2FzZXMgb2YgSU5TRVJUIHRoYXQgcmV0dXJuIG11bHRpcGxlIHJvd3MgKGUuZy4gSU5TRVJUIGZyb20KICAgICAgICAgICBTRUxFQ1QsIG11bHRpLXZhbHVlZCBWQUxVRVMgY2xhdXNlKSwKICAgICAgICAgICA6bWV0aDpgLlZhbHVlc0Jhc2UucmV0dXJuX2RlZmF1bHRzYCBpcyBpbnRlbmRlZCBvbmx5IGZvciBhbgogICAgICAgICAgICJPUk0tc3R5bGUiIHNpbmdsZS1yb3cgSU5TRVJUL1VQREFURSBzdGF0ZW1lbnQuICBUaGUgcm93IHJldHVybmVkCiAgICAgICAgICAgYnkgdGhlIHN0YXRlbWVudCBpcyBhbHNvIGNvbnN1bWVkIGltcGxpY2l0bHkgd2hlbgogICAgICAgICAgIDptZXRoOmAuVmFsdWVzQmFzZS5yZXR1cm5fZGVmYXVsdHNgIGlzIHVzZWQuICBCeSBjb250cmFzdCwKICAgICAgICAgICA6bWV0aDpgLlVwZGF0ZUJhc2UucmV0dXJuaW5nYCBsZWF2ZXMgdGhlIFJFVFVSTklORyByZXN1bHQtc2V0CiAgICAgICAgICAgaW50YWN0IHdpdGggYSBjb2xsZWN0aW9uIG9mIGFueSBudW1iZXIgb2Ygcm93cy4KCiAgICAgICAgMi4gSXQgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBleGlzdGluZyBsb2dpYyB0byBmZXRjaCBhdXRvLWdlbmVyYXRlZAogICAgICAgICAgIHByaW1hcnkga2V5IHZhbHVlcywgYWxzbyBrbm93biBhcyAiaW1wbGljaXQgcmV0dXJuaW5nIi4gIEJhY2tlbmRzCiAgICAgICAgICAgdGhhdCBzdXBwb3J0IFJFVFVSTklORyB3aWxsIGF1dG9tYXRpY2FsbHkgbWFrZSB1c2Ugb2YgUkVUVVJOSU5HIGluCiAgICAgICAgICAgb3JkZXIgdG8gZmV0Y2ggdGhlIHZhbHVlIG9mIG5ld2x5IGdlbmVyYXRlZCBwcmltYXJ5IGtleXM7IHdoaWxlIHRoZQogICAgICAgICAgIDptZXRoOmAuVXBkYXRlQmFzZS5yZXR1cm5pbmdgIG1ldGhvZCBjaXJjdW12ZW50cyB0aGlzIGJlaGF2aW9yLAogICAgICAgICAgIDptZXRoOmAuVmFsdWVzQmFzZS5yZXR1cm5fZGVmYXVsdHNgIGxlYXZlcyBpdCBpbnRhY3QuCgogICAgICAgIDMuIEl0IGNhbiBiZSBjYWxsZWQgYWdhaW5zdCBhbnkgYmFja2VuZC4gIEJhY2tlbmRzIHRoYXQgZG9uJ3Qgc3VwcG9ydAogICAgICAgICAgIFJFVFVSTklORyB3aWxsIHNraXAgdGhlIHVzYWdlIG9mIHRoZSBmZWF0dXJlLCByYXRoZXIgdGhhbiByYWlzaW5nCiAgICAgICAgICAgYW4gZXhjZXB0aW9uLiAgVGhlIHJldHVybiB2YWx1ZSBvZgogICAgICAgICAgIDphdHRyOmAuUmVzdWx0UHJveHkucmV0dXJuZWRfZGVmYXVsdHNgIHdpbGwgYmUgYGBOb25lYGAKCiAgICAgICAgOm1ldGg6YC5WYWx1ZXNCYXNlLnJldHVybl9kZWZhdWx0c2AgaXMgdXNlZCBieSB0aGUgT1JNIHRvIHByb3ZpZGUKICAgICAgICBhbiBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24gZm9yIHRoZSBgYGVhZ2VyX2RlZmF1bHRzYGAgZmVhdHVyZSBvZgogICAgICAgIDpmdW5jOmAubWFwcGVyYC4KCiAgICAgICAgOnBhcmFtIGNvbHM6IG9wdGlvbmFsIGxpc3Qgb2YgY29sdW1uIGtleSBuYW1lcyBvciA6Y2xhc3M6YC5Db2x1bW5gCiAgICAgICAgIG9iamVjdHMuICBJZiBvbWl0dGVkLCBhbGwgY29sdW1uIGV4cHJlc3Npb25zIGV2YWx1YXRlZCBvbiB0aGUgc2VydmVyCiAgICAgICAgIGFyZSBhZGRlZCB0byB0aGUgcmV0dXJuaW5nIGxpc3QuCgogICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDAuOS4wCgogICAgICAgIC4uIHNlZWFsc286OgoKICAgICAgICAgICAgOm1ldGg6YC5VcGRhdGVCYXNlLnJldHVybmluZ2AKCiAgICAgICAgICAgIDphdHRyOmAuUmVzdWx0UHJveHkucmV0dXJuZWRfZGVmYXVsdHNgCgogICAgICAgIFROKQHaEF9yZXR1cm5fZGVmYXVsdHMpAnIhAAAAcjUAAAByFAAAAHIUAAAAchgAAADaD3JldHVybl9kZWZhdWx0c5ABAABzAgAAAABCehpWYWx1ZXNCYXNlLnJldHVybl9kZWZhdWx0cykOcj0AAAByPgAAAHI/AAAAckAAAAByQQAAAHIpAAAAckQAAAByJgAAAHJJAAAAWhNfcG9zdF92YWx1ZXNfY2xhdXNlckgAAAByAwAAAHJGAAAAclMAAAByFAAAAHIUAAAAchQAAAByGAAAAHJDAAAAyAAAAHMWAAAACAIEAgQCBAEEAQQBBAEEAggIDH8ANXJDAAAAYwAAAAAAAAAAAAAAAAYAAABAAAAAc0QAAABlAFoBZABaAmQBWgNkAloEZANaBWQOZAZkB4QBWgZkCGQJhABaB2UIZA9kCmQLhAGDAVoJZQpmAWQMZA2EAVoLZARTACkQ2gZJbnNlcnR6yFJlcHJlc2VudCBhbiBJTlNFUlQgY29uc3RydWN0LgoKICAgIFRoZSA6Y2xhc3M6YC5JbnNlcnRgIG9iamVjdCBpcyBjcmVhdGVkIHVzaW5nIHRoZQogICAgOmZ1bmM6YH4uZXhwcmVzc2lvbi5pbnNlcnQoKWAgZnVuY3Rpb24uCgogICAgLi4gc2VlYWxzbzo6CgogICAgICAgIDpyZWY6YGNvcmV0dXRvcmlhbF9pbnNlcnRfZXhwcmVzc2lvbnNgCgogICAg2gZpbnNlcnRUTkZjCAAAAAAAAAAJAAAABgAAAEsAAABzSAAAAHQAoAF8AHwBfAJ8BaEEAQB8BHwAXwJkAQQAfABfA3wAXwRkAnwAXwV8A3wAXwZ8BnwAXwd8AKAIfAihAQEAfAd8AF8JZAFTACkDYVgHAABDb25zdHJ1Y3QgYW4gOmNsYXNzOmAuSW5zZXJ0YCBvYmplY3QuCgogICAgICAgIFNpbWlsYXIgZnVuY3Rpb25hbGl0eSBpcyBhdmFpbGFibGUgdmlhIHRoZQogICAgICAgIDptZXRoOmB+LlRhYmxlQ2xhdXNlLmluc2VydGAgbWV0aG9kIG9uCiAgICAgICAgOmNsYXNzOmB+LnNjaGVtYS5UYWJsZWAuCgogICAgICAgIDpwYXJhbSB0YWJsZTogOmNsYXNzOmAuVGFibGVDbGF1c2VgIHdoaWNoIGlzIHRoZSBzdWJqZWN0IG9mIHRoZQogICAgICAgICBpbnNlcnQuCgogICAgICAgIDpwYXJhbSB2YWx1ZXM6IGNvbGxlY3Rpb24gb2YgdmFsdWVzIHRvIGJlIGluc2VydGVkOyBzZWUKICAgICAgICAgOm1ldGg6YC5JbnNlcnQudmFsdWVzYCBmb3IgYSBkZXNjcmlwdGlvbiBvZiBhbGxvd2VkIGZvcm1hdHMgaGVyZS4KICAgICAgICAgQ2FuIGJlIG9taXR0ZWQgZW50aXJlbHk7IGEgOmNsYXNzOmAuSW5zZXJ0YCBjb25zdHJ1Y3Qgd2lsbCBhbHNvCiAgICAgICAgIGR5bmFtaWNhbGx5IHJlbmRlciB0aGUgVkFMVUVTIGNsYXVzZSBhdCBleGVjdXRpb24gdGltZSBiYXNlZCBvbgogICAgICAgICB0aGUgcGFyYW1ldGVycyBwYXNzZWQgdG8gOm1ldGg6YC5Db25uZWN0aW9uLmV4ZWN1dGVgLgoKICAgICAgICA6cGFyYW0gaW5saW5lOiBpZiBUcnVlLCBubyBhdHRlbXB0IHdpbGwgYmUgbWFkZSB0byByZXRyaWV2ZSB0aGUKICAgICAgICAgU1FMLWdlbmVyYXRlZCBkZWZhdWx0IHZhbHVlcyB0byBiZSBwcm92aWRlZCB3aXRoaW4gdGhlIHN0YXRlbWVudDsKICAgICAgICAgaW4gcGFydGljdWxhciwKICAgICAgICAgdGhpcyBhbGxvd3MgU1FMIGV4cHJlc3Npb25zIHRvIGJlIHJlbmRlcmVkICdpbmxpbmUnIHdpdGhpbiB0aGUKICAgICAgICAgc3RhdGVtZW50IHdpdGhvdXQgdGhlIG5lZWQgdG8gcHJlLWV4ZWN1dGUgdGhlbSBiZWZvcmVoYW5kOyBmb3IKICAgICAgICAgYmFja2VuZHMgdGhhdCBzdXBwb3J0ICJyZXR1cm5pbmciLCB0aGlzIHR1cm5zIG9mZiB0aGUgImltcGxpY2l0CiAgICAgICAgIHJldHVybmluZyIgZmVhdHVyZSBmb3IgdGhlIHN0YXRlbWVudC4KCiAgICAgICAgSWYgYm90aCBgdmFsdWVzYCBhbmQgY29tcGlsZS10aW1lIGJpbmQgcGFyYW1ldGVycyBhcmUgcHJlc2VudCwgdGhlCiAgICAgICAgY29tcGlsZS10aW1lIGJpbmQgcGFyYW1ldGVycyBvdmVycmlkZSB0aGUgaW5mb3JtYXRpb24gc3BlY2lmaWVkCiAgICAgICAgd2l0aGluIGB2YWx1ZXNgIG9uIGEgcGVyLWtleSBiYXNpcy4KCiAgICAgICAgVGhlIGtleXMgd2l0aGluIGB2YWx1ZXNgIGNhbiBiZSBlaXRoZXIKICAgICAgICA6Y2xhc3M6YH5zcWxhbGNoZW15LnNjaGVtYS5Db2x1bW5gIG9iamVjdHMgb3IgdGhlaXIgc3RyaW5nCiAgICAgICAgaWRlbnRpZmllcnMuIEVhY2gga2V5IG1heSByZWZlcmVuY2Ugb25lIG9mOgoKICAgICAgICAqIGEgbGl0ZXJhbCBkYXRhIHZhbHVlIChpLmUuIHN0cmluZywgbnVtYmVyLCBldGMuKTsKICAgICAgICAqIGEgQ29sdW1uIG9iamVjdDsKICAgICAgICAqIGEgU0VMRUNUIHN0YXRlbWVudC4KCiAgICAgICAgSWYgYSBgYFNFTEVDVGBgIHN0YXRlbWVudCBpcyBzcGVjaWZpZWQgd2hpY2ggcmVmZXJlbmNlcyB0aGlzCiAgICAgICAgYGBJTlNFUlRgYCBzdGF0ZW1lbnQncyB0YWJsZSwgdGhlIHN0YXRlbWVudCB3aWxsIGJlIGNvcnJlbGF0ZWQKICAgICAgICBhZ2FpbnN0IHRoZSBgYElOU0VSVGBgIHN0YXRlbWVudC4KCiAgICAgICAgLi4gc2VlYWxzbzo6CgogICAgICAgICAgICA6cmVmOmBjb3JldHV0b3JpYWxfaW5zZXJ0X2V4cHJlc3Npb25zYCAtIFNRTCBFeHByZXNzaW9uIFR1dG9yaWFsCgogICAgICAgICAgICA6cmVmOmBpbnNlcnRzX2FuZF91cGRhdGVzYCAtIFNRTCBFeHByZXNzaW9uIFR1dG9yaWFsCgogICAgICAgIE5GKQpyQwAAAHJIAAAAcjEAAABySQAAANoMc2VsZWN0X25hbWVz2iNpbmNsdWRlX2luc2VydF9mcm9tX3NlbGVjdF9kZWZhdWx0c9oGaW5saW5lcjQAAADaGF92YWxpZGF0ZV9kaWFsZWN0X2t3YXJnc3JSAAAAKQlyIQAAAHIfAAAAckYAAAByWAAAAHIyAAAAckcAAAByNgAAAHJTAAAA2gpkaWFsZWN0X2t3chQAAAByFAAAAHIYAAAAckgAAADlAQAAcxAAAAAAORABBgEMAQYBBgEGAQoBeg9JbnNlcnQuX19pbml0X19jAQAAAAAAAAACAAAAAgAAAEsAAABzGgAAAHwAagBkAGsJchJ8AGoAZgFTAGQBUwBkAFMAKQJOchQAAAApAXJJAAAAKQJyIQAAAHJQAAAAchQAAAByFAAAAHIYAAAA2gxnZXRfY2hpbGRyZW4nAgAAcwYAAAAAAQoBCAJ6E0luc2VydC5nZXRfY2hpbGRyZW5jBAAAAAAAAAAEAAAABAAAAEMAAABzTAAAAHwAagByEHQBoAJkAaEBggF8AKADZAJkA4QAfAFEAIMBoQFcAnwAXwB8AF8EfAF8AF8FZAR8AF8GfAN8AF8HdAh8AoMBfABfCWQFUwApBmFyCAAAUmV0dXJuIGEgbmV3IDpjbGFzczpgLkluc2VydGAgY29uc3RydWN0IHdoaWNoIHJlcHJlc2VudHMKICAgICAgICBhbiBgYElOU0VSVC4uLkZST00gU0VMRUNUYGAgc3RhdGVtZW50LgoKICAgICAgICBlLmcuOjoKCiAgICAgICAgICAgIHNlbCA9IHNlbGVjdChbdGFibGUxLmMuYSwgdGFibGUxLmMuYl0pLndoZXJlKHRhYmxlMS5jLmMgPiA1KQogICAgICAgICAgICBpbnMgPSB0YWJsZTIuaW5zZXJ0KCkuZnJvbV9zZWxlY3QoWydhJywgJ2InXSwgc2VsKQoKICAgICAgICA6cGFyYW0gbmFtZXM6IGEgc2VxdWVuY2Ugb2Ygc3RyaW5nIGNvbHVtbiBuYW1lcyBvciA6Y2xhc3M6YC5Db2x1bW5gCiAgICAgICAgIG9iamVjdHMgcmVwcmVzZW50aW5nIHRoZSB0YXJnZXQgY29sdW1ucy4KICAgICAgICA6cGFyYW0gc2VsZWN0OiBhIDpmdW5jOmAuc2VsZWN0YCBjb25zdHJ1Y3QsIDpjbGFzczpgLkZyb21DbGF1c2VgCiAgICAgICAgIG9yIG90aGVyIGNvbnN0cnVjdCB3aGljaCByZXNvbHZlcyBpbnRvIGEgOmNsYXNzOmAuRnJvbUNsYXVzZWAsCiAgICAgICAgIHN1Y2ggYXMgYW4gT1JNIDpjbGFzczpgLlF1ZXJ5YCBvYmplY3QsIGV0Yy4gIFRoZSBvcmRlciBvZgogICAgICAgICBjb2x1bW5zIHJldHVybmVkIGZyb20gdGhpcyBGUk9NIGNsYXVzZSBzaG91bGQgY29ycmVzcG9uZCB0byB0aGUKICAgICAgICAgb3JkZXIgb2YgY29sdW1ucyBzZW50IGFzIHRoZSBgYG5hbWVzYGAgcGFyYW1ldGVyOyAgd2hpbGUgdGhpcwogICAgICAgICBpcyBub3QgY2hlY2tlZCBiZWZvcmUgcGFzc2luZyBhbG9uZyB0byB0aGUgZGF0YWJhc2UsIHRoZSBkYXRhYmFzZQogICAgICAgICB3b3VsZCBub3JtYWxseSByYWlzZSBhbiBleGNlcHRpb24gaWYgdGhlc2UgY29sdW1uIGxpc3RzIGRvbid0CiAgICAgICAgIGNvcnJlc3BvbmQuCiAgICAgICAgOnBhcmFtIGluY2x1ZGVfZGVmYXVsdHM6IGlmIFRydWUsIG5vbi1zZXJ2ZXIgZGVmYXVsdCB2YWx1ZXMgYW5kCiAgICAgICAgIFNRTCBleHByZXNzaW9ucyBhcyBzcGVjaWZpZWQgb24gOmNsYXNzOmAuQ29sdW1uYCBvYmplY3RzCiAgICAgICAgIChhcyBkb2N1bWVudGVkIGluIDpyZWY6YG1ldGFkYXRhX2RlZmF1bHRzX3RvcGxldmVsYCkgbm90CiAgICAgICAgIG90aGVyd2lzZSBzcGVjaWZpZWQgaW4gdGhlIGxpc3Qgb2YgbmFtZXMgd2lsbCBiZSByZW5kZXJlZAogICAgICAgICBpbnRvIHRoZSBJTlNFUlQgYW5kIFNFTEVDVCBzdGF0ZW1lbnRzLCBzbyB0aGF0IHRoZXNlIHZhbHVlcyBhcmUgYWxzbwogICAgICAgICBpbmNsdWRlZCBpbiB0aGUgZGF0YSB0byBiZSBpbnNlcnRlZC4KCiAgICAgICAgIC4uIG5vdGU6OiBBIFB5dGhvbi1zaWRlIGRlZmF1bHQgdGhhdCB1c2VzIGEgUHl0aG9uIGNhbGxhYmxlIGZ1bmN0aW9uCiAgICAgICAgICAgIHdpbGwgb25seSBiZSBpbnZva2VkICoqb25jZSoqIGZvciB0aGUgd2hvbGUgc3RhdGVtZW50LCBhbmQgKipub3QKICAgICAgICAgICAgcGVyIHJvdyoqLgoKICAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMS4wLjAgLSA6bWV0aDpgLkluc2VydC5mcm9tX3NlbGVjdGAgbm93IHJlbmRlcnMKICAgICAgICAgICAgUHl0aG9uLXNpZGUgYW5kIFNRTCBleHByZXNzaW9uIGNvbHVtbiBkZWZhdWx0cyBpbnRvIHRoZQogICAgICAgICAgICBTRUxFQ1Qgc3RhdGVtZW50IGZvciBjb2x1bW5zIG90aGVyd2lzZSBub3QgaW5jbHVkZWQgaW4gdGhlCiAgICAgICAgICAgIGxpc3Qgb2YgY29sdW1uIG5hbWVzLgoKICAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDEuMC4wIGFuIElOU0VSVCB0aGF0IHVzZXMgRlJPTSBTRUxFQ1QKICAgICAgICAgICBpbXBsaWVzIHRoYXQgdGhlIDpwYXJhbXJlZjpgLmluc2VydC5pbmxpbmVgIGZsYWcgaXMgc2V0IHRvCiAgICAgICAgICAgVHJ1ZSwgaW5kaWNhdGluZyB0aGF0IHRoZSBzdGF0ZW1lbnQgd2lsbCBub3QgYXR0ZW1wdCB0byBmZXRjaAogICAgICAgICAgIHRoZSAibGFzdCBpbnNlcnRlZCBwcmltYXJ5IGtleSIgb3Igb3RoZXIgZGVmYXVsdHMuICBUaGUgc3RhdGVtZW50CiAgICAgICAgICAgZGVhbHMgd2l0aCBhbiBhcmJpdHJh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ICAgIGNvbmRpdGlvbiBvZiB0aGUgYGBVUERBVEVgYCBzdGF0ZW1lbnQuICAgTW9kZXJuIGFwcGxpY2F0aW9ucwogICAgICAgICBtYXkgcHJlZmVyIHRvIHVzZSB0aGUgZ2VuZXJhdGl2ZSA6bWV0aDpgflVwZGF0ZS53aGVyZSgpYAogICAgICAgICBtZXRob2QgdG8gc3BlY2lmeSB0aGUgYGBXSEVSRWBgIGNsYXVzZS4KCiAgICAgICAgIFRoZSBXSEVSRSBjbGF1c2UgY2FuIHJlZmVyIHRvIG11bHRpcGxlIHRhYmxlcy4KICAgICAgICAgRm9yIGRhdGFiYXNlcyB3aGljaCBzdXBwb3J0IHRoaXMsIGFuIGBgVVBEQVRFIEZST01gYCBjbGF1c2Ugd2lsbAogICAgICAgICBiZSBnZW5lcmF0ZWQsIG9yIG9uIE15U1FMLCBhIG11bHRpLXRhYmxlIHVwZGF0ZS4gIFRoZSBzdGF0ZW1lbnQKICAgICAgICAgd2lsbCBmYWlsIG9uIGRhdGFiYXNlcyB0aGF0IGRvbid0IGhhdmUgc3VwcG9ydCBmb3IgbXVsdGktdGFibGUKICAgICAgICAgdXBkYXRlIHN0YXRlbWVudHMuICBBIFNRTC1zdGFuZGFyZCBtZXRob2Qgb2YgcmVmZXJyaW5nIHRvCiAgICAgICAgIGFkZGl0aW9uYWwgdGFibGVzIGluIHRoZSBXSEVSRSBjbGF1c2UgaXMgdG8gdXNlIGEgY29ycmVsYXRlZAogICAgICAgICBzdWJxdWVyeTo6CgogICAgICAgICAgICB1c2Vycy51cGRhdGUoKS52YWx1ZXMobmFtZT0nZWQnKS53aGVyZSgKICAgICAgICAgICAgICAgICAgICB1c2Vycy5jLm5hbWU9PXNlbGVjdChbYWRkcmVzc2VzLmMuZW1haWxfYWRkcmVzc10pLlwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVyZShhZGRyZXNzZXMuYy51c2VyX2lkPT11c2Vycy5jLmlkKS5cCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNfc2NhbGFyKCkKICAgICAgICAgICAgICAgICAgICApCgogICAgICAgIDpwYXJhbSB2YWx1ZXM6CiAgICAgICAgICBPcHRpb25hbCBkaWN0aW9uYXJ5IHdoaWNoIHNwZWNpZmllcyB0aGUgYGBTRVRgYCBjb25kaXRpb25zIG9mIHRoZQogICAgICAgICAgYGBVUERBVEVgYC4gIElmIGxlZnQgYXMgYGBOb25lYGAsIHRoZSBgYFNFVGBgCiAgICAgICAgICBjb25kaXRpb25zIGFyZSBkZXRlcm1pbmVkIGZyb20gdGhvc2UgcGFyYW1ldGVycyBwYXNzZWQgdG8gdGhlCiAgICAgICAgICBzdGF0ZW1lbnQgZHVyaW5nIHRoZSBleGVjdXRpb24gYW5kL29yIGNvbXBpbGF0aW9uIG9mIHRoZQogICAgICAgICAgc3RhdGVtZW50LiAgIFdoZW4gY29tcGlsZWQgc3RhbmRhbG9uZSB3aXRob3V0IGFueSBwYXJhbWV0ZXJzLAogICAgICAgICAgdGhlIGBgU0VUYGAgY2xhdXNlIGdlbmVyYXRlcyBmb3IgYWxsIGNvbHVtbnMuCgogICAgICAgICAgTW9kZXJuIGFwcGxpY2F0aW9ucyBtYXkgcHJlZmVyIHRvIHVzZSB0aGUgZ2VuZXJhdGl2ZQogICAgICAgICAgOm1ldGg6YC5VcGRhdGUudmFsdWVzYCBtZXRob2QgdG8gc2V0IHRoZSB2YWx1ZXMgb2YgdGhlCiAgICAgICAgICBVUERBVEUgc3RhdGVtZW50LgoKICAgICAgICA6cGFyYW0gaW5saW5lOgogICAgICAgICAgaWYgVHJ1ZSwgU1FMIGRlZmF1bHRzIHByZXNlbnQgb24gOmNsYXNzOmAuQ29sdW1uYCBvYmplY3RzIHZpYQogICAgICAgICAgdGhlIGBgZGVmYXVsdGBgIGtleXdvcmQgd2lsbCBiZSBjb21waWxlZCAnaW5saW5lJyBpbnRvIHRoZSBzdGF0ZW1lbnQKICAgICAgICAgIGFuZCBub3QgcHJlLWV4ZWN1dGVkLiAgVGhpcyBtZWFucyB0aGF0IHRoZWlyIHZhbHVlcyB3aWxsIG5vdAogICAgICAgICAgYmUgYXZhaWxhYmxlIGluIHRoZSBkaWN0aW9uYXJ5IHJldHVybmVkIGZyb20KICAgICAgICAgIDptZXRoOmAuUmVzdWx0UHJveHkubGFzdF91cGRhdGVkX3BhcmFtc2AuCgogICAgICAgIDpwYXJhbSBwcmVzZXJ2ZV9wYXJhbWV0ZXJfb3JkZXI6IGlmIFRydWUsIHRoZSB1cGRhdGUgc3RhdGVtZW50IGlzCiAgICAgICAgICBleHBlY3RlZCB0byByZWNlaXZlIHBhcmFtZXRlcnMgKipvbmx5KiogdmlhIHRoZQogICAgICAgICAgOm1ldGg6YC5VcGRhdGUudmFsdWVzYCBtZXRob2QsIGFuZCB0aGV5IG11c3QgYmUgcGFzc2VkIGFzIGEgUHl0aG9uCiAgICAgICAgICBgYGxpc3RgYCBvZiAyLXR1cGxlcy4gVGhlIHJlbmRlcmVkIFVQREFURSBzdGF0ZW1lbnQgd2lsbCBlbWl0IHRoZSBTRVQKICAgICAgICAgIGNsYXVzZSBmb3IgZWFjaCByZWZlcmVuY2VkIGNvbHVtbiBtYWludGFpbmluZyB0aGlzIG9yZGVyLgoKICAgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDEuMC4xMAoKICAgICAgICAgIC4uIHNlZWFsc286OgoKICAgICAgICAgICAgOnJlZjpgdXBkYXRlc19vcmRlcl9wYXJhbWV0ZXJzYCAtIGZ1bGwgZXhhbXBsZSBvZiB0aGUKICAgICAgICAgICAgOnBhcmFtcmVmOmB+LnVwZGF0ZS5wcmVzZXJ2ZV9wYXJhbWV0ZXJfb3JkZXJgIGZsYWcKCiAgICAgICAgSWYgYm90aCBgYHZhbHVlc2BgIGFuZCBjb21waWxlLXRpbWUgYmluZCBwYXJhbWV0ZXJzIGFyZSBwcmVzZW50LCB0aGUKICAgICAgICBjb21waWxlLXRpbWUgYmluZCBwYXJhbWV0ZXJzIG92ZXJyaWRlIHRoZSBpbmZvcm1hdGlvbiBzcGVjaWZpZWQKICAgICAgICB3aXRoaW4gYGB2YWx1ZXNgYCBvbiBhIHBlci1rZXkgYmFzaXMuCgogICAgICAgIFRoZSBrZXlzIHdpdGhpbiBgYHZhbHVlc2BgIGNhbiBiZSBlaXRoZXIgOmNsYXNzOmAuQ29sdW1uYAogICAgICAgIG9iamVjdHMgb3IgdGhlaXIgc3RyaW5nIGlkZW50aWZpZXJzIChzcGVjaWZpY2FsbHkgdGhlICJrZXkiIG9mIHRoZQogICAgICAgIDpjbGFzczpgLkNvbHVtbmAsIG5vcm1hbGx5IGJ1dCBub3QgbmVjZXNzYXJpbHkgZXF1aXZhbGVudCB0bwogICAgICAgIGl0cyAibmFtZSIpLiAgTm9ybWFsbHksIHRoZQogICAgICAgIDpjbGFzczpgLkNvbHVtbmAgb2JqZWN0cyB1c2VkIGhlcmUgYXJlIGV4cGVjdGVkIHRvIGJlCiAgICAgICAgcGFydCBvZiB0aGUgdGFyZ2V0IDpjbGFzczpgLlRhYmxlYCB0aGF0IGlzIHRoZSB0YWJsZQogICAgICAgIHRvIGJlIHVwZGF0ZWQuICBIb3dldmVyIHdoZW4gdXNpbmcgTXlTUUwsIGEgbXVsdGlwbGUtdGFibGUKICAgICAgICBVUERBVEUgc3RhdGVtZW50IGNhbiByZWZlciB0byBjb2x1bW5zIGZyb20gYW55IG9mCiAgICAgICAgdGhlIHRhYmxlcyByZWZlcnJlZCB0byBpbiB0aGUgV0hFUkUgY2xhdXNlLgoKICAgICAgICBUaGUgdmFsdWVzIHJlZmVycmVkIHRvIGluIGBgdmFsdWVzYGAgYXJlIHR5cGljYWxseToKCiAgICAgICAgKiBhIGxpdGVyYWwgZGF0YSB2YWx1ZSAoaS5lLiBzdHJpbmcsIG51bWJlciwgZXRjLikKICAgICAgICAqIGEgU1FMIGV4cHJlc3Npb24sIHN1Y2ggYXMgYSByZWxhdGVkIDpjbGFzczpgLkNvbHVtbmAsCiAgICAgICAgICBhIHNjYWxhci1yZXR1cm5pbmcgOmZ1bmM6YC5zZWxlY3RgIGNvbnN0cnVjdCwKICAgICAgICAgIGV0Yy4KCiAgICAgICAgV2hlbiBjb21iaW5pbmcgOmZ1bmM6YC5zZWxlY3RgIGNvbnN0cnVjdHMgd2l0aGluIHRoZSB2YWx1ZXMKICAgICAgICBjbGF1c2Ugb2YgYW4gOmZ1bmM6YC51cGRhdGVgIGNvbnN0cnVjdCwKICAgICAgICB0aGUgc3VicXVlcnkgcmVwcmVzZW50ZWQgYnkgdGhlIDpmdW5jOmAuc2VsZWN0YCBzaG91bGQgYmUKICAgICAgICAqY29ycmVsYXRlZCogdG8gdGhlIHBhcmVudCB0YWJsZSwgdGhhdCBpcywgcHJvdmlkaW5n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bnN0cnVjdC4KCiAgICBUaGUgOmNsYXNzOmAuRGVsZXRlYCBvYmplY3QgaXMgY3JlYXRlZCB1c2luZyB0aGUgOmZ1bmM6YGRlbGV0ZSgpYAogICAgZnVuY3Rpb24uCgogICAg2gZkZWxldGVOYwYAAAAAAAAABwAAAAMAAABLAAAAc0wAAAB8A3wAXwB0AXwBgwF8AF8CfAR8AF8DfAVyJHwAoAR8BaEBAQB8AmQBawlyOHQFfAKDAXwAXwZuBmQBfABfBnwAoAd8BqEBAQBkAVMAKQJhAAUAAENvbnN0cnVjdCA6Y2xhc3M6YC5EZWxldGVgIG9iamVjdC4KCiAgICAgICAgU2ltaWxhciBmdW5jdGlvbmFsaXR5IGlzIGF2YWlsYWJsZSB2aWEgdGhlCiAgICAgICAgOm1ldGg6YH4uVGFibGVDbGF1c2UuZGVsZXRlYCBtZXRob2Qgb24KICAgICAgICA6Y2xhc3M6YH4uc2NoZW1hLlRhYmxlYC4KCiAgICAgICAgOnBhcmFtIHRhYmxlOiBUaGUgdGFibGUgdG8gZGVsZXRlIHJvd3MgZnJvbS4KCiAgICAgICAgOnBhcmFtIHdoZXJlY2xhdXNlOiBBIDpjbGFzczpgLkNsYXVzZUVsZW1lbnRgIGRlc2NyaWJpbmcgdGhlIGBgV0hFUkVgYAogICAgICAgICAgY29uZGl0aW9uIG9mIHRoZSBgYERFTEVURWBgIHN0YXRlbWVudC4gTm90ZSB0aGF0IHRoZQogICAgICAgICAgOm1ldGg6YH5EZWxldGUud2hlcmUoKWAgZ2VuZXJhdGl2ZSBtZXRob2QgbWF5IGJlIHVzZWQgaW5zdGVhZC4KCiAgICAgICAgIFRoZSBXSEVSRSBjbGF1c2UgY2FuIHJlZmVyIHRvIG11bHRpcGxlIHRhYmxlcy4KICAgICAgICAgRm9yIGRhdGFiYXNlcyB3aGljaCBzdXBwb3J0IHRoaXMsIGEgYGBERUxFVEUuLlVTSU5HYGAgb3Igc2ltaWxhcgogICAgICAgICBjbGF1c2Ugd2lsbCBiZSBnZW5lcmF0ZWQuICBUaGUgc3RhdGVtZW50CiAgICAgICAgIHdpbGwgZmFpbCBvbiBkYXRhYmFzZXMgdGhhdCBkb24ndCBoYXZlIHN1cHBvcnQgZm9yIG11bHRp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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-37.pyc
5.57 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
base.cpython-37.pyc
23.16 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
compiler.cpython-37.pyc
93.70 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
crud.cpython-37.pyc
15.01 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
ddl.cpython-37.pyc
36.50 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
default_comparator.cpython-37.pyc
7.21 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
dml.cpython-37.pyc
31.66 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
elements.cpython-37.pyc
146.00 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
expression.cpython-37.pyc
6.47 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
functions.cpython-37.pyc
32.50 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
naming.cpython-37.pyc
4.67 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
operators.cpython-37.pyc
45.37 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
schema.cpython-37.pyc
142.91 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
selectable.cpython-37.pyc
122.08 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
sqltypes.cpython-37.pyc
86.91 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
type_api.cpython-37.pyc
47.55 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
util.cpython-37.pyc
23.63 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
visitors.cpython-37.pyc
10.00 KB
lrw-r--r--
2023-11-14 14:32:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-37.pyc
3.02 KB
lrw-r--r--
2023-11-14 14:32:36
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).