REDROOM
PHP 8.0.30
Path:
Logout
Edit File
Size: 55.88 KB
Close
//opt/alt/python37/lib64/python3.7/site-packages/sqlalchemy/dialects/sqlite/__pycache__/base.cpython-37.pyc
Text
Base64
Qg0NCgAAAADDzDRd1A0BAOMAAAAAAAAAAAAAAAAaAAAAQAAAAHOQAgAAZABaAGQBZAJsAVoBZAFkAmwCWgJkA2QEbANtBFoEAQBkA2QFbANtBVoFAQBkA2QGbANtBloGAQBkB2QIbAdtCFoIAQBkB2QJbAdtCVoJAQBkB2QKbAdtCloLAQBkB2QLbAdtDFoMAQBkB2QMbAdtDVoOAQBkB2QNbAdtD1oPAQBkB2QObBBtEVoRAQBkB2QPbBBtEloSAQBkB2QQbAxtE1oTAQBkB2QRbAxtFFoUAQBkB2QSbA1tFVoVAQBkB2QTbA1tFloWAQBkB2QUbA1tF1oXAQBkB2QVbA1tGFoYAQBkB2QWbA1tGVoZAQBkB2QXbA1tGloaAQBkB2QYbA1tG1obAQBkB2QZbA1tHFocAQBkB2QabA1tHVodAQBkB2QbbA1tHloeAQBkB2QcbA1tH1ofAQBkB2QdbA1tIFogAQBHAGQeZB+EAGQfZSGDA1oiRwBkIGQhhABkIWUiZQ5qI4MEWiRHAGQiZCOEAGQjZSJlDmolgwRaJkcAZCRkJYQAZCVlImUOaieDBFooZQ5qJWUmZQ5qI2UkZQ5qBGUEZQ5qBGoFZQVlDmoEagZlBmUOaidlKGkGWillDmoqZQ5qFWUOahZlDmoWZQ5qF2UOaiZlDmomZQ5qJGUOaiRlDmoZZQ5qGGUOahllDmoaZQ5qGmUEZQ5qG2UOahxlDmodZQ5qHmUOaihlDmooZQ5qH2UOaiBlDmorZQ5qLGQmnBlaLUcAZCdkKIQAZChlFGougwNaL0cAZClkKoQAZCplFGowgwNaMUcAZCtkLIQAZCxlFGoygwNaM0cAZC1kLoQAZC5lFGo0gwNaNUcAZC9kMIQAZDBlEWo2gwNaN0cAZDFkMoQAZDJlEWo4gwNaOWQCUwApM2H5UQAACi4uIGRpYWxlY3Q6OiBzcWxpdGUKICAgIDpuYW1lOiBTUUxpdGUKCi4uIF9zcWxpdGVfZGF0ZXRpbWU6CgpEYXRlIGFuZCBUaW1lIFR5cGVzCi0tLS0tLS0tLS0tLS0tLS0tLS0KClNRTGl0ZSBkb2VzIG5vdCBoYXZlIGJ1aWx0LWluIERBVEUsIFRJTUUsIG9yIERBVEVUSU1FIHR5cGVzLCBhbmQgcHlzcWxpdGUgZG9lcwpub3QgcHJvdmlkZSBvdXQgb2YgdGhlIGJveCBmdW5jdGlvbmFsaXR5IGZvciB0cmFuc2xhdGluZyB2YWx1ZXMgYmV0d2VlbiBQeXRob24KYGRhdGV0aW1lYCBvYmplY3RzIGFuZCBhIFNRTGl0ZS1zdXBwb3J0ZWQgZm9ybWF0LiBTUUxBbGNoZW15J3Mgb3duCjpjbGFzczpgfnNxbGFsY2hlbXkudHlwZXMuRGF0ZVRpbWVgIGFuZCByZWxhdGVkIHR5cGVzIHByb3ZpZGUgZGF0ZSBmb3JtYXR0aW5nCmFuZCBwYXJzaW5nIGZ1bmN0aW9uYWxpdHkgd2hlbiBTUUxpdGUgaXMgdXNlZC4gVGhlIGltcGxlbWVudGF0aW9uIGNsYXNzZXMgYXJlCjpjbGFzczpgfi5zcWxpdGUuREFURVRJTUVgLCA6Y2xhc3M6YH4uc3FsaXRlLkRBVEVgIGFuZCA6Y2xhc3M6YH4uc3FsaXRlLlRJTUVgLgpUaGVzZSB0eXBlcyByZXByZXNlbnQgZGF0ZXMgYW5kIHRpbWVzIGFzIElTTyBmb3JtYXR0ZWQgc3RyaW5ncywgd2hpY2ggYWxzbwpuaWNlbHkgc3VwcG9ydCBvcmRlcmluZy4gVGhlcmUncyBubyByZWxpYW5jZSBvbiB0eXBpY2FsICJsaWJjIiBpbnRlcm5hbHMgZm9yCnRoZXNlIGZ1bmN0aW9ucyBzbyBoaXN0b3JpY2FsIGRhdGVzIGFyZSBmdWxseSBzdXBwb3J0ZWQuCgpFbnN1cmluZyBUZXh0IGFmZmluaXR5Cl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KClRoZSBEREwgcmVuZGVyZWQgZm9yIHRoZXNlIHR5cGVzIGlzIHRoZSBzdGFuZGFyZCBgYERBVEVgYCwgYGBUSU1FYGAKYW5kIGBgREFURVRJTUVgYCBpbmRpY2F0b3JzLiAgICBIb3dldmVyLCBjdXN0b20gc3RvcmFnZSBmb3JtYXRzIGNhbiBhbHNvIGJlCmFwcGxpZWQgdG8gdGhlc2UgdHlwZXMuICAgV2hlbiB0aGUKc3RvcmFnZSBmb3JtYXQgaXMgZGV0ZWN0ZWQgYXMgY29udGFpbmluZyBubyBhbHBoYSBjaGFyYWN0ZXJzLCB0aGUgRERMIGZvcgp0aGVzZSB0eXBlcyBpcyByZW5kZXJlZCBhcyBgYERBVEVfQ0hBUmBgLCBgYFRJTUVfQ0hBUmBgLCBhbmQgYGBEQVRFVElNRV9DSEFSYGAsCnNvIHRoYXQgdGhlIGNvbHVtbiBjb250aW51ZXMgdG8gaGF2ZSB0ZXh0dWFsIGFmZmluaXR5LgoKLi4gc2VlYWxzbzo6CgogICAgYFR5cGUgQWZmaW5pdHkgPGh0dHA6Ly93d3cuc3FsaXRlLm9yZy9kYXRhdHlwZTMuaHRtbCNhZmZpbml0eT5gXyAtCiAgICBpbiB0aGUgU1FMaXRlIGRvY3VtZW50YXRpb24KCi4uIF9zcWxpdGVfYXV0b2luY3JlbWVudDoKClNRTGl0ZSBBdXRvIEluY3JlbWVudGluZyBCZWhhdmlvcgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpCYWNrZ3JvdW5kIG9uIFNRTGl0ZSdzIGF1dG9pbmNyZW1lbnQgaXMgYXQ6IGh0dHA6Ly9zcWxpdGUub3JnL2F1dG9pbmMuaHRtbAoKS2V5IGNvbmNlcHRzOgoKKiBTUUxpdGUgaGFzIGFuIGltcGxpY2l0ICJhdXRvIGluY3JlbWVudCIgZmVhdHVyZSB0aGF0IHRha2VzIHBsYWNlIGZvciBhbnkKICBub24tY29tcG9zaXRlIHByaW1hcnkta2V5IGNvbHVtbiB0aGF0IGlzIHNwZWNpZmljYWxseSBjcmVhdGVkIHVzaW5nCiAgIklOVEVHRVIgUFJJTUFSWSBLRVkiIGZvciB0aGUgdHlwZSArIHByaW1hcnkga2V5LgoKKiBTUUxpdGUgYWxzbyBoYXMgYW4gZXhwbGljaXQgIkFVVE9JTkNSRU1FTlQiIGtleXdvcmQsIHRoYXQgaXMgKipub3QqKgogIGVxdWl2YWxlbnQgdG8gdGhlIGltcGxpY2l0IGF1dG9pbmNyZW1lbnQgZmVhdHVyZTsgdGhpcyBrZXl3b3JkIGlzIG5vdAogIHJlY29tbWVuZGVkIGZvciBnZW5lcmFsIHVzZS4gIFNRTEFsY2hlbXkgZG9lcyBub3QgcmVuZGVyIHRoaXMga2V5d29yZAogIHVubGVzcyBhIHNwZWNpYWwgU1FMaXRlLXNwZWNpZmljIGRpcmVjdGl2ZSBpcyB1c2VkIChzZWUgYmVsb3cpLiAgSG93ZXZlciwKICBpdCBzdGlsbCByZXF1aXJlcyB0aGF0IHRoZSBjb2x1bW4ncyB0eXBlIGlzIG5hbWVkICJJTlRFR0VSIi4KClVzaW5nIHRoZSBBVVRPSU5DUkVNRU5UIEtleXdvcmQKXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KClRvIHNwZWNpZmljYWxseSByZW5kZXIgdGhlIEFVVE9JTkNSRU1FTlQga2V5d29yZCBvbiB0aGUgcHJpbWFyeSBrZXkgY29sdW1uCndoZW4gcmVuZGVyaW5nIERETCwgYWRkIHRoZSBmbGFnIGBgc3FsaXRlX2F1dG9pbmNyZW1lbnQ9VHJ1ZWBgIHRvIHRoZSBUYWJsZQpjb25zdHJ1Y3Q6OgoKICAgIFRhYmxlKCdzb21ldGFibGUnLCBtZXRhZGF0YSwKICAgICAgICAgICAgQ29sdW1uKCdpZCcsIEludGVnZXIsIHByaW1hcnlfa2V5PVRydWUpLAogICAgICAgICAgICBzcWxpdGVfYXV0b2luY3JlbWVudD1UcnVlKQoKQWxsb3dpbmcgYXV0b2luY3JlbWVudCBiZWhhdmlvciBTUUxBbGNoZW15IHR5cGVzIG90aGVyIHRoYW4gSW50ZWdlci9JTlRFR0VSCl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgoKU1FMaXRlJ3MgdHlwaW5nIG1vZGVsIGlzIGJhc2VkIG9uIG5hbWluZyBjb252ZW50aW9ucy4gIEFtb25nIG90aGVyIHRoaW5ncywgdGhpcwptZWFucyB0aGF0IGFueSB0eXBlIG5hbWUgd2hpY2ggY29udGFpbnMgdGhlIHN1YnN0cmluZyBgYCJJTlQiYGAgd2lsbCBiZQpkZXRlcm1pbmVkIHRvIGJlIG9mICJpbnRlZ2VyIGFmZmluaXR5Ii4gIEEgdHlwZSBuYW1lZCBgYCJCSUdJTlQiYGAsCmBgIlNQRUNJQUxfSU5UImBgIG9yIGV2ZW4gYGAiWFlaSU5UUVBSImBgLCB3aWxsIGJlIGNvbnNpZGVyZWQgYnkgU1FMaXRlIHRvIGJlCm9mICJpbnRlZ2VyIiBhZmZpbml0eS4gIEhvd2V2ZXIsICoqdGhlIFNRTGl0ZSBhdXRvaW5jcmVtZW50IGZlYXR1cmUsIHdoZXRoZXIKaW1wbGljaXRseSBvciBleHBsaWNpdGx5IGVuYWJsZWQsIHJlcXVpcmVzIHRoYXQgdGhlIG5hbWUgb2YgdGhlIGNvbHVtbidzIHR5cGUKaXMgZXhhY3RseSB0aGUgc3RyaW5nICJJTlRFR0VSIioqLiAgVGhlcmVmb3JlLCBpZiBhbiBhcHBsaWNhdGlvbiB1c2VzIGEgdHlwZQpsaWtlIDpjbGFzczpgLkJpZ0ludGVnZXJgIGZvciBhIHByaW1hcnkga2V5LCBvbiBTUUxpdGUgdGhpcyB0eXBlIHdpbGwgbmVlZCB0bwpiZSByZW5kZXJlZCBhcyB0aGUgbmFtZSBgYCJJTlRFR0VSImBgIHdoZW4gZW1pdHRpbmcgdGhlIGluaXRpYWwgYGBDUkVBVEUKVEFCTEVgYCBzdGF0ZW1lbnQgaW4gb3JkZXIgZm9yIHRoZSBhdXRvaW5jcmVtZW50IGJlaGF2aW9yIHRvIGJlIGF2YWlsYWJsZS4KCk9uZSBhcHByb2FjaCB0byBhY2hpZXZlIHRoaXMgaXMgdG8gdXNlIDpjbGFzczpgLkludGVnZXJgIG9uIFNRTGl0ZQpvbmx5IHVzaW5nIDptZXRoOmAuVHlwZUVuZ2luZS53aXRoX3ZhcmlhbnRgOjoKCiAgICB0YWJsZSA9IFRhYmxlKAogICAgICAgICJteV90YWJsZSIsIG1ldGFkYXRhLAogICAgICAgIENvbHVtbigiaWQiLCBCaWdJbnRlZ2VyKCkud2l0aF92YXJpYW50KEludGVnZXIsICJzcWxpdGUiKSwgcHJpbWFyeV9rZXk9VHJ1ZSkKICAgICkKCkFub3RoZXIgaXMgdG8gdXNlIGEgc3ViY2xhc3Mgb2YgOmNsYXNzOmAuQmlnSW50ZWdlcmAgdGhhdCBvdmVycmlkZXMgaXRzIERETApuYW1lIHRvIGJlIGBgSU5URUdFUmBgIHdoZW4gY29tcGlsZWQgYWdhaW5zdCBTUUxpdGU6OgoKICAgIGZyb20gc3FsYWxjaGVteSBpbXBvcnQgQmlnSW50ZWdlcgogICAgZnJvbSBzcWxhbGNoZW15LmV4dC5jb21waWxlciBpbXBvcnQgY29tcGlsZXMKCiAgICBjbGFzcyBTTEJpZ0ludGVnZXIoQmlnSW50ZWdlcik6CiAgICAgICAgcGFzcwoKICAgIEBjb21waWxlcyhTTEJpZ0ludGVnZXIsICdzcWxpdGUnKQogICAgZGVmIGJpX2MoZWxlbWVudCwgY29tcGlsZXIsICoqa3cpOgogICAgICAgIHJldHVybiAiSU5URUdFUiIKCiAgICBAY29tcGlsZXMoU0xCaWdJbnRlZ2VyKQogICAgZGVmIGJpX2MoZWxlbWVudCwgY29tcGlsZXIsICoqa3cpOgogICAgICAgIHJldHVybiBjb21waWxlci52aXNpdF9CSUdJTlQoZWxlbWVudCwgKiprdykKCgogICAgdGFibGUgPSBUYWJsZSgKICAgICAgICAibXlfdGFibGUiLCBtZXRhZGF0YSwKICAgICAgICBDb2x1bW4oImlkIiwgU0xCaWdJbnRlZ2VyKCksIHByaW1hcnlfa2V5PVRydWUpCiAgICApCgouLiBzZWVhbHNvOjoKCiAgICA6bWV0aDpgLlR5cGVFbmdpbmUud2l0aF92YXJpYW50YAoKICAgIDpyZWY6YHNxbGFsY2hlbXkuZXh0LmNvbXBpbGVyX3RvcGxldmVsYAoKICAgIGBEYXRhdHlwZXMgSW4gU1FMaXRlIFZlcnNpb24gMyA8aHR0cDovL3NxbGl0ZS5vcmcvZGF0YXR5cGUzLmh0bWw+YF8KCi4uIF9zcWxpdGVfY29uY3VycmVuY3k6CgpEYXRhYmFzZSBMb2NraW5nIEJlaGF2aW9yIC8gQ29uY3VycmVuY3kKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpTUUxpdGUgaXMgbm90IGRlc2lnbmVkIGZvciBhIGhpZ2ggbGV2ZWwgb2Ygd3JpdGUgY29uY3VycmVuY3kuIFRoZSBkYXRhYmFzZQppdHNlbGYsIGJlaW5nIGEgZmlsZSwgaXMgbG9ja2VkIGNvbXBsZXRlbHkgZHVyaW5nIHdyaXRlIG9wZXJhdGlvbnMgd2l0aGluCnRyYW5zYWN0aW9ucywgbWVhbmluZyBleGFjdGx5IG9uZSAiY29ubmVjdGlvbiIgKGluIHJlYWxpdHkgYSBmaWxlIGhhbmRsZSkKaGFzIGV4Y2x1c2l2ZSBhY2Nlc3MgdG8gdGhlIGRhdGFiYXNlIGR1cmluZyB0aGlzIHBlcmlvZCAtIGFsbCBvdGhlcgoiY29ubmVjdGlvbnMiIHdpbGwgYmUgYmxvY2tlZCBkdXJpbmcgdGhpcyB0aW1lLgoKVGhlIFB5dGhvbiBEQkFQSSBzcGVjaWZpY2F0aW9uIGFsc28gY2FsbHMgZm9yIGEgY29ubmVjdGlvbiBtb2RlbCB0aGF0IGlzCmFsd2F5cyBpbiBhIHRyYW5zYWN0aW9uOyB0aGVyZSBpcyBubyBgYGNvbm5lY3Rpb24uYmVnaW4oKWBgIG1ldGhvZCwKb25seSBgYGNvbm5lY3Rpb24uY29tbWl0KClgYCBhbmQgYGBjb25uZWN0aW9uLnJvbGxiYWNrKClgYCwgdXBvbiB3aGljaCBhCm5ldyB0cmFuc2FjdGlvbiBpcyB0byBiZSBiZWd1biBpbW1lZGlhdGVseS4gIFRoaXMgbWF5IHNlZW0gdG8gaW1wbHkKdGhhdCB0aGUgU1FMaXRlIGRyaXZlciB3b3VsZCBpbiB0aGVvcnkgYWxsb3cgb25seSBhIHNpbmdsZSBmaWxlaGFuZGxlIG9uIGEKcGFydGljdWxhciBkYXRhYmFzZSBmaWxlIGF0IGFueSB0aW1lOyBob3dldmVyLCB0aGVyZSBhcmUgc2V2ZXJhbApmYWN0b3JzIGJvdGggd2l0aGluIFNRTGl0ZSBpdHNlbGYgYXMgd2VsbCBhcyB3aXRoaW4gdGhlIHB5c3FsaXRlIGRyaXZlcgp3aGljaCBsb29zZW4gdGhpcyByZXN0cmljdGlvbiBzaWduaWZpY2FudGx5LgoKSG93ZXZlciwgbm8gbWF0dGVyIHdoYXQgbG9ja2luZyBtb2RlcyBhcmUgdXNlZCwgU1FMaXRlIHdpbGwgc3RpbGwgYWx3YXlzCmxvY2sgdGhlIGRhdGFiYXNlIGZpbGUgb25jZSBhIHRyYW5zYWN0aW9uIGlzIHN0YXJ0ZWQgYW5kIERNTCAoZS5nLiBJTlNFUlQsClVQREFURSwgREVMRVRFKSBoYXMgYXQgbGVhc3QgYmVlbiBlbWl0dGVkLCBhbmQgdGhpcyB3aWxsIGJsb2NrCm90aGVyIHRyYW5zYWN0aW9ucyBhdCBsZWFzdCBhdCB0aGUgcG9pbnQgdGhhdCB0aGV5IGFsc28gYXR0ZW1wdCB0byBlbWl0IERNTC4KQnkgZGVmYXVsdCwgdGhlIGxlbmd0aCBvZiB0aW1lIG9uIHRoaXMgYmxvY2sgaXMgdmVyeSBzaG9ydCBiZWZvcmUgaXQgdGltZXMgb3V0CndpdGggYW4gZXJyb3IuCgpUaGlzIGJlaGF2aW9yIGJlY29tZXMgbW9yZSBjcml0aWNhbCB3aGVuIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUKU1FMQWxjaGVteSBPUk0uICBTUUxBbGNoZW15J3MgOmNsYXNzOmAuU2Vzc2lvbmAgb2JqZWN0IGJ5IGRlZmF1bHQgcnVucwp3aXRoaW4gYSB0cmFuc2FjdGlvbiwgYW5kIHdpdGggaXRzIGF1dG9mbHVzaCBtb2RlbCwgbWF5IGVtaXQgRE1MIHByZWNlZGluZwphbnkgU0VMRUNUIHN0YXRlbWVudC4gICBUaGlzIG1heSBsZWFkIHRvIGEgU1FMaXRlIGRhdGFiYXNlIHRoYXQgbG9ja3MKbW9yZSBxdWlja2x5IHRoYW4gaXMgZXhwZWN0ZWQuICAgVGhlIGxvY2tpbmcgbW9kZSBvZiBTUUxpdGUgYW5kIHRoZSBweXNxbGl0ZQpkcml2ZXIgY2FuIGJlIG1hbmlwdWxhdGVkIHRvIHNvbWUgZGVncmVlLCBob3dldmVyIGl0IHNob3VsZCBiZSBub3RlZCB0aGF0CmFjaGlldmluZyBhIGhpZ2ggZGVncmVlIG9mIHdyaXRlLWNvbmN1cnJlbmN5IHdpdGggU1FMaXRlIGlzIGEgbG9zaW5nIGJhdHRsZS4KCkZvciBtb3JlIGluZm9ybWF0aW9uIG9uIFNRTGl0ZSdzIGxhY2sgb2Ygd3JpdGUgY29uY3VycmVuY3kgYnkgZGVzaWduLCBwbGVhc2UKc2VlCmBTaXR1YXRpb25zIFdoZXJlIEFub3RoZXIgUkRCTVMgTWF5IFdvcmsgQmV0dGVyIC0gSGlnaCBDb25jdXJyZW5jeQo8aHR0cDovL3d3dy5zcWxpdGUub3JnL3doZW50b3VzZS5odG1sPmBfIG5lYXIgdGhlIGJvdHRvbSBvZiB0aGUgcGFnZS4KClRoZSBmb2xsb3dpbmcgc3Vic2VjdGlvbnMgaW50cm9kdWNlIGFyZWFzIHRoYXQgYXJlIGltcGFjdGVkIGJ5IFNRTGl0ZSdzCmZpbGUtYmFzZWQgYXJjaGl0ZWN0dXJlIGFuZCBhZGRpdGlvbmFsbHkgd2lsbCB1c3VhbGx5IHJlcXVpcmUgd29ya2Fyb3VuZHMgdG8Kd29yayB3aGVuIHVzaW5nIHRoZSBweXNxbGl0ZSBkcml2ZXIuCgouLiBfc3FsaXRlX2lzb2xhdGlvbl9sZXZlbDoKClRyYW5zYWN0aW9uIElzb2xhdGlvbiBMZXZlbAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpTUUxpdGUgc3VwcG9ydHMgInRyYW5zYWN0aW9uIGlzb2xhdGlvbiIgaW4gYSBub24tc3RhbmRhcmQgd2F5LCBhbG9uZyB0d28KYXhlcy4gIE9uZSBpcyB0aGF0IG9mIHRoZQpgUFJBR01BIHJlYWRfdW5jb21taXR0ZWQgPGh0dHA6Ly93d3cuc3FsaXRlLm9yZy9wcmFnbWEuaHRtbCNwcmFnbWFfcmVhZF91bmNvbW1pdHRlZD5gXwppbnN0cnVjdGlvbi4gICBUaGlzIHNldHRpbmcgY2FuIGVzc2VudGlhbGx5IHN3aXRjaCBTUUxpdGUgYmV0d2VlbiBpdHMKZGVmYXVsdCBtb2RlIG9mIGBgU0VSSUFMSVpBQkxFYGAgaXNvbGF0aW9uLCBhbmQgYSAiZGlydHkgcmVhZCIgaXNvbGF0aW9uCm1vZGUgbm9ybWFsbHkgcmVmZXJyZWQgdG8gYXMgYGBSRUFEIFVOQ09NTUlUVEVEYGAuCgpTUUxBbGNoZW15IHRpZXMgaW50byB0aGlzIFBSQUdNQSBzdGF0ZW1lbnQgdXNpbmcgdGhlCjpwYXJhbXJlZjpgLmNyZWF0ZV9lbmdpbmUuaXNvbGF0aW9uX2xldmVsYCBwYXJhbWV0ZXIgb2YgOmZ1bmM6YC5jcmVhdGVfZW5naW5lYC4KVmFsaWQgdmFsdWVzIGZvciB0aGlzIHBhcmFtZXRlciB3aGVuIHVzZWQgd2l0aCBTUUxpdGUgYXJlIGBgIlNFUklBTElaQUJMRSJgYAphbmQgYGAiUkVBRCBVTkNPTU1JVFRFRCJgYCBjb3JyZXNwb25kaW5nIHRvIGEgdmFsdWUgb2YgMCBhbmQgMSwgcmVzcGVjdGl2ZWx5LgpTUUxpdGUgZGVmYXVsdHMgdG8gYGBTRVJJQUxJWkFCTEVgYCwgaG93ZXZlciBpdHMgYmVoYXZpb3IgaXMgaW1wYWN0ZWQgYnkKdGhlIHB5c3FsaXRlIGRyaXZlcidzIGRlZmF1bHQgYmVoYXZpb3IuCgpUaGUgb3RoZXIgYXhpcyBhbG9uZyB3aGljaCBTUUxpdGUncyB0cmFuc2FjdGlvbmFsIGxvY2tpbmcgaXMgaW1wYWN0ZWQgaXMKdmlhIHRoZSBuYXR1cmUgb2YgdGhlIGBgQkVHSU5gYCBzdGF0ZW1lbnQgdXNlZC4gICBUaGUgdGhyZWUgdmFyaWV0aWVzCmFyZSAiZGVmZXJyZWQiLCAiaW1tZWRpYXRlIiwgYW5kICJleGNsdXNpdmUiLCBhcyBkZXNjcmliZWQgYXQKYEJFR0lOIFRSQU5TQUNUSU9OIDxodHRwOi8vc3FsaXRlLm9yZy9sYW5nX3RyYW5zYWN0aW9uLmh0bWw+YF8uICAgQSBzdHJhaWdodApgYEJFR0lOYGAgc3RhdGVtZW50IHVzZXMgdGhlICJkZWZlcnJlZCIgbW9kZSwgd2hlcmUgdGhlIGRhdGFiYXNlIGZpbGUgaXMKbm90IGxvY2tlZCB1bnRpbCB0aGUgZmlyc3QgcmVhZCBvciB3cml0ZSBvcGVyYXRpb24sIGFuZCByZWFkIGFjY2VzcyByZW1haW5zCm9wZW4gdG8gb3RoZXIgdHJhbnNhY3Rpb25zIHVudGlsIHRoZSBmaXJzdCB3cml0ZSBvcGVyYXRpb24uICBCdXQgYWdhaW4sCml0IGlzIGNyaXRpY2FsIHRvIG5vdGUgdGhhdCB0aGUgcHlzcWxpdGUgZHJpdmVyIGludGVyZmVyZXMgd2l0aCB0aGlzIGJlaGF2aW9yCmJ5ICpub3QgZXZlbiBlbWl0dGluZyBCRUdJTiogdW50aWwgdGhlIGZpcnN0IHdyaXRlIG9wZXJhdGlvbi4KCi4uIHdhcm5pbmc6OgoKICAgIFNRTGl0ZSdzIHRyYW5zYWN0aW9uYWwgc2NvcGUgaXMgaW1wYWN0ZWQgYnkgdW5yZXNvbHZlZAogICAgaXNzdWVzIGluIHRoZSBweXNxbGl0ZSBkcml2ZXIsIHdoaWNoIGRlZmVycyBCRUdJTiBzdGF0ZW1lbnRzIHRvIGEgZ3JlYXRlcgogICAgZGVncmVlIHRoYW4gaXMgb2Z0ZW4gZmVhc2libGUuIFNlZSB0aGUgc2VjdGlvbiA6cmVmOmBweXNxbGl0ZV9zZXJpYWxpemFibGVgCiAgICBmb3IgdGVjaG5pcXVlcyB0byB3b3JrIGFyb3VuZCB0aGlzIGJlaGF2aW9yLgoKU0FWRVBPSU5UIFN1cHBvcnQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKU1FMaXRlIHN1cHBvcnRzIFNBVkVQT0lOVHMsIHdoaWNoIG9ubHkgZnVuY3Rpb24gb25jZSBhIHRyYW5zYWN0aW9uIGlzCmJlZ3VuLiAgIFNRTEFsY2hlbXkncyBTQVZFUE9JTlQgc3VwcG9ydCBpcyBhdmFpbGFibGUgdXNpbmcgdGhlCjptZXRoOmAuQ29ubmVjdGlvbi5iZWdpbl9uZXN0ZWRgIG1ldGhvZCBhdCB0aGUgQ29yZSBsZXZlbCwgYW5kCjptZXRoOmAuU2Vzc2lvbi5iZWdpbl9uZXN0ZWRgIGF0IHRoZSBPUk0gbGV2ZWwuICAgSG93ZXZlciwgU0FWRVBPSU5Ucwp3b24ndCB3b3JrIGF0IGFsbCB3aXRoIHB5c3FsaXRlIHVubGVzcyB3b3JrYXJvdW5kcyBhcmUgdGFrZW4uCgouLiB3YXJuaW5nOjoKCiAgICBTUUxpdGUncyBTQVZFUE9JTlQgZmVhdHVyZSBpcyBpbXBhY3RlZCBieSB1bnJlc29sdmVkCiAgICBpc3N1ZXMgaW4gdGhlIHB5c3FsaXRlIGRyaXZlciwgd2hpY2ggZGVmZXJzIEJFR0lOIHN0YXRlbWVudHMgdG8gYSBncmVhdGVyCiAgICBkZWdyZWUgdGhhbiBpcyBvZnRlbiBmZWFzaWJsZS4gU2VlIHRoZSBzZWN0aW9uIDpyZWY6YHB5c3FsaXRlX3NlcmlhbGl6YWJsZWAKICAgIGZvciB0ZWNobmlxdWVzIHRvIHdvcmsgYXJvdW5kIHRoaXMgYmVoYXZpb3IuCgpUcmFuc2FjdGlvbmFsIERETAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpUaGUgU1FMaXRlIGRhdGFiYXNlIHN1cHBvcnRzIHRyYW5zYWN0aW9uYWwgOnRlcm06YERETGAgYXMgd2VsbC4KSW4gdGhpcyBjYXNlLCB0aGUgcHlzcWxpdGUgZHJpdmVyIGlzIG5vdCBvbmx5IGZhaWxpbmcgdG8gc3RhcnQgdHJhbnNhY3Rpb25zLAppdCBhbHNvIGlzIGVuZGluZyBhbnkgZXhpc3RpbmcgdHJhbnNhY3Rpb24gd2hlbiBEREwgaXMgZGV0ZWN0ZWQsIHNvIGFnYWluLAp3b3JrYXJvdW5kcyBhcmUgcmVxdWlyZWQuCgouLiB3YXJuaW5nOjoKCiAgICBTUUxpdGUncyB0cmFuc2FjdGlvbmFsIERETCBpcyBpbXBhY3RlZCBieSB1bnJlc29sdmVkIGlzc3VlcwogICAgaW4gdGhlIHB5c3FsaXRlIGRyaXZlciwgd2hpY2ggZmFpbHMgdG8gZW1pdCBCRUdJTiBhbmQgYWRkaXRpb25hbGx5CiAgICBmb3JjZXMgYSBDT01NSVQgdG8gY2FuY2VsIGFueSB0cmFuc2FjdGlvbiB3aGVuIERETCBpcyBlbmNvdW50ZXJlZC4KICAgIFNlZSB0aGUgc2VjdGlvbiA6cmVmOmBweXNxbGl0ZV9zZXJpYWxpemFibGVgCiAgICBmb3IgdGVjaG5pcXVlcyB0byB3b3JrIGFyb3VuZCB0aGlzIGJlaGF2aW9yLgoKLi4gX3NxbGl0ZV9mb3JlaWduX2tleXM6CgpGb3JlaWduIEtleSBTdXBwb3J0Ci0tLS0tLS0tLS0tLS0tLS0tLS0KClNRTGl0ZSBzdXBwb3J0cyBGT1JFSUdOIEtFWSBzeW50YXggd2hlbiBlbWl0dGluZyBDUkVBVEUgc3RhdGVtZW50cyBmb3IgdGFibGVzLApob3dldmVyIGJ5IGRlZmF1bHQgdGhlc2UgY29uc3RyYWludHMgaGF2ZSBubyBlZmZlY3Qgb24gdGhlIG9wZXJhdGlvbiBvZiB0aGUKdGFibGUuCgpDb25zdHJhaW50IGNoZWNraW5nIG9uIFNRTGl0ZSBoYXMgdGhyZWUgcHJlcmVxdWlzaXRlczoKCiogQXQgbGVhc3QgdmVyc2lvbiAzLjYuMTkgb2YgU1FMaXRlIG11c3QgYmUgaW4gdXNlCiogVGhlIFNRTGl0ZSBsaWJyYXJ5IG11c3QgYmUgY29tcGlsZWQgKndpdGhvdXQqIHRoZSBTUUxJVEVfT01JVF9GT1JFSUdOX0tFWQogIG9yIFNRTElURV9PTUlUX1RSSUdHRVIgc3ltYm9scyBlbmFibGVkLgoqIFRoZSBgYFBSQUdNQSBmb3JlaWduX2tleXMgPSBPTmBgIHN0YXRlbWVudCBtdXN0IGJlIGVtaXR0ZWQgb24gYWxsCiAgY29ubmVjdGlvbnMgYmVmb3JlIHVzZS4KClNRTEFsY2hlbXkgYWxsb3dzIGZvciB0aGUgYGBQUkFHTUFgYCBzdGF0ZW1lbnQgdG8gYmUgZW1pdHRlZCBhdXRvbWF0aWNhbGx5IGZvcgpuZXcgY29ubmVjdGlvbnMgdGhyb3VnaCB0aGUgdXNhZ2Ugb2YgZXZlbnRzOjoKCiAgICBmcm9tIHNxbGFsY2hlbXkuZW5naW5lIGltcG9ydCBFbmdpbmUKICAgIGZyb20gc3FsYWxjaGVteSBpbXBvcnQgZXZlbnQKCiAgICBAZXZlbnQubGlzdGVuc19mb3IoRW5naW5lLCAiY29ubmVjdCIpCiAgICBkZWYgc2V0X3NxbGl0ZV9wcmFnbWEoZGJhcGlfY29ubmVjdGlvbiwgY29ubmVjdGlvbl9yZWNvcmQpOgogICAgICAgIGN1cnNvciA9IGRiYXBpX2Nvbm5lY3Rpb24uY3Vyc29yKCkKICAgICAgICBjdXJzb3IuZXhlY3V0ZSgiUFJBR01BIGZvcmVpZ25fa2V5cz1PTiIpCiAgICAgICAgY3Vyc29yLmNsb3NlKCkKCi4uIHdhcm5pbmc6OgoKICAgIFdoZW4gU1FMaXRlIGZvcmVpZ24ga2V5cyBhcmUgZW5hYmxlZCwgaXQgaXMgKipub3QgcG9zc2libGUqKgogICAgdG8gZW1pdCBDUkVBVEUgb3IgRFJPUCBzdGF0ZW1lbnRzIGZvciB0YWJsZXMgdGhhdCBjb250YWluCiAgICBtdXR1YWxseS1kZXBlbmRlbnQgZm9yZWlnbiBrZXkgY29uc3RyYWludHM7CiAgICB0byBlbWl0IHRoZSBEREwgZm9yIHRoZXNlIHRhYmxlcyByZXF1aXJlcyB0aGF0IEFMVEVSIFRBQkxFIGJlIHVzZWQgdG8KICAgIGNyZWF0ZSBvciBkcm9wIHRoZXNlIGNvbnN0cmFpbnRzIHNlcGFyYXRlbHksIGZvciB3aGljaCBTUUxpdGUgaGFzCiAgICBubyBzdXBwb3J0LgoKLi4gc2VlYWxzbzo6CgogICAgYFNRTGl0ZSBGb3JlaWduIEtleSBTdXBwb3J0IDxodHRwOi8vd3d3LnNxbGl0ZS5vcmcvZm9yZWlnbmtleXMuaHRtbD5gXwogICAgLSBvbiB0aGUgU1FMaXRlIHdlYiBzaXRlLgoKICAgIDpyZWY6YGV2ZW50X3RvcGxldmVsYCAtIFNRTEFsY2hlbXkgZXZlbnQgQVBJLgoKICAgIDpyZWY6YHVzZV9hbHRlcmAgLSBtb3JlIGluZm9ybWF0aW9uIG9uIFNRTEFsY2hlbXkncyBmYWNpbGl0aWVzIGZvciBoYW5kbGluZwogICAgIG11dHVhbGx5LWRlcGVuZGVudCBmb3JlaWduIGtleSBjb25zdHJhaW50cy4KCi4uIF9zcWxpdGVfb25fY29uZmxpY3RfZGRsOgoKT04gQ09ORkxJQ1Qgc3VwcG9ydCBmb3IgY29uc3RyYWludHMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KClNRTGl0ZSBzdXBwb3J0cyBhIG5vbi1zdGFuZGFyZCBjbGF1c2Uga25vd24gYXMgT04gQ09ORkxJQ1Qgd2hpY2ggY2FuIGJlIGFwcGxpZWQKdG8gcHJpbWFyeSBrZXksIHVuaXF1ZSwgY2hlY2ssIGFuZCBub3QgbnVsbCBjb25zdHJhaW50cy4gICBJbiBEREwsIGl0IGlzCnJlbmRlcmVkIGVpdGhlciB3aXRoaW4gdGhlICJDT05TVFJBSU5UIiBjbGF1c2Ugb3Igd2l0aGluIHRoZSBjb2x1bW4gZGVmaW5pdGlvbgppdHNlbGYgZGVwZW5kaW5nIG9uIHRoZSBsb2NhdGlvbiBvZiB0aGUgdGFyZ2V0IGNvbnN0cmFpbnQuICAgIFRvIHJlbmRlciB0aGlzCmNsYXVzZSB3aXRoaW4gRERMLCB0aGUgZXh0ZW5zaW9uIHBhcmFtZXRlciBgYHNxbGl0ZV9vbl9jb25mbGljdGBgIGNhbiBiZQpzcGVjaWZpZWQgd2l0aCBhIHN0cmluZyBjb25mbGljdCByZXNvbHV0aW9uIGFsZ29yaXRobSB3aXRoaW4gdGhlCjpjbGFzczpgLlByaW1hcnlLZXlDb25zdHJhaW50YCwgOmNsYXNzOmAuVW5pcXVlQ29uc3RyYWludGAsCjpjbGFzczpgLkNoZWNrQ29uc3RyYWludGAgb2JqZWN0cy4gIFdpdGhpbiB0aGUgOmNsYXNzOmAuQ29sdW1uYCBvYmplY3QsIHRoZXJlCmFyZSBpbmRpdmlkdWFsIHBhcmFtZXRlcnMgYGBzcWxpdGVfb25fY29uZmxpY3Rfbm90X251bGxgYCwKYGBzcWxpdGVfb25fY29uZmxpY3RfcHJpbWFyeV9rZXlgYCwgYGBzcWxpdGVfb25fY29uZmxpY3RfdW5pcXVlYGAgd2hpY2ggZWFjaApjb3JyZXNwb25kIHRvIHRoZSB0aHJlZSB0eXBlcyBvZiByZWxldmFudCBjb25zdHJhaW50IHR5cGVzIHRoYXQgY2FuIGJlCmluZGljYXRlZCBmcm9tIGEgOmNsYXNzOmAuQ29sdW1uYCBvYmplY3QuCgouLiBzZWVhbHNvOjoKCiAgICBgT04gQ09ORkxJQ1QgPGh0dHBzOi8vd3d3LnNxbGl0ZS5vcmcvbGFuZ19jb25mbGljdC5odG1sPmBfIC0gaW4gdGhlIFNRTGl0ZQogICAgZG9jdW1lbnRhdGlvbgoKLi4gdmVyc2lvbmFkZGVkOjogMS4zCgoKVGhlIGBgc3FsaXRlX29uX2NvbmZsaWN0YGAgcGFyYW1ldGVycyBhY2NlcHQgYSAgc3RyaW5nIGFyZ3VtZW50IHdoaWNoIGlzIGp1c3QKdGhlIHJlc29sdXRpb24gbmFtZSB0byBiZSBjaG9zZW4sIHdoaWNoIG9uIFNRTGl0ZSBjYW4gYmUgb25lIG9mIFJPTExCQUNLLApBQk9SVCwgRkFJTCwgSUdOT1JFLCBhbmQgUkVQTEFDRS4gICBGb3IgZXhhbXBsZSwgdG8gYWRkIGEgVU5JUVVFIGNvbnN0cmFpbnQKdGhhdCBzcGVjaWZpZXMgdGhlIElHTk9SRSBhbGdvcml0aG06OgoKICAgIHNvbWVfdGFibGUgPSBUYWJsZSgKICAgICAgICAnc29tZV90YWJsZScsIG1ldGFkYXRhLAogICAgICAgIENvbHVtbignaWQnLCBJbnRlZ2VyLCBwcmltYXJ5X2tleT1UcnVlKSwKICAgICAgICBDb2x1bW4oJ2RhdGEnLCBJbnRlZ2VyKSwKICAgICAgICBVbmlxdWVDb25zdHJhaW50KCdpZCcsICdkYXRhJywgc3FsaXRlX29uX2NvbmZsaWN0PSdJR05PUkUnKQogICAgKQoKVGhlIGFib3ZlIHJlbmRlcnMgQ1JFQVRFIFRBQkxFIERETCBhczo6CgogICAgQ1JFQVRFIFRBQkxFIHNvbWVfdGFibGUgKAogICAgICAgIGlkIElOVEVHRVIgTk9UIE5VTEwsCiAgICAgICAgZGF0YSBJTlRFR0VSLAogICAgICAgIFBSSU1BUlkgS0VZIChpZCksCiAgICAgICAgVU5JUVVFIChpZCwgZGF0YSkgT04gQ09ORkxJQ1QgSUdOT1JFCiAgICApCgoKV2hlbiB1c2luZyB0aGUgOnBhcmFtcmVmOmAuQ29sdW1uLnVuaXF1ZWAgZmxhZyB0byBhZGQgYSBVTklRVUUgY29uc3RyYWludAp0byBhIHNpbmdsZSBjb2x1bW4sIHRoZSBgYHNxbGl0ZV9vbl9jb25mbGljdF91bmlxdWVgYCBwYXJhbWV0ZXIgY2FuCmJlIGFkZGVkIHRvIHRoZSA6Y2xhc3M6YC5Db2x1bW5gIGFzIHdlbGwsIHdoaWNoIHdpbGwgYmUgYWRkZWQgdG8gdGhlClVOSVFVRSBjb25zdHJhaW50IGluIHRoZSBEREw6OgoKICAgIHNvbWVfdGFibGUgPSBUYWJsZSgKICAgICAgICAnc29tZV90YWJsZScsIG1ldGFkYXRhLAogICAgICAgIENvbHVtbignaWQnLCBJbnRlZ2VyLCBwcmltYXJ5X2tleT1UcnVlKSwKICAgICAgICBDb2x1bW4oJ2RhdGEnLCBJbnRlZ2VyLCB1bmlxdWU9VHJ1ZSwKICAgICAgICAgICAgICAgc3FsaXRlX29uX2NvbmZsaWN0X3VuaXF1ZT0nSUdOT1JFJykKICAgICkKCnJlbmRlcmluZzo6CgogICAgQ1JFQVRFIFRBQkxFIHNvbWVfdGFibGUgKAogICAgICAgIGlkIElOVEVHRVIgTk9UIE5VTEwsCiAgICAgICAgZGF0YSBJTlRFR0VSLAogICAgICAgIFBSSU1BUlkgS0VZIChpZCksCiAgICAgICAgVU5JUVVFIChkYXRhKSBPTiBDT05GTElDVCBJR05PUkUKICAgICkKClRvIGFwcGx5IHRoZSBGQUlMIGFsZ29yaXRobSBmb3IgYSBOT1QgTlVMTCBjb25zdHJhaW50LApgYHNxbGl0ZV9vbl9jb25mbGljdF9ub3RfbnVsbGBgIGlzIHVzZWQ6OgoKICAgIHNvbWVfdGFibGUgPSBUYWJsZSgKICAgICAgICAnc29tZV90YWJsZScsIG1ldGFkYXRhLAogICAgICAgIENvbHVtbignaWQnLCBJbnRlZ2VyLCBwcmltYXJ5X2tleT1UcnVlKSwKICAgICAgICBDb2x1bW4oJ2RhdGEnLCBJbnRlZ2VyLCBudWxsYWJsZT1GYWxzZSwKICAgICAgICAgICAgICAgc3FsaXRlX29uX2NvbmZsaWN0X25vdF9udWxsPSdGQUlMJykKICAgICkKCnRoaXMgcmVuZGVycyB0aGUgY29sdW1uIGlubGluZSBPTiBDT05GTElDVCBwaHJhc2U6OgoKICAgIENSRUFURSBUQUJMRSBzb21lX3RhYmxlICgKICAgICAgICBpZCBJTlRFR0VSIE5PVCBOVUxMLAogICAgICAgIGRhdGEgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLAogICAgICAgIFBSSU1BUlkgS0VZIChpZCkKICAgICkKCgpTaW1pbGFybHksIGZvciBhbiBpbmxpbmUgcHJpbWFyeSBrZXksIHVzZSBgYHNxbGl0ZV9vbl9jb25mbGljdF9wcmltYXJ5X2tleWBgOjoKCiAgICBzb21lX3RhYmxlID0gVGFibGUoCiAgICAgICAgJ3NvbWVfdGFibGUnLCBtZXRhZGF0YSwKICAgICAgICBDb2x1bW4oJ2lkJywgSW50ZWdlciwgcHJpbWFyeV9rZXk9VHJ1ZSwKICAgICAgICAgICAgICAgc3FsaXRlX29uX2NvbmZsaWN0X3ByaW1hcnlfa2V5PSdGQUlMJykKICAgICkKClNRTEFsY2hlbXkgcmVuZGVycyB0aGUgUFJJTUFSWSBLRVkgY29uc3RyYWludCBzZXBhcmF0ZWx5LCBzbyB0aGUgY29uZmxpY3QKcmVzb2x1dGlvbiBhbGdvcml0aG0gaXMgYXBwbGllZCB0byB0aGUgY29uc3RyYWludCBpdHNlbGY6OgoKICAgIENSRUFURSBUQUJMRSBzb21lX3RhYmxlICgKICAgICAgICBpZCBJTlRFR0VSIE5PVCBOVUxMLAogICAgICAgIFBSSU1BUlkgS0VZIChpZCkgT04gQ09ORkxJQ1QgRkFJTAogICAgKQoKLi4gX3NxbGl0ZV90eXBlX3JlZmxlY3Rpb246CgpUeXBlIFJlZmxlY3Rpb24KLS0tLS0tLS0tLS0tLS0tCgpTUUxpdGUgdHlwZXMgYXJlIHVubGlrZSB0aG9zZSBvZiBtb3N0IG90aGVyIGRhdGFiYXNlIGJhY2tlbmRzLCBpbiB0aGF0CnRoZSBzdHJpbmcgbmFtZSBvZiB0aGUgdHlwZSB1c3VhbGx5IGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSAidHlwZSIgaW4gYQpvbmUtdG8tb25lIGZhc2hpb24uICBJbnN0ZWFkLCBTUUxpdGUgbGlua3MgcGVyLWNvbHVtbiB0eXBpbmcgYmVoYXZpb3IKdG8gb25lIG9mIGZpdmUgc28tY2FsbGVkICJ0eXBlIGFmZmluaXRpZXMiIGJhc2VkIG9uIGEgc3RyaW5nIG1hdGNoaW5nCnBhdHRlcm4gZm9yIHRoZSB0eXBlLgoKU1FMQWxjaGVteSdzIHJlZmxlY3Rpb24gcHJvY2Vzcywgd2hlbiBpbnNwZWN0aW5nIHR5cGVzLCB1c2VzIGEgc2ltcGxlCmxvb2t1cCB0YWJsZSB0byBsaW5rIHRoZSBrZXl3b3JkcyByZXR1cm5lZCB0byBwcm92aWRlZCBTUUxBbGNoZW15IHR5cGVzLgpUaGlzIGxvb2t1cCB0YWJsZSBpcyBwcmVzZW50IHdpdGhpbiB0aGUgU1FMaXRlIGRpYWxlY3QgYXMgaXQgaXMgZm9yIGFsbApvdGhlciBkaWFsZWN0cy4gIEhvd2V2ZXIsIHRoZSBTUUxpdGUgZGlhbGVjdCBoYXMgYSBkaWZmZXJlbnQgImZhbGxiYWNrIgpyb3V0aW5lIGZvciB3aGVuIGEgcGFydGljdWxhciB0eXBlIG5hbWUgaXMgbm90IGxvY2F0ZWQgaW4gdGhlIGxvb2t1cCBtYXA7Cml0IGluc3RlYWQgaW1wbGVtZW50cyB0aGUgU1FMaXRlICJ0eXBlIGFmZmluaXR5IiBzY2hlbWUgbG9jYXRlZCBhdApodHRwOi8vd3d3LnNxbGl0ZS5vcmcvZGF0YXR5cGUzLmh0bWwgc2VjdGlvbiAyLjEuCgpUaGUgcHJvdmlkZWQgdHlwZW1hcCB3aWxsIG1ha2UgZGlyZWN0IGFzc29jaWF0aW9ucyBmcm9tIGFuIGV4YWN0IHN0cmluZwpuYW1lIG1hdGNoIGZvciB0aGUgZm9sbG93aW5nIHR5cGVzOgoKOmNsYXNzOmB+LnR5cGVzLkJJR0lOVGAsIDpjbGFzczpgfi50eXBlcy5CTE9CYCwKOmNsYXNzOmB+LnR5cGVzLkJPT0xFQU5gLCA6Y2xhc3M6YH4udHlwZXMuQk9PTEVBTmAsCjpjbGFzczpgfi50eXBlcy5DSEFSYCwgOmNsYXNzOmB+LnR5cGVzLkRBVEVgLAo6Y2xhc3M6YH4udHlwZXMuREFURVRJTUVgLCA6Y2xhc3M6YH4udHlwZXMuRkxPQVRgLAo6Y2xhc3M6YH4udHlwZXMuREVDSU1BTGAsIDpjbGFzczpgfi50eXBlcy5GTE9BVGAsCjpjbGFzczpgfi50eXBlcy5JTlRFR0VSYCwgOmNsYXNzOmB+LnR5cGVzLklOVEVHRVJgLAo6Y2xhc3M6YH4udHlwZXMuTlVNRVJJQ2AsIDpjbGFzczpgfi50eXBlcy5SRUFMYCwKOmNsYXNzOmB+LnR5cGVzLlNNQUxMSU5UYCwgOmNsYXNzOmB+LnR5cGVzLlRFWFRgLAo6Y2xhc3M6YH4udHlwZXMuVElNRWAsIDpjbGFzczpgfi50eXBlcy5USU1FU1RBTVBgLAo6Y2xhc3M6YH4udHlwZXMuVkFSQ0hBUmAsIDpjbGFzczpgfi50eXBlcy5OVkFSQ0hBUmAsCjpjbGFzczpgfi50eXBlcy5OQ0hBUmAKCldoZW4gYSB0eXBlIG5hbWUgZG9lcyBub3QgbWF0Y2ggb25lIG9mIHRoZSBhYm92ZSB0eXBlcywgdGhlICJ0eXBlIGFmZmluaXR5Igpsb29rdXAgaXMgdXNlZCBpbnN0ZWFkOgoKKiA6Y2xhc3M6YH4udHlwZXMuSU5URUdFUmAgaXMgcmV0dXJuZWQgaWYgdGhlIHR5cGUgbmFtZSBpbmNsdWRlcyB0aGUKICBzdHJpbmcgYGBJTlRgYAoqIDpjbGFzczpgfi50eXBlcy5URVhUYCBpcyByZXR1cm5lZCBpZiB0aGUgdHlwZSBuYW1lIGluY2x1ZGVzIHRoZQogIHN0cmluZyBgYENIQVJgYCwgYGBDTE9CYGAgb3IgYGBURVhUYGAKKiA6Y2xhc3M6YH4udHlwZXMuTnVsbFR5cGVgIGlzIHJldHVybmVkIGlmIHRoZSB0eXBlIG5hbWUgaW5jbHVkZXMgdGhlCiAgc3RyaW5nIGBgQkxPQmBgCiogOmNsYXNzOmB+LnR5cGVzLlJFQUxgIGlzIHJldHVybmVkIGlmIHRoZSB0eXBlIG5hbWUgaW5jbHVkZXMgdGhlIHN0cmluZwogIGBgUkVBTGBgLCBgYEZMT0FgYCBvciBgYERPVUJgYC4KKiBPdGhlcndpc2UsIHRoZSA6Y2xhc3M6YH4udHlwZXMuTlVNRVJJQ2AgdHlwZSBpcyB1c2VkLgoKLi4gdmVyc2lvbmFkZGVkOjogMC45LjMgU3VwcG9ydCBmb3IgU1FMaXRlIHR5cGUgYWZmaW5pdHkgcnVsZXMgd2hlbiByZWZsZWN0aW5nCiAgIGNvbHVtbnMuCgoKLi4gX3NxbGl0ZV9wYXJ0aWFsX2luZGV4OgoKUGFydGlhbCBJbmRleGVzCi0tLS0tLS0tLS0tLS0tLQoKQSBwYXJ0aWFsIGluZGV4LCBlLmcuIG9uZSB3aGljaCB1c2VzIGEgV0hFUkUgY2xhdXNlLCBjYW4gYmUgc3BlY2lmaWVkCndpdGggdGhlIERETCBzeXN0ZW0gdXNpbmcgdGhlIGFyZ3VtZW50IGBgc3FsaXRlX3doZXJlYGA6OgoKICAgIHRibCA9IFRhYmxlKCd0ZXN0dGJsJywgbSwgQ29sdW1uKCdkYXRhJywgSW50ZWdlcikpCiAgICBpZHggPSBJbmRleCgndGVzdF9pZHgxJywgdGJsLmMuZGF0YSwKICAgICAgICAgICAgICAgIHNxbGl0ZV93aGVyZT1hbmRfKHRibC5jLmRhdGEgPiA1LCB0YmwuYy5kYXRhIDwgMTApKQoKVGhlIGluZGV4IHdpbGwgYmUgcmVuZGVyZWQgYXQgY3JlYXRlIHRpbWUgYXM6OgoKICAgIENSRUFURSBJTkRFWCB0ZXN0X2lkeDEgT04gdGVzdHRibCAoZGF0YSkKICAgIFdIRVJFIGRhdGEgPiA1IEFORCBkYXRhIDwgMTAKCi4uIHZlcnNpb25hZGRlZDo6IDAuOS45CgouLiBfc3FsaXRlX2RvdHRlZF9jb2x1bW5fbmFtZXM6CgpEb3R0ZWQgQ29sdW1uIE5hbWVzCi0tLS0tLS0tLS0tLS0tLS0tLS0KClVzaW5nIHRhYmxlIG9yIGNvbHVtbiBuYW1lcyB0aGF0IGV4cGxpY2l0bHkgaGF2ZSBwZXJpb2RzIGluIHRoZW0gaXMKKipub3QgcmVjb21tZW5kZWQqKi4gICBXaGlsZSB0aGlzIGlzIGdlbmVyYWxseSBhIGJhZCBpZGVhIGZvciByZWxhdGlvbmFsCmRhdGFiYXNlcyBpbiBnZW5lcmFsLCBhcyB0aGUgZG90IGlzIGEgc3ludGFjdGljYWxseSBzaWduaWZpY2FudCBjaGFyYWN0ZXIsCnRoZSBTUUxpdGUgZHJpdmVyIHVwIHVudGlsIHZlcnNpb24gKiozLjEwLjAqKiBvZiBTUUxpdGUgaGFzIGEgYnVnIHdoaWNoCnJlcXVpcmVzIHRoYXQgU1FMQWxjaGVteSBmaWx0ZXIgb3V0IHRoZXNlIGRvdHMgaW4gcmVzdWx0IHNldHMuCgouLiB2ZXJzaW9uY2hhbmdlZDo6IDEuMQoKICAgIFRoZSBmb2xsb3dpbmcgU1FMaXRlIGlzc3VlIGhhcyBiZWVuIHJlc29sdmVkIGFzIG9mIHZlcnNpb24gMy4xMC4wCiAgICBvZiBTUUxpdGUuICBTUUxBbGNoZW15IGFzIG9mICoqMS4xKiogYXV0b21hdGljYWxseSBkaXNhYmxlcyBpdHMgaW50ZXJuYWwKICAgIHdvcmthcm91bmRzIGJhc2VkIG9uIGRldGVjdGlvbiBvZiB0aGlzIHZlcnNpb24uCgpUaGUgYnVnLCBlbnRpcmVseSBvdXRzaWRlIG9mIFNRTEFsY2hlbXksIGNhbiBiZSBpbGx1c3RyYXRlZCB0aHVzbHk6OgoKICAgIGltcG9ydCBzcWxpdGUzCgogICAgYXNzZXJ0IHNxbGl0ZTMuc3FsaXRlX3ZlcnNpb25faW5mbyA8ICgzLCAxMCwgMCksICJidWcgaXMgZml4ZWQgaW4gdGhpcyB2ZXJzaW9uIgoKICAgIGNvbm4gPSBzcWxpdGUzLmNvbm5lY3QoIjptZW1vcnk6IikKICAgIGN1cnNvciA9IGNvbm4uY3Vyc29yKCkKCiAgICBjdXJzb3IuZXhlY3V0ZSgiY3JlYXRlIHRhYmxlIHggKGEgaW50ZWdlciwgYiBpbnRlZ2VyKSIpCiAgICBjdXJzb3IuZXhlY3V0ZSgiaW5zZXJ0IGludG8geCAoYSwgYikgdmFsdWVzICgxLCAxKSIpCiAgICBjdXJzb3IuZXhlY3V0ZSgiaW5zZXJ0IGludG8geCAoYSwgYikgdmFsdWVzICgyLCAyKSIpCgogICAgY3Vyc29yLmV4ZWN1dGUoInNlbGVjdCB4LmEsIHguYiBmcm9tIHgiKQogICAgYXNzZXJ0IFtjWzBdIGZvciBjIGluIGN1cnNvci5kZXNjcmlwdGlvbl0gPT0gWydhJywgJ2InXQoKICAgIGN1cnNvci5leGVjdXRlKCcnJwogICAgICAgIHNlbGVjdCB4LmEsIHguYiBmcm9tIHggd2hlcmUgYT0xCiAgICAgICAgdW5pb24KICAgICAgICBzZWxlY3QgeC5hLCB4LmIgZnJvbSB4IHdoZXJlIGE9MgogICAgJycnKQogICAgYXNzZXJ0IFtjWzBdIGZvciBjIGluIGN1cnNvci5kZXNjcmlwdGlvbl0gPT0gWydhJywgJ2InXSwgXAogICAgICAgIFtjWzBdIGZvciBjIGluIGN1cnNvci5kZXNjcmlwdGlvbl0KClRoZSBzZWNvbmQgYXNzZXJ0aW9uIGZhaWxzOjoKCiAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgIEZpbGUgInRlc3QucHkiLCBsaW5lIDE5LCBpbiA8bW9kdWxlPgogICAgICAgIFtjWzBdIGZvciBjIGluIGN1cnNvci5kZXNjcmlwdGlvbl0KICAgIEFzc2VydGlvbkVycm9yOiBbJ3guYScsICd4LmInXQoKV2hlcmUgYWJvdmUsIHRoZSBkcml2ZXIgaW5jb3JyZWN0bHkgcmVwb3J0cyB0aGUgbmFtZXMgb2YgdGhlIGNvbHVtbnMKaW5jbHVkaW5nIHRoZSBuYW1lIG9mIHRoZSB0YWJsZSwgd2hpY2ggaXMgZW50aXJlbHkgaW5jb25zaXN0ZW50IHZzLgp3aGVuIHRoZSBVTklPTiBpcyBub3QgcHJlc2VudC4KClNRTEFsY2hlbXkgcmVsaWVzIHVwb24gY29sdW1uIG5hbWVzIGJlaW5nIHByZWRpY3RhYmxlIGluIGhvdyB0aGV5IG1hdGNoCnRvIHRoZSBvcmlnaW5hbCBzdGF0ZW1lbnQsIHNvIHRoZSBTUUxBbGNoZW15IGRpYWxlY3QgaGFzIG5vIGNob2ljZSBidXQKdG8gZmlsdGVyIHRoZXNlIG91dDo6CgoKICAgIGZyb20gc3FsYWxjaGVteSBpbXBvcnQgY3JlYXRlX2VuZ2luZQoKICAgIGVuZyA9IGNyZWF0ZV9lbmdpbmUoInNxbGl0ZTovLyIpCiAgICBjb25uID0gZW5nLmNvbm5lY3QoKQoKICAgIGNvbm4uZXhlY3V0ZSgiY3JlYXRlIHRhYmxlIHggKGEgaW50ZWdlciwgYiBpbnRlZ2VyKSIpCiAgICBjb25uLmV4ZWN1dGUoImluc2VydCBpbnRvIHggKGEsIGIpIHZhbHVlcyAoMSwgMSkiKQogICAgY29ubi5leGVjdXRlKCJpbnNlcnQgaW50byB4IChhLCBiKSB2YWx1ZXMgKDIsIDIpIikKCiAgICByZXN1bHQgPSBjb25uLmV4ZWN1dGUoInNlbGVjdCB4LmEsIHguYiBmcm9tIHgiKQogICAgYXNzZXJ0IHJlc3VsdC5rZXlzKCkgPT0gWyJhIiwgImIiXQoKICAgIHJlc3VsdCA9IGNvbm4uZXhlY3V0ZSgnJycKICAgICAgICBzZWxlY3QgeC5hLCB4LmIgZnJvbSB4IHdoZXJlIGE9MQogICAgICAgIHVuaW9uCiAgICAgICAgc2VsZWN0IHguYSwgeC5iIGZyb20geCB3aGVyZSBhPTIKICAgICcnJykKICAgIGFzc2VydCByZXN1bHQua2V5cygpID09IFsiYSIsICJiIl0KCk5vdGUgdGhhdCBhYm92ZSwgZXZlbiB0aG91Z2ggU1FMQWxjaGVteSBmaWx0ZXJzIG91dCB0aGUgZG90cywgKmJvdGgKbmFtZXMgYXJlIHN0aWxsIGFkZHJlc3NhYmxlKjo6CgogICAgPj4+IHJvdyA9IHJlc3VsdC5maXJzdCgpCiAgICA+Pj4gcm93WyJhIl0KICAgIDEKICAgID4+PiByb3dbInguYSJdCiAgICAxCiAgICA+Pj4gcm93WyJiIl0KICAgIDEKICAgID4+PiByb3dbInguYiJdCiAgICAxCgpUaGVyZWZvcmUsIHRoZSB3b3JrYXJvdW5kIGFwcGxpZWQgYnkgU1FMQWxjaGVteSBvbmx5IGltcGFjdHMKOm1ldGg6YC5SZXN1bHRQcm94eS5rZXlzYCBhbmQgOm1ldGg6YC5Sb3dQcm94eS5rZXlzKClgIGluIHRoZSBwdWJsaWMgQVBJLiBJbgp0aGUgdmVyeSBzcGVjaWZpYyBjYXNlIHdoZXJlIGFuIGFwcGxpY2F0aW9uIGlzIGZvcmNlZCB0byB1c2UgY29sdW1uIG5hbWVzIHRoYXQKY29udGFpbiBkb3RzLCBhbmQgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgOm1ldGg6YC5SZXN1bHRQcm94eS5rZXlzYCBhbmQKOm1ldGg6YC5Sb3dQcm94eS5rZXlzKClgIGlzIHJlcXVpcmVkIHRvIHJldHVybiB0aGVzZSBkb3R0ZWQgbmFtZXMgdW5tb2RpZmllZCwKdGhlIGBgc3FsaXRlX3Jhd19jb2xuYW1lc2BgIGV4ZWN1dGlvbiBvcHRpb24gbWF5IGJlIHByb3ZpZGVkLCBlaXRoZXIgb24gYQpwZXItOmNsYXNzOmAuQ29ubmVjdGlvbmAgYmFzaXM6OgoKICAgIHJlc3VsdCA9IGNvbm4uZXhlY3V0aW9uX29wdGlvbnMoc3FsaXRlX3Jhd19jb2xuYW1lcz1UcnVlKS5leGVjdXRlKCcnJwogICAgICAgIHNlbGVjdCB4LmEsIHguYiBmcm9tIHggd2hlcmUgYT0xCiAgICAgICAgdW5pb24KICAgICAgICBzZWxlY3QgeC5hLCB4LmIgZnJvbSB4IHdoZXJlIGE9MgogICAgJycnKQogICAgYXNzZXJ0IHJlc3VsdC5rZXlzKCkgPT0gWyJ4LmEiLCAieC5iIl0KCm9yIG9uIGEgcGVyLTpjbGFzczpgLkVuZ2luZWAgYmFzaXM6OgoKICAgIGVuZ2luZSA9IGNyZWF0ZV9lbmdpbmUoInNxbGl0ZTovLyIsIGV4ZWN1dGlvbl9vcHRpb25zPXsic3FsaXRlX3Jhd19jb2xuYW1lcyI6IFRydWV9KQoKV2hlbiB1c2luZyB0aGUgcGVyLTpjbGFzczpgLkVuZ2luZWAgZXhlY3V0aW9uIG9wdGlvbiwgbm90ZSB0aGF0CioqQ29yZSBhbmQgT1JNIHF1ZXJpZXMgdGhhdCB1c2UgVU5JT04gbWF5IG5vdCBmdW5jdGlvbiBwcm9wZXJseSoqLgoK6QAAAABO6QEAAAApAdoESlNPTikB2g1KU09OSW5kZXhUeXBlKQHaDEpTT05QYXRoVHlwZekDAAAAKQHaA2V4YykB2gpwcm9jZXNzb3JzKQHaBnNjaGVtYSkB2gNzcWwpAdoFdHlwZXMpAdoEdXRpbCkB2gdkZWZhdWx0KQHaCnJlZmxlY3Rpb24pAdoNQ29sdW1uRWxlbWVudCkB2ghjb21waWxlcikB2gRCTE9CKQHaB0JPT0xFQU4pAdoEQ0hBUikB2gdERUNJTUFMKQHaBUZMT0FUKQHaB0lOVEVHRVIpAdoHTlVNRVJJQykB2gRSRUFMKQHaCFNNQUxMSU5UKQHaBFRFWFQpAdoJVElNRVNUQU1QKQHaB1ZBUkNIQVJjAAAAAAAAAAAAAAAABAAAAAAAAABzRgAAAGUAWgFkAFoCZAFaA2QBWgRkCocAZgFkAmQDhAlaBWUGZARkBYQAgwFaB4cAZgFkBmQHhAhaCGQIZAmEAFoJhwAEAFoKUwApC9oOX0RhdGVUaW1lTWl4aW5OYwMAAAAAAAAABAAAAAMAAAALAAAAczgAAAB0AHQBfACDAmoCZgB8A44BAQB8AmQAawlyJnQDoAR8AqEBfABfBXwBZABrCXI0fAF8AF8GZABTACkBTikH2gVzdXBlcnIdAAAA2ghfX2luaXRfX9oCcmXaB2NvbXBpbGXaBF9yZWfaD19zdG9yYWdlX2Zvcm1hdCkE2gRzZWxm2g5zdG9yYWdlX2Zvcm1hdNoGcmVnZXhw2gJrdykB2glfX2NsYXNzX1+pAPpSL29wdC9hbHQvcHl0aG9uMzcvbGliNjQvcHl0aG9uMy43L3NpdGUtcGFja2FnZXMvc3FsYWxjaGVteS9kaWFsZWN0cy9zcWxpdGUvYmFzZS5weXIfAAAAXgIAAHMKAAAAAAESAQgBDAEIAXoXX0RhdGVUaW1lTWl4aW4uX19pbml0X19jAQAAAAAAAAACAAAACQAAAEMAAABzKgAAAHwAagBkAWQBZAFkAWQBZAFkAWQCnAcWAH0BdAF0AqADZAN8AaECgwFTACkEYWABAAByZXR1cm4gVHJ1ZSBpZiB0aGUgc3RvcmFnZSBmb3JtYXQgd2lsbCBhdXRvbWF0aWNhbGx5IGltcGx5CiAgICAgICAgYSBURVhUIGFmZmluaXR5LgoKICAgICAgICBJZiB0aGUgc3RvcmFnZSBmb3JtYXQgY29udGFpbnMgbm8gbm9uLW51bWVyaWMgY2hhcmFjdGVycywKICAgICAgICBpdCB3aWxsIGltcGx5IGEgTlVNRVJJQyBzdG9yYWdlIGZvcm1hdCBvbiBTUUxpdGU7IGluIHRoaXMgY2FzZSwKICAgICAgICB0aGUgdHlwZSB3aWxsIGdlbmVyYXRlIGl0cyBEREwgYXMgREFURV9DSEFSLCBEQVRFVElNRV9DSEFSLAogICAgICAgIFRJTUVfQ0hBUi4KCiAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMS4wLjAKCiAgICAgICAgcgEAAAApB9oEeWVhctoFbW9udGjaA2RhedoEaG91ctoGbWludXRl2gZzZWNvbmTaC21pY3Jvc2Vjb25kegZbXjAtOV0pBHIjAAAA2gRib29sciAAAADaBnNlYXJjaCkCciQAAADaBHNwZWNyKQAAAHIpAAAAcioAAADaF2Zvcm1hdF9pc190ZXh0X2FmZmluaXR5ZQIAAHMSAAAAAA0EAQIBAgECAQIBAgECAQoCeiZfRGF0ZVRpbWVNaXhpbi5mb3JtYXRfaXNfdGV4dF9hZmZpbml0eWMCAAAAAAAAAAMAAAADAAAACwAAAHM+AAAAdAB8AXQBgwJyKnwAagJyGnwAagJ8AmQBPAB8AGoDcip8AGoDfAJkAjwAdAR0AXwAgwJqBXwBZgF8Ao4BUwApA05yJQAAAHImAAAAKQbaCmlzc3ViY2xhc3NyHQAAAHIjAAAAciIAAAByHgAAANoFYWRhcHQpA3IkAAAA2gNjbHNyJwAAACkBcigAAAByKQAAAHIqAAAAcjcAAAB9AgAAcwwAAAAAAQoBBgEKAQYBCgF6FF9EYXRlVGltZU1peGluLmFkYXB0YwIAAAAAAAAAAwAAAAMAAAADAAAAcxoAAAB8AKAAfAGhAYkAhwBmAWQBZAKECH0CfAJTACkDTmMBAAAAAAAAAAEAAAADAAAAEwAAAHMMAAAAZAGIAHwAgwEWAFMAKQJOegQnJXMncikAAAApAdoFdmFsdWUpAdoCYnByKQAAAHIqAAAA2gdwcm9jZXNziAIAAHMCAAAAAAF6MV9EYXRlVGltZU1peGluLmxpdGVyYWxfcHJvY2Vzc29yLjxsb2NhbHM+LnByb2Nlc3MpAdoOYmluZF9wcm9jZXNzb3IpA3IkAAAA2gdkaWFsZWN0cjsAAAByKQAAACkBcjoAAAByKgAAANoRbGl0ZXJhbF9wcm9jZXNzb3KFAgAAcwYAAAAAAQoCDAN6IF9EYXRlVGltZU1peGluLmxpdGVyYWxfcHJvY2Vzc29yKQJOTikL2ghfX25hbWVfX9oKX19tb2R1bGVfX9oMX19xdWFsbmFtZV9fciIAAAByIwAAAHIfAAAA2ghwcm9wZXJ0eXI1AAAAcjcAAAByPgAAANoNX19jbGFzc2NlbGxfX3IpAAAAcikAAAApAXIoAAAAcioAAAByHQAAAFoCAABzDAAAAAgBBAEEAg4HDBgMCHIdAAAAYwAAAAAAAAAAAAAAAAMAAAAAAAAAczQAAABlAFoBZABaAmQBWgNkAloEhwBmAWQDZASECFoFZAVkBoQAWgZkB2QIhABaB4cABABaCFMAKQnaCERBVEVUSU1FYcEEAABSZXByZXNlbnQgYSBQeXRob24gZGF0ZXRpbWUgb2JqZWN0IGluIFNRTGl0ZSB1c2luZyBhIHN0cmluZy4KCiAgICBUaGUgZGVmYXVsdCBzdHJpbmcgc3RvcmFnZSBmb3JtYXQgaXM6OgoKICAgICAgICAiJSh5ZWFyKTA0ZC0lKG1vbnRoKTAyZC0lKGRheSkwMmQgJShob3VyKTAyZDolKG1pbikwMmQ6JShzZWNvbmQpMDJkLiUobWljcm9zZWNvbmQpMDZkIgoKICAgIGUuZy46OgoKICAgICAgICAyMDExLTAzLTE1IDEyOjA1OjU3LjEwNTU4CgogICAgVGhlIHN0b3JhZ2UgZm9ybWF0IGNhbiBiZSBjdXN0b21pemVkIHRvIHNvbWUgZGVncmVlIHVzaW5nIHRoZQogICAgYGBzdG9yYWdlX2Zvcm1hdGBgIGFuZCBgYHJlZ2V4cGBgIHBhcmFtZXRlcnMsIHN1Y2ggYXM6OgoKICAgICAgICBpbXBvcnQgcmUKICAgICAgICBmcm9tIHNxbGFsY2hlbXkuZGlhbGVjdHMuc3FsaXRlIGltcG9ydCBEQVRFVElNRQoKICAgICAgICBkdCA9IERBVEVUSU1FKHN0b3JhZ2VfZm9ybWF0PSIlKHllYXIpMDRkLyUobW9udGgpMDJkLyUoZGF5KTAyZCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJShob3VyKTAyZDolKG1pbikwMmQ6JShzZWNvbmQpMDJkIiwKICAgICAgICAgICAgICAgICAgICAgIHJlZ2V4cD1yIihcZCspLyhcZCspLyhcZCspIChcZCspLShcZCspLShcZCspIgogICAgICAgICkKCiAgICA6cGFyYW0gc3RvcmFnZV9mb3JtYXQ6IGZvcm1hdCBzdHJpbmcgd2hpY2ggd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBkaWN0CiAgICAgd2l0aCBrZXlzIHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBhbmQgbWljcm9zZWNvbmQuCgogICAgOnBhcmFtIHJlZ2V4cDogcmVndWxhciBleHByZXNzaW9uIHdoaWNoIHdpbGwgYmUgYXBwbGllZCB0byBpbmNvbWluZyByZXN1bHQKICAgICByb3dzLiBJZiB0aGUgcmVnZXhwIGNvbnRhaW5zIG5hbWVkIGdyb3VwcywgdGhlIHJlc3VsdGluZyBtYXRjaCBkaWN0IGlzCiAgICAgYXBwbGllZCB0byB0aGUgUHl0aG9uIGRhdGV0aW1lKCkgY29uc3RydWN0b3IgYXMga2V5d29yZCBhcmd1bWVudHMuCiAgICAgT3RoZXJ3aXNlLCBpZiBwb3NpdGlvbmFsIGdyb3VwcyBhcmUgdXNlZCwgdGhlIGRhdGV0aW1lKCkgY29uc3RydWN0b3IKICAgICBpcyBjYWxsZWQgd2l0aCBwb3NpdGlvbmFsIGFyZ3VtZW50cyB2aWEKICAgICBgYCptYXAoaW50LCBtYXRjaF9vYmouZ3JvdXBzKDApKWBgLgoKICAgIHpXJSh5ZWFyKTA0ZC0lKG1vbnRoKTAyZC0lKGRheSkwMmQgJShob3VyKTAyZDolKG1pbnV0ZSkwMmQ6JShzZWNvbmQpMDJkLiUobWljcm9zZWNvbmQpMDZkYwEAAAAAAAAABAAAAAQAAAAPAAAAc0wAAAB8AqAAZAFkAqECfQN0AXQCfACDAmoDfAF8Ao4BAQB8A3JIZAN8AmsHczJ0BGQEgwGCAWQFfAJrB3NCdARkBoMBggFkB3wAXwVkAFMAKQhO2hV0cnVuY2F0ZV9taWNyb3NlY29uZHNGciUAAAB6RFlvdSBjYW4gc3BlY2lmeSBvbmx5IG9uZSBvZiB0cnVuY2F0ZV9taWNyb3NlY29uZHMgb3Igc3RvcmFnZV9mb3JtYXQuciYAAAB6PFlvdSBjYW4gc3BlY2lmeSBvbmx5IG9uZSBvZiB0cnVuY2F0ZV9taWNyb3NlY29uZHMgb3IgcmVnZXhwLnpFJSh5ZWFyKTA0ZC0lKG1vbnRoKTAyZC0lKGRheSkwMmQgJShob3VyKTAyZDolKG1pbnV0ZSkwMmQ6JShzZWNvbmQpMDJkKQbaA3BvcHIeAAAAckQAAAByHwAAANoOQXNzZXJ0aW9uRXJyb3JyIwAAACkEciQAAADaBGFyZ3PaBmt3YXJnc3JFAAAAKQFyKAAAAHIpAAAAcioAAAByHwAAALUCAABzEAAAAAABDAESAQQBCgEGAwoBBgR6EURBVEVUSU1FLl9faW5pdF9fYwIAAAAAAAAAAwAAAAMAAAADAAAAcyYAAAB0AGoAiQF0AGoBiQB8AGoCiQKHAIcBhwJmA2QBZAKECH0CfAJTACkDTmMBAAAAAAAAAAEAAAAJAAAAEwAAAHNwAAAAfABkAGsIcgxkAFMAdAB8AIgBgwJyPIgCfABqAXwAagJ8AGoDfABqBHwAagV8AGoGfABqB2QBnAcWAFMAdAB8AIgAgwJyZIgCfABqAXwAagJ8AGoDZAJkAmQCZAJkAZwHFgBTAHQIZAODAYIBZABTACkETikHcisAAAByLAAAAHItAAAAci4AAAByLwAAAHIwAAAAcjEAAAByAQAAAHpMU1FMaXRlIERhdGVUaW1lIHR5cGUgb25seSBhY2NlcHRzIFB5dGhvbiBkYXRldGltZSBhbmQgZGF0ZSBvYmplY3RzIGFzIGlucHV0LikJ2gppc2luc3RhbmNlcisAAAByLAAAAHItAAAAci4AAAByLwAAAHIwAAAAcjEAAADaCVR5cGVFcnJvcikBcjkAAAApA9oNZGF0ZXRpbWVfZGF0ZdoRZGF0ZXRpbWVfZGF0ZXRpbWXaB2Zvcm1hdF9yKQAAAHIqAAAAcjsAAADLAgAAcywAAAAAAQgBBAEKAQIBBAEEAQQBBAEEAQQBDAIKAQIBBAEEAQQBAgECAQIBCgMCAXooREFURVRJTUUuYmluZF9wcm9jZXNzb3IuPGxvY2Fscz4ucHJvY2VzcykD2ghkYXRldGltZdoEZGF0ZXIjAAAAKQNyJAAAAHI9AAAAcjsAAAByKQAAACkDckwAAAByTQAAAHJOAAAAcioAAAByPAAAAMYCAABzCgAAAAABBgEGAQYCEB16F0RBVEVUSU1FLmJpbmRfcHJvY2Vzc29yYwMAAAAAAAAAAwAAAAQAAABDAAAAcyAAAAB8AGoAchZ0AaACfABqAHQDagOhAlMAdAFqBFMAZABTACkBTikFciIAAAByCAAAANohc3RyX3RvX2RhdGV0aW1lX3Byb2Nlc3Nvcl9mYWN0b3J5ck8AAABaD3N0cl90b19kYXRldGltZSkDciQAAAByPQAAANoHY29sdHlwZXIpAAAAcikAAAByKgAAANoQcmVzdWx0X3Byb2Nlc3NvcuoCAABzCAAAAAABBgEEAQwDehlEQVRFVElNRS5yZXN1bHRfcHJvY2Vzc29yKQlyPwAAAHJAAAAAckEAAADaB19fZG9jX19yIwAAAHIfAAAAcjwAAAByUwAAAHJDAAAAcikAAAByKQAAACkBcigAAAByKgAAAHJEAAAAjgIAAHMKAAAACCAEAwQEDBEIJHJEAAAAYwAAAAAAAAAAAAAAAAIAAABAAAAAcyQAAABlAFoBZABaAmQBWgNkAloEZANkBIQAWgVkBWQGhABaBmQHUwApCNoEREFURWEbBAAAUmVwcmVzZW50IGEgUHl0aG9uIGRhdGUgb2JqZWN0IGluIFNRTGl0ZSB1c2luZyBhIHN0cmluZy4KCiAgICBUaGUgZGVmYXVsdCBzdHJpbmcgc3RvcmFnZSBmb3JtYXQgaXM6OgoKICAgICAgICAiJSh5ZWFyKTA0ZC0lKG1vbnRoKTAyZC0lKGRheSkwMmQiCgogICAgZS5nLjo6CgogICAgICAgIDIwMTEtMDMtMTUKCiAgICBUaGUgc3RvcmFnZSBmb3JtYXQgY2FuIGJlIGN1c3RvbWl6ZWQgdG8gc29tZSBkZWdyZWUgdXNpbmcgdGhlCiAgICBgYHN0b3JhZ2VfZm9ybWF0YGAgYW5kIGBgcmVnZXhwYGAgcGFyYW1ldGVycywgc3VjaCBhczo6CgogICAgICAgIGltcG9ydCByZQogICAgICAgIGZyb20gc3FsYWxjaGVteS5kaWFsZWN0cy5zcWxpdGUgaW1wb3J0IERBVEUKCiAgICAgICAgZCA9IERBVEUoCiAgICAgICAgICAgICAgICBzdG9yYWdlX2Zvcm1hdD0iJShtb250aCkwMmQvJShkYXkpMDJkLyUoeWVhcikwNGQiLAogICAgICAgICAgICAgICAgcmVnZXhwPXJlLmNvbXBpbGUoIig/UDxtb250aD5cZCspLyg/UDxkYXk+XGQrKS8oP1A8eWVhcj5cZCspIikKICAgICAgICAgICAgKQoKICAgIDpwYXJhbSBzdG9yYWdlX2Zvcm1hdDogZm9ybWF0IHN0cmluZyB3aGljaCB3aWxsIGJlIGFwcGxpZWQgdG8gdGhlCiAgICAgZGljdCB3aXRoIGtleXMgeWVhciwgbW9udGgsIGFuZCBkYXkuCgogICAgOnBhcmFtIHJlZ2V4cDogcmVndWxhciBleHByZXNzaW9uIHdoaWNoIHdpbGwgYmUgYXBwbGllZCB0bwogICAgIGluY29taW5nIHJlc3VsdCByb3dzLiBJZiB0aGUgcmVnZXhwIGNvbnRhaW5zIG5hbWVkIGdyb3VwcywgdGhlCiAgICAgcmVzdWx0aW5nIG1hdGNoIGRpY3QgaXMgYXBwbGllZCB0byB0aGUgUHl0aG9uIGRhdGUoKSBjb25zdHJ1Y3RvcgogICAgIGFzIGtleXdvcmQgYXJndW1lbnRzLiBPdGhlcndpc2UsIGlmIHBvc2l0aW9uYWwgZ3JvdXBzIGFyZSB1c2VkLCB0aGUKICAgICBkYXRlKCkgY29uc3RydWN0b3IgaXMgY2FsbGVkIHdpdGggcG9zaXRpb25hbCBhcmd1bWVudHMgdmlhCiAgICAgYGAqbWFwKGludCwgbWF0Y2hfb2JqLmdyb3VwcygwKSlgYC4KICAgIHogJSh5ZWFyKTA0ZC0lKG1vbnRoKTAyZC0lKGRheSkwMmRjAgAAAAAAAAADAAAAAwAAAAMAAABzHgAAAHQAagGJAHwAagKJAYcAhwFmAmQBZAKECH0CfAJTACkDTmMBAAAAAAAAAAEAAAAFAAAAEwAAAHM4AAAAfABkAGsIcgxkAFMAdAB8AIgAgwJyLIgBfABqAXwAagJ8AGoDZAGcAxYAUwB0BGQCgwGCAWQAUwApA04pA3IrAAAAciwAAAByLQAAAHo7U1FMaXRlIERhdGUgdHlwZSBvbmx5IGFjY2VwdHMgUHl0aG9uIGRhdGUgb2JqZWN0cyBhcyBpbnB1dC4pBXJKAAAAcisAAAByLAAAAHItAAAAcksAAAApAXI5AAAAKQJyTAAAAHJOAAAAcikAAAByKgAAAHI7AAAAGgMAAHMSAAAAAAEIAQQBCgECAQQBBAEMAwIBeiREQVRFLmJpbmRfcHJvY2Vzc29yLjxsb2NhbHM+LnByb2Nlc3MpA3JPAAAAclAAAAByIwAAACkDciQAAAByPQAAAHI7AAAAcikAAAApAnJMAAAAck4AAAByKgAAAHI8AAAAFgMAAHMIAAAAAAEGAQYCDg96E0RBVEUuYmluZF9wcm9jZXNzb3JjAwAAAAAAAAADAAAABAAAAEMAAABzIAAAAHwAagByFnQBoAJ8AGoAdANqBKECUwB0AWoFUwBkAFMAKQFOKQZyIgAAAHIIAAAAclEAAAByTwAAAHJQAAAAWgtzdHJfdG9fZGF0ZSkDciQAAAByPQAAAHJSAAAAcikAAAByKQAAAHIqAAAAclMAAAArAwAAcwgAAAAAAQYBBAEMA3oVREFURS5yZXN1bHRfcHJvY2Vzc29yTikHcj8AAAByQAAAAHJBAAAAclQAAAByIwAAAHI8AAAAclMAAAByKQAAAHIpAAAAcikAAAByKgAAAHJVAAAA8wIAAHMIAAAACB8EAgQCCBVyVQAAAGMAAAAAAAAAAAAAAAADAAAAAAAAAHM0AAAAZQBaAWQAWgJkAVoDZAJaBIcAZgFkA2QEhAhaBWQFZAaEAFoGZAdkCIQAWgeHAAQAWghTACkJ2gRUSU1FYVoEAABSZXByZXNlbnQgYSBQeXRob24gdGltZSBvYmplY3QgaW4gU1FMaXRlIHVzaW5nIGEgc3RyaW5nLgoKICAgIFRoZSBkZWZhdWx0IHN0cmluZyBzdG9yYWdlIGZvcm1hdCBpczo6CgogICAgICAgICIlKGhvdXIpMDJkOiUobWludXRlKTAyZDolKHNlY29uZCkwMmQuJShtaWNyb3NlY29uZCkwNmQiCgogICAgZS5nLjo6CgogICAgICAgIDEyOjA1OjU3LjEwNTU4CgogICAgVGhlIHN0b3JhZ2UgZm9ybWF0IGNhbiBiZSBjdXN0b21pemVkIHRvIHNvbWUgZGVncmVlIHVzaW5nIHRoZQogICAgYGBzdG9yYWdlX2Zvcm1hdGBgIGFuZCBgYHJlZ2V4cGBgIHBhcmFtZXRlcnMsIHN1Y2ggYXM6OgoKICAgICAgICBpbXBvcnQgcmUKICAgICAgICBmcm9tIHNxbGFsY2hlbXkuZGlhbGVjdHMuc3FsaXRlIGltcG9ydCBUSU1FCgogICAgICAgIHQgPSBUSU1FKHN0b3JhZ2VfZm9ybWF0PSIlKGhvdXIpMDJkLSUobWludXRlKTAyZC0iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUoc2Vjb25kKTAyZC0lKG1pY3Jvc2Vjb25kKTA2ZCIsCiAgICAgICAgICAgICAgICAgcmVnZXhwPXJlLmNvbXBpbGUoIihcZCspLShcZCspLShcZCspLSg/Oi0oXGQrKSk/IikKICAgICAgICApCgogICAgOnBhcmFtIHN0b3JhZ2VfZm9ybWF0OiBmb3JtYXQgc3RyaW5nIHdoaWNoIHdpbGwgYmUgYXBwbGllZCB0byB0aGUgZGljdAogICAgIHdpdGgga2V5cyBob3VyLCBtaW51dGUsIHNlY29uZCwgYW5kIG1pY3Jvc2Vjb25kLgoKICAgIDpwYXJhbSByZWdleHA6IHJlZ3VsYXIgZXhwcmVzc2lvbiB3aGljaCB3aWxsIGJlIGFwcGxpZWQgdG8gaW5jb21pbmcgcmVzdWx0CiAgICAgcm93cy4gSWYgdGhlIHJlZ2V4cCBjb250YWlucyBuYW1lZCBncm91cHMsIHRoZSByZXN1bHRpbmcgbWF0Y2ggZGljdCBpcwogICAgIGFwcGxpZWQgdG8gdGhlIFB5dGhvbiB0aW1lKCkgY29uc3RydWN0b3IgYXMga2V5d29yZCBhcmd1bWVudHMuIE90aGVyd2lzZSwKICAgICBpZiBwb3NpdGlvbmFsIGdyb3VwcyBhcmUgdXNlZCwgdGhlIHRpbWUoKSBjb25zdHJ1Y3RvciBpcyBjYWxsZWQgd2l0aAogICAgIHBvc2l0aW9uYWwgYXJndW1lbnRzIHZpYSBgYCptYXAoaW50LCBtYXRjaF9vYmouZ3JvdXBzKDApKWBgLgogICAgejYlKGhvdXIpMDJkOiUobWludXRlKTAyZDolKHNlY29uZCkwMmQuJShtaWNyb3NlY29uZCkwNmRjAQAAAAAAAAAEAAAABAAAAA8AAABzTAAAAHwCoABkAWQCoQJ9A3QBdAJ8AIMCagN8AXwCjgEBAHwDckhkA3wCawdzMnQEZASDAYIBZAV8AmsHc0J0BGQGgwGCAWQHfABfBWQAUwApCE5yRQAAAEZyJQAAAHpEWW91IGNhbiBzcGVjaWZ5IG9ubHkgb25lIG9mIHRydW5jYXRlX21pY3Jvc2Vjb25kcyBvciBzdG9yYWdlX2Zvcm1hdC5yJgAAAHo8WW91IGNhbiBzcGVjaWZ5IG9ubHkgb25lIG9mIHRydW5jYXRlX21pY3Jvc2Vjb25kcyBvciByZWdleHAueiQlKGhvdXIpMDJkOiUobWludXRlKTAyZDolKHNlY29uZCkwMmQpBnJGAAAAch4AAAByVgAAAHIfAAAAckcAAAByIwAAACkEciQAAABySAAAAHJJAAAAckUAAAApAXIoAAAAcikAAAByKgAAAHIfAAAAVgMAAHMQAAAAAAEMARIBBAEKAQYDCgEGA3oNVElNRS5fX2luaXRfX2MCAAAAAAAAAAMAAAADAAAAAwAAAHMeAAAAdABqAYkAfABqAokBhwCHAWYCZAFkAoQIfQJ8AlMAKQNOYwEAAAAAAAAAAQAAAAYAAAATAAAAczwAAAB8AGQAawhyDGQAUwB0AHwAiACDAnIwiAF8AGoBfABqAnwAagN8AGoEZAGcBBYAUwB0BWQCgwGCAWQAUwApA04pBHIuAAAAci8AAAByMAAAAHIxAAAAejtTUUxpdGUgVGltZSB0eXBlIG9ubHkgYWNjZXB0cyBQeXRob24gdGltZSBvYmplY3RzIGFzIGlucHV0LikGckoAAAByLgAAAHIvAAAAcjAAAAByMQAAAHJLAAAAKQFyOQAAACkC2g1kYXRldGltZV90aW1lck4AAAByKQAAAHIqAAAAcjsAAABoAwAAcxQAAAAAAQgBBAEKAQIBBAEEAQQBDAMCAXokVElNRS5iaW5kX3Byb2Nlc3Nvci48bG9jYWxzPi5wcm9jZXNzKQNyTwAAANoEdGltZXIjAAAAKQNyJAAAAHI9AAAAcjsAAAByKQAAACkCclcAAAByTgAAAHIqAAAAcjwAAABkAwAAcwgAAAAAAQYBBgIOEHoTVElNRS5iaW5kX3Byb2Nlc3NvcmMDAAAAAAAAAAMAAAAEAAAAQwAAAHMgAAAAfABqAHIWdAGgAnwAagB0A2oEoQJTAHQBagVTAGQAUwApAU4pBnIiAAAAcggAAAByUQAAAHJPAAAAclgAAABaC3N0cl90b190aW1lKQNyJAAAAHI9AAAAclIAAAByKQAAAHIpAAAAcioAAAByUwAAAHoDAABzCAAAAAABBgEEAQwDehVUSU1FLnJlc3VsdF9wcm9jZXNzb3IpCXI/AAAAckAAAAByQQAAAHJUAAAAciMAAAByHwAAAHI8AAAAclMAAAByQwAAAHIpAAAAcikAAAApAXIoAAAAcioAAAByVgAAADQDAABzCgAAAAgeBAIEAgwOCBZyVgAAACkZ2gZCSUdJTlRyEQAAAFoEQk9PTHISAAAAchMAAAByVQAAANoJREFURV9DSEFSckQAAADaDURBVEVUSU1FX0NIQVJaBkRPVUJMRXIUAAAAchUAAADaA0lOVHIWAAAAcgMAAAByFwAAAHIYAAAAchkAAAByGgAAAHJWAAAA2glUSU1FX0NIQVJyGwAAAHIcAAAA2ghOVkFSQ0hBUtoFTkNIQVJjAAAAAAAAAAAAAAAADgAAAAAAAABzqgAAAGUAWgFkAFoCZQOgBGUFagZqB2QBZAJkA2QEZAVkBmQHZAhkCWQKZAucCqECWgdkDGQNhABaCGQOZA+EAFoJZBBkEYQAWgpkEmQThABaC2QUZBWEAFoMhwBmAWQWZBeECFoNZBhkGYQAWg5kGmQbhABaD2QcZB2EAFoQZB5kH4QAWhFkIGQhhABaEmQiZCOEAFoTZCRkJYQAWhRkJmQnhABaFYcABABaFlMAKSjaDlNRTGl0ZUNvbXBpbGVyegIlbXoCJWR6AiVZegIlU3oCJUh6AiVqegIlTXoCJXN6AiV3egIlVykKciwAAAByLQAAAHIrAAAAcjAAAAByLgAAAFoDZG95ci8AAADaBWVwb2NoWgNkb3faBHdlZWtjAgAAAAAAAAADAAAAAQAAAEsAAABzBAAAAGQBUwApAk5aEUNVUlJFTlRfVElNRVNUQU1QcikAAAApA3IkAAAA2gJmbnInAAAAcikAAAByKQAAAHIqAAAA2g52aXNpdF9ub3dfZnVuY7oDAABzAgAAAAABeh1TUUxpdGVDb21waWxlci52aXNpdF9ub3dfZnVuY2MCAAAAAAAAAAMAAAABAAAASwAAAHMEAAAAZAFTACkCTnooREFURVRJTUUoQ1VSUkVOVF9USU1FU1RBTVAsICJsb2NhbHRpbWUiKXIpAAAAKQNyJAAAANoEZnVuY3InAAAAcikAAAByKQAAAHIqAAAA2hl2aXNpdF9sb2NhbHRpbWVzdGFtcF9mdW5jvQMAAHMCAAAAAAF6KFNRTGl0ZUNvbXBpbGVyLnZpc2l0X2xvY2FsdGltZXN0YW1wX2Z1bmNjAgAAAAAAAAADAAAAAQAAAEsAAABzBAAAAGQBUwApAk7aATFyKQAAACkDciQAAADaBGV4cHJyJwAAAHIpAAAAcikAAAByKgAAANoKdmlzaXRfdHJ1ZcADAABzAgAAAAABehlTUUxpdGVDb21waWxlci52aXNpdF90cnVlYwIAAAAAAAAAAwAAAAEAAABLAAAAcwQAAABkAVMAKQJO2gEwcikAAAApA3IkAAAAcmgAAAByJwAAAHIpAAAAcikAAAByKgAAANoLdmlzaXRfZmFsc2XDAwAAcwIAAAAAAXoaU1FMaXRlQ29tcGlsZXIudmlzaXRfZmFsc2VjAgAAAAAAAAADAAAABAAAAEsAAABzDgAAAGQBfACgAHwBoQEWAFMAKQJOeghsZW5ndGglcykBWhBmdW5jdGlvbl9hcmdzcGVjKQNyJAAAAHJjAAAAcicAAAByKQAAAHIpAAAAcioAAADaFnZpc2l0X2NoYXJfbGVuZ3RoX2Z1bmPGAwAAcwIAAAAAAXolU1FMaXRlQ29tcGlsZXIudmlzaXRfY2hhcl9sZW5ndGhfZnVuY2MCAAAAAAAAAAMAAAADAAAACwAAAHMwAAAAfABqAGoBchx0AnQDfACDAmoEfAFmAXwCjgFTAHwAagV8AWoGZgF8Ao4BUwBkAFMAKQFOKQdyPQAAANoNc3VwcG9ydHNfY2FzdHIeAAAAcmAAAADaCnZpc2l0X2Nhc3RyOwAAAFoGY2xhdXNlKQNyJAAAANoEY2FzdHJJAAAAKQFyKAAAAHIpAAAAcioAAABybgAAAMkDAABzBgAAAAABCAEUAnoZU1FMaXRlQ29tcGlsZXIudmlzaXRfY2FzdGMCAAAAAAAAAAMAAAAIAAAASwAAAHNKAAAAeSBkAXwAagB8AWoBGQB8AGoCfAFqA2YBfAKOAWYCFgBTAAQAdARrCnJEAQABAAEAdAWgBmQCfAFqARYAoQGCAVkAbgJYAGQAUwApA056I0NBU1QoU1RSRlRJTUUoJyVzJywgJXMpIEFTIElOVEVHRVIpeiMlcyBpcyBub3QgYSB2YWxpZCBleHRyYWN0IGFyZ3VtZW50LikH2gtleHRyYWN0X21hcNoFZmllbGRyOwAAAHJoAAAA2ghLZXlFcnJvcnIHAAAA2gxDb21waWxlRXJyb3IpA3IkAAAA2gdleHRyYWN0cicAAAByKQAAAHIpAAAAcioAAADaDXZpc2l0X2V4dHJhY3TPAwAAcw4AAAAAAQIBAgEKARQCDgEEAXocU1FMaXRlQ29tcGlsZXIudmlzaXRfZXh0cmFjdGMCAAAAAAAAAAQAAAAHAAAASwAAAHOMAAAAZAF9A3wBagBkAGsJciZ8A2QCfABqAXwBagBmAXwCjgEXADcAfQN8AWoCZABrCXJsfAFqAGQAawhyUnwDZAJ8AKABdAOgBGQDoQGhARcANwB9A3wDZAR8AGoBfAFqAmYBfAKOARcANwB9A24cfANkBHwAagF0A6AEZAWhAWYBfAKOARcANwB9A3wDUwApBk7aAHoICiBMSU1JVCDp/////3oIIE9GRlNFVCByAQAAACkFWg1fbGltaXRfY2xhdXNlcjsAAABaDl9vZmZzZXRfY2xhdXNlcgoAAADaB2xpdGVyYWwpBHIkAAAA2gZzZWxlY3RyJwAAANoEdGV4dHIpAAAAcikAAAByKgAAANoMbGltaXRfY2xhdXNl2gMAAHMSAAAAAAEEAQoBGAEKAQoBGAEaAhwBehtTUUxpdGVDb21waWxlci5saW1pdF9jbGF1c2VjAgAAAAAAAAADAAAAAQAAAEsAAABzBAAAAGQBUwApAk5ydgAAAHIpAAAAKQNyJAAAAHJ5AAAAcicAAAByKQAAAHIpAAAAcioAAADaEWZvcl91cGRhdGVfY2xhdXNl5gMAAHMCAAAAAAJ6IFNRTGl0ZUNvbXBpbGVyLmZvcl91cGRhdGVfY2xhdXNlYwMAAAAAAAAABAAAAAUAAABLAAAAcxwAAABkAXwAoAB8AWoBoQF8AKAAfAFqAqEBZgIWAFMAKQJOegwlcyBJUyBOT1QgJXMpA3I7AAAA2gRsZWZ02gVyaWdodCkEciQAAADaBmJpbmFyedoIb3BlcmF0b3JyJwAAAHIpAAAAcikAAAByKgAAANoddmlzaXRfaXNfZGlzdGluY3RfZnJvbV9iaW5hcnnqAwAAcwYAAAAAAQIBCgF6LFNRTGl0ZUNvbXBpbGVyLnZpc2l0X2lzX2Rpc3RpbmN0X2Zyb21fYmluYXJ5YwMAAAAAAAAABAAAAAUAAABLAAAAcxwAAABkAXwAoAB8AWoBoQF8AKAAfAFqAqEBZgIWAFMAKQJOegglcyBJUyAlcykDcjsAAAByfQAAAHJ+AAAAKQRyJAAAAHJ/AAAAcoAAAAByJwAAAHIpAAAAcikAAAByKgAAANogdmlzaXRfaXNub3RfZGlzdGluY3RfZnJvbV9iaW5hcnnwAwAAcwYAAAAAAQIBCgF6L1NRTGl0ZUNvbXBpbGVyLnZpc2l0X2lzbm90X2Rpc3RpbmN0X2Zyb21fYmluYXJ5YwMAAAAAAAAABAAAAAUAAABLAAAAcyQAAABkAXwAagB8AWoBZgF8A44BfABqAHwBagJmAXwDjgFmAhYAUwApAk56IEpTT05fUVVPVEUoSlNPTl9FWFRSQUNUKCVzLCAlcykpKQNyOwAAAHJ9AAAAcn4AAAApBHIkAAAAcn8AAABygAAAAHInAAAAcikAAAByKQAAAHIqAAAA2hx2aXNpdF9qc29uX2dldGl0ZW1fb3BfYmluYXJ59gMAAHMGAAAAAAECAQ4BeitTUUxpdGVDb21waWxlci52aXNpdF9qc29uX2dldGl0ZW1fb3BfYmluYXJ5YwMAAAAAAAAABAAAAAUAAABLAAAAcyQAAABkAXwAagB8AWoBZgF8A44BfABqAHwBagJmAXwDjgFmAhYAUwApAk56IEpTT05fUVVPVEUoSlNPTl9FWFRSQUNUKCVzLCAlcykpKQNyOwAAAHJ9AAAAcn4AAAApBHIkAAAAcn8AAABygAAAAHInAAAAcikAAAByKQAAAHIqAAAA2iF2aXNpdF9qc29uX3BhdGhfZ2V0aXRlbV9vcF9iaW5hcnn8AwAAcwYAAAAAAQIBDgF6MFNRTGl0ZUNvbXBpbGVyLnZpc2l0X2pzb25fcGF0aF9nZXRpdGVtX29wX2JpbmFyeWMCAAAAAAAAAAIAAAAGAAAAQwAAAHM8AAAAZAFkAqAAZANkBIQAfAFwFnQBgwBnAUQAgwGhAWQCoABkBWQEhAB8AXAwdAGDAGcBRACDAaEBZgIWAFMAKQZOeiVTRUxFQ1QgJXMgRlJPTSAoU0VMRUNUICVzKSBXSEVSRSAxIT0xegIsIGMBAAAAAAAAAAIAAAACAAAAcwAAAHMSAAAAfABdCn0BZABWAAEAcQJkAVMAKQJyZwAAAE5yKQAAACkC2gIuMNoFdHlwZV9yKQAAAHIpAAAAcioAAAD6CTxnZW5leHByPgQEAABzAgAAAAQAejZTUUxpdGVDb21waWxlci52aXNpdF9lbXB0eV9zZXRfZXhwci48bG9jYWxzPi48Z2VuZXhwcj5jAQAAAAAAAAACAAAAAgAAAHMAAABzEgAAAHwAXQp9AWQAVgABAHECZAFTACkCcmcAAABOcikAAAApAnKFAAAAcoYAAAByKQAAAHIpAAAAcioAAAByhwAAAAUEAABzAgAAAAQAKQLaBGpvaW5yFgAAACkCciQAAABaDWVsZW1lbnRfdHlwZXNyKQAAAHIpAAAAcioAAADaFHZpc2l0X2VtcHR5X3NldF9leHByAgQAAHMGAAAAAAECARoBeiNTUUxpdGVDb21waWxlci52aXNpdF9lbXB0eV9zZXRfZXhwcikXcj8AAAByQAAAAHJBAAAAcgwAAABaC3VwZGF0ZV9jb3B5chAAAADaC1NRTENvbXBpbGVycnAAAAByZAAAAHJmAAAAcmkAAAByawAAAHJsAAAAcm4AAABydQAAAHJ7AAAAcnwAAABygQAAAHKCAAAAcoMAAAByhAAAAHKJAAAAckMAAAByKQAAAHIpAAAAKQFyKAAAAHIqAAAAcmAAAACpAwAAczQAAAAIAQQBBgICAQIBAgECAQIBAgECAQIBAgEKBAgDCAMIAwgDCAMMBggLCAwIBAgGCAYIBggGcmAAAABjAAAAAAAAAAAAAAAAAwAAAAAAAABzZgAAAGUAWgFkAFoCZAFkAoQAWgOHAGYBZANkBIQIWgSHAGYBZAVkBoQIWgWHAGYBZAdkCIQIWgaHAGYBZAlkCoQIWgeHAGYBZAtkDIQIWghkDWQOhABaCWQTZBFkEoQBWgqHAAQAWgtTACkU2hFTUUxpdGVERExDb21waWxlcmMCAAAAAAAAAAcAAAAEAAAASwAAAHM2AQAAfABqAGoBagJ8AWoDfAFkAY0CfQN8AGoEoAV8AaEBZAIXAHwDFwB9BHwAoAZ8AaEBfQV8BWQAawlyYHQHfAFqCGoJdAqDAnJUZAN8BRcAZAQXAH0FfARkBXwFFwA3AH0EfAFqC3OQfARkBjcAfQR8AWoMZAcZAGQIGQB9BnwGZABrCXKQfARkCXwGFwA3AH0EfAFqDZABcjJ8AWoOZAprCHK+dA98AWoQag1qEYMBZAtrA3K+dBKgE2QMoQGCAXwBahBqDGQHGQBkDRkAkAFyMnQPfAFqEGoNahGDAWQLawKQAXIydBR8AWoDahV0FmoXgwKQAXIyfAFqGJABczJ8BGQONwB9BHwBagxkBxkAZA8ZAH0GfAZkAGsJkAFyKnwEZAl8BhcANwB9BHwEZBA3AH0EfARTACkRTikBWg90eXBlX2V4cHJlc3Npb276ASD6ASj6ASl6CSBERUZBVUxUIHoJIE5PVCBOVUxM2gZzcWxpdGXaFG9uX2NvbmZsaWN0X25vdF9udWxseg0gT04gQ09ORkxJQ1QgVHICAAAAekBTUUxpdGUgZG9lcyBub3Qgc3VwcG9ydCBhdXRvaW5jcmVtZW50IGZvciBjb21wb3NpdGUgcHJpbWFyeSBrZXlz2g1hdXRvaW5jcmVtZW50egwgUFJJTUFSWSBLRVnaF29uX2NvbmZsaWN0X3ByaW1hcnlfa2V5eg4gQVVUT0lOQ1JFTUVOVCkZcj0AAADaDXR5cGVfY29tcGlsZXJyOwAAANoEdHlwZdoIcHJlcGFyZXJaDWZvcm1hdF9jb2x1bW5aGWdldF9jb2x1bW5fZGVmYXVsdF9zdHJpbmdySgAAAFoOc2VydmVyX2RlZmF1bHTaA2FyZ3IPAAAA2ghudWxsYWJsZdoPZGlhbGVjdF9vcHRpb25z2gtwcmltYXJ5X2tleXKRAAAA2gNsZW7aBXRhYmxl2gdjb2x1bW5zcgcAAABycwAAAHI2AAAA2g5fdHlwZV9hZmZpbml0edoIc3FsdHlwZXPaB0ludGVnZXLaDGZvcmVpZ25fa2V5cykHciQAAADaBmNvbHVtbnJJAAAAclIAAABaB2NvbHNwZWNyDQAAANoSb25fY29uZmxpY3RfY2xhdXNlcikAAAByKQAAAHIqAAAA2hhnZXRfY29sdW1uX3NwZWNpZmljYXRpb24KBAAAczwAAAAAAQgBDAIUAQoBCAEOAQwBDAIGAQgCCAEGAggBDAIIAgoBEgIEAQYFEgEUARIBCAIIAggBBgIKAQwCCAJ6KlNRTGl0ZURETENvbXBpbGVyLmdldF9jb2x1bW5fc3BlY2lmaWNhdGlvbmMCAAAAAAAAAAUAAAADAAAAAwAAAHOsAAAAdAB8AWoBgwFkAWsCckp0AnwBgwFkAhkAfQJ8AmoDckp8AmoEagVkAxkAZAQZAHJKdAZ8AmoHagh0CWoKgwJySnwCagtzSmQAUwB0DHQNfACDAqAOfAGhAX0DfAFqBWQDGQBkBRkAfQR8BGQAawhylHQAfAFqAYMBZAFrAnKUdAJ8AYMBZAIZAGoFZAMZAGQGGQB9BHwEZABrCXKofANkB3wEFwA3AH0DfANTACkITnICAAAAcgEAAAByjwAAAHKRAAAA2gtvbl9jb25mbGljdHKSAAAAeg0gT04gQ09ORkxJQ1QgKQ9ymgAAAHKcAAAA2gRsaXN0cpkAAABymwAAAHKYAAAAcjYAAABylAAAAHKdAAAAcp4AAABynwAAAHKgAAAAch4AAAByiwAAANocdmlzaXRfcHJpbWFyeV9rZXlfY29uc3RyYWludCkFciQAAADaCmNvbnN0cmFpbnTaAWNyegAAAHKiAAAAKQFyKAAAAHIpAAAAcioAAABypgAAADoEAABzIgAAAAAEDgEMAgYBEAEQAQYCBAIKAQYDCAEGAhYBEAEGAwgBDAJ6LlNRTGl0ZURETENvbXBpbGVyLnZpc2l0X3ByaW1hcnlfa2V5X2NvbnN0cmFpbnRjAgAAAAAAAAAEAAAAAwAAAAMAAABzYgAAAHQAdAF8AIMCoAJ8AaEBfQJ8AWoDZAEZAGQCGQB9A3wDZABrCHJKdAR8AWoFgwFkA2sCckp0BnwBgwFkBBkAagNkARkAZAUZAH0DfANkAGsJcl58AmQGfAMXADcAfQJ8AlMAKQdOco8AAABypAAAAHICAAAAcgEAAADaEm9uX2NvbmZsaWN0X3VuaXF1ZXoNIE9OIENPTkZMSUNUICkHch4AAAByiwAAANoXdmlzaXRfdW5pcXVlX2NvbnN0cmFpbnRymAAAAHKaAAAAcpwAAABypQAAACkEciQAAABypwAAAHJ6AAAAcqIAAAApAXIoAAAAcikAAAByKgAAAHKqAAAAWQQAAHMUAAAAAAEKAQYDCAEGAhYBEAEGAwgBDAJ6KVNRTGl0ZURETENvbXBpbGVyLnZpc2l0X3VuaXF1ZV9jb25zdHJhaW50YwIAAAAAAAAABAAAAAMAAAADAAAAczYAAAB0AHQBfACDAqACfAGhAX0CfAFqA2QBGQBkAhkAfQN8A2QAawlyMnwCZAN8AxcANwB9AnwCUwApBE5yjwAAAHKkAAAAeg0gT04gQ09ORkxJQ1QgKQRyHgAAAHKLAAAA2hZ2aXNpdF9jaGVja19jb25zdHJhaW50cpgAAAApBHIkAAAAcqcAAAByegAAAHKiAAAAKQFyKAAAAHIpAAAAcioAAAByqwAAAGsEAABzDgAAAAABCgEGAwgBBgMIAQwCeihTUUxpdGVERExDb21waWxlci52aXNpdF9jaGVja19jb25zdHJhaW50YwIAAAAAAAAAAwAAAAMAAAADAAAAczAAAAB0AHQBfACDAqACfAGhAX0CfAFqA2QBGQBkAhkAZABrCXIsdASgBWQDoQGCAXwCUwApBE5yjwAAAHKkAAAAekZTUUxpdGUgZG9lcyBub3Qgc3VwcG9ydCBvbiBjb25mbGljdCBjbGF1c2UgZm9yIGNvbHVtbiBjaGVjayBjb25zdHJhaW50KQZyHgAAAHKLAAAA2h12aXNpdF9jb2x1bW5fY2hlY2tfY29uc3RyYWludHKYAAAAcgcAAABycwAAACkDciQAAABypwAAAHJ6AAAAKQFyKAAAAHIpAAAAcioAAAByrAAAAHkEAABzDAAAAAABCgEGAxIBBAEGBHovU1FMaXRlRERMQ29tcGlsZXIudmlzaXRfY29sdW1uX2NoZWNrX2NvbnN0cmFpbnRjAgAAAAAAAAAEAAAAAwAAAAMAAABzQAAAAHwBagBkARkAagFqAn0CfAFqAGQBGQBqA2oCfQN8AmoEfANqBGsDcixkAFMAdAV0BnwAgwKgB3wBoQFTAGQAUwApAk5yAQAAACkI2ghlbGVtZW50c9oGcGFyZW50cpsAAAByoQAAAHIJAAAAch4AAAByiwAAANocdmlzaXRfZm9yZWlnbl9rZXlfY29uc3RyYWludCkEciQAAABypwAAAFoLbG9jYWxfdGFibGVaDHJlbW90ZV90YWJsZSkBcigAAAByKQAAAHIqAAAAcq8AAACGBAAAcwwAAAAAAg4BDgIMAQQCCgF6LlNRTGl0ZURETENvbXBpbGVyLnZpc2l0X2ZvcmVpZ25fa2V5X2NvbnN0cmFpbnRjBAAAAAAAAAAEAAAABAAAAEMAAABzDgAAAHwDagB8AmQBZAKNAlMAKQN6PUZvcm1hdCB0aGUgcmVtb3RlIHRhYmxlIGNsYXVzZSBvZiBhIENSRUFURSBDT05TVFJBSU5UIGNsYXVzZS5GKQHaCnVzZV9zY2hlbWEpAdoMZm9ybWF0X3RhYmxlKQRyJAAAAHKnAAAAcpsAAABylQAAAHIpAAAAcikAAAByKgAAANoeZGVmaW5lX2NvbnN0cmFpbnRfcmVtb3RlX3RhYmxlkgQAAHMCAAAAAAN6MFNRTGl0ZURETENvbXBpbGVyLmRlZmluZV9jb25zdHJhaW50X3JlbW90ZV90YWJsZUZUYwQAAAAAAAAACQAAAAkAAAADAAAAc54AAAB8AWoAfQSIAKABfAShAQEAiABqAn0FZAF9BnwEagNyKHwGZAI3AH0GfAZkA4gAagR8BGQEZAWNAnwFagV8BGoGZAZkB40CZAigB4cAZgFkCWQKhAh8BGoIRACDAaEBZgMWADcAfQZ8BGoJZAsZAGQMGQB9B3wHZABrCXKaiABqCmoLfAdkBmQEZA2NA30IfAZkDnwIFwA3AH0GfAZTACkPTnoHQ1JFQVRFIHoHVU5JUVVFIHoTSU5ERVggJXMgT04gJXMgKCVzKVQpAdoOaW5jbHVkZV9zY2hlbWFGKQFysAAAAHoCLCBjAQAAAAAAAAACAAAABgAAADMAAABzIAAAAHwAXRh9AYgAagBqAXwBZABkAWQCjQNWAAEAcQJkA1MAKQRGVCkC2g1pbmNsdWRlX3RhYmxl2g1saXRlcmFsX2JpbmRzTikC2gxzcWxfY29tcGlsZXJyOwAAACkCcoUAAAByaAAAACkBciQAAAByKQAAAHIqAAAAcocAAACkBAAAcwIAAAAEA3o3U1FMaXRlRERMQ29tcGlsZXIudmlzaXRfY3JlYXRlX2luZGV4Ljxsb2NhbHM+LjxnZW5leHByPnKPAAAA2gV3aGVyZSkCcrQAAABytQAAAHoHIFdIRVJFICkM2gdlbGVtZW50WhNfdmVyaWZ5X2luZGV4X3RhYmxlcpUAAADaBnVuaXF1ZVoUX3ByZXBhcmVkX2luZGV4X25hbWVysQAAAHKbAAAAcogAAABaC2V4cHJlc3Npb25zcpgAAABytgAAAHI7AAAAKQlyJAAAANoGY3JlYXRlcrMAAABaFGluY2x1ZGVfdGFibGVfc2NoZW1h2gVpbmRleHKVAAAAcnoAAABaC3doZXJlY2xhdXNlWg53aGVyZV9jb21waWxlZHIpAAAAKQFyJAAAAHIqAAAA2hJ2aXNpdF9jcmVhdGVfaW5kZXiXBAAAcyQAAAAAAwYBCgEGAQQBBgEIAQQBDAEOAQQBCgMSBA4BCAEGAQwCDAJ6JFNRTGl0ZURETENvbXBpbGVyLnZpc2l0X2NyZWF0ZV9pbmRleCkCRlQpDHI/AAAAckAAAAByQQAAAHKjAAAAcqYAAAByqgAAAHKrAAAAcqwAAAByrwAAAHKyAAAAcrwAAAByQwAAAHIpAAAAcikAAAApAXIoAAAAcioAAAByiwAAAAkEAABzEAAAAAgBCDAMHwwSDA4MDQwMCAZyiwAAAGMAAAAAAAAAAAAAAAADAAAAAAAAAHNEAAAAZQBaAWQAWgJkAWQChABaA4cAZgFkA2QEhAhaBIcAZgFkBWQGhAhaBYcAZgFkB2QIhAhaBmQJZAqEAFoHhwAEAFoIUwApC9oSU1FMaXRlVHlwZUNvbXBpbGVyYwIAAAAAAAAAAwAAAAMAAABLAAAAcwoAAAB8AKAAfAGhAVMAKQFOKQFaCnZpc2l0X0JMT0IpA3IkAAAAcoYAAAByJwAAAHIpAAAAcikAAAByKgAAANoSdmlzaXRfbGFyZ2VfYmluYXJ5tgQAAHMCAAAAAAF6JVNRTGl0ZVR5cGVDb21waWxlci52aXNpdF9sYXJnZV9iaW5hcnljAgAAAAAAAAADAAAAAwAAAAsAAABzKAAAAHQAfAF0AYMCchB8AWoCciB0A3QEfACDAqAFfAGhAVMAZAFTAGQAUwApAk5yWwAAACkGckoAAAByHQAAAHI1AAAAch4AAAByvQAAANoOdmlzaXRfREFURVRJTUUpA3IkAAAAcoYAAAByJwAAACkBcigAAAByKQAAAHIqAAAAcr8AAAC5BAAAcwgAAAAAAgoBBgIQAnohU1FMaXRlVHlwZUNvbXBpbGVyLnZpc2l0X0RBVEVUSU1FYwIAAAAAAAAAAwAAAAMAAAALAAAAcygAAAB0AHwBdAGDAnIQfAFqAnIgdAN0BHwAgwKgBXwBoQFTAGQBUwBkAFMAKQJOcloAAAApBnJKAAAAch0AAAByNQAAAHIeAAAAcr0AAADaCnZpc2l0X0RBVEUpA3IkAAAAcoYAAAByJwAAACkBcigAAAByKQAAAHIqAAAAcsAAAADCBAAAcwgAAAAAAgoBBgIQAnodU1FMaXRlVHlwZUNvbXBpbGVyLnZpc2l0X0RBVEVjAgAAAAAAAAADAAAAAwAAAAsAAABzKAAAAHQAfAF0AYMCchB8AWoCciB0A3QEfACDAqAFfAGhAVMAZAFTAGQAUwApAk5yXQAAACkGckoAAAByHQAAAHI1AAAAch4AAAByvQAAANoKdmlzaXRfVElNRSkDciQAAAByhgAAAHInAAAAKQFyKAAAAHIpAAAAcioAAABywQAAAMsEAABzCAAAAAACCgEGAhACeh1TUUxpdGVUeXBlQ29tcGlsZXIudmlzaXRfVElNRWMCAAAAAAAAAAMAAAABAAAASwAAAHMEAAAAZAFTACkCTnIDAAAAcikAAAApA3IkAAAAcoYAAAByJwAAAHIpAAAAcikAAAByKgAAANoKdmlzaXRfSlNPTtQEAABzAgAAAAAEeh1TUUxpdGVUeXBlQ29tcGlsZXIudmlzaXRfSlNPTikJcj8AAAByQAAAAHJBAAAAcr4AAAByvwAAAHLAAAAAcsEAAABywgAAAHJDAAAAcikAAAByKQAAACkBcigAAAByKgAAAHK9AAAAtQQAAHMKAAAACAEIAwwJDAkMCXK9AAAAYwAAAAAAAAAAAAAAAHUAAABAAAAAc/wAAABlAFoBZABaAmUDZAFkAmQDZARkBWQGZAdkCGQJZApkC2QMZA1kDmQPZBBkEWQSZBNkFGQVZBZkF2QYZBlkGmQbZBxkHWQeZB9kIGQhZCJkI2QkZCVkJmQnZChkKWQqZCtkLGQtZC5kL2QwZDFkMmQzZDRkNWQ2ZDdkOGQ5ZDpkO2Q8ZD1kPmQ/ZEBkQWRCZENkRGRFZEZkR2RIZElkSmRLZExkTWROZE9kUGRRZFJkU2RUZFVkVmRXZFhkWWRaZFtkXGRdZF5kX2RgZGFkYmRjZGRkZWRmZGdkaGRpZGpka2RsZG1kbmRvZHBkcWRyZHNkdGd0gwFaBGR1UwApdtoYU1FMaXRlSWRlbnRpZmllclByZXBhcmVy2gNhZGTaBWFmdGVy2gNhbGxaBWFsdGVyWgdhbmFseXpl2gNhbmTaAmFzWgNhc2PaBmF0dGFjaHKRAAAA2gZiZWZvcmXaBWJlZ2luWgdiZXR3ZWVuWgJieVoHY2FzY2FkZdoEY2FzZXJvAAAA2gVjaGVja9oHY29sbGF0ZXKhAAAAWgZjb21taXRaCGNvbmZsaWN0cqcAAAByugAAAFoFY3Jvc3NaDGN1cnJlbnRfZGF0ZVoMY3VycmVudF90aW1lWhFjdXJyZW50X3RpbWVzdGFtcFoIZGF0YWJhc2VyDQAAAFoKZGVmZXJyYWJsZVoIZGVmZXJyZWTaBmRlbGV0ZdoEZGVzY9oGZGV0YWNoWghkaXN0aW5jdFoEZHJvcFoEZWFjaNoEZWxzZdoDZW5k2gZlc2NhcGXaBmV4Y2VwdFoJZXhjbHVzaXZlWgdleHBsYWlu2gVmYWxzZdoEZmFpbNoDZm9yWgdmb3JlaWdu2gRmcm9t2gRmdWxs2gRnbG9i2gVncm91cFoGaGF2aW5n2gJpZtoGaWdub3JlWglpbW1lZGlhdGXaAmlucrsAAABaB2luZGV4ZWRaCWluaXRpYWxsedoFaW5uZXLaBmluc2VydFoHaW5zdGVhZFoJaW50ZXJzZWN0WgRpbnRv2gJpc1oGaXNudWxscogAAADaA2tleXJ9AAAAWgRsaWtl2gVsaW1pdNoFbWF0Y2haB25hdHVyYWzaA25vdFoHbm90bnVsbNoEbnVsbFoCb2baBm9mZnNldNoCb27aAm9y2gVvcmRlcloFb3V0ZXJaBHBsYW7aBnByYWdtYVoHcHJpbWFyedoFcXVlcnnaBXJhaXNlWgpyZWZlcmVuY2VzWgdyZWluZGV42gZyZW5hbWXaB3JlcGxhY2VaCHJlc3RyaWN0cn4AAABaCHJvbGxiYWNr2gNyb3dyeQAAANoDc2V0cpsAAADaBHRlbXBaCXRlbXBvcmFyeVoEdGhlbtoCdG9aC3RyYW5zYWN0aW9uWgd0cmlnZ2Vy2gR0cnVl2gV1bmlvbnK5AAAA2gZ1cGRhdGVaBXVzaW5nWgZ2YWN1dW3aBnZhbHVlc9oEdmlld1oHdmlydHVhbFoEd2hlbnK3AAAATikFcj8AAAByQAAAAHJBAAAAcvIAAABaDnJlc2VydmVkX3dvcmRzcikAAAByKQAAAHIpAAAAcioAAABywwAAANsEAABz6gAAAAgBAgICAQIBAgEC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WgMAAFJldHVybiBhIGRhdGEgdHlwZSBmcm9tIGEgcmVmbGVjdGVkIGNvbHVtbiwgdXNpbmcgYWZmaW5pdHkgdHVsZXMuCgogICAgICAgIFNRTGl0ZSdzIGdvYWwgZm9yIHVuaXZlcnNhbCBjb21wYXRpYmlsaXR5IGludHJvZHVjZXMgc29tZSBjb21wbGV4aXR5CiAgICAgICAgZHVyaW5nIHJlZmxlY3Rpb24sIGFzIGEgY29sdW1uJ3MgZGVmaW5lZCB0eXBlIG1pZ2h0IG5vdCBhY3R1YWxseSBiZSBhCiAgICAgICAgdHlwZSB0aGF0IFNRTGl0ZSB1bmRlcnN0YW5kcyAtIG9yIGluZGVlZCwgbXkgbm90IGJlIGRlZmluZWQgKmF0IGFsbCouCiAgICAgICAgSW50ZXJuYWxseSwgU1FMaXRlIGhhbmRsZXMgdGhpcyB3aXRoIGEgJ2RhdGEgdHlwZSBhZmZpbml0eScgZm9yIGVhY2gKICAgICAgICBjb2x1bW4gZGVmaW5pdGlvbiwgbWFwcGluZyB0byBvbmUgb2YgJ1RFWFQnLCAnTlVNRVJJQycsICdJTlRFR0VSJywKICAgICAgICAnUkVBTCcsIG9yICdOT05FJyAocmF3IGJpdHMpLiBUaGUgYWxnb3JpdGhtIHRoYXQgZGV0ZXJtaW5lcyB0aGlzIGlzCiAgICAgICAgbGlzdGVkIGluIGh0dHA6Ly93d3cuc3FsaXRlLm9yZy9kYXRhdHlwZTMuaHRtbCBzZWN0aW9uIDIuMS4KCiAgICAgICAgVGhpcyBtZXRob2QgYWxsb3dzIFNRTEFsY2hlbXkgdG8gc3VwcG9ydCB0aGF0IGFsZ29yaXRobSwgd2hpbGUgc3RpbGwKICAgICAgICBwcm92aWRpbmcgYWNjZXNzIHRvIHNtYXJ0ZXIgcmVmbGVjdGlvbiB1dGlsaXRpZXMgYnkgcmVnY29nbml6aW5nCiAgICAgICAgY29sdW1uIGRlZmluaXRpb25zIHRoYXQgU1FMaXRlIG9ubHkgc3VwcG9ydHMgdGhyb3VnaCBhZmZpbml0eSAobGlrZQogICAgICAgIERBVEUgYW5kIERPVUJMRSkuCgogICAgICAgIHoSKFtcdyBdKykoXCguKj9cKSk/cgIAAAByBgEAAHJ2AAAAclwAAAByEwAAAFoEQ0xPQnIaAAAAchEAAAByGAAAAFoERkxPQVoERE9VQk56BShcZCspYwEAAAAAAAAAAgAAAAQAAABTAAAAcxQAAABnAHwAXQx9AXQAfAGDAZECcQRTAHIpAAAAKQHaA2ludCkCcoUAAADaAWFyKQAAAHIpAAAAcioAAAByIQEAAJ0GAABzAgAAAAYAejhTUUxpdGVEaWFsZWN0Ll9yZXNvbHZlX3R5cGVfYWZmaW5pdHkuPGxvY2Fscz4uPGxpc3Rjb21wPnpOQ291bGQgbm90IGluc3RhbnRpYXRlIHR5cGUgJXMgd2l0aCByZWZsZWN0ZWQgYXJndW1lbnRzICVzOyB1c2luZyBubyBhcmd1bWVudHMuKQ5yIAAAAHLlAAAActwAAADaDWlzY2hlbWFfbmFtZXNyngAAAHIWAAAAchoAAABaCE51bGxUeXBlchgAAAByFwAAANoHZmluZGFsbHJLAAAAcgwAAADaBHdhcm4pBXIkAAAAcoYAAABy5QAAAHJSAAAAckgAAAByKQAAAHIpAAAAcioAAAByPgEAAHQGAABzOAAAAAARDAEEAQoBDAIEAQQCCgEMAQgBCAEYAQgBDAEIARgBCAIGAgoBDAECARYBEAEEAQICDAIOAgYCeiRTUUxpdGVEaWFsZWN0Ll9yZXNvbHZlX3R5cGVfYWZmaW5pdHljBAAAAAAAAAAMAAAABQAAAEsAAABzggAAAGQAfQV8AGoAfAF8AnwDZAGNA30GfAZyPmQCfQd0AaACfAd8BnQBagOhA30IfAhyOnwIoARkA6EBbgJkAH0FfABqBXwBfAJ8A2YDfASOAX0JZwB9CngifAlEAF0afQt8C2QEGQByWnwKoAZ8C2QFGQChAQEAcVpXAHwKfAVkBpwCUwApB04pAXIJAAAAehxDT05TVFJBSU5UIChcdyspIFBSSU1BUlkgS0VZcgIAAABymQAAAHIWAQAAKQLaE2NvbnN0cmFpbmVkX2NvbHVtbnNyFgEAACkH2g5fZ2V0X3RhYmxlX3NxbHIgAAAAcjMAAADaAUly3AAAAHI8AQAAcjoBAAApDHIkAAAAchoBAAByLwEAAHIJAAAAcicAAADaD2NvbnN0cmFpbnRfbmFtZdoKdGFibGVfZGF0YVoKUEtfUEFUVEVSTnI1AQAA2gRjb2xzWgVwa2V5c9oDY29scikAAAByKQAAAHIqAAAA2hFnZXRfcGtfY29uc3RyYWludKoGAABzGAAAAAACBAEQAQQBBAEQARICEgEEAQoBCAESAnofU1FMaXRlRGlhbGVjdC5nZXRfcGtfY29uc3RyYWludGMEAAAAAAAAABcAAAAIAAAACwAAAHOGAQAAiAFqAHwBZAF8AnwDZAKNBH0FaQB9BnigfAVEAF2YfQd8B2QDGQB8B2QEGQB8B2QFGQB8B2QGGQBmBFwEfQh9CX0KfQt8C2QAawhyUHwKfQuIAWoBcmR0AqADZAdkCHwJoQN9CXwIfAZrBnJ2fAZ8CBkAfQxuImQAZwB8A3wJZwBpAGQJnAYEAH0MfAZ8CDwAfAx8BnwIPAB8DGQKGQCgBHwKoQEBAHwMZAsZAKAEfAuhAQEAcRxXAGQMZA2EAIkAdAWHAGYBZA5kD4QIfAagBqEARACDAYMBfQ2IAWoHfAF8AnwDZAKNA4kCiAJkAGsIcvZnAFMAhwGHAmYCZBBkEYQIfQ5nAH0PeGp8DoMARABdYFwFfRB9EX0SfRN9FIgAfBF8EnwTgwN9FXwVfA1rB5ABckp0CKAJZBJ8FXwCZgIWAKEBAQCQAXEQfA2gCnwVoQF9FnwQfBZkEzwAfBR8FmQUPAB8D6AEfBahAQEAkAFxEFcAfA+gC3wNoAahAKEBAQB8D1MAKRVOWhBmb3JlaWduX2tleV9saXN0KQFyCQAAAHIBAAAAcgYBAAByBgAAAHI3AQAAehVeW1wiXFtgXCddfFtcIlxdYFwnXSRydgAAACkGchYBAAByRAEAAFoPcmVmZXJyZWRfc2NoZW1h2g5yZWZlcnJlZF90YWJsZdoQcmVmZXJyZWRfY29sdW1uc9oHb3B0aW9uc3JEAQAAck0BAABjAwAAAAAAAAADAAAAAwAAAFMAAABzFgAAAHQAfACDAXwBZgEXAHQAfAKDARcAUwApAU4pAdoFdHVwbGUpA3JEAQAAckwBAAByTQEAAHIpAAAAcikAAAByKgAAANoGZmtfc2ln3gYAAHMCAAAAAAR6LlNRTGl0ZURpYWxlY3QuZ2V0X2ZvcmVpZ25fa2V5cy48bG9jYWxzPi5ma19zaWdjAQAAAAAAAAACAAAABgAAADMAAABzKgAAAHwAXSJ9AYgAfAFkABkAfAFkARkAfAFkAhkAgwN8AWYCVgABAHECZANTACkEckQBAAByTAEAAHJNAQAATnIpAAAAKQJyhQAAANoCZmspAXJQAQAAcikAAAByKgAAAHKHAAAA6gYAAHMCAAAABAh6MVNRTGl0ZURpYWxlY3QuZ2V0X2ZvcmVpZ25fa2V5cy48bG9jYWxzPi48Z2VuZXhwcj5jAAAAAAAAAAAKAAAACQAAADMAAABz3AAAAGQBfQB40nQAoAF8AIgBdABqAqEDRABdvn0BfAGgA2QCZANkBGQFZAZkB6EGXAZ9An0DfQR9BX0GfQd0BIgAoAV8A6EBgwF9A3wGc1J8A30Gbg50BIgAoAV8BqEBgwF9BnwEcGZ8BX0FaQB9CHhWdACgBmQIfAegB6EAoQJEAF1CfQl8CaAIZAmhAXKifAlkB2QAhQIZAKAJoQB8CGQKPABxfnwJoAhkC6EBcn58CWQHZACFAhkAoAmhAHwIZAw8AHF+VwB8AnwDfAV8BnwIZgVWAAEAcRZXAGQAUwApDU56uSg/OkNPTlNUUkFJTlQgKFx3KykgKyk/Rk9SRUlHTiBLRVkgKlwoICooLis/KSAqXCkgK1JFRkVSRU5DRVMgKyg/Oig/OiIoLis/KSIpfChbYS16MC05X10rKSkgKlwoKC4rPylcKSAqKCg/Ok9OICg/OkRFTEVURXxVUERBVEUpICg/OlNFVCBOVUxMfFNFVCBERUZBVUxUfENBU0NBREV8UkVTVFJJQ1R8Tk8gQUNUSU9OKSAqKSopcgIAAAByBgEAAHIGAAAAcjcBAAByOAEAAHIIAQAAegogKlxiT05cYiAqWgZERUxFVEVaCG9uZGVsZXRlWgZVUERBVEVaCG9udXBkYXRlKQpyIAAAANoIZmluZGl0ZXJyRgEAAHLcAAAAcqUAAADaEV9maW5kX2NvbHNfaW5fc2lncv8AAAByOQEAANoKc3RhcnRzd2l0aNoFc3RyaXApCloKRktfUEFUVEVSTnLlAAAAckcBAAByRAEAAFoUcmVmZXJyZWRfcXVvdGVkX25hbWXaDXJlZmVycmVkX25hbWVyTQEAAFoOb251cGRhdGVkZWxldGVyTgEAANoFdG9rZW4pAnIkAAAAckgBAAByKQAAAHIqAAAA2glwYXJzZV9ma3P6BgAAcyoAAAAAAgQGFgggAQIBDAIEAQYCAgEMAggBBAIWAQoBFgEKARgCAgECAQIBAgF6MVNRTGl0ZURpYWxlY3QuZ2V0X2ZvcmVpZ25fa2V5cy48bG9jYWxzPi5wYXJzZV9ma3N6aFdBUk5JTkc6IFNRTC1wYXJzZWQgZm9yZWlnbiBrZXkgY29uc3RyYWludCAnJXMnIGNvdWxkIG5vdCBiZSBsb2NhdGVkIGluIFBSQUdNQSBmb3JlaWduX2tleXMgZm9yIHRhYmxlICVzchYBAAByTgEAACkMci4BAAByEQEAAHIgAAAA2gNzdWJyOgEAANoEZGljdHL4AAAAckUBAAByDAAAAHJDAQAAckYAAADaBmV4dGVuZCkXciQAAAByGgEAAHIvAQAAcgkAAAByJwAAAFoKcHJhZ21hX2Zrc1oDZmtzcvEAAABaDG51bWVyaWNhbF9pZFoEcnRibFoEbGNvbFoEcmNvbHJRAQAAWhFrZXlzX2J5X3NpZ25hdHVyZXJYAQAAWgVma2V5c3JHAQAAckQBAAByVgEAAHJNAQAAck4BAADaA3NpZ3LjAAAAcikAAAApA3JQAQAAciQAAABySAEAAHIqAAAA2hBnZXRfZm9yZWlnbl9rZXlzuwYAAHNWAAAAAAQEAQ4DBAIKASQCCAEEAgYBDgIIAQoDAgECAQIBAgECARACCAIOARICCAsCAQoIDgMQAQgCBAIOKgQCAgYUAQwBCgEEAQICDAIEAQoBCAEIARAEDgF6HlNRTGl0ZURpYWxlY3QuZ2V0X2ZvcmVpZ25fa2V5c2MCAAAAAAAAAAMAAAAFAAAAYwAAAHM0AAAAeC50AKABZAF8AXQAagKhA0QAXRp9AnwCoANkAqEBcCh8AqADZAOhAVYAAQBxElcAZABTACkETnoYKD86IiguKz8pIil8KFthLXowLTlfXSspcgIAAAByBgEAACkEciAAAAByUgEAAHJGAQAActwAAAApA3IkAAAAclwBAABy5QAAAHIpAAAAcikAAAByKgAAAHJTAQAAPwcAAHMEAAAAAAEWAXofU1FMaXRlRGlhbGVjdC5fZmluZF9jb2xzX2luX3NpZ2MEAAAAAAAAAA0AAAAFAAAACwAAAHPEAAAAaQB9BXhGiABqAHwBfAJmAnwDZAFkApwCfASXAo4BRABdKH0GfAZkAxkAoAFkBKEBczRxIHQCfAZkBRkAgwF9B3wGfAV8BzwAcSBXAIgAagN8AXwCZgJkBnwDaQF8BJcCjgGJAYgBc2xnAFMAZwB9CIcAhwFmAmQHZAiECH0JeEB8CYMARABdNlwCfQp9C3QCfAuDAX0HfAd8BWsGcoZ8BaAEfAehAQEAfAp8C2QJnAJ9DHwIoAV8DKEBAQBxhlcAfAhTACkKTlQpAnIJAAAA2hRpbmNsdWRlX2F1dG9faW5kZXhlc3IWAQAA2hBzcWxpdGVfYXV0b2luZGV42gxjb2x1bW5fbmFtZXNyCQAAAGMAAAAAAAAAAAUAAAAHAAAAMwAAAHOMAAAAZAF9AGQCfQF4PHQAoAF8AIgBdABqAqEDRABdKH0CfAKgA2QDZAShAlwCfQN9BHwDdASIAKAFfAShAYMBZgJWAAEAcRpXAHhAdACgAXwBiAF0AGoCoQNEAF0sfQJ0BIgAoAV8AqADZAOhAXB0fAKgA2QEoQGhAYMBfQRkAHwEZgJWAAEAcVhXAGQAUwApBU56LCg/OkNPTlNUUkFJTlQgIj8oLis/KSI/ICspP1VOSVFVRSAqXCgoLis/KVwpei0oPzooIi4rPyIpfChbYS16MC05XSspKSArW2EtejAtOV8gXSs/ICtVTklRVUVyAgAAAHIGAQAAKQZyIAAAAHJSAQAAckYBAABy3AAAAHKlAAAAclMBAAApBVoOVU5JUVVFX1BBVFRFUk5aFUlOTElORV9VTklRVUVfUEFUVEVSTnLlAAAAchYBAABySQEAACkCciQAAABySAEAAHIpAAAAcioAAADaCXBhcnNlX3Vxc10HAABzEgAAAAABBAIEAxYBEAEYBRYBAgEcAno3U1FMaXRlRGlhbGVjdC5nZXRfdW5pcXVlX2NvbnN0cmFpbnRzLjxsb2NhbHM+LnBhcnNlX3VxcykCchYBAAByYAEAACkG2gtnZXRfaW5kZXhlc3JUAQAAck8BAAByRQEAAHJGAAAAcjoBAAApDXIkAAAAchoBAAByLwEAAHIJAAAAcicAAABaEWF1dG9faW5kZXhfYnlfc2ln2gNpZHhyXAEAAFoSdW5pcXVlX2NvbnN0cmFpbnRzcmEBAAByFgEAAHJJAQAAWhFwYXJzZWRfY29uc3RyYWludHIpAAAAKQJyJAAAAHJIAQAAcioAAADaFmdldF91bmlxdWVfY29uc3RyYWludHNDBwAAczAAAAAABQQBBgECAQQBAgEGAQwCDgECAQwBDAIEARQCBAEEAgQCDhMQAQgBCAEKAQoBDgN6JFNRTGl0ZURpYWxlY3QuZ2V0X3VuaXF1ZV9jb25zdHJhaW50c2MEAAAAAAAAAAkAAAAHAAAASwAAAHNiAAAAfABqAHwBfAJmAmQBfANpAXwElwKOAX0FfAVzIGcAUwBkAn0GZwB9B3g0dAGgAnwGfAV0AWoDoQNEAF0gfQh8B6AEfAigBWQDoQF8CKAFZAShAWQFnAKhAQEAcTpXAHwHUwApBk5yCQAAAHouKD86Q09OU1RSQUlOVCAoXHcrKSArKT9DSEVDSyAqXCggKiguKykgKlwpLD8gKnIGAQAAcgIAAAApAloHc3FsdGV4dHIWAQAAKQZyRQEAAHIgAAAAclIBAAByRgEAAHI6AQAActwAAAApCXIkAAAAchoBAAByLwEAAHIJAAAAcicAAABySAEAAFoNQ0hFQ0tfUEFUVEVSTloRY2hlY2tfY29uc3RyYWludHNy5QAAAHIpAAAAcikAAAByKgAAANoVZ2V0X2NoZWNrX2NvbnN0cmFpbnRzegcAAHMUAAAAAAIEARQCBAEEAgQBBAYWAQQBHAN6I1NRTGl0ZURpYWxlY3QuZ2V0X2NoZWNrX2NvbnN0cmFpbnRzYwQAAAAAAAAACwAAAAgAAABLAAAAc9QAAAB8AGoAfAFkAXwCfANkAo0EfQVnAH0GfASgAWQDZAShAn0HeDx8BUQAXTR9CHwHc0B8CGQFGQCgAmQGoQFyQHEofAagA3QEfAhkBRkAZwB8CGQHGQBkCI0DoQEBAHEoVwB4bnQFfAaDAUQAXWJ9CXwAoAB8AWQJfAlkChkAoQN9CnhKfApEAF1CfQh8CGQHGQBkAGsIcrZ0BqAHZAt8CWQKGQAWAKEBAQB8BqAIfAmhAQEAUABxhnwJZAwZAKADfAhkBxkAoQEBAHGGVwBxalcAfAZTACkNTloKaW5kZXhfbGlzdCkBcgkAAAByXgEAAEZyAgAAAHJfAQAAcgYBAAApA3IWAQAAcmABAAByuQAAAFoKaW5kZXhfaW5mb3IWAQAAejtTa2lwcGVkIHVuc3VwcG9ydGVkIHJlZmxlY3Rpb24gb2YgZXhwcmVzc2lvbi1iYXNlZCBpbmRleCAlc3JgAQAAKQlyLgEAAHJGAAAAclQBAAByOgEAAHJaAQAAcqUAAAByDAAAAHJDAQAA2gZyZW1vdmUpC3IkAAAAchoBAAByLwEAAHIJAAAAcicAAABaDnByYWdtYV9pbmRleGVz2gdpbmRleGVzcl4BAABy8QAAAHJjAQAAWgxwcmFnbWFfaW5kZXhyKQAAAHIpAAAAcioAAAByYgEAAJAHAABzKgAAAAACBAEOAgQCDAEKAwwBBgICASADDgEEAQ4DCgEMAQQBAgEMAgoBBAIaAXoZU1FMaXRlRGlhbGVjdC5nZXRfaW5kZXhlc2MEAAAAAAAAAAgAAAAIAAAASwAAAHNuAAAAfANyFmQBfABqAKABfAOhARYAfQVuBGQCfQV5HGQDfAV8AmQEnAIWAH0GfAGgAnwGoQF9B1cAbi4EAHQDagRrCnJkAQABAAEAZAV8BXwCZAScAhYAfQZ8AaACfAahAX0HWQBuAlgAfAegBaEAUwApBk56AyVzLnJ2AAAAeptTRUxFQ1Qgc3FsIEZST00gIChTRUxFQ1QgKiBGUk9NICUoc2NoZW1hKXNzcWxpdGVfbWFzdGVyIFVOSU9OIEFMTCAgIFNFTEVDVCAqIEZST00gJShzY2hlbWEpc3NxbGl0ZV90ZW1wX21hc3RlcikgV0hFUkUgbmFtZSA9ICclKHRhYmxlKXMnIEFORCB0eXBlID0gJ3RhYmxlJykCcgkAAABymwAAAHpTU0VMRUNUIHNxbCBGUk9NICUoc2NoZW1hKXNzcWxpdGVfbWFzdGVyIFdIRVJFIG5hbWUgPSAnJSh0YWJsZSlzJyBBTkQgdHlwZSA9ICd0YWJsZScpBnIlAQAAciYBAAByGAEAAHIHAAAAcjMBAABaBnNjYWxhcikIciQAAAByGgEAAHIvAQAAcgkAAAByJwAAAFoLc2NoZW1hX2V4cHJyIgEAAHIpAQAAcikAAAByKQAAAHIqAAAAckUBAACzBwAAcxoAAAAAAgQBAgEQAwQBAgICBQwCDgEQAgIDDAIQAXocU1FMaXRlRGlhbGVjdC5fZ2V0X3RhYmxlX3NxbGMFAAAAAAAAAAoAAAAEAAAAQwAAAHNaAAAAfABqAGoBfQV8BGQAawlyHmQBfAV8BIMBFgB9Bm4EZAJ9BnwFfAODAX0HZAN8BnwCfAdmAxYAfQZ8AaACfAahAX0IfAhqA3NSfAigBKEAfQluBGcAfQl8CVMAKQROegpQUkFHTUEgJXMuegdQUkFHTUEgegglcyVzKCVzKSkFciUBAAByJgEAAHIYAQAAWgxfc29mdF9jbG9zZWRyNAEAACkKciQAAAByGgEAAHLsAAAAci8BAAByCQAAANoFcXVvdGXaCXN0YXRlbWVudFoGcXRhYmxlchcBAAByNQEAAHIpAAAAcikAAAByKgAAAHIuAQAAzwcAAHMWAAAAAAEIAQgBDgIEAQgBDgEKAQYECgIEAXofU1FMaXRlRGlhbGVjdC5fZ2V0X3RhYmxlX3ByYWdtYSkETkZOTikBTikBTikBTikBTikBTikBTikBTikBTikBTikBTikBTikBTik7cj8AAAByQAAAAHJBAAAAchYBAABaDnN1cHBvcnRzX2FsdGVyWhtzdXBwb3J0c191bmljb2RlX3N0YXRlbWVudHNaFnN1cHBvcnRzX3VuaWNvZGVfYmluZHNyDwEAAFoVc3VwcG9ydHNfZW1wdHlfaW5zZXJ0cm0AAAByEAEAAFoPdHVwbGVfaW5fdmFsdWVzWhJkZWZhdWx0X3BhcmFtc3R5bGVy+gAAAFoRZXhlY3V0aW9uX2N0eF9jbHNyYAAAAFoSc3RhdGVtZW50X2NvbXBpbGVycosAAABaDGRkbF9jb21waWxlcnK9AAAAcpMAAABywwAAAHKVAAAAckEBAADaCGNvbHNwZWNzcgsBAADaCXNhX3NjaGVtYVoFVGFibGXaBUluZGV4WgZDb2x1bW5aCkNvbnN0cmFpbnRaE2NvbnN0cnVjdF9hcmd1bWVudHNyEQEAAHL7AAAAch8AAAByFAEAAHIcAQAAch4BAAByIAEAAHIOAAAA2gVjYWNoZXIjAQAAcioBAAByKwEAAHIsAQAAcjEBAAByMgEAAHI2AQAAcjwBAAByOwEAAHI+AQAAcksBAAByXQEAAHJTAQAAcmQBAAByZQEAAHJiAQAAckUBAAByLgEAAHIpAAAAcikAAAByKQAAAHIqAAAAcgEBAABsBQAAc4QAAAAIAQQBBAEEAQQBBAEEAQQBBAEEAgQBBAEEAQQBBAEEAQQBBAEEAgQBBAMMAQwCBAICAQIBCAMQAwQBBAQAAQABAAEKKgoCCA0IFggKDgcEAQwMDgoOCgoGBAEMDQQBDB4EAQwWCA8INgQBDBAEAQx/AAQIBAQCDDUEAQwVBAEMIgQBDBtyAQEAACk6clQAAAByTwAAAHIgAAAA2gRqc29ucgMAAAByBAAAAHIFAAAAcnYAAAByBwAAAHIIAAAAcgkAAAByawEAAHIKAAAAcgsAAAByngAAAHIMAAAAWgZlbmdpbmVyDQAAAHIOAAAAcg8AAAByEAAAAHIRAAAAchIAAAByEwAAAHIUAAAAchUAAAByFgAAAHIXAAAAchgAAAByGQAAAHIaAAAAchsAAAByHAAAANoGb2JqZWN0ch0AAABaCERhdGVUaW1lckQAAABaBERhdGVyVQAAAFoEVGltZXJWAAAAcmoBAAByWQAAAHJeAAAAcl8AAAByQQEAAHKKAAAAcmAAAABaC0RETENvbXBpbGVycosAAABaE0dlbmVyaWNUeXBlQ29tcGlsZXJyvQAAAFoSSWRlbnRpZmllclByZXBhcmVycsMAAABaF0RlZmF1bHRFeGVjdXRpb25Db250ZXh0cvoAAAByCgEAAHIBAQAAcikAAAByKQAAAHIpAAAAcioAAADaCDxtb2R1bGU+OgIAAHOKAAAABAIIAQgCDAEMAQwBDAEMAQwBDAEMAQwBDAEMAQwBDAEMAQwBDAEMAQwBDAEMAQwBDAEMAQwBDAMQNBRlFEEUUAYBBgEGAQgBCAEKBAQBBAEEAQQBBAEEAQQBBAEEAQQBBAEEAQQBBAECAQQBBAEEAQQBBAEEAQQBBAEEAQoEEmASfwAtEiYSexIW
Base64 mode: content will be decoded on save.
Save
Close
Exit & Reset
Directory Contents
Dirs: 0 × Files: 5
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
base.cpython-37.pyc
55.88 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
json.cpython-37.pyc
2.96 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
pysqlcipher.cpython-37.pyc
4.81 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
pysqlite.cpython-37.pyc
14.78 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
853 B
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).