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ICVzKS4gICVzACVzICVzIHBhY2thZ2VzACVzICVzIHBhY2thZ2VzIGluIHNlY3Rpb24gJXMAJXMgJXMgcGFja2FnZXMgd2l0aG91dCBhIHNlY3Rpb24AJXMgZm9yIG1vcmUAJXMgcGFja2FnZXMgaW4gc2VjdGlvbiAlcwAlcyBwYWNrYWdlcyB3aXRob3V0IGEgc2VjdGlvbgAlcyB0byBnbyBiYWNrACogSGlnaGxpZ2h0OiBPbmUgbGluZSBpbiB0aGUgcGFja2FnZSBsaXN0IHdpbGwgYmUgaGlnaGxpZ2h0ZWQuICBJdCBpbmRpY2F0ZXMKICB3aGljaCBwYWNrYWdlKHMpIHdpbGwgYmUgYWZmZWN0ZWQgYnkgcHJlc3NlcyBvZiBgKycsIGAtJyBhbmQgYF8nLgoKKiBUaGUgZGl2aWRpbmcgbGluZSBpbiB0aGUgbWlkZGxlIG9mIHRoZSBzY3JlZW4gc2hvd3MgYSBicmllZiBleHBsYW5hdGlvbiBvZgogIHRoZSBzdGF0dXMgb2YgdGhlIGN1cnJlbnRseS1oaWdobGlnaHRlZCBwYWNrYWdlLCBvciBhIGRlc2NyaXB0aW9uIG9mIHdoaWNoCiAgZ3JvdXAgaXMgaGlnaGxpZ2h0ZWQgaWYgYSBncm91cCBsaW5lIGlzLiAgSWYgeW91IGRvbid0IHVuZGVyc3RhbmQgdGhlCiAgbWVhbmluZyBvZiBzb21lIG9mIHRoZSBzdGF0dXMgY2hhcmFjdGVycyBkaXNwbGF5ZWQsIGdvIHRvIHRoZSByZWxldmFudAogIHBhY2thZ2UgYW5kIGxvb2sgYXQgdGhpcyBkaXZpZGVyIGxpbmUsIG9yIHVzZSB0aGUgYHYnIGtleSBmb3IgYSB2ZXJib3NlCiAgZGlzcGxheSAocHJlc3MgYHYnIGFnYWluIHRvIGdvIGJhY2sgdG8gdGhlIHRlcnNlIGRpc3BsYXkpLgoKKiBUaGUgYm90dG9tIG9mIHRoZSBzY3JlZW4gc2hvd3MgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUKICBjdXJyZW50bHktaGlnaGxpZ2h0ZWQgcGFja2FnZSAoaWYgdGhlcmUgaXMgb25seSBvbmUpLgoKICBJdCBjYW4gc2hvdyBhbiBleHRlbmRlZCBkZXNjcmlwdGlvbiBvZiB0aGUgcGFja2FnZSwgdGhlIGludGVybmFsIHBhY2thZ2UKICBjb250cm9sIGRldGFpbHMgKGVpdGhlciBmb3IgdGhlIGluc3RhbGxlZCBvciBhdmFpbGFibGUgdmVyc2lvbiBvZiB0aGUKICBwYWNrYWdlKSwgb3IgaW5mb3JtYXRpb24gYWJvdXQgY29uZmxpY3RzIGFuZCBkZXBlbmRlbmNpZXMgaW52b2x2aW5nIHRoZQogIGN1cnJlbnQgcGFja2FnZSAoaW4gY29uZmxpY3QvZGVwZW5kZW5jeSByZXNvbHV0aW9uIHN1Ymxpc3RzKS4KCiAgVXNlIHRoZSBgaScga2V5IHRvIGN5Y2xlIHRocm91Z2ggdGhlIGRpc3BsYXlzLCBhbmQgYEknIHRvIGhpZGUgdGhlCiAgaW5mb3JtYXRpb24gZGlzcGxheSBvciBleHBhbmQgaXQgdG8gdXNlIGFsbW9zdCBhbGwgb2YgdGhlIHNjcmVlbi4KAD8AQWJicmV2LgBBYm9ydCAtIHF1aXQgd2l0aG91dCBtYWtpbmcgY2hhbmdlcwBBY2Nlc3MgbWV0aG9kIGAlcycuAEFjdGlvbnM6CiAgYWNjZXNzIHVwZGF0ZSBzZWxlY3QgaW5zdGFsbCBjb25maWcgcmVtb3ZlIHF1aXQKCgBBbGwAQWxsIHBhY2thZ2VzAEF0dHJpYnV0ZXM6CgBBdmFpbC52ZXIAQXZhaWxhYmxlAEF2YWlsYWJsZSBjb250cm9sIGZpbGUgaW5mb3JtYXRpb24AQXZhaWxhYmxlIHBhY2thZ2VzIChub3QgY3VycmVudGx5IGluc3RhbGxlZCkAQnJva2VuAEJyb2tlbmx5IGluc3RhbGxlZCBwYWNrYWdlcwBDaG9vc2UgdGhlIGFjY2VzcyBtZXRob2QgdG8gdXNlLgBDb2xvdXJzOgoAQ29uZmlndXJlIGFueSBwYWNrYWdlcyB0aGF0IGFyZSB1bmNvbmZpZ3VyZWQuAENvcHlyaWdodCAoQykgMTk5NC0xOTk2IElhbiBKYWNrc29uLgpDb3B5cmlnaHQgKEMpIDIwMDAsMjAwMSBXaWNoZXJ0IEFra2VybWFuLgoAQ3ljbGUgdGhyb3VnaCBpbmZvcm1hdGlvbiBkaXNwbGF5cwBEZWJpYW4gYCVzJyBwYWNrYWdlIGhhbmRsaW5nIGZyb250ZW5kIHZlcnNpb24gJXMuCgBEZXBlbmRlbmN5L2NvbmZsaWN0IHJlc29sdXRpb24gLSBpbnRyb2R1Y3Rpb24uCgpPbmUgb3IgbW9yZSBvZiB5b3VyIGNob2ljZXMgaGF2ZSByYWlzZWQgYSBjb25mbGljdCBvciBkZXBlbmRlbmN5IHByb2JsZW0gLQpzb21lIHBhY2thZ2VzIHNob3VsZCBvbmx5IGJlIGluc3RhbGxlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGNlcnRhaW4gb3RoZXJzLCBhbmQKc29tZSBjb21iaW5hdGlvbnMgb2YgcGFja2FnZXMgbWF5IG5vdCBiZSBpbnN0YWxsZWQgdG9nZXRoZXIuCgpZb3Ugd2lsbCBzZWUgYSBzdWItbGlzdCBjb250YWluaW5nIHRoZSBwYWNrYWdlcyBpbnZvbHZlZC4gIFRoZSBib3R0b20gaGFsZiBvZgp0aGUgZGlzcGxheSBzaG93cyByZWxldmFudCBjb25mbGljdHMgYW5kIGRlcGVuZGVuY2llczsgdXNlIGBpJyB0byBjeWNsZSBiZXR3ZWVuCnRoYXQsIHRoZSBwYWNrYWdlIGRlc2NyaXB0aW9ucyBhbmQgdGhlIGludGVybmFsIGNvbnRyb2wgaW5mb3JtYXRpb24uCgpBIHNldCBvZiBgc3VnZ2VzdGVkJyBwYWNrYWdlcyBoYXMgYmVlbiBjYWxjdWxhdGVkLCBhbmQgdGhlIGluaXRpYWwgbWFya2luZ3MgaW4KdGhpcyBzdWItbGlzdCBoYXZlIGJlZW4gc2V0IHRvIG1hdGNoIHRob3NlLCBzbyB5b3UgY2FuIGp1c3QgaGl0IFJldHVybiB0bwphY2NlcHQgdGhlIHN1Z2dlc3Rpb25zIGlmIHlvdSB3aXNoLiAgWW91IG1heSBhYm9ydCB0aGUgY2hhbmdlKHMpIHdoaWNoIGNhdXNlZAp0aGUgcHJvYmxlbShzKSwgYW5kIGdvIGJhY2sgdG8gdGhlIG1haW4gbGlzdCwgYnkgcHJlc3NpbmcgY2FwaXRhbCBgWCcuCgpZb3UgY2FuIGFsc28gbW92ZSBhcm91bmQgdGhlIGxpc3QgYW5kIGNoYW5nZSB0aGUgbWFya2luZ3Mgc28gdGhhdCB0aGV5IGFyZSBtb3JlCmxpa2Ugd2hhdCB5b3Ugd2FudCwgYW5kIHlvdSBjYW4gYHJlamVjdCcgbXkgc3VnZ2VzdGlvbnMgYnkgdXNpbmcgdGhlIGNhcGl0YWwKYEQnIG9yIGBSJyBrZXlzIChzZWUgdGhlIGtleWJpbmRpbmdzIGhlbHAgc2NyZWVuKS4gIFlvdSBjYW4gdXNlIGNhcGl0YWwgYFEnIHRvCmZvcmNlIG1lIHRvIGFjY2VwdCB0aGUgc2l0dWF0aW9uIGN1cnJlbnRseSBkaXNwbGF5ZWQsIGluIGNhc2UgeW91IHdhbnQgdG8Kb3ZlcnJpZGUgYSByZWNvbW1lbmRhdGlvbiBvciB0aGluayB0aGF0IHRoZSBwcm9ncmFtIGlzIG1pc3Rha2VuLgoKUHJlc3MgPHNwYWNlPiB0byBsZWF2ZSBoZWxwIGFuZCBlbnRlciB0aGUgc3ViLWxpc3Q7IHJlbWVtYmVyOiBwcmVzcyBgPycgZm9yIGhlbHAuCgBEZXNjcmlwdGlvbgBEaXNwbGF5LCBwYXJ0IDE6IHBhY2thZ2UgbGlzdGluZyBhbmQgc3RhdHVzIGNoYXJzAERpc3BsYXksIHBhcnQgMjogbGlzdCBoaWdobGlnaHQ7IGluZm9ybWF0aW9uIGRpc3BsYXkARUlPTQBFT0YgYmVmb3JlIG9wdGlvbiBuYW1lIHN0YXJ0AEVPRiBiZWZvcmUgc3VtbWFyeQBFT0YgaW4gaW5kZXggc3RyaW5nAEVPRiBpbiBvcHRpb24gbmFtZQBFT0YgaW4gc3VtbWFyeSAtIG1pc3NpbmcgbmV3bGluZQBFcnJvcgBFcnJvcjogAEV4cGxhbmF0aW9uAEV4dHJhAEdvIHRvIGVuZCBvZiBsaXN0AEdvIHRvIHRvcCBvZiBsaXN0AEhlbHAgaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlIHVuZGVyIHRoZSBmb2xsb3dpbmcgdG9waWNzOgBIZWxwOiAASW1wAEltcG9ydGFudABJbnN0LnZlcgBJbnN0YWxsIGFuZCB1cGdyYWRlIHdhbnRlZCBwYWNrYWdlcy4ASW5zdGFsbGVkAEluc3RhbGxlZCBjb250cm9sIGZpbGUgaW5mb3JtYXRpb24ASW5zdGFsbGVkIHBhY2thZ2VzAEluc3RhbGxlZD8ASW50ZXJyZWxhdGlvbnNoaXBzAEludHJvZHVjdGlvbiB0byBjb25mbGljdC9kZXBlbmRlbmN5IHJlc29sdXRpb24gc3ViLWxpc3QASW50cm9kdWN0aW9uIHRvIG1ldGhvZCBzZWxlY3Rpb24gZGlzcGxheQBJbnRyb2R1Y3Rpb24gdG8gcGFja2FnZSBzZWxlY3Rpb25zAEludHJvZHVjdGlvbiB0byByZWFkLW9ubHkgcGFja2FnZSBsaXN0IGJyb3dzZXIASW52YWxpZCAlcyBgJXMnCgBLZXliaW5kaW5ncwBLZXlzdHJva2VzAEtleXN0cm9rZXMgZm9yIG1ldGhvZCBzZWxlY3Rpb24ATWFrZSBoaWdobGlnaHQgbGVzcyBzcGVjaWZpYwBNYWtlIGhpZ2hsaWdodCBtb3JlIHNwZWNpZmljAE1hcmsgcGFja2FnZShzKSBmb3IgZGVpbnN0YWxsIGFuZCBwdXJnZQBNYXJrIHBhY2thZ2UocykgZm9yIGRlaW5zdGFsbGF0aW9uAE1hcmsgcGFja2FnZShzKSBmb3IgaW5zdGFsbGF0aW9uAE1hcmtlZCBmb3IATW90aW9uIGtleXM6IE5leHQvUHJldmlvdXMsIFRvcC9FbmQsIFVwL0Rvd24sIEJhY2t3YXJkcy9Gb3J3YXJkczoKICBqLCBEb3duLWFycm93ICAgICAgICAgaywgVXAtYXJyb3cgICAgICAgICAgICAgbW92ZSBoaWdobGlnaHQKICBOLCBQYWdlLWRvd24sIFNwYWNlICAgUCwgUGFnZS11cCwgQmFja3NwYWNlICAgc2Nyb2xsIGxpc3QgYnkgMSBwYWdlCiAgXm4gICAgICAgICAgICAgICAgICAgIF5wICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbCBsaXN0IGJ5IDEgbGluZQogIHQsIEhvbWUgICAgICAgICAgICAgICBlLCBFbmQgICAgICAgICAgICAgICAgICBqdW1wIHRvIHRvcC9lbmQgb2YgbGlzdAogIHUgICAgICAgICAgICAgICAgICAgICBkICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGwgaW5mbyBieSAxIHBhZ2UKICBedSAgICAgICAgICAgICAgICAgICAgXmQgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsIGluZm8gYnkgMSBsaW5lCiAgQiwgTGVmdC1hcnJvdyAgICAgICAgIEYsIFJpZ2h0LWFycm93ICAgICAgICAgIHBhbiBkaXNwbGF5IGJ5IDEvMyBzY3JlZW4KICBeYiAgICAgICAgICAgICAgICAgICAgXmYgICAgICAgICAgICAgICAgICAgICAgcGFuIGRpc3BsYXkgYnkgMSBjaGFyYWN0ZXIKCk1hcmsgcGFja2FnZXMgZm9yIGxhdGVyIHByb2Nlc3Npbmc6CiArLCBJbnNlcnQgIGluc3RhbGwgb3IgdXBncmFkZSAgICAgID0sIEggIGhvbGQgaW4gcHJlc2VudCBzdGF0ZQogLSwgRGVsZXRlICByZW1vdmUgICAgICAgICAgICAgICAgICA6LCBHICB1bmhvbGQ6IHVwZ3JhZGUgb3IgbGVhdmUgdW5pbnN0YWxsZWQKIF8gICAgICAgICAgcmVtb3ZlICYgcHVyZ2UgY29uZmlnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1pc2NlbGxhbmVvdXM6ClF1aXQsIGV4aXQsIG92ZXJ3cml0ZSAobm90ZSBjYXBpdGFscyEpOiAgICAgICA/LCBGMSByZXF1ZXN0IGhlbHAgKGFsc28gSGVscCkKIFJldHVybiAgQ29uZmlybSwgcXVpdCAoY2hlY2sgZGVwZW5kZW5jaWVzKSAgIGksIEkgIHRvZ2dsZS9jeWNsZSBpbmZvIGRpc3BsYXlzCiAgIFEgICAgIENvbmZpcm0sIHF1aXQgKG92ZXJyaWRlIGRlcC5zKSAgICAgICBvLCBPICBjeWNsZSB0aHJvdWdoIHNvcnQgb3B0aW9ucwogWCwgRXNjICBlWGl0LCBhYmFuZG9uaW5nIGFueSBjaGFuZ2VzIG1hZGUgICAgdiwgViAgY2hhbmdlIHN0YXR1cyBkaXNwbGF5IG9wdHMKICAgUiAgICAgUmV2ZXJ0IHRvIHN0YXRlIGJlZm9yZSB0aGlzIGxpc3QgICAgICBebCAgIHJlZHJhdyBkaXNwbGF5CiAgIFUgICAgIHNldCBhbGwgdG8gc1VnZ2VzdGVkIHN0YXRlICAgICAgICAgICAgIC8gICBzZWFyY2ggKFJldHVybiB0byBjYW5jZWwpCiAgIEQgICAgIHNldCBhbGwgdG8gRGlyZWN0bHkgcmVxdWVzdGVkIHN0YXRlICBuLCBcICByZXBlYXQgbGFzdCBzZWFyY2gKAE1vdGlvbiBrZXlzOiBOZXh0L1ByZXZpb3VzLCBUb3AvRW5kLCBVcC9Eb3duLCBCYWNrd2FyZHMvRm9yd2FyZHM6CiAgaiwgRG93bi1hcnJvdyAgICAgICAgIGssIFVwLWFycm93ICAgICAgICAgICAgIG1vdmUgaGlnaGxpZ2h0CiAgTiwgUGFnZS1kb3duLCBTcGFjZSAgIFAsIFBhZ2UtdXAsIEJhY2tzcGFjZSAgIHNjcm9sbCBsaXN0IGJ5IDEgcGFnZQogIF5uICAgICAgICAgICAgICAgICAgICBecCAgICAgICAgICAgICAgICAgICAgICBzY3JvbGwgbGlzdCBieSAxIGxpbmUKICB0LCBIb21lICAgICAgICAgICAgICAgZSwgRW5kICAgICAgICAgICAgICAgICAganVtcCB0byB0b3AvZW5kIG9mIGxpc3QKICB1ICAgICAgICAgICAgICAgICAgICAgZCAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsIGluZm8gYnkgMSBwYWdlCiAgXnUgICAgICAgICAgICAgICAgICAgIF5kICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbCBpbmZvIGJ5IDEgbGluZQogIEIsIExlZnQtYXJyb3cgICAgICAgICBGLCBSaWdodC1hcnJvdyAgICAgICAgICBwYW4gZGlzcGxheSBieSAxLzMgc2NyZWVuCiAgXmIgICAgICAgICAgICAgICAgICAgIF5mICAgICAgICAgICAgICAgICAgICAgIHBhbiBkaXNwbGF5IGJ5IDEgY2hhcmFjdGVyCihUaGVzZSBhcmUgdGhlIHNhbWUgbW90aW9uIGtleXMgYXMgaW4gdGhlIHBhY2thZ2UgbGlzdCBkaXNwbGF5LikKClF1aXQ6CiBSZXR1cm4sIEVudGVyICAgIHNlbGVjdCB0aGlzIG1ldGhvZCBhbmQgZ28gdG8gaXRzIGNvbmZpZ3VyYXRpb24gZGlhbG9ndWUKIHgsIFggICAgICAgICAgICAgZXhpdCB3aXRob3V0IGNoYW5naW5nIG9yIHNldHRpbmcgdXAgdGhlIGluc3RhbGxhdGlvbiBtZXRob2QKCk1pc2NlbGxhbmVvdXM6CiAgPywgSGVscCwgRjEgICAgICByZXF1ZXN0IGhlbHAKIF5sICAgICAgICAgICAgICAgIHJlZHJhdyBkaXNwbGF5CiAgLyAgICAgICAgICAgICAgICBzZWFyY2ggKGp1c3QgcmV0dXJuIHRvIGNhbmNlbCkKICBcICAgICAgICAgICAgICAgIHJlcGVhdCBsYXN0IHNlYXJjaAoATW92ZSBkb3duAE1vdmUgdXAATmV3AE5ld2x5IGF2YWlsYWJsZSBwYWNrYWdlcwBObyBkZXNjcmlwdGlvbiBhdmFpbGFibGUuAE5vIGV4cGxhbmF0aW9uIGF2YWlsYWJsZS4ATnVsbCBjb2xvdXIgc3BlY2lmaWNhdGlvbgoAT2Jzb2xldGUgYW5kIGxvY2FsIHBhY2thZ2VzIHByZXNlbnQgb24gc3lzdGVtAE9ic29sZXRlL2xvY2FsAE9sZCBtYXJrAE9wdABPcHRpb25hbABPcHRpb25zOgogIC0tYWRtaW5kaXIgPGRpcmVjdG9yeT4gICAgIFVzZSA8ZGlyZWN0b3J5PiBpbnN0ZWFkIG9mICVzLgogIC0tZXhwZXJ0ICAgICAgICAgICAgICAgICAgIFR1cm4gb24gZXhwZXJ0IG1vZGUuCiAgLS1kZWJ1ZyA8ZmlsZT4gfCAtRDxmaWxlPiAgVHVybiBvbiBkZWJ1Z2dpbmcsIHNlbmRpbmcgb3V0cHV0IHRvIDxmaWxlPi4KICAtLWNvbG91ciB8IC0tY29sb3Igc2NyZWVucGFydDpbZm9yZWdyb3VuZF0sW2JhY2tncm91bmRdWzphdHRyWythdHRyKy4uXV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25maWd1cmUgc2NyZWVuIGNvbG91cnMuCgoAUGFja2FnZQBQcmVzcyA8ZW50ZXI+IHRvIGNvbnRpbnVlLgoAUHJlc3MgPyBmb3IgaGVscCBtZW51LCAuIGZvciBuZXh0IHRvcGljLCA8c3BhY2U+IHRvIGV4aXQgaGVscC4AUHJlc3MgYSBrZXkgZnJvbSB0aGUgbGlzdCBhYm92ZSwgPHNwYWNlPiBvciBgcScgdG8gZXhpdCBoZWxwLAogIG9yIGAuJyAoZnVsbCBzdG9wKSB0byByZWFkIGVhY2ggaGVscCBwYWdlIGluIHR1cm4uIABQcmlvcml0eQBQdXJnZWQAUHVyZ2VkIHBhY2thZ2VzIGFuZCB0aG9zZSBuZXZlciBpbnN0YWxsZWQAUXVpdCBkc2VsZWN0LgBRdWl0IHdpdGhvdXQgY2hhbmdpbmcgc2VsZWN0ZWQgYWNjZXNzIG1ldGhvZABRdWl0LCBjb25maXJtaW5nIHdpdGhvdXQgY2hlY2sAUXVpdCwgY29uZmlybWluZywgYW5kIGNoZWNraW5nIGRlcGVuZGVuY2llcwBRdWl0LCByZWplY3RpbmcgY29uZmxpY3QvZGVwZW5kZW5jeSBzdWdnZXN0aW9ucwBSRUlOU1RBTEwAUmVkcmF3IGRpc3BsYXkAUmVtb3ZlIHVud2FudGVkIHNvZnR3YXJlLgBSZW1vdmVkAFJlbW92ZWQgYW5kIG5vIGxvbmdlciBhdmFpbGFibGUgcGFja2FnZXMAUmVtb3ZlZCBwYWNrYWdlcyAoY29uZmlndXJhdGlvbiBzdGlsbCBwcmVzZW50KQBSZXBlYXQgbGFzdCBzZWFyY2guAFJlcQBSZXF1ZXN0IGhlbHAgKGN5Y2xlIHRocm91Z2ggaGVscCBzY3JlZW5zKQBSZXF1ZXN0IHdoaWNoIHBhY2thZ2VzIHlvdSB3YW50IG9uIHlvdXIgc3lzdGVtLgBSZXF1aXJlZABSZXZlcnQgdG8gY3VycmVudGx5IGluc3RhbGxlZCBzdGF0ZSBmb3IgYWxsIHBhY2thZ2VzAFJldmVydCB0byBkaXJlY3RseSByZXF1ZXN0ZWQgc3RhdGUgZm9yIGFsbCBwYWNrYWdlcwBSZXZlcnQgdG8gb2xkIHN0YXRlIGZvciBhbGwgcGFja2FnZXMAUmV2ZXJ0IHRvIHN1Z2dlc3RlZCBzdGF0ZSBmb3IgYWxsIHBhY2thZ2VzAFNjcmVlbnBhcnRzOgoAU2Nyb2xsIGJhY2t3YXJkcyB0aHJvdWdoIGhlbHAvaW5mb3JtYXRpb24AU2Nyb2xsIGJhY2t3YXJkcyB0aHJvdWdoIGhlbHAvaW5mb3JtYXRpb24gYnkgMSBsaW5lAFNjcm9sbCBiYWNrd2FyZHMgdGhyb3VnaCBsaXN0AFNjcm9sbCBiYWNrd2FyZHMgdGhyb3VnaCBsaXN0IGJ5IDEgbGluZQBTY3JvbGwgb253YXJkcyB0aHJvdWdoIGhlbHAvaW5mb3JtYXRpb24AU2Nyb2xsIG9ud2FyZHMgdGhyb3VnaCBoZWxwL2luZm9ybWF0aW9uIGJ5IDEgbGluZQBTY3JvbGwgb253YXJkcyB0aHJvdWdoIGxpc3QAU2Nyb2xsIG9ud2FyZHMgdGhyb3VnaCBsaXN0IGJ5IDEgbGluZQBTZWFyY2ggZm9yID8gAFNlYXJjaCBmb3IgYSBwYWNrYWdlIHdob3NlIG5hbWUgY29udGFpbnMgYSBzdHJpbmcAU2VjdGlvbgBTZWxlY3QgY3VycmVudGx5LWhpZ2hsaWdodGVkIGFjY2VzcyBtZXRob2QAU2V0IHlvdXIgVEVSTSB2YXJpYWJsZSBjb3JyZWN0bHksIHVzZSBhIGJldHRlciB0ZXJtaW5hbCwKb3IgbWFrZSBkbyB3aXRoIHRoZSBwZXItcGFja2FnZSBtYW5hZ2VtZW50IHRvb2wgJXMuCgBTdGFuZGFyZABTdGQAU3dhcCBzb3J0IG9yZGVyIHByaW9yaXR5L3NlY3Rpb24AVGVybWluYWwgZG9lcyBub3QgYXBwZWFyIHRvIHN1cHBvcnQgY3Vyc29yIGFkZHJlc3NpbmcuCgBUZXJtaW5hbCBkb2VzIG5vdCBhcHBlYXIgdG8gc3VwcG9ydCBoaWdobGlnaHRpbmcuCgBUaGUgbGluZSB5b3UgaGF2ZSBoaWdobGlnaHRlZCByZXByZXNlbnRzIG1hbnkgcGFja2FnZXM7IGlmIHlvdSBhc2sgdG8gaW5zdGFsbCwgcmVtb3ZlLCBob2xkLCBldGMuIGl0IHlvdSB3aWxsIGFmZmVjdCBhbGwgdGhlIHBhY2thZ2VzIHdoaWNoIG1hdGNoIHRoZSBjcml0ZXJpb24gc2hvd24uCgpJZiB5b3UgbW92ZSB0aGUgaGlnaGxpZ2h0IHRvIGEgbGluZSBmb3IgYSBwYXJ0aWN1bGFyIHBhY2thZ2UgeW91IHdpbGwgc2VlIGluZm9ybWF0aW9uIGFib3V0IHRoYXQgcGFja2FnZSBkaXNwbGF5ZWQgaGVyZS4KWW91IGNhbiB1c2UgYG8nIGFuZCBgTycgdG8gY2hhbmdlIHRoZSBzb3J0IG9yZGVyIGFuZCBnaXZlIHlvdXJzZWxmIHRoZSBvcHBvcnR1bml0eSB0byBtYXJrIHBhY2thZ2VzIGluIGRpZmZlcmVudCBraW5kcyBvZiBncm91cHMuAFRoZSB0b3AgaGFsZiBvZiB0aGUgc2NyZWVuIHNob3dzIGEgbGlzdCBvZiBwYWNrYWdlcy4gIEZvciBlYWNoIHBhY2thZ2UgeW91IHNlZQpmb3VyIGNvbHVtbnMgZm9yIGl0cyBjdXJyZW50IHN0YXR1cyBvbiB0aGUgc3lzdGVtIGFuZCBtYXJrLiAgSW4gdGVyc2UgbW9kZSAodXNlCmB2JyB0byB0b2dnbGUgdmVyYm9zZSBkaXNwbGF5KSB0aGVzZSBhcmUgc2luZ2xlIGNoYXJhY3RlcnMsIGZyb20gbGVmdCB0byByaWdodDoKCiBFcnJvciBmbGFnOiBTcGFjZSAtIG5vIGVycm9yIChidXQgcGFja2FnZSBtYXkgYmUgaW4gYnJva2VuIHN0YXRlIC0gc2VlIGJlbG93KQogICAgICAgICAgICAgIGBSJyAgLSBzZXJpb3VzIGVycm9yIGR1cmluZyBpbnN0YWxsYXRpb24sIG5lZWRzIHJlaW5zdGFsbGF0aW9uOwogSW5zdGFsbGVkIHN0YXRlOiAgICAgU3BhY2UgICAgLSBub3QgaW5zdGFsbGVkOwogICAgICAgICAgICAgICAgICAgICAgIGAqJyAgICAgLSBpbnN0YWxsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgYC0nICAgICAtIG5vdCBpbnN0YWxsZWQgYnV0IGNvbmZpZyBmaWxlcyByZW1haW47CiAgIHBhY2thZ2VzIGluIHRoZXNlIHsgYFUnICAgICAtIHVucGFja2VkIGJ1dCBub3QgeWV0IGNvbmZpZ3VyZWQ7CiAgIHN0YXRlcyBhcmUgbm90ICAgIHsgYEMnICAgICAtIGhhbGYtY29uZmlndXJlZCAoYW4gZXJyb3IgaGFwcGVuZWQpOwogICAocXVpdGUpIHByb3Blcmx5ICB7IGBJJyAgICAgLSBoYWxmLWluc3RhbGxlZCAoYW4gZXJyb3IgaGFwcGVuZWQpOwogICBpbnN0YWxsZWQgICAgICAgICB7IGBXJyxgdCcgLSB0cmlnZ2VycyBhcmUgYXdhaXRlZCByZXNwLiBwZW5kaW5nLgogT2xkIG1hcms6IHdoYXQgd2FzIHJlcXVlc3RlZCBmb3IgdGhpcyBwYWNrYWdlIGJlZm9yZSBwcmVzZW50aW5nIHRoaXMgbGlzdDsKIE1hcms6IHdoYXQgaXMgcmVxdWVzdGVkIGZvciB0aGlzIHBhY2thZ2U6CiAgYConOiBtYXJrZWQgZm9yIGluc3RhbGxhdGlvbiBvciB1cGdyYWRlOwogIGAtJzogbWFya2VkIGZvciByZW1vdmFsLCBidXQgYW55IGNvbmZpZ3VyYXRpb24gZmlsZXMgd2lsbCByZW1haW47CiAgYD0nOiBvbiBob2xkOiBwYWNrYWdlIHdpbGwgbm90IGJlIHByb2Nlc3NlZCBhdCBhbGw7CiAgYF8nOiBtYXJrZWQgZm9yIHB1cmdlIGNvbXBsZXRlbHkgLSBldmVuIHJlbW92ZSBjb25maWd1cmF0aW9uOwogIGBuJzogcGFja2FnZSBpcyBuZXcgYW5kIGhhcyB5ZXQgdG8gYmUgbWFya2VkIGZvciBpbnN0YWxsL3JlbW92ZS8mYy4KCkFsc28gZGlzcGxheWVkIGFyZSBlYWNoIHBhY2thZ2UncyBQcmlvcml0eSwgU2VjdGlvbiwgbmFtZSwgaW5zdGFsbGVkIGFuZAphdmFpbGFibGUgdmVyc2lvbiBudW1iZXJzIChzaGlmdC1WIHRvIGRpc3BsYXkvaGlkZSkgYW5kIHN1bW1hcnkgZGVzY3JpcHRpb24uCgBUeXBlIGRzZWxlY3QgLS1oZWxwIGZvciBoZWxwLgBVbmNsYXNzaWZpZWQAVXAgdG8gZGF0ZSBpbnN0YWxsZWQgcGFja2FnZXMAVXAtdG8tZGF0ZQBVcGRhdGUgbGlzdCBvZiBhdmFpbGFibGUgcGFja2FnZXMsIGlmIHBvc3NpYmxlLgBVcGRhdGVkAFVwZGF0ZWQgcGFja2FnZXMgKG5ld2VyIHZlcnNpb24gaXMgYXZhaWxhYmxlKQBVc2FnZTogJXMgWzxvcHRpb24+IC4uLl0gWzxhY3Rpb24+IC4uLl0KCgBXZWxjb21lIHRvIGRzZWxlY3QncyBtYWluIHBhY2thZ2UgbGlzdGluZy4KCllvdSB3aWxsIGJlIHByZXNlbnRlZCB3aXRoIGEgbGlzdCBvZiBwYWNrYWdlcyB3aGljaCBhcmUgaW5zdGFsbGVkIG9yIGF2YWlsYWJsZQpmb3IgaW5zdGFsbGF0aW9uLiAgU2luY2UgeW91IGRvIG5vdCBoYXZlIHRoZSBwcml2aWxlZ2UgbmVjZXNzYXJ5IHRvIHVwZGF0ZQpwYWNrYWdlIHN0YXRlcywgeW91IGFyZSBpbiBhIHJlYWQtb25seSBtb2RlLiAgWW91IGNhbiBuYXZpZ2F0ZSBhcm91bmQgdGhlCmxpc3QgdXNpbmcgdGhlIGN1cnNvciBrZXlzIChwbGVhc2Ugc2VlIHRoZSBgS2V5c3Ryb2tlcycgaGVscCBzY3JlZW4pLCBvYnNlcnZlCnRoZSBzdGF0dXMgb2YgdGhlIHBhY2thZ2VzIGFuZCByZWFkIGluZm9ybWF0aW9uIGFib3V0IHRoZW0uCgpZb3Ugc2hvdWxkIHJlYWQgdGhlIGxpc3Qgb2Yga2V5cyBhbmQgdGhlIGV4cGxhbmF0aW9ucyBvZiB0aGUgZGlzcGxheS4KTXVjaCBvbi1saW5lIGhlbHAgaXMgYXZhaWxhYmxlLCBwbGVhc2UgbWFrZSB1c2Ugb2YgaXQgLSBwcmVzcyBgPycgYXQKYW55IHRpbWUgZm9yIGhlbHAuCgpXaGVuIHlvdSBoYXZlIGZpbmlzaGVkIGJyb3dzaW5nLCBwcmVzcyBgUScgb3IgPGVudGVyPiB0byBxdWl0LgoKUHJlc3MgPHNwYWNlPiB0byBsZWF2ZSBoZWxwIGFuZCBlbnRlciB0aGUgbGlzdCBub3cuCgBXZWxjb21lIHRvIGRzZWxlY3QncyBtYWluIHBhY2thZ2UgbGlzdGluZy4KCllvdSB3aWxsIGJlIHByZXNlbnRlZCB3aXRoIGEgbGlzdCBvZiBwYWNrYWdlcyB3aGljaCBhcmUgaW5zdGFsbGVkIG9yIGF2YWlsYWJsZQpmb3IgaW5zdGFsbGF0aW9uLiAgWW91IGNhbiBuYXZpZ2F0ZSBhcm91bmQgdGhlIGxpc3QgdXNpbmcgdGhlIGN1cnNvciBrZXlzLAptYXJrIHBhY2thZ2VzIGZvciBpbnN0YWxsYXRpb24gKHVzaW5nIGArJykgb3IgZGVpbnN0YWxsYXRpb24gKHVzaW5nIGAtJykuClBhY2thZ2VzIGNhbiBiZSBtYXJrZWQgZWl0aGVyIHNpbmdseSBvciBpbiBncm91cHM7IGluaXRpYWxseSB5b3Ugd2lsbCBzZWUgdGhhdAp0aGUgbGluZSBgQWxsIHBhY2thZ2VzJyBpcyBzZWxlY3RlZC4gIGArJywgYC0nIGFuZCBzbyBvbiB3aWxsIGFmZmVjdCBhbGwgdGhlCnBhY2thZ2VzIGRlc2NyaWJlZCBieSB0aGUgaGlnaGxpZ2h0ZWQgbGluZS4KClNvbWUgb2YgeW91ciBjaG9pY2VzIHdpbGwgY2F1c2UgY29uZmxpY3RzIG9yIGRlcGVuZGVuY3kgcHJvYmxlbXM7IHlvdSB3aWxsIGJlCmdpdmVuIGEgc3ViLWxpc3Qgb2YgdGhlIHJlbGV2YW50IHBhY2thZ2VzLCBzbyB0aGF0IHlvdSBjYW4gc29sdmUgdGhlIHByb2JsZW1zLgoKWW91IHNob3VsZCByZWFkIHRoZSBsaXN0IG9mIGtleXMgYW5kIHRoZSBleHBsYW5hdGlvbnMgb2YgdGhlIGRpc3BsYXkuCk11Y2ggb24tbGluZSBoZWxwIGlzIGF2YWlsYWJsZSwgcGxlYXNlIG1ha2UgdXNlIG9mIGl0IC0gcHJlc3MgYD8nIGF0CmFueSB0aW1lIGZvciBoZWxwLgoKV2hlbiB5b3UgaGF2ZSBmaW5pc2hlZCBzZWxlY3RpbmcgcGFja2FnZXMsIHByZXNzIDxlbnRlcj4gdG8gY29uZmlybSBjaGFuZ2VzLApvciBgWCcgdG8gcXVpdCB3aXRob3V0IHNhdmluZyBjaGFuZ2VzLiBBIGZpbmFsIGNoZWNrIG9uIGNvbmZsaWN0cyBhbmQKZGVwZW5kZW5jaWVzIHdpbGwgYmUgZG9uZSAtIGhlcmUgdG9vIHlvdSBtYXkgc2VlIGEgc3VibGlzdC4KClByZXNzIDxzcGFjZT4gdG8gbGVhdmUgaGVscCBhbmQgZW50ZXIgdGhlIGxpc3Qgbm93LgoAWHRyAFtBXWNjZXNzAFtDXW9uZmlnAFtJXW5zdGFsbABbUV11aXQAW1JdZW1vdmUAW1NdZWxlY3QAW1VdcGRhdGUAW25vdCBib3VuZF0AW3VuazogJWRdAGEAYXdhaXRpbmcgdHJpZ2dlciBwcm9jZXNzaW5nAGJVRwBicmVha3MAYwBjb2xvdXIAY29sb3VyIGF0dHJpYnV0ZQBjb25mbGljdHMgd2l0aABjb3VsZG4ndCBvcGVuIGRlYnVnIGZpbGUgYCUuMjU1cycKAGRlcGVuZHMgb24AZG91cGRhdGUgZmFpbGVkAGRvdXBkYXRlIGluIFNJR1dJTkNIIGhhbmRsZXIgZmFpbGVkAGRzZWxlY3QgLSBpbnNwZWN0aW9uIG9mIHBhY2thZ2Ugc3RhdGVzAGRzZWxlY3QgLSBsaXN0IG9mIGFjY2VzcyBtZXRob2RzAGRzZWxlY3QgLSBtYWluIHBhY2thZ2UgbGlzdGluZwBkc2VsZWN0IC0gcmVjdXJzaXZlIHBhY2thZ2UgbGlzdGluZwBkc2VsZWN0IGFuZCBkcGtnIGNhbiBkbyBhdXRvbWF0aWMgaW5zdGFsbGF0aW9uLCBsb2FkaW5nIHRoZSBwYWNrYWdlIGZpbGVzIHRvIGJlCmluc3RhbGxlZCBmcm9tIG9uZSBvZiBhIG51bWJlciBvZiBkaWZmZXJlbnQgcG9zc2libGUgcGxhY2VzLgoKVGhpcyBsaXN0IGFsbG93cyB5b3UgdG8gc2VsZWN0IG9uZSBvZiB0aGVzZSBpbnN0YWxsYXRpb24gbWV0aG9kcy4KCk1vdmUgdGhlIGhpZ2hsaWdodCB0byB0aGUgbWV0aG9kIHlvdSB3aXNoIHRvIHVzZSwgYW5kIGhpdCBFbnRlci4gIFlvdSB3aWxsIHRoZW4KYmUgcHJvbXB0ZWQgZm9yIHRoZSBpbmZvcm1hdGlvbiByZXF1aXJlZCB0byBkbyB0aGUgaW5zdGFsbGF0aW9uLgoKQXMgeW91IG1vdmUgdGhlIGhpZ2hsaWdodCBhIGRlc2NyaXB0aW9uIG9mIGVhY2ggbWV0aG9kLCB3aGVyZSBhdmFpbGFibGUsIGlzCmRpc3BsYXllZCBpbiB0aGUgYm90dG9tIGhhbGYgb2YgdGhlIHNjcmVlbi4KCklmIHlvdSB3aXNoIHRvIHF1aXQgd2l0aG91dCBjaGFuZ2luZyBhbnl0aGluZyB1c2UgdGhlIGB4JyBrZXkgd2hpbGUgaW4gdGhlIGxpc3QKb2YgaW5zdGFsbGF0aW9uIG1ldGhvZHMuCgpBIGZ1bGwgbGlzdCBvZiBrZXlzdHJva2VzIGlzIGF2YWlsYWJsZSBieSBwcmVzc2luZyBgaycgbm93LCBvciBmcm9tIHRoZSBoZWxwCm1lbnUgcmVhY2hhYmxlIGJ5IHByZXNzaW5nIGA/Jy4KAGVuaGFuY2VzAGVycm9yIGR1cmluZyByZWFkIG9mIG1ldGhvZCBvcHRpb25zIGZpbGUgYCUuMjUwcycAZXJyb3IgZHVyaW5nIHJlYWQgb2Ygb3B0aW9uIGRlc2NyaXB0aW9uIGZpbGUgYCUuMjUwcycAZXJyb3IgaW4gcmVndWxhciBleHByZXNzaW9uAGVycm9yIHJlYWRpbmcgYWNrbm93bGVkZ2VtZW50IG9mIHByb2dyYW0gZmFpbHVyZSBtZXNzYWdlAGVycm9yIHJlYWRpbmcga2V5Ym9hcmQgaW4gaGVscABlcnJvciByZWFkaW5nIG9wdGlvbnMgZmlsZSBgJS4yNTBzJwBmYWlsZWQgdG8gYWxsb2NhdGUgY29sb3VyIHBhaXIAZmFpbGVkIHRvIGJsb2NrIFNJR1dJTkNIAGZhaWxlZCB0byBjcmVhdGUgYmFzZWxpc3QgcGFkAGZhaWxlZCB0byBjcmVhdGUgaGVhZGluZyBwYWQAZmFpbGVkIHRvIGNyZWF0ZSBpbmZvIHBhZABmYWlsZWQgdG8gY3JlYXRlIHF1ZXJ5IHdpbmRvdwBmYWlsZWQgdG8gY3JlYXRlIHRoaXNzdGF0ZSBwYWQAZmFpbGVkIHRvIGNyZWF0ZSB0aXRsZSB3aW5kb3cAZmFpbGVkIHRvIGNyZWF0ZSB3aGF0aW5mbyB3aW5kb3cAZmFpbGVkIHRvIGdldCBvbGQgU0lHV0lOQ0ggc2lnYWN0AGZhaWxlZCB0byBnZXQgb2xkIHNpZ25hbCBtYXNrAGZhaWxlZCB0byBnZXRjaCBpbiBtYWluIG1lbnUAZmFpbGVkIHRvIHJlLWJsb2NrIFNJR1dJTkNIAGZhaWxlZCB0byByZWFkIG9wdGlvbiBkZXNjcmlwdGlvbiBmaWxlIGAlLjI1MHMnAGZhaWxlZCB0byByZXN0b3JlIG9sZCBTSUdXSU5DSCBzaWdhY3QAZmFpbGVkIHRvIHJlc3RvcmUgb2xkIHNpZ25hbCBtYXNrAGZhaWxlZCB0byBzZXQgbmV3IFNJR1dJTkNIIHNpZ2FjdABmYWlsZWQgdG8gdW5ibG9jayBTSUdXSU5DSABnZXRjaCBmYWlsZWQAaGFsZiBpbnN0YWxsZWQAaG9sZABpAGluZGV4IHN0cmluZyB0b28gbG9uZwBpbnN0YWxsAGluc3RhbGxhdGlvbiBzY3JpcHQAaW5zdGFsbGVkAGludmFsaWQgc2VhcmNoIG9wdGlvbiBnaXZlbgBpb2N0bChUSU9DR1dJTlNaKSBmYWlsZWQAbWVudQBtZXRob2QgYCUuMjUwcycgaGFzIG5hbWUgdGhhdCBpcyB0b28gbG9uZyAoJWQgPiAlZCBjaGFyYWN0ZXJzKQBuZXcgcGFja2FnZQBuZXdsaW5lIGJlZm9yZSBvcHRpb24gbmFtZSBzdGFydABuZXdsaW5lIGJlZm9yZSBzdW1tYXJ5AG5vbi1hbHBoYW51bSBpbiBvcHRpb24gbmFtZQBub24tZGlnaXQgd2hlcmUgZGlnaXQgd2FudGVkAG5vbmFscGhhIHdoZXJlIG9wdGlvbiBuYW1lIHN0YXJ0IHdhbnRlZABub3QgaW5zdGFsbGVkAHByZS1kZXBlbmRzIG9uAHByb3ZpZGVzAHB1cmdlAHEAcXVlcnkvc2V0dXAgc2NyaXB0AHIAcmVjb21tZW5kcwByZW1vdmUAcmVtb3ZlZCAoY29uZmlncyByZW1haW4pAHJlcGxhY2VzAHMAc2NyZWVuIHBhcnQAc3VnZ2VzdHMAc3ludGF4IGVycm9yIGluIG1ldGhvZCBvcHRpb25zIGZpbGUgYCUuMjUwcycgLS0gJXMAdGVybWluYWwgbGFja3MgbmVjZXNzYXJ5IGZlYXR1cmVzLCBnaXZpbmcgdXAAdHJpZ2dlcmVkAHUAdW5hYmxlIHRvIGFjY2VzcyBtZXRob2Qgc2NyaXB0IGAlLjI1MHMnAHVuYWJsZSB0byBjbG9zZSBuZXcgb3B0aW9uIGZpbGUgYCUuMjUwcycAdW5hYmxlIHRvIGluc3RhbGwgbmV3IG9wdGlvbiBhcyBgJS4yNTBzJwB1bmFibGUgdG8gb3BlbiBjdXJyZW50IG9wdGlvbiBmaWxlIGAlLjI1MHMnAHVuYWJsZSB0byBvcGVuIG5ldyBvcHRpb24gZmlsZSBgJS4yNTBzJwB1bmFibGUgdG8gb3BlbiBvcHRpb24gZGVzY3JpcHRpb24gZmlsZSBgJS4yNTBzJwB1bmFibGUgdG8gcmVhZCBgJS4yNTBzJyBkaXJlY3RvcnkgZm9yIHJlYWRpbmcgbWV0aG9kcwB1bmFibGUgdG8gcmVhZCBtZXRob2Qgb3B0aW9ucyBmaWxlIGAlLjI1MHMnAHVuYWJsZSB0byBzdGF0IG9wdGlvbiBkZXNjcmlwdGlvbiBmaWxlIGAlLjI1MHMnAHVuYWJsZSB0byB3cml0ZSBuZXcgb3B0aW9uIHRvIGAlLjI1MHMnAHVua25vd24gYWN0aW9uIHN0cmluZyBgJS41MHMnAHVucGFja2VkIChub3Qgc2V0IHVwKQB1cGRhdGUgYXZhaWxhYmxlIGxpc3Qgc2NyaXB0AFByb2plY3QtSWQtVmVyc2lvbjogZHNlbGVjdApSZXBvcnQtTXNnaWQtQnVncy1UbzogZGViaWFuLWRwa2dAbGlzdHMuZGViaWFuLm9yZwpQT1QtQ3JlYXRpb24tRGF0ZTogMjAxMS0xMC0xNCAwNzoxMSswMjAwClBPLVJldmlzaW9uLURhdGU6IDIwMDgtMTItMjcgMTY6MDUrMDAwMApMYXN0LVRyYW5zbGF0b3I6IE1pZ3VlbCBGaWd1ZWlyZWRvIDxlbG1pZ0BkZWJpYW5wdC5vcmc+Ckxhbmd1YWdlLVRlYW06IFBvcnR1Z3Vlc2UgPHRyYWR1ekBkZWJpYW5wdC5vcmc+Ckxhbmd1YWdlOiBwdApNSU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAoACgolczogJXMKAAoKTW92YS1zZSBjb20gXlAgZSBeTiwgdGVjbGFzIGRlIGN1cnNvciwgbGV0cmFzIGluaWNpYWlzLCBvdSBkaWdpdG9zOwpDYXJyZWd1ZSBlbSA8ZW50ZXI+IHBhcmEgY29uZmlybWFyIGEgc2VsZWPDp8Ojby4gICBeTCByZS1kZXNlbmhhIG8gZWNyw6MuCgAKCkFjZXNzbyBhcGVuYXMgZGUgbGVpdHVyYTogc8OzIGVzdMOhIGRpc3BvbsOtdmVsIGEgdmlzdWFsaXphw6fDo28hAApDYXJyZWd1ZSBlbSA8ZW50ZXI+IHBhcmEgY29udGludWFyLgAgACAgLS0gJWQlJSwgcHJlc3Npb25lIAAgKGFsZmFiZXRpY2FtZW50ZSkAIChkaXNwLiwgcHJvaW9yaWRhZGUpACAoZGlzcC4sIHNlY8Onw6NvKQAgKHBvciBkaXNwb25pYmlsaWRhZGUpAChwb3IgcHJpb3JpZGFkZSkAIChwb3Igc2Vjw6fDo28pACAocG9yIHN0YXR1cykAIChzdGF0dXMsIHByaW9yaWRhZGUpACAoc3RhdHVzLCBzZWPDp8OjbykAIG7Do28gcGFyZWNlIGVzdGFyIGRpc3BvbsOtdmVsCgAgbWFyY2E6Ky89Ly0gcmVzdW1vOnYgYWp1ZGE6PwAgbWFyY2E6Ky89Ly0gZGV0YWxoZTp2IGFqdWRhOj8AIG91IAAgZGV0YWxoZTp2IGFqdWRhOj8AIGRldGFsaGU6diBhanVkYTo/ACFCdWchACUtKnMgJXMlcyVzOyAgJXMgKGZvaTogJXMpLiAgJXMAJXMgJXMgcGFjb3RlcwAlcyAlcyBwYWNvdGVzIG5hIHNlY8Onw6NvICVzACVzICVzIHBhY290ZXMgc2VtIHNlY8Onw6NvACVzIHBhcmEgbWFpcwAlcyBwYWNvdGVzIG5hIHNlY8Onw6NvICVzACVzIHBhY290ZXMgc2VtIHNlY8Onw6NvACVzIHBhcmEgdm9sdGFyIGF0csOhcwAqIERlc3RhcXVlOiBVbWEgbGluaGEgbmEgbGlzdGEgZGUgcGFjb3RlcyBzZXLDoSBkZXN0YWNhZGEuIEVsYSBpbmRpY2EKICBxdWFsKGlzKSBwYWNvdGUocykgc2Vyw6Eow6NvKSBhZmVjdGFkbyhzKSBwZWxhcyB0ZWNsYXMgYCsnLCAnLScgZSBgXycuCgoqIEEgbGluaGEgZGl2aXPDs3JpYSBubyBtZWlvIGRhIHRlbGEgbW9zdHJhIHVtYSBleHBsaWNhw6fDo28gYnJldmUgZG8KICBlc3RhZG8gZG8gcGFjb3RlIGFjdHVhbG1lbnRlIGRlc3RhY2Fkbywgb3UgdW1hIGRlc2NyacOnw6NvIGRvIGdydXBvIHF1ZQogIGVzdGl2ZXIgZGVzdGFjYWRvLCBzZSB1bWEgbGluaGEgZGUgZ3J1cG8gZXN0aXZlci4gU2Ugdm9jw6ogbsOjbyBlbnRlbmRlciBvCiAgc2lnbmlmaWNhZG8gZGUgYWxndW5zIGRvcyBjYXJhY3RlcmVzIGRlIGVzdGFkbyBtb3N0cmFkb3MsIHbDoSBhbyBwYWNvdGUKICBlbSBxdWVzdMOjbyBlIG9saGUgcGFyYSBlc3RhIGxpbmhhIGRpdmlzw7NyaWEsIG91IHVzZSBhIHRlY2xhIGB2JyBwYXJhIHVtYQogIGV4aWJpw6fDo28gbWFpcyBkZXRhbGhhZGEgKHByZXNzaW9uZSBgdicgbm92YW1lbnRlIHBhcmEgdm9sdGFyIGFvIG1vZG8gcmVzdW1pZG8pLgoKKiBBIHBhcnRlIGRlIGJhaXhvIGRhIHRlbGEgbW9zdHJhIG1haXMgaW5mb3JtYcOnw6NvIHNvYnJlIG8gcGFjb3RlCiAgYWN0dWFsbWVudGUgZGVzdGFjYWRvIChzZSBhcGVuYXMgdW0gZXN0aXZlciBkZXN0YWNhZG8pLgoKICBFbGEgcG9kZSBtb3N0cmFyIHVtYSBkZXNjcmnDp8OjbyBtYWlzIGxvbmdhIGRvIHBhY290ZSwgb3MgZGV0YWxoZXMgaW50ZXJub3MKICBkZSBjb250cm9sZSBkbyBwYWNvdGUgKG91IHBhcmEgYSB2ZXJzw6NvIGluc3RhbGFkYSBvdSBwYXJhIGEgdmVyc8OjbyBkaXNwb27DrXZlbAogIGRvIHBhY290ZSksIG91IGluZm9ybWHDp8OjbyBzb2JyZSBjb25mbGl0b3MgZSBkZXBlbmTDqm5jaWFzIGVudm9sdmVuZG8gbwogIHBhY290ZSBhY3R1YWwgKGVtIHN1Ymxpc3RhcyBkZSByZXNvbHXDp8OjbyBkZSBjb25mbGl0b3MvZGVwZW5kw6puY2lhcykuCgogIFVzZSBhIHRlY2xhIGBpJyBwYXJhIGNpcmN1bGFyIHBlbGFzIHRlbGFzLCBlIGBJJyBwYXJhIGVzY29uZGVyIGVzc2EKICB0ZWxhIGRlIGluZm9ybWHDp8OjbyBvdSBleHBhbmTDrS1sYSBwb3IgcXVhc2UgdG9kYSBhIHRlbGEuCgA/AEFicmV2LgBBYm9ydGFyIC0gc2FpciBzZW0gZmF6ZXIgYWx0ZXJhw6fDtWVzAE3DqXRvZG8gZGUgYWNlc3NvIGAlcycuAEFjw6fDtWVzOgogIGFjY2VzcyB1cGRhdGUgc2VsZWN0IGluc3RhbGwgY29uZmlnIHJlbW92ZSBxdWl0CgoAVG9kb3MAVG9kb3Mgb3MgcGFjb3RlcwBBdHJpYnV0b3M6CgBWZXIuRGlzcG9uLgBEaXNwb27DrXZlaXMAaW5mb3JtYcOnw6NvICdBdmFpbGFibGUnIGRvIGZpY2hlaXJvIGRlIGNvbnRyb2xlAFBhY290ZXMgZGlzcG9uw612ZWlzIChuw6NvIGluc3RhbGFkb3MgYWN0dWFsbWVudGUpAERhbmlmaWNhZG8AUGFjb3RlcyBpbnN0YWxhZG9zIGRhbmlmaWNhZG9zAEVzY29saGEgbyBtw6l0b2RvIGEgdXRpbGl6YXIuAENvcmVzOgoAQ29uZmlndXJhIHBhY290ZXMgYWluZGEgbsOjbyBjb25maWd1cmFkb3MuAENvcHlyaWdodCAoQykgMTk5NC0xOTk2IElhbiBKYWNrc29uLgpDb3B5cmlnaHQgKEMpIDIwMDAsMjAwMSBXaWNoZXJ0IEFra2VybWFuLgoAUGVyY29ycmVyIGF0cmF2w6lzIGRhcyBww6FnaW5hcyBkZSBpbmZvcm1hw6fDo28ARnJvbnRlbmQgZGUgZ2VzdMOjbyBkZSBwYWNvdGVzIERlYmlhbiBgJXMnIHZlcnPDo28gJXMuCgBSZXNvbHXDp8OjbyBkZSBkZXBlbmTDqm5jaWFzL2NvbmZsaXRvcyAtIGludHJvZHXDp8Ojby4KClVtYSBvdSBtYWlzIGRlIHVtYSBkYXMgc3VhcyBlc2NvbGhhcyAgbGV2YW50YXJhbSB1bSBwcm9ibGVtYSBkZSBjb25mbGl0byBvdQpkZSBkZXBlbmTDqm5jaWFzIC0gYWxndW5zIHBhY290ZXMgc8OzIGRldmVtIHNlciBpbnN0YWxhZG9zIGVtIGNvbmp1bnRvIGNvbQpvdXRyb3MsIGUgYWxndW1hcyBjb21iaW5hw6fDtWVzIGRlIHBhY290ZXMgbsOjbyBwb2RlbSBzZXIgaW5zdGFsYWRhcyBhbyBtZXNtbyB0ZW1wby4KClZvY8OqIGlyw6EgdmVyIHVtYSBzdWItbGlzdGEgY29tIG9zIHBhY290ZXMgZW52b2x2aWRvcy4gIEEgbWV0YWRlIGluZmVyaW9yIGRvCmVjcsOjIG1vc3RyYSBvcyBjb25mbGl0b3MgZSBkZXBlbmTDqm5jaWFzIHJlbGV2YW50ZXM7IHVzZSBgaScgcGFyYSBhbHRlcm5hcgplbnRyZSBlc3RlcywgYXMgZGVzY3Jpw6fDtWVzIGRvcyBwYWNvdGVzIGUgYXMgaW5mb3JtYcOnw7VlcyBkZSBjb250cm9sZSBpbnRlcm5hcy4KClVtIGNvbmp1bnRvIGRlIHBhY290ZXMgYHN1Z2VyaWRvcycgZm9pIGNhbGN1bGFkbywgZSBhcyBtYXJjYcOnw7VlcyBpbmljaWFpcwpuZXNzYSBzdWItbGlzdGEgZm9yYW0gZXN0YWJlbGVjaWRhcyBwYXJhIGNvaW5jaWRpciBjb20gZXNzYXMsIHBvciBpc3NvLCBzZQpkZXNlamFyLCBwb2RlIGFwZW5hcyBjYXJyZWdhciBlbSBSZXR1cm4gcGFyYSBhY2VpdGFyIGFzIHN1Z2VzdMO1ZXMuICBWb2PDqgpwb2RlIGFib3J0YXIgYShzKSBtdWRhbsOnYShzKSBxdWUgY2F1c291L2NhdXNhcmFtIG8ocykgcHJvYmxlbWEocyksIGUKdm9sdGFyIHBhcmEgYSBsaXN0YSBwcmluY2lwYWwsIGNhcnJlZ2FuZG8gbmEgbWFpw7pzY3VsYSBgWCcuCgpWb2PDqiB0YW1iw6ltIHBvZGUgbW92aW1lbnRhci1zZSBwZWxhIGxpc3RhIGUgbXVkYXIgYXMgbWFyY2HDp8O1ZXMgZGUgbW9kbyBxdWUKZXN0YXMgZXN0ZWphbSBtYWlzIGRlIGFjb3JkbyBjb20gbyBxdWUgdm9jw6ogcXVlciwgZSBwb2RlIGByZWplaXRhcicgYXMKbWluaGFzIHN1Z2VzdMO1ZXMgdXRpbGl6YW5kbyBhcyB0ZWNsYXMgYEQnIG9yIGBSJyAodmVqYSBvIGVjcsOjIGRlIGFqdWRhIGRlCmF0cmlidWnDp8O1ZXMgZGUgdGVjbGFzKS4gIFBvZGUgdXRpbGl6YXIgYFEnIG1hacO6c2N1bG8gcGFyYSBtZSBmb3LDp2FyIGEKYWNlaXRhciBhIHNpdHVhw6fDo28gYWN0dWFsbWVudGUgbW9zdHJhZGEsIG5vIGNhc28gZGUgdm9jw6ogcXVlcmVyIHVsdHJhcGFzc2FyCnVtYSByZWNvbWVuZGHDp8OjbyBvdSBwZW5zYXIgcXVlIG8gcHJvZ3JhbWEgZXN0w6EgZW5nYW5hZG8uCgpDYXJyZWd1ZSBlbSA8ZXNwYcOnbz4gcGFyYSBzYWlyIGRhIGFqdWRhIGUgZW50cmFyIG5hIHN1Yi1saXN0YTsgbGVtYnJlLXNlOiBwYXJhIGFqdWRhIGNhcnJlZ3VlIGVtIGA/Jy4KAERlc2NyacOnw6NvAFZpc3VhbGl6YcOnw6NvLCBwYXJ0ZSAxOiBsaXN0YSBkZSBwYWNvdGVzIGUgY2FyYWN0ZXJlcyBkZSBzdGF0dXMAVmlzdWFsaXphw6fDo28sIHBhcnRlIDM6IERlc3RhY2FyIG5hIGxpc3RhOyBtb3N0cmEgZGUgaW5mb3JtYcOnw6NvAEVJT00ARU9GIGFudGVzIGRlIGNvbWXDp2FyIG5vbWUgZGUgb3DDp8OjbwBFT0YgYW50ZXMgZG8gc3Vtw6FyaW8ARU9GIG5vIGluZGV4IGRhIHN0cmluZwBFT0Ygbm8gbm9tZSBkZSBvcMOnw6NvAEVPRiBubyBzdW3DoXJpbyAtIGZhbHRhIG5ld2xpbmUARXJybwBFcnJvOiAARXhwbGljYcOnw6NvIGRlIABFeHRyYQBJciBwYXJhIG8gZmltIGRhIGxpc3RhAElyIHBhcmEgbyBpbmljaW8gZGEgbGlzdGEASW5mb3JtYcOnw6NvIGRlIGFqdWRhIGVzdMOhIGRpc3BvbsOtdmVsIHNvYiBvcyBzZWd1aW50ZXMgdMOzcGljb3M6AEFqdWRhOiAASW1wAEltcG9ydGFudGUAVmVycy5JbnN0AEluc3RhbGFyIGUgYWN0dWFsaXphciBvcyBwYWNvdGVzIGRlc2VqYWRvcy4ASW5zdGFsYWRvAEluZm9ybWHDp8OjbyBkbyBmaWNoZWlybyBjb250cm9sZSBkZSAnSW5zdGFsbGVkJwBQYWNvdGVzIGluc3RhbGFkb3MASW5zdGFsYWRvPwBJbnRlcnJlbGFjaW9uYW1lbnRvcwBJbnRyb2R1w6fDo28gw6Agc3ViLWxpc3RhIGRlIHJlc29sdcOnw6NvIGRlIGNvbmZsaXRvcy9kZXBlbmTDqm5jaWFzAEludHJvZHXDp8OjbyBhbyBhY3LDoyBkZSBtw6l0b2RvcyBkZSBzZWxlY8Onw6NvAEludHJvZHXDp8OjbyDDoCBzZWxlY8Onw6NvIGRlIHBhY290ZXMASW50cm9kdcOnw6NvIGFvIG5hdmVnYWRvciBkZSBsaXN0YSBkZSBwYWNvdGVzIHPDsyBkZSBsZWl0dXJhACVzIGludsOhbGlkbyBgJXMnCgBLZXliaW5kaW5ncwBDb21iaW5hw6fDtWVzIGRlIHRlY2xhcwBUZWNsYXMgcGFyYSBzZWxlY8Onw6NvIGRlIG3DqXRvZG8ARmF6ZXIgbyBkZXN0YXF1ZSBtZW5vcyBlc3BlY8OtZmljbwBGYXplciBvIGRlc3RhcXVlIG1haXMgZXNwZWPDrWZpY28ATWFyY2FyIHBhY290ZShzKSBwYXJhIGRlc2luc3RhbGFyIGUgYXBhZ2FyAE1hcmNhciBwYWNvdGUocykgcGFyYSBkZXNpbnN0YWxhw6fDo28ATWFyY2FyIHBhY290ZShzKSBwYXJhIGluc3RhbGHDp8OjbwBNYXJjYWRvIHBhcmEAVGVjbGFzIGRlIG1vdmltZW50bzogUHLDs3guL0FudGVyaW9yLCBUb3BvL0ZpbmFsLCBDaW1hL0JhaXhvLCBUcsOhcy9GcmVudGU6CiAgaiwgU2V0YS1iYWl4byAgICAgICAgIGssIFNldGEtY2ltYSAgICAgICAgICAgIG1vdmVyIGRlc3RhcXVlCiAgTiwgUGFnZS1kb3duLCBFc3Bhw6dvICBQLCBQYWdlLXVwLCBCYWNrc3BhY2UgICByb2xhciBsaXN0YSBlbSAxIHDDoWdpbmEKICBebiAgICAgICAgICAgICAgICAgICAgXnAgICAgICAgICAgICAgICAgICAgICAgcm9sYXIgbGlzdGEgZW0gMSBsaW5oYQogIHQsIEhvbWUgICAgICAgICAgICAgICBlLCBFbmQgICAgICAgICAgICAgICAgICBzYWx0YXIgcC8gdG9wby9maW5hbCBkYSBsaXN0YQogIHUgICAgICAgICAgICAgICAgICAgICBkICAgICAgICAgICAgICAgICAgICAgICByb2xhciBpbmZvLiBlbSAxIHDDoWdpbmEKICBedSAgICAgICAgICAgICAgICAgICAgXmQgICAgICAgICAgICAgICAgICAgICAgcm9sYXIgaW5mby4gZW0gMSBsaW5oYQogIEIsIFNldGEtZXNxdWVyZGEgICAgICBGLCBTZXRhLWRpcmVpdGEgICAgICAgICBtb3ZlciBlY3LDoyBlbSAxLzMKICBeYiAgICAgICAgICAgICAgICAgICAgXmYgICAgICAgICAgICAgICAgICAgICAgbW92ZXIgZWNyw6MgZW0gMSBjYXJhY3RlcgoKTWFyY2FyIHBhY290ZXMgcGFyYSBwcm9jZXNzYW1lbnRvIHBvc3RlcmlvcjoKICssIEluc2VydCAgaW5zdGFsYXIgb3UgYWN0dWFsaXphciAgID0sIEggIG1hbnRlciBubyBlc3RhZG8gYWN0dWFsCiAtLCBEZWxldGUgIHJlbW92ZXIgICAgICAgICAgICAgICAgICA6LCBHICBsYXJnYXI6IGFjdHVhbGl6YXIgb3UgZGVpeGFyIGRlc2luc3RhbGFkbwogXyAgICAgICAgICByZW1vdmVyICYgcHVyZ2FyIGNvbmZpZ3VyYcOnw6NvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWlzY2Vsw6JuZWE6ClF1aXQsIGV4aXQsIHNvYnJlc2NyZXZlciAobm90ZSBtYWnDunNjLiEpICAgICA/LCBGMSBwZWRpciBhanVkYSAodGFtYsOpbSBBanVkYSkKIFJldHVybiAgQ29uZmlybSwgc2FpciAodmVyaWZpY2FyIGRlcGVuZC4pICAgaSwgSSAgbXVkYS9jaXJjdWxhIHBvciB0ZWxhcyBkZSBvcMOnw7Vlcy4KICAgUSAgICAgQ29uZmlybWEsIGRlaXhhIChpZ25vcmEgZGVwZW5kLikgICAgbywgTyAgY2lyYy4gcG9yIG9wYy4gZGUgY2xhc3NpZi4KIFgsIEVzYywgZVhpdCwgYWJhbmRvbmFyIGFsdGVyYcOnw7VlcyAgICAgICAgICB2LCBWIG11ZGFyIG9ww6fDtWVzIGRlIG1vc3RyYXIgZXN0YWRvCiAgIFIgICAgIFJldmVydGUgYW8gZXN0YWRvIGFudGVzIGRlc3RhIGxpc3RhIF5sICAgcmVkZXNlbmhhciBlY3LDowogICBVICAgICBjb2xvY2FyIHR1ZG8gbm8gZXN0YWRvIHNVZ2VyaWRvICAgICAgLyAgICBwcm9jdXJhciAoRW50ZXIgcC9jYW5jZWxhcikKICAgRCAgICAgY29sb2NhciB0dWRvIGVtIGVzdC4gRGlyZWN0YW1lbnRlIHJlcS4gbiwgXCByZXBldGlyIMO6bHRpbWEgcHJvY3VyYQoAVGVjbGFzIGRlIG1vdmltZW50YcOnw6NvOiBQcsOzeC4vQW50ZXJpb3IsIFRvcG8vRmluYWwsIENpbWEvQmFpeG8sIFRyw6FzL0ZyZW50ZToKICBqLCBTZXRhLWJhaXhvICAgICAgICAgaywgU2V0YS1jaW1hICAgICAgICAgICAgbW92ZXIgZGVzdGFxdWUKICBOLCBQYWdlLWRvd24sIEVzcGHDp28gIFAsIFBhZ2UtdXAsIEJhY2tzcGFjZSAgIHJvbGFyIGxpc3RhIGVtIDEgcMOhZ2luYQogIF5uICAgICAgICAgICAgICAgICAgICBecCAgICAgICAgICAgICAgICAgICAgICByb2xhciBsaXN0YSBlbSAxIGxpbmhhCiAgdCwgSG9tZSAgICAgICAgICAgICAgIGUsIEVuZCAgICAgICAgICAgICAgICAgIHNhbHRhciBwL3RvcG8vZmluYWwgZGEgbGlzdGEKICB1ICAgICAgICAgICAgICAgICAgICAgZCAgICAgICAgICAgICAgICAgICAgICAgcm9sYXIgaW5mby4gZW0gMSBww6FnaW5hCiAgXnUgICAgICAgICAgICAgICAgICAgIF5kICAgICAgICAgICAgICAgICAgICAgIHJvbGFyIGluZm8uIGVtIDEgbGluaGEKICBCLCBTZXRhLWVzcXVlcmRhICAgICAgRiwgU2V0YS1kaXJlaXRhICAgICAgICAgcm9sYXIgMS8zIGRhIHRlbGEgcC9vIGxhZG8KICBeYiAgICAgICAgICAgICAgICAgICAgXmYgICAgICAgICAgICAgICAgICAgICAgcm9sYXIgMSBjYXJhY3RlcmUgcC9vIGxhZG8KKEVzdGFzIHPDo28gYXMgbWVzbWFzIHRlY2xhcyBkZSBtb3ZpbWVudGHDp8OjbyBkYSB0ZWxhIGRhIGxpc3RhIGRlIHBhY290ZXMuKQoKU2FpcjoKIFJldHVybiwgRW50ZXIgICAgc2VsZWNjaW9uYXIgZXNzZSBtw6l0b2RvIGUgdmFpIHBhcmEgc3VhIGNvbmZpZ3VyYcOnw6NvCiB4LCBYICAgICAgICAgICAgIHNhaXIgc2VtIG11ZGFyIG91IGRlZmluaXJyIG8gbcOpdG9kbyBkZSBpbnN0YWxhw6fDo28KCk1pc2NlbMOibmVhOgogID8sIEFqdWRhLCBGMSAgICBwZWRpciBhanVkYQogXmwgICAgICAgICAgICAgICByZWRlc2VuaGFyIGEgdGVsYQogIC8gICAgICAgICAgICAgICBwcm9jdXJhciAoZW50ZXIgcGFyYSBjYW5jZWxhcikKICBcICAgICAgICAgICAgICAgcmVwZXRpciDDumx0aW1hIGJ1c2NhCgBNb3ZlciBhYmFpeG8ATW92ZXIgYWNpbWEATm92bwBOb3ZvcyBwYWNvdGVzIGRpc3BvbsOtdmVpcwBTZW0gZGVzY3Jpw6fDo28gZGlzcG9uw612ZWwAU2VtIGV4cGxpY2HDp8OjbyBkaXNwb27DrXZlbC4ARXNwZWNpZmljYcOnw6NvIGRlIGNvciBudWxhCgBQYWNvdGVzIG9ic29sZXRvcyBlIGxvY2FpcyBwcmVzZW50ZXMgbm8gc2lzdGVtYQBPYnNvbGV0by9sb2NhbABNYXJjYSBhbnRpZ2EAT3BjAE9wY2lvbmFsAE9ww6fDtWVzOgogIC0tYWRtaW5kaXIgPGRpcmVjdMOzcmlvPiAgICBVc2FyIDxkaXJlY3TDs3Jpbz4gZW0gdmV6IGRlICVzLgogIC0tZXhwZXJ0ICAgICAgICAgICAgICAgICAgIExpZ2FyIG8gbW9kbyBkZSBlc3BlY2lhbGlzdGEuCiAgLS1kZWJ1ZyA8ZmljaGVpcm8+IHwgLUQ8ZmljaGVpcm8+IExpZ2FyIG8gZGVidWdnaW5nLCBlbnZpYXIgYSBzYcOtZGEgcGFyYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWNoZWlybz4uCiAgLS1jb2xvdXIgfCAtLWNvbG9yIHNjcmVlbnBhcnQ6W2ZvcmVncm91bmRdLFtiYWNrZ3JvdW5kXVs6YXR0clsrYXR0cisuLl1dCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlndXJhciBhcyBjb3JlcyBkbyBlY3LDoy4KCgBQYWNvdGUAQ2FycmVndWUgZW0gPGVudGVyPiBwYXJhIGNvbnRpbnVhci4KAFRlY2xhID8gcGFyYSBtZW51IGFqdWRhLCAuIHBhcmEgcHLDs3hpbW8gdMOzcGljbywgPGVzcGHDp28+IHNhaXIgZGEgYWp1ZGEuAENhcnJlZ3VlIG51bWEgdGVjbGEgZGEgbGlzdGEgYWNpbWEsIDxlc3Bhw6dvPiBvdSBgcScgcGFyYSBzYWlyIGRhIGFqdWRhLAogIG91IGAuJyAocG9udG8gZmluYWwpIHBhcmEgbGVyIGRlIGNhZGEgdmV6IHVtYSBww6FnaW5hIGRlIGFqdWRhLgBQcmlvcmlkYWRlAFB1cmdhZG8AUGFjb3RlcyBwdXJnYWRvcyBlIG9zIHF1ZSBudW5jYSBmb3JhbSBpbnN0YWxhZG9zAFNhaXIgZG8gZHNlbGVjdC4AU2FpciBzZW0gYWx0ZXJhciBvIG3DqXRvZG8gZGUgYWNlc3NvIHNlbGVjY2lvbmFkbwBTYWlyLCBjb25maXJtYXIgc2VtIHZlcmlmaWNhcgBTYWlyLCBhIGNvbmZpcm1hciwgZSB2ZXJpZmljYXIgZGVwZW5kw6puY2lhcwBTYWlyLCByZWplaXRhbmRvIHN1Z2VzdMO1ZXMgZGUgY29uZmxpdG9zL2RlcGVuZMOqbmNpYXMAUkVJTlNUQUxBUgBSZWRlc2VuaGFyIG8gZWNyw6MAUmVtb3ZlciBzb2Z0d2FyZSBuw6NvIGRlc2VqYWRvAFJlbW92aWRvcwBQYWNvdGVzIHJlbW92aWRvcyBlIHF1ZSBqw6EgbsOjbyBlc3TDo28gZGlzcG9uw612ZWlzAFBhY290ZXMgcmVtb3ZpZG9zIChjb25maWd1cmHDp8OjbyBhaW5kYSBwcmVzZW50ZSkAUmVwZXRpciBhIMO6bHRpbWEgcHJvY3VyYS4ATmVjAFBlZGlyIGFqdWRhIChwZXJjb3JyZXIgb3MgZWNyw6NzIGRlIGFqdWRhKQBTb2xpY2l0ZSBxdWFpcyBwYWNvdGVzIHF1ZXIgbm8gc2V1IHNpc3RlbWEuAE5lY2Vzc8OhcmlvAFZvbHRhciBhbyBlc3RhZG8gYWN0dWFsbWVudGUgaW5zdGFsYWRvIHBhcmEgdG9kb3Mgb3MgcGFjb3RlcwBWb2x0YXIgYW8gZXN0YWRvIGRpcmVjdGFtZW50ZSByZXF1aXNpdGFkbyBwYXJhIHRvZG9zIG9zIHBhY290ZXMAVm9sdGFyIGFvIGVzdGFkbyBhbnRpZ28gcGFyYSB0b2RvcyBvcyBwYWNvdGVzAFZvbHRhciBhbyBlc3RhZG8gc3VnZXJpZG8gcGFyYSB0b2RvcyBvcyBwYWNvdGVzAFNjcmVlbnBhcnRzOgoAU2Nyb2xsIHBhcmEgdHLDoXMgYXRyYXbDqXMgZGEgYWp1ZGEvaW5mb3JtYcOnw6NvAFNjcm9sbCBwYXJhIHRyw6FzIGF0cmF2w6lzIGRhIGFqdWRhL2luZm9ybWHDp8OjbyBwb3IgMSBsaW5oYQBTY3JvbGwgcGFyYSB0csOhcyBhdHJhdsOpcyBkYSBsaXN0YQBTY3JvbGwgcGFyYSB0csOhcyBuYSBsaXN0YSBwb3IgMSBsaW5oYQBTY3JvbGwgcGFyYSBhIGZyZW50ZSBhdHJhdsOpcyBkYSBhanVkYS9pbmZvcm1hw6fDo28AU2Nyb2xsIGVtIGZyZW50ZSBhdHJhdsOpcyBkYSBhanVkYS9pbmZvcm1hw6fDo28gcG9yIDEgbGluaGEAU2Nyb2xsIGVtIGZyZW50ZSBhdHJhdsOpcyBkYSBsaXN0YQBTY3JvbGwgZW0gZnJlbnRlIG5hIGxpc3RhIHBvciAxIGxpbmhhAFByb2N1cmFyIHBvciA/IABQcm9jdXJhciBwb3IgcGFjb3RlcyBjdWpvIG5vbWUgY29udGVuaGFtIHVtYSBzdHJpbmcAU2Vjw6fDo28AU2VsZWNjaW9uYXIgbyBtw6l0b2RvIGRlIGFjZXNzbyBhY3R1YWxtZW50ZSBkZXN0YWNhZG8ARGVmaW5hIGNvcnJlY3RhbWVudGUgYSB2ZXJpw6F2ZWwgVEVSTSwgdXRpbGl6ZSB1bSB0ZXJtaW5hbCBtZWxob3IsCm91IGZhw6dhLW8gY29tIGEgZmVycmFtZW50ZSBkZSBnZXN0w6NvIHBvciBwYWNvdGUgJXMuCgBTdGFuZGFyZABTdGQAVHJvY2FyIG9yZGVtIGRhIG9yZGVuYcOnw6NvIHByaW9yaWRhZGUvc2Vjw6fDo28ATyB0ZXJtaW5hbCBuw6NvIHBhcmVjZSBzdXBvcnRhciBlbmRlcmXDp2FtZW50byBkbyBjdXJzb3IuCgBPIHRlcm1pbmFsIG7Do28gcGFyZWNlIHN1cG9ydGFyIGhpZ2hsaWdodGluZwoAQSBsaW5oYSBxdWUgc2VsZWNjaW9ub3UgcmVwcmVzZW50YSBtdWl0b3MgcGFjb3Rlczsgc2UgcGVkaXIgcGFyYSBpbnN0YWxhciwgcmVtb3ZlciwgbWFudGVyLCBldGMgdmFpIGFmZWN0YXIgb3MgcGFjb3RlcyBxdWUgY29pbmNpZGFtIGNvbSBvIGNyaXTDqXJpbyBtb3N0cmFkby4KClNlIG1vdmVyIGEgc2VsZWPDp8OjbyBwYXJhIHVtYSBsaW5oYSBkZSB1bSBwYWNvdGUgaW5kaXZpZHVhbCB2ZXLDoSBhIGluZm9ybWHDp8OjbyBhY2VyY2EgZGVzc2UgcGFjb3RlIG1vc3RyYWRhIGFxdWkuClBvZGUgdXRpbGl6YXIgJ28nIGUgJ08nIHBhcmEgbW9kaWZpY2FyIGEgb3JkZW5hw6fDo28gZSBkYXIgYSB2b2PDqiBwcsOzcmlvIGEgb3BvcnR1bmlkYWRlIGRlIG1hcmNhciBwYWNvdGVzIGVtIGRpZmVyZW50ZXMgdGlwb3MgZGUgZ3J1cG9zLgBBIG1ldGFkZSBzdXBlcmlvciBkbyBlY3Jhw6MgbW9zdHJhIHVtYSBsaXN0YSBkZSBwYWNvdGVzLiBQYXJhIGNhZGEgcGFjb3RlIHbDqgpxdWF0cm8gY29sdW5hcyBwYXJhIHNldSBlc3RhZG8gYWN0dWFsIG5vIHNpc3RlbWEgZSBtYXJjYcOnw6NvLiAgTm8gbW9kbyByZXN1bWlkbwoodXNlIGB2JyBwYXJhIGNvbXV0YXIgYSBleGliacOnw6NvIGRldGFsaGFkYSkgZXNzZXMgc8OjbyBjYXJhY3RlcmVzIHNpbXBsZXMsIGRhCmVzcXVlcmRhIHBhcmEgYSBkaXJlaXRhOgoKIE1hcmNhIGRlIEVycm86IEVzcGHDp28gLSBzZW0gZXJyb3MgKG1hcyBvIHBhY290ZSBwb2RlIGVzdGFyIG5vIGVzdGFkbyBlc3RyYWdhZG8KKGJyb2tlbikgLSB2ZWphIGFiYWl4bykKICAgICAgICAgICAgICAgIGBSJyAgICAtIGVycm8gc8OpcmlvIGR1cmFudGUgYSBpbnN0YWxhw6fDo28sIHJlcXVlciByZWluc3RhbGHDp8OjbzsKIEVzdGFkbyBJbnN0YWxhZG86ICAgCUVzcGHDp28JICAtIG7Do28gaW5zdGFsYWRvOwogICAgICAgICAgICAgICAgICAgICAgIGAqJwkgIC0gaW5zdGFsYWRvOwogICAgICAgICAgICAgICAgICAgICAgICBgLScJICAtIG7Do28gaW5zdGFsYWRvIG1hcyBvcyBmaWNoZWlyb3MgZGUKCQkJCSAgICBjb25maWd1cmHDp8OjbyBtYW50w6ptLXNlOwogIG9zIHBhY290ZXMJCXsgYFUnICAgICAtIGRlc2NvbXBhY3RhZG8gbWFzIGFpbmRhIG7Do28gY29uZmlndXJhZG87CiAgbmVzdGVzIGVzdGFkb3MJeyBgQycgICAgIC0gc2VtaS1jb25maWd1cmFkbyAob2NvcnJldSB1bSBlcnJvKTsKICBuw6NvIGVzdMOjbyBiZW0gCXsgYEknCSAgLSBzZW1pLWluc3RhbGFkbyAob2NvcnJldSB1bSBlcnJvKS4KICBpbnN0YWxhZG9zCQl7IGBXJyxgdCcgLSBzw6NvIGVzcGVyYWRvcyB0cmlnZ2VycywgcmVzcG9udGEgcGVuZGVudGUuCiBNYXJjYSBhbnRpZ2E6IG8gcXVlIGZvaSBwZWRpZG8gcGFyYSBlc3RlIHBhY290ZSBhbnRlcyBkZSBhcHJlc2VudGFyIGVzdGEgbGlzdGE7CiBNYXJjYTogbyBxdWUgw6kgcGVkaWRvIHBhcmEgZXN0ZSBwYWNvdGU6CiAgYConOiBtYXJjYWRvIHBhcmEgaW5zdGFsYcOnw6NvIG91IGFjdHVhbGl6YcOnw6NvOwogIGAtJzogbWFyY2FkbyBwYXJhIHJlbW/Dp8OjbywgbWFzIG9zIGFycXVpdm9zIGRlIGNvbmZpZ3VyYcOnw6NvIGZpY2Fyw6NvOwogIGA9JzogbWFudGVyOiBvIHBhY290ZSBuw6NvIHNlcsOhIHByb2Nlc3NhZG87CiAgYF8nOiBtYXJjYWRvIHBhcmEgcHVyZ2FyIHBvciBjb21wbGV0byAtIHJlbW92ZXIgYXTDqSBhIGNvbmZpZ3VyYcOnw6NvOwogIGBuJzogbyBwYWNvdGUgw6kgbm92byBlIGFpbmRhIGUgYWluZGEgbsOjbyBmb2kgbWFyY2FkbyBwYXJhIGluc3RhbGHDp8Ojby9yZW1vw6fDo28vJmMuCgpUYW1iw6ltIHPDo28gZXhpYmlkYXMgY2FkYSBQcmlvcmlkYWRlLCBTZWPDp8Ojbywgbm9tZSwgbsO6bWVybyBkYSB2ZXJzw6NvCmluc3RhbGFkYSBlIGRhIGRpc3BvbsOtdmVsIGRlIGNhZGEgcGFjb3RlIChzaGlmdC1WIHBhcmEgbW9zdHJhci9lc2NvbmRlcikKZSBhIGRlc2NyacOnw6NvIHJlc3VtaWRhLgoARXNjcmV2YSBkc2VsZWN0IC0taGVscCBwYXJhIGFqdWRhLgBOw6NvIGNsYXNzaWZpY2FkbwBQYWNvdGVzIGluc3RhbGFkb3MgYWN0dWFsaXphZG9zAEFjdHVhbGl6YWRvcwBBY3R1YWxpemFyIGEgbGlzdGEgZGUgcGFjb3RlcyBkaXNwb27DrXZlaXMsIHNlIHBvc3PDrXZlbC4AQWN0dWFsaXphZG8AUGFjb3RlcyBhY3R1YWxpemFkb3MgKGVzdMOhIGRpc3BvbsOtdmVsIHZlcnPDo28gbWFpcyByZWNlbnRlKQBVdGlsaXphw6fDo286ICVzIFs8b3DDp8Ojbz4gLi4uXSBbPGFjw6fDo28+IC4uLl0KCgBCZW0tdmluZG8gw6AgbGlzdGEgcHJpbmNpcGFsIGRlIHBhY290ZXMgZG8gZHNlbGVjdC4KClNlci1saGUtw6AgYXByZXNlbnRhZGEgdW1hIGxpc3RhIGRvcyBwYWNvdGVzIHF1ZSBlc3TDo28gaW5zdGFsYWRvcyBvdSAKZGlzcG9uw612ZWlzIHBhcmEgaW5zdGFsYcOnw6NvLiAgVW1hIHZleiBxdWUgdm9jw6ogbsOjbyBwb3NzdWkgb3MgcHJpdmlsw6lnaW9zIApuZWNlc3PDoXJpb3MgcGFyYSBhY3R1YWxpemFyIG8gZXN0YWRvIGRvcyBwYWNvdGVzLCBlc3TDoSBlbSBtb2RvIGRlIHNvbWVudGUgCmxlaXR1cmEuICBQb2RlIG5hdmVnYXIgcGVsYSBsaXN0YSB1c2FuZG8gYXMgdGVjbGFzIGRlIGN1cnNvciAocG9yIGZhdm9yIAp2ZWphIG8gZWNyw6MgZGUgYWp1ZGEgYFRlY2xhcyBkZSBhdGFsaG8nKSwgb2JzZXJ2YXIgbyBlc3RhZG8gZG9zIHBhY290ZXMgZSAKbGVyIGluZm9ybWHDp8O1ZXMgc29icmUgb3MgbWVzbW9zLgoKVm9jw6ogZGV2ZSBsZXIgYSBsaXN0YSBkZSB0ZWNsYXMgZSBhcyBleHBsaWNhw6fDtWVzIGRvIGVjcsOjLgpFc3TDoSBkaXNwb27DrXZlbCBtdWl0YSBhanVkYSBvbi1saW5lLCBmYcOnYSB1c28gZGVsYSAtIGNhcnJlZ3VlIGVtIHF1YWxxdWVyCmFsdHVyYSBlbSBgPycgcGFyYSBhanVkYS4KClF1YW5kbyBhY2FiYXIgZGUgbmF2ZWdhciwgY2FycmVndWUgZW0gYFEnIG91IDxlbnRlcj4gcGFyYSBzYWlyLgoKQ2FycmVndWUgZW0gPGVudGVyPiBwYXJhIGRlaXhhciBhIGFqdWRhIGUgZW50cmFyIGFnb3JhIG5hIGxpc3RhLgoAQmVtLXZpbmRvIMOgIGxpc3RhZ2VtIHByaW5jaXBhbCBkZSBwYWNvdGVzIGRvIGRzZWxlY3QuCgpTZXItbGhlLcOhIGFwcmVzZW50YWRhIHVtYSBsaXN0YSBkZSBwYWNvdGVzIHF1ZSBlc3TDo28gaW5zdGFsYWRvcyBvdSBkaXNwb27DrXZlaXMKcGFyYSBpbnN0YWxhw6fDo28uICBWb2PDqiBwb2RlIG5hdmVnYXIgcGVsYSBsaXN0YSB1c2FuZG8gYXMgdGVjbGFzIGRlIGN1cnNvciwKbWFyY2FyIHBhY290ZXMgcGFyYSBpbnN0YWxhw6fDo28gKHVzYW5kbyBgKycpIG91IGRlc2luc3RhbGHDp8OjbyAodXNhbmRvIGAtJykuCgpPcyBwYWNvdGVzIHBvZGVtIHNlciBtYXJjYWRvcyBpbmRpdmlkdWFsbWVudGUgb3UgZW0gZ3J1cG9zOyBpbmljaWFsbWVudGUKdm9jw6ogaXLDoSB2ZXIgcXVlIGEgbGluaGEgYFRvZG9zIG9zIHBhY290ZXMnIGVzdMOhIHNlbGVjaW9uYWRhLgoKQWxndW1hcyBkYXMgc3VhcyBlc2NvbGhhcyBpcsOjbyBjYXVzYXIgY29uZmxpdG9zIG91IHByb2JsZW1hcyBkZQpkZXBlbmTDqm5jaWFzOyBzZXItbGhlLcOhIGRhZGEgdW1hIHN1Yi1saXN0YSBkb3MgcGFjb3RlcyByZWxldmFudGVzLCBwYXJhIHF1ZQp2b2PDqiByZXNvbHZhIG9zIHByb2JsZW1hcy4KClZvY8OqIGRldmUgbGVyIGEgbGlzdGEgZGUgdGVjbGFzIGUgYXMgZXhwbGljYcOnw7VlcyBkbyBlY3LDoy4KRXN0w6EgZGlzcG9uw612ZWwgbXVpdGEgYWp1ZGEgb24tbGluZSwgcG9yIGZhdm9yIGZhw6dhIHVzbyBkaXNzbyAtIGVtIHF1YWxxdWVyCmFsdHVyYSBjYXJyZWd1ZSBlbSBgPycgcGFyYSBhanVkYS4KClF1YW5kbyB0aXZlciB0ZXJtaW5hZG8gZGUgZXNjb2xoZXIgb3MgcGFjb3RlcywgY2FycmVndWUgZW0gPGVudGVyPiBwYXJhCmNvbmZpcm1hciBhcyBhbHRlcmHDp8O1ZXMsIG91IGBYJyBwYXJhIHNhaXIgc2VtIGdyYXZhciBhcyBhbHRlcmHDp8O1ZXMuIFNlcsOhCmZlaXRhIHVtYSB2ZXJpZmljYcOnw6NvIGZpbmFsIGRlIGNvbmZsaXRvcyBlIGRlIGRlcGVuZMOqbmNpYXMgLSB0YW1iw6ltIGFxdWkKcG9kZXLDoSB2ZXIgdW1hIHN1Yi1saXN0YS4KCkNhcnJlZ3VlIGVtIDxlc3Bhw6dvPiBwYXJhIHNhaXIgZGEgYWp1ZGEgZSBlbnRyYXIgYWdvcmEgbmEgbGlzdGEuCgBYdHIAW0FdY2Vzc28AW0Ndb25maWcAW0ldbnN0YWxhcgBbUV0gU2FpcgBbUl1lbW92ZXIAW1NdZWxlY2Npb25hcgBBY3RbVV1hbGl6YXIAW27Do28gbGlnYWRvXQBbZGVzY29uaGVjaWRvOiAlZF0AYQBhIGFndWFyZGFyIG8gcHJvY2Vzc2FtZW50byBkZSAndHJpZ2dlcicAYlVHAGVzdHJhZ2EAYwBjb3IAYXRyaWJ1dG8gZGUgY29yAGVtIGNvbmZsaXRvIGNvbQBuw6NvIHBvZGUgYWJyaXIgZmljaGVpcm8gZGUgZGVidWcgYCUuMjU1cycKAGRlcGVuZGUgZGUAZmFsaG91IGRvdXBkYXRlAGRvdXBkYXRlIG5vIFNJR1dJTkNIIGhhbmRsZXIgZmFsaG91AGRzZWxlY3QgLSBpbnNwZWPDp8OjbyBkZSBlc3RhZG8gZG9zIHBhY290ZXMAZHNlbGVjdCAtIGxpc3RhIGRlIG3DqXRvZG9zIGRlIGFjZXNzbwBkc2VsZWN0IC0gbGlzdGEgcHJpbmNpcGFsIGRlIHBhY290ZXMAZHNlbGVjdCAtIGxpc3RhZ2VtIHJlY3Vyc2l2YSBkZSBwYWNvdGVzAGRzZWxlY3QgZSBkcGtnIHBvZGVtIGZhemVyIGluc3RhbGHDp8OjbyBhdXRvbcOhdGljYSwgY2FycmVnYW5kbyBvcyBmaWNoZWlyb3MgZGUKcGFjb3RlIGEgc2VyZW0gaW5zdGFsYWRvcyBkZSB1bWEgc8OpcmllIGRlIGx1Z2FyZXMgcG9zc8OtdmVpcyBlIGRpZmVyZW50ZXMuCgpFc3NhIGxpc3RhIHBlcm1pdGUgYSB2b2PDqiBzZWxlY2lvbmFyIHVtIGRlc3NlcyBtw6l0b2RvcyBkZSBpbnN0YWxhw6fDo28uCgpNb3ZhIG8gZGVzdGFxdWUgcGFyYSBvIG3DqXRvZG8gcXVlIGRlc2VqYXIsIGUgY2FycmVndWUgZW0gRW50ZXIuIFZvY8OqIHNlcsOhIGVudMOjbwpxdWVzdGlvbmFkbyBzb2JyZSBhcyBpbmZvcm1hw6fDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIGEgaW5zdGFsYcOnw6NvLgoKRW5xdWFudG8gdm9jw6ogbW92ZSBvIGRlc3RhcXVlIHVtYSBkZXNjcmnDp8OjbyBkZSBjYWRhIG3DqXRvZG8sIHF1YW5kbyBkaXNwb27DrXZlbCwKw6kgZXhpYmlkYSBuYSBwYXJ0ZSBkZSBiYWl4byBkYSB0ZWxhLgoKU2Ugdm9jw6ogcXVpc2VyIHNhaXIgc2VtIG11ZGFyIG5hZGEgdXNlIGEgdGVjbGEgYHgnIGVucXVhbnRvIGVzdGl2ZXIgbmEgbGlzdGEKZGUgbcOpdG9kb3MgZGUgaW5zdGFsYcOnw6NvLgoKVW1hIGxpc3RhIGNvbXBsZXRhIGRlIHRlY2xhcyBlc3TDoSBkaXNwb27DrXZlbCBzZSBwcmVzc2lvbmFyIGBrJyBhZ29yYSwgb3Ugbm8gbWVudQpkZSBhanVkYSBhY2Vzc8OtdmVsIHByZXNzaW9uYW5kbyBgPycuCgBtZWxob3JhAGVycm8gZHVyYW50ZSBhIGxlaXR1cmEgZG8gZmljaGVpcm8gZGUgb3DDp8O1ZXMgZGUgbcOpdG9kbyBgJS4yNTBzJwBlcnJvIGR1cmFudGUgYSBsZWl0dXJhIGRvIGZpY2hlaXJvIGRlIGRlc2NyacOnw6NvIGRlIG9ww6fDtWVzIGAlLjI1MHMnAGVycm8gZW0gZXhwcmVzc8OjbyByZWd1bGFyAGVycm8gbGVuZG8gcmVjb25oZWNpbWVudG8gZGEgbWVuc2FnZW0gZGUgZmFsaGEgZG8gcHJvZ3JhbWEAZXJybyBsZW5kbyBvIHRlY2xhZG8gbmEgYWp1ZGEAZXJybyBsZW5kbyBvIGZpY2hlaXJvIGRlIG9ww6fDtWVzIGAlLjI1MHMnAGZhbGhvdSBhbG9jYXIgcGFyIGRlIGNvcmVzAGZhbGhvdSBibG9xdWVhciBTSUdXSU5DSABmYWxob3UgYW8gY3JpYXIgYmFzZWxpc3QgcGFkAGZhbGhvdSBhbyBjcmlhciBoZWFkaW5nIHBhZABmYWxob3UgYW8gY3JpYXIgaW5mbyBwYWQAZmFsaG91IGFvIGNyaWFyIGphbmVsYSBkZSBxdWVyeQBmYWxob3UgYW8gY3JpYXIgdGhpc3N0YXRlIHBhZABmYWxob3UgY3JpYXIgbyB0w610dWxvIGRhIGphbmVsYQBmYWxob3UgY3JpYXIgYSBqYW5lbGEgd2hhdGluZm8AZmFsaG91IG9idGVyIG8gYW50aWdvIFNJR1dJTkNIIHNpZ2FjdABmYWxob3Ugb2J0ZXIgYSB2ZWxoYSBtw6FzY2FyYSBkZSBzaW5hbABmYWxob3UgbyBnZXRjaCBubyBtZW51IHByaW5jaXBhbABmYWxob3UgcmUtYmxvcXVlYXIgU0lHV0lOQ0gAZmFsaG91IGxlciBmaWNoZWlybyBkZSBkZXNjcmnDp8OjbyBkZSBvcMOnw7VlcyBgJS4yNTBzJwBmYWxob3UgcmVzdGF1cmFyIG8gYW50aWdvIFNJR1dJTkNIIHNpZ2FjdABmYWxob3UgcmVzdGF1cmFyIGEgYW50aWdhIG3DoXNjYXJhIGRlIHNpbmFsAGZhbGhvdSBkZWZpbmlyIG8gbm92byBTSUdXSU5DSCBzaWdhY3QAZmFsaGEgYW8gZGVzYmxvcXVlYXIgU0lHV0lOQ0gAZmFsaG91IGdldGNoAHNlbWktaW5zdGFsYWRvAG1hbnRlcgBpAGluZGV4IGRhIHN0cmluZyBkZW1hc2lhZG8gY29tcHJpZG8AaW5zdGFsYXIAc2NyaXB0IGRlIGluc3RhbGHDp8OjbwBpbnN0YWxhZG8AZm9ybmVjaWRhIG9ww6fDo28gZGUgYnVzY2EgaW52w6FsaWRhAGlvY3RsKFRJT0NHV0lOU1opIGZhbGhvdQBtZW51AG8gbcOpdG9kbyBgJS4yNTBzJyB0ZW0gdW0gbm9tZSBxdWUgw6kgZGVtYXNpYWRvIGNvbXByaWRvICglZCA+ICVkIGNhcmFjdGVyZXMpAG5vdm8gcGFjb3RlAG5ld2xpbmUgYW50ZXMgYW50ZXMgZGUgY29tZcOnYXIgbm9tZSBkZSBvcMOnw6NvAG5ld2xpbmUgYW50ZXMgZG8gc3Vtw6FyaW8AbsOjbyBhbGZhbnVtw6lyaWNvIG5vIG5vbWUgZGUgb3DDp8OjbwBuw6NvIGTDrWdpdG8gb25kZSDDqSBlc3BlcmFkbyBkw61naXRvAG7Do28tYWxmYW51bcOpcmljbyBvbmRlIGVyYSBuZWNlc3PDoXJpbyBvIGluw61jaW8gZG8gbm9tZSBkZSBvcMOnw6NvAG7Do28gaW5zdGFsYWRvAHByZS1kZXBlbmRlIGRlAGRpc3BvbmliaWxpemEAcHVyZ2FyAHEAc2NyaXB0IGRlIHF1ZXJ5L3NldHVwAHIAcmVjb21lbmRhAHJlbW92ZXIAcmVtb3ZpZG8gKGFzIGNvbmZpZ3VyYcOnw7VlcyBtYW50w6ltLXNlKQBzdWJzdGl0dWkAcwBzY3JlZW4gcGFydABzdWdlcmUAZXJybyBkZSBzaW50YXhlIG5vIGZpY2hlaXJvIGRlIG9ww6fDtWVzIGRlIG3DqXRvZG8gYCUuMjUwcycgLS0gJXMAbyB0ZXJtaW5hbCBjYXJlY2UgZGUgZnVuY2lvbmFsaWRhZGVzIG5lY2Vzc8OhcmlhcywgZGVzaXN0aW5kbwBmZWl0byBvICd0cmlnZ2VyJwB1AG7Do28gZm9pIHBvc3PDrXZlbCBhY2VkZXIgYW8gc2NyaXB0IGRvIG3DqXRvZG8gYCUuMjUwcycAbsOjbyBmb2kgcG9zc8OtdmVsIGZlY2hhciBub3ZvIGZpY2hlaXJvIGRlIG9ww6fDo28gYCUuMjUwcycAbsOjbyBmb2kgcG9zc8OtdmVsIGluc3RhbGFyIG5vdmEgb3DDp8OjbyBjb21vIGAlLjI1MHMnAG7Do28gZm9pIHBvc3PDrXZlbCBhYnJpciBvIGZpY2hlaXJvIGRlIG9ww6fDtWVzIGFjdHVhbCBgJS4yNTBzJwBuw6NvIGZvaSBwb3Nzw612ZWwgYWJyaXIgbm92byBmaWNoZWlybyBkZSBvcMOnw7VlcyBgJS4yNTBzJwBuw6NvIGZvaSBwb3Nzw612ZWwgYWJyaXIgZmljaGVpcm8gZGUgZGVzY3Jpw6fDo28gZGUgb3DDp8O1ZXMgYCUuMjUwcycAbsOjbyBmb2kgcG9zc8OtdmVsIGxlciBvIGRpcmVjdMOzcmlvIGAlLjI1MHMnIHBhcmEgbcOpdG9kb3MgZGUgbGVpdHVyYQBuw6NvIGZvaSBwb3Nzw612ZWwgbGVyIGZpY2hlaXJvIGRlIG9ww6fDtWVzIGRlIG3DqXRvZG8gYCUuMjUwcycAbsOjbyBmb2kgcG9zc8OtdmVsIGZhemVyIHN0YXQgYW8gZmljaGVpcm8gZGUgZGVzY3Jpw6fDo28gZGUgb3DDp8O1ZXMgYCUuMjUwcycAbsOjbyBmb2kgcG9zc8OtdmVsIGdyYXZhciBub3ZhIG9ww6fDo28gcGFyYSBgJS4yNTBzJwBzdHJpbmcgZGUgYWPDp8OjbyBkZXNjb25oZWNpZGEgYCUuNTBzJwBkZXNjb21wYWN0YWRvIChuw6NvIGNvbmZpZ3VyYWRvKQBzY3JpcHQgZGUgYWN0dWFsaXphw6fDo28gZGUgbGlzdGEgZGUgZGlzcG9uw612ZWlzAA==